diff options
author | Mike Krüger <mkrueger@xamarin.com> | 2011-11-25 17:10:25 +0400 |
---|---|---|
committer | Mike Krüger <mkrueger@xamarin.com> | 2011-11-25 17:10:25 +0400 |
commit | b2ac6f0813ef0fcba9eded48a89b6fa320412ea0 (patch) | |
tree | 11e375591bdbeaef2b45e1aea612f382bf55f9a0 /main/contrib | |
parent | 0e8c4fd3e4c586bc1b5b36a662bff0392285abb4 (diff) |
[NRefactory] Fixed enum context (fixing Bug 2109 - [Regression]
Incorrect autocompletion when declaring an enum). Merged with
nrefactory/lastest mcs.
Diffstat (limited to 'main/contrib')
44 files changed, 4657 insertions, 4333 deletions
diff --git a/main/contrib/ICSharpCode.NRefactory.CSharp/Completion/CSharpCompletionEngine.cs b/main/contrib/ICSharpCode.NRefactory.CSharp/Completion/CSharpCompletionEngine.cs index 063b73256e..322b27f28d 100644 --- a/main/contrib/ICSharpCode.NRefactory.CSharp/Completion/CSharpCompletionEngine.cs +++ b/main/contrib/ICSharpCode.NRefactory.CSharp/Completion/CSharpCompletionEngine.cs @@ -144,7 +144,7 @@ namespace ICSharpCode.NRefactory.CSharp.Completion yield return possibleName.ToString (); } } - + IEnumerable<ICompletionData> MagicKeyCompletion (char completionChar, bool controlSpace) { switch (completionChar) { @@ -410,6 +410,9 @@ namespace ICSharpCode.NRefactory.CSharp.Completion AddKeywords (dataList, linqKeywords); return dataList.Result; } + Console.WriteLine ("ct:"+currentType); + if (currentType != null && currentType.Kind == TypeKind.Enum) + return HandleEnumContext (); var contextList = new CompletionDataWrapper (this); var identifierStart = GetExpressionAtCursor (); @@ -569,7 +572,19 @@ namespace ICSharpCode.NRefactory.CSharp.Completion } return null; } - + + IEnumerable<ICompletionData> HandleEnumContext () + { + var cu = ParseStub ("aMember", false); + if (cu == null) + return null; + var member = cu.GetNodeAt<EnumMemberDeclaration> (location); + if (member != null && member.NameToken.EndLocation < location) + return DefaultControlSpaceItems (); + return null; + } + + bool IsInLinqContext (int offset) { string token; diff --git a/main/contrib/ICSharpCode.NRefactory.CSharp/Completion/CSharpCompletionEngineBase.cs b/main/contrib/ICSharpCode.NRefactory.CSharp/Completion/CSharpCompletionEngineBase.cs index b9570aca58..ad68973b38 100644 --- a/main/contrib/ICSharpCode.NRefactory.CSharp/Completion/CSharpCompletionEngineBase.cs +++ b/main/contrib/ICSharpCode.NRefactory.CSharp/Completion/CSharpCompletionEngineBase.cs @@ -230,7 +230,6 @@ namespace ICSharpCode.NRefactory.CSharp.Completion { var bracketStack = GetBracketStack (memberText); bool didAppendSemicolon = !appendSemicolon; - char lastBracket = '\0'; while (bracketStack.Count > 0) { var t = bracketStack.Pop (); @@ -313,7 +312,7 @@ namespace ICSharpCode.NRefactory.CSharp.Completion wrapper.Append ('}'); TextLocation memberLocation; - if (currentMember != null) { + if (currentMember != null && currentType.Kind != TypeKind.Enum) { memberLocation = currentMember.Region.Begin; } else if (currentType != null) { memberLocation = currentType.Region.Begin; @@ -321,8 +320,14 @@ namespace ICSharpCode.NRefactory.CSharp.Completion memberLocation = new TextLocation (1, 1); } using (var stream = new System.IO.StringReader (wrapper.ToString ())) { - var parser = new CSharpParser (); - return parser.Parse (stream, wrapInClass ? memberLocation.Line - 2 : 0); + try { + var parser = new CSharpParser (); + return parser.Parse (stream, wrapInClass ? memberLocation.Line - 2 : 0); + } catch (Exception){ + Console.WriteLine ("------"); + Console.WriteLine (wrapper); + throw; + } } } @@ -336,7 +341,7 @@ namespace ICSharpCode.NRefactory.CSharp.Completion protected Tuple<string, bool> GetMemberTextToCaret () { int startOffset; - if (currentMember != null) { + if (currentMember != null && currentType.Kind != TypeKind.Enum) { startOffset = document.GetOffset (currentMember.Region.BeginLine, currentMember.Region.BeginColumn); } else if (currentType != null) { startOffset = document.GetOffset (currentType.Region.BeginLine, currentType.Region.BeginColumn); diff --git a/main/contrib/ICSharpCode.NRefactory.CSharp/Parser/CSharpParser.cs b/main/contrib/ICSharpCode.NRefactory.CSharp/Parser/CSharpParser.cs index cb6ca5a3d3..359605061f 100644 --- a/main/contrib/ICSharpCode.NRefactory.CSharp/Parser/CSharpParser.cs +++ b/main/contrib/ICSharpCode.NRefactory.CSharp/Parser/CSharpParser.cs @@ -36,7 +36,6 @@ namespace ICSharpCode.NRefactory.CSharp { public class CSharpParser { - class ConversionVisitor : StructuralVisitor { CompilationUnit unit = new CompilationUnit (); @@ -622,11 +621,11 @@ namespace ICSharpCode.NRefactory.CSharp EnumMemberDeclaration newField = new EnumMemberDeclaration (); AddAttributeSection (newField, em); newField.AddChild (Identifier.Create (em.Name, Convert (em.Location)), AstNode.Roles.Identifier); - if (em.Initializer != null) { newField.AddChild (new CSharpTokenNode (Convert (em.Initializer.Location), 1), EnumMemberDeclaration.Roles.Assign); newField.AddChild ((Expression)em.Initializer.Accept (this), EnumMemberDeclaration.InitializerRole); } + Console.WriteLine (newField.StartLocation +"-" + newField.EndLocation); typeStack.Peek ().AddChild (newField, TypeDeclaration.MemberRole); } @@ -1430,16 +1429,16 @@ namespace ICSharpCode.NRefactory.CSharp if (location != null) result.AddChild (new CSharpTokenNode (Convert (location [0]), 1), ForStatement.Roles.LPar); - AddStatementOrList (result, forStatement.InitStatement, ForStatement.InitializerRole); + AddStatementOrList (result, forStatement.Initializer, ForStatement.InitializerRole); if (location != null) result.AddChild (new CSharpTokenNode (Convert (location [1]), 1), ForStatement.Roles.Semicolon); - if (forStatement.Test != null) - result.AddChild ((Expression)forStatement.Test.Accept (this), ForStatement.Roles.Condition); + if (forStatement.Condition != null) + result.AddChild ((Expression)forStatement.Condition.Accept (this), ForStatement.Roles.Condition); if (location != null && location.Count >= 3) result.AddChild (new CSharpTokenNode (Convert (location [2]), 1), ForStatement.Roles.Semicolon); - AddStatementOrList (result, forStatement.Increment, ForStatement.IteratorRole); + AddStatementOrList (result, forStatement.Iterator, ForStatement.IteratorRole); if (location != null && location.Count >= 4) result.AddChild (new CSharpTokenNode (Convert (location [3]), 1), ForStatement.Roles.RPar); @@ -1462,6 +1461,15 @@ namespace ICSharpCode.NRefactory.CSharp return result; } + public override object Visit (StatementErrorExpression statementErrorExpression) + { + var result = new ExpressionStatement (); + var expr = statementErrorExpression.Expression.Accept (this) as Expression; + if (expr != null) + result.AddChild ((Expression)expr, ExpressionStatement.Roles.Expression); + return result; + } + public override object Visit (InvalidStatementExpression statementExpression) { var result = new ExpressionStatement (); @@ -2667,7 +2675,10 @@ namespace ICSharpCode.NRefactory.CSharp initializer.AddChild (new CSharpTokenNode (Convert (arrayCreationExpression.Initializers.Location), 1), ArrayCreateExpression.Roles.LBrace); var commaLocations = LocationsBag.GetLocations (arrayCreationExpression.Initializers.Elements); for (int i = 0; i < arrayCreationExpression.Initializers.Count; i++) { - initializer.AddChild ((Expression)arrayCreationExpression.Initializers[i].Accept (this), ArrayInitializerExpression.Roles.Expression); + var init = arrayCreationExpression.Initializers[i]; + if (init == null) + continue; + initializer.AddChild ((Expression)init.Accept (this), ArrayInitializerExpression.Roles.Expression); if (commaLocations != null && i < commaLocations.Count) { initializer.AddChild (new CSharpTokenNode (Convert (commaLocations [i]), 1), IndexerExpression.Roles.Comma); } @@ -3452,7 +3463,13 @@ namespace ICSharpCode.NRefactory.CSharp public CompilationUnit Parse (string program) { - return Parse (new StringReader (program)); + try { + return Parse (new StringReader (program)); + } catch (Exception) { + Console.WriteLine ("------"); + Console.WriteLine (program); + return null; + } } public CompilationUnit Parse (Stream stream, int line = 0) diff --git a/main/contrib/ICSharpCode.NRefactory.CSharp/Parser/TypeSystemConvertVisitor.cs b/main/contrib/ICSharpCode.NRefactory.CSharp/Parser/TypeSystemConvertVisitor.cs index 8e03c367d2..0342c2a3cb 100644 --- a/main/contrib/ICSharpCode.NRefactory.CSharp/Parser/TypeSystemConvertVisitor.cs +++ b/main/contrib/ICSharpCode.NRefactory.CSharp/Parser/TypeSystemConvertVisitor.cs @@ -910,7 +910,8 @@ namespace ICSharpCode.NRefactory.CSharp } return t; } - Debug.WriteLine("Unknown node used as type: " + type); + if (!type.IsNull) + Debug.WriteLine("Unknown node used as type: " + type); return SharedTypes.UnknownType; } #endregion diff --git a/main/contrib/ICSharpCode.NRefactory.CSharp/Parser/mcs/anonymous.cs b/main/contrib/ICSharpCode.NRefactory.CSharp/Parser/mcs/anonymous.cs index 682540444f..8e35e72ad2 100644 --- a/main/contrib/ICSharpCode.NRefactory.CSharp/Parser/mcs/anonymous.cs +++ b/main/contrib/ICSharpCode.NRefactory.CSharp/Parser/mcs/anonymous.cs @@ -6,7 +6,8 @@ // Marek Safar (marek.safar@gmail.com) // // Dual licensed under the terms of the MIT X11 or GNU GPL -// Copyright 2003-2008 Novell, Inc. +// Copyright 2003-2011 Novell, Inc. +// Copyright 2011 Xamarin Inc // using System; diff --git a/main/contrib/ICSharpCode.NRefactory.CSharp/Parser/mcs/argument.cs b/main/contrib/ICSharpCode.NRefactory.CSharp/Parser/mcs/argument.cs index 2192b9c9e6..a6fa8bd843 100644 --- a/main/contrib/ICSharpCode.NRefactory.CSharp/Parser/mcs/argument.cs +++ b/main/contrib/ICSharpCode.NRefactory.CSharp/Parser/mcs/argument.cs @@ -6,7 +6,8 @@ // Marek Safar (marek.safar@gmail.com) // // Dual licensed under the terms of the MIT X11 or GNU GPL -// Copyright 2003-2008 Novell, Inc. +// Copyright 2003-2011 Novell, Inc. +// Copyright 2011 Xamarin Inc // using System; diff --git a/main/contrib/ICSharpCode.NRefactory.CSharp/Parser/mcs/assembly.cs b/main/contrib/ICSharpCode.NRefactory.CSharp/Parser/mcs/assembly.cs index afae0c57af..ef1ffb6694 100644 --- a/main/contrib/ICSharpCode.NRefactory.CSharp/Parser/mcs/assembly.cs +++ b/main/contrib/ICSharpCode.NRefactory.CSharp/Parser/mcs/assembly.cs @@ -6,7 +6,8 @@ // Marek Safar (marek.safar@gmail.com) // // Copyright 2001, 2002, 2003 Ximian, Inc. -// Copyright 2004 Novell, Inc. +// Copyright 2004-2011 Novell, Inc. +// Copyright 2011 Xamarin Inc // diff --git a/main/contrib/ICSharpCode.NRefactory.CSharp/Parser/mcs/assign.cs b/main/contrib/ICSharpCode.NRefactory.CSharp/Parser/mcs/assign.cs index 2a82f240be..99416ce55d 100644 --- a/main/contrib/ICSharpCode.NRefactory.CSharp/Parser/mcs/assign.cs +++ b/main/contrib/ICSharpCode.NRefactory.CSharp/Parser/mcs/assign.cs @@ -10,6 +10,7 @@ // // Copyright 2001, 2002, 2003 Ximian, Inc. // Copyright 2004-2008 Novell, Inc +// Copyright 2011 Xamarin Inc // using System; @@ -342,7 +343,7 @@ namespace Mono.CSharp { type = target_type; if (!(target is IAssignMethod)) { - Error_ValueAssignment (ec, loc); + Error_ValueAssignment (ec, source); return null; } @@ -484,6 +485,16 @@ namespace Mono.CSharp { { } + protected override Expression DoResolve (ResolveContext ec) + { + var expr = base.DoResolve (ec); + var vr = target as VariableReference; + if (vr != null && vr.VariableInfo != null) + vr.VariableInfo.IsEverAssigned = false; + + return expr; + } + public void UpdateSource (Expression source) { base.source = source; diff --git a/main/contrib/ICSharpCode.NRefactory.CSharp/Parser/mcs/attribute.cs b/main/contrib/ICSharpCode.NRefactory.CSharp/Parser/mcs/attribute.cs index 71c3b06631..53a5db56d3 100644 --- a/main/contrib/ICSharpCode.NRefactory.CSharp/Parser/mcs/attribute.cs +++ b/main/contrib/ICSharpCode.NRefactory.CSharp/Parser/mcs/attribute.cs @@ -8,6 +8,7 @@ // // Copyright 2001-2003 Ximian, Inc (http://www.ximian.com) // Copyright 2003-2008 Novell, Inc. +// Copyright 2011 Xamarin Inc // using System; @@ -963,7 +964,7 @@ namespace Mono.CSharp { if (j == 0) { if ((Type == predefined.IndexerName || Type == predefined.Conditional) && arg_expr is Constant) { string v = ((Constant) arg_expr).GetValue () as string; - if (!Tokenizer.IsValidIdentifier (v) || Tokenizer.IsKeyword (v)) { + if (!Tokenizer.IsValidIdentifier (v) || (Type == predefined.IndexerName && Tokenizer.IsKeyword (v))) { context.Module.Compiler.Report.Error (633, arg_expr.Location, "The argument to the `{0}' attribute must be a valid identifier", GetSignatureForError ()); return; diff --git a/main/contrib/ICSharpCode.NRefactory.CSharp/Parser/mcs/cfold.cs b/main/contrib/ICSharpCode.NRefactory.CSharp/Parser/mcs/cfold.cs index 1659dfe3a6..7580124cee 100644 --- a/main/contrib/ICSharpCode.NRefactory.CSharp/Parser/mcs/cfold.cs +++ b/main/contrib/ICSharpCode.NRefactory.CSharp/Parser/mcs/cfold.cs @@ -6,7 +6,7 @@ // Marek Safar (marek.safar@seznam.cz) // // Copyright 2002, 2003 Ximian, Inc. -// Copyright 2003-2008, Novell, Inc. +// Copyright 2003-2011, Novell, Inc. // using System; diff --git a/main/contrib/ICSharpCode.NRefactory.CSharp/Parser/mcs/class.cs b/main/contrib/ICSharpCode.NRefactory.CSharp/Parser/mcs/class.cs index b506fcef14..e76fd155d1 100644 --- a/main/contrib/ICSharpCode.NRefactory.CSharp/Parser/mcs/class.cs +++ b/main/contrib/ICSharpCode.NRefactory.CSharp/Parser/mcs/class.cs @@ -8,7 +8,7 @@ // Dual licensed under the terms of the MIT X11 or GNU GPL // // Copyright 2001, 2002, 2003 Ximian, Inc (http://www.ximian.com) -// Copyright 2004-2008 Novell, Inc +// Copyright 2004-2011 Novell, Inc // Copyright 2011 Xamarin, Inc (http://www.xamarin.com) // @@ -1576,7 +1576,9 @@ namespace Mono.CSharp GetSignatureForError (), iface_type.GetSignatureForError ()); return false; } + } + if (iface_type.IsGenericOrParentIsGeneric) { if (spec.Interfaces != null) { foreach (var prev_iface in iface_exprs) { if (prev_iface == iface_type) @@ -2843,44 +2845,41 @@ namespace Mono.CSharp public override bool IsUnmanagedType () { - if (fields == null) - return true; - if (has_unmanaged_check_done) return is_unmanaged; if (requires_delayed_unmanagedtype_check) return true; - requires_delayed_unmanagedtype_check = true; + if (Parent != null && Parent.IsGeneric) { + has_unmanaged_check_done = true; + return false; + } - foreach (FieldBase f in fields) { - if (f.IsStatic) - continue; + if (fields != null) { + requires_delayed_unmanagedtype_check = true; - // It can happen when recursive unmanaged types are defined - // struct S { S* s; } - TypeSpec mt = f.MemberType; - if (mt == null) { - return true; - } + foreach (FieldBase f in fields) { + if (f.IsStatic) + continue; - while (mt.IsPointer) - mt = TypeManager.GetElementType (mt); + // It can happen when recursive unmanaged types are defined + // struct S { S* s; } + TypeSpec mt = f.MemberType; + if (mt == null) { + return true; + } + + if (mt.IsUnmanaged) + continue; - if (mt.IsGenericOrParentIsGeneric || mt.IsGenericParameter) { has_unmanaged_check_done = true; return false; } - if (TypeManager.IsUnmanagedType (mt)) - continue; - has_unmanaged_check_done = true; - return false; } - has_unmanaged_check_done = true; is_unmanaged = true; return true; } diff --git a/main/contrib/ICSharpCode.NRefactory.CSharp/Parser/mcs/codegen.cs b/main/contrib/ICSharpCode.NRefactory.CSharp/Parser/mcs/codegen.cs index e08a5aeb1a..142f940934 100644 --- a/main/contrib/ICSharpCode.NRefactory.CSharp/Parser/mcs/codegen.cs +++ b/main/contrib/ICSharpCode.NRefactory.CSharp/Parser/mcs/codegen.cs @@ -7,6 +7,7 @@ // // Copyright 2001, 2002, 2003 Ximian, Inc. // Copyright 2004 Novell, Inc. +// Copyright 2011 Xamarin Inc // using System; @@ -975,7 +976,6 @@ namespace Mono.CSharp instance.Emit (ec); temp.Store (ec); temp.AddressOf (ec, AddressOp.Load); - temp.Release (ec); } return ReferenceContainer.MakeType (ec.Module, instance_type); diff --git a/main/contrib/ICSharpCode.NRefactory.CSharp/Parser/mcs/complete.cs b/main/contrib/ICSharpCode.NRefactory.CSharp/Parser/mcs/complete.cs index cab03dc3d4..08b420592a 100644 --- a/main/contrib/ICSharpCode.NRefactory.CSharp/Parser/mcs/complete.cs +++ b/main/contrib/ICSharpCode.NRefactory.CSharp/Parser/mcs/complete.cs @@ -7,6 +7,7 @@ // // Copyright 2001, 2002, 2003 Ximian, Inc. // Copyright 2003-2009 Novell, Inc. +// Copyright 2011 Xamarin Inc // // Completion* classes derive from ExpressionStatement as this allows // them to pass through the parser in many conditions that require diff --git a/main/contrib/ICSharpCode.NRefactory.CSharp/Parser/mcs/constant.cs b/main/contrib/ICSharpCode.NRefactory.CSharp/Parser/mcs/constant.cs index 99c4654e74..3869f1e805 100644 --- a/main/contrib/ICSharpCode.NRefactory.CSharp/Parser/mcs/constant.cs +++ b/main/contrib/ICSharpCode.NRefactory.CSharp/Parser/mcs/constant.cs @@ -7,6 +7,7 @@ // // Copyright 2001-2003 Ximian, Inc. // Copyright 2003-2008 Novell, Inc. +// Copyright 2011 Xamarin Inc // using System; diff --git a/main/contrib/ICSharpCode.NRefactory.CSharp/Parser/mcs/convert.cs b/main/contrib/ICSharpCode.NRefactory.CSharp/Parser/mcs/convert.cs index d8745699dc..f1dfc2d8bd 100644 --- a/main/contrib/ICSharpCode.NRefactory.CSharp/Parser/mcs/convert.cs +++ b/main/contrib/ICSharpCode.NRefactory.CSharp/Parser/mcs/convert.cs @@ -8,7 +8,7 @@ // // Copyright 2001, 2002, 2003 Ximian, Inc. // Copyright 2003-2008 Novell, Inc. -// Copyright 2011 Xamarin, Inc (http://www.xamarin.com) +// Copyright 2011 Xamarin Inc (http://www.xamarin.com) // using System; @@ -818,7 +818,7 @@ namespace Mono.CSharp { /// Finds "most encompassed type" according to the spec (13.4.2) /// amongst the methods in the MethodGroupExpr /// </summary> - public static TypeSpec FindMostEncompassedType (IEnumerable<TypeSpec> types) + public static TypeSpec FindMostEncompassedType (IList<TypeSpec> types) { TypeSpec best = null; EmptyExpression expr; diff --git a/main/contrib/ICSharpCode.NRefactory.CSharp/Parser/mcs/cs-parser.cs b/main/contrib/ICSharpCode.NRefactory.CSharp/Parser/mcs/cs-parser.cs index 4a27cae7f9..756ab9c7f5 100644 --- a/main/contrib/ICSharpCode.NRefactory.CSharp/Parser/mcs/cs-parser.cs +++ b/main/contrib/ICSharpCode.NRefactory.CSharp/Parser/mcs/cs-parser.cs @@ -153,7 +153,6 @@ namespace Mono.CSharp List<Location> attributeCommas = new List<Location> (); List<Location> attributeArgumentCommas = new List<Location> (); List<Location> parameterListCommas = new List<Location> (); - List<Location> enumCommas = new List<Location> (); object lastYYVal; @@ -517,8 +516,7 @@ namespace Mono.CSharp //t "$$56 :", //t "$$57 :", //t "$$58 :", -//t "$$59 :", -//t "enum_declaration : opt_attributes opt_modifiers ENUM $$56 type_declaration_name opt_enum_base $$57 OPEN_BRACE $$58 opt_enum_member_declarations $$59 CLOSE_BRACE opt_semicolon", +//t "enum_declaration : opt_attributes opt_modifiers ENUM type_declaration_name opt_enum_base $$56 OPEN_BRACE $$57 opt_enum_member_declarations $$58 CLOSE_BRACE opt_semicolon", //t "opt_enum_base :", //t "opt_enum_base : COLON type", //t "opt_enum_base : COLON error", @@ -528,12 +526,12 @@ namespace Mono.CSharp //t "enum_member_declarations : enum_member_declaration", //t "enum_member_declarations : enum_member_declarations COMMA enum_member_declaration", //t "enum_member_declaration : opt_attributes IDENTIFIER", +//t "$$59 :", +//t "enum_member_declaration : opt_attributes IDENTIFIER $$59 ASSIGN constant_expression", //t "$$60 :", -//t "enum_member_declaration : opt_attributes IDENTIFIER $$60 ASSIGN constant_expression", //t "$$61 :", //t "$$62 :", -//t "$$63 :", -//t "delegate_declaration : opt_attributes opt_modifiers DELEGATE member_type type_declaration_name OPEN_PARENS $$61 opt_formal_parameter_list CLOSE_PARENS $$62 opt_type_parameter_constraints_clauses $$63 SEMICOLON", +//t "delegate_declaration : opt_attributes opt_modifiers DELEGATE member_type type_declaration_name OPEN_PARENS $$60 opt_formal_parameter_list CLOSE_PARENS $$61 opt_type_parameter_constraints_clauses $$62 SEMICOLON", //t "opt_nullable :", //t "opt_nullable : INTERR_NULLABLE", //t "namespace_or_type_name : member_name", @@ -546,8 +544,8 @@ namespace Mono.CSharp //t "opt_type_argument_list : OP_GENERICS_LT error", //t "type_arguments : type", //t "type_arguments : type_arguments COMMA type", -//t "$$64 :", -//t "type_declaration_name : IDENTIFIER $$64 opt_type_parameter_list", +//t "$$63 :", +//t "type_declaration_name : IDENTIFIER $$63 opt_type_parameter_list", //t "member_declaration_name : method_declaration_name", //t "method_declaration_name : type_declaration_name", //t "method_declaration_name : explicit_interface IDENTIFIER opt_type_parameter_list", @@ -695,8 +693,8 @@ namespace Mono.CSharp //t "array_creation_expression : NEW rank_specifier array_initializer", //t "array_creation_expression : NEW new_expr_type OPEN_BRACKET CLOSE_BRACKET OPEN_BRACKET_EXPR error CLOSE_BRACKET", //t "array_creation_expression : NEW new_expr_type error", -//t "$$65 :", -//t "new_expr_type : $$65 simple_type", +//t "$$64 :", +//t "new_expr_type : $$64 simple_type", //t "anonymous_type_expression : NEW OPEN_BRACE anonymous_type_parameters_opt_comma CLOSE_BRACE", //t "anonymous_type_parameters_opt_comma : anonymous_type_parameters_opt", //t "anonymous_type_parameters_opt_comma : anonymous_type_parameters COMMA", @@ -722,8 +720,8 @@ namespace Mono.CSharp //t "array_initializer : OPEN_BRACE variable_initializer_list opt_comma CLOSE_BRACE", //t "variable_initializer_list : variable_initializer", //t "variable_initializer_list : variable_initializer_list COMMA variable_initializer", -//t "$$66 :", -//t "typeof_expression : TYPEOF $$66 open_parens_any typeof_type_expression CLOSE_PARENS", +//t "$$65 :", +//t "typeof_expression : TYPEOF $$65 open_parens_any typeof_type_expression CLOSE_PARENS", //t "typeof_type_expression : type_and_void", //t "typeof_type_expression : unbound_type_name", //t "typeof_type_expression : error", @@ -738,14 +736,14 @@ namespace Mono.CSharp //t "checked_expression : CHECKED open_parens_any expression CLOSE_PARENS", //t "unchecked_expression : UNCHECKED open_parens_any expression CLOSE_PARENS", //t "pointer_member_access : primary_expression OP_PTR IDENTIFIER opt_type_argument_list", +//t "$$66 :", +//t "anonymous_method_expression : DELEGATE opt_anonymous_method_signature $$66 block", //t "$$67 :", -//t "anonymous_method_expression : DELEGATE opt_anonymous_method_signature $$67 block", -//t "$$68 :", -//t "anonymous_method_expression : ASYNC DELEGATE opt_anonymous_method_signature $$68 block", +//t "anonymous_method_expression : ASYNC DELEGATE opt_anonymous_method_signature $$67 block", //t "opt_anonymous_method_signature :", //t "opt_anonymous_method_signature : anonymous_method_signature", -//t "$$69 :", -//t "anonymous_method_signature : OPEN_PARENS $$69 opt_formal_parameter_list CLOSE_PARENS", +//t "$$68 :", +//t "anonymous_method_signature : OPEN_PARENS $$68 opt_formal_parameter_list CLOSE_PARENS", //t "default_value_expression : DEFAULT open_parens_any type CLOSE_PARENS", //t "unary_expression : primary_expression", //t "unary_expression : BANG prefixed_unary_expression", @@ -814,20 +812,20 @@ namespace Mono.CSharp //t "opt_lambda_parameter_list : lambda_parameter_list", //t "lambda_expression_body : lambda_expression_body_simple", //t "lambda_expression_body : block", -//t "$$70 :", -//t "lambda_expression_body_simple : $$70 expression_or_error", +//t "$$69 :", +//t "lambda_expression_body_simple : $$69 expression_or_error", //t "expression_or_error : expression", //t "expression_or_error : error", +//t "$$70 :", +//t "lambda_expression : IDENTIFIER ARROW $$70 lambda_expression_body", //t "$$71 :", -//t "lambda_expression : IDENTIFIER ARROW $$71 lambda_expression_body", +//t "lambda_expression : ASYNC identifier_inside_body ARROW $$71 lambda_expression_body", //t "$$72 :", -//t "lambda_expression : ASYNC identifier_inside_body ARROW $$72 lambda_expression_body", //t "$$73 :", +//t "lambda_expression : OPEN_PARENS_LAMBDA $$72 opt_lambda_parameter_list CLOSE_PARENS ARROW $$73 lambda_expression_body", //t "$$74 :", -//t "lambda_expression : OPEN_PARENS_LAMBDA $$73 opt_lambda_parameter_list CLOSE_PARENS ARROW $$74 lambda_expression_body", //t "$$75 :", -//t "$$76 :", -//t "lambda_expression : ASYNC OPEN_PARENS_LAMBDA $$75 opt_lambda_parameter_list CLOSE_PARENS ARROW $$76 lambda_expression_body", +//t "lambda_expression : ASYNC OPEN_PARENS_LAMBDA $$74 opt_lambda_parameter_list CLOSE_PARENS ARROW $$75 lambda_expression_body", //t "expression : assignment_expression", //t "expression : non_assignment_expression", //t "non_assignment_expression : conditional_expression", @@ -839,11 +837,11 @@ namespace Mono.CSharp //t "undocumented_expressions : MAKEREF open_parens_any expression CLOSE_PARENS", //t "constant_expression : expression", //t "boolean_expression : expression", +//t "$$76 :", //t "$$77 :", //t "$$78 :", //t "$$79 :", -//t "$$80 :", -//t "class_declaration : opt_attributes opt_modifiers opt_partial CLASS $$77 type_declaration_name $$78 opt_class_base opt_type_parameter_constraints_clauses $$79 OPEN_BRACE opt_class_member_declarations CLOSE_BRACE $$80 opt_semicolon", +//t "class_declaration : opt_attributes opt_modifiers opt_partial CLASS $$76 type_declaration_name $$77 opt_class_base opt_type_parameter_constraints_clauses $$78 OPEN_BRACE opt_class_member_declarations CLOSE_BRACE $$79 opt_semicolon", //t "opt_partial :", //t "opt_partial : PARTIAL", //t "opt_modifiers :", @@ -883,12 +881,12 @@ namespace Mono.CSharp //t "opt_type_parameter_variance : type_parameter_variance", //t "type_parameter_variance : OUT", //t "type_parameter_variance : IN", -//t "$$81 :", -//t "block : OPEN_BRACE $$81 opt_statement_list block_end", +//t "$$80 :", +//t "block : OPEN_BRACE $$80 opt_statement_list block_end", //t "block_end : CLOSE_BRACE", //t "block_end : COMPLETE_COMPLETION", -//t "$$82 :", -//t "block_prepared : OPEN_BRACE $$82 opt_statement_list CLOSE_BRACE", +//t "$$81 :", +//t "block_prepared : OPEN_BRACE $$81 opt_statement_list CLOSE_BRACE", //t "opt_statement_list :", //t "opt_statement_list : statement_list", //t "statement_list : statement", @@ -896,6 +894,7 @@ namespace Mono.CSharp //t "statement : block_variable_declaration", //t "statement : valid_declaration_statement", //t "statement : labeled_statement", +//t "statement : IDENTIFIER error", //t "statement : error", //t "interactive_statement_list : interactive_statement", //t "interactive_statement_list : interactive_statement_list interactive_statement", @@ -933,8 +932,8 @@ namespace Mono.CSharp //t "embedded_statement : labeled_statement", //t "embedded_statement : error", //t "empty_statement : SEMICOLON", -//t "$$83 :", -//t "labeled_statement : identifier_inside_body COLON $$83 statement", +//t "$$82 :", +//t "labeled_statement : identifier_inside_body COLON $$82 statement", //t "variable_type : variable_type_simple", //t "variable_type : variable_type_simple rank_specifiers", //t "variable_type_simple : primary_expression_or_type opt_nullable", @@ -948,10 +947,10 @@ namespace Mono.CSharp //t "pointer_star : STAR", //t "identifier_inside_body : IDENTIFIER", //t "identifier_inside_body : AWAIT", +//t "$$83 :", +//t "block_variable_declaration : variable_type identifier_inside_body $$83 opt_local_variable_initializer opt_variable_declarators SEMICOLON", //t "$$84 :", -//t "block_variable_declaration : variable_type identifier_inside_body $$84 opt_local_variable_initializer opt_variable_declarators SEMICOLON", -//t "$$85 :", -//t "block_variable_declaration : CONST variable_type identifier_inside_body $$85 const_variable_initializer opt_const_declarators SEMICOLON", +//t "block_variable_declaration : CONST variable_type identifier_inside_body $$84 const_variable_initializer opt_const_declarators SEMICOLON", //t "opt_local_variable_initializer :", //t "opt_local_variable_initializer : ASSIGN block_variable_initializer", //t "opt_local_variable_initializer : ASSIGN error", @@ -985,15 +984,15 @@ namespace Mono.CSharp //t "selection_statement : switch_statement", //t "if_statement : IF open_parens_any boolean_expression CLOSE_PARENS embedded_statement", //t "if_statement : IF open_parens_any boolean_expression CLOSE_PARENS embedded_statement ELSE embedded_statement", -//t "$$86 :", -//t "switch_statement : SWITCH open_parens_any expression CLOSE_PARENS OPEN_BRACE $$86 opt_switch_sections CLOSE_BRACE", +//t "$$85 :", +//t "switch_statement : SWITCH open_parens_any expression CLOSE_PARENS OPEN_BRACE $$85 opt_switch_sections CLOSE_BRACE", //t "opt_switch_sections :", //t "opt_switch_sections : switch_sections", //t "switch_sections : switch_section", //t "switch_sections : switch_sections switch_section", //t "switch_sections : error", -//t "$$87 :", -//t "switch_section : switch_labels $$87 statement_list", +//t "$$86 :", +//t "switch_section : switch_labels $$86 statement_list", //t "switch_labels : switch_label", //t "switch_labels : switch_labels switch_label", //t "switch_label : CASE constant_expression COLON", @@ -1004,15 +1003,17 @@ namespace Mono.CSharp //t "iteration_statement : foreach_statement", //t "while_statement : WHILE open_parens_any boolean_expression CLOSE_PARENS embedded_statement", //t "do_statement : DO embedded_statement WHILE open_parens_any boolean_expression CLOSE_PARENS SEMICOLON", +//t "$$87 :", +//t "for_statement : FOR open_parens_any $$87 for_statement_cont", //t "$$88 :", -//t "for_statement : FOR open_parens_any $$88 for_statement_cont", -//t "for_statement_cont : opt_for_initializer SEMICOLON opt_for_condition SEMICOLON opt_for_iterator CLOSE_PARENS embedded_statement", -//t "for_statement_cont : opt_for_initializer SEMICOLON error", +//t "$$89 :", +//t "$$90 :", +//t "for_statement_cont : opt_for_initializer SEMICOLON $$88 opt_for_condition SEMICOLON $$89 opt_for_iterator CLOSE_PARENS $$90 embedded_statement", //t "for_statement_cont : error", //t "opt_for_initializer :", //t "opt_for_initializer : for_initializer", -//t "$$89 :", -//t "for_initializer : variable_type identifier_inside_body $$89 opt_local_variable_initializer opt_variable_declarators", +//t "$$91 :", +//t "for_initializer : variable_type identifier_inside_body $$91 opt_local_variable_initializer opt_variable_declarators", //t "for_initializer : statement_expression_list", //t "opt_for_condition :", //t "opt_for_condition : boolean_expression", @@ -1022,8 +1023,8 @@ namespace Mono.CSharp //t "statement_expression_list : statement_expression", //t "statement_expression_list : statement_expression_list COMMA statement_expression", //t "foreach_statement : FOREACH open_parens_any type IN expression CLOSE_PARENS", -//t "$$90 :", -//t "foreach_statement : FOREACH open_parens_any type identifier_inside_body IN expression CLOSE_PARENS $$90 embedded_statement", +//t "$$92 :", +//t "foreach_statement : FOREACH open_parens_any type identifier_inside_body IN expression CLOSE_PARENS $$92 embedded_statement", //t "jump_statement : break_statement", //t "jump_statement : continue_statement", //t "jump_statement : goto_statement", @@ -1050,20 +1051,20 @@ namespace Mono.CSharp //t "opt_identifier :", //t "opt_identifier : identifier_inside_body", //t "catch_clause : CATCH block", -//t "$$91 :", -//t "catch_clause : CATCH open_parens_any type opt_identifier CLOSE_PARENS $$91 block_prepared", +//t "$$93 :", +//t "catch_clause : CATCH open_parens_any type opt_identifier CLOSE_PARENS $$93 block_prepared", //t "catch_clause : CATCH open_parens_any error", //t "checked_statement : CHECKED block", //t "unchecked_statement : UNCHECKED block", -//t "$$92 :", -//t "unsafe_statement : UNSAFE $$92 block", -//t "lock_statement : LOCK open_parens_any expression CLOSE_PARENS embedded_statement", -//t "$$93 :", //t "$$94 :", -//t "fixed_statement : FIXED open_parens_any variable_type identifier_inside_body $$93 using_or_fixed_variable_initializer opt_using_or_fixed_variable_declarators CLOSE_PARENS $$94 embedded_statement", +//t "unsafe_statement : UNSAFE $$94 block", +//t "lock_statement : LOCK open_parens_any expression CLOSE_PARENS embedded_statement", //t "$$95 :", //t "$$96 :", -//t "using_statement : USING open_parens_any variable_type identifier_inside_body $$95 using_initialization CLOSE_PARENS $$96 embedded_statement", +//t "fixed_statement : FIXED open_parens_any variable_type identifier_inside_body $$95 using_or_fixed_variable_initializer opt_using_or_fixed_variable_declarators CLOSE_PARENS $$96 embedded_statement", +//t "$$97 :", +//t "$$98 :", +//t "using_statement : USING open_parens_any variable_type identifier_inside_body $$97 using_initialization CLOSE_PARENS $$98 embedded_statement", //t "using_statement : USING open_parens_any expression CLOSE_PARENS embedded_statement", //t "using_initialization : using_or_fixed_variable_initializer opt_using_or_fixed_variable_declarators", //t "using_initialization : error", @@ -1077,18 +1078,18 @@ namespace Mono.CSharp //t "first_from_clause : FROM_FIRST type identifier_inside_body IN expression", //t "nested_from_clause : FROM identifier_inside_body IN expression", //t "nested_from_clause : FROM type identifier_inside_body IN expression", -//t "$$97 :", -//t "from_clause : FROM identifier_inside_body IN $$97 expression", -//t "$$98 :", -//t "from_clause : FROM type identifier_inside_body IN $$98 expression", +//t "$$99 :", +//t "from_clause : FROM identifier_inside_body IN $$99 expression", +//t "$$100 :", +//t "from_clause : FROM type identifier_inside_body IN $$100 expression", //t "query_body : opt_query_body_clauses select_or_group_clause opt_query_continuation", //t "query_body : opt_query_body_clauses COMPLETE_COMPLETION", //t "query_body : error", -//t "$$99 :", -//t "select_or_group_clause : SELECT $$99 expression", -//t "$$100 :", //t "$$101 :", -//t "select_or_group_clause : GROUP $$100 expression $$101 BY expression", +//t "select_or_group_clause : SELECT $$101 expression", +//t "$$102 :", +//t "$$103 :", +//t "select_or_group_clause : GROUP $$102 expression $$103 BY expression", //t "opt_query_body_clauses :", //t "opt_query_body_clauses : query_body_clauses", //t "query_body_clauses : query_body_clause", @@ -1098,28 +1099,28 @@ namespace Mono.CSharp //t "query_body_clause : where_clause", //t "query_body_clause : join_clause", //t "query_body_clause : orderby_clause", -//t "$$102 :", -//t "let_clause : LET identifier_inside_body ASSIGN $$102 expression", -//t "$$103 :", -//t "where_clause : WHERE $$103 expression", //t "$$104 :", +//t "let_clause : LET identifier_inside_body ASSIGN $$104 expression", //t "$$105 :", +//t "where_clause : WHERE $$105 expression", //t "$$106 :", -//t "join_clause : JOIN identifier_inside_body IN $$104 expression ON $$105 expression EQUALS $$106 expression opt_join_into", //t "$$107 :", //t "$$108 :", +//t "join_clause : JOIN identifier_inside_body IN $$106 expression ON $$107 expression EQUALS $$108 expression opt_join_into", //t "$$109 :", -//t "join_clause : JOIN type identifier_inside_body IN $$107 expression ON $$108 expression EQUALS $$109 expression opt_join_into", +//t "$$110 :", +//t "$$111 :", +//t "join_clause : JOIN type identifier_inside_body IN $$109 expression ON $$110 expression EQUALS $$111 expression opt_join_into", //t "opt_join_into :", //t "opt_join_into : INTO identifier_inside_body", -//t "$$110 :", -//t "orderby_clause : ORDERBY $$110 orderings", +//t "$$112 :", +//t "orderby_clause : ORDERBY $$112 orderings", //t "orderings : order_by", -//t "$$111 :", -//t "orderings : order_by COMMA $$111 orderings_then_by", +//t "$$113 :", +//t "orderings : order_by COMMA $$113 orderings_then_by", //t "orderings_then_by : then_by", -//t "$$112 :", -//t "orderings_then_by : orderings_then_by COMMA $$112 then_by", +//t "$$114 :", +//t "orderings_then_by : orderings_then_by COMMA $$114 then_by", //t "order_by : expression", //t "order_by : expression ASCENDING", //t "order_by : expression DESCENDING", @@ -1127,12 +1128,12 @@ namespace Mono.CSharp //t "then_by : expression ASCENDING", //t "then_by : expression DESCENDING", //t "opt_query_continuation :", -//t "$$113 :", -//t "opt_query_continuation : INTO identifier_inside_body $$113 query_body", +//t "$$115 :", +//t "opt_query_continuation : INTO identifier_inside_body $$115 query_body", //t "interactive_parsing : EVAL_STATEMENT_PARSER EOF", //t "interactive_parsing : EVAL_USING_DECLARATIONS_UNIT_PARSER using_directives opt_COMPLETE_COMPLETION", -//t "$$114 :", -//t "interactive_parsing : EVAL_STATEMENT_PARSER $$114 interactive_statement_list opt_COMPLETE_COMPLETION", +//t "$$116 :", +//t "interactive_parsing : EVAL_STATEMENT_PARSER $$116 interactive_statement_list opt_COMPLETE_COMPLETION", //t "interactive_parsing : EVAL_COMPILATION_UNIT_PARSER interactive_compilation_unit", //t "interactive_compilation_unit : opt_extern_alias_directives opt_using_directives", //t "interactive_compilation_unit : opt_extern_alias_directives opt_using_directives namespace_or_type_declarations", @@ -1145,16 +1146,16 @@ namespace Mono.CSharp //t "doc_cref : builtin_types opt_doc_method_sig", //t "doc_cref : builtin_types DOT IDENTIFIER opt_doc_method_sig", //t "doc_cref : doc_type_declaration_name DOT THIS", -//t "$$115 :", -//t "doc_cref : doc_type_declaration_name DOT THIS OPEN_BRACKET $$115 opt_doc_parameters CLOSE_BRACKET", +//t "$$117 :", +//t "doc_cref : doc_type_declaration_name DOT THIS OPEN_BRACKET $$117 opt_doc_parameters CLOSE_BRACKET", //t "doc_cref : EXPLICIT OPERATOR type opt_doc_method_sig", //t "doc_cref : IMPLICIT OPERATOR type opt_doc_method_sig", //t "doc_cref : OPERATOR overloadable_operator opt_doc_method_sig", //t "doc_type_declaration_name : type_declaration_name", //t "doc_type_declaration_name : doc_type_declaration_name DOT type_declaration_name", //t "opt_doc_method_sig :", -//t "$$116 :", -//t "opt_doc_method_sig : OPEN_PARENS $$116 opt_doc_parameters CLOSE_PARENS", +//t "$$118 :", +//t "opt_doc_method_sig : OPEN_PARENS $$118 opt_doc_parameters CLOSE_PARENS", //t "opt_doc_parameters :", //t "opt_doc_parameters : doc_parameters", //t "doc_parameters : doc_parameter", @@ -1399,20 +1400,20 @@ namespace Mono.CSharp yyVal = yyV > yyTop ? null : yyVals[yyV]; // yyVal = yyDefault(yyV > yyTop ? null : yyVals[yyV]); switch (yyN) { case 1: -#line 402 "cs-parser.jay" +#line 401 "cs-parser.jay" { Lexer.check_incorrect_doc_comment (); } break; case 2: -#line 403 "cs-parser.jay" +#line 402 "cs-parser.jay" { Lexer.CompleteOnEOF = false; } break; case 6: case_6(); break; case 7: -#line 420 "cs-parser.jay" +#line 419 "cs-parser.jay" { module.AddAttributes ((Attributes) yyVals[0+yyTop], current_namespace); } @@ -1424,7 +1425,7 @@ case 13: case_13(); break; case 14: -#line 458 "cs-parser.jay" +#line 457 "cs-parser.jay" { syntax_error (GetLocation (yyVals[-1+yyTop]), "`alias' expected"); /* TODO: better*/ } @@ -1469,7 +1470,7 @@ case 41: case_41(); break; case 42: -#line 647 "cs-parser.jay" +#line 646 "cs-parser.jay" { current_namespace.DeclarationFound = true; } @@ -1499,18 +1500,18 @@ case 57: case_57(); break; case 58: -#line 756 "cs-parser.jay" +#line 755 "cs-parser.jay" { yyVal = "event"; savedCloseLocation = GetLocation (yyVals[0+yyTop]); } break; case 59: -#line 757 "cs-parser.jay" +#line 756 "cs-parser.jay" { yyVal = "return"; savedCloseLocation = GetLocation (yyVals[0+yyTop]); } break; case 60: case_60(); break; case 61: -#line 774 "cs-parser.jay" +#line 773 "cs-parser.jay" { yyVal = new List<Attribute> (4) { (Attribute) yyVals[0+yyTop] }; } @@ -1519,7 +1520,7 @@ case 62: case_62(); break; case 63: -#line 789 "cs-parser.jay" +#line 788 "cs-parser.jay" { ++lexer.parsing_block; } @@ -1528,14 +1529,14 @@ case 64: case_64(); break; case 66: -#line 816 "cs-parser.jay" +#line 815 "cs-parser.jay" { yyVal = null; } break; case 67: case_67(); break; case 68: -#line 827 "cs-parser.jay" +#line 826 "cs-parser.jay" { yyVal = null; } break; case 69: @@ -1551,13 +1552,13 @@ case 72: case_72(); break; case 73: -#line 871 "cs-parser.jay" +#line 870 "cs-parser.jay" { yyVal = new Argument ((Expression) yyVals[0+yyTop]); } break; case 75: -#line 879 "cs-parser.jay" +#line 878 "cs-parser.jay" { ++lexer.parsing_block; } @@ -1569,29 +1570,29 @@ case 77: case_77(); break; case 78: -#line 905 "cs-parser.jay" +#line 904 "cs-parser.jay" { yyVal = null; } break; case 79: -#line 909 "cs-parser.jay" +#line 908 "cs-parser.jay" { yyVal = Argument.AType.Ref; } break; case 80: -#line 913 "cs-parser.jay" +#line 912 "cs-parser.jay" { yyVal = Argument.AType.Out; } break; case 83: -#line 925 "cs-parser.jay" +#line 924 "cs-parser.jay" { lexer.parsing_modifiers = true; } break; case 84: -#line 929 "cs-parser.jay" +#line 928 "cs-parser.jay" { lexer.parsing_modifiers = true; } @@ -1600,7 +1601,7 @@ case 95: case_95(); break; case 96: -#line 959 "cs-parser.jay" +#line 958 "cs-parser.jay" { lexer.ConstraintsParsing = true; } @@ -1621,7 +1622,7 @@ case 101: case_101(); break; case 102: -#line 1000 "cs-parser.jay" +#line 999 "cs-parser.jay" { Error_SyntaxError (yyToken); } @@ -1633,13 +1634,13 @@ case 104: case_104(); break; case 107: -#line 1041 "cs-parser.jay" +#line 1040 "cs-parser.jay" { current_field.AddDeclarator ((FieldDeclarator) yyVals[0+yyTop]); } break; case 108: -#line 1045 "cs-parser.jay" +#line 1044 "cs-parser.jay" { current_field.AddDeclarator ((FieldDeclarator) yyVals[0+yyTop]); } @@ -1648,7 +1649,7 @@ case 109: case_109(); break; case 110: -#line 1061 "cs-parser.jay" +#line 1060 "cs-parser.jay" { ++lexer.parsing_block; } @@ -1672,7 +1673,7 @@ case 118: case_118(); break; case 119: -#line 1140 "cs-parser.jay" +#line 1139 "cs-parser.jay" { report.Error (1641, GetLocation (yyVals[-1+yyTop]), "A fixed size buffer field must have the array size specifier after the field name"); } @@ -1684,13 +1685,13 @@ case 122: case_122(); break; case 125: -#line 1170 "cs-parser.jay" +#line 1169 "cs-parser.jay" { current_field.AddDeclarator ((FieldDeclarator) yyVals[0+yyTop]); } break; case 126: -#line 1174 "cs-parser.jay" +#line 1173 "cs-parser.jay" { current_field.AddDeclarator ((FieldDeclarator) yyVals[0+yyTop]); } @@ -1699,7 +1700,7 @@ case 127: case_127(); break; case 128: -#line 1187 "cs-parser.jay" +#line 1186 "cs-parser.jay" { ++lexer.parsing_block; } @@ -1708,13 +1709,13 @@ case 129: case_129(); break; case 132: -#line 1206 "cs-parser.jay" +#line 1205 "cs-parser.jay" { current_field.AddDeclarator ((FieldDeclarator) yyVals[0+yyTop]); } break; case 133: -#line 1210 "cs-parser.jay" +#line 1209 "cs-parser.jay" { current_field.AddDeclarator ((FieldDeclarator) yyVals[0+yyTop]); } @@ -1723,7 +1724,7 @@ case 134: case_134(); break; case 135: -#line 1226 "cs-parser.jay" +#line 1225 "cs-parser.jay" { ++lexer.parsing_block; } @@ -1744,13 +1745,13 @@ case 142: case_142(); break; case 143: -#line 1297 "cs-parser.jay" +#line 1296 "cs-parser.jay" { valid_param_mod = ParameterModifierType.All; } break; case 144: -#line 1301 "cs-parser.jay" +#line 1300 "cs-parser.jay" { lexer.ConstraintsParsing = true; } @@ -1759,7 +1760,7 @@ case 145: case_145(); break; case 146: -#line 1335 "cs-parser.jay" +#line 1334 "cs-parser.jay" { lexer.parsing_generic_declaration = true; } @@ -1768,7 +1769,7 @@ case 147: case_147(); break; case 148: -#line 1345 "cs-parser.jay" +#line 1344 "cs-parser.jay" { lexer.ConstraintsParsing = true; } @@ -1780,11 +1781,11 @@ case 150: case_150(); break; case 152: -#line 1403 "cs-parser.jay" +#line 1402 "cs-parser.jay" { savedLocation = GetLocation (yyVals[0+yyTop]); yyVal = null; } break; case 153: -#line 1407 "cs-parser.jay" +#line 1406 "cs-parser.jay" { yyVal = ParametersCompiled.EmptyReadOnlyParameters; } break; case 155: @@ -1809,13 +1810,13 @@ case 161: case_161(); break; case 162: -#line 1479 "cs-parser.jay" +#line 1478 "cs-parser.jay" { yyVal = new ParametersCompiled (new Parameter[] { (Parameter) yyVals[0+yyTop] } ); } break; case 163: -#line 1483 "cs-parser.jay" +#line 1482 "cs-parser.jay" { yyVal = new ParametersCompiled (new Parameter [] { new ArglistParameter (GetLocation (yyVals[0+yyTop])) }, true); } @@ -1839,7 +1840,7 @@ case 169: case_169(); break; case 170: -#line 1558 "cs-parser.jay" +#line 1557 "cs-parser.jay" { ++lexer.parsing_block; } @@ -1848,11 +1849,11 @@ case 171: case_171(); break; case 172: -#line 1599 "cs-parser.jay" +#line 1598 "cs-parser.jay" { yyVal = Parameter.Modifier.NONE; } break; case 174: -#line 1607 "cs-parser.jay" +#line 1606 "cs-parser.jay" { yyVal = yyVals[0+yyTop]; } @@ -1885,7 +1886,7 @@ case 183: case_183(); break; case 184: -#line 1700 "cs-parser.jay" +#line 1699 "cs-parser.jay" { Error_DuplicateParameterModifier (GetLocation (yyVals[-1+yyTop]), Parameter.Modifier.PARAMS); } @@ -1906,7 +1907,7 @@ case 189: case_189(); break; case 190: -#line 1754 "cs-parser.jay" +#line 1753 "cs-parser.jay" { valid_param_mod = ParameterModifierType.Params | ParameterModifierType.DefaultValue; } @@ -1915,7 +1916,7 @@ case 191: case_191(); break; case 192: -#line 1783 "cs-parser.jay" +#line 1782 "cs-parser.jay" { lexer.PropertyParsing = false; } @@ -1945,7 +1946,7 @@ case 205: case_205(); break; case 206: -#line 1932 "cs-parser.jay" +#line 1931 "cs-parser.jay" { lexer.ConstraintsParsing = true; } @@ -1963,55 +1964,55 @@ case 210: case_210(); break; case 211: -#line 1969 "cs-parser.jay" +#line 1968 "cs-parser.jay" { Error_SyntaxError (yyToken); } break; case 214: -#line 1981 "cs-parser.jay" +#line 1980 "cs-parser.jay" { lexer.parsing_modifiers = true; } break; case 215: -#line 1985 "cs-parser.jay" +#line 1984 "cs-parser.jay" { lexer.parsing_modifiers = true; } break; case 216: -#line 1992 "cs-parser.jay" +#line 1991 "cs-parser.jay" { report.Error (525, GetLocation (yyVals[0+yyTop]), "Interfaces cannot contain fields or constants"); } break; case 217: -#line 1996 "cs-parser.jay" +#line 1995 "cs-parser.jay" { report.Error (525, GetLocation (yyVals[0+yyTop]), "Interfaces cannot contain fields or constants"); } break; case 222: -#line 2004 "cs-parser.jay" +#line 2003 "cs-parser.jay" { report.Error (567, GetLocation (yyVals[0+yyTop]), "Interfaces cannot contain operators"); } break; case 223: -#line 2008 "cs-parser.jay" +#line 2007 "cs-parser.jay" { report.Error (526, GetLocation (yyVals[0+yyTop]), "Interfaces cannot contain contructors"); } break; case 224: -#line 2012 "cs-parser.jay" +#line 2011 "cs-parser.jay" { report.Error (524, GetLocation (yyVals[0+yyTop]), "Interfaces cannot declare classes, structs, interfaces, delegates, or enumerations"); } break; case 225: -#line 2018 "cs-parser.jay" +#line 2017 "cs-parser.jay" { } break; @@ -2019,14 +2020,14 @@ case 226: case_226(); break; case 228: -#line 2051 "cs-parser.jay" +#line 2050 "cs-parser.jay" { savedLocation = GetLocation (yyVals[0+yyTop]); yyVal = null; } break; case 230: case_230(); break; case 231: -#line 2067 "cs-parser.jay" +#line 2066 "cs-parser.jay" { valid_param_mod = ParameterModifierType.DefaultValue; } @@ -2035,95 +2036,95 @@ case 232: case_232(); break; case 234: -#line 2113 "cs-parser.jay" +#line 2112 "cs-parser.jay" { yyVal = Operator.OpType.LogicalNot; savedOperatorLocation = GetLocation (yyVals[0+yyTop]); } break; case 235: -#line 2114 "cs-parser.jay" +#line 2113 "cs-parser.jay" { yyVal = Operator.OpType.OnesComplement; savedOperatorLocation = GetLocation (yyVals[0+yyTop]); } break; case 236: -#line 2115 "cs-parser.jay" +#line 2114 "cs-parser.jay" { yyVal = Operator.OpType.Increment; savedOperatorLocation = GetLocation (yyVals[0+yyTop]); } break; case 237: -#line 2116 "cs-parser.jay" +#line 2115 "cs-parser.jay" { yyVal = Operator.OpType.Decrement; savedOperatorLocation = GetLocation (yyVals[0+yyTop]); } break; case 238: -#line 2117 "cs-parser.jay" +#line 2116 "cs-parser.jay" { yyVal = Operator.OpType.True; savedOperatorLocation = GetLocation (yyVals[0+yyTop]); } break; case 239: -#line 2118 "cs-parser.jay" +#line 2117 "cs-parser.jay" { yyVal = Operator.OpType.False; savedOperatorLocation = GetLocation (yyVals[0+yyTop]); } break; case 240: -#line 2120 "cs-parser.jay" +#line 2119 "cs-parser.jay" { yyVal = Operator.OpType.Addition; savedOperatorLocation = GetLocation (yyVals[0+yyTop]); } break; case 241: -#line 2121 "cs-parser.jay" +#line 2120 "cs-parser.jay" { yyVal = Operator.OpType.Subtraction; savedOperatorLocation = GetLocation (yyVals[0+yyTop]); } break; case 242: -#line 2123 "cs-parser.jay" +#line 2122 "cs-parser.jay" { yyVal = Operator.OpType.Multiply; savedOperatorLocation = GetLocation (yyVals[0+yyTop]); } break; case 243: -#line 2124 "cs-parser.jay" +#line 2123 "cs-parser.jay" { yyVal = Operator.OpType.Division; savedOperatorLocation = GetLocation (yyVals[0+yyTop]); } break; case 244: -#line 2125 "cs-parser.jay" +#line 2124 "cs-parser.jay" { yyVal = Operator.OpType.Modulus; savedOperatorLocation = GetLocation (yyVals[0+yyTop]); } break; case 245: -#line 2126 "cs-parser.jay" +#line 2125 "cs-parser.jay" { yyVal = Operator.OpType.BitwiseAnd; savedOperatorLocation = GetLocation (yyVals[0+yyTop]); } break; case 246: -#line 2127 "cs-parser.jay" +#line 2126 "cs-parser.jay" { yyVal = Operator.OpType.BitwiseOr; savedOperatorLocation = GetLocation (yyVals[0+yyTop]); } break; case 247: -#line 2128 "cs-parser.jay" +#line 2127 "cs-parser.jay" { yyVal = Operator.OpType.ExclusiveOr; savedOperatorLocation = GetLocation (yyVals[0+yyTop]); } break; case 248: -#line 2129 "cs-parser.jay" +#line 2128 "cs-parser.jay" { yyVal = Operator.OpType.LeftShift; savedOperatorLocation = GetLocation (yyVals[0+yyTop]); } break; case 249: -#line 2130 "cs-parser.jay" +#line 2129 "cs-parser.jay" { yyVal = Operator.OpType.RightShift; savedOperatorLocation = GetLocation (yyVals[0+yyTop]); } break; case 250: -#line 2131 "cs-parser.jay" +#line 2130 "cs-parser.jay" { yyVal = Operator.OpType.Equality; savedOperatorLocation = GetLocation (yyVals[0+yyTop]); } break; case 251: -#line 2132 "cs-parser.jay" +#line 2131 "cs-parser.jay" { yyVal = Operator.OpType.Inequality; savedOperatorLocation = GetLocation (yyVals[0+yyTop]); } break; case 252: -#line 2133 "cs-parser.jay" +#line 2132 "cs-parser.jay" { yyVal = Operator.OpType.GreaterThan; savedOperatorLocation = GetLocation (yyVals[0+yyTop]); } break; case 253: -#line 2134 "cs-parser.jay" +#line 2133 "cs-parser.jay" { yyVal = Operator.OpType.LessThan; savedOperatorLocation = GetLocation (yyVals[0+yyTop]); } break; case 254: -#line 2135 "cs-parser.jay" +#line 2134 "cs-parser.jay" { yyVal = Operator.OpType.GreaterThanOrEqual; savedOperatorLocation = GetLocation (yyVals[0+yyTop]); } break; case 255: -#line 2136 "cs-parser.jay" +#line 2135 "cs-parser.jay" { yyVal = Operator.OpType.LessThanOrEqual; savedOperatorLocation = GetLocation (yyVals[0+yyTop]); } break; case 256: -#line 2143 "cs-parser.jay" +#line 2142 "cs-parser.jay" { valid_param_mod = ParameterModifierType.DefaultValue; } @@ -2132,7 +2133,7 @@ case 257: case_257(); break; case 258: -#line 2162 "cs-parser.jay" +#line 2161 "cs-parser.jay" { valid_param_mod = ParameterModifierType.DefaultValue; } @@ -2159,11 +2160,11 @@ case 265: case_265(); break; case 267: -#line 2265 "cs-parser.jay" +#line 2264 "cs-parser.jay" { current_block = null; yyVal = null; } break; case 270: -#line 2277 "cs-parser.jay" +#line 2276 "cs-parser.jay" { ++lexer.parsing_block; } @@ -2172,7 +2173,7 @@ case 271: case_271(); break; case 272: -#line 2287 "cs-parser.jay" +#line 2286 "cs-parser.jay" { ++lexer.parsing_block; } @@ -2205,7 +2206,7 @@ case 281: case_281(); break; case 283: -#line 2396 "cs-parser.jay" +#line 2395 "cs-parser.jay" { ++lexer.parsing_block; } @@ -2214,13 +2215,13 @@ case 284: case_284(); break; case 287: -#line 2413 "cs-parser.jay" +#line 2412 "cs-parser.jay" { current_event_field.AddDeclarator ((FieldDeclarator) yyVals[0+yyTop]); } break; case 288: -#line 2417 "cs-parser.jay" +#line 2416 "cs-parser.jay" { current_event_field.AddDeclarator ((FieldDeclarator) yyVals[0+yyTop]); } @@ -2229,7 +2230,7 @@ case 289: case_289(); break; case 290: -#line 2430 "cs-parser.jay" +#line 2429 "cs-parser.jay" { ++lexer.parsing_block; } @@ -2241,7 +2242,7 @@ case 292: case_292(); break; case 293: -#line 2455 "cs-parser.jay" +#line 2454 "cs-parser.jay" { yyVal = yyVals[0+yyTop]; } @@ -2271,10 +2272,7 @@ case 303: case_303(); break; case 305: -#line 2549 "cs-parser.jay" - { - enumCommas.Add (GetLocation (yyVals[0+yyTop])); - } + case_305(); break; case 306: case_306(); @@ -2285,21 +2283,21 @@ case 307: case 308: case_308(); break; -case 309: - case_309(); +case 310: + case_310(); break; case 311: case_311(); break; -case 312: - case_312(); - break; -case 315: +case 314: #line 2617 "cs-parser.jay" { - enumCommas.Add (GetLocation (yyVals[0+yyTop])); + lbag.AppendToMember (current_class, GetLocation (yyVals[0+yyTop])); } break; +case 316: + case_316(); + break; case 317: case_317(); break; @@ -2310,37 +2308,37 @@ case 319: case_319(); break; case 320: - case_320(); - break; -case 321: #line 2675 "cs-parser.jay" { valid_param_mod = ParameterModifierType.Ref | ParameterModifierType.Out | ParameterModifierType.Params | ParameterModifierType.DefaultValue; } break; -case 322: - case_322(); +case 321: + case_321(); break; -case 323: +case 322: #line 2697 "cs-parser.jay" { lexer.ConstraintsParsing = false; } break; -case 324: - case_324(); +case 323: + case_323(); + break; +case 325: + case_325(); break; -case 326: - case_326(); +case 327: + case_327(); break; -case 328: - case_328(); +case 329: + case_329(); break; case 330: case_330(); break; -case 331: - case_331(); +case 332: + case_332(); break; case 333: case_333(); @@ -2352,19 +2350,19 @@ case 335: case_335(); break; case 336: - case_336(); - break; -case 337: #line 2802 "cs-parser.jay" { lexer.parsing_generic_declaration = true; } break; +case 337: + case_337(); + break; case 338: case_338(); break; -case 339: - case_339(); +case 340: + case_340(); break; case 341: case_341(); @@ -2381,8 +2379,8 @@ case 344: case 345: case_345(); break; -case 346: - case_346(); +case 347: + case_347(); break; case 348: case_348(); @@ -2396,60 +2394,60 @@ case 350: case 351: case_351(); break; -case 352: - case_352(); - break; -case 354: +case 353: #line 2923 "cs-parser.jay" { yyVal = new TypeExpression (compiler.BuiltinTypes.Void, GetLocation (yyVals[0+yyTop])); } break; -case 355: +case 354: #line 2930 "cs-parser.jay" { lexer.parsing_generic_declaration = true; } break; -case 357: - case_357(); +case 356: + case_356(); break; -case 359: - case_359(); +case 358: + case_358(); break; -case 361: - case_361(); +case 360: + case_360(); break; -case 363: +case 362: #line 2968 "cs-parser.jay" { yyVal = new ComposedCast ((FullNamedExpression) yyVals[-1+yyTop], (ComposedTypeSpecifier) yyVals[0+yyTop]); } break; -case 364: - case_364(); +case 363: + case_363(); break; -case 365: +case 364: #line 2988 "cs-parser.jay" { yyVal = new ComposedCast (((MemberName) yyVals[-1+yyTop]).GetTypeExpression (), (ComposedTypeSpecifier) yyVals[0+yyTop]); } break; -case 366: - case_366(); +case 365: + case_365(); break; -case 367: +case 366: #line 2997 "cs-parser.jay" { yyVal = new ComposedCast ((FullNamedExpression) yyVals[-1+yyTop], (ComposedTypeSpecifier) yyVals[0+yyTop]); } break; -case 368: +case 367: #line 3001 "cs-parser.jay" { yyVal = new ComposedCast (new TypeExpression (compiler.BuiltinTypes.Void, GetLocation (yyVals[-1+yyTop])), (ComposedTypeSpecifier) yyVals[0+yyTop]); } break; +case 368: + case_368(); + break; case 369: case_369(); break; @@ -2460,95 +2458,95 @@ case 371: case_371(); break; case 372: - case_372(); - break; -case 373: #line 3040 "cs-parser.jay" { yyVal = new TypeExpression (compiler.BuiltinTypes.Object, GetLocation (yyVals[0+yyTop])); } break; -case 374: +case 373: #line 3041 "cs-parser.jay" { yyVal = new TypeExpression (compiler.BuiltinTypes.String, GetLocation (yyVals[0+yyTop])); } break; -case 375: +case 374: #line 3042 "cs-parser.jay" { yyVal = new TypeExpression (compiler.BuiltinTypes.Bool, GetLocation (yyVals[0+yyTop])); } break; -case 376: +case 375: #line 3043 "cs-parser.jay" { yyVal = new TypeExpression (compiler.BuiltinTypes.Decimal, GetLocation (yyVals[0+yyTop])); } break; -case 377: +case 376: #line 3044 "cs-parser.jay" { yyVal = new TypeExpression (compiler.BuiltinTypes.Float, GetLocation (yyVals[0+yyTop])); } break; -case 378: +case 377: #line 3045 "cs-parser.jay" { yyVal = new TypeExpression (compiler.BuiltinTypes.Double, GetLocation (yyVals[0+yyTop])); } break; -case 380: +case 379: #line 3050 "cs-parser.jay" { yyVal = new TypeExpression (compiler.BuiltinTypes.SByte, GetLocation (yyVals[0+yyTop])); } break; -case 381: +case 380: #line 3051 "cs-parser.jay" { yyVal = new TypeExpression (compiler.BuiltinTypes.Byte, GetLocation (yyVals[0+yyTop])); } break; -case 382: +case 381: #line 3052 "cs-parser.jay" { yyVal = new TypeExpression (compiler.BuiltinTypes.Short, GetLocation (yyVals[0+yyTop])); } break; -case 383: +case 382: #line 3053 "cs-parser.jay" { yyVal = new TypeExpression (compiler.BuiltinTypes.UShort, GetLocation (yyVals[0+yyTop])); } break; -case 384: +case 383: #line 3054 "cs-parser.jay" { yyVal = new TypeExpression (compiler.BuiltinTypes.Int, GetLocation (yyVals[0+yyTop])); } break; -case 385: +case 384: #line 3055 "cs-parser.jay" { yyVal = new TypeExpression (compiler.BuiltinTypes.UInt, GetLocation (yyVals[0+yyTop])); } break; -case 386: +case 385: #line 3056 "cs-parser.jay" { yyVal = new TypeExpression (compiler.BuiltinTypes.Long, GetLocation (yyVals[0+yyTop])); } break; -case 387: +case 386: #line 3057 "cs-parser.jay" { yyVal = new TypeExpression (compiler.BuiltinTypes.ULong, GetLocation (yyVals[0+yyTop])); } break; -case 388: +case 387: #line 3058 "cs-parser.jay" { yyVal = new TypeExpression (compiler.BuiltinTypes.Char, GetLocation (yyVals[0+yyTop])); } break; +case 408: + case_408(); + break; case 409: case_409(); break; -case 410: - case_410(); - break; -case 414: +case 413: #line 3105 "cs-parser.jay" { yyVal = new NullLiteral (GetLocation (yyVals[0+yyTop])); } break; -case 415: +case 414: #line 3109 "cs-parser.jay" { yyVal = new BoolLiteral (compiler.BuiltinTypes, true, GetLocation (yyVals[0+yyTop])); } break; -case 416: +case 415: #line 3110 "cs-parser.jay" { yyVal = new BoolLiteral (compiler.BuiltinTypes, false, GetLocation (yyVals[0+yyTop])); } break; -case 421: - case_421(); +case 420: + case_420(); break; -case 422: +case 421: #line 3143 "cs-parser.jay" { yyVal = new ParenthesizedExpression ((Expression) yyVals[-1+yyTop]); } break; +case 422: + case_422(); + break; case 423: case_423(); break; @@ -2559,49 +2557,49 @@ case 425: case_425(); break; case 426: - case_426(); - break; -case 427: #line 3178 "cs-parser.jay" { yyVal = new CompletionMemberAccess ((Expression) yyVals[-2+yyTop], null,GetLocation (yyVals[0+yyTop])); } break; -case 428: - case_428(); +case 427: + case_427(); break; -case 429: +case 428: #line 3186 "cs-parser.jay" { yyVal = new CompletionMemberAccess ((Expression) yyVals[-2+yyTop], null, lexer.Location); } break; +case 429: + case_429(); + break; case 430: case_430(); break; case 431: - case_431(); - break; -case 432: #line 3202 "cs-parser.jay" { yyVal = null; } break; +case 433: + case_433(); + break; case 434: case_434(); break; case 435: - case_435(); - break; -case 436: #line 3225 "cs-parser.jay" { yyVal = null; } break; -case 437: +case 436: #line 3229 "cs-parser.jay" { yyVal = yyVals[0+yyTop]; } break; +case 437: + case_437(); + break; case 438: case_438(); break; @@ -2612,27 +2610,27 @@ case 440: case_440(); break; case 441: - case_441(); - break; -case 442: #line 3262 "cs-parser.jay" { yyVal = new CompletionElementInitializer (null, GetLocation (yyVals[0+yyTop])); } break; +case 442: + case_442(); + break; case 443: case_443(); break; case 444: case_444(); break; -case 445: - case_445(); - break; -case 448: +case 447: #line 3290 "cs-parser.jay" { yyVal = null; } break; +case 449: + case_449(); + break; case 450: case_450(); break; @@ -2646,14 +2644,14 @@ case 453: case_453(); break; case 454: - case_454(); - break; -case 455: #line 3342 "cs-parser.jay" { yyVal = new Argument ((Expression) yyVals[0+yyTop]); } break; +case 458: + case_458(); + break; case 459: case_459(); break; @@ -2663,24 +2661,24 @@ case 460: case 461: case_461(); break; -case 462: - case_462(); +case 463: + case_463(); break; case 464: - case_464(); - break; -case 465: #line 3387 "cs-parser.jay" { yyVal = new ElementAccess ((Expression) yyVals[-3+yyTop], (Arguments) yyVals[-1+yyTop], GetLocation (yyVals[-2+yyTop])); } break; -case 466: +case 465: #line 3391 "cs-parser.jay" { yyVal = new ElementAccess ((Expression) yyVals[-2+yyTop], null, GetLocation (yyVals[-1+yyTop])); } break; +case 466: + case_466(); + break; case 467: case_467(); break; @@ -2694,38 +2692,38 @@ case 470: case_470(); break; case 471: - case_471(); - break; -case 472: #line 3437 "cs-parser.jay" { yyVal = new Argument ((Expression) yyVals[0+yyTop]); } break; -case 474: +case 473: #line 3445 "cs-parser.jay" { yyVal = new This (GetLocation (yyVals[0+yyTop])); } break; +case 474: + case_474(); + break; case 475: case_475(); break; case 476: - case_476(); - break; -case 477: #line 3465 "cs-parser.jay" { yyVal = new UnaryMutator (UnaryMutator.Mode.PostIncrement, (Expression) yyVals[-1+yyTop], GetLocation (yyVals[0+yyTop])); } break; -case 478: +case 477: #line 3472 "cs-parser.jay" { yyVal = new UnaryMutator (UnaryMutator.Mode.PostDecrement, (Expression) yyVals[-1+yyTop], GetLocation (yyVals[0+yyTop])); } break; +case 478: + case_478(); + break; case 479: case_479(); break; @@ -2745,24 +2743,24 @@ case 484: case_484(); break; case 485: - case_485(); - break; -case 486: #line 3538 "cs-parser.jay" { ++lexer.parsing_type; } break; +case 486: + case_486(); + break; case 487: case_487(); break; -case 488: - case_488(); - break; -case 491: +case 490: #line 3565 "cs-parser.jay" { yyVal = null; } break; +case 492: + case_492(); + break; case 493: case_493(); break; @@ -2778,8 +2776,8 @@ case 496: case 497: case_497(); break; -case 498: - case_498(); +case 501: + case_501(); break; case 502: case_502(); @@ -2788,32 +2786,32 @@ case 503: case_503(); break; case 504: - case_504(); - break; -case 505: #line 3643 "cs-parser.jay" { yyVal = 2; } break; -case 506: +case 505: #line 3647 "cs-parser.jay" { yyVal = ((int) yyVals[-1+yyTop]) + 1; } break; -case 507: +case 506: #line 3654 "cs-parser.jay" { yyVal = null; } break; -case 508: +case 507: #line 3658 "cs-parser.jay" { yyVal = yyVals[0+yyTop]; } break; +case 508: + case_508(); + break; case 509: case_509(); break; @@ -2824,16 +2822,16 @@ case 511: case_511(); break; case 512: - case_512(); - break; -case 513: #line 3702 "cs-parser.jay" { lexer.TypeOfParsing = true; } break; -case 514: - case_514(); +case 513: + case_513(); + break; +case 516: + case_516(); break; case 517: case_517(); @@ -2869,136 +2867,136 @@ case 527: case_527(); break; case 528: - case_528(); - break; -case 529: #line 3822 "cs-parser.jay" { start_anonymous (false, (ParametersCompiled) yyVals[0+yyTop], false, GetLocation (yyVals[-1+yyTop])); } break; -case 530: - case_530(); +case 529: + case_529(); break; -case 531: +case 530: #line 3835 "cs-parser.jay" { start_anonymous (false, (ParametersCompiled) yyVals[0+yyTop], true, GetLocation (yyVals[-2+yyTop])); } break; -case 532: - case_532(); +case 531: + case_531(); break; -case 533: +case 532: #line 3852 "cs-parser.jay" { yyVal = ParametersCompiled.Undefined; } break; -case 535: +case 534: #line 3860 "cs-parser.jay" { valid_param_mod = ParameterModifierType.Ref | ParameterModifierType.Out; } break; +case 535: + case_535(); + break; case 536: case_536(); break; -case 537: - case_537(); - break; -case 539: +case 538: #line 3886 "cs-parser.jay" { yyVal = new Unary (Unary.Operator.LogicalNot, (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } break; -case 540: +case 539: #line 3890 "cs-parser.jay" { yyVal = new Unary (Unary.Operator.OnesComplement, (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } break; +case 540: + case_540(); + break; case 541: case_541(); break; -case 542: - case_542(); - break; -case 544: +case 543: #line 3918 "cs-parser.jay" { yyVal = new Unary (Unary.Operator.UnaryPlus, (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } break; -case 545: +case 544: #line 3922 "cs-parser.jay" { yyVal = new Unary (Unary.Operator.UnaryNegation, (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } break; -case 546: +case 545: #line 3926 "cs-parser.jay" { yyVal = new UnaryMutator (UnaryMutator.Mode.PreIncrement, (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } break; -case 547: +case 546: #line 3930 "cs-parser.jay" { yyVal = new UnaryMutator (UnaryMutator.Mode.PreDecrement, (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } break; -case 548: +case 547: #line 3934 "cs-parser.jay" { yyVal = new Indirection ((Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } break; -case 549: +case 548: #line 3938 "cs-parser.jay" { yyVal = new Unary (Unary.Operator.AddressOf, (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } break; +case 550: + case_550(); + break; case 551: case_551(); break; case 552: case_552(); break; -case 553: - case_553(); +case 554: + case_554(); break; case 555: - case_555(); - break; -case 556: #line 3970 "cs-parser.jay" { yyVal = new Binary (Binary.Operator.Subtraction, (Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } break; -case 557: - case_557(); +case 556: + case_556(); break; -case 558: +case 557: #line 3979 "cs-parser.jay" { yyVal = new As ((Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } break; -case 559: +case 558: #line 3983 "cs-parser.jay" { yyVal = new Is ((Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } break; +case 560: + case_560(); + break; case 561: case_561(); break; -case 562: - case_562(); +case 563: + case_563(); break; case 564: case_564(); @@ -3009,42 +3007,42 @@ case 565: case 566: case_566(); break; -case 567: - case_567(); +case 568: + case_568(); break; case 569: case_569(); break; -case 570: - case_570(); +case 571: + case_571(); break; -case 572: - case_572(); +case 573: + case_573(); break; -case 574: - case_574(); +case 575: + case_575(); break; -case 576: - case_576(); +case 577: + case_577(); break; -case 578: - case_578(); +case 579: + case_579(); break; -case 580: - case_580(); +case 581: + case_581(); break; -case 582: - case_582(); +case 583: + case_583(); break; case 584: - case_584(); - break; -case 585: #line 4107 "cs-parser.jay" { yyVal = new SimpleAssign ((Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } break; +case 585: + case_585(); + break; case 586: case_586(); break; @@ -3088,23 +3086,23 @@ case 599: case_599(); break; case 600: - case_600(); - break; -case 601: #line 4204 "cs-parser.jay" { yyVal = ParametersCompiled.EmptyReadOnlyParameters; } break; -case 602: - case_602(); +case 601: + case_601(); break; -case 605: +case 604: #line 4220 "cs-parser.jay" { start_block (lexer.Location); } break; -case 606: - case_606(); +case 605: + case_605(); + break; +case 607: + case_607(); break; case 608: case_608(); @@ -3119,59 +3117,59 @@ case 611: case_611(); break; case 612: - case_612(); - break; -case 613: #line 4265 "cs-parser.jay" { valid_param_mod = ParameterModifierType.Ref | ParameterModifierType.Out; } break; +case 613: + case_613(); + break; case 614: case_614(); break; case 615: - case_615(); - break; -case 616: #line 4279 "cs-parser.jay" { valid_param_mod = ParameterModifierType.Ref | ParameterModifierType.Out; } break; +case 616: + case_616(); + break; case 617: case_617(); break; -case 618: - case_618(); - break; -case 624: +case 623: #line 4304 "cs-parser.jay" { yyVal = new ArglistAccess (GetLocation (yyVals[0+yyTop])); } break; +case 624: + case_624(); + break; case 625: case_625(); break; case 626: case_626(); break; -case 627: - case_627(); - break; -case 629: +case 628: #line 4333 "cs-parser.jay" { yyVal = new BooleanExpression ((Expression) yyVals[0+yyTop]); } break; -case 630: +case 629: #line 4346 "cs-parser.jay" { lexer.ConstraintsParsing = true; } break; +case 630: + case_630(); + break; case 631: case_631(); break; @@ -3182,25 +3180,25 @@ case 633: case_633(); break; case 634: - case_634(); - break; -case 635: #line 4389 "cs-parser.jay" { yyVal = null; } break; -case 636: +case 635: #line 4391 "cs-parser.jay" { yyVal = yyVals[0+yyTop]; StoreModifierLocation (Modifiers.PARTIAL, GetLocation (yyVals[0+yyTop])); } break; -case 637: - case_637(); +case 636: + case_636(); break; -case 638: +case 637: #line 4404 "cs-parser.jay" { lexer.parsing_modifiers = false; } break; +case 639: + case_639(); + break; case 640: case_640(); break; @@ -3246,18 +3244,18 @@ case 653: case 654: case_654(); break; -case 655: - case_655(); - break; -case 657: - case_657(); +case 656: + case_656(); break; -case 659: +case 658: #line 4524 "cs-parser.jay" { yyVal = yyVals[0+yyTop]; } break; +case 659: + case_659(); + break; case 660: case_660(); break; @@ -3280,26 +3278,26 @@ case 666: case_666(); break; case 667: - case_667(); - break; -case 668: #line 4615 "cs-parser.jay" { yyVal = new SpecialContraintExpr (SpecialConstraint.Class, GetLocation (yyVals[0+yyTop])); } break; -case 669: +case 668: #line 4619 "cs-parser.jay" { yyVal = new SpecialContraintExpr (SpecialConstraint.Struct, GetLocation (yyVals[0+yyTop])); } break; -case 670: +case 669: #line 4626 "cs-parser.jay" { yyVal = Variance.None; } break; +case 670: + case_670(); + break; case 671: case_671(); break; @@ -3310,14 +3308,14 @@ case 673: case_673(); break; case 674: - case_674(); - break; -case 675: #line 4671 "cs-parser.jay" { yyVal = yyVals[0+yyTop]; } break; +case 675: + case_675(); + break; case 676: case_676(); break; @@ -3327,32 +3325,32 @@ case 677: case 678: case_678(); break; -case 679: - case_679(); - break; -case 684: +case 683: #line 4715 "cs-parser.jay" { current_block.AddStatement ((Statement) yyVals[0+yyTop]); } break; -case 685: +case 684: #line 4719 "cs-parser.jay" { current_block.AddStatement ((Statement) yyVals[0+yyTop]); } break; +case 686: + case_686(); + break; case 687: case_687(); break; case 690: -#line 4743 "cs-parser.jay" +#line 4753 "cs-parser.jay" { current_block.AddStatement ((Statement) yyVals[0+yyTop]); } break; case 691: -#line 4747 "cs-parser.jay" +#line 4757 "cs-parser.jay" { current_block.AddStatement ((Statement) yyVals[0+yyTop]); } @@ -3385,13 +3383,13 @@ case 730: case_730(); break; case 731: -#line 4891 "cs-parser.jay" +#line 4901 "cs-parser.jay" { yyVal = new ComposedCast ((FullNamedExpression) yyVals[-1+yyTop], (ComposedTypeSpecifier) yyVals[0+yyTop]); } break; case 732: -#line 4895 "cs-parser.jay" +#line 4905 "cs-parser.jay" { yyVal = new ComposedCast (new TypeExpression (compiler.BuiltinTypes.Void, GetLocation (yyVals[-1+yyTop])), (ComposedTypeSpecifier) yyVals[0+yyTop]); } @@ -3403,7 +3401,7 @@ case 735: case_735(); break; case 736: -#line 4916 "cs-parser.jay" +#line 4926 "cs-parser.jay" { yyVal = ComposedTypeSpecifier.CreatePointer (GetLocation (yyVals[0+yyTop])); } @@ -3442,7 +3440,7 @@ case 754: case_754(); break; case 755: -#line 5041 "cs-parser.jay" +#line 5051 "cs-parser.jay" { report.Error (145, lexer.Location, "A const field requires a value to be provided"); } @@ -3463,15 +3461,15 @@ case 765: case_765(); break; case 766: -#line 5091 "cs-parser.jay" +#line 5101 "cs-parser.jay" { yyVal = yyVals[-1+yyTop]; } break; case 767: -#line 5095 "cs-parser.jay" +#line 5105 "cs-parser.jay" { yyVal = yyVals[-1+yyTop]; } break; case 768: -#line 5096 "cs-parser.jay" +#line 5106 "cs-parser.jay" { yyVal = yyVals[-1+yyTop]; } break; case 769: @@ -3490,7 +3488,7 @@ case 775: case_775(); break; case 776: -#line 5164 "cs-parser.jay" +#line 5174 "cs-parser.jay" { start_block (GetLocation (yyVals[0+yyTop])); } @@ -3511,13 +3509,13 @@ case 782: case_782(); break; case 783: -#line 5208 "cs-parser.jay" +#line 5218 "cs-parser.jay" { current_block = current_block.CreateSwitchBlock (lexer.Location); } break; case 784: -#line 5212 "cs-parser.jay" +#line 5222 "cs-parser.jay" { yyVal = new SwitchSection ((List<SwitchLabel>) yyVals[-2+yyTop], current_block); } @@ -3532,7 +3530,7 @@ case 787: case_787(); break; case 788: -#line 5241 "cs-parser.jay" +#line 5251 "cs-parser.jay" { yyVal = new SwitchLabel (null, GetLocation (yyVals[0+yyTop])); } @@ -3547,43 +3545,52 @@ case 795: case_795(); break; case 796: -#line 5280 "cs-parser.jay" +#line 5293 "cs-parser.jay" { yyVal = yyVals[0+yyTop]; } break; case 797: - case_797(); +#line 5301 "cs-parser.jay" + { + ((For) yyVals[-2+yyTop]).Initializer = (Statement) yyVals[-1+yyTop]; + } break; case 798: - case_798(); +#line 5305 "cs-parser.jay" + { + ((For) yyVals[-5+yyTop]).Condition = (BooleanExpression) yyVals[-1+yyTop]; + } break; case 799: - case_799(); +#line 5309 "cs-parser.jay" + { + ((For) yyVals[-8+yyTop]).Iterator = (Statement) yyVals[-1+yyTop]; + } break; case 800: -#line 5318 "cs-parser.jay" - { yyVal = new EmptyStatement (lexer.Location); } + case_800(); + break; +case 801: + case_801(); break; case 802: - case_802(); +#line 5329 "cs-parser.jay" + { yyVal = new EmptyStatement (lexer.Location); } break; -case 803: - case_803(); +case 804: + case_804(); break; case 805: -#line 5339 "cs-parser.jay" - { yyVal = null; } + case_805(); break; case 807: -#line 5344 "cs-parser.jay" - { yyVal = new EmptyStatement (lexer.Location); } - break; -case 811: - case_811(); +#line 5350 "cs-parser.jay" + { yyVal = null; } break; -case 812: - case_812(); +case 809: +#line 5355 "cs-parser.jay" + { yyVal = new EmptyStatement (lexer.Location); } break; case 813: case_813(); @@ -3591,11 +3598,11 @@ case 813: case 814: case_814(); break; -case 821: - case_821(); +case 815: + case_815(); break; -case 822: - case_822(); +case 816: + case_816(); break; case 823: case_823(); @@ -3618,17 +3625,17 @@ case 828: case 829: case_829(); break; -case 832: -#line 5499 "cs-parser.jay" - { - yyVal = new TryCatch ((Block) yyVals[-1+yyTop], (List<Catch>) yyVals[0+yyTop], GetLocation (yyVals[-2+yyTop]), false); - } +case 830: + case_830(); break; -case 833: - case_833(); +case 831: + case_831(); break; case 834: - case_834(); +#line 5510 "cs-parser.jay" + { + yyVal = new TryCatch ((Block) yyVals[-1+yyTop], (List<Catch>) yyVals[0+yyTop], GetLocation (yyVals[-2+yyTop]), false); + } break; case 835: case_835(); @@ -3639,50 +3646,50 @@ case 836: case 837: case_837(); break; -case 840: -#line 5552 "cs-parser.jay" - { - yyVal = new Catch ((Block) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); - } +case 838: + case_838(); break; -case 841: - case_841(); +case 839: + case_839(); break; case 842: -#line 5571 "cs-parser.jay" +#line 5563 "cs-parser.jay" { - yyVal = yyVals[-1+yyTop]; + yyVal = new Catch ((Block) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } break; case 843: case_843(); break; case 844: -#line 5589 "cs-parser.jay" +#line 5582 "cs-parser.jay" { - yyVal = new Checked ((Block) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); + yyVal = yyVals[-1+yyTop]; } break; case 845: -#line 5596 "cs-parser.jay" - { - yyVal = new Unchecked ((Block) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); - } + case_845(); break; case 846: - case_846(); +#line 5600 "cs-parser.jay" + { + yyVal = new Checked ((Block) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); + } break; case 847: -#line 5606 "cs-parser.jay" +#line 5607 "cs-parser.jay" { - yyVal = new Unsafe ((Block) yyVals[0+yyTop], GetLocation (yyVals[-2+yyTop])); + yyVal = new Unchecked ((Block) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } break; case 848: case_848(); break; case 849: - case_849(); +#line 5617 "cs-parser.jay" + { + yyVal = new Unsafe ((Block) yyVals[0+yyTop], GetLocation (yyVals[-2+yyTop])); + } break; case 850: case_850(); @@ -3702,20 +3709,20 @@ case 854: case 855: case_855(); break; +case 856: + case_856(); + break; case 857: case_857(); break; -case 858: -#line 5698 "cs-parser.jay" - { - Error_MissingInitializer (lexer.Location); - } - break; case 859: case_859(); break; case 860: - case_860(); +#line 5709 "cs-parser.jay" + { + Error_MissingInitializer (lexer.Location); + } break; case 861: case_861(); @@ -3739,16 +3746,13 @@ case 867: case_867(); break; case 868: -#line 5799 "cs-parser.jay" - { - current_block = new Linq.QueryBlock (current_block, lexer.Location); - } + case_868(); break; case 869: case_869(); break; case 870: -#line 5814 "cs-parser.jay" +#line 5810 "cs-parser.jay" { current_block = new Linq.QueryBlock (current_block, lexer.Location); } @@ -3757,22 +3761,25 @@ case 871: case_871(); break; case 872: - case_872(); +#line 5825 "cs-parser.jay" + { + current_block = new Linq.QueryBlock (current_block, lexer.Location); + } + break; +case 873: + case_873(); break; case 874: case_874(); break; -case 875: -#line 5859 "cs-parser.jay" - { - current_block = new Linq.QueryBlock (current_block, lexer.Location); - } - break; case 876: case_876(); break; case 877: - case_877(); +#line 5870 "cs-parser.jay" + { + current_block = new Linq.QueryBlock (current_block, lexer.Location); + } break; case 878: case_878(); @@ -3780,20 +3787,17 @@ case 878: case 879: case_879(); break; -case 883: - case_883(); +case 880: + case_880(); break; -case 889: -#line 5918 "cs-parser.jay" - { - current_block = new Linq.QueryBlock (current_block, lexer.Location); - } +case 881: + case_881(); break; -case 890: - case_890(); +case 885: + case_885(); break; case 891: -#line 5937 "cs-parser.jay" +#line 5929 "cs-parser.jay" { current_block = new Linq.QueryBlock (current_block, lexer.Location); } @@ -3802,7 +3806,10 @@ case 892: case_892(); break; case 893: - case_893(); +#line 5948 "cs-parser.jay" + { + current_block = new Linq.QueryBlock (current_block, lexer.Location); + } break; case 894: case_894(); @@ -3825,144 +3832,150 @@ case 899: case 900: case_900(); break; +case 901: + case_901(); + break; case 902: -#line 6081 "cs-parser.jay" + case_902(); + break; +case 904: +#line 6092 "cs-parser.jay" { yyVal = yyVals[0+yyTop]; } break; -case 903: -#line 6088 "cs-parser.jay" +case 905: +#line 6099 "cs-parser.jay" { current_block = new Linq.QueryBlock (current_block, lexer.Location); } break; -case 904: - case_904(); - break; case 906: case_906(); break; -case 907: - case_907(); +case 908: + case_908(); break; case 909: case_909(); break; -case 910: - case_910(); - break; case 911: -#line 6134 "cs-parser.jay" - { - yyVal = new Linq.OrderByAscending ((Linq.QueryBlock) current_block, (Expression)yyVals[0+yyTop]); - } + case_911(); break; case 912: case_912(); break; case 913: - case_913(); - break; -case 914: -#line 6151 "cs-parser.jay" +#line 6145 "cs-parser.jay" { - yyVal = new Linq.ThenByAscending ((Linq.QueryBlock) current_block, (Expression)yyVals[0+yyTop]); + yyVal = new Linq.OrderByAscending ((Linq.QueryBlock) current_block, (Expression)yyVals[0+yyTop]); } break; +case 914: + case_914(); + break; case 915: case_915(); break; case 916: - case_916(); +#line 6162 "cs-parser.jay" + { + yyVal = new Linq.ThenByAscending ((Linq.QueryBlock) current_block, (Expression)yyVals[0+yyTop]); + } + break; +case 917: + case_917(); break; case 918: case_918(); break; -case 919: - case_919(); +case 920: + case_920(); + break; +case 921: + case_921(); break; -case 922: - case_922(); +case 924: + case_924(); break; -case 923: - case_923(); +case 925: + case_925(); break; -case 931: -#line 6275 "cs-parser.jay" +case 933: +#line 6286 "cs-parser.jay" { module.DocumentationBuilder.ParsedName = (MemberName) yyVals[0+yyTop]; } break; -case 932: -#line 6282 "cs-parser.jay" +case 934: +#line 6293 "cs-parser.jay" { module.DocumentationBuilder.ParsedParameters = (List<DocumentationParameter>)yyVals[0+yyTop]; } break; -case 933: - case_933(); +case 935: + case_935(); break; -case 934: - case_934(); +case 936: + case_936(); break; -case 935: -#line 6299 "cs-parser.jay" +case 937: +#line 6310 "cs-parser.jay" { yyVal = new MemberName ((MemberName) yyVals[-2+yyTop], new MemberName (MemberCache.IndexerNameAlias)); } break; -case 936: -#line 6303 "cs-parser.jay" +case 938: +#line 6314 "cs-parser.jay" { valid_param_mod = ParameterModifierType.Ref | ParameterModifierType.Out; } break; -case 937: - case_937(); - break; -case 938: - case_938(); - break; case 939: case_939(); break; case 940: case_940(); break; +case 941: + case_941(); + break; case 942: -#line 6339 "cs-parser.jay" + case_942(); + break; +case 944: +#line 6350 "cs-parser.jay" { yyVal = new MemberName (((MemberName) yyVals[-2+yyTop]), (MemberName) yyVals[0+yyTop]); } break; -case 944: -#line 6347 "cs-parser.jay" +case 946: +#line 6358 "cs-parser.jay" { valid_param_mod = ParameterModifierType.Ref | ParameterModifierType.Out; } break; -case 945: -#line 6351 "cs-parser.jay" +case 947: +#line 6362 "cs-parser.jay" { yyVal = yyVals[-1+yyTop]; } break; -case 946: -#line 6358 "cs-parser.jay" +case 948: +#line 6369 "cs-parser.jay" { yyVal = new List<DocumentationParameter> (0); } break; -case 948: - case_948(); - break; -case 949: - case_949(); - break; case 950: case_950(); break; +case 951: + case_951(); + break; +case 952: + case_952(); + break; #line default } yyTop -= yyLen[yyN]; @@ -3999,7 +4012,7 @@ case 950: All more than 3 lines long rules are wrapped into a method */ void case_6() -#line 410 "cs-parser.jay" +#line 409 "cs-parser.jay" { if (yyVals[0+yyTop] != null) { Attributes attrs = (Attributes) yyVals[0+yyTop]; @@ -4009,7 +4022,7 @@ void case_6() } void case_8() -#line 422 "cs-parser.jay" +#line 421 "cs-parser.jay" { if (yyToken == Token.EXTERN_ALIAS) report.Error (439, lexer.Location, "An extern alias declaration must precede all other elements"); @@ -4018,7 +4031,7 @@ void case_8() } void case_13() -#line 442 "cs-parser.jay" +#line 441 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[-2+yyTop]; string s = lt.Value; @@ -4034,21 +4047,21 @@ void case_13() } void case_17() -#line 468 "cs-parser.jay" +#line 467 "cs-parser.jay" { if (doc_support) Lexer.doc_state = XmlCommentState.Allowed; } void case_18() -#line 473 "cs-parser.jay" +#line 472 "cs-parser.jay" { if (doc_support) Lexer.doc_state = XmlCommentState.Allowed; } void case_19() -#line 481 "cs-parser.jay" +#line 480 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[-3+yyTop]; if (lang_version != LanguageVersion.ISO_1 && lt.Value == "global") { @@ -4061,21 +4074,21 @@ void case_19() } void case_20() -#line 492 "cs-parser.jay" +#line 491 "cs-parser.jay" { Error_SyntaxError (yyToken); yyVal = null; } void case_21() -#line 500 "cs-parser.jay" +#line 499 "cs-parser.jay" { current_namespace.AddUsing ((MemberName) yyVals[-1+yyTop], GetLocation (yyVals[-2+yyTop])); ubag.AddUsing (GetLocation (yyVals[-2+yyTop]), (MemberName) yyVals[-1+yyTop], GetLocation (yyVals[0+yyTop])); } void case_22() -#line 513 "cs-parser.jay" +#line 512 "cs-parser.jay" { Attributes attrs = (Attributes) yyVals[-2+yyTop]; MemberName name = (MemberName) yyVals[0+yyTop]; @@ -4108,7 +4121,7 @@ void case_22() } void case_23() -#line 544 "cs-parser.jay" +#line 543 "cs-parser.jay" { if (doc_support) Lexer.doc_state = XmlCommentState.Allowed; @@ -4116,7 +4129,7 @@ void case_23() } void case_24() -#line 550 "cs-parser.jay" +#line 549 "cs-parser.jay" { current_namespace = current_namespace.Parent; current_class = current_namespace.SlaveDeclSpace; @@ -4129,14 +4142,14 @@ void case_24() } void case_25() -#line 564 "cs-parser.jay" +#line 563 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[0+yyTop]; yyVal = new MemberName (lt.Value, lt.Location); } void case_26() -#line 569 "cs-parser.jay" +#line 568 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[0+yyTop]; yyVal = new MemberName ((MemberName) yyVals[-2+yyTop], lt.Value, lt.Location) { @@ -4145,14 +4158,14 @@ void case_26() } void case_27() -#line 576 "cs-parser.jay" +#line 575 "cs-parser.jay" { Error_SyntaxError (yyToken); yyVal = new MemberName ("<invalid>", lexer.Location); } void case_32() -#line 594 "cs-parser.jay" +#line 593 "cs-parser.jay" { MemberName name = (MemberName) yyVals[0+yyTop]; @@ -4163,7 +4176,7 @@ void case_32() } void case_41() -#line 626 "cs-parser.jay" +#line 625 "cs-parser.jay" { if (yyVals[0+yyTop] != null) { TypeContainer ds = (TypeContainer)yyVals[0+yyTop]; @@ -4184,7 +4197,7 @@ void case_41() } void case_50() -#line 676 "cs-parser.jay" +#line 675 "cs-parser.jay" { var sect = (List<Attribute>) yyVals[0+yyTop]; yyVal = new Attributes (sect); @@ -4197,7 +4210,7 @@ void case_50() } void case_51() -#line 687 "cs-parser.jay" +#line 686 "cs-parser.jay" { Attributes attrs = yyVals[-1+yyTop] as Attributes; var sect = (List<Attribute>) yyVals[0+yyTop]; @@ -4212,21 +4225,21 @@ void case_51() } void case_52() -#line 703 "cs-parser.jay" +#line 702 "cs-parser.jay" { lexer.parsing_attribute_section = true; savedOpenLocation = GetLocation (yyVals[0+yyTop]); } void case_53() -#line 708 "cs-parser.jay" +#line 707 "cs-parser.jay" { lexer.parsing_attribute_section = false; yyVal = yyVals[0+yyTop]; } void case_54() -#line 716 "cs-parser.jay" +#line 715 "cs-parser.jay" { current_attr_target = (string) yyVals[-1+yyTop]; if (current_attr_target == "assembly" || current_attr_target == "module") { @@ -4235,7 +4248,7 @@ void case_54() } void case_55() -#line 723 "cs-parser.jay" +#line 722 "cs-parser.jay" { /* when attribute target is invalid*/ if (current_attr_target == string.Empty) @@ -4253,7 +4266,7 @@ void case_55() } void case_56() -#line 739 "cs-parser.jay" +#line 738 "cs-parser.jay" { yyVal = yyVals[-2+yyTop]; if (yyVals[-1+yyTop] != null) { @@ -4264,7 +4277,7 @@ void case_56() } void case_57() -#line 751 "cs-parser.jay" +#line 750 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[0+yyTop]; yyVal = CheckAttributeTarget (lt.Value, lt.Location); @@ -4272,7 +4285,7 @@ void case_57() } void case_60() -#line 759 "cs-parser.jay" +#line 758 "cs-parser.jay" { if (yyToken == Token.IDENTIFIER) { Error_SyntaxError (yyToken); @@ -4284,7 +4297,7 @@ void case_60() } void case_62() -#line 776 "cs-parser.jay" +#line 775 "cs-parser.jay" { var attrs = (List<Attribute>) yyVals[-2+yyTop]; attrs.Add ((Attribute) yyVals[0+yyTop]); @@ -4294,7 +4307,7 @@ void case_62() } void case_64() -#line 791 "cs-parser.jay" +#line 790 "cs-parser.jay" { --lexer.parsing_block; MemberName mname = (MemberName) yyVals[-2+yyTop]; @@ -4315,7 +4328,7 @@ void case_64() } void case_67() -#line 818 "cs-parser.jay" +#line 817 "cs-parser.jay" { savedAttrParenOpenLocation = GetLocation (yyVals[-2+yyTop]); savedAttrParenCloseLocation = GetLocation (yyVals[0+yyTop]); @@ -4323,7 +4336,7 @@ void case_67() } void case_69() -#line 829 "cs-parser.jay" +#line 828 "cs-parser.jay" { Arguments a = new Arguments (4); a.Add ((Argument) yyVals[0+yyTop]); @@ -4331,7 +4344,7 @@ void case_69() } void case_70() -#line 835 "cs-parser.jay" +#line 834 "cs-parser.jay" { Arguments a = new Arguments (4); a.Add ((Argument) yyVals[0+yyTop]); @@ -4339,7 +4352,7 @@ void case_70() } void case_71() -#line 841 "cs-parser.jay" +#line 840 "cs-parser.jay" { Arguments[] o = (Arguments[]) yyVals[-2+yyTop]; if (o [1] != null) { @@ -4356,7 +4369,7 @@ void case_71() } void case_72() -#line 856 "cs-parser.jay" +#line 855 "cs-parser.jay" { Arguments[] o = (Arguments[]) yyVals[-2+yyTop]; if (o [1] == null) { @@ -4368,7 +4381,7 @@ void case_72() } void case_76() -#line 881 "cs-parser.jay" +#line 880 "cs-parser.jay" { --lexer.parsing_block; var lt = (Tokenizer.LocatedToken) yyVals[-3+yyTop]; @@ -4377,7 +4390,7 @@ void case_76() } void case_77() -#line 891 "cs-parser.jay" +#line 890 "cs-parser.jay" { if (lang_version <= LanguageVersion.V_3) FeatureIsNotAvailable (GetLocation (yyVals[-3+yyTop]), "named argument"); @@ -4391,7 +4404,7 @@ void case_77() } void case_95() -#line 944 "cs-parser.jay" +#line 943 "cs-parser.jay" { report.Error (1519, lexer.Location, "Unexpected symbol `{0}' in class, struct, or interface member declaration", GetSymbolName (yyToken)); @@ -4400,7 +4413,7 @@ void case_95() } void case_97() -#line 961 "cs-parser.jay" +#line 960 "cs-parser.jay" { MemberName name = MakeName ((MemberName) yyVals[0+yyTop]); push_current_class (new Struct (current_namespace, current_class, name, (Modifiers) yyVals[-4+yyTop], (Attributes) yyVals[-5+yyTop]), yyVals[-3+yyTop]); @@ -4408,7 +4421,7 @@ void case_97() } void case_98() -#line 968 "cs-parser.jay" +#line 967 "cs-parser.jay" { lexer.ConstraintsParsing = false; @@ -4422,14 +4435,14 @@ void case_98() } void case_99() -#line 980 "cs-parser.jay" +#line 979 "cs-parser.jay" { if (doc_support) Lexer.doc_state = XmlCommentState.Allowed; } void case_100() -#line 985 "cs-parser.jay" +#line 984 "cs-parser.jay" { lbag.AppendToMember (current_class, GetLocation (yyVals[-3+yyTop]), GetLocation (yyVals[-1+yyTop])); --lexer.parsing_declaration; @@ -4438,7 +4451,7 @@ void case_100() } void case_101() -#line 992 "cs-parser.jay" +#line 991 "cs-parser.jay" { if (yyVals[-1+yyTop] != null) current_class.OptionalSemicolon = GetLocation (yyVals[-1+yyTop]); @@ -4446,7 +4459,7 @@ void case_101() } void case_103() -#line 1007 "cs-parser.jay" +#line 1006 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[0+yyTop]; var mod = (Modifiers) yyVals[-3+yyTop]; @@ -4461,7 +4474,7 @@ void case_103() } void case_104() -#line 1020 "cs-parser.jay" +#line 1019 "cs-parser.jay" { if (doc_support) { current_field.DocComment = Lexer.consume_doc_comment (); @@ -4474,7 +4487,7 @@ void case_104() } void case_109() -#line 1050 "cs-parser.jay" +#line 1049 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[-1+yyTop]; yyVal = new FieldDeclarator (new SimpleMemberName (lt.Value, lt.Location), (ConstInitializer) yyVals[0+yyTop]); @@ -4482,7 +4495,7 @@ void case_109() } void case_111() -#line 1063 "cs-parser.jay" +#line 1062 "cs-parser.jay" { --lexer.parsing_block; yyVal = new ConstInitializer (current_field, (Expression) yyVals[0+yyTop], GetLocation (yyVals[-2+yyTop])); @@ -4490,14 +4503,14 @@ void case_111() } void case_112() -#line 1069 "cs-parser.jay" +#line 1068 "cs-parser.jay" { report.Error (145, lexer.Location, "A const field requires a value to be provided"); yyVal = null; } void case_115() -#line 1084 "cs-parser.jay" +#line 1083 "cs-parser.jay" { lexer.parsing_generic_declaration = false; @@ -4512,7 +4525,7 @@ void case_115() } void case_116() -#line 1099 "cs-parser.jay" +#line 1098 "cs-parser.jay" { if (doc_support) { current_field.DocComment = Lexer.consume_doc_comment (); @@ -4525,7 +4538,7 @@ void case_116() } void case_117() -#line 1112 "cs-parser.jay" +#line 1111 "cs-parser.jay" { if (lang_version < LanguageVersion.ISO_2) FeatureIsNotAvailable (GetLocation (yyVals[-2+yyTop]), "fixed size buffers"); @@ -4538,7 +4551,7 @@ void case_117() } void case_118() -#line 1123 "cs-parser.jay" +#line 1122 "cs-parser.jay" { if (doc_support) { current_field.DocComment = Lexer.consume_doc_comment (); @@ -4552,7 +4565,7 @@ void case_118() } void case_121() -#line 1146 "cs-parser.jay" +#line 1145 "cs-parser.jay" { ++lexer.parsing_block; current_local_parameters = ParametersCompiled.EmptyReadOnlyParameters; @@ -4560,7 +4573,7 @@ void case_121() } void case_122() -#line 1152 "cs-parser.jay" +#line 1151 "cs-parser.jay" { --lexer.parsing_block; current_field.Initializer = (Expression) yyVals[0+yyTop]; @@ -4570,7 +4583,7 @@ void case_122() } void case_127() -#line 1179 "cs-parser.jay" +#line 1178 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[0+yyTop]; yyVal = new FieldDeclarator (new SimpleMemberName (lt.Value, lt.Location), null); @@ -4578,7 +4591,7 @@ void case_127() } void case_129() -#line 1189 "cs-parser.jay" +#line 1188 "cs-parser.jay" { --lexer.parsing_block; var lt = (Tokenizer.LocatedToken) yyVals[-3+yyTop]; @@ -4587,7 +4600,7 @@ void case_129() } void case_134() -#line 1215 "cs-parser.jay" +#line 1214 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[-1+yyTop]; yyVal = new FieldDeclarator (new SimpleMemberName (lt.Value, lt.Location), (ConstInitializer) yyVals[0+yyTop]); @@ -4595,7 +4608,7 @@ void case_134() } void case_136() -#line 1228 "cs-parser.jay" +#line 1227 "cs-parser.jay" { --lexer.parsing_block; yyVal = new ConstInitializer (current_field, (Expression) yyVals[-1+yyTop], GetLocation (yyVals[-3+yyTop])); @@ -4603,14 +4616,14 @@ void case_136() } void case_137() -#line 1234 "cs-parser.jay" +#line 1233 "cs-parser.jay" { report.Error (443, lexer.Location, "Value or constant expected"); yyVal = null; } void case_140() -#line 1244 "cs-parser.jay" +#line 1243 "cs-parser.jay" { /* It has to be here for the parent to safely restore artificial block*/ Error_SyntaxError (yyToken); @@ -4618,7 +4631,7 @@ void case_140() } void case_141() -#line 1253 "cs-parser.jay" +#line 1252 "cs-parser.jay" { if (doc_support) Lexer.doc_state = XmlCommentState.NotAllowed; @@ -4630,7 +4643,7 @@ void case_141() } void case_142() -#line 1263 "cs-parser.jay" +#line 1262 "cs-parser.jay" { Method method = (Method) yyVals[-2+yyTop]; method.Block = (ToplevelBlock) yyVals[0+yyTop]; @@ -4658,7 +4671,7 @@ void case_142() } void case_145() -#line 1303 "cs-parser.jay" +#line 1302 "cs-parser.jay" { lexer.ConstraintsParsing = false; valid_param_mod = 0; @@ -4687,14 +4700,14 @@ void case_145() } void case_147() -#line 1338 "cs-parser.jay" +#line 1337 "cs-parser.jay" { lexer.parsing_generic_declaration = false; valid_param_mod = ParameterModifierType.All; } void case_149() -#line 1347 "cs-parser.jay" +#line 1346 "cs-parser.jay" { lexer.ConstraintsParsing = false; valid_param_mod = 0; @@ -4730,7 +4743,7 @@ void case_149() } void case_150() -#line 1384 "cs-parser.jay" +#line 1383 "cs-parser.jay" { MemberName name = (MemberName) yyVals[-3+yyTop]; report.Error (1585, name.Location, @@ -4748,7 +4761,7 @@ void case_150() } void case_155() -#line 1413 "cs-parser.jay" +#line 1412 "cs-parser.jay" { var pars_list = (List<Parameter>) yyVals[0+yyTop]; yyVal = new ParametersCompiled (pars_list.ToArray ()); @@ -4756,7 +4769,7 @@ void case_155() } void case_156() -#line 1419 "cs-parser.jay" +#line 1418 "cs-parser.jay" { var pars_list = (List<Parameter>) yyVals[-2+yyTop]; pars_list.Add ((Parameter) yyVals[0+yyTop]); @@ -4767,7 +4780,7 @@ void case_156() } void case_157() -#line 1428 "cs-parser.jay" +#line 1427 "cs-parser.jay" { var pars_list = (List<Parameter>) yyVals[-2+yyTop]; pars_list.Add (new ArglistParameter (GetLocation (yyVals[0+yyTop]))); @@ -4778,7 +4791,7 @@ void case_157() } void case_158() -#line 1437 "cs-parser.jay" +#line 1436 "cs-parser.jay" { if (yyVals[-2+yyTop] != null) report.Error (231, ((Parameter) yyVals[-2+yyTop]).Location, "A params parameter must be the last parameter in a formal parameter list"); @@ -4788,7 +4801,7 @@ void case_158() } void case_159() -#line 1445 "cs-parser.jay" +#line 1444 "cs-parser.jay" { if (yyVals[-2+yyTop] != null) report.Error (231, ((Parameter) yyVals[-2+yyTop]).Location, "A params parameter must be the last parameter in a formal parameter list"); @@ -4803,7 +4816,7 @@ void case_159() } void case_160() -#line 1458 "cs-parser.jay" +#line 1457 "cs-parser.jay" { report.Error (257, GetLocation (yyVals[-2+yyTop]), "An __arglist parameter must be the last parameter in a formal parameter list"); @@ -4812,7 +4825,7 @@ void case_160() } void case_161() -#line 1465 "cs-parser.jay" +#line 1464 "cs-parser.jay" { report.Error (257, GetLocation (yyVals[-2+yyTop]), "An __arglist parameter must be the last parameter in a formal parameter list"); @@ -4826,14 +4839,14 @@ void case_161() } void case_164() -#line 1485 "cs-parser.jay" +#line 1484 "cs-parser.jay" { Error_SyntaxError (yyToken); yyVal = ParametersCompiled.EmptyReadOnlyParameters; } void case_165() -#line 1493 "cs-parser.jay" +#line 1492 "cs-parser.jay" { parameters_bucket.Clear (); Parameter p = (Parameter) yyVals[0+yyTop]; @@ -4844,7 +4857,7 @@ void case_165() } void case_166() -#line 1502 "cs-parser.jay" +#line 1501 "cs-parser.jay" { var pars = (List<Parameter>) yyVals[-2+yyTop]; Parameter p = (Parameter) yyVals[0+yyTop]; @@ -4864,7 +4877,7 @@ void case_166() } void case_167() -#line 1526 "cs-parser.jay" +#line 1525 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[0+yyTop]; yyVal = new Parameter ((FullNamedExpression) yyVals[-1+yyTop], lt.Value, (Parameter.Modifier) yyVals[-2+yyTop], (Attributes) yyVals[-3+yyTop], lt.Location); @@ -4872,7 +4885,7 @@ void case_167() } void case_168() -#line 1535 "cs-parser.jay" +#line 1534 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[-2+yyTop]; report.Error (1552, lt.Location, "Array type specifier, [], must appear before parameter name"); @@ -4881,7 +4894,7 @@ void case_168() } void case_169() -#line 1545 "cs-parser.jay" +#line 1544 "cs-parser.jay" { Error_SyntaxError (yyToken); Location l = GetLocation (yyVals[0+yyTop]); @@ -4890,7 +4903,7 @@ void case_169() } void case_171() -#line 1560 "cs-parser.jay" +#line 1559 "cs-parser.jay" { --lexer.parsing_block; if (lang_version <= LanguageVersion.V_3) { @@ -4929,7 +4942,7 @@ void case_171() } void case_175() -#line 1609 "cs-parser.jay" +#line 1608 "cs-parser.jay" { Parameter.Modifier p2 = (Parameter.Modifier)yyVals[0+yyTop]; Parameter.Modifier mod = (Parameter.Modifier)yyVals[-1+yyTop] | p2; @@ -4952,7 +4965,7 @@ void case_175() } void case_176() -#line 1633 "cs-parser.jay" +#line 1632 "cs-parser.jay" { if ((valid_param_mod & ParameterModifierType.Ref) == 0) Error_ParameterModifierNotValid ("ref", GetLocation (yyVals[0+yyTop])); @@ -4961,7 +4974,7 @@ void case_176() } void case_177() -#line 1640 "cs-parser.jay" +#line 1639 "cs-parser.jay" { if ((valid_param_mod & ParameterModifierType.Out) == 0) Error_ParameterModifierNotValid ("out", GetLocation (yyVals[0+yyTop])); @@ -4970,7 +4983,7 @@ void case_177() } void case_178() -#line 1647 "cs-parser.jay" +#line 1646 "cs-parser.jay" { if ((valid_param_mod & ParameterModifierType.This) == 0) Error_ParameterModifierNotValid ("this", GetLocation (yyVals[0+yyTop])); @@ -4982,7 +4995,7 @@ void case_178() } void case_179() -#line 1660 "cs-parser.jay" +#line 1659 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[0+yyTop]; yyVal = new ParamsParameter ((FullNamedExpression) yyVals[-1+yyTop], lt.Value, (Attributes) yyVals[-3+yyTop], lt.Location); @@ -4990,7 +5003,7 @@ void case_179() } void case_180() -#line 1666 "cs-parser.jay" +#line 1665 "cs-parser.jay" { report.Error (1751, GetLocation (yyVals[-4+yyTop]), "Cannot specify a default value for a parameter array"); @@ -5000,14 +5013,14 @@ void case_180() } void case_181() -#line 1674 "cs-parser.jay" +#line 1673 "cs-parser.jay" { Error_SyntaxError (yyToken); yyVal = null; } void case_182() -#line 1682 "cs-parser.jay" +#line 1681 "cs-parser.jay" { if ((valid_param_mod & ParameterModifierType.Params) == 0) report.Error (1670, (GetLocation (yyVals[0+yyTop])), "The `params' modifier is not allowed in current context"); @@ -5015,7 +5028,7 @@ void case_182() } void case_183() -#line 1688 "cs-parser.jay" +#line 1687 "cs-parser.jay" { Parameter.Modifier mod = (Parameter.Modifier)yyVals[0+yyTop]; if ((mod & Parameter.Modifier.This) != 0) { @@ -5027,21 +5040,21 @@ void case_183() } void case_185() -#line 1705 "cs-parser.jay" +#line 1704 "cs-parser.jay" { if ((valid_param_mod & ParameterModifierType.Arglist) == 0) report.Error (1669, GetLocation (yyVals[0+yyTop]), "__arglist is not valid in this context"); } void case_186() -#line 1716 "cs-parser.jay" +#line 1715 "cs-parser.jay" { if (doc_support) tmpComment = Lexer.consume_doc_comment (); } void case_187() -#line 1721 "cs-parser.jay" +#line 1720 "cs-parser.jay" { var type = (FullNamedExpression) yyVals[-3+yyTop]; current_property = new Property (current_class, type, (Modifiers) yyVals[-4+yyTop], @@ -5057,7 +5070,7 @@ void case_187() } void case_188() -#line 1735 "cs-parser.jay" +#line 1734 "cs-parser.jay" { lexer.PropertyParsing = false; @@ -5066,14 +5079,14 @@ void case_188() } void case_189() -#line 1742 "cs-parser.jay" +#line 1741 "cs-parser.jay" { lbag.AppendToMember (current_property, GetLocation (yyVals[0+yyTop])); current_property = null; } void case_191() -#line 1756 "cs-parser.jay" +#line 1755 "cs-parser.jay" { valid_param_mod = 0; var type = (FullNamedExpression) yyVals[-6+yyTop]; @@ -5100,7 +5113,7 @@ void case_191() } void case_193() -#line 1785 "cs-parser.jay" +#line 1784 "cs-parser.jay" { if (current_property.AccessorFirst != null && current_property.AccessorFirst.Block == null) ((Indexer) current_property).ParameterInfo.CheckParameters (current_property); @@ -5113,7 +5126,7 @@ void case_193() } void case_198() -#line 1804 "cs-parser.jay" +#line 1803 "cs-parser.jay" { if (yyToken == Token.CLOSE_BRACE) { report.Error (548, lexer.Location, "`{0}': property or indexer must have at least one accessor", current_property.GetSignatureForError ()); @@ -5126,7 +5139,7 @@ void case_198() } void case_199() -#line 1818 "cs-parser.jay" +#line 1817 "cs-parser.jay" { if (yyVals[-1+yyTop] != ModifierNone && lang_version == LanguageVersion.ISO_1) { FeatureIsNotAvailable (GetLocation (yyVals[-1+yyTop]), "access modifiers on properties"); @@ -5149,7 +5162,7 @@ void case_199() } void case_200() -#line 1839 "cs-parser.jay" +#line 1838 "cs-parser.jay" { if (yyVals[0+yyTop] != null) { current_property.Get.Block = (ToplevelBlock) yyVals[0+yyTop]; @@ -5172,7 +5185,7 @@ void case_200() } void case_201() -#line 1863 "cs-parser.jay" +#line 1862 "cs-parser.jay" { if (yyVals[-1+yyTop] != ModifierNone && lang_version == LanguageVersion.ISO_1) { FeatureIsNotAvailable (GetLocation (yyVals[-1+yyTop]), "access modifiers on properties"); @@ -5200,7 +5213,7 @@ void case_201() } void case_202() -#line 1889 "cs-parser.jay" +#line 1888 "cs-parser.jay" { if (yyVals[0+yyTop] != null) { current_property.Set.Block = (ToplevelBlock) yyVals[0+yyTop]; @@ -5223,21 +5236,21 @@ void case_202() } void case_204() -#line 1914 "cs-parser.jay" +#line 1913 "cs-parser.jay" { savedLocation = GetLocation (yyVals[0+yyTop]); yyVal = null; } void case_205() -#line 1919 "cs-parser.jay" +#line 1918 "cs-parser.jay" { Error_SyntaxError (1043, yyToken, "Invalid accessor body"); yyVal = null; } void case_207() -#line 1934 "cs-parser.jay" +#line 1933 "cs-parser.jay" { MemberName name = MakeName ((MemberName) yyVals[0+yyTop]); push_current_class (new Interface (current_namespace, current_class, name, (Modifiers) yyVals[-4+yyTop], (Attributes) yyVals[-5+yyTop]), yyVals[-3+yyTop]); @@ -5245,7 +5258,7 @@ void case_207() } void case_208() -#line 1941 "cs-parser.jay" +#line 1940 "cs-parser.jay" { lexer.ConstraintsParsing = false; @@ -5260,7 +5273,7 @@ void case_208() } void case_209() -#line 1954 "cs-parser.jay" +#line 1953 "cs-parser.jay" { --lexer.parsing_declaration; if (doc_support) @@ -5268,7 +5281,7 @@ void case_209() } void case_210() -#line 1960 "cs-parser.jay" +#line 1959 "cs-parser.jay" { if (yyVals[0+yyTop] != null) current_class.OptionalSemicolon = GetLocation (yyVals[0+yyTop]); @@ -5277,7 +5290,7 @@ void case_210() } void case_226() -#line 2020 "cs-parser.jay" +#line 2019 "cs-parser.jay" { OperatorDeclaration decl = (OperatorDeclaration) yyVals[-2+yyTop]; if (decl != null) { @@ -5307,14 +5320,14 @@ void case_226() } void case_230() -#line 2057 "cs-parser.jay" +#line 2056 "cs-parser.jay" { report.Error (590, GetLocation (yyVals[0+yyTop]), "User-defined operators cannot return void"); yyVal = new TypeExpression (compiler.BuiltinTypes.Void, GetLocation (yyVals[0+yyTop])); } void case_232() -#line 2069 "cs-parser.jay" +#line 2068 "cs-parser.jay" { valid_param_mod = 0; @@ -5356,7 +5369,7 @@ void case_232() } void case_257() -#line 2145 "cs-parser.jay" +#line 2144 "cs-parser.jay" { valid_param_mod = 0; @@ -5373,7 +5386,7 @@ void case_257() } void case_259() -#line 2164 "cs-parser.jay" +#line 2163 "cs-parser.jay" { valid_param_mod = 0; @@ -5390,7 +5403,7 @@ void case_259() } void case_260() -#line 2179 "cs-parser.jay" +#line 2178 "cs-parser.jay" { Error_SyntaxError (yyToken); current_local_parameters = ParametersCompiled.EmptyReadOnlyParameters; @@ -5398,7 +5411,7 @@ void case_260() } void case_261() -#line 2185 "cs-parser.jay" +#line 2184 "cs-parser.jay" { Error_SyntaxError (yyToken); current_local_parameters = ParametersCompiled.EmptyReadOnlyParameters; @@ -5406,7 +5419,7 @@ void case_261() } void case_262() -#line 2195 "cs-parser.jay" +#line 2194 "cs-parser.jay" { Constructor c = (Constructor) yyVals[-1+yyTop]; c.Block = (ToplevelBlock) yyVals[0+yyTop]; @@ -5422,7 +5435,7 @@ void case_262() } void case_263() -#line 2214 "cs-parser.jay" +#line 2213 "cs-parser.jay" { if (doc_support) { tmpComment = Lexer.consume_doc_comment (); @@ -5433,7 +5446,7 @@ void case_263() } void case_264() -#line 2223 "cs-parser.jay" +#line 2222 "cs-parser.jay" { valid_param_mod = 0; current_local_parameters = (ParametersCompiled) yyVals[-1+yyTop]; @@ -5446,7 +5459,7 @@ void case_264() } void case_265() -#line 2234 "cs-parser.jay" +#line 2233 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[-6+yyTop]; var mods = (Modifiers) yyVals[-7+yyTop]; @@ -5476,7 +5489,7 @@ void case_265() } void case_271() -#line 2279 "cs-parser.jay" +#line 2278 "cs-parser.jay" { --lexer.parsing_block; yyVal = new ConstructorBaseInitializer ((Arguments) yyVals[-1+yyTop], GetLocation (yyVals[-4+yyTop])); @@ -5484,7 +5497,7 @@ void case_271() } void case_273() -#line 2289 "cs-parser.jay" +#line 2288 "cs-parser.jay" { --lexer.parsing_block; yyVal = new ConstructorThisInitializer ((Arguments) yyVals[-1+yyTop], GetLocation (yyVals[-4+yyTop])); @@ -5492,14 +5505,14 @@ void case_273() } void case_274() -#line 2295 "cs-parser.jay" +#line 2294 "cs-parser.jay" { Error_SyntaxError (yyToken); yyVal = null; } void case_275() -#line 2303 "cs-parser.jay" +#line 2302 "cs-parser.jay" { if (doc_support) { tmpComment = Lexer.consume_doc_comment (); @@ -5510,7 +5523,7 @@ void case_275() } void case_276() -#line 2312 "cs-parser.jay" +#line 2311 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[-3+yyTop]; if (lt.Value != current_container.MemberName.Name){ @@ -5532,7 +5545,7 @@ void case_276() } void case_277() -#line 2337 "cs-parser.jay" +#line 2336 "cs-parser.jay" { current_event_field = new EventField (current_class, (FullNamedExpression) yyVals[-1+yyTop], (Modifiers) yyVals[-3+yyTop], (MemberName) yyVals[0+yyTop], (Attributes) yyVals[-4+yyTop]); current_container.AddEvent (current_event_field); @@ -5546,7 +5559,7 @@ void case_277() } void case_278() -#line 2351 "cs-parser.jay" +#line 2350 "cs-parser.jay" { if (doc_support) { current_event_field.DocComment = Lexer.consume_doc_comment (); @@ -5558,7 +5571,7 @@ void case_278() } void case_279() -#line 2364 "cs-parser.jay" +#line 2363 "cs-parser.jay" { current_event = new EventProperty (current_class, (FullNamedExpression) yyVals[-2+yyTop], (Modifiers) yyVals[-4+yyTop], (MemberName) yyVals[-1+yyTop], (Attributes) yyVals[-5+yyTop]); current_container.AddEvent (current_event); @@ -5568,7 +5581,7 @@ void case_279() } void case_280() -#line 2372 "cs-parser.jay" +#line 2371 "cs-parser.jay" { if (current_container.Kind == MemberKind.Interface) report.Error (69, GetLocation (yyVals[-2+yyTop]), "Event in interface cannot have add or remove accessors"); @@ -5577,7 +5590,7 @@ void case_280() } void case_281() -#line 2379 "cs-parser.jay" +#line 2378 "cs-parser.jay" { if (doc_support) { current_event.DocComment = Lexer.consume_doc_comment (); @@ -5590,14 +5603,14 @@ void case_281() } void case_284() -#line 2398 "cs-parser.jay" +#line 2397 "cs-parser.jay" { --lexer.parsing_block; current_event_field.Initializer = (Expression) yyVals[0+yyTop]; } void case_289() -#line 2422 "cs-parser.jay" +#line 2421 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[0+yyTop]; yyVal = new FieldDeclarator (new SimpleMemberName (lt.Value, lt.Location), null); @@ -5605,7 +5618,7 @@ void case_289() } void case_291() -#line 2432 "cs-parser.jay" +#line 2431 "cs-parser.jay" { --lexer.parsing_block; var lt = (Tokenizer.LocatedToken) yyVals[-3+yyTop]; @@ -5614,7 +5627,7 @@ void case_291() } void case_292() -#line 2441 "cs-parser.jay" +#line 2440 "cs-parser.jay" { if (current_container.Kind == MemberKind.Interface) { report.Error (68, lexer.Location, "`{0}': event in interface cannot have an initializer", @@ -5628,28 +5641,28 @@ void case_292() } void case_296() -#line 2462 "cs-parser.jay" +#line 2461 "cs-parser.jay" { report.Error (65, lexer.Location, "`{0}': event property must have both add and remove accessors", current_event.GetSignatureForError ()); } void case_297() -#line 2467 "cs-parser.jay" +#line 2466 "cs-parser.jay" { report.Error (65, lexer.Location, "`{0}': event property must have both add and remove accessors", current_event.GetSignatureForError ()); } void case_298() -#line 2472 "cs-parser.jay" +#line 2471 "cs-parser.jay" { report.Error (1055, GetLocation (yyVals[0+yyTop]), "An add or remove accessor expected"); yyVal = null; } void case_299() -#line 2480 "cs-parser.jay" +#line 2479 "cs-parser.jay" { if (yyVals[-1+yyTop] != ModifierNone) { report.Error (1609, GetLocation (yyVals[-1+yyTop]), "Modifiers cannot be placed on event accessor declarations"); @@ -5663,7 +5676,7 @@ void case_299() } void case_300() -#line 2492 "cs-parser.jay" +#line 2491 "cs-parser.jay" { lexer.EventParsing = true; @@ -5678,7 +5691,7 @@ void case_300() } void case_301() -#line 2508 "cs-parser.jay" +#line 2507 "cs-parser.jay" { if (yyVals[-1+yyTop] != ModifierNone) { report.Error (1609, GetLocation (yyVals[-1+yyTop]), "Modifiers cannot be placed on event accessor declarations"); @@ -5692,7 +5705,7 @@ void case_301() } void case_302() -#line 2520 "cs-parser.jay" +#line 2519 "cs-parser.jay" { lexer.EventParsing = true; @@ -5707,35 +5720,39 @@ void case_302() } void case_303() -#line 2536 "cs-parser.jay" +#line 2535 "cs-parser.jay" { report.Error (73, lexer.Location, "An add or remove accessor must have a body"); yyVal = null; } -void case_306() -#line 2552 "cs-parser.jay" +void case_305() +#line 2548 "cs-parser.jay" { if (doc_support) enumTypeComment = Lexer.consume_doc_comment (); } -void case_307() -#line 2557 "cs-parser.jay" +void case_306() +#line 2553 "cs-parser.jay" { if (doc_support) Lexer.doc_state = XmlCommentState.Allowed; - enumCommas.Add (GetLocation (yyVals[0+yyTop])); MemberName name = (MemberName) yyVals[-3+yyTop]; if (name.IsGeneric) { report.Error (1675, name.Location, "Enums cannot have type parameters"); } - push_current_class (new Enum (current_namespace, current_class, (TypeExpression) yyVals[-2+yyTop], (Modifiers) yyVals[-6+yyTop], MakeName (name), (Attributes) yyVals[-7+yyTop]), null); + push_current_class (new Enum (current_namespace, current_class, (TypeExpression) yyVals[-2+yyTop], (Modifiers) yyVals[-5+yyTop], MakeName (name), (Attributes) yyVals[-6+yyTop]), null); + if (yyVals[-2+yyTop] != null) { + lbag.AddMember (current_class, GetModifierLocations (), GetLocation (yyVals[-4+yyTop]), savedLocation, GetLocation (yyVals[0+yyTop])); + } else { + lbag.AddMember (current_class, GetModifierLocations (), GetLocation (yyVals[-4+yyTop]), GetLocation (yyVals[0+yyTop])); + } } -void case_308() +void case_307() #line 2570 "cs-parser.jay" { /* here will be evaluated after CLOSE_BLACE is consumed.*/ @@ -5743,23 +5760,23 @@ void case_308() Lexer.doc_state = XmlCommentState.Allowed; } -void case_309() +void case_308() #line 2576 "cs-parser.jay" { - enumCommas.Add (GetLocation (yyVals[-1+yyTop])); - if (yyVals[0+yyTop] != null) + lbag.AppendToMember (current_class, GetLocation (yyVals[-1+yyTop])); + if (yyVals[0+yyTop] != null) { current_class.OptionalSemicolon = GetLocation (yyVals[0+yyTop]); + lbag.AppendToMember (current_class, GetLocation (yyVals[0+yyTop])); + } if (doc_support) current_class.DocComment = enumTypeComment; --lexer.parsing_declaration; - lbag.AddMember (current_class, GetModifierLocations (), enumCommas); - enumCommas.Clear (); yyVal = pop_current_class (); } -void case_311() +void case_310() #line 2594 "cs-parser.jay" { var te = yyVals[0+yyTop] as TypeExpression; @@ -5767,26 +5784,26 @@ void case_311() Enum.Error_1008 (GetLocation (yyVals[0+yyTop]), report); yyVal = null; } else { - enumCommas.Add (GetLocation (yyVals[-1+yyTop])); + savedLocation = GetLocation (yyVals[-1+yyTop]); yyVal = yyVals[0+yyTop]; } } -void case_312() +void case_311() #line 2605 "cs-parser.jay" { Error_TypeExpected (GetLocation (yyVals[-1+yyTop])); yyVal = null; } -void case_317() +void case_316() #line 2623 "cs-parser.jay" { - enumCommas.Add (GetLocation (yyVals[-1+yyTop])); + lbag.AppendToMember (current_class, GetLocation (yyVals[-1+yyTop])); yyVal = yyVals[0+yyTop]; } -void case_318() +void case_317() #line 2631 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[0+yyTop]; @@ -5801,7 +5818,7 @@ void case_318() yyVal = em; } -void case_319() +void case_318() #line 2644 "cs-parser.jay" { ++lexer.parsing_block; @@ -5811,7 +5828,7 @@ void case_319() } } -void case_320() +void case_319() #line 2652 "cs-parser.jay" { --lexer.parsing_block; @@ -5827,7 +5844,7 @@ void case_320() yyVal = em; } -void case_322() +void case_321() #line 2677 "cs-parser.jay" { valid_param_mod = 0; @@ -5847,7 +5864,7 @@ void case_322() lexer.ConstraintsParsing = true; } -void case_324() +void case_323() #line 2699 "cs-parser.jay" { if (doc_support) { @@ -5863,7 +5880,7 @@ void case_324() current_delegate = null; } -void case_326() +void case_325() #line 2717 "cs-parser.jay" { if (lang_version < LanguageVersion.ISO_2) @@ -5872,7 +5889,7 @@ void case_326() yyVal = ComposedTypeSpecifier.CreateNullable (GetLocation (yyVals[0+yyTop])); } -void case_328() +void case_327() #line 2728 "cs-parser.jay" { var lt1 = (Tokenizer.LocatedToken) yyVals[-2+yyTop]; @@ -5881,7 +5898,7 @@ void case_328() yyVal = new MemberName (lt1.Value, lt2.Value, (TypeArguments) yyVals[0+yyTop], lt1.Location); } -void case_330() +void case_329() #line 2739 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[-1+yyTop]; @@ -5890,14 +5907,14 @@ void case_330() }; } -void case_331() +void case_330() #line 2749 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[-1+yyTop]; yyVal = new MemberName (lt.Value, (TypeArguments)yyVals[0+yyTop], lt.Location); } -void case_333() +void case_332() #line 2761 "cs-parser.jay" { if (lang_version < LanguageVersion.ISO_2) @@ -5910,14 +5927,14 @@ void case_333() yyVal = yyVals[-1+yyTop];; } -void case_334() +void case_333() #line 2772 "cs-parser.jay" { Error_TypeExpected (lexer.Location); yyVal = new TypeArguments (); } -void case_335() +void case_334() #line 2780 "cs-parser.jay" { TypeArguments type_args = new TypeArguments (); @@ -5926,7 +5943,7 @@ void case_335() locationListStack.Push (new List<Location> ()); } -void case_336() +void case_335() #line 2787 "cs-parser.jay" { TypeArguments type_args = (TypeArguments) yyVals[-2+yyTop]; @@ -5935,7 +5952,7 @@ void case_336() locationListStack.Peek ().Add (GetLocation (yyVals[-1+yyTop])); } -void case_338() +void case_337() #line 2804 "cs-parser.jay" { lexer.parsing_generic_declaration = false; @@ -5943,7 +5960,7 @@ void case_338() yyVal = new MemberName (lt.Value, (TypeArguments)yyVals[0+yyTop], lt.Location); } -void case_339() +void case_338() #line 2813 "cs-parser.jay" { MemberName mn = (MemberName)yyVals[0+yyTop]; @@ -5952,7 +5969,7 @@ void case_339() mn.GetSignatureForError ())); } -void case_341() +void case_340() #line 2824 "cs-parser.jay" { lexer.parsing_generic_declaration = false; @@ -5960,21 +5977,21 @@ void case_341() yyVal = new MemberName ((MemberName) yyVals[-2+yyTop], lt.Value, (TypeArguments) yyVals[0+yyTop], lt.Location); } -void case_342() +void case_341() #line 2833 "cs-parser.jay" { lexer.parsing_generic_declaration = false; yyVal = new MemberName (TypeContainer.DefaultIndexerName, GetLocation (yyVals[0+yyTop])); } -void case_343() +void case_342() #line 2838 "cs-parser.jay" { lexer.parsing_generic_declaration = false; yyVal = new MemberName ((MemberName) yyVals[-1+yyTop], TypeContainer.DefaultIndexerName, null, GetLocation (yyVals[0+yyTop])); } -void case_344() +void case_343() #line 2846 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[-2+yyTop]; @@ -5982,7 +5999,7 @@ void case_344() lbag.AddLocation (yyVal, GetLocation (yyVals[0+yyTop])); } -void case_345() +void case_344() #line 2852 "cs-parser.jay" { var lt1 = (Tokenizer.LocatedToken) yyVals[-3+yyTop]; @@ -5992,7 +6009,7 @@ void case_345() lbag.AddLocation (yyVal, GetLocation (yyVals[0+yyTop])); } -void case_346() +void case_345() #line 2860 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[-2+yyTop]; @@ -6000,7 +6017,7 @@ void case_346() lbag.AddLocation (yyVal, GetLocation (yyVals[0+yyTop])); } -void case_348() +void case_347() #line 2870 "cs-parser.jay" { if (lang_version < LanguageVersion.ISO_2) @@ -6010,7 +6027,7 @@ void case_348() lbag.AppendTo (yyVal, GetLocation (yyVals[-2+yyTop]), GetLocation (yyVals[0+yyTop])); } -void case_349() +void case_348() #line 2881 "cs-parser.jay" { TypeArguments type_args = new TypeArguments (); @@ -6018,7 +6035,7 @@ void case_349() yyVal = type_args; } -void case_350() +void case_349() #line 2887 "cs-parser.jay" { TypeArguments type_args = (TypeArguments) yyVals[-2+yyTop]; @@ -6027,7 +6044,7 @@ void case_350() lbag.AppendTo (type_args, GetLocation (yyVals[-1+yyTop])); } -void case_351() +void case_350() #line 2897 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken)yyVals[0+yyTop]; @@ -6037,7 +6054,7 @@ void case_351() lbag.AddLocation (yyVal, savedLocation); } -void case_352() +void case_351() #line 2905 "cs-parser.jay" { if (GetTokenName (yyToken) == "type") @@ -6048,28 +6065,28 @@ void case_352() yyVal = new TypeParameterName ("", null, lexer.Location); } -void case_357() +void case_356() #line 2939 "cs-parser.jay" { Expression.Error_VoidInvalidInTheContext (GetLocation (yyVals[0+yyTop]), report); yyVal = new TypeExpression (compiler.BuiltinTypes.Void, GetLocation (yyVals[0+yyTop])); } -void case_359() +void case_358() #line 2948 "cs-parser.jay" { Expression.Error_VoidInvalidInTheContext (GetLocation (yyVals[0+yyTop]), report); yyVal = new TypeExpression (compiler.BuiltinTypes.Void, GetLocation (yyVals[0+yyTop])); } -void case_361() +void case_360() #line 2957 "cs-parser.jay" { report.Error (1536, GetLocation (yyVals[0+yyTop]), "Invalid parameter type `void'"); yyVal = new TypeExpression (compiler.BuiltinTypes.Void, GetLocation (yyVals[0+yyTop])); } -void case_364() +void case_363() #line 2973 "cs-parser.jay" { MemberName name = (MemberName) yyVals[-1+yyTop]; @@ -6084,14 +6101,14 @@ void case_364() } } -void case_366() +void case_365() #line 2990 "cs-parser.jay" { if (yyVals[0+yyTop] != null) yyVal = new ComposedCast ((FullNamedExpression) yyVals[-1+yyTop], (ComposedTypeSpecifier) yyVals[0+yyTop]); } -void case_369() +void case_368() #line 3006 "cs-parser.jay" { var types = new List<FullNamedExpression> (2); @@ -6099,7 +6116,7 @@ void case_369() yyVal = types; } -void case_370() +void case_369() #line 3012 "cs-parser.jay" { var types = (List<FullNamedExpression>) yyVals[-2+yyTop]; @@ -6108,7 +6125,7 @@ void case_370() yyVal = types; } -void case_371() +void case_370() #line 3022 "cs-parser.jay" { if (yyVals[0+yyTop] is ComposedCast) { @@ -6117,35 +6134,35 @@ void case_371() yyVal = yyVals[0+yyTop]; } -void case_372() +void case_371() #line 3029 "cs-parser.jay" { Error_TypeExpected (lexer.Location); yyVal = null; } -void case_409() +void case_408() #line 3091 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[-1+yyTop]; yyVal = new SimpleName (lt.Value, (TypeArguments)yyVals[0+yyTop], lt.Location); } -void case_410() +void case_409() #line 3095 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[-1+yyTop]; yyVal = new CompletionSimpleName (MemberName.MakeName (lt.Value, null), lt.Location); } -void case_421() +void case_420() #line 3136 "cs-parser.jay" { yyVal = new ParenthesizedExpression ((Expression) yyVals[-1+yyTop]); lbag.AddLocation (yyVal, GetLocation (yyVals[-2+yyTop]), GetLocation (yyVals[0+yyTop])); } -void case_423() +void case_422() #line 3148 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[-1+yyTop]; @@ -6154,7 +6171,7 @@ void case_423() }; } -void case_424() +void case_423() #line 3155 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[-1+yyTop]; @@ -6163,7 +6180,7 @@ void case_424() }; } -void case_425() +void case_424() #line 3162 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[-1+yyTop]; @@ -6172,7 +6189,7 @@ void case_425() }; } -void case_426() +void case_425() #line 3169 "cs-parser.jay" { var lt1 = (Tokenizer.LocatedToken) yyVals[-2+yyTop]; @@ -6182,28 +6199,28 @@ void case_426() lbag.AddLocation (yyVal, GetLocation (yyVals[-1+yyTop])); } -void case_428() +void case_427() #line 3179 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[-1+yyTop]; yyVal = new CompletionMemberAccess ((Expression) yyVals[-3+yyTop], lt.Value, lt.Location); } -void case_430() +void case_429() #line 3187 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[-1+yyTop]; yyVal = new CompletionMemberAccess ((Expression) yyVals[-3+yyTop], lt.Value, lt.Location); } -void case_431() +void case_430() #line 3195 "cs-parser.jay" { yyVal = new Invocation ((Expression) yyVals[-3+yyTop], (Arguments) yyVals[-1+yyTop]); lbag.AddLocation (yyVal, GetLocation (yyVals[-2+yyTop]), GetLocation (yyVals[0+yyTop])); } -void case_434() +void case_433() #line 3208 "cs-parser.jay" { if (yyVals[-1+yyTop] == null) { @@ -6215,14 +6232,14 @@ void case_434() } } -void case_435() +void case_434() #line 3218 "cs-parser.jay" { yyVal = new CollectionOrObjectInitializers ((List<Expression>) yyVals[-2+yyTop], GetLocation (yyVals[-3+yyTop])); lbag.AddLocation (yyVal, GetLocation (yyVals[-3+yyTop]), GetLocation (yyVals[-1+yyTop]), GetLocation (yyVals[0+yyTop])); } -void case_438() +void case_437() #line 3234 "cs-parser.jay" { var a = new List<Expression> (); @@ -6230,7 +6247,7 @@ void case_438() yyVal = a; } -void case_439() +void case_438() #line 3240 "cs-parser.jay" { var a = (List<Expression>)yyVals[-2+yyTop]; @@ -6239,14 +6256,14 @@ void case_439() yyVal = a; } -void case_440() +void case_439() #line 3246 "cs-parser.jay" { Error_SyntaxError (yyToken); yyVal = yyVals[-1+yyTop]; } -void case_441() +void case_440() #line 3254 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[-2+yyTop]; @@ -6254,7 +6271,7 @@ void case_441() lbag.AddLocation (yyVal, GetLocation (yyVals[-1+yyTop])); } -void case_443() +void case_442() #line 3263 "cs-parser.jay" { CompletionSimpleName csn = yyVals[-1+yyTop] as CompletionSimpleName; @@ -6264,7 +6281,7 @@ void case_443() yyVal = new CompletionElementInitializer (csn.Prefix, csn.Location); } -void case_444() +void case_443() #line 3271 "cs-parser.jay" { if (yyVals[-1+yyTop] == null) @@ -6273,14 +6290,14 @@ void case_444() yyVal = new CollectionElementInitializer ((List<Expression>)yyVals[-1+yyTop], GetLocation (yyVals[-2+yyTop])); } -void case_445() +void case_444() #line 3278 "cs-parser.jay" { report.Error (1920, GetLocation (yyVals[-1+yyTop]), "An element initializer cannot be empty"); yyVal = null; } -void case_450() +void case_449() #line 3296 "cs-parser.jay" { Arguments list = new Arguments (4); @@ -6288,7 +6305,7 @@ void case_450() yyVal = list; } -void case_451() +void case_450() #line 3302 "cs-parser.jay" { Arguments list = (Arguments) yyVals[-2+yyTop]; @@ -6300,7 +6317,7 @@ void case_451() yyVal = list; } -void case_452() +void case_451() #line 3312 "cs-parser.jay" { Arguments list = (Arguments) yyVals[-2+yyTop]; @@ -6317,56 +6334,56 @@ void case_452() yyVal = list; } -void case_453() +void case_452() #line 3327 "cs-parser.jay" { report.Error (839, GetLocation (yyVals[0+yyTop]), "An argument is missing"); yyVal = yyVals[-1+yyTop]; } -void case_454() +void case_453() #line 3332 "cs-parser.jay" { report.Error (839, GetLocation (yyVals[-1+yyTop]), "An argument is missing"); yyVal = null; } -void case_459() +void case_458() #line 3353 "cs-parser.jay" { yyVal = new Argument ((Expression) yyVals[0+yyTop], Argument.AType.Ref); lbag.AddLocation (yyVal, GetLocation (yyVals[-1+yyTop])); } -void case_460() +void case_459() #line 3358 "cs-parser.jay" { yyVal = new Argument ((Expression) yyVals[0+yyTop], Argument.AType.Out); lbag.AddLocation (yyVal, GetLocation (yyVals[-1+yyTop])); } -void case_461() +void case_460() #line 3363 "cs-parser.jay" { yyVal = new Argument (new Arglist ((Arguments) yyVals[-1+yyTop], GetLocation (yyVals[-3+yyTop]))); lbag.AddLocation (yyVal, GetLocation (yyVals[-2+yyTop]), GetLocation (yyVals[0+yyTop])); } -void case_462() +void case_461() #line 3368 "cs-parser.jay" { yyVal = new Argument (new Arglist (GetLocation (yyVals[-2+yyTop]))); lbag.AddLocation (yyVal, GetLocation (yyVals[-1+yyTop]), GetLocation (yyVals[0+yyTop])); } -void case_464() +void case_463() #line 3380 "cs-parser.jay" { yyVal = new ElementAccess ((Expression) yyVals[-3+yyTop], (Arguments) yyVals[-1+yyTop], GetLocation (yyVals[-2+yyTop])); lbag.AddLocation (yyVal, GetLocation (yyVals[0+yyTop])); } -void case_467() +void case_466() #line 3396 "cs-parser.jay" { var list = new List<Expression> (4); @@ -6374,7 +6391,7 @@ void case_467() yyVal = list; } -void case_468() +void case_467() #line 3402 "cs-parser.jay" { var list = (List<Expression>) yyVals[-2+yyTop]; @@ -6383,14 +6400,14 @@ void case_468() yyVal = list; } -void case_469() +void case_468() #line 3408 "cs-parser.jay" { Error_SyntaxError (yyToken); yyVal = yyVals[-1+yyTop]; } -void case_470() +void case_469() #line 3416 "cs-parser.jay" { Arguments args = new Arguments (4); @@ -6398,7 +6415,7 @@ void case_470() yyVal = args; } -void case_471() +void case_470() #line 3422 "cs-parser.jay" { Arguments args = (Arguments) yyVals[-2+yyTop]; @@ -6410,21 +6427,21 @@ void case_471() yyVal = args; } -void case_475() +void case_474() #line 3450 "cs-parser.jay" { yyVal = new ElementAccess (new BaseThis (GetLocation (yyVals[-3+yyTop])), (Arguments) yyVals[-1+yyTop], GetLocation (yyVals[-2+yyTop])); lbag.AddLocation (yyVal, GetLocation (yyVals[0+yyTop])); } -void case_476() +void case_475() #line 3455 "cs-parser.jay" { Error_SyntaxError (yyToken); yyVal = new ElementAccess (null, null, GetLocation (yyVals[-1+yyTop])); } -void case_479() +void case_478() #line 3477 "cs-parser.jay" { if (yyVals[0+yyTop] != null) { @@ -6439,7 +6456,7 @@ void case_479() lbag.AddLocation (yyVal, GetLocation (yyVals[-3+yyTop]), GetLocation (yyVals[-1+yyTop])); } -void case_480() +void case_479() #line 3490 "cs-parser.jay" { if (lang_version <= LanguageVersion.ISO_2) @@ -6448,7 +6465,7 @@ void case_480() yyVal = new NewInitialize ((FullNamedExpression) yyVals[-1+yyTop], null, (CollectionOrObjectInitializers) yyVals[0+yyTop], GetLocation (yyVals[-2+yyTop])); } -void case_481() +void case_480() #line 3502 "cs-parser.jay" { yyVal = new ArrayCreation ((FullNamedExpression) yyVals[-5+yyTop], (List<Expression>) yyVals[-3+yyTop], @@ -6458,7 +6475,7 @@ void case_481() lbag.AddLocation (yyVal, GetLocation (yyVals[-4+yyTop]), GetLocation (yyVals[-2+yyTop])); } -void case_482() +void case_481() #line 3510 "cs-parser.jay" { if (yyVals[0+yyTop] == null) @@ -6467,7 +6484,7 @@ void case_482() yyVal = new ArrayCreation ((FullNamedExpression) yyVals[-2+yyTop], (ComposedTypeSpecifier) yyVals[-1+yyTop], (ArrayInitializer) yyVals[0+yyTop], GetLocation (yyVals[-3+yyTop])); } -void case_483() +void case_482() #line 3517 "cs-parser.jay" { if (lang_version <= LanguageVersion.ISO_2) @@ -6476,28 +6493,28 @@ void case_483() yyVal = new ImplicitlyTypedArrayCreation ((ComposedTypeSpecifier) yyVals[-1+yyTop], (ArrayInitializer) yyVals[0+yyTop], GetLocation (yyVals[-2+yyTop])); } -void case_484() +void case_483() #line 3524 "cs-parser.jay" { report.Error (178, GetLocation (yyVals[-1+yyTop]), "Invalid rank specifier, expecting `,' or `]'"); yyVal = new ArrayCreation ((FullNamedExpression) yyVals[-5+yyTop], null, GetLocation (yyVals[-6+yyTop])); } -void case_485() +void case_484() #line 3529 "cs-parser.jay" { Error_SyntaxError (1526, yyToken, "Unexpected symbol"); yyVal = new ArrayCreation ((FullNamedExpression) yyVals[-1+yyTop], null, GetLocation (yyVals[-2+yyTop])); } -void case_487() +void case_486() #line 3540 "cs-parser.jay" { --lexer.parsing_type; yyVal = yyVals[0+yyTop]; } -void case_488() +void case_487() #line 3548 "cs-parser.jay" { if (lang_version <= LanguageVersion.ISO_2) @@ -6509,7 +6526,7 @@ void case_488() lbag.AddLocation (yyVal, GetLocation (yyVals[-2+yyTop]), GetLocation (yyVals[0+yyTop])); } -void case_493() +void case_492() #line 3571 "cs-parser.jay" { var a = new List<AnonymousTypeParameter> (4); @@ -6517,7 +6534,7 @@ void case_493() yyVal = a; } -void case_494() +void case_493() #line 3577 "cs-parser.jay" { var a = (List<AnonymousTypeParameter>) yyVals[-2+yyTop]; @@ -6527,7 +6544,7 @@ void case_494() yyVal = a; } -void case_495() +void case_494() #line 3588 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken)yyVals[-2+yyTop]; @@ -6535,7 +6552,7 @@ void case_495() lbag.AddLocation (yyVal, GetLocation (yyVals[-1+yyTop])); } -void case_496() +void case_495() #line 3594 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken)yyVals[0+yyTop]; @@ -6543,14 +6560,14 @@ void case_496() lt.Value, lt.Location); } -void case_497() +void case_496() #line 3600 "cs-parser.jay" { MemberAccess ma = (MemberAccess) yyVals[0+yyTop]; yyVal = new AnonymousTypeParameter (ma, ma.Name, ma.Location); } -void case_498() +void case_497() #line 3605 "cs-parser.jay" { report.Error (746, lexer.Location, @@ -6558,28 +6575,28 @@ void case_498() yyVal = null; } -void case_502() +void case_501() #line 3620 "cs-parser.jay" { ((ComposedTypeSpecifier) yyVals[-1+yyTop]).Next = (ComposedTypeSpecifier) yyVals[0+yyTop]; yyVal = yyVals[-1+yyTop]; } -void case_503() +void case_502() #line 3628 "cs-parser.jay" { yyVal = ComposedTypeSpecifier.CreateArrayDimension (1, GetLocation (yyVals[-1+yyTop])); lbag.AddLocation (yyVal, GetLocation (yyVals[0+yyTop])); } -void case_504() +void case_503() #line 3633 "cs-parser.jay" { yyVal = ComposedTypeSpecifier.CreateArrayDimension ((int)yyVals[-1+yyTop], GetLocation (yyVals[-2+yyTop])); lbag.AddLocation (yyVal, GetLocation (yyVals[0+yyTop])); } -void case_509() +void case_508() #line 3663 "cs-parser.jay" { var ai = new ArrayInitializer (0, GetLocation (yyVals[-1+yyTop])); @@ -6588,7 +6605,7 @@ void case_509() yyVal = ai; } -void case_510() +void case_509() #line 3670 "cs-parser.jay" { var ai = new ArrayInitializer ((List<Expression>) yyVals[-2+yyTop], GetLocation (yyVals[-3+yyTop])); @@ -6601,7 +6618,7 @@ void case_510() yyVal = ai; } -void case_511() +void case_510() #line 3684 "cs-parser.jay" { var list = new List<Expression> (4); @@ -6609,7 +6626,7 @@ void case_511() yyVal = list; } -void case_512() +void case_511() #line 3690 "cs-parser.jay" { var list = (List<Expression>) yyVals[-2+yyTop]; @@ -6618,7 +6635,7 @@ void case_512() yyVal = list; } -void case_514() +void case_513() #line 3704 "cs-parser.jay" { lexer.TypeOfParsing = false; @@ -6626,14 +6643,14 @@ void case_514() lbag.AddLocation (yyVal, GetLocation (yyVals[-2+yyTop]), GetLocation (yyVals[0+yyTop])); } -void case_517() +void case_516() #line 3715 "cs-parser.jay" { Error_TypeExpected (lexer.Location); yyVal = null; } -void case_518() +void case_517() #line 3723 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[-1+yyTop]; @@ -6641,7 +6658,7 @@ void case_518() yyVal = new SimpleName (lt.Value, (int) yyVals[0+yyTop], lt.Location); } -void case_519() +void case_518() #line 3729 "cs-parser.jay" { var lt1 = (Tokenizer.LocatedToken) yyVals[-2+yyTop]; @@ -6651,7 +6668,7 @@ void case_519() lbag.AddLocation (yyVal, GetLocation (yyVals[-1+yyTop])); } -void case_520() +void case_519() #line 3737 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[0+yyTop]; @@ -6661,7 +6678,7 @@ void case_520() }; } -void case_521() +void case_520() #line 3745 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[-1+yyTop]; @@ -6671,7 +6688,7 @@ void case_521() }; } -void case_522() +void case_521() #line 3753 "cs-parser.jay" { var te = ((MemberName) yyVals[-3+yyTop]).GetTypeExpression (); @@ -6684,7 +6701,7 @@ void case_522() }; } -void case_523() +void case_522() #line 3767 "cs-parser.jay" { if (lang_version < LanguageVersion.ISO_2) @@ -6693,7 +6710,7 @@ void case_523() yyVal = yyVals[0+yyTop]; } -void case_524() +void case_523() #line 3777 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[-1+yyTop]; @@ -6703,35 +6720,35 @@ void case_524() yyVal = lt; } -void case_525() +void case_524() #line 3788 "cs-parser.jay" { yyVal = new SizeOf ((Expression) yyVals[-1+yyTop], GetLocation (yyVals[-3+yyTop])); lbag.AddLocation (yyVal, GetLocation (yyVals[-2+yyTop]), GetLocation (yyVals[0+yyTop])); } -void case_526() +void case_525() #line 3796 "cs-parser.jay" { yyVal = new CheckedExpr ((Expression) yyVals[-1+yyTop], GetLocation (yyVals[-3+yyTop])); lbag.AddLocation (yyVal, GetLocation (yyVals[-2+yyTop]), GetLocation (yyVals[0+yyTop])); } -void case_527() +void case_526() #line 3804 "cs-parser.jay" { yyVal = new UnCheckedExpr ((Expression) yyVals[-1+yyTop], GetLocation (yyVals[-3+yyTop])); lbag.AddLocation (yyVal, GetLocation (yyVals[-2+yyTop]), GetLocation (yyVals[0+yyTop])); } -void case_528() +void case_527() #line 3812 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[-1+yyTop]; yyVal = new MemberAccess (new Indirection ((Expression) yyVals[-3+yyTop], GetLocation (yyVals[-2+yyTop])), lt.Value, (TypeArguments) yyVals[0+yyTop], lt.Location); } -void case_530() +void case_529() #line 3824 "cs-parser.jay" { yyVal = end_anonymous ((ParametersBlock) yyVals[0+yyTop]); @@ -6742,7 +6759,7 @@ void case_530() } } -void case_532() +void case_531() #line 3837 "cs-parser.jay" { yyVal = end_anonymous ((ParametersBlock) yyVals[0+yyTop]); @@ -6754,7 +6771,7 @@ void case_532() } } -void case_536() +void case_535() #line 3862 "cs-parser.jay" { valid_param_mod = 0; @@ -6763,7 +6780,7 @@ void case_536() savedCloseLocation = GetLocation (yyVals[-2+yyTop]); } -void case_537() +void case_536() #line 3872 "cs-parser.jay" { if (lang_version < LanguageVersion.ISO_2) @@ -6773,14 +6790,14 @@ void case_537() lbag.AddLocation (yyVal, GetLocation (yyVals[-2+yyTop]), GetLocation (yyVals[0+yyTop])); } -void case_541() +void case_540() #line 3892 "cs-parser.jay" { yyVal = new Cast ((FullNamedExpression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], GetLocation (yyVals[-3+yyTop])); lbag.AddLocation (yyVal, GetLocation (yyVals[-1+yyTop])); } -void case_542() +void case_541() #line 3897 "cs-parser.jay" { if (!async_block) { @@ -6793,133 +6810,133 @@ void case_542() yyVal = new Await ((Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } -void case_551() +void case_550() #line 3944 "cs-parser.jay" { yyVal = new Binary (Binary.Operator.Multiply, (Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } -void case_552() +void case_551() #line 3949 "cs-parser.jay" { yyVal = new Binary (Binary.Operator.Division, (Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } -void case_553() +void case_552() #line 3954 "cs-parser.jay" { yyVal = new Binary (Binary.Operator.Modulus, (Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } -void case_555() +void case_554() #line 3963 "cs-parser.jay" { yyVal = new Binary (Binary.Operator.Addition, (Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } -void case_557() +void case_556() #line 3972 "cs-parser.jay" { /* Shift/Reduce conflict*/ yyVal = new Binary (Binary.Operator.Subtraction, (Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } -void case_561() +void case_560() #line 3989 "cs-parser.jay" { yyVal = new Binary (Binary.Operator.LeftShift, (Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } -void case_562() +void case_561() #line 3994 "cs-parser.jay" { yyVal = new Binary (Binary.Operator.RightShift, (Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } -void case_564() +void case_563() #line 4003 "cs-parser.jay" { yyVal = new Binary (Binary.Operator.LessThan, (Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } -void case_565() +void case_564() #line 4008 "cs-parser.jay" { yyVal = new Binary (Binary.Operator.GreaterThan, (Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } -void case_566() +void case_565() #line 4013 "cs-parser.jay" { yyVal = new Binary (Binary.Operator.LessThanOrEqual, (Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } -void case_567() +void case_566() #line 4018 "cs-parser.jay" { yyVal = new Binary (Binary.Operator.GreaterThanOrEqual, (Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } -void case_569() +void case_568() #line 4027 "cs-parser.jay" { yyVal = new Binary (Binary.Operator.Equality, (Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } -void case_570() +void case_569() #line 4032 "cs-parser.jay" { yyVal = new Binary (Binary.Operator.Inequality, (Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } -void case_572() +void case_571() #line 4041 "cs-parser.jay" { yyVal = new Binary (Binary.Operator.BitwiseAnd, (Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } -void case_574() +void case_573() #line 4050 "cs-parser.jay" { yyVal = new Binary (Binary.Operator.ExclusiveOr, (Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } -void case_576() +void case_575() #line 4059 "cs-parser.jay" { yyVal = new Binary (Binary.Operator.BitwiseOr, (Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } -void case_578() +void case_577() #line 4068 "cs-parser.jay" { yyVal = new Binary (Binary.Operator.LogicalAnd, (Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } -void case_580() +void case_579() #line 4077 "cs-parser.jay" { yyVal = new Binary (Binary.Operator.LogicalOr, (Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } -void case_582() +void case_581() #line 4086 "cs-parser.jay" { if (lang_version < LanguageVersion.ISO_2) @@ -6928,84 +6945,84 @@ void case_582() yyVal = new Nullable.NullCoalescingOperator ((Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } -void case_584() +void case_583() #line 4097 "cs-parser.jay" { yyVal = new Conditional (new BooleanExpression ((Expression) yyVals[-4+yyTop]), (Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], GetLocation (yyVals[-3+yyTop])); lbag.AddLocation (yyVal, GetLocation (yyVals[-1+yyTop])); } -void case_586() +void case_585() #line 4109 "cs-parser.jay" { yyVal = new CompoundAssign ( Binary.Operator.Multiply, (Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } -void case_587() +void case_586() #line 4114 "cs-parser.jay" { yyVal = new CompoundAssign ( Binary.Operator.Division, (Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } -void case_588() +void case_587() #line 4119 "cs-parser.jay" { yyVal = new CompoundAssign ( Binary.Operator.Modulus, (Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } -void case_589() +void case_588() #line 4124 "cs-parser.jay" { yyVal = new CompoundAssign ( Binary.Operator.Addition, (Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } -void case_590() +void case_589() #line 4129 "cs-parser.jay" { yyVal = new CompoundAssign ( Binary.Operator.Subtraction, (Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } -void case_591() +void case_590() #line 4134 "cs-parser.jay" { yyVal = new CompoundAssign ( Binary.Operator.LeftShift, (Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } -void case_592() +void case_591() #line 4139 "cs-parser.jay" { yyVal = new CompoundAssign ( Binary.Operator.RightShift, (Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } -void case_593() +void case_592() #line 4144 "cs-parser.jay" { yyVal = new CompoundAssign ( Binary.Operator.BitwiseAnd, (Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } -void case_594() +void case_593() #line 4149 "cs-parser.jay" { yyVal = new CompoundAssign ( Binary.Operator.BitwiseOr, (Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } -void case_595() +void case_594() #line 4154 "cs-parser.jay" { yyVal = new CompoundAssign ( Binary.Operator.ExclusiveOr, (Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } -void case_596() +void case_595() #line 4162 "cs-parser.jay" { var pars = new List<Parameter> (4); @@ -7014,7 +7031,7 @@ void case_596() yyVal = pars; } -void case_597() +void case_596() #line 4169 "cs-parser.jay" { var pars = (List<Parameter>) yyVals[-2+yyTop]; @@ -7029,7 +7046,7 @@ void case_597() yyVal = pars; } -void case_598() +void case_597() #line 4185 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[0+yyTop]; @@ -7037,7 +7054,7 @@ void case_598() yyVal = new Parameter ((FullNamedExpression) yyVals[-1+yyTop], lt.Value, (Parameter.Modifier) yyVals[-2+yyTop], null, lt.Location); } -void case_599() +void case_598() #line 4191 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[0+yyTop]; @@ -7045,14 +7062,14 @@ void case_599() yyVal = new Parameter ((FullNamedExpression) yyVals[-1+yyTop], lt.Value, Parameter.Modifier.NONE, null, lt.Location); } -void case_600() +void case_599() #line 4197 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[0+yyTop]; yyVal = new ImplicitLambdaParameter (lt.Value, lt.Location); } -void case_602() +void case_601() #line 4205 "cs-parser.jay" { var pars_list = (List<Parameter>) yyVals[0+yyTop]; @@ -7060,7 +7077,7 @@ void case_602() lbag.AddLocation (yyVal, parameterListCommas); } -void case_606() +void case_605() #line 4222 "cs-parser.jay" { Block b = end_block (lexer.Location); @@ -7069,14 +7086,14 @@ void case_606() yyVal = b; } -void case_608() +void case_607() #line 4233 "cs-parser.jay" { Error_SyntaxError (yyToken); yyVal = EmptyExpression.Null; } -void case_609() +void case_608() #line 4241 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[-1+yyTop]; @@ -7084,14 +7101,14 @@ void case_609() start_anonymous (true, new ParametersCompiled (p), false, lt.Location); } -void case_610() +void case_609() #line 4247 "cs-parser.jay" { yyVal = end_anonymous ((ParametersBlock) yyVals[0+yyTop]); lbag.AddLocation (yyVal, GetLocation (yyVals[-2+yyTop])); } -void case_611() +void case_610() #line 4252 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[-1+yyTop]; @@ -7099,63 +7116,63 @@ void case_611() start_anonymous (true, new ParametersCompiled (p), true, lt.Location); } -void case_612() +void case_611() #line 4258 "cs-parser.jay" { yyVal = end_anonymous ((ParametersBlock) yyVals[0+yyTop]); lbag.AddLocation (yyVal, GetLocation (yyVals[-4+yyTop]), GetLocation (yyVals[-2+yyTop])); } -void case_614() +void case_613() #line 4267 "cs-parser.jay" { valid_param_mod = 0; start_anonymous (true, (ParametersCompiled) yyVals[-2+yyTop], false, GetLocation (yyVals[-4+yyTop])); } -void case_615() +void case_614() #line 4272 "cs-parser.jay" { yyVal = end_anonymous ((ParametersBlock) yyVals[0+yyTop]); lbag.AddLocation (yyVal, GetLocation (yyVals[-6+yyTop]), GetLocation (yyVals[-3+yyTop]), GetLocation (yyVals[-2+yyTop])); } -void case_617() +void case_616() #line 4281 "cs-parser.jay" { valid_param_mod = 0; start_anonymous (true, (ParametersCompiled) yyVals[-2+yyTop], true, GetLocation (yyVals[-5+yyTop])); } -void case_618() +void case_617() #line 4286 "cs-parser.jay" { yyVal = end_anonymous ((ParametersBlock) yyVals[0+yyTop]); lbag.AddLocation (yyVal, GetLocation (yyVals[-7+yyTop]), GetLocation (yyVals[-6+yyTop]), GetLocation (yyVals[-3+yyTop]), GetLocation (yyVals[-2+yyTop])); } -void case_625() +void case_624() #line 4309 "cs-parser.jay" { yyVal = new RefValueExpr ((Expression) yyVals[-3+yyTop], (FullNamedExpression) yyVals[-1+yyTop], GetLocation (yyVals[-5+yyTop])); lbag.AddLocation (yyVal, GetLocation (yyVals[-4+yyTop]), GetLocation (yyVals[-2+yyTop]), GetLocation (yyVals[0+yyTop])); } -void case_626() +void case_625() #line 4314 "cs-parser.jay" { yyVal = new RefTypeExpr ((Expression) yyVals[-1+yyTop], GetLocation (yyVals[-3+yyTop])); lbag.AddLocation (yyVal, GetLocation (yyVals[-2+yyTop]), GetLocation (yyVals[0+yyTop])); } -void case_627() +void case_626() #line 4319 "cs-parser.jay" { yyVal = new MakeRefExpr ((Expression) yyVals[-1+yyTop], GetLocation (yyVals[-3+yyTop])); lbag.AddLocation (yyVal, GetLocation (yyVals[-2+yyTop]), GetLocation (yyVals[0+yyTop])); } -void case_631() +void case_630() #line 4348 "cs-parser.jay" { MemberName name = MakeName ((MemberName) yyVals[0+yyTop]); @@ -7168,7 +7185,7 @@ void case_631() lbag.AddMember (current_class, GetModifierLocations (), GetLocation (yyVals[-2+yyTop])); } -void case_632() +void case_631() #line 4360 "cs-parser.jay" { lexer.ConstraintsParsing = false; @@ -7183,7 +7200,7 @@ void case_632() lexer.parsing_modifiers = true; } -void case_633() +void case_632() #line 4373 "cs-parser.jay" { --lexer.parsing_declaration; @@ -7191,7 +7208,7 @@ void case_633() Lexer.doc_state = XmlCommentState.Allowed; } -void case_634() +void case_633() #line 4379 "cs-parser.jay" { lbag.AppendToMember (current_class, GetLocation (yyVals[-4+yyTop]), GetLocation (yyVals[-2+yyTop])); @@ -7200,7 +7217,7 @@ void case_634() yyVal = pop_current_class (); } -void case_637() +void case_636() #line 4396 "cs-parser.jay" { mod_locations = null; @@ -7208,7 +7225,7 @@ void case_637() lexer.parsing_modifiers = false; } -void case_640() +void case_639() #line 4410 "cs-parser.jay" { var m1 = (Modifiers) yyVals[-1+yyTop]; @@ -7226,7 +7243,7 @@ void case_640() yyVal = m1 | m2; } -void case_641() +void case_640() #line 4429 "cs-parser.jay" { yyVal = Modifiers.NEW; @@ -7236,91 +7253,91 @@ void case_641() report.Error (1530, GetLocation (yyVals[0+yyTop]), "Keyword `new' is not allowed on namespace elements"); } -void case_642() +void case_641() #line 4437 "cs-parser.jay" { yyVal = Modifiers.PUBLIC; StoreModifierLocation (yyVal, GetLocation (yyVals[0+yyTop])); } -void case_643() +void case_642() #line 4442 "cs-parser.jay" { yyVal = Modifiers.PROTECTED; StoreModifierLocation (yyVal, GetLocation (yyVals[0+yyTop])); } -void case_644() +void case_643() #line 4447 "cs-parser.jay" { yyVal = Modifiers.INTERNAL; StoreModifierLocation (yyVal, GetLocation (yyVals[0+yyTop])); } -void case_645() +void case_644() #line 4452 "cs-parser.jay" { yyVal = Modifiers.PRIVATE; StoreModifierLocation (yyVal, GetLocation (yyVals[0+yyTop])); } -void case_646() +void case_645() #line 4457 "cs-parser.jay" { yyVal = Modifiers.ABSTRACT; StoreModifierLocation (yyVal, GetLocation (yyVals[0+yyTop])); } -void case_647() +void case_646() #line 4462 "cs-parser.jay" { yyVal = Modifiers.SEALED; StoreModifierLocation (yyVal, GetLocation (yyVals[0+yyTop])); } -void case_648() +void case_647() #line 4467 "cs-parser.jay" { yyVal = Modifiers.STATIC; StoreModifierLocation (yyVal, GetLocation (yyVals[0+yyTop])); } -void case_649() +void case_648() #line 4472 "cs-parser.jay" { yyVal = Modifiers.READONLY; StoreModifierLocation (yyVal, GetLocation (yyVals[0+yyTop])); } -void case_650() +void case_649() #line 4477 "cs-parser.jay" { yyVal = Modifiers.VIRTUAL; StoreModifierLocation (yyVal, GetLocation (yyVals[0+yyTop])); } -void case_651() +void case_650() #line 4482 "cs-parser.jay" { yyVal = Modifiers.OVERRIDE; StoreModifierLocation (yyVal, GetLocation (yyVals[0+yyTop])); } -void case_652() +void case_651() #line 4487 "cs-parser.jay" { yyVal = Modifiers.EXTERN; StoreModifierLocation (yyVal, GetLocation (yyVals[0+yyTop])); } -void case_653() +void case_652() #line 4492 "cs-parser.jay" { yyVal = Modifiers.VOLATILE; StoreModifierLocation (yyVal, GetLocation (yyVals[0+yyTop])); } -void case_654() +void case_653() #line 4497 "cs-parser.jay" { yyVal = Modifiers.UNSAFE; @@ -7329,28 +7346,28 @@ void case_654() Error_UnsafeCodeNotAllowed (GetLocation (yyVals[0+yyTop])); } -void case_655() +void case_654() #line 4504 "cs-parser.jay" { yyVal = Modifiers.ASYNC; StoreModifierLocation (yyVal, GetLocation (yyVals[0+yyTop])); } -void case_657() +void case_656() #line 4513 "cs-parser.jay" { lbag.AppendToMember (current_class, GetLocation (yyVals[-1+yyTop])); current_container.AddBasesForPart (current_class, (List<FullNamedExpression>) yyVals[0+yyTop]); } -void case_660() +void case_659() #line 4526 "cs-parser.jay" { Error_SyntaxError (yyToken); yyVal = null; } -void case_661() +void case_660() #line 4534 "cs-parser.jay" { var constraints = new List<Constraints> (1); @@ -7358,7 +7375,7 @@ void case_661() yyVal = constraints; } -void case_662() +void case_661() #line 4540 "cs-parser.jay" { var constraints = (List<Constraints>) yyVals[-1+yyTop]; @@ -7376,7 +7393,7 @@ void case_662() yyVal = constraints; } -void case_663() +void case_662() #line 4559 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[-2+yyTop]; @@ -7384,7 +7401,7 @@ void case_663() lbag.AddLocation (yyVal, GetLocation (yyVals[-1+yyTop])); } -void case_664() +void case_663() #line 4568 "cs-parser.jay" { var constraints = new List<FullNamedExpression> (1); @@ -7392,7 +7409,7 @@ void case_664() yyVal = constraints; } -void case_665() +void case_664() #line 4574 "cs-parser.jay" { var constraints = (List<FullNamedExpression>) yyVals[-2+yyTop]; @@ -7418,7 +7435,7 @@ void case_665() yyVal = constraints; } -void case_666() +void case_665() #line 4601 "cs-parser.jay" { if (yyVals[0+yyTop] is ComposedCast) @@ -7427,14 +7444,14 @@ void case_666() yyVal = yyVals[0+yyTop]; } -void case_667() +void case_666() #line 4608 "cs-parser.jay" { yyVal = new SpecialContraintExpr (SpecialConstraint.Constructor, GetLocation (yyVals[-2+yyTop])); lbag.AddLocation (yyVal, GetLocation (yyVals[-1+yyTop]), GetLocation (yyVals[0+yyTop])); } -void case_671() +void case_670() #line 4628 "cs-parser.jay" { if (lang_version <= LanguageVersion.V_3) @@ -7443,92 +7460,102 @@ void case_671() yyVal = yyVals[0+yyTop]; } -void case_672() +void case_671() #line 4638 "cs-parser.jay" { yyVal = Variance.Covariant; savedLocation = GetLocation (yyVals[0+yyTop]); } -void case_673() +void case_672() #line 4643 "cs-parser.jay" { yyVal = Variance.Contravariant; savedLocation = GetLocation (yyVals[0+yyTop]); } -void case_674() +void case_673() #line 4664 "cs-parser.jay" { ++lexer.parsing_block; start_block (GetLocation (yyVals[0+yyTop])); } -void case_676() +void case_675() #line 4676 "cs-parser.jay" { --lexer.parsing_block; yyVal = end_block (GetLocation (yyVals[0+yyTop])); } -void case_677() +void case_676() #line 4681 "cs-parser.jay" { --lexer.parsing_block; yyVal = end_block (lexer.Location); } -void case_678() +void case_677() #line 4690 "cs-parser.jay" { ++lexer.parsing_block; current_block.StartLocation = GetLocation (yyVals[0+yyTop]); } -void case_679() +void case_678() #line 4695 "cs-parser.jay" { --lexer.parsing_block; yyVal = end_block (GetLocation (yyVals[0+yyTop])); } +void case_686() +#line 4723 "cs-parser.jay" +{ + Error_SyntaxError (yyToken); + var lt =(Tokenizer.LocatedToken) yyVals[-1+yyTop]; + var sn = new SimpleName (lt.Value, lt.Location); + current_block.AddStatement(new StatementErrorExpression (sn)); + yyVal = null; + } + void case_687() -#line 4722 "cs-parser.jay" +#line 4732 "cs-parser.jay" { Error_SyntaxError (yyToken); yyVal = null; } void case_720() -#line 4786 "cs-parser.jay" +#line 4796 "cs-parser.jay" { report.Error (1023, GetLocation (yyVals[0+yyTop]), "An embedded statement may not be a declaration or labeled statement"); yyVal = null; } void case_721() -#line 4791 "cs-parser.jay" +#line 4801 "cs-parser.jay" { report.Error (1023, GetLocation (yyVals[0+yyTop]), "An embedded statement may not be a declaration or labeled statement"); yyVal = null; } void case_722() -#line 4796 "cs-parser.jay" +#line 4806 "cs-parser.jay" { Error_SyntaxError (yyToken); yyVal = new EmptyStatement (GetLocation (yyVals[0+yyTop])); } void case_723() -#line 4804 "cs-parser.jay" +#line 4814 "cs-parser.jay" { /* Uses lexer.Location because semicolon location is not kept in quick mode*/ yyVal = new EmptyStatement (lexer.Location); } void case_724() -#line 4812 "cs-parser.jay" +#line 4822 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[-1+yyTop]; LabeledStatement labeled = new LabeledStatement (lt.Value, current_block, lt.Location); @@ -7538,7 +7565,7 @@ void case_724() } void case_727() -#line 4825 "cs-parser.jay" +#line 4835 "cs-parser.jay" { if (yyVals[-1+yyTop] is VarExpr) yyVals[-1+yyTop] = new SimpleName ("var", ((VarExpr) yyVals[-1+yyTop]).Location); @@ -7547,7 +7574,7 @@ void case_727() } void case_728() -#line 4841 "cs-parser.jay" +#line 4851 "cs-parser.jay" { /* Ok, the above "primary_expression" is there to get rid of*/ /* both reduce/reduce and shift/reduces in the grammar, it should*/ @@ -7579,7 +7606,7 @@ void case_728() } void case_729() -#line 4871 "cs-parser.jay" +#line 4881 "cs-parser.jay" { ATypeNameExpression expr = yyVals[-1+yyTop] as ATypeNameExpression; @@ -7592,7 +7619,7 @@ void case_729() } void case_730() -#line 4882 "cs-parser.jay" +#line 4892 "cs-parser.jay" { if (yyVals[0+yyTop] == null) yyVal = yyVals[-1+yyTop]; @@ -7601,21 +7628,21 @@ void case_730() } void case_733() -#line 4897 "cs-parser.jay" +#line 4907 "cs-parser.jay" { Expression.Error_VoidInvalidInTheContext (GetLocation (yyVals[0+yyTop]), report); yyVal = new TypeExpression (compiler.BuiltinTypes.Void, GetLocation (yyVals[0+yyTop])); } void case_735() -#line 4906 "cs-parser.jay" +#line 4916 "cs-parser.jay" { ((ComposedTypeSpecifier) yyVals[-1+yyTop]).Next = (ComposedTypeSpecifier) yyVals[0+yyTop]; yyVal = yyVals[-1+yyTop]; } void case_738() -#line 4922 "cs-parser.jay" +#line 4932 "cs-parser.jay" { if (async_block) { report.Error (4003, GetLocation (yyVals[0+yyTop]), "`await' cannot be used as an identifier within an async method or lambda expression"); @@ -7624,7 +7651,7 @@ void case_738() } void case_739() -#line 4932 "cs-parser.jay" +#line 4942 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[0+yyTop]; var li = new LocalVariable (current_block, lt.Value, lt.Location); @@ -7633,7 +7660,7 @@ void case_739() } void case_740() -#line 4939 "cs-parser.jay" +#line 4949 "cs-parser.jay" { yyVal = current_variable; current_variable = null; @@ -7641,7 +7668,7 @@ void case_740() } void case_741() -#line 4945 "cs-parser.jay" +#line 4955 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[0+yyTop]; var li = new LocalVariable (current_block, lt.Value, LocalVariable.Flags.Constant, lt.Location); @@ -7650,7 +7677,7 @@ void case_741() } void case_742() -#line 4952 "cs-parser.jay" +#line 4962 "cs-parser.jay" { if (current_variable.Initializer != null) { lbag.AddLocation (current_variable, GetLocation (yyVals[-6+yyTop]), savedLocation, GetLocation (yyVals[0+yyTop])); @@ -7662,14 +7689,14 @@ void case_742() } void case_744() -#line 4966 "cs-parser.jay" +#line 4976 "cs-parser.jay" { current_variable.Initializer = (Expression) yyVals[0+yyTop]; lbag.AppendTo (current_variable, GetLocation (yyVals[-1+yyTop])); } void case_745() -#line 4971 "cs-parser.jay" +#line 4981 "cs-parser.jay" { if (yyToken == Token.OPEN_BRACKET_EXPR) { report.Error (650, lexer.Location, @@ -7685,7 +7712,7 @@ void case_745() } void case_746() -#line 4985 "cs-parser.jay" +#line 4995 "cs-parser.jay" { if (yyToken == Token.OPEN_BRACKET_EXPR) { report.Error (650, lexer.Location, @@ -7696,7 +7723,7 @@ void case_746() } void case_750() -#line 5003 "cs-parser.jay" +#line 5013 "cs-parser.jay" { foreach (var d in current_variable.Declarators) { if (d.Initializer == null) @@ -7705,7 +7732,7 @@ void case_750() } void case_753() -#line 5018 "cs-parser.jay" +#line 5028 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[0+yyTop]; var li = new LocalVariable (current_variable.Variable, lt.Value, lt.Location); @@ -7716,7 +7743,7 @@ void case_753() } void case_754() -#line 5027 "cs-parser.jay" +#line 5037 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[-2+yyTop]; var li = new LocalVariable (current_variable.Variable, lt.Value, lt.Location); @@ -7727,14 +7754,14 @@ void case_754() } void case_756() -#line 5043 "cs-parser.jay" +#line 5053 "cs-parser.jay" { savedLocation = GetLocation (yyVals[-1+yyTop]); current_variable.Initializer = (Expression) yyVals[0+yyTop]; } void case_761() -#line 5061 "cs-parser.jay" +#line 5071 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[-2+yyTop]; var li = new LocalVariable (current_block, lt.Value, LocalVariable.Flags.Constant, lt.Location); @@ -7745,28 +7772,28 @@ void case_761() } void case_763() -#line 5074 "cs-parser.jay" +#line 5084 "cs-parser.jay" { yyVal = new StackAlloc ((Expression) yyVals[-3+yyTop], (Expression) yyVals[-1+yyTop], GetLocation (yyVals[-4+yyTop])); lbag.AddLocation (yyVal, GetLocation (yyVals[-2+yyTop]), GetLocation (yyVals[0+yyTop])); } void case_764() -#line 5079 "cs-parser.jay" +#line 5089 "cs-parser.jay" { report.Error (1575, GetLocation (yyVals[-1+yyTop]), "A stackalloc expression requires [] after type"); yyVal = new StackAlloc ((Expression) yyVals[0+yyTop], null, GetLocation (yyVals[-1+yyTop])); } void case_765() -#line 5087 "cs-parser.jay" +#line 5097 "cs-parser.jay" { yyVal = yyVals[-1+yyTop]; lbag.AddStatement (yyVal, GetLocation (yyVals[0+yyTop])); } void case_769() -#line 5105 "cs-parser.jay" +#line 5115 "cs-parser.jay" { ExpressionStatement s = yyVals[0+yyTop] as ExpressionStatement; if (s == null) { @@ -7778,7 +7805,7 @@ void case_769() } void case_770() -#line 5118 "cs-parser.jay" +#line 5128 "cs-parser.jay" { Expression expr = (Expression) yyVals[0+yyTop]; ExpressionStatement s; @@ -7788,14 +7815,14 @@ void case_770() } void case_771() -#line 5126 "cs-parser.jay" +#line 5136 "cs-parser.jay" { Error_SyntaxError (yyToken); yyVal = new EmptyStatement (GetLocation (yyVals[0+yyTop])); } void case_774() -#line 5140 "cs-parser.jay" +#line 5150 "cs-parser.jay" { if (yyVals[0+yyTop] is EmptyStatement) Warning_EmptyStatement (GetLocation (yyVals[0+yyTop])); @@ -7805,7 +7832,7 @@ void case_774() } void case_775() -#line 5149 "cs-parser.jay" +#line 5159 "cs-parser.jay" { yyVal = new If ((BooleanExpression) yyVals[-4+yyTop], (Statement) yyVals[-2+yyTop], (Statement) yyVals[0+yyTop], GetLocation (yyVals[-6+yyTop])); lbag.AddStatement (yyVal, GetLocation (yyVals[-5+yyTop]), GetLocation (yyVals[-3+yyTop]), GetLocation (yyVals[-1+yyTop])); @@ -7817,7 +7844,7 @@ void case_775() } void case_777() -#line 5166 "cs-parser.jay" +#line 5176 "cs-parser.jay" { yyVal = new Switch ((Expression) yyVals[-5+yyTop], (ExplicitBlock) current_block.Explicit, (List<SwitchSection>) yyVals[-1+yyTop], GetLocation (yyVals[-7+yyTop])); end_block (GetLocation (yyVals[0+yyTop])); @@ -7825,14 +7852,14 @@ void case_777() } void case_778() -#line 5175 "cs-parser.jay" +#line 5185 "cs-parser.jay" { report.Warning (1522, 1, current_block.StartLocation, "Empty switch block"); yyVal = new List<SwitchSection> (); } void case_780() -#line 5184 "cs-parser.jay" +#line 5194 "cs-parser.jay" { var sections = new List<SwitchSection> (4); @@ -7841,7 +7868,7 @@ void case_780() } void case_781() -#line 5191 "cs-parser.jay" +#line 5201 "cs-parser.jay" { var sections = (List<SwitchSection>) yyVals[-1+yyTop]; @@ -7850,14 +7877,14 @@ void case_781() } void case_782() -#line 5198 "cs-parser.jay" +#line 5208 "cs-parser.jay" { Error_SyntaxError (yyToken); yyVal = new List<SwitchSection> (); } void case_785() -#line 5217 "cs-parser.jay" +#line 5227 "cs-parser.jay" { var labels = new List<SwitchLabel> (2); @@ -7866,7 +7893,7 @@ void case_785() } void case_786() -#line 5224 "cs-parser.jay" +#line 5234 "cs-parser.jay" { var labels = (List<SwitchLabel>) (yyVals[-1+yyTop]); labels.Add ((SwitchLabel) yyVals[0+yyTop]); @@ -7875,14 +7902,14 @@ void case_786() } void case_787() -#line 5234 "cs-parser.jay" +#line 5244 "cs-parser.jay" { yyVal = new SwitchLabel ((Expression) yyVals[-1+yyTop], GetLocation (yyVals[-2+yyTop])); lbag.AddLocation (yyVal, GetLocation (yyVals[0+yyTop])); } void case_793() -#line 5253 "cs-parser.jay" +#line 5263 "cs-parser.jay" { if (yyVals[0+yyTop] is EmptyStatement && lexer.peek_token () == Token.OPEN_BRACE) Warning_EmptyStatement (GetLocation (yyVals[0+yyTop])); @@ -7892,54 +7919,44 @@ void case_793() } void case_794() -#line 5265 "cs-parser.jay" +#line 5275 "cs-parser.jay" { yyVal = new Do ((Statement) yyVals[-5+yyTop], (BooleanExpression) yyVals[-2+yyTop], GetLocation (yyVals[-6+yyTop])); lbag.AddStatement (yyVal, GetLocation (yyVals[-4+yyTop]), GetLocation (yyVals[-3+yyTop]), GetLocation (yyVals[-1+yyTop]), GetLocation (yyVals[0+yyTop])); } void case_795() -#line 5273 "cs-parser.jay" +#line 5283 "cs-parser.jay" { start_block (GetLocation (yyVals[0+yyTop])); current_block.IsCompilerGenerated = true; + For f = new For (GetLocation (yyVals[-1+yyTop])); + current_block.AddStatement (f); + yyVal = f; } -void case_797() -#line 5289 "cs-parser.jay" +void case_800() +#line 5311 "cs-parser.jay" { if (yyVals[0+yyTop] is EmptyStatement && lexer.peek_token () == Token.OPEN_BRACE) Warning_EmptyStatement (GetLocation (yyVals[0+yyTop])); - For f = new For ((Statement) yyVals[-6+yyTop], (BooleanExpression) yyVals[-4+yyTop], (Statement) yyVals[-2+yyTop], (Statement) yyVals[0+yyTop], GetLocation (yyVals[-9+yyTop])); - current_block.AddStatement (f); - - lbag.AddStatement (f, current_block.StartLocation, GetLocation (yyVals[-5+yyTop]), GetLocation (yyVals[-3+yyTop]), GetLocation (yyVals[-1+yyTop])); - - yyVal = end_block (GetLocation (yyVals[-5+yyTop])); - } - -void case_798() -#line 5301 "cs-parser.jay" -{ - For f = new For ((Statement) yyVals[-2+yyTop], ErrorExpression.Create (0, lexer.Location, "Syntax error"), null, null, GetLocation (yyVals[-5+yyTop])); - current_block.AddStatement (f); - - lbag.AddStatement (f, current_block.StartLocation, GetLocation (yyVals[-1+yyTop])); + For f = ((For) yyVals[-10+yyTop]); + f.Statement = (Statement) yyVals[0+yyTop]; + lbag.AddStatement (f, current_block.StartLocation, GetLocation (yyVals[-8+yyTop]), GetLocation (yyVals[-5+yyTop]), GetLocation (yyVals[-2+yyTop])); - Error_SyntaxError (yyToken); - yyVal = end_block (GetLocation (yyVals[-1+yyTop])); + yyVal = end_block (GetLocation (yyVals[-8+yyTop])); } -void case_799() -#line 5311 "cs-parser.jay" +void case_801() +#line 5322 "cs-parser.jay" { Error_SyntaxError (yyToken); yyVal = end_block (current_block.StartLocation); } -void case_802() -#line 5324 "cs-parser.jay" +void case_804() +#line 5335 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[0+yyTop]; var li = new LocalVariable (current_block, lt.Value, lt.Location); @@ -7947,15 +7964,15 @@ void case_802() current_variable = new BlockVariableDeclaration ((FullNamedExpression) yyVals[-1+yyTop], li); } -void case_803() -#line 5331 "cs-parser.jay" +void case_805() +#line 5342 "cs-parser.jay" { yyVal = current_variable; current_variable = null; } -void case_811() -#line 5355 "cs-parser.jay" +void case_813() +#line 5366 "cs-parser.jay" { var sl = yyVals[-2+yyTop] as StatementList; if (sl == null) { @@ -7969,15 +7986,15 @@ void case_811() yyVal = sl; } -void case_812() -#line 5371 "cs-parser.jay" +void case_814() +#line 5382 "cs-parser.jay" { report.Error (230, GetLocation (yyVals[-5+yyTop]), "Type and identifier are both required in a foreach statement"); yyVal = null; } -void case_813() -#line 5376 "cs-parser.jay" +void case_815() +#line 5387 "cs-parser.jay" { start_block (GetLocation (yyVals[-5+yyTop])); current_block.IsCompilerGenerated = true; @@ -7987,8 +8004,8 @@ void case_813() yyVal = li; } -void case_814() -#line 5385 "cs-parser.jay" +void case_816() +#line 5396 "cs-parser.jay" { if (yyVals[0+yyTop] is EmptyStatement && lexer.peek_token () == Token.OPEN_BRACE) Warning_EmptyStatement (GetLocation (yyVals[0+yyTop])); @@ -8000,58 +8017,58 @@ void case_814() yyVal = end_block (GetLocation (yyVals[-2+yyTop])); } -void case_821() -#line 5408 "cs-parser.jay" +void case_823() +#line 5419 "cs-parser.jay" { yyVal = new Break (GetLocation (yyVals[-1+yyTop])); lbag.AddStatement (yyVal, GetLocation (yyVals[0+yyTop])); } -void case_822() -#line 5416 "cs-parser.jay" +void case_824() +#line 5427 "cs-parser.jay" { yyVal = new Continue (GetLocation (yyVals[-1+yyTop])); lbag.AddStatement (yyVal, GetLocation (yyVals[0+yyTop])); } -void case_823() -#line 5424 "cs-parser.jay" +void case_825() +#line 5435 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[-1+yyTop]; yyVal = new Goto (lt.Value, GetLocation (yyVals[-2+yyTop])); lbag.AddStatement (yyVal, GetLocation (yyVals[-1+yyTop]), GetLocation (yyVals[0+yyTop])); } -void case_824() -#line 5430 "cs-parser.jay" +void case_826() +#line 5441 "cs-parser.jay" { yyVal = new GotoCase ((Expression) yyVals[-1+yyTop], GetLocation (yyVals[-3+yyTop])); lbag.AddStatement (yyVal, GetLocation (yyVals[-2+yyTop]), GetLocation (yyVals[0+yyTop])); } -void case_825() -#line 5435 "cs-parser.jay" +void case_827() +#line 5446 "cs-parser.jay" { yyVal = new GotoDefault (GetLocation (yyVals[-2+yyTop])); lbag.AddStatement (yyVal, GetLocation (yyVals[-1+yyTop]), GetLocation (yyVals[0+yyTop])); } -void case_826() -#line 5443 "cs-parser.jay" +void case_828() +#line 5454 "cs-parser.jay" { yyVal = new Return ((Expression) yyVals[-1+yyTop], GetLocation (yyVals[-2+yyTop])); lbag.AddStatement (yyVal, GetLocation (yyVals[0+yyTop])); } -void case_827() -#line 5451 "cs-parser.jay" +void case_829() +#line 5462 "cs-parser.jay" { yyVal = new Throw ((Expression) yyVals[-1+yyTop], GetLocation (yyVals[-2+yyTop])); lbag.AddStatement (yyVal, GetLocation (yyVals[0+yyTop])); } -void case_828() -#line 5459 "cs-parser.jay" +void case_830() +#line 5470 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[-3+yyTop]; string s = lt.Value; @@ -8068,8 +8085,8 @@ void case_828() lbag.AddStatement (yyVal, GetLocation (yyVals[-2+yyTop]), GetLocation (yyVals[0+yyTop])); } -void case_829() -#line 5475 "cs-parser.jay" +void case_831() +#line 5486 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[-2+yyTop]; string s = lt.Value; @@ -8084,29 +8101,29 @@ void case_829() lbag.AddStatement (yyVal, GetLocation (yyVals[-1+yyTop]), GetLocation (yyVals[0+yyTop])); } -void case_833() -#line 5501 "cs-parser.jay" +void case_835() +#line 5512 "cs-parser.jay" { yyVal = new TryFinally ((Statement) yyVals[-2+yyTop], (Block) yyVals[0+yyTop], GetLocation (yyVals[-3+yyTop])); lbag.AddStatement (yyVal, GetLocation (yyVals[-1+yyTop])); } -void case_834() -#line 5506 "cs-parser.jay" +void case_836() +#line 5517 "cs-parser.jay" { yyVal = new TryFinally (new TryCatch ((Block) yyVals[-3+yyTop], (List<Catch>) yyVals[-2+yyTop], GetLocation (yyVals[-4+yyTop]), true), (Block) yyVals[0+yyTop], GetLocation (yyVals[-4+yyTop])); lbag.AddStatement (yyVal, GetLocation (yyVals[-1+yyTop])); } -void case_835() -#line 5511 "cs-parser.jay" +void case_837() +#line 5522 "cs-parser.jay" { report.Error (1524, GetLocation (yyVals[-2+yyTop]), "Expected catch or finally"); yyVal = null; } -void case_836() -#line 5519 "cs-parser.jay" +void case_838() +#line 5530 "cs-parser.jay" { var l = new List<Catch> (2); @@ -8114,8 +8131,8 @@ void case_836() yyVal = l; } -void case_837() -#line 5526 "cs-parser.jay" +void case_839() +#line 5537 "cs-parser.jay" { var l = (List<Catch>) yyVals[-1+yyTop]; @@ -8132,8 +8149,8 @@ void case_837() yyVal = l; } -void case_841() -#line 5554 "cs-parser.jay" +void case_843() +#line 5565 "cs-parser.jay" { start_block (GetLocation (yyVals[-3+yyTop])); var c = new Catch (current_block, GetLocation (yyVals[-4+yyTop])); @@ -8149,8 +8166,8 @@ void case_841() yyVal = c; } -void case_843() -#line 5573 "cs-parser.jay" +void case_845() +#line 5584 "cs-parser.jay" { if (yyToken == Token.CLOSE_PARENS) { report.Error (1015, lexer.Location, @@ -8162,15 +8179,15 @@ void case_843() yyVal = new Catch (null, GetLocation (yyVals[-2+yyTop])); } -void case_846() -#line 5601 "cs-parser.jay" +void case_848() +#line 5612 "cs-parser.jay" { if (!settings.Unsafe) Error_UnsafeCodeNotAllowed (GetLocation (yyVals[0+yyTop])); } -void case_848() -#line 5611 "cs-parser.jay" +void case_850() +#line 5622 "cs-parser.jay" { if (yyVals[0+yyTop] is EmptyStatement && lexer.peek_token () == Token.OPEN_BRACE) Warning_EmptyStatement (GetLocation (yyVals[0+yyTop])); @@ -8179,8 +8196,8 @@ void case_848() lbag.AddStatement (yyVal, GetLocation (yyVals[-3+yyTop]), GetLocation (yyVals[-1+yyTop])); } -void case_849() -#line 5622 "cs-parser.jay" +void case_851() +#line 5633 "cs-parser.jay" { start_block (GetLocation (yyVals[-2+yyTop])); @@ -8191,15 +8208,15 @@ void case_849() current_variable = new Fixed.VariableDeclaration ((FullNamedExpression) yyVals[-1+yyTop], li); } -void case_850() -#line 5632 "cs-parser.jay" +void case_852() +#line 5643 "cs-parser.jay" { yyVal = current_variable; current_variable = null; } -void case_851() -#line 5637 "cs-parser.jay" +void case_853() +#line 5648 "cs-parser.jay" { if (yyVals[0+yyTop] is EmptyStatement && lexer.peek_token () == Token.OPEN_BRACE) Warning_EmptyStatement (GetLocation (yyVals[0+yyTop])); @@ -8210,8 +8227,8 @@ void case_851() yyVal = end_block (GetLocation (yyVals[-2+yyTop])); } -void case_852() -#line 5650 "cs-parser.jay" +void case_854() +#line 5661 "cs-parser.jay" { start_block (GetLocation (yyVals[-2+yyTop])); @@ -8222,15 +8239,15 @@ void case_852() current_variable = new Using.VariableDeclaration ((FullNamedExpression) yyVals[-1+yyTop], li); } -void case_853() -#line 5660 "cs-parser.jay" +void case_855() +#line 5671 "cs-parser.jay" { yyVal = current_variable; current_variable = null; } -void case_854() -#line 5665 "cs-parser.jay" +void case_856() +#line 5676 "cs-parser.jay" { if (yyVals[0+yyTop] is EmptyStatement && lexer.peek_token () == Token.OPEN_BRACE) Warning_EmptyStatement (GetLocation (yyVals[0+yyTop])); @@ -8241,8 +8258,8 @@ void case_854() yyVal = end_block (GetLocation (yyVals[-2+yyTop])); } -void case_855() -#line 5675 "cs-parser.jay" +void case_857() +#line 5686 "cs-parser.jay" { if (yyVals[0+yyTop] is EmptyStatement && lexer.peek_token () == Token.OPEN_BRACE) Warning_EmptyStatement (GetLocation (yyVals[0+yyTop])); @@ -8252,23 +8269,23 @@ void case_855() yyVal = u; } -void case_857() -#line 5688 "cs-parser.jay" +void case_859() +#line 5699 "cs-parser.jay" { /* It has to be here for the parent to safely restore artificial block*/ Error_SyntaxError (yyToken); } -void case_859() -#line 5700 "cs-parser.jay" +void case_861() +#line 5711 "cs-parser.jay" { current_variable.Initializer = (Expression) yyVals[0+yyTop]; lbag.AppendTo (current_variable, GetLocation (yyVals[-1+yyTop])); yyVal = current_variable; } -void case_860() -#line 5712 "cs-parser.jay" +void case_862() +#line 5723 "cs-parser.jay" { lexer.query_parsing = false; @@ -8281,8 +8298,8 @@ void case_860() current_block = current_block.Parent; } -void case_861() -#line 5724 "cs-parser.jay" +void case_863() +#line 5735 "cs-parser.jay" { Linq.AQueryClause from = yyVals[-1+yyTop] as Linq.AQueryClause; @@ -8293,8 +8310,8 @@ void case_861() current_block = current_block.Parent; } -void case_862() -#line 5735 "cs-parser.jay" +void case_864() +#line 5746 "cs-parser.jay" { lexer.query_parsing = false; yyVal = yyVals[-1+yyTop]; @@ -8303,16 +8320,16 @@ void case_862() current_block = current_block.Parent; } -void case_863() -#line 5742 "cs-parser.jay" +void case_865() +#line 5753 "cs-parser.jay" { yyVal = yyVals[-1+yyTop]; current_block.SetEndLocation (lexer.Location); current_block = current_block.Parent; } -void case_864() -#line 5751 "cs-parser.jay" +void case_866() +#line 5762 "cs-parser.jay" { current_block = new Linq.QueryBlock (current_block, lexer.Location); @@ -8321,8 +8338,8 @@ void case_864() yyVal = new Linq.QueryExpression (new Linq.QueryStartClause ((Linq.QueryBlock)current_block, (Expression)yyVals[0+yyTop], rv, GetLocation (yyVals[-3+yyTop]))); } -void case_865() -#line 5759 "cs-parser.jay" +void case_867() +#line 5770 "cs-parser.jay" { current_block = new Linq.QueryBlock (current_block, lexer.Location); @@ -8335,8 +8352,8 @@ void case_865() ); } -void case_866() -#line 5774 "cs-parser.jay" +void case_868() +#line 5785 "cs-parser.jay" { current_block = new Linq.QueryBlock (current_block, lexer.Location); @@ -8345,8 +8362,8 @@ void case_866() yyVal = new Linq.QueryExpression (new Linq.QueryStartClause ((Linq.QueryBlock)current_block, (Expression)yyVals[0+yyTop], rv, GetLocation (yyVals[-3+yyTop]))); } -void case_867() -#line 5782 "cs-parser.jay" +void case_869() +#line 5793 "cs-parser.jay" { current_block = new Linq.QueryBlock (current_block, lexer.Location); @@ -8359,8 +8376,8 @@ void case_867() ); } -void case_869() -#line 5801 "cs-parser.jay" +void case_871() +#line 5812 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[-3+yyTop]; var sn = new Linq.RangeVariable (lt.Value, lt.Location); @@ -8372,8 +8389,8 @@ void case_869() ((Linq.QueryBlock)current_block).AddRangeVariable (sn); } -void case_871() -#line 5816 "cs-parser.jay" +void case_873() +#line 5827 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[-3+yyTop]; var sn = new Linq.RangeVariable (lt.Value, lt.Location); @@ -8388,8 +8405,8 @@ void case_871() ((Linq.QueryBlock)current_block).AddRangeVariable (sn); } -void case_872() -#line 5833 "cs-parser.jay" +void case_874() +#line 5844 "cs-parser.jay" { Linq.AQueryClause head = (Linq.AQueryClause)yyVals[-1+yyTop]; @@ -8405,15 +8422,15 @@ void case_872() yyVal = head; } -void case_874() -#line 5849 "cs-parser.jay" +void case_876() +#line 5860 "cs-parser.jay" { Error_SyntaxError (yyToken); yyVal = null; } -void case_876() -#line 5861 "cs-parser.jay" +void case_878() +#line 5872 "cs-parser.jay" { yyVal = new Linq.Select ((Linq.QueryBlock)current_block, (Expression)yyVals[0+yyTop], GetLocation (yyVals[-2+yyTop])); @@ -8421,8 +8438,8 @@ void case_876() current_block = current_block.Parent; } -void case_877() -#line 5868 "cs-parser.jay" +void case_879() +#line 5879 "cs-parser.jay" { if (linq_clause_blocks == null) linq_clause_blocks = new Stack<Linq.QueryBlock> (); @@ -8431,8 +8448,8 @@ void case_877() linq_clause_blocks.Push ((Linq.QueryBlock)current_block); } -void case_878() -#line 5876 "cs-parser.jay" +void case_880() +#line 5887 "cs-parser.jay" { current_block.SetEndLocation (lexer.Location); current_block = current_block.Parent; @@ -8440,8 +8457,8 @@ void case_878() current_block = new Linq.QueryBlock (current_block, lexer.Location); } -void case_879() -#line 5883 "cs-parser.jay" +void case_881() +#line 5894 "cs-parser.jay" { yyVal = new Linq.GroupBy ((Linq.QueryBlock)current_block, (Expression)yyVals[-3+yyTop], linq_clause_blocks.Pop (), (Expression)yyVals[0+yyTop], GetLocation (yyVals[-5+yyTop])); lbag.AddLocation (yyVal, GetLocation (yyVals[-1+yyTop])); @@ -8450,15 +8467,15 @@ void case_879() current_block = current_block.Parent; } -void case_883() -#line 5900 "cs-parser.jay" +void case_885() +#line 5911 "cs-parser.jay" { ((Linq.AQueryClause)yyVals[-1+yyTop]).Tail.Next = (Linq.AQueryClause)yyVals[0+yyTop]; yyVal = yyVals[-1+yyTop]; } -void case_890() -#line 5920 "cs-parser.jay" +void case_892() +#line 5931 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[-3+yyTop]; var sn = new Linq.RangeVariable (lt.Value, lt.Location); @@ -8471,8 +8488,8 @@ void case_890() ((Linq.QueryBlock)current_block).AddRangeVariable (sn); } -void case_892() -#line 5939 "cs-parser.jay" +void case_894() +#line 5950 "cs-parser.jay" { yyVal = new Linq.Where ((Linq.QueryBlock)current_block, (Expression)yyVals[0+yyTop], GetLocation (yyVals[-2+yyTop])); @@ -8480,8 +8497,8 @@ void case_892() current_block = current_block.Parent; } -void case_893() -#line 5949 "cs-parser.jay" +void case_895() +#line 5960 "cs-parser.jay" { if (linq_clause_blocks == null) linq_clause_blocks = new Stack<Linq.QueryBlock> (); @@ -8490,8 +8507,8 @@ void case_893() linq_clause_blocks.Push ((Linq.QueryBlock) current_block); } -void case_894() -#line 5957 "cs-parser.jay" +void case_896() +#line 5968 "cs-parser.jay" { current_block.SetEndLocation (lexer.Location); current_block = current_block.Parent; @@ -8500,8 +8517,8 @@ void case_894() linq_clause_blocks.Push ((Linq.QueryBlock) current_block); } -void case_895() -#line 5965 "cs-parser.jay" +void case_897() +#line 5976 "cs-parser.jay" { current_block.AddStatement (new ContextualReturn ((Expression) yyVals[-1+yyTop])); current_block.SetEndLocation (lexer.Location); @@ -8510,8 +8527,8 @@ void case_895() current_block = new Linq.QueryBlock (current_block, lexer.Location); } -void case_896() -#line 5973 "cs-parser.jay" +void case_898() +#line 5984 "cs-parser.jay" { current_block.AddStatement (new ContextualReturn ((Expression) yyVals[-1+yyTop])); current_block.SetEndLocation (lexer.Location); @@ -8550,8 +8567,8 @@ void case_896() ((Linq.QueryBlock)current_block).AddRangeVariable (into); } -void case_897() -#line 6011 "cs-parser.jay" +void case_899() +#line 6022 "cs-parser.jay" { if (linq_clause_blocks == null) linq_clause_blocks = new Stack<Linq.QueryBlock> (); @@ -8560,8 +8577,8 @@ void case_897() linq_clause_blocks.Push ((Linq.QueryBlock) current_block); } -void case_898() -#line 6019 "cs-parser.jay" +void case_900() +#line 6030 "cs-parser.jay" { current_block.SetEndLocation (lexer.Location); current_block = current_block.Parent; @@ -8570,8 +8587,8 @@ void case_898() linq_clause_blocks.Push ((Linq.QueryBlock) current_block); } -void case_899() -#line 6027 "cs-parser.jay" +void case_901() +#line 6038 "cs-parser.jay" { current_block.AddStatement (new ContextualReturn ((Expression) yyVals[-1+yyTop])); current_block.SetEndLocation (lexer.Location); @@ -8580,8 +8597,8 @@ void case_899() current_block = new Linq.QueryBlock (current_block, lexer.Location); } -void case_900() -#line 6035 "cs-parser.jay" +void case_902() +#line 6046 "cs-parser.jay" { current_block.AddStatement (new ContextualReturn ((Expression) yyVals[-1+yyTop])); current_block.SetEndLocation (lexer.Location); @@ -8622,8 +8639,8 @@ void case_900() ((Linq.QueryBlock)current_block).AddRangeVariable (into); } -void case_904() -#line 6090 "cs-parser.jay" +void case_906() +#line 6101 "cs-parser.jay" { current_block.SetEndLocation (lexer.Location); current_block = current_block.Parent; @@ -8631,8 +8648,8 @@ void case_904() yyVal = yyVals[0+yyTop]; } -void case_906() -#line 6101 "cs-parser.jay" +void case_908() +#line 6112 "cs-parser.jay" { current_block.SetEndLocation (lexer.Location); current_block = current_block.Parent; @@ -8640,15 +8657,15 @@ void case_906() current_block = new Linq.QueryBlock (current_block, lexer.Location); } -void case_907() -#line 6108 "cs-parser.jay" +void case_909() +#line 6119 "cs-parser.jay" { ((Linq.AQueryClause)yyVals[-3+yyTop]).Next = (Linq.AQueryClause)yyVals[0+yyTop]; yyVal = yyVals[-3+yyTop]; } -void case_909() -#line 6117 "cs-parser.jay" +void case_911() +#line 6128 "cs-parser.jay" { current_block.SetEndLocation (lexer.Location); current_block = current_block.Parent; @@ -8656,43 +8673,43 @@ void case_909() current_block = new Linq.QueryBlock ((Linq.QueryBlock) current_block, lexer.Location); } -void case_910() -#line 6124 "cs-parser.jay" +void case_912() +#line 6135 "cs-parser.jay" { ((Linq.AQueryClause)yyVals[-3+yyTop]).Tail.Next = (Linq.AQueryClause)yyVals[0+yyTop]; yyVal = yyVals[-3+yyTop]; } -void case_912() -#line 6136 "cs-parser.jay" +void case_914() +#line 6147 "cs-parser.jay" { yyVal = new Linq.OrderByAscending ((Linq.QueryBlock) current_block, (Expression)yyVals[-1+yyTop]); lbag.AddLocation (yyVal, GetLocation (yyVals[0+yyTop])); } -void case_913() -#line 6141 "cs-parser.jay" +void case_915() +#line 6152 "cs-parser.jay" { yyVal = new Linq.OrderByDescending ((Linq.QueryBlock) current_block, (Expression)yyVals[-1+yyTop]); lbag.AddLocation (yyVal, GetLocation (yyVals[0+yyTop])); } -void case_915() -#line 6153 "cs-parser.jay" +void case_917() +#line 6164 "cs-parser.jay" { yyVal = new Linq.ThenByAscending ((Linq.QueryBlock) current_block, (Expression)yyVals[-1+yyTop]); lbag.AddLocation (yyVal, GetLocation (yyVals[0+yyTop])); } -void case_916() -#line 6158 "cs-parser.jay" +void case_918() +#line 6169 "cs-parser.jay" { yyVal = new Linq.ThenByDescending ((Linq.QueryBlock) current_block, (Expression)yyVals[-1+yyTop]); lbag.AddLocation (yyVal, GetLocation (yyVals[0+yyTop])); } -void case_918() -#line 6168 "cs-parser.jay" +void case_920() +#line 6179 "cs-parser.jay" { /* query continuation block is not linked with query block but with block*/ /* before. This means each query can use same range variable names for*/ @@ -8709,8 +8726,8 @@ void case_918() linq_clause_blocks.Push ((Linq.QueryBlock) current_block); } -void case_919() -#line 6184 "cs-parser.jay" +void case_921() +#line 6195 "cs-parser.jay" { var current_block = linq_clause_blocks.Pop (); var lt = (Tokenizer.LocatedToken) yyVals[-2+yyTop]; @@ -8720,8 +8737,8 @@ void case_919() }; } -void case_922() -#line 6211 "cs-parser.jay" +void case_924() +#line 6222 "cs-parser.jay" { current_container = new Class (current_namespace, current_class, new MemberName ("<InteractiveExpressionClass>"), Modifiers.PUBLIC, null); current_class = current_container; @@ -8752,8 +8769,8 @@ void case_922() start_block (lexer.Location); } -void case_923() -#line 6241 "cs-parser.jay" +void case_925() +#line 6252 "cs-parser.jay" { --lexer.parsing_block; Method method = (Method) oob_stack.Pop (); @@ -8764,16 +8781,16 @@ void case_923() current_local_parameters = null; } -void case_933() -#line 6284 "cs-parser.jay" +void case_935() +#line 6295 "cs-parser.jay" { module.DocumentationBuilder.ParsedBuiltinType = (TypeExpression)yyVals[-1+yyTop]; module.DocumentationBuilder.ParsedParameters = (List<DocumentationParameter>)yyVals[0+yyTop]; yyVal = null; } -void case_934() -#line 6290 "cs-parser.jay" +void case_936() +#line 6301 "cs-parser.jay" { module.DocumentationBuilder.ParsedBuiltinType = (TypeExpression)yyVals[-3+yyTop]; module.DocumentationBuilder.ParsedParameters = (List<DocumentationParameter>)yyVals[0+yyTop]; @@ -8781,15 +8798,15 @@ void case_934() yyVal = new MemberName (lt.Value); } -void case_937() -#line 6305 "cs-parser.jay" +void case_939() +#line 6316 "cs-parser.jay" { module.DocumentationBuilder.ParsedParameters = (List<DocumentationParameter>)yyVals[-1+yyTop]; yyVal = new MemberName ((MemberName) yyVals[-6+yyTop], new MemberName (MemberCache.IndexerNameAlias)); } -void case_938() -#line 6310 "cs-parser.jay" +void case_940() +#line 6321 "cs-parser.jay" { var p = (List<DocumentationParameter>)yyVals[0+yyTop] ?? new List<DocumentationParameter> (1); p.Add (new DocumentationParameter ((FullNamedExpression) yyVals[-1+yyTop])); @@ -8798,8 +8815,8 @@ void case_938() yyVal = null; } -void case_939() -#line 6318 "cs-parser.jay" +void case_941() +#line 6329 "cs-parser.jay" { var p = (List<DocumentationParameter>)yyVals[0+yyTop] ?? new List<DocumentationParameter> (1); p.Add (new DocumentationParameter ((FullNamedExpression) yyVals[-1+yyTop])); @@ -8808,8 +8825,8 @@ void case_939() yyVal = null; } -void case_940() -#line 6326 "cs-parser.jay" +void case_942() +#line 6337 "cs-parser.jay" { var p = (List<DocumentationParameter>)yyVals[0+yyTop] ?? new List<DocumentationParameter> (1); module.DocumentationBuilder.ParsedParameters = p; @@ -8817,24 +8834,24 @@ void case_940() yyVal = null; } -void case_948() -#line 6364 "cs-parser.jay" +void case_950() +#line 6375 "cs-parser.jay" { var parameters = new List<DocumentationParameter> (); parameters.Add ((DocumentationParameter) yyVals[0+yyTop]); yyVal = parameters; } -void case_949() -#line 6370 "cs-parser.jay" +void case_951() +#line 6381 "cs-parser.jay" { var parameters = yyVals[-2+yyTop] as List<DocumentationParameter>; parameters.Add ((DocumentationParameter) yyVals[0+yyTop]); yyVal = parameters; } -void case_950() -#line 6379 "cs-parser.jay" +void case_952() +#line 6390 "cs-parser.jay" { if (yyVals[-1+yyTop] != null) yyVal = new DocumentationParameter ((Parameter.Modifier) yyVals[-1+yyTop], (FullNamedExpression) yyVals[0+yyTop]); @@ -8874,71 +8891,72 @@ void case_950() 159, 162, 159, 159, 163, 62, 165, 58, 168, 169, 58, 164, 171, 164, 166, 166, 172, 172, 173, 174, 173, 175, 170, 167, 167, 167, 167, 167, 179, 176, - 180, 177, 178, 178, 181, 183, 185, 186, 31, 182, - 182, 182, 184, 184, 184, 187, 187, 188, 189, 188, - 190, 191, 192, 32, 193, 193, 17, 17, 194, 194, - 197, 196, 196, 196, 198, 198, 200, 65, 122, 102, - 102, 127, 127, 201, 201, 201, 199, 199, 202, 202, - 203, 203, 205, 205, 83, 73, 73, 87, 87, 117, - 117, 147, 147, 206, 206, 206, 206, 206, 210, 210, - 211, 211, 209, 209, 209, 209, 209, 209, 209, 212, - 212, 212, 212, 212, 212, 212, 212, 212, 213, 213, - 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, - 213, 213, 213, 213, 213, 213, 213, 213, 214, 214, - 214, 215, 215, 215, 235, 235, 236, 236, 237, 237, - 217, 217, 234, 234, 234, 234, 234, 234, 234, 234, - 219, 238, 238, 239, 239, 240, 240, 242, 242, 242, - 243, 243, 243, 243, 243, 244, 244, 160, 160, 248, - 248, 248, 248, 248, 250, 250, 249, 249, 251, 251, - 251, 251, 252, 220, 220, 220, 247, 247, 247, 253, - 253, 254, 254, 221, 222, 222, 223, 224, 225, 225, - 216, 216, 216, 216, 216, 259, 255, 226, 260, 260, - 261, 261, 262, 262, 263, 263, 263, 263, 256, 256, - 207, 207, 258, 258, 264, 264, 257, 257, 82, 82, - 265, 265, 266, 227, 267, 267, 267, 268, 268, 268, - 268, 268, 269, 195, 228, 229, 230, 231, 271, 232, - 272, 232, 270, 270, 274, 273, 218, 275, 275, 275, - 275, 275, 276, 276, 276, 276, 276, 276, 276, 277, - 277, 277, 277, 278, 278, 278, 278, 278, 278, 279, - 279, 279, 280, 280, 280, 280, 280, 281, 281, 281, - 282, 282, 283, 283, 284, 284, 285, 285, 286, 286, - 287, 287, 288, 288, 289, 289, 289, 289, 289, 289, - 289, 289, 289, 289, 289, 290, 290, 291, 291, 291, - 292, 292, 293, 293, 296, 294, 295, 295, 298, 297, - 299, 297, 300, 301, 297, 302, 303, 297, 46, 46, - 245, 245, 245, 245, 233, 233, 233, 81, 305, 306, - 307, 308, 309, 28, 64, 64, 63, 63, 109, 109, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 67, 67, 69, 69, 69, - 311, 311, 312, 313, 313, 314, 314, 314, 314, 204, - 204, 315, 315, 317, 110, 318, 318, 319, 158, 316, - 316, 320, 320, 321, 321, 321, 321, 325, 325, 326, - 326, 326, 323, 323, 323, 323, 323, 323, 323, 323, - 323, 323, 323, 323, 323, 327, 327, 327, 327, 327, - 327, 327, 327, 327, 327, 327, 327, 327, 341, 341, - 341, 341, 328, 342, 324, 343, 343, 344, 344, 344, - 344, 344, 344, 208, 208, 345, 49, 49, 347, 322, - 350, 322, 346, 346, 346, 346, 348, 348, 354, 354, - 353, 353, 355, 355, 349, 349, 351, 351, 356, 356, - 357, 352, 352, 352, 329, 329, 340, 340, 358, 359, - 359, 330, 330, 360, 360, 363, 361, 362, 362, 364, - 364, 364, 367, 365, 366, 366, 368, 368, 331, 331, - 331, 331, 369, 370, 374, 371, 373, 373, 373, 375, - 375, 379, 378, 378, 376, 376, 377, 377, 381, 380, - 380, 372, 382, 372, 332, 332, 332, 332, 332, 332, - 383, 384, 385, 385, 385, 386, 387, 388, 388, 389, - 389, 333, 333, 333, 333, 390, 390, 392, 392, 391, - 393, 391, 391, 334, 335, 394, 338, 336, 396, 397, - 339, 399, 400, 337, 337, 398, 398, 395, 395, 304, - 304, 304, 304, 401, 401, 403, 403, 405, 404, 406, - 404, 402, 402, 402, 410, 408, 411, 412, 408, 407, - 407, 413, 413, 414, 414, 414, 414, 414, 419, 415, - 420, 416, 421, 422, 423, 417, 425, 426, 427, 417, - 424, 424, 429, 418, 428, 432, 428, 431, 434, 431, - 430, 430, 430, 433, 433, 433, 409, 435, 409, 3, - 3, 436, 3, 3, 437, 437, 246, 246, 241, 241, - 5, 438, 438, 438, 438, 442, 438, 438, 438, 438, - 439, 439, 440, 443, 440, 441, 441, 444, 444, 445, + 180, 177, 178, 178, 182, 184, 185, 31, 181, 181, + 181, 183, 183, 183, 186, 186, 187, 188, 187, 189, + 190, 191, 32, 192, 192, 17, 17, 193, 193, 196, + 195, 195, 195, 197, 197, 199, 65, 122, 102, 102, + 127, 127, 200, 200, 200, 198, 198, 201, 201, 202, + 202, 204, 204, 83, 73, 73, 87, 87, 117, 117, + 147, 147, 205, 205, 205, 205, 205, 209, 209, 210, + 210, 208, 208, 208, 208, 208, 208, 208, 211, 211, + 211, 211, 211, 211, 211, 211, 211, 212, 212, 212, + 212, 212, 212, 212, 212, 212, 212, 212, 212, 212, + 212, 212, 212, 212, 212, 212, 212, 213, 213, 213, + 214, 214, 214, 234, 234, 235, 235, 236, 236, 216, + 216, 233, 233, 233, 233, 233, 233, 233, 233, 218, + 237, 237, 238, 238, 239, 239, 241, 241, 241, 242, + 242, 242, 242, 242, 243, 243, 160, 160, 247, 247, + 247, 247, 247, 249, 249, 248, 248, 250, 250, 250, + 250, 251, 219, 219, 219, 246, 246, 246, 252, 252, + 253, 253, 220, 221, 221, 222, 223, 224, 224, 215, + 215, 215, 215, 215, 258, 254, 225, 259, 259, 260, + 260, 261, 261, 262, 262, 262, 262, 255, 255, 206, + 206, 257, 257, 263, 263, 256, 256, 82, 82, 264, + 264, 265, 226, 266, 266, 266, 267, 267, 267, 267, + 267, 268, 194, 227, 228, 229, 230, 270, 231, 271, + 231, 269, 269, 273, 272, 217, 274, 274, 274, 274, + 274, 275, 275, 275, 275, 275, 275, 275, 276, 276, + 276, 276, 277, 277, 277, 277, 277, 277, 278, 278, + 278, 279, 279, 279, 279, 279, 280, 280, 280, 281, + 281, 282, 282, 283, 283, 284, 284, 285, 285, 286, + 286, 287, 287, 288, 288, 288, 288, 288, 288, 288, + 288, 288, 288, 288, 289, 289, 290, 290, 290, 291, + 291, 292, 292, 295, 293, 294, 294, 297, 296, 298, + 296, 299, 300, 296, 301, 302, 296, 46, 46, 244, + 244, 244, 244, 232, 232, 232, 81, 304, 305, 306, + 307, 308, 28, 64, 64, 63, 63, 109, 109, 309, + 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, + 309, 309, 309, 309, 67, 67, 69, 69, 69, 310, + 310, 311, 312, 312, 313, 313, 313, 313, 203, 203, + 314, 314, 316, 110, 317, 317, 318, 158, 315, 315, + 319, 319, 320, 320, 320, 320, 320, 324, 324, 325, + 325, 325, 322, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 326, 326, 326, 326, 326, + 326, 326, 326, 326, 326, 326, 326, 326, 340, 340, + 340, 340, 327, 341, 323, 342, 342, 343, 343, 343, + 343, 343, 343, 207, 207, 344, 49, 49, 346, 321, + 349, 321, 345, 345, 345, 345, 347, 347, 353, 353, + 352, 352, 354, 354, 348, 348, 350, 350, 355, 355, + 356, 351, 351, 351, 328, 328, 339, 339, 357, 358, + 358, 329, 329, 359, 359, 362, 360, 361, 361, 363, + 363, 363, 366, 364, 365, 365, 367, 367, 330, 330, + 330, 330, 368, 369, 373, 370, 376, 378, 379, 372, + 372, 374, 374, 381, 380, 380, 375, 375, 377, 377, + 383, 382, 382, 371, 384, 371, 331, 331, 331, 331, + 331, 331, 385, 386, 387, 387, 387, 388, 389, 390, + 390, 391, 391, 332, 332, 332, 332, 392, 392, 394, + 394, 393, 395, 393, 393, 333, 334, 396, 337, 335, + 398, 399, 338, 401, 402, 336, 336, 400, 400, 397, + 397, 303, 303, 303, 303, 403, 403, 405, 405, 407, + 406, 408, 406, 404, 404, 404, 412, 410, 413, 414, + 410, 409, 409, 415, 415, 416, 416, 416, 416, 416, + 421, 417, 422, 418, 423, 424, 425, 419, 427, 428, + 429, 419, 426, 426, 431, 420, 430, 434, 430, 433, + 436, 433, 432, 432, 432, 435, 435, 435, 411, 437, + 411, 3, 3, 438, 3, 3, 439, 439, 245, 245, + 240, 240, 5, 440, 440, 440, 440, 444, 440, 440, + 440, 440, 441, 441, 442, 445, 442, 443, 443, 446, + 446, 447, }; static readonly short [] yyLen = { 2, 2, 0, 3, 1, 2, 4, 3, 1, 0, 1, @@ -8971,45 +8989,45 @@ void case_950() 6, 0, 6, 1, 0, 8, 0, 9, 0, 0, 10, 0, 0, 3, 0, 1, 1, 2, 2, 0, 5, 0, 2, 2, 2, 1, 1, 1, 0, 5, - 0, 5, 1, 1, 0, 0, 0, 0, 13, 0, - 2, 2, 0, 1, 2, 1, 3, 2, 0, 5, - 0, 0, 0, 13, 0, 1, 1, 3, 1, 4, - 2, 0, 3, 2, 1, 3, 0, 3, 1, 1, - 3, 1, 2, 3, 4, 4, 0, 3, 1, 3, - 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 2, 2, 2, 2, 2, 2, 1, 3, + 0, 5, 1, 1, 0, 0, 0, 12, 0, 2, + 2, 0, 1, 2, 1, 3, 2, 0, 5, 0, + 0, 0, 13, 0, 1, 1, 3, 1, 4, 2, + 0, 3, 2, 1, 3, 0, 3, 1, 1, 3, + 1, 2, 3, 4, 4, 0, 3, 1, 3, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 2, 2, 2, 2, 2, 2, 1, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 3, 3, 4, 4, 4, 3, 3, 4, 3, 4, - 4, 0, 1, 3, 4, 0, 1, 1, 3, 2, - 3, 1, 2, 3, 2, 1, 1, 0, 1, 1, - 3, 3, 2, 2, 1, 1, 1, 1, 2, 2, - 4, 3, 1, 4, 4, 3, 1, 3, 2, 1, - 3, 1, 1, 1, 4, 3, 2, 2, 6, 3, - 7, 4, 3, 7, 3, 0, 2, 4, 1, 2, - 0, 1, 1, 3, 3, 1, 1, 1, 0, 1, - 1, 2, 2, 3, 1, 2, 0, 1, 2, 4, - 1, 3, 0, 5, 1, 1, 1, 2, 3, 3, - 4, 4, 1, 2, 4, 4, 4, 4, 0, 4, - 0, 5, 0, 1, 0, 4, 4, 1, 2, 2, - 4, 2, 1, 2, 2, 2, 2, 2, 2, 1, - 3, 3, 3, 1, 3, 3, 3, 3, 3, 1, - 3, 3, 1, 3, 3, 3, 3, 1, 3, 3, - 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, - 1, 3, 1, 5, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 1, 3, 3, 2, 1, - 0, 1, 1, 1, 0, 2, 1, 1, 0, 4, - 0, 5, 0, 0, 7, 0, 0, 8, 1, 1, - 1, 1, 1, 1, 6, 4, 4, 1, 1, 0, - 0, 0, 0, 15, 0, 1, 0, 1, 1, 2, + 1, 1, 1, 1, 1, 1, 1, 2, 2, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, + 3, 4, 4, 4, 3, 3, 4, 3, 4, 4, + 0, 1, 3, 4, 0, 1, 1, 3, 2, 3, + 1, 2, 3, 2, 1, 1, 0, 1, 1, 3, + 3, 2, 2, 1, 1, 1, 1, 2, 2, 4, + 3, 1, 4, 4, 3, 1, 3, 2, 1, 3, + 1, 1, 1, 4, 3, 2, 2, 6, 3, 7, + 4, 3, 7, 3, 0, 2, 4, 1, 2, 0, + 1, 1, 3, 3, 1, 1, 1, 0, 1, 1, + 2, 2, 3, 1, 2, 0, 1, 2, 4, 1, + 3, 0, 5, 1, 1, 1, 2, 3, 3, 4, + 4, 1, 2, 4, 4, 4, 4, 0, 4, 0, + 5, 0, 1, 0, 4, 4, 1, 2, 2, 4, + 2, 1, 2, 2, 2, 2, 2, 2, 1, 3, + 3, 3, 1, 3, 3, 3, 3, 3, 1, 3, + 3, 1, 3, 3, 3, 3, 1, 3, 3, 1, + 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, + 3, 1, 5, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 1, 3, 3, 2, 1, 0, + 1, 1, 1, 0, 2, 1, 1, 0, 4, 0, + 5, 0, 0, 7, 0, 0, 8, 1, 1, 1, + 1, 1, 1, 6, 4, 4, 1, 1, 0, 0, + 0, 0, 15, 0, 1, 0, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 0, 2, 0, 1, 1, - 1, 2, 4, 1, 3, 1, 3, 1, 1, 0, - 1, 1, 1, 0, 4, 1, 1, 0, 4, 0, - 1, 1, 2, 1, 1, 1, 1, 1, 2, 1, + 1, 1, 1, 1, 0, 2, 0, 1, 1, 1, + 2, 4, 1, 3, 1, 3, 1, 1, 0, 1, + 1, 1, 0, 4, 1, 1, 0, 4, 0, 1, + 1, 2, 1, 1, 1, 2, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, @@ -9020,1286 +9038,1305 @@ void case_950() 4, 1, 5, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 5, 7, 0, 8, 0, 1, 1, 2, 1, 0, 3, 1, 2, 3, 1, 1, 1, - 1, 1, 5, 7, 0, 4, 7, 3, 1, 0, - 1, 0, 5, 1, 0, 1, 0, 1, 1, 1, - 3, 6, 0, 9, 1, 1, 1, 1, 1, 1, - 2, 2, 3, 4, 3, 3, 3, 4, 3, 0, - 1, 3, 4, 5, 3, 1, 2, 0, 1, 2, - 0, 7, 3, 2, 2, 0, 3, 5, 0, 0, - 10, 0, 0, 9, 5, 2, 1, 0, 2, 2, - 2, 2, 2, 4, 5, 4, 5, 0, 5, 0, - 6, 3, 2, 1, 0, 3, 0, 0, 6, 0, - 1, 1, 2, 1, 1, 1, 1, 1, 0, 5, - 0, 3, 0, 0, 0, 12, 0, 0, 0, 13, - 0, 2, 0, 3, 1, 0, 4, 1, 0, 4, - 1, 2, 2, 1, 2, 2, 0, 0, 4, 2, - 3, 0, 4, 2, 2, 3, 0, 1, 1, 1, - 2, 2, 2, 4, 3, 0, 7, 4, 4, 3, - 1, 3, 0, 0, 4, 0, 1, 1, 3, 2, + 1, 1, 5, 7, 0, 4, 0, 0, 0, 10, + 1, 0, 1, 0, 5, 1, 0, 1, 0, 1, + 1, 1, 3, 6, 0, 9, 1, 1, 1, 1, + 1, 1, 2, 2, 3, 4, 3, 3, 3, 4, + 3, 0, 1, 3, 4, 5, 3, 1, 2, 0, + 1, 2, 0, 7, 3, 2, 2, 0, 3, 5, + 0, 0, 10, 0, 0, 9, 5, 2, 1, 0, + 2, 2, 2, 2, 2, 4, 5, 4, 5, 0, + 5, 0, 6, 3, 2, 1, 0, 3, 0, 0, + 6, 0, 1, 1, 2, 1, 1, 1, 1, 1, + 0, 5, 0, 3, 0, 0, 0, 12, 0, 0, + 0, 13, 0, 2, 0, 3, 1, 0, 4, 1, + 0, 4, 1, 2, 2, 1, 2, 2, 0, 0, + 4, 2, 3, 0, 4, 2, 2, 3, 0, 1, + 1, 1, 2, 2, 2, 4, 3, 0, 7, 4, + 4, 3, 1, 3, 0, 0, 4, 0, 1, 1, + 3, 2, }; static readonly short [] yyDefRed = { 0, 8, 0, 0, 0, 0, 0, 0, 0, 2, 4, - 0, 0, 11, 14, 0, 920, 0, 0, 924, 0, - 0, 15, 17, 18, 375, 381, 388, 376, 378, 0, - 377, 0, 384, 386, 373, 0, 380, 382, 374, 385, - 387, 383, 337, 941, 0, 379, 931, 0, 10, 1, + 0, 0, 11, 14, 0, 922, 0, 0, 926, 0, + 0, 15, 17, 18, 374, 380, 387, 375, 377, 0, + 376, 0, 383, 385, 372, 0, 379, 381, 373, 384, + 386, 382, 336, 943, 0, 378, 933, 0, 10, 1, 0, 0, 0, 12, 0, 771, 0, 0, 0, 0, - 0, 0, 0, 0, 416, 0, 0, 0, 0, 0, - 0, 0, 414, 0, 0, 0, 474, 0, 415, 0, - 513, 0, 846, 0, 0, 0, 624, 0, 0, 0, - 0, 0, 0, 0, 674, 0, 723, 0, 0, 0, - 0, 0, 0, 0, 0, 413, 0, 613, 0, 770, - 0, 706, 0, 0, 0, 0, 390, 391, 0, 393, - 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, - 404, 405, 406, 407, 408, 411, 412, 620, 543, 0, + 0, 0, 0, 0, 415, 0, 0, 0, 0, 0, + 0, 0, 413, 0, 0, 0, 473, 0, 414, 0, + 512, 0, 848, 0, 0, 0, 623, 0, 0, 0, + 0, 0, 0, 0, 673, 0, 723, 0, 0, 0, + 0, 0, 0, 0, 0, 412, 0, 612, 0, 770, + 0, 706, 0, 0, 0, 0, 389, 390, 0, 392, + 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, + 403, 404, 405, 406, 407, 410, 411, 619, 542, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 621, 619, 622, 623, 690, 692, 0, 688, 691, + 0, 620, 618, 621, 622, 690, 692, 0, 688, 691, 707, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 708, 0, 0, 0, 772, 773, 789, 790, 791, - 792, 815, 816, 817, 818, 819, 820, 0, 0, 0, - 20, 0, 0, 0, 327, 0, 329, 928, 16, 921, + 792, 817, 818, 819, 820, 821, 822, 0, 0, 0, + 20, 0, 0, 0, 326, 0, 328, 930, 16, 923, 0, 0, 239, 238, 235, 240, 241, 234, 253, 252, 245, 246, 242, 244, 243, 247, 236, 237, 248, 249, - 255, 254, 250, 251, 0, 0, 944, 0, 933, 0, - 932, 3, 52, 0, 0, 0, 42, 39, 41, 43, - 44, 45, 46, 47, 50, 13, 0, 0, 0, 821, - 417, 418, 844, 0, 0, 0, 0, 0, 0, 392, - 0, 822, 0, 535, 529, 534, 722, 769, 693, 720, + 255, 254, 250, 251, 0, 0, 946, 0, 935, 0, + 934, 3, 52, 0, 0, 0, 42, 39, 41, 43, + 44, 45, 46, 47, 50, 13, 0, 0, 0, 823, + 416, 417, 846, 0, 0, 0, 0, 0, 0, 391, + 0, 824, 0, 534, 528, 533, 722, 769, 693, 720, 719, 721, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 0, 0, 0, 795, 0, 0, 0, 738, 737, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 831, 0, 389, 0, 0, 0, 0, - 0, 0, 845, 0, 0, 0, 736, 732, 0, 0, - 0, 0, 0, 0, 0, 356, 0, 0, 0, 0, - 0, 0, 0, 0, 616, 0, 542, 0, 0, 540, - 544, 545, 539, 549, 548, 546, 547, 609, 524, 0, - 410, 409, 0, 0, 0, 0, 0, 724, 0, 326, - 0, 730, 731, 0, 477, 478, 0, 0, 0, 728, + 0, 0, 0, 833, 0, 388, 0, 0, 0, 0, + 0, 0, 847, 0, 0, 0, 736, 732, 0, 0, + 0, 0, 0, 0, 0, 355, 0, 0, 0, 0, + 0, 0, 0, 0, 615, 0, 541, 0, 0, 539, + 543, 544, 538, 548, 547, 545, 546, 608, 523, 0, + 409, 408, 0, 0, 0, 0, 0, 724, 0, 325, + 0, 730, 731, 0, 476, 477, 0, 0, 0, 728, 729, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 923, 689, 739, 727, 0, - 767, 768, 874, 891, 0, 0, 0, 903, 862, 860, - 884, 0, 0, 882, 885, 886, 887, 888, 863, 861, - 0, 0, 0, 331, 0, 21, 0, 0, 0, 940, - 0, 338, 0, 0, 0, 942, 0, 0, 40, 646, - 652, 644, 0, 641, 651, 645, 643, 642, 649, 647, - 648, 654, 650, 653, 655, 0, 0, 639, 51, 476, - 0, 472, 473, 0, 0, 470, 0, 741, 0, 0, - 0, 0, 765, 766, 0, 0, 0, 628, 0, 825, - 823, 629, 0, 0, 498, 0, 0, 0, 489, 0, - 493, 503, 505, 0, 485, 0, 0, 0, 0, 0, - 480, 0, 483, 0, 487, 358, 826, 0, 0, 827, - 835, 0, 0, 0, 836, 0, 0, 847, 0, 0, - 735, 0, 368, 364, 365, 0, 0, 363, 366, 367, - 0, 0, 0, 550, 0, 0, 531, 0, 611, 687, - 0, 0, 682, 684, 685, 686, 421, 422, 0, 334, - 335, 0, 177, 176, 178, 0, 0, 0, 0, 360, - 0, 596, 0, 0, 829, 0, 0, 426, 0, 429, - 0, 427, 0, 466, 0, 0, 0, 0, 0, 455, - 458, 0, 0, 450, 457, 456, 0, 585, 586, 587, - 588, 589, 590, 591, 592, 593, 595, 594, 551, 553, - 552, 558, 559, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 582, 0, - 0, 502, 0, 0, 0, 0, 0, 0, 0, 875, - 877, 873, 0, 883, 0, 0, 328, 938, 939, 352, - 0, 0, 349, 0, 0, 174, 0, 0, 948, 934, - 936, 60, 58, 59, 0, 0, 53, 0, 0, 61, - 63, 27, 25, 0, 0, 305, 636, 0, 640, 425, - 0, 475, 0, 526, 0, 537, 164, 185, 0, 0, - 154, 0, 0, 0, 165, 530, 0, 849, 799, 0, - 810, 796, 0, 801, 0, 0, 0, 824, 0, 0, - 0, 488, 0, 504, 506, 0, 0, 442, 0, 0, - 438, 0, 0, 467, 0, 508, 482, 0, 140, 509, - 138, 139, 511, 0, 525, 0, 840, 0, 833, 0, - 837, 517, 0, 0, 0, 353, 0, 515, 0, 0, - 527, 0, 852, 0, 866, 0, 864, 0, 0, 626, - 627, 0, 0, 0, 676, 677, 675, 683, 604, 610, - 603, 0, 0, 333, 599, 0, 0, 0, 541, 828, - 725, 430, 424, 428, 423, 528, 465, 464, 463, 460, - 459, 0, 454, 419, 420, 431, 0, 0, 746, 0, - 0, 892, 868, 0, 893, 0, 889, 0, 904, 0, - 0, 0, 0, 872, 19, 330, 673, 672, 0, 671, - 0, 348, 950, 175, 945, 0, 0, 54, 0, 0, - 0, 0, 0, 0, 355, 0, 630, 0, 0, 80, - 79, 0, 471, 0, 0, 0, 0, 0, 536, 0, - 0, 0, 0, 0, 802, 0, 0, 0, 0, 0, - 848, 495, 494, 445, 0, 0, 929, 930, 434, 440, - 0, 443, 0, 469, 0, 0, 0, 0, 0, 776, - 843, 0, 834, 0, 523, 518, 0, 0, 514, 0, - 855, 0, 793, 867, 865, 0, 532, 0, 612, 608, - 607, 606, 336, 598, 597, 614, 462, 0, 452, 451, - 584, 140, 0, 762, 744, 0, 0, 0, 751, 0, - 870, 0, 897, 0, 912, 913, 906, 876, 878, 918, - 351, 350, 949, 0, 0, 62, 56, 0, 64, 26, - 23, 0, 0, 0, 211, 0, 102, 0, 77, 756, - 113, 114, 0, 0, 0, 759, 183, 184, 0, 0, - 0, 0, 157, 166, 158, 160, 0, 0, 0, 0, - 798, 806, 0, 811, 812, 0, 0, 444, 446, 447, - 441, 435, 439, 0, 500, 0, 468, 479, 433, 512, - 510, 0, 839, 0, 0, 0, 519, 0, 857, 0, - 0, 625, 617, 0, 461, 0, 0, 740, 752, 869, - 0, 0, 0, 890, 0, 0, 0, 937, 0, 0, - 0, 69, 70, 73, 74, 0, 321, 0, 306, 631, - 207, 97, 0, 742, 760, 169, 0, 181, 0, 0, - 0, 794, 859, 0, 0, 0, 0, 813, 775, 484, - 481, 782, 0, 788, 0, 0, 780, 0, 785, 841, - 522, 521, 856, 853, 0, 615, 0, 0, 871, 894, - 0, 0, 0, 908, 0, 919, 0, 75, 67, 0, - 0, 0, 312, 311, 0, 0, 0, 0, 0, 0, - 170, 0, 161, 159, 850, 803, 0, 0, 808, 0, - 0, 777, 781, 0, 786, 0, 0, 618, 0, 754, - 0, 898, 915, 916, 909, 879, 55, 0, 71, 72, - 0, 0, 307, 0, 0, 0, 0, 761, 168, 0, - 180, 0, 0, 814, 787, 0, 678, 842, 854, 763, - 0, 0, 0, 76, 0, 0, 322, 0, 372, 371, - 0, 369, 660, 0, 632, 0, 661, 208, 98, 171, - 851, 797, 0, 895, 0, 910, 0, 0, 0, 308, - 0, 316, 0, 0, 0, 662, 0, 0, 0, 0, - 899, 29, 24, 323, 0, 0, 0, 370, 0, 0, - 0, 99, 679, 0, 0, 0, 0, 0, 317, 668, - 0, 669, 666, 0, 664, 95, 0, 94, 0, 0, - 83, 85, 86, 87, 88, 89, 90, 91, 92, 93, - 141, 0, 0, 224, 216, 217, 218, 219, 220, 221, - 222, 223, 0, 0, 214, 0, 0, 896, 0, 324, - 0, 309, 0, 0, 0, 633, 84, 0, 267, 262, - 266, 0, 209, 215, 0, 902, 900, 320, 667, 665, - 0, 0, 0, 0, 0, 0, 0, 275, 0, 0, - 225, 0, 0, 233, 0, 152, 142, 151, 0, 100, - 0, 0, 261, 0, 0, 260, 0, 146, 0, 0, - 342, 0, 340, 0, 0, 186, 0, 0, 0, 0, - 0, 634, 210, 0, 103, 0, 339, 0, 0, 0, - 0, 117, 0, 0, 0, 0, 0, 0, 143, 0, - 0, 190, 0, 343, 0, 228, 227, 226, 0, 101, - 0, 279, 0, 258, 119, 0, 256, 0, 0, 0, - 121, 0, 344, 0, 0, 187, 0, 0, 0, 341, - 231, 112, 110, 0, 0, 283, 0, 0, 0, 0, - 0, 147, 0, 264, 0, 0, 0, 0, 125, 0, - 0, 0, 0, 345, 346, 0, 0, 0, 0, 0, - 107, 298, 0, 280, 0, 0, 292, 0, 0, 0, - 287, 0, 137, 0, 0, 0, 0, 132, 0, 0, - 276, 0, 122, 0, 116, 126, 144, 150, 198, 0, - 188, 0, 0, 0, 0, 111, 0, 104, 108, 0, - 0, 0, 294, 0, 295, 284, 0, 0, 278, 288, - 259, 0, 0, 118, 133, 257, 0, 274, 0, 265, - 269, 128, 0, 0, 0, 195, 197, 191, 232, 109, - 299, 301, 281, 0, 0, 293, 290, 136, 134, 148, - 0, 0, 0, 145, 199, 201, 189, 0, 0, 0, - 292, 0, 270, 272, 129, 0, 0, 192, 303, 304, - 300, 302, 291, 149, 0, 0, 205, 204, 203, 200, - 202, 0, 0, 0, 193, 271, 273, + 0, 0, 0, 0, 0, 925, 689, 739, 727, 0, + 767, 768, 876, 893, 0, 0, 0, 905, 864, 862, + 886, 0, 0, 884, 887, 888, 889, 890, 865, 863, + 0, 0, 0, 330, 0, 21, 0, 0, 0, 942, + 0, 337, 0, 0, 0, 944, 0, 0, 40, 645, + 651, 643, 0, 640, 650, 644, 642, 641, 648, 646, + 647, 653, 649, 652, 654, 0, 0, 638, 51, 475, + 0, 471, 472, 0, 0, 469, 0, 741, 0, 0, + 0, 0, 765, 766, 0, 0, 0, 627, 0, 827, + 825, 628, 0, 0, 497, 0, 0, 0, 488, 0, + 492, 502, 504, 0, 484, 0, 0, 0, 0, 0, + 479, 0, 482, 0, 486, 357, 828, 0, 0, 829, + 837, 0, 0, 0, 838, 0, 0, 849, 0, 0, + 735, 0, 367, 363, 364, 0, 0, 362, 365, 366, + 0, 0, 0, 549, 0, 0, 530, 0, 610, 687, + 0, 0, 0, 681, 683, 684, 685, 420, 421, 0, + 333, 334, 0, 177, 176, 178, 0, 0, 0, 0, + 359, 0, 595, 0, 0, 831, 0, 0, 425, 0, + 428, 0, 426, 0, 465, 0, 0, 0, 0, 0, + 454, 457, 0, 0, 449, 456, 455, 0, 584, 585, + 586, 587, 588, 589, 590, 591, 592, 594, 593, 550, + 552, 551, 557, 558, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 581, + 0, 0, 501, 0, 0, 0, 0, 0, 0, 0, + 877, 879, 875, 0, 885, 0, 0, 327, 940, 941, + 351, 0, 0, 348, 0, 0, 174, 0, 0, 950, + 936, 938, 60, 58, 59, 0, 0, 53, 0, 0, + 61, 63, 27, 25, 0, 0, 0, 635, 0, 639, + 424, 0, 474, 0, 525, 0, 536, 164, 185, 0, + 0, 154, 0, 0, 0, 165, 529, 0, 851, 801, + 0, 812, 796, 0, 803, 0, 0, 0, 826, 0, + 0, 0, 487, 0, 503, 505, 0, 0, 441, 0, + 0, 437, 0, 0, 466, 0, 507, 481, 0, 140, + 508, 138, 139, 510, 0, 524, 0, 842, 0, 835, + 0, 839, 516, 0, 0, 0, 352, 0, 514, 0, + 0, 526, 0, 854, 0, 868, 0, 866, 0, 0, + 625, 626, 0, 0, 0, 686, 675, 676, 674, 682, + 603, 609, 602, 0, 0, 332, 598, 0, 0, 0, + 540, 830, 725, 429, 423, 427, 422, 527, 464, 463, + 462, 459, 458, 0, 453, 418, 419, 430, 0, 0, + 746, 0, 0, 894, 870, 0, 895, 0, 891, 0, + 906, 0, 0, 0, 0, 874, 19, 329, 672, 671, + 0, 670, 0, 347, 952, 175, 947, 0, 0, 54, + 0, 0, 0, 0, 0, 0, 354, 0, 629, 0, + 0, 80, 79, 0, 470, 0, 0, 0, 0, 0, + 535, 0, 0, 0, 0, 0, 804, 797, 0, 0, + 0, 0, 850, 494, 493, 444, 0, 0, 931, 932, + 433, 439, 0, 442, 0, 468, 0, 0, 0, 0, + 0, 776, 845, 0, 836, 0, 522, 517, 0, 0, + 513, 0, 857, 0, 793, 869, 867, 0, 531, 0, + 611, 607, 606, 605, 335, 597, 596, 613, 461, 0, + 451, 450, 583, 140, 0, 762, 744, 0, 0, 0, + 751, 0, 872, 0, 899, 0, 914, 915, 908, 878, + 880, 920, 350, 349, 951, 0, 0, 62, 56, 0, + 64, 26, 23, 0, 0, 305, 0, 211, 0, 102, + 0, 77, 756, 113, 114, 0, 0, 0, 759, 183, + 184, 0, 0, 0, 0, 157, 166, 158, 160, 0, + 0, 0, 0, 0, 813, 814, 0, 0, 443, 445, + 446, 440, 434, 438, 0, 499, 0, 467, 478, 432, + 511, 509, 0, 841, 0, 0, 0, 518, 0, 859, + 0, 0, 624, 616, 0, 460, 0, 0, 740, 752, + 871, 0, 0, 0, 892, 0, 0, 0, 939, 0, + 0, 0, 69, 70, 73, 74, 0, 320, 311, 310, + 0, 630, 207, 97, 0, 742, 760, 169, 0, 181, + 0, 0, 0, 794, 861, 0, 0, 0, 808, 0, + 815, 775, 483, 480, 782, 0, 788, 0, 0, 780, + 0, 785, 843, 521, 520, 858, 855, 0, 614, 0, + 0, 873, 896, 0, 0, 0, 910, 0, 921, 0, + 75, 67, 0, 0, 0, 306, 0, 0, 0, 0, + 0, 170, 0, 161, 159, 852, 805, 798, 0, 0, + 777, 781, 0, 786, 0, 0, 617, 0, 754, 0, + 900, 917, 918, 911, 881, 55, 0, 71, 72, 0, + 0, 0, 0, 0, 0, 0, 761, 168, 0, 180, + 0, 0, 816, 787, 0, 677, 844, 856, 763, 0, + 0, 0, 76, 0, 0, 321, 0, 307, 0, 315, + 371, 370, 0, 368, 659, 0, 631, 0, 660, 208, + 98, 171, 853, 0, 0, 810, 0, 897, 0, 912, + 0, 0, 0, 0, 0, 0, 0, 0, 661, 0, + 0, 799, 0, 0, 901, 29, 24, 322, 0, 0, + 316, 369, 0, 0, 0, 99, 0, 678, 0, 0, + 0, 0, 308, 667, 0, 668, 665, 0, 663, 95, + 0, 94, 0, 0, 83, 85, 86, 87, 88, 89, + 90, 91, 92, 93, 141, 0, 0, 224, 216, 217, + 218, 219, 220, 221, 222, 223, 0, 0, 214, 0, + 800, 0, 898, 0, 323, 319, 0, 0, 0, 632, + 84, 0, 267, 262, 266, 0, 209, 215, 0, 904, + 902, 666, 664, 0, 0, 0, 0, 0, 0, 0, + 275, 0, 0, 225, 0, 0, 233, 0, 152, 142, + 151, 0, 100, 0, 0, 261, 0, 0, 260, 0, + 146, 0, 0, 341, 0, 339, 0, 0, 186, 0, + 0, 0, 0, 0, 633, 210, 0, 103, 0, 338, + 0, 0, 0, 0, 117, 0, 0, 0, 0, 0, + 0, 143, 0, 0, 190, 0, 342, 0, 228, 227, + 226, 0, 101, 0, 279, 0, 258, 119, 0, 256, + 0, 0, 0, 121, 0, 343, 0, 0, 187, 0, + 0, 0, 340, 231, 112, 110, 0, 0, 283, 0, + 0, 0, 0, 0, 147, 0, 264, 0, 0, 0, + 0, 125, 0, 0, 0, 0, 344, 345, 0, 0, + 0, 0, 0, 107, 298, 0, 280, 0, 0, 292, + 0, 0, 0, 287, 0, 137, 0, 0, 0, 0, + 132, 0, 0, 276, 0, 122, 0, 116, 126, 144, + 150, 198, 0, 188, 0, 0, 0, 0, 111, 0, + 104, 108, 0, 0, 0, 294, 0, 295, 284, 0, + 0, 278, 288, 259, 0, 0, 118, 133, 257, 0, + 274, 0, 265, 269, 128, 0, 0, 0, 195, 197, + 191, 232, 109, 299, 301, 281, 0, 0, 293, 290, + 136, 134, 148, 0, 0, 0, 145, 199, 201, 189, + 0, 0, 0, 292, 0, 270, 272, 129, 0, 0, + 192, 303, 304, 300, 302, 291, 149, 0, 0, 205, + 204, 203, 200, 202, 0, 0, 0, 193, 271, 273, }; protected static readonly short [] yyDgoto = { 7, - 8, 50, 9, 51, 10, 11, 52, 234, 689, 432, - 12, 13, 53, 22, 23, 24, 323, 194, 237, 674, - 833, 1026, 1146, 1479, 830, 238, 239, 240, 241, 242, - 243, 244, 245, 667, 447, 668, 669, 935, 670, 671, - 939, 831, 1021, 1022, 1023, 268, 591, 1118, 111, 842, - 1209, 1210, 1211, 1212, 1213, 1214, 1215, 1216, 1217, 1218, - 1219, 1220, 466, 678, 1293, 948, 1125, 1088, 1155, 1178, - 1236, 1304, 1150, 1354, 1331, 1379, 1380, 1381, 950, 1377, - 951, 732, 1270, 1342, 1317, 1367, 515, 1360, 1336, 1396, - 914, 1365, 1368, 1369, 1463, 1397, 1398, 1394, 1221, 1277, - 1248, 1294, 690, 1344, 1443, 1314, 1400, 1472, 467, 269, - 691, 692, 693, 694, 695, 654, 568, 1130, 655, 656, - 848, 1296, 1321, 1411, 1372, 1445, 1297, 1347, 1468, 1492, - 1412, 1413, 1490, 1476, 1477, 946, 1087, 1177, 1233, 1279, - 1234, 1235, 1271, 1328, 1300, 1272, 326, 225, 1376, 1274, - 1361, 1358, 1222, 1250, 1290, 1440, 1402, 1138, 1441, 592, - 1485, 1486, 1289, 1357, 1333, 1389, 1384, 1355, 1421, 1426, - 1387, 1390, 1391, 1471, 1427, 1385, 1386, 1481, 1469, 1470, - 836, 1029, 1085, 1170, 1148, 1186, 1171, 1172, 1197, 1082, - 1168, 1196, 534, 195, 113, 352, 197, 562, 442, 226, - 1309, 652, 653, 819, 835, 327, 409, 533, 305, 1151, - 1152, 46, 115, 306, 117, 118, 119, 120, 121, 122, - 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, - 133, 134, 135, 136, 137, 254, 796, 988, 511, 719, - 869, 720, 721, 981, 138, 200, 725, 593, 594, 595, - 596, 790, 475, 476, 299, 986, 727, 410, 301, 498, - 499, 500, 501, 504, 734, 312, 749, 750, 886, 265, - 481, 762, 266, 480, 139, 140, 141, 142, 143, 144, - 145, 146, 147, 148, 149, 150, 151, 152, 153, 571, - 572, 573, 770, 771, 902, 772, 154, 559, 764, 353, - 1004, 548, 1065, 155, 493, 944, 1086, 1175, 1275, 468, - 1156, 1157, 1204, 1205, 820, 551, 338, 767, 1163, 552, - 553, 270, 271, 272, 158, 159, 160, 273, 274, 275, - 276, 277, 278, 279, 280, 281, 282, 283, 284, 172, - 285, 577, 173, 174, 319, 801, 631, 917, 845, 685, - 954, 915, 918, 1045, 919, 955, 956, 286, 175, 176, - 177, 1055, 992, 1056, 1057, 1058, 1104, 1059, 178, 179, - 180, 181, 702, 486, 703, 973, 1097, 704, 970, 705, - 1099, 1100, 182, 183, 184, 185, 186, 187, 307, 524, - 525, 994, 1106, 315, 969, 854, 1132, 1001, 892, 1107, - 188, 420, 189, 421, 920, 1011, 422, 643, 814, 811, - 812, 1016, 423, 424, 425, 426, 427, 428, 924, 633, - 922, 1111, 1180, 1238, 1013, 1142, 1195, 809, 639, 810, - 1073, 1015, 1074, 1143, 1017, 17, 19, 47, 48, 229, - 657, 827, 443, 658, 659, + 8, 50, 9, 51, 10, 11, 52, 234, 690, 432, + 12, 13, 53, 22, 23, 24, 323, 194, 237, 675, + 835, 1027, 1145, 1482, 832, 238, 239, 240, 241, 242, + 243, 244, 245, 668, 447, 669, 670, 937, 671, 672, + 941, 833, 1022, 1023, 1024, 268, 592, 1117, 111, 844, + 1213, 1214, 1215, 1216, 1217, 1218, 1219, 1220, 1221, 1222, + 1223, 1224, 466, 679, 1296, 951, 1124, 1089, 1157, 1181, + 1240, 1307, 1152, 1357, 1334, 1382, 1383, 1384, 953, 1380, + 954, 733, 1273, 1345, 1320, 1370, 515, 1363, 1339, 1399, + 916, 1368, 1371, 1372, 1466, 1400, 1401, 1397, 1225, 1280, + 1252, 1297, 691, 1347, 1446, 1317, 1403, 1475, 467, 269, + 692, 693, 694, 695, 696, 655, 569, 1129, 656, 657, + 850, 1299, 1324, 1414, 1375, 1448, 1300, 1350, 1471, 1495, + 1415, 1416, 1493, 1479, 1480, 949, 1088, 1180, 1237, 1282, + 1238, 1239, 1274, 1331, 1303, 1275, 326, 225, 1379, 1277, + 1364, 1361, 1226, 1254, 1293, 1443, 1405, 1137, 1444, 593, + 1488, 1489, 1292, 1360, 1336, 1392, 1387, 1358, 1424, 1429, + 1390, 1393, 1394, 1474, 1430, 1388, 1389, 1484, 1472, 1473, + 946, 1031, 1148, 1122, 1174, 1149, 1150, 1189, 1085, 1172, + 1201, 534, 195, 113, 352, 197, 563, 442, 226, 1312, + 653, 654, 821, 837, 327, 409, 533, 305, 1153, 1154, + 46, 115, 306, 117, 118, 119, 120, 121, 122, 123, + 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, + 134, 135, 136, 137, 254, 798, 989, 511, 720, 871, + 721, 722, 982, 138, 200, 726, 594, 595, 596, 597, + 792, 475, 476, 299, 987, 728, 410, 301, 498, 499, + 500, 501, 504, 735, 312, 750, 751, 888, 265, 481, + 763, 266, 480, 139, 140, 141, 142, 143, 144, 145, + 146, 147, 148, 149, 150, 151, 152, 153, 572, 573, + 574, 772, 773, 904, 774, 154, 560, 765, 353, 1005, + 548, 1068, 155, 493, 947, 1087, 1178, 1278, 468, 1158, + 1159, 1208, 1209, 822, 552, 338, 769, 1167, 553, 554, + 270, 271, 272, 158, 159, 160, 273, 274, 275, 276, + 277, 278, 279, 280, 281, 282, 283, 284, 172, 285, + 578, 173, 174, 319, 803, 632, 919, 847, 686, 957, + 917, 920, 1047, 921, 958, 959, 286, 175, 176, 177, + 1058, 993, 1059, 1060, 1061, 1103, 1062, 178, 179, 180, + 181, 703, 486, 704, 1050, 974, 1164, 1132, 1197, 705, + 973, 706, 1166, 1099, 182, 183, 184, 185, 186, 187, + 307, 524, 525, 995, 1105, 315, 972, 856, 1131, 1002, + 894, 1106, 188, 420, 189, 421, 922, 1012, 422, 644, + 816, 813, 814, 1017, 423, 424, 425, 426, 427, 428, + 926, 634, 924, 1110, 1184, 1243, 1014, 1141, 1200, 811, + 640, 812, 1076, 1016, 1077, 1142, 1018, 17, 19, 47, + 48, 229, 658, 829, 443, 659, 660, }; - protected static readonly short [] yySindex = { -203, - 0, -188, -181, -197, -24, 1713, 0, -161, 0, 0, - -24, -197, 0, 0, -79, 0, 6807, -24, 0, -185, - -247, 0, 0, 0, 0, 0, 0, 0, 0, 116, - 0, 341, 0, 0, 0,12170, 0, 0, 0, 0, - 0, 0, 0, 0, 3, 0, 0, 176, 0, 0, - -161, 332, -24, 0, 366, 0, 106, 401, 270,11730, - 409, 72, 420, 6964, 0, 72, 72, 72, -143, 72, - 72, 296, 0,10833, 72, 72, 0,10833, 0, 448, - 0, 270, 0, 72, 437, 72, 0,12159,12159, 533, - 72, 72, -138,11513, 0,10833, 0,11513,11513,11513, -11513,11513,11513,11513,11513, 0, 229, 0, 8061, 0, - 41, 0, 505, 403, 504, 327, 0, 0, 531, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 806, - 765, 50, 218, 518, 492, 556, 545, 560, 559, 459, - 580, 0, 0, 0, 0, 0, 0, 3502, 0, 0, + protected static readonly short [] yySindex = { -107, + 0, -185, -95, -152, 9,12153, 0, 112, 0, 0, + 9, -152, 0, 0, -4, 0, 6830, 9, 0, -183, + -232, 0, 0, 0, 0, 0, 0, 0, 0, 133, + 0, 173, 0, 0, 0, 9106, 0, 0, 0, 0, + 0, 0, 0, 0, 664, 0, 0, 679, 0, 0, + 112, 236, 9, 0, 300, 0, 191, 353, 348,11653, + 361, 141, 345, 6987, 0, 141, 141, 141, 22, 141, + 141, 718, 0,10756, 141, 141, 0,10756, 0, 357, + 0, 348, 0, 141, 154, 141, 0, 1216, 1216, 403, + 141, 141, -177,11436, 0,10756, 0,11436,11436,11436, +11436,11436,11436,11436,11436, 0, 164, 0, 8084, 0, + 21, 0, 325, -240, 535, 394, 0, 0, 412, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, -252, 604, -262, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, -175, 241, 332, - 0, 347, 614, 633, 0, 599, 0, 0, 0, 0, - 8061, 8061, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 857, + 635, 93, 591, 518, 700, 461, 419, 519, 478, 374, + 469, 0, 0, 0, 0, 0, 0, 3491, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 652, 611, 0, 647, 0, -266, - 0, 0, 0, 332, 3223, 332, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 773, 651,10969, 0, - 0, 0, 0,10833, 72, 72, 768, 329, 504, 0, - -252, 0, 8061, 0, 0, 0, 0, 0, 0, 0, + 0, 0, -264, 515, -75, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, -202, 150, 236, + 0, 372, 570, 575, 0, 538, 0, 0, 0, 0, + 8084, 8084, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 714, 131,11730, 0, 8061,10833, - 706, 0, 0, 709,10833,10833, 9281, -223, 53, 722, - 8218,11513, 229, 0, 723, 0, 730, 8061,10833, 734, - 484, 72, 0,10833, 448,10289, 0, 0, 437,10833, - 437, 174, 411, 849, -252, 0, 604, 327, 853, -252, -10833,10833,10833, 420, 0, 781, 0, 7121, -280, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 3908, - 0, 0,12127, 174, 800, 809,10833, 0, 775, 0, - 458, 0, 0, 490, 0, 0, 764, 8653,10017, 0, - 0,11513,10833,10833,10833,10833,10833,10833,10833,10833, -10833,10833,10833,11513,11513,11513, 8061, 8061,11513,11513, -11513,11513,11513,11513,11513,11513,11513,11513,11513,11513, -11513,11513,11513,11513,10833, 0, 0, 0, 0, 604, - 0, 0, 0, 0,12159,12159, -252, 0, 0, 0, - 0, -30, 636, 0, 0, 0, 0, 0, 0, 0, - 332, 332, 779, 0, 803, 0, 775, 652, 652, 0, - -186, 0, 541, 652, 856, 0, -179, 3223, 0, 0, - 0, 0, -184, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 190,12735, 0, 0, 0, - 775, 0, 0, 843, 578, 0, 859, 0, 862, -81, - 448, 72, 0, 0, -252, 8201, -105, 0, 860, 0, - 0, 0, 866, 867, 0, 297, 0, 872, 0, 869, - 0, 0, 0, 602, 0, 8337, 609,10833, 722,10017, - 0, 7592, 0, 437, 0, 0, 0, 876, 879, 0, - 0, 270, 448, 272, 0, 1003, 880, 0, 882, -252, - 0, 884, 0, 0, 0,10833, 947, 0, 0, 0, -10833, 950, 883, 0, 886, 888, 0,12127, 0, 0, - -303, 7121, 0, 0, 0, 0, 0, 0, 448, 0, - 0, -253, 0, 0, 0, 437, 174, -252, 8513, 0, - 887, 0, 890,11513, 0, 889, 7121, 0, 129, 0, - 360, 0, 775, 0, 33,10833,10833, 892, 1008, 0, - 0, -18, 897, 0, 0, 0, 765, 0, 0, 0, + 0, 0, 0, 0, 600, 547, 0, 578, 0, -261, + 0, 0, 0, 236,12756, 236, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 774, 639,10892, 0, + 0, 0, 0,10756, 141, 141, 811, 327, 535, 0, + -264, 0, 8084, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 765, 765, 50, 50, 218, 218, 218, - 218, 518, 518, 492, 556, 545, 560, 559, 0, 891, - -125, 0,10833, 980, -252, 981, -252, 895,10833, 0, - 0, 0, 921, 0, 358, 775, 0, 0, 0, 0, - 600, 165, 0, 8513, 541, 0, 907, 909, 0, 0, - 0, 0, 0, 0, 174, 614, 0, 906, 910, 0, - 0, 0, 0, 912, 8670, 0, 0, 363, 0, 0, - 567, 0,10969, 0, 905, 0, 0, 0, 557, 916, - 0, 915, 918, 919, 0, 0,10833, 0, 0, -252, - 0, 0, 920, 0, 926,10833, 1000, 0, 6964, 6964, - 8496, 0, 9281, 0, 0,10425, 145, 0, -279, -127, - 0, 877, 878, 0, 66, 0, 0, 923, 0, 0, - 0, 0, 0, 942, 0, 951, 0, 4226, 0, 448, - 0, 0, 437, 462, 896, 0, -69, 0, 948, 953, - 0, 6964, 0, 6964, 0,10833, 0,10833, 8061, 0, - 0, 448, 952, 448, 0, 0, 0, 0, 0, 0, - 0, 8810, 8061, 0, 0, -252,12127, 984, 0, 0, + 0, 0, 0, 0, 744, 155,11653, 0, 8084,10756, + 727, 0, 0, 730,10756,10756, 9147, 460, 38, 750, + 8241,11436, 164, 0, 638, 0, 735, 8084,10756, 752, + 493, 141, 0,10756, 357,10212, 0, 0, 154,10756, + 154, 244, 453, 860, -264, 0, 515, 394, 865, -264, +10756,10756,10756, 345, 0, 777, 0, 7144, -274, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 3897, + 0, 0,12082, 244, 779, 793,10756, 0, 759, 0, + 123, 0, 0, 514, 0, 0, 747, 8676, 9940, 0, + 0,11436,10756,10756,10756,10756,10756,10756,10756,10756, +10756,10756,10756,11436,11436,11436, 8084, 8084,11436,11436, +11436,11436,11436,11436,11436,11436,11436,11436,11436,11436, +11436,11436,11436,11436,10756, 0, 0, 0, 0, 515, + 0, 0, 0, 0, 1216, 1216, -264, 0, 0, 0, + 0, 138, 629, 0, 0, 0, 0, 0, 0, 0, + 236, 236, 762, 0, 766, 0, 759, 600, 600, 0, + -126, 0, 510, 600, 837, 0, -196,12756, 0, 0, + 0, 0, -169, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 109,12786, 0, 0, 0, + 759, 0, 0, 817, 550, 0, 829, 0, 851, 26, + 357, 141, 0, 0, -264, 8224, -170, 0, 848, 0, + 0, 0, 854, 859, 0, 245, 0, 867, 0, 866, + 0, 0, 0, 567, 0, 8360, 632,10756, 750, 9940, + 0, 7615, 0, 154, 0, 0, 0, 872, 873, 0, + 0, 348, 357, 368, 0, 1397, 874, 0, 875, -264, + 0, 877, 0, 0, 0,10756, 957, 0, 0, 0, +10756, 959, 880, 0, 883, 884, 0,12082, 0, 0, + -200, -276, 7144, 0, 0, 0, 0, 0, 0, 357, + 0, 0, 289, 0, 0, 0, 154, 244, -264, 8536, + 0, 895, 0, 898,11436, 0, 896, 7144, 0, 16, + 0, 19, 0, 759, 0, -85,10756,10756, 900, 1017, + 0, 0, 48, 901, 0, 0, 0, 635, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 9881, 0, 0, 0, 0,10153,10833, 0, 7749, - 949, 0, 0, 1034, 0, 1035, 0, 678, 0, 957, -10833,10833, -252, 0, 0, 0, 0, 0, 914, 0, - -186, 0, 0, 0, 0, 541, 541, 0, 779, 968, - 970, 924, 972, 925, 0, 925, 0, 1088, 1089, 0, - 0,10833, 0,10561, 973, 557, 8513, 8061, 0, 114, - 1090, 1093, 979, 974, 0, 8967,10833, 982,10833, 1073, - 0, 0, 0, 0, 40,10697, 0, 0, 0, 0, - 7885, 0, 1101, 0, 604,10833, 991, 8496, 993, 0, - 0, -252, 0, 30, 0, 0, 775, 896, 0, -252, - 0, -99, 0, 0, 0, 992, 0, 1022, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 497, 0, 0, - 0, 0, 8218, 0, 0, -252, 994, 949, 0,10833, - 0,10833, 0,10833, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 997, 779, 0, 0,11105, 0, 0, - 0, 998, 996, 925, 0, 925, 0, 925, 0, 0, - 0, 0, -252, 1002, 973, 0, 0, 0, -176, -174, - 1005, 1009, 0, 0, 0, 0, 1006, 8496, 949, -125, - 0, 0, 1010, 0, 0, 1004, 6964, 0, 0, 0, - 0, 0, 0, 1014, 0, 722, 0, 0, 0, 0, - 0, -214, 0, 1026, 775, 896, 0, 896, 0, 949, - 1027, 0, 0, 448, 0, 983, 1021, 0, 0, 0, -10833, 1056,10833, 0,10833, 1023, 265, 0, 910, 302, - 627, 0, 0, 0, 0, -197, 0, 4385, 0, 0, - 0, 0, 1024, 0, 0, 0, 530, 0, 1031, 1151, - 1152, 0, 0, 949, 1042, 949,10833, 0, 0, 0, - 0, 0,10833, 0, 1051, -173, 0, -173, 0, 0, - 0, 0, 0, 0, 448, 0,10833, 8044, 0, 0, - 1076, 748, 1050, 0,10833, 0, 1059, 0, 0,11105, - -24, -81, 0, 0, 1066, 1060, 1060, 1060,10561, 1069, - 0,10833, 0, 0, 0, 0, 1054, 926, 0, 6964, - 1065, 0, 0, 7121, 0, 1074, 6964, 0, 1075, 0, -10833, 0, 0, 0, 0, 0, 0,10833, 0, 0, - 332, 1072, 0, 4544, -148, -148, -148, 0, 0,10833, - 0, 6964, 6964, 0, 0, 7121, 0, 0, 0, 0, - 1099,10833,10833, 0, 332, 1081, 0, 332, 0, 0, - 1078, 0, 0, 1036, 0, 1114, 0, 0, 0, 0, - 0, 0, 7121, 0, 1112, 0, 1085, -148, 1044, 0, - 1091, 0, 4544, 1092, 1105, 0, 1107, 1108, 1098,10833, - 0, 0, 0, 0, 0, 1113, 332, 0,11809, -151, - 332, 0, 0, 1120,10833, 1104, 1103, 1085, 0, 0, - 1111, 0, 0, 1116, 0, 0,12735, 0, 1123, -151, + 0, 0, 0, 0, 635, 635, 93, 93, 591, 591, + 591, 591, 518, 518, 700, 461, 419, 519, 478, 0, + 902, -180, 0,10756, 982, -264, 984, -264, 899,10756, + 0, 0, 0, 923, 0, 494, 759, 0, 0, 0, + 0, 525, 298, 0, 8536, 510, 0, 910, 909, 0, + 0, 0, 0, 0, 0, 244, 570, 0, 911, 913, + 0, 0, 0, 0, 912, 8693, 870, 0, 383, 0, + 0, 465, 0,10892, 0, 903, 0, 0, 0, 586, + 919, 0, 920, 921, 930, 0, 0,10756, 0, 0, + -264, 0, 0, 929, 0, 932,10756, 1013, 0, 6987, + 6987, 8519, 0, 9147, 0, 0,10348, 459, 0, -242, + -104, 0, 879, 886, 0, 51, 0, 0, 938, 0, + 0, 0, 0, 0, 937, 0, 945, 0, 4215, 0, + 357, 0, 0, 154, 512, 892, 0, -72, 0, 946, + 944, 0, 6987, 0, 6987, 0,10756, 0,10756, 8084, + 0, 0, 357, 948, 357, 0, 0, 0, 0, 0, + 0, 0, 0, 8833, 8084, 0, 0, -264,12082, 978, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 331,12735, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1125, 332, 0, -151, -252, 0, 1120, 0, -10833, 0, 1122,11809,11901, 0, 0, 467, 0, 0, - 0,11975, 0, 0, 1127, 0, 0, 0, 0, 0, - 8061, 8061, 269, 8218, 274, 437, 1159, 0, 174, 317, - 0, 1183, 0, 0, 1085, 0, 0, 0, 1085, 0, - 1082, 1083, 0, 8061, -172, 0, 8061, 0, 1084, 1128, - 0, 174, 0, 1133, 9317, 0, 1136, 1097, -239, 550, -12170, 0, 0, 1085, 0, 174, 0, 1139, 1100, 1137, - 1135, 0, 1138, 1083, 1145, -81, 1140, 1144, 0, 1148, - 1153, 0, 775, 0, 724, 0, 0, 0, 1154, 0, - -97, 0, 1143, 0, 0, 1157, 0, 1158, 1162, 1168, - 0, 1156, 0, -81, -81, 0, -81, 1171, 1172, 0, - 0, 0, 0, 1174, -119, 0, 1178, -81, 1275, 1179, - -81, 0, 467, 0, 8496, 1142, 1170, 1156, 0, 1182, - 1185, -71, 1191, 0, 0, -81,10561, 1147, 1190, 1174, - 0, 0,12735, 0, 332, 332, 0, 1149, 1193, 1178, - 0, 1198, 0,10833, 1160, 1195, 1179, 0, 1200, -81, - 0, -156, 0, 1194, 0, 0, 0, 0, 0,12735, - 0, -71, -71, 1188, 1202, 0, -97, 0, 0, 184, - 1208,12735, 0,12735, 0, 0, 8496, 1199, 0, 0, - 0, 1209, 1157, 0, 0, 0, 1211, 0, -160, 0, - 0, 0, -148, 791, 1216, 0, 0, 0, 0, 0, - 0, 0, 0, 1270, 1323, 0, 0, 0, 0, 0, - 1218, 1219, 8496, 0, 0, 0, 0, -71, 555, 555, - 0, -148, 0, 0, 0, -66, -66, 0, 0, 0, - 0, 0, 0, 0,10017,10017, 0, 0, 0, 0, - 0, 1223, 1215, 1220, 0, 0, 0, + 0, 0, 0, 9804, 0, 0, 0, 0,10076,10756, + 0, 7772, 949, 0, 0, 1028, 0, 1030, 0, 558, + 0, 951,10756,10756, -264, 0, 0, 0, 0, 0, + 908, 0, -126, 0, 0, 0, 0, 510, 510, 0, + 762, 958, 956, 914, 962, 870, 0, 963, 0, 1075, + 1078, 0, 0,10756, 0,10484, 966, 586, 8536, 8084, + 0, 358, 1081, 1087, 972, 964, 0, 0,10756, 977, +10756, 1070, 0, 0, 0, 0, 13,10620, 0, 0, + 0, 0, 7908, 0, 1096, 0, 515,10756, 989, 8519, + 993, 0, 0, -264, 0, -36, 0, 0, 759, 892, + 0, -264, 0, -171, 0, 0, 0, 985, 0, 1019, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 720, + 0, 0, 0, 0, 8241, 0, 0, -264, 995, 949, + 0,10756, 0,10756, 0,10756, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1002, 762, 0, 0,11028, + 0, 0, 0, 1005, 4374, 0, 870, 0, 870, 0, + 870, 0, 0, 0, 0, -264, 1001, 966, 0, 0, + 0, -166, -163, 1004, 1008, 0, 0, 0, 0, 1007, + 8519, 949, -180,10756, 0, 0, 1012, 6987, 0, 0, + 0, 0, 0, 0, 1015, 0, 750, 0, 0, 0, + 0, 0, -198, 0, 1014, 759, 892, 0, 892, 0, + 949, 1016, 0, 0, 357, 0, 967, 1006, 0, 0, + 0,10756, 1042,10756, 0,10756, 1041, 183, 0, 913, + 474, 723, 0, 0, 0, 0, -152, 0, 0, 0, + 1031, 0, 0, 0, 1018, 0, 0, 0, 455, 0, + 1020, 1139, 1141, 0, 0, 949, 1032, 949, 0, 1026, + 0, 0, 0, 0, 0,10756, 0, 1035, -193, 0, + -193, 0, 0, 0, 0, 0, 0, 357, 0,10756, + 8067, 0, 0, 1059, 789, 1033, 0,10756, 0, 1038, + 0, 0,11028, 9, 26, 0, 1034, 1034, 1034,10484, + 1040, 0,10756, 0, 0, 0, 0, 0, 6987, 1036, + 0, 0, 7144, 0, 1045, 6987, 0, 1046, 0,10756, + 0, 0, 0, 0, 0, 0,10756, 0, 0, 236, + 1043, 236, 4533, -6, -6, -6, 0, 0,10756, 0, + 6987,10756, 0, 0, 7144, 0, 0, 0, 0, 1057, +10756,10756, 0, 236, 1051, 0, 1010, 0, 1049, 0, + 0, 0, 1050, 0, 0, 1021, 0, 1091, 0, 0, + 0, 0, 0, 1060, 932, 0, 7144, 0, 1083, 0, + 1061, -6, 0, 1065, 236, 4533, 1066, 1068, 0, 1069, + 1073, 0, 1074,10756, 0, 0, 0, 0, 1063, 1061, + 0, 0,11732, -86, 236, 0, 6987, 0, 1089,10756, + 1071,10756, 0, 0, 1077, 0, 0, 1079, 0, 0, +12786, 0, 1084, -86, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 284,12786, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1086, 236, 0, -86, + 0, -264, 0, 1089, 0, 0, 1085,11732,11898, 0, + 0, 471, 0, 0, 0,11930, 0, 0, 1088, 0, + 0, 0, 0, 8084, 8084, 282, 8241, 302, 154, 1114, + 0, 244, 9740, 0, 1150, 0, 0, 1061, 0, 0, + 0, 1061, 0, 1044, 1052, 0, 8084, -162, 0, 8084, + 0, 1055, 1090, 0, 244, 0, 1092, 825, 0, 1099, + 1056, -224, 499, 9106, 0, 0, 1061, 0, 244, 0, + 1102, 1062, 1104, 1082, 0, 1105, 1052, 1106, 26, 1098, + 1111, 0, 1116, 1118, 0, 759, 0, 725, 0, 0, + 0, 1117, 0, -122, 0, 1112, 0, 0, 1123, 0, + 1125, 1122, 1129, 0, 1128, 0, 26, 26, 0, 26, + 1130, 1134, 0, 0, 0, 0, 1135, -57, 0, 1136, + 26, 1257, 1143, 26, 0, 471, 0, 8519, 1097, 1142, + 1128, 0, 1147, 1149, -31, 1152, 0, 0, 26,10484, + 1107, 1148, 1135, 0, 0,12786, 0, 236, 236, 0, + 1115, 1154, 1136, 0, 1151, 0,10756, 1119, 1164, 1143, + 0, 1170, 26, 0, -190, 0, 1163, 0, 0, 0, + 0, 0,12786, 0, -31, -31, 1178, 1177, 0, -122, + 0, 0, -149, 1183,12786, 0,12786, 0, 0, 8519, + 1171, 0, 0, 0, 1184, 1123, 0, 0, 0, 1185, + 0, 110, 0, 0, 0, -6, 783, 1187, 0, 0, + 0, 0, 0, 0, 0, 0, 1241, 1296, 0, 0, + 0, 0, 0, 1189, 1190, 8519, 0, 0, 0, 0, + -31, 543, 543, 0, -6, 0, 0, 0, -92, -92, + 0, 0, 0, 0, 0, 0, 0, 9940, 9940, 0, + 0, 0, 0, 0, 1194, 1192, 1193, 0, 0, 0, }; - protected static readonly short [] yyRindex = { 1688, - 0, 0, 7278, 1688, 0, 0, 0, 1593, 0, 0, - 3179, 3004, 0, 0, 0, 0, 0, 3179, 0, 0, - 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, + protected static readonly short [] yyRindex = { 1348, + 0, 0, 7301, 1348, 0, 0, 0, 1566, 0, 0, + 3157, 1058, 0, 0, 0, 0, 0, 3157, 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, 1597, 0, 0, 1597, 0, 0, - 1593, 1226, 3073, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1231, 0, 0, 0, 0, 0, 0, 0, - 0, 8827, 0, 1240, 0, 0, 0, 1240, 0, 0, - 0, 0, 0, 0, 213, 0, 0, 0, 0, 0, - 0, 0, 0, 103, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 4765, 0, 0, 0, - 0, 0, 0, 267, 4702, 3978, 0, 0, 4543, 0, + 0, 0, 0, 0, 1568, 0, 0, 1568, 0, 0, + 1566, 3200, 3071, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1202, 0, 0, 0, 0, 0, 0, 0, + 0, 8850, 0, 1195, 0, 0, 0, 1195, 0, 0, + 0, 0, 0, 0, -289, 0, 0, 0, 0, 0, + 0, 0, 0, 162, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 4754, 0, 0, 0, + 0, 0, 0, 193, 4691, 3967, 0, 0, 4532, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 4858, - 4962, 5270, 5474, 5814, 6018, 6154, 6290, 6426, 6562, 6686, - 1041, 0, 0, 0, 0, 0, 0, 47, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 4847, + 4951, 5259, 5463, 5803, 6007, 6143, 6279, 6415, 6551, 294, + -172, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 827, 827, 3266, - 0, 423, 1241, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1597, 127, 0, 0, 0, 0, - 0, 0, 0, 3329, 440, 3376, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 3589, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 839, 839, 3263, + 0, 671, 1196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1568, 37, 0, 0, 0, 0, + 0, 0, 0, 3326, 537, 3369, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1250, 0, 0, 0, - 0, 0, 3589, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 2115, 0, - 2664, 346, 2245, 0, 0, 0, 2392, 2245, 0, 0, - 0, 0, 0, 1231, 0, 0, 0, -51, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 3578, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1247, 2517, 0, 0, 1240, 0, 3589, 0, - 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 1205, 0, 0, 0, + 0, 0, 3578, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 2278, 0, + 2827, 340, 2408, 0, 0, 0, 2555, 2408, 0, 0, + 0, 0, 0, 1202, 0, 0, 0, 130, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1359, + 0, 0, 1203, 2680, 0, 0, 1195, 0, 3578, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 151, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 102, 0, 0, 0, 0, 0, 0, 0, - 3423, 2822, 0, 0, 0, 0, 1962, 1597, 1597, 0, - -118, 0, 7609, 1597, 1622, 0, 0, 173, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 410,11662, 0, 0, 0, - 3589, 0, 0, 0, 0, 0, 0, 0, 0,12007, - 0, 0, 0, 0, 0, 1248, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 688, 830, 0, 0, 1255, - 0, 0, 0, 0, 0, -43, 0, 0, 4066, 1253, - 0, 0, 0, 231, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1539, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1247, 0, 0, - 0, -37, 0, 0, 0, 0, 0, 0, 9124, 0, - 0, 0, 0, 0, 0, 5, 674, 0, 0, 0, - 1254, 0, 0, 0, 0, 0, 0, 0, 3589, 0, - 3589, 0, 4225, 0, 0, 0, 0, 148, 0, 0, - 0, 0, 13, 0, 0, 0, 5030, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1438, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 5134, 5202, 5338, 5406, 5542, 5610, 5678, - 5746, 5882, 5950, 6086, 6222, 6358, 6494, 6618, 0, 0, - 482, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 454, 0, 0, 1962, 0, 0, 0, 0, - 1212, 0, 0, 0, 8984, 0, 0, 716, 0, 0, - 0, 0, 0, 0, 744, 466, 0, 0, 1257, 0, - 0, 0, 0, 1261, 0, 0, 0, 0, 0, 0, -11241, 0, 0, 0, 664, 0, 0, 0, 9141, 0, - 0, 727, 751, 759, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1256, 0, 0, 0, 0, 0, - 0, 0, 1263, 0, 0, 0, 3655, 0, 0, -23, - 0, 91, 3748, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1265, 0, 0, 0, 0, 0, 0, - 0, 0, -5, 588, 0, 0, 0, 0, 0, 1262, + 0, 0, 156, 0, 0, 0, 0, 0, 0, 0, + 3412, 2985, 0, 0, 0, 0, 2125, 1568, 1568, 0, + 31, 0, 7632, 1568, 1574, 0, 0, 169, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 9124, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 421,11585, 0, 0, 0, + 3578, 0, 0, 0, 0, 0, 0, 0, 0,11974, + 0, 0, 0, 0, 0, 1200, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 620, 636, 0, 0, 1209, + 0, 0, 0, 0, 0, 145, 0, 0, 4055, 1206, + 0, 0, 0, -211, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1829, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1203, 0, 0, + 6670, 0, 152, 0, 0, 0, 0, 0, 0, 8990, + 0, 0, 0, 0, 0, 0, 127, 517, 0, 0, + 0, 1208, 0, 0, 0, 0, 0, 0, 0, 3578, + 0, 3578, 0, 4214, 0, 0, 0, 0, 180, 0, + 0, 0, 0, 181, 0, 0, 0, 5019, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 170, 0, 0, 0, - 1259, 0, 0, 0, 0, 0, 0, 323, 0, 586, + 0, 0, 0, 0, 5123, 5191, 5327, 5395, 5531, 5599, + 5667, 5735, 5871, 5939, 6075, 6211, 6347, 6483, 6607, 0, + 0, 740, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 2784, 0, 0, 2125, 0, 0, 0, + 0, 1167, 0, 0, 0, 9007, 0, 0, 751, 0, + 0, 0, 0, 0, 0, 644, 675, 0, 0, 1211, + 0, 0, 0, 0, 1219, 0, 0, 0, 0, 0, + 0,11164, 0, 0, 0, 755, 0, 0, 0,12172, + 0, 0, 785, 790, 794, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1227, 0, 0, 0, 0, + 0, 0, 0, 1236, 0, 0, 0, 3644, 0, 0, + 153, 0, 55, 3737, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1238, 0, 0, 0, 0, 0, + 0, 0, 0, 194, 702, 0, 0, 0, 0, 0, + 1235, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 8990, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - -118, 0, 0, 0, 0, 9141, 7766, 0, 1266, 0, - 642, 0, 0, 0, 0, 0, 0, 1221, 1222, 0, - 0, 0, 0, 0, 1268,12203, 0, 0, 0,12083, - 0, 0, 0, 772, 0, 1269, 0, 0, 0, 1833, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 3907, 0, 4384, 1273, 0, 0, - 0, 1274, 0, 0, 0, 0, 275, 0, 0, 0, - 0, 772, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 258, 0, + 0, 0, 1232, 0, 0, 0, 0, 0, 0, 251, + 0, 269, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 31, 0, 0, 0, 0,12172, 7789, 0, + 1240, 0, 668, 0, 0, 0, 0, 1244, 0, 1197, + 1199, 0, 0, 0, 0, 0, 1237,12226, 0, 0, + 0,12050, 0, 0, 0, 796, 0, 0, 0, 0, + 0, 1996, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 3896, 0, 4373, 1246, + 0, 0, 0, 1247, 0, 0, 0, 0, 335, 0, + 0, 0, 0, 796, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1271, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1242, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 787, 0, 0, - 0, 0, 1281, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1278, 0, 0, 0, 0, 0, - 795, 796, 0, 0, 0, 0, 0, 0, 1277, 482, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 807, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 4066, 0, 0, 0, 0, - 0, 1282, 0, 0, 275, 0, 0, 834, 0, 1277, - 0, 0, 0, 9124, 0, 595, 681, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 167, 0, 1257, 9318, - 0, 0, 0, 0, 0,12299, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 694, 0, 758, 0, - 0, 0, 0, 1283, 0, 1259, 1286, 0, 0, 0, - 0, 0, 0, 0, 0, 1291, 0, 7435, 0, 0, - 0, 0, 0, 0, 9124, 0, 0, 0, 0, 0, - 0, 535, 658, 0, 0, 0, 0, 0, 0, 0, -12342,12007, 0, 0, 0, -21, -21, -21, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1288, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1245, 0, 0, + 0, 0, 0, 823, 827, 0, 0, 0, 0, 0, + 0, 1250, 740, 1248, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 4055, 0, 0, 0, + 0, 0, 1255, 0, 0, 335, 0, 0, 842, 0, + 1250, 0, 0, 0, 8990, 0, 587, 688, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 167, 0, 1211, + 9184, 0, 0, 0, 0, 0,12268, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 693, 0, + 709, 0, 0, 0, 0, 1254, 0, 1232, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1259, 0, + 7458, 0, 0, 0, 0, 0, 0, 8990, 0, 0, + 0, 0, 0, 0, 386, 420, 0, 0, 0, 0, + 0, 0, 0,12344,11974, 0, 147, 147, 147, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -12428, 0, 0, 0, 1295, 1295, 1295, 0, 0, 0, - 0, 0, 0, 0, 0, -159, 0, 0, 0, 0, - 0, 0, 0, 0,12471, 0, 0, -226, 0, 0, - 138, 0, 0, 0, 0, 566, 0, 0, 0, 0, - 0, 0, 1297, 0, 0, 0, 3136, 1287, 0, 0, - 1299, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 521, 0, 144, 0, 0, 9472, - 9670, 0, 0, 675, 0, 0, 0, 2941, 0, 0, - 0, 0, 0, 383, 0, 0, 1155, 0, 0, 9571, + 0, 0, 0, 0, 0, 0, 0, 0, 0,12449, + 0, -87, 0, 1249, 1249, 1249, 0, 0, 0, 0, + 0, 1256, 0, 0, -209, 0, 0, 0, 0, 0, + 0, 0, 0,12492, 0, 0, 0, 0, 1262, 0, + 0, 0, 161, 0, 0, 0, 0, 569, 0, 0, + 0, 0, 0, 0, 1261, 0, 1263, 0, 0, 0, + 3114, 1260, 548, 0, 171, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1661, + 0, 0, 0, 9338, 9536, 0, 0, 0, 454, 0, + 0, 0, 0, 0, 0, 0, 0, 285, 0, 0, +11756, 0, 0, 9437, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,11824, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 9630, 0, 9338, + 0, 0, 0, 454, 0, 0, 0, 0, 421, 0, + 0, 0, 0, 0, 0, 421, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1591, 424, + 0, 9672, 0, 0, 0, 4688, 0, 1661, 0, 0, + 0, 1661, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 593, 0, 1268, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1661, 0, 734, 0, + 624, 0, 0, 0, 0, 0, 0, 0,11974, 826, + 0, 0, 0, 0, 0, 1239, 0, 660, 0, 0, + 0, 0, 0, 0, 0, 831, 0, 0, 0, 0, + 0, 0, 0, 0, 1264, 0,11974,11974, 0,12006, + 0, 0, 0, 0, 0, 0, 1265,12716, 0, 1266, +11974,11300, 1267,11974, 0, 0, 0, 0, 0, 0, + 1270, 0, 0, 0,12686, 0, 0, 0,11974, 0, + 0, 0, 1271, 0, 0, 312, 0,12610,12648, 0, + 0, 0, 1275, 0, 0, 0, 0, 0, 0, 1276, + 0, 0,11974, 0, 573, 0, 835, 0, 0, 0, + 0, 0, 853, 0,12534,12572, 0, 0, 0, 0, + 0, 0, 0, 0, 1324, 0, 1391, 0, 0, 0, + 836, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 577, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,11833, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 9764, 0, 9472, 0, 0, 675, 0, - 0, 0, 0, 0, 410, 0, 0, 0, 0, 0, - 0, 410, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 2663, 433, 0, 9806, 0, - 0, 0, 4699, 0, 2941, 0, 0, 0, 2941, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 619, 0, 1305, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 2941, 0, 668, 0, 587, 0, 0, - 0, 0, 0, 0, 0,12007, 797, 0, 0, 0, - 0, 0, 1264, 0, 703, 0, 0, 0, 0, 0, - 0, 0, 814, 0, 0, 0, 0, 0, 0, 0, - 0, 1298, 0,12007,12007, 0,12051, 0, 0, 0, - 0, 0, 0, 1301,12695, 0, 1302,12007,11377, 1303, -12007, 0, 0, 0, 0, 0, 0, 1306, 0, 0, - 0,12665, 0, 0, 0,12007, 0, 0, 0, 1307, - 0, 0, 293, 0,12589,12627, 0, 0, 0, 1309, - 0, 0, 0, 0, 0, 0, 1310, 0, 0,12007, - 0, 574, 0, 819, 0, 0, 0, 0, 0, 805, - 0,12513,12551, 0, 0, 0, 0, 0, 0, 0, - 0, 1314, 0, 1375, 0, 0, 0, 820, 0, 0, +12686,11472,12386, 0, 577, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1206, 1206, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 577, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0,12665,11549,12385, - 0, 577, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1253, 1253, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, }; protected static readonly short [] yyGindex = { 0, - 0, 1591, 0, 0, 0, 4, -8, -178, -50, 1621, - 0, 1663, 1676, 693, 0, 0, 2, 0, 0, 0, - 0, 0, 0,-1107, -682, -217, -418, 0, 0, 0, - 0, 0, -191, 0, 0, 0, 752, 0, 861, 0, - 0, 0, 0, 613, 616, -17, -230, 0, 65, 0, - 453, 0, 481, -673, -651, -576, -570, -566, -539, -510, - -487, 0,-1012, 0, 10, 0, 112, 0,-1090, 0, - 0, 0, -82, 277, 0, 0, 0, 319,-1050, 0, - -275, -299, 1025, 0, 0, 0, -875, 271, 0, 0, - -498, 0, 0, 333, 0, 0, 305, 0, 0, 355, - 0,-1152, -810, 0, 0, 0, 0, 0, 449, -13, - 0, 0, 870, 873, 874, 1039, -506, 0, 0, -319, - 893, 443, 0,-1008, 0, 0, 0, 0, 0, 0, - 0, 0, 259, 0, 0, 0, 0, 0, 0, 0, - 0, 516, 0, 0, 0, 0, -333, 472, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 552, 0, -501, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 307, - 0, 0, 386, 0, 0, 394, 398, 315, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 603, 0, 0, - 0, 0, -58, 0, -15, -142, 0, 0, 461, 0, - 517, 0, 971, 0, 1267, -290, -278, -52, 804, 0, - 618, 0, -42, 268, 0, 0, 100, 0, 0, 0, + 0, 1605, 0, 0, 0, -3, -15, -182, -42, 1611, + 0, 1654, 1663, 94, 0, 0, -11, 0, 0, 0, + 0, 0, 0, -822, -699, -223, -382, 0, 0, 0, + 0, 0, -194, 0, 0, 0, 733, 0, 843, 0, + 0, 0, 0, 590, 592, -17, -230, 0, 47, 0, + 437, 0, 464,-1118,-1099, -891, -662, -556, -504, -493, + -484, 0,-1139, 0, 1, 0, 131, 0,-1075, 0, + 0, 0, -74, 259, 0, 0, 0, 297,-1057, 0, + -272, -298, 1011, 0, 0, 0, -889, 246, 0, 0, + -496, 0, 0, 318, 0, 0, 291, 0, 0, 329, + 0, -552, -895, 0, 0, 0, 0, 0, 423, -13, + 0, 0, 841, 846, 850, 1022, -523, 0, 0, -322, + 858, 422, 0, -872, 0, 0, 0, 0, 0, 0, + 0, 0, 225, 0, 0, 0, 0, 0, 0, 0, + 0, 470, 0, 0, 0, 0, -331, 405, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 485, 0, -505, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 240, + 0, 0, 323, 0, 0, 331, 330, 248, 0, 0, + 0, 0, 0, 0, 0, 0, 549, 0, 0, 0, + 0, -61, 0, 241, -101, 0, 0, 395, 0, 452, + 0, 906, 0, 1204, -295, -279, -51, 788, 0, 561, + 0, -43, 315, 0, 0, 8, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, -269, 0, 1166, 0, 0, -540, 0, 0, + 0, 868, 0, -301, -137, 1009, 950, 0, 939, 0, + 1158, 1371, 1067, 0, 0, 765, 1670, 0, 0, 0, + 0, 1039, 0, 0, 0, 0, 0, -517, 1420, 0, + 0, 0, 0, 0, 1198, 492, 830, 583, 832, 1357, + 1358, 1356, 1359, 1361, 0, 1363, 0, 0, 0, 983, + 1217, -725, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, -297, 0, 0, 0, 0, -455, 0, + 610, 0, 521, 0, 603, 0, 0, 0, 669, -529, + 10, -313, 15, 0, 1617, 0, 61, 0, 65, 72, + 78, 87, 88, 102, 104, 105, 106, 108, 0, -672, + 0, -16, 0, 0, 805, 0, 731, 0, 0, 0, + 710, -173, 782, -858, 0, 822, -457, 0, 0, 0, + 0, 0, 0, 736, 0, 0, 737, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, -267, 0, 31, 0, 0, -140, 0, - 0, 0, 927, 0, -300, -130, 1086, 1007, 0, 1011, - 0, 1207, 1421, 1117, 0, 0, 811, 1729, 0, 0, - 0, 0, 1109, 0, 0, 0, 0, 0, -732, 1477, - 0, 0, 0, 0, 0, 1210, 397, 836, 740, 835, - 1422, 1420, 1424, 1433, 1434, 0, 1419, 0, 0, 0, - 1063, 1296, -721, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, -288, 0, 0, 0, 0, -444, - 0, 680, 0, 601, 0, 683, 0, 0, 0, 743, - -526, -14, -325, 12, 0, 1690, 0, 38, 0, 58, - 70, 73, 93, 95, 99, 101, 107, 111, 119, 0, - -669, 0, -25, 0, 0, 881, 0, 808, 0, 0, - 0, 782, -585, 852, -870, 0, 894, -461, 0, 0, - 0, 0, 0, 0, 821, 0, 0, 798, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 812, - 0, 0, 0, 0, 0, 0, 0, 0, -34, 0, - 1336, 0, 0, 0, 986, 0, 0, 0, 0, 0, - 0, -165, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1439, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 643, 0, 0, 0, 0, 0, 0, - 0, 0, 732, 0, 0, 0, 0, 0, 0, 18, - 1058, 0, 0, 0, 1055, + 0, 665, 0, 0, 0, 0, 0, 0, 0, 0, + -35, 0, 1272, 0, 0, 0, 905, 0, 0, 0, + 0, 0, 0, -176, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1379, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 559, 0, 0, 0, 0, + 0, 0, 0, 0, 662, 0, 0, 0, 0, 0, + 0, -7, 1024, 0, 0, 0, 979, }; protected static readonly short [] yyTable = { 110, - 513, 235, 156, 112, 196, 325, 330, 18, 728, 190, - 516, 431, 555, 733, 489, 44, 449, 259, 473, 570, - 509, 193, 679, 430, 701, 768, 355, 406, 157, 497, - 543, 532, 318, 569, 261, 1158, 1159, 1006, 1128, 860, - 861, 1052, 899, 310, 469, 253, 927, 1009, 538, 434, - 781, 879, 1, 1053, 161, 362, 304, 370, 445, 1183, - 304, 363, 776, 371, 765, 231, 311, 14, 313, 650, - 191, 672, 196, 196, 162, 16, 662, 1184, 339, 1036, - 413, 1038, 891, 1311, 893, 1324, 163, 20, 867, 164, - 1242, 557, 263, 196, 1053, 49, 287, 288, 289, 1438, - 295, 296, 663, 1461, 1206, 308, 309, 1153, 784, 165, - 292, 166, 314, 411, 316, 167, 320, 168, 438, 439, - 773, 332, 333, 169, 290, 766, 347, 170, 870, 1307, - 799, 632, 291, 294, 664, 171, 1382, 473, 334, 235, - 110, 313, 1320, 156, 112, 369, 502, 823, 558, 868, - 503, 43, 324, 329, 2, 997, 999, 336, 1352, 260, - 2, 1338, 774, 414, 1462, 293, 412, 1302, 415, 157, - 416, 1303, 6, 1009, 687, 48, 417, 418, 1325, 434, - 479, 198, 233, 448, 1409, 196, 196, 48, 706, 1487, - 1154, 48, 746, 260, 1245, 161, 1330, 260, 260, 260, - 260, 260, 260, 260, 260, 722, 487, 1054, 784, 726, - 1252, 434, 862, 449, 570, 162, 578, 233, 1439, 292, - 3, 4, 5, 6, 292, 518, 555, 163, 569, 15, - 164, 472, 192, 673, 656, 570, 477, 408, 665, 446, - 469, 1037, 440, 1039, 259, 1312, 871, 196, 1054, 233, - 165, 555, 166, 419, 259, 800, 167, 292, 168, 688, - 361, 485, 784, 1061, 169, 1062, 531, 561, 170, 539, - 535, 1122, 488, 196, 293, 540, 171, 492, 494, 293, - 335, 968, 1066, 1353, 116, 196, 314, 233, 787, 369, - 530, 519, 196, 292, 647, 874, 527, 233, 529, 48, - 95, 528, 492, 927, 612, 613, 356, 1049, 505, 1488, - 20, 387, 293, 474, 545, 546, 680, 656, 640, 641, - 570, 874, 576, 554, 436, 478, 1416, 116, 680, 510, - 681, 116, 635, 637, 196, 824, 1077, 196, 55, 304, - 959, 746, 526, 1108, 437, 656, 927, 388, 887, 556, - 472, 590, 1464, 794, 357, 598, 599, 600, 601, 602, - 603, 604, 605, 606, 607, 608, 354, 361, 738, 448, - 1420, 196, 196, 227, 361, 228, 361, 680, 361, 990, - 235, 1484, 347, 1044, 449, 436, 260, 630, 1285, 537, - 651, 681, 292, 657, 542, 974, 260, 1444, 642, 196, - 196, 260, 788, 1446, 1447, 437, 683, 978, 853, 1454, - 795, 1455, 354, 876, 1044, 358, 738, 196, 726, 506, - 201, 507, 361, 251, 434, 116, 448, 389, 390, 6, - 1134, 196, 474, 474, 645, 875, 783, 1139, 785, 876, - 786, 449, 251, 570, 637, 497, 1451, 995, 666, 637, - 881, 881, 473, 637, 961, 648, 649, 569, 927, 1478, - 700, 660, 1161, 1162, 927, 347, 675, 696, 637, 1043, - 676, 260, 252, 726, 247, 508, 657, 738, 248, 634, - 636, 638, 233, 260, 260, 260, 359, 348, 260, 260, - 724, 252, 590, 347, 731, 637, 413, 347, 1452, 347, - 347, 347, 347, 816, 657, 1340, 483, 347, 737, 739, - 747, 315, 697, 570, 637, 880, 880, 1225, 755, 624, - 413, 624, 434, 757, 1283, 866, 957, 744, 249, 1286, - 881, 677, 196, 1370, 1371, 349, 1373, 554, 821, 1226, - 522, 453, 350, 453, 952, 769, 227, 1392, 230, 698, - 1399, 707, 738, 196, 116, 637, 782, 740, 350, 484, - 1225, 48, 554, 556, 349, 1415, 909, 972, 789, 789, - 722, 348, 351, 1284, 474, 733, 624, 450, 1287, 414, - 822, 733, 1226, 116, 415, 701, 416, 350, 556, 1437, - 745, 872, 417, 418, 753, 880, 985, 359, 453, 359, - 451, 359, 359, 414, 359, 116, 359, 637, 415, 768, - 416, 391, 392, 452, 1227, 802, 417, 418, 454, 349, - 1228, 808, 516, 455, 1229, 456, 457, 458, 459, 325, - 733, 332, 775, 460, 837, 325, 95, 461, 196, 737, - 251, 1291, 350, 332, 348, 202, 332, 332, 359, 462, - 359, 1230, 463, 359, 464, 882, 351, 1227, 838, 196, - 332, 911, 297, 1228, 298, 472, 911, 1229, 911, 429, - 259, 911, 911, 260, 911, 911, 896, 711, 465, 492, - 1231, 635, 1078, 360, 325, 839, 726, 349, 858, 252, - 903, 535, 349, 731, 1230, 737, 911, 1137, 724, 804, - 233, 806, 332, 1232, 636, 635, 1249, 1025, 332, 917, - 350, 637, 317, 199, 332, 350, 637, 332, 332, 349, - 637, 663, 196, 1231, 351, 980, 883, 433, 636, 351, - 435, 332, 635, 815, 1292, 637, 989, 349, 894, 521, - 895, 246, 350, 196, 647, 199, 1232, 474, 897, 663, - 769, 911, 522, 116, 901, 636, 351, 196, 663, 360, - 350, 196, 637, 332, 855, 960, 737, 360, 597, 523, - 651, 1208, 1224, 350, 590, 361, 250, 1101, 555, 590, - 911, 637, 731, 435, 262, 614, 615, 784, 317, 952, - 264, 1208, 917, 928, 929, 332, 317, 917, 332, 917, - 917, 917, 917, 917, 917, 917, 917, 917, 917, 45, - 555, 888, 260, 196, 95, 1224, 1131, 1208, 360, 116, - 114, 917, 317, 917, 949, 917, 488, 917, 917, 917, - 666, 196, 196, 95, 884, 65, 65, 555, 492, 65, - 904, 976, 1276, 942, 116, 943, 563, 317, 979, 1025, - 679, 1076, 816, 564, 1160, 743, 474, 743, 987, 403, - 731, 474, 563, 114, 846, 565, 1403, 114, 1005, 564, - 797, 404, 840, 914, 251, 579, 364, 930, 914, 841, - 914, 565, 917, 914, 914, 580, 914, 914, 318, 397, - 398, 328, 328, 817, 318, 365, 366, 196, 1090, 393, - 394, 319, 1010, 331, 1012, 818, 1014, 581, 914, 372, - 1091, 1273, 328, 395, 396, 367, 95, 582, 1273, 196, - 1024, 95, 359, 252, 905, 1326, 368, 449, 1456, 905, - 1182, 905, 659, 400, 905, 905, 666, 905, 905, 399, - 268, 659, 1145, 658, 401, 1084, 993, 682, 996, 268, - 731, 683, 658, 1030, 998, 1031, 325, 1032, 402, 325, - 277, 114, 277, 914, 1475, 1258, 764, 277, 764, 405, - 764, 714, 298, 516, 414, 715, 116, 116, 723, 415, - 1007, 416, 503, 1493, 1494, 337, 435, 417, 418, 337, - 769, 332, 115, 1069, 115, 1071, 907, 1072, 1079, 115, - 1080, 907, 474, 907, 328, 328, 907, 907, 436, 907, - 907, 66, 196, 901, 905, 66, 437, 1033, 901, 116, - 901, 116, 227, 901, 901, 441, 901, 901, 470, 1081, - 332, 925, 926, 337, 337, 488, 332, 755, 337, 755, - 332, 337, 332, 337, 334, 600, 332, 600, 337, 1109, - 731, 769, 753, 482, 753, 496, 753, 1116, 332, 332, - 332, 496, 1024, 167, 444, 167, 328, 167, 471, 347, - 235, 488, 1121, 347, 488, 332, 347, 952, 347, 332, - 332, 490, 337, 347, 491, 947, 907, 947, 512, 554, - 114, 332, 328, 1141, 235, 361, 155, 1169, 155, 332, - 1144, 1113, 1114, 901, 328, 517, 1203, 332, 196, 520, - 332, 328, 488, 332, 332, 556, 332, 332, 57, 114, - 162, 554, 162, 549, 1165, 1072, 434, 179, 163, 179, - 163, 179, 618, 619, 620, 621, 1169, 350, 441, 1207, - 1223, 114, 536, 858, 474, 858, 541, 556, 554, 1318, - 384, 385, 386, 328, 1465, 1466, 328, 196, 68, 1207, - 68, 1203, 1194, 1318, 185, 156, 185, 156, 637, 637, - 120, 574, 120, 196, 556, 880, 880, 1239, 1281, 1282, - 1348, 583, 1349, 1223, 575, 1207, 373, 282, 350, 282, - 328, 328, 127, 289, 127, 289, 354, 497, 1126, 1127, - 411, 1310, 411, 497, 1313, 520, 520, 374, 375, 376, - 377, 378, 379, 380, 381, 382, 383, 681, 328, 328, - 646, 411, 411, 488, 661, 5, 616, 617, 196, 196, - 684, 622, 623, 686, 1278, 708, 196, 709, 710, 712, - 756, 411, 713, 758, 116, 196, 196, 735, 196, 411, - 736, 751, 411, 752, 1298, 754, 759, 760, 742, 761, - 777, 778, 792, 793, 780, 798, 1298, 25, 196, 26, - 797, 196, 27, 803, 805, 807, 813, 28, 825, 1298, - 828, 29, 826, 829, 832, 844, 1327, 849, 850, 114, - 31, 851, 852, 859, 877, 856, 583, 33, 1298, 857, - 873, 1256, 34, 337, 1383, 198, 35, 340, 341, 342, - 343, 344, 345, 346, 347, 878, 885, 880, 37, 889, - 38, 1410, 916, 898, 39, 890, 906, 921, 923, 328, - 927, 931, 40, 41, 1422, 1424, 42, 937, 941, 743, - 938, 940, 43, 945, 947, 965, 953, 731, 966, 1278, - 967, 328, 977, 975, 968, 114, 984, 506, 501, 488, - 991, 1410, 1410, 1002, 1003, 292, 1018, 116, 1027, 1008, - 1028, 116, 328, 1075, 116, 1048, 1432, 1034, 1040, 583, - 114, 1042, 1041, 1050, 583, 1047, 583, 583, 583, 583, - 583, 583, 583, 583, 583, 583, 583, 1060, 1064, 116, - 116, 1068, 1070, 116, 1089, 1067, 1093, 1094, 583, 731, - 583, 1092, 583, 1095, 583, 583, 583, 1410, 1102, 637, - 322, 637, 1112, 1115, 637, 1133, 637, 637, 1117, 637, - 116, 637, 1123, 637, 1124, 637, 637, 637, 1129, 1135, - 1137, 637, 637, 1147, 1140, 731, 1164, 637, 1167, 637, - 637, 1173, 1154, 1174, 637, 1480, 1480, 328, 637, 1181, - 1182, 1185, 1489, 1489, 1187, 1193, 1189, 590, 590, 583, - 637, 1190, 637, 1191, 1192, 1237, 637, 637, 328, 1240, - 1198, 1243, 5, 1241, 637, 637, 48, 1301, 637, 1244, - 1246, 637, 1253, 1259, 1280, 1288, 637, 48, 1316, 1305, - 1306, 1315, 48, 1319, 1322, 1332, 48, 1334, 1337, 48, - 1335, 337, 114, 114, 1323, 1339, 1343, 1325, 1345, 1346, - 1341, 48, 48, 1356, 1351, 1359, 48, 48, 1362, 1366, - 1393, 637, 48, 1363, 48, 48, 48, 48, 832, 1364, - 544, 328, 48, 1374, 1375, 1405, 48, 1378, 48, 474, - 474, 1388, 1395, 1407, 1448, 114, 1408, 114, 48, 1404, - 1414, 48, 328, 48, 1417, 1418, 1428, 48, 1429, 1431, - 1434, 1436, 637, 1449, 1442, 1453, 328, 1433, 1458, 1457, - 328, 544, 1460, 1467, 1452, 1451, 1496, 48, 1473, 1474, - 1495, 1497, 9, 609, 610, 611, 943, 533, 544, 544, + 18, 513, 190, 112, 729, 516, 44, 431, 193, 235, + 449, 680, 430, 325, 330, 734, 259, 489, 473, 509, + 406, 571, 532, 770, 556, 1007, 156, 497, 702, 543, + 570, 157, 1127, 318, 355, 881, 346, 862, 863, 901, + 231, 469, 310, 261, 358, 253, 778, 538, 783, 1160, + 1161, 929, 362, 413, 370, 766, 304, 1055, 784, 663, + 304, 1010, 363, 445, 371, 1441, 311, 260, 313, 1056, + 14, 1249, 191, 733, 1056, 801, 1229, 161, 339, 733, + 893, 162, 895, 582, 1000, 664, 673, 1256, 163, 1038, + 434, 767, 1040, 1314, 164, 1230, 1188, 558, 292, 334, + 1327, 260, 20, 165, 166, 260, 260, 260, 260, 260, + 260, 260, 260, 1454, 199, 294, 360, 665, 167, 1229, + 168, 169, 170, 707, 171, 869, 438, 439, 733, 651, + 633, 825, 361, 1355, 324, 329, 414, 473, 1230, 336, + 110, 415, 348, 416, 112, 317, 199, 235, 1, 417, + 418, 872, 768, 293, 559, 358, 43, 358, 784, 358, + 358, 16, 358, 1490, 358, 1455, 582, 156, 6, 1210, + 789, 582, 157, 582, 582, 582, 582, 582, 582, 582, + 582, 582, 582, 582, 1442, 292, 870, 1010, 479, 1121, + 349, 448, 292, 1328, 747, 582, 198, 582, 1385, 582, + 802, 582, 582, 582, 723, 2, 358, 449, 358, 971, + 727, 358, 784, 350, 487, 864, 571, 440, 161, 408, + 434, 666, 162, 1057, 1412, 570, 419, 351, 1057, 163, + 446, 472, 15, 518, 192, 164, 477, 469, 571, 556, + 293, 335, 233, 259, 165, 166, 1423, 293, 674, 1155, + 2, 1039, 434, 259, 1041, 1315, 582, 579, 1356, 167, + 196, 168, 169, 170, 556, 171, 539, 531, 876, 873, + 485, 535, 488, 1447, 95, 562, 540, 492, 494, 1069, + 312, 688, 233, 1491, 790, 1457, 356, 1458, 684, 290, + 292, 519, 346, 505, 260, 474, 527, 291, 529, 530, + 411, 528, 492, 1231, 260, 1052, 876, 478, 929, 260, + 929, 233, 613, 614, 545, 546, 3, 4, 5, 6, + 1080, 577, 1419, 571, 48, 962, 292, 981, 196, 196, + 48, 116, 1156, 826, 357, 648, 48, 233, 990, 304, + 636, 638, 1107, 20, 747, 889, 1231, 555, 1187, 196, + 472, 591, 557, 412, 387, 599, 600, 601, 602, 603, + 604, 605, 606, 607, 608, 609, 689, 1203, 49, 681, + 1467, 537, 998, 1464, 116, 346, 542, 1288, 116, 260, + 979, 996, 360, 991, 292, 676, 878, 631, 235, 677, + 388, 260, 260, 260, 233, 358, 260, 260, 652, 1487, + 855, 975, 655, 346, 506, 413, 507, 346, 251, 346, + 346, 346, 346, 55, 474, 474, 656, 346, 726, 796, + 877, 646, 929, 1343, 878, 6, 1133, 738, 929, 350, + 649, 650, 350, 1138, 1465, 667, 661, 201, 413, 293, + 636, 196, 196, 784, 497, 636, 786, 571, 48, 636, + 678, 1373, 1374, 473, 1376, 1305, 570, 252, 1163, 1306, + 508, 635, 637, 639, 636, 1395, 434, 697, 1402, 701, + 389, 390, 116, 726, 1045, 738, 797, 202, 785, 1064, + 787, 1065, 788, 1418, 1333, 655, 641, 642, 414, 360, + 725, 636, 591, 415, 732, 416, 360, 679, 360, 656, + 360, 417, 418, 196, 883, 883, 348, 1440, 738, 740, + 636, 251, 435, 655, 745, 882, 882, 571, 756, 680, + 436, 414, 447, 758, 1241, 960, 415, 656, 416, 196, + 483, 699, 1232, 708, 417, 418, 738, 1286, 314, 317, + 580, 196, 1449, 1450, 360, 818, 771, 955, 196, 580, + 581, 623, 448, 623, 349, 324, 474, 1289, 679, 247, + 252, 324, 555, 248, 434, 353, 643, 557, 911, 791, + 791, 723, 746, 435, 636, 1232, 754, 350, 429, 447, + 680, 436, 260, 484, 883, 874, 1287, 555, 48, 913, + 196, 351, 557, 196, 913, 882, 913, 986, 1481, 913, + 913, 116, 913, 913, 233, 770, 1290, 907, 623, 448, + 324, 353, 907, 249, 907, 777, 804, 907, 907, 516, + 907, 907, 810, 662, 913, 712, 636, 196, 196, 452, + 116, 452, 580, 737, 349, 349, 522, 580, 1233, 580, + 580, 580, 580, 580, 580, 580, 580, 580, 580, 580, + 1136, 662, 116, 741, 839, 196, 196, 350, 350, 1253, + 662, 580, 775, 580, 884, 580, 472, 580, 580, 580, + 259, 823, 351, 196, 702, 246, 1049, 838, 840, 913, + 492, 1233, 806, 580, 808, 898, 452, 196, 727, 860, + 1234, 331, 634, 535, 732, 635, 331, 907, 964, 725, + 905, 1235, 331, 331, 776, 841, 331, 331, 331, 1026, + 1236, 331, 331, 824, 95, 264, 634, 349, 251, 635, + 331, 260, 580, 95, 916, 331, 233, 885, 250, 916, + 474, 916, 1310, 1234, 916, 916, 262, 916, 916, 896, + 350, 897, 359, 634, 1235, 1323, 635, 857, 521, 899, + 360, 771, 433, 1236, 351, 737, 903, 331, 909, 916, + 737, 522, 349, 909, 1341, 909, 748, 252, 909, 909, + 842, 909, 909, 331, 403, 963, 591, 843, 523, 317, + 652, 591, 913, 1100, 732, 350, 404, 648, 196, 556, + 372, 955, 903, 45, 890, 930, 931, 903, 1046, 903, + 116, 348, 903, 903, 114, 903, 903, 400, 636, 360, + 196, 1212, 1228, 636, 916, 564, 348, 636, 819, 667, + 1130, 556, 565, 1091, 906, 435, 952, 1046, 488, 502, + 820, 1212, 636, 503, 566, 1092, 944, 95, 317, 868, + 474, 1079, 680, 977, 399, 474, 1279, 114, 909, 349, + 980, 114, 1026, 556, 1081, 1228, 1162, 1212, 405, 636, + 988, 932, 732, 598, 349, 95, 435, 116, 360, 817, + 1030, 1406, 350, 331, 1329, 328, 328, 402, 636, 331, + 615, 616, 903, 298, 886, 331, 351, 350, 599, 331, + 599, 564, 116, 848, 818, 196, 328, 317, 565, 393, + 394, 351, 331, 401, 1011, 251, 1013, 364, 1015, 95, + 566, 927, 928, 395, 396, 317, 196, 1276, 1186, 683, + 449, 317, 1025, 684, 1276, 667, 365, 366, 318, 1246, + 994, 582, 997, 1459, 331, 658, 715, 1144, 999, 268, + 716, 583, 435, 657, 658, 114, 367, 1032, 268, 1033, + 436, 1034, 657, 732, 252, 437, 492, 368, 764, 336, + 764, 441, 764, 336, 1008, 331, 115, 414, 115, 1478, + 227, 516, 415, 115, 416, 619, 620, 621, 622, 196, + 417, 418, 1496, 1497, 391, 392, 474, 495, 328, 328, + 331, 771, 331, 495, 1072, 444, 1074, 277, 1075, 277, + 196, 724, 1035, 496, 277, 503, 410, 336, 410, 496, + 361, 331, 331, 331, 331, 196, 331, 331, 57, 196, + 384, 385, 386, 1084, 116, 116, 346, 410, 410, 470, + 346, 331, 331, 346, 227, 346, 228, 66, 488, 331, + 346, 66, 331, 331, 65, 65, 331, 410, 65, 227, + 328, 230, 1108, 732, 771, 410, 471, 36, 410, 753, + 1115, 753, 167, 753, 167, 1025, 167, 116, 1120, 116, + 324, 196, 488, 324, 114, 488, 328, 235, 179, 1147, + 179, 955, 179, 482, 297, 450, 298, 334, 328, 196, + 196, 1006, 1140, 799, 1082, 328, 1083, 397, 398, 1143, + 336, 235, 490, 114, 336, 491, 331, 336, 451, 336, + 517, 488, 555, 743, 336, 743, 512, 557, 1207, 549, + 949, 452, 949, 1169, 1075, 114, 454, 520, 755, 474, + 755, 455, 1147, 456, 457, 458, 459, 328, 350, 441, + 328, 460, 1112, 1113, 555, 461, 1468, 1469, 336, 557, + 575, 1211, 1227, 536, 155, 196, 155, 462, 541, 162, + 463, 162, 464, 163, 584, 163, 1199, 860, 576, 860, + 434, 1211, 350, 1207, 328, 328, 555, 196, 68, 354, + 68, 557, 1244, 647, 488, 196, 465, 882, 882, 1284, + 1285, 682, 185, 1321, 185, 1227, 156, 1211, 156, 120, + 685, 120, 328, 328, 282, 662, 282, 1321, 127, 289, + 127, 289, 1313, 519, 519, 1316, 636, 636, 1125, 1126, + 617, 618, 687, 709, 1351, 710, 1352, 263, 623, 624, + 711, 287, 288, 289, 713, 295, 296, 373, 1281, 714, + 308, 309, 1309, 736, 737, 752, 753, 314, 755, 316, + 757, 320, 759, 760, 761, 762, 332, 333, 374, 375, + 376, 377, 378, 379, 380, 381, 382, 383, 779, 780, + 794, 782, 795, 114, 799, 805, 800, 807, 815, 809, + 369, 827, 828, 846, 834, 830, 831, 43, 1260, 1330, + 851, 337, 116, 852, 853, 340, 341, 342, 343, 344, + 345, 346, 347, 854, 858, 859, 861, 198, 875, 879, + 880, 882, 887, 328, 36, 1386, 892, 891, 36, 900, + 908, 923, 918, 925, 929, 933, 940, 939, 943, 36, + 948, 942, 1413, 950, 36, 328, 968, 945, 36, 956, + 114, 36, 969, 970, 971, 1425, 1427, 35, 976, 978, + 732, 985, 1281, 36, 36, 506, 1003, 328, 36, 36, + 992, 1004, 488, 196, 36, 114, 36, 36, 36, 36, + 1009, 1019, 1413, 1413, 36, 1028, 1036, 1042, 36, 1435, + 36, 1043, 1044, 1051, 1053, 1063, 1071, 1067, 1073, 1070, + 36, 1078, 36, 36, 1094, 36, 1095, 1086, 1090, 36, + 1093, 1098, 1101, 1096, 1168, 1111, 1114, 1116, 1123, 1128, + 1134, 1136, 732, 116, 1146, 1139, 196, 116, 1171, 36, + 116, 314, 1175, 1176, 369, 36, 36, 1173, 1413, 1156, + 1185, 1182, 1190, 196, 1194, 1195, 1186, 500, 1177, 1196, + 1193, 1198, 328, 1202, 1242, 116, 1245, 1247, 732, 116, + 1291, 1250, 1248, 1257, 1304, 1283, 1262, 1338, 1483, 1483, + 1319, 1308, 1322, 328, 510, 1492, 1492, 1325, 1335, 1309, + 591, 591, 1318, 1326, 1337, 1340, 1342, 526, 1344, 1328, + 25, 116, 26, 1346, 1349, 27, 1348, 1354, 196, 196, + 28, 1362, 1359, 1366, 29, 1365, 196, 114, 114, 337, + 1367, 1369, 1377, 31, 196, 196, 1378, 196, 1381, 1391, + 33, 116, 1396, 1301, 1407, 34, 1398, 1408, 1410, 35, + 1411, 1417, 1434, 1421, 1420, 1301, 328, 196, 544, 1432, + 196, 37, 1431, 38, 474, 474, 1436, 39, 1301, 1437, + 114, 1439, 114, 1445, 1451, 40, 41, 328, 1452, 42, + 1456, 1460, 321, 1461, 1470, 1455, 1463, 1301, 1454, 1476, + 1477, 1498, 328, 1499, 1500, 9, 328, 945, 532, 544, + 832, 32, 490, 937, 600, 802, 491, 447, 292, 601, + 30, 610, 611, 612, 669, 22, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, - 544, 544, 544, 544, 501, 830, 32, 491, 601, 501, - 501, 935, 492, 800, 448, 602, 30, 22, 637, 670, - 490, 804, 30, 516, 747, 31, 332, 637, 206, 96, - 31, 232, 501, 757, 805, 838, 748, 310, 749, 778, - 328, 328, 501, 758, 750, 501, 501, 807, 779, 809, - 501, 658, 658, 501, 680, 501, 314, 501, 501, 501, - 501, 339, 236, 123, 54, 501, 105, 285, 130, 501, - 21, 124, 106, 501, 286, 131, 1019, 35, 1255, 936, - 1247, 501, 1119, 1450, 501, 1120, 501, 501, 1419, 834, - 1406, 1435, 501, 1459, 501, 501, 501, 501, 501, 501, - 501, 501, 501, 501, 501, 544, 328, 1401, 1295, 962, - 501, 501, 963, 964, 1308, 501, 501, 847, 501, 501, - 501, 501, 501, 501, 501, 1491, 501, 501, 958, 501, - 501, 501, 501, 501, 501, 501, 501, 501, 501, 1254, - 501, 501, 501, 501, 501, 501, 501, 501, 501, 501, - 501, 501, 501, 501, 501, 501, 501, 501, 501, 501, - 501, 501, 1329, 1251, 501, 1430, 501, 1483, 501, 1425, - 114, 501, 1423, 779, 1482, 1350, 1299, 501, 585, 1199, - 1188, 932, 748, 791, 832, 832, 1051, 983, 908, 843, - 300, 865, 832, 832, 832, 832, 832, 910, 832, 832, - 547, 832, 832, 832, 832, 832, 832, 832, 832, 625, - 624, 863, 629, 832, 626, 832, 832, 832, 832, 832, - 832, 328, 774, 832, 627, 1176, 628, 832, 832, 905, - 832, 832, 832, 763, 1260, 1179, 1136, 407, 1035, 1110, - 1046, 1063, 832, 1096, 832, 1105, 832, 832, 1098, 741, - 832, 644, 832, 832, 832, 832, 832, 832, 832, 832, - 832, 832, 832, 832, 1166, 832, 1103, 1000, 832, 832, - 933, 1257, 832, 832, 934, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 832, 832, 832, - 832, 832, 0, 114, 0, 832, 832, 114, 0, 832, - 114, 0, 0, 0, 832, 832, 832, 832, 832, 0, - 0, 0, 832, 0, 832, 0, 0, 328, 0, 0, - 832, 832, 0, 0, 0, 114, 114, 0, 0, 114, - 0, 0, 0, 0, 35, 0, 0, 0, 35, 0, - 0, 0, 0, 0, 0, 832, 832, 832, 832, 35, - 832, 332, 0, 0, 35, 0, 114, 832, 35, 0, - 0, 35, 0, 0, 0, 0, 328, 25, 0, 26, - 0, 0, 27, 35, 35, 0, 0, 28, 35, 35, - 0, 29, 328, 0, 35, 30, 35, 35, 35, 35, - 31, 0, 0, 0, 35, 32, 0, 33, 35, 0, - 35, 0, 34, 0, 0, 0, 35, 36, 0, 0, - 35, 0, 35, 35, 0, 35, 0, 0, 37, 35, - 38, 0, 0, 0, 39, 0, 0, 0, 0, 0, - 0, 0, 40, 41, 0, 0, 42, 328, 328, 35, - 0, 0, 0, 0, 0, 328, 35, 0, 0, 0, - 0, 0, 0, 0, 328, 328, 0, 328, 0, 0, + 544, 544, 806, 489, 35, 30, 515, 747, 35, 31, + 309, 331, 757, 31, 206, 657, 96, 748, 840, 35, + 758, 749, 778, 807, 35, 750, 779, 809, 35, 313, + 679, 35, 811, 322, 338, 657, 328, 328, 636, 123, + 105, 285, 130, 35, 35, 124, 106, 698, 35, 35, + 286, 131, 743, 636, 35, 232, 35, 35, 35, 35, + 28, 25, 236, 26, 35, 54, 27, 21, 35, 1020, + 35, 28, 1118, 938, 1119, 29, 1259, 1251, 1453, 1422, + 35, 1462, 35, 35, 31, 35, 836, 739, 1409, 35, + 1438, 33, 965, 500, 1404, 1298, 34, 966, 500, 500, + 35, 967, 328, 544, 1494, 961, 1311, 1258, 1332, 35, + 1255, 849, 37, 1486, 38, 1433, 35, 1426, 39, 1428, + 1485, 500, 1353, 1191, 1302, 867, 40, 41, 934, 749, + 42, 500, 328, 744, 500, 500, 1192, 912, 586, 500, + 984, 300, 500, 910, 500, 793, 500, 500, 500, 500, + 845, 1054, 865, 547, 500, 625, 627, 626, 500, 292, + 628, 907, 500, 629, 764, 114, 630, 1179, 1263, 1183, + 500, 1135, 781, 500, 407, 500, 500, 1048, 1097, 1037, + 1109, 500, 1066, 500, 500, 500, 500, 500, 500, 500, + 500, 500, 500, 500, 1102, 742, 1165, 1104, 1001, 500, + 500, 645, 1261, 1170, 500, 500, 935, 500, 500, 500, + 500, 500, 500, 500, 322, 500, 500, 0, 500, 500, + 500, 500, 500, 500, 500, 500, 500, 500, 834, 500, + 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, + 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, + 500, 353, 936, 500, 0, 500, 0, 500, 0, 0, + 500, 0, 0, 0, 0, 0, 500, 0, 0, 0, + 0, 0, 0, 0, 353, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 114, 353, 0, 0, + 114, 0, 353, 114, 0, 230, 0, 353, 0, 353, + 353, 353, 353, 0, 0, 0, 0, 353, 0, 0, + 328, 353, 0, 0, 0, 353, 28, 28, 114, 0, + 0, 28, 114, 353, 0, 28, 353, 28, 353, 0, + 28, 0, 28, 28, 0, 28, 0, 28, 0, 28, + 0, 28, 28, 28, 28, 0, 0, 28, 28, 0, + 0, 0, 353, 28, 114, 28, 28, 28, 0, 0, + 28, 28, 28, 328, 28, 0, 0, 28, 0, 28, + 28, 28, 28, 0, 0, 0, 28, 28, 28, 0, + 328, 28, 28, 28, 114, 0, 0, 0, 0, 0, + 28, 28, 0, 28, 28, 774, 28, 28, 28, 0, + 0, 0, 28, 0, 0, 0, 0, 0, 353, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 28, 0, 0, 0, 0, 0, 28, 28, + 0, 0, 0, 0, 0, 328, 328, 28, 0, 0, + 0, 0, 0, 328, 0, 0, 0, 0, 0, 0, + 0, 328, 328, 0, 328, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 544, 0, 0, 0, 0, 0, 0, 328, 774, 774, - 328, 0, 0, 0, 0, 0, 774, 774, 774, 774, - 774, 0, 774, 774, 0, 774, 774, 774, 774, 774, - 774, 774, 0, 0, 734, 0, 0, 774, 0, 774, - 774, 774, 774, 774, 774, 0, 0, 774, 0, 0, - 43, 774, 774, 0, 774, 774, 774, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 774, 0, 774, 0, - 774, 774, 0, 0, 774, 0, 774, 774, 774, 774, - 774, 774, 774, 774, 774, 774, 774, 774, 0, 774, - 0, 0, 774, 774, 0, 0, 774, 774, 0, 0, + 544, 0, 0, 0, 328, 0, 0, 328, 28, 0, + 0, 0, 0, 0, 834, 834, 0, 0, 0, 0, + 0, 0, 834, 834, 834, 834, 834, 0, 834, 834, + 0, 834, 834, 834, 834, 834, 834, 834, 834, 0, + 0, 0, 0, 834, 0, 834, 834, 834, 834, 834, + 834, 0, 0, 834, 331, 0, 0, 834, 834, 0, + 834, 834, 834, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 834, 0, 834, 0, 834, 834, 0, 0, + 834, 0, 834, 834, 834, 834, 834, 834, 834, 834, + 834, 834, 834, 834, 0, 834, 0, 0, 834, 834, + 0, 0, 834, 834, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 834, 834, 834, + 834, 834, 0, 0, 0, 834, 834, 0, 0, 834, + 0, 0, 0, 0, 834, 834, 834, 834, 834, 0, + 0, 0, 834, 0, 834, 0, 0, 0, 0, 0, + 834, 834, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 834, 834, 834, 834, 0, + 834, 774, 774, 0, 0, 0, 0, 834, 0, 774, + 774, 774, 774, 774, 0, 774, 774, 0, 774, 774, + 774, 774, 774, 774, 774, 0, 0, 734, 0, 0, + 774, 0, 774, 774, 774, 774, 774, 774, 0, 0, + 774, 0, 0, 0, 774, 774, 0, 774, 774, 774, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 774, + 0, 774, 0, 774, 774, 0, 0, 774, 0, 774, + 774, 774, 774, 774, 774, 774, 774, 774, 774, 774, + 774, 0, 774, 0, 0, 774, 774, 0, 0, 774, + 774, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 774, 774, 774, 774, 774, 0, + 0, 0, 774, 774, 0, 0, 774, 0, 0, 0, 0, 774, 774, 774, 774, 774, 0, 0, 0, 774, - 774, 0, 0, 774, 0, 0, 0, 0, 774, 774, - 774, 774, 774, 0, 0, 0, 774, 332, 774, 0, - 0, 0, 332, 332, 774, 774, 0, 0, 0, 0, + 331, 774, 0, 0, 0, 331, 331, 774, 774, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 325, 332, 0, 0, 0, 774, - 774, 774, 774, 0, 774, 332, 0, 0, 332, 332, - 0, 774, 0, 332, 0, 0, 332, 0, 332, 0, - 332, 332, 332, 332, 0, 0, 0, 0, 332, 0, - 0, 0, 332, 0, 0, 0, 332, 0, 0, 0, - 0, 0, 0, 0, 332, 0, 0, 332, 0, 332, - 332, 0, 0, 0, 0, 332, 0, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 0, - 0, 0, 0, 332, 332, 0, 0, 0, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 0, 332, - 332, 0, 0, 332, 332, 332, 332, 332, 0, 0, - 332, 332, 0, 0, 0, 332, 332, 332, 332, 332, - 332, 332, 332, 0, 0, 0, 0, 0, 0, 0, - 734, 0, 0, 0, 332, 734, 734, 332, 0, 332, - 0, 332, 0, 0, 332, 0, 0, 0, 0, 0, - 332, 362, 0, 0, 0, 0, 0, 0, 734, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 734, 0, - 0, 734, 734, 0, 0, 0, 734, 0, 0, 734, - 0, 734, 0, 734, 734, 734, 734, 0, 0, 0, - 0, 734, 0, 0, 0, 734, 0, 0, 0, 734, - 0, 0, 0, 0, 0, 0, 0, 734, 0, 0, - 734, 0, 734, 734, 0, 0, 0, 0, 734, 0, - 734, 734, 734, 734, 734, 734, 734, 734, 734, 734, - 734, 0, 0, 0, 0, 0, 734, 734, 0, 0, - 0, 734, 734, 734, 734, 734, 734, 0, 734, 734, - 734, 0, 734, 734, 0, 0, 734, 734, 734, 734, - 325, 0, 0, 734, 734, 325, 325, 0, 734, 734, - 734, 734, 734, 734, 734, 734, 332, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 734, 325, 0, - 734, 0, 734, 0, 734, 0, 0, 734, 325, 0, - 0, 325, 325, 734, 0, 0, 325, 0, 0, 325, - 0, 325, 0, 325, 325, 325, 325, 0, 0, 0, - 0, 325, 0, 0, 0, 325, 0, 0, 0, 325, - 0, 0, 0, 0, 0, 0, 0, 325, 0, 0, - 325, 0, 325, 325, 0, 0, 0, 0, 325, 0, - 325, 325, 325, 325, 325, 325, 325, 325, 325, 325, - 325, 0, 0, 0, 0, 0, 325, 325, 0, 0, - 0, 325, 325, 325, 325, 325, 325, 0, 325, 325, - 325, 0, 325, 325, 0, 0, 325, 325, 325, 325, - 0, 0, 0, 325, 325, 0, 0, 0, 325, 325, - 325, 325, 325, 325, 325, 325, 0, 362, 0, 0, - 0, 0, 362, 362, 0, 0, 0, 325, 0, 0, - 325, 0, 325, 357, 325, 0, 0, 325, 0, 0, - 0, 0, 0, 325, 0, 362, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 362, 0, 0, 362, 362, - 0, 0, 0, 362, 0, 0, 362, 0, 362, 0, - 362, 362, 362, 362, 0, 0, 0, 0, 362, 0, - 0, 0, 362, 0, 0, 0, 362, 0, 0, 0, - 0, 0, 0, 0, 362, 0, 0, 362, 0, 362, - 362, 0, 0, 0, 0, 362, 0, 362, 362, 362, - 362, 362, 362, 362, 362, 362, 362, 362, 0, 0, - 0, 0, 0, 362, 362, 0, 0, 0, 362, 362, - 0, 362, 362, 362, 0, 362, 362, 362, 0, 362, - 362, 0, 332, 362, 362, 362, 362, 0, 332, 0, - 362, 362, 0, 0, 0, 362, 362, 362, 362, 362, - 362, 362, 362, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 362, 0, 0, 362, 0, 362, - 332, 0, 0, 0, 332, 0, 0, 0, 0, 0, - 362, 49, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 324, 331, 0, + 0, 0, 774, 774, 774, 774, 0, 774, 331, 0, + 0, 331, 331, 0, 774, 0, 331, 0, 0, 331, + 0, 331, 0, 331, 331, 331, 331, 0, 0, 0, + 0, 331, 0, 0, 0, 331, 0, 0, 0, 331, + 0, 0, 0, 0, 0, 0, 0, 331, 0, 0, + 331, 0, 331, 331, 0, 0, 0, 0, 331, 0, + 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, + 331, 331, 0, 0, 0, 0, 331, 331, 0, 0, + 0, 331, 331, 331, 331, 331, 331, 331, 331, 331, + 331, 0, 331, 331, 0, 0, 331, 331, 331, 331, + 331, 0, 0, 331, 331, 0, 0, 0, 331, 331, + 331, 331, 331, 331, 331, 331, 0, 0, 0, 0, + 0, 0, 0, 734, 0, 0, 0, 331, 734, 734, + 331, 0, 331, 0, 331, 0, 0, 331, 0, 0, + 0, 0, 0, 331, 361, 0, 0, 0, 0, 0, + 0, 734, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 734, 0, 0, 734, 734, 0, 0, 0, 734, + 0, 0, 734, 0, 734, 0, 734, 734, 734, 734, + 0, 0, 0, 0, 734, 0, 0, 0, 734, 0, + 0, 0, 734, 0, 0, 0, 0, 0, 0, 0, + 734, 0, 0, 734, 0, 734, 734, 0, 0, 0, + 0, 734, 0, 734, 734, 734, 734, 734, 734, 734, + 734, 734, 734, 734, 0, 0, 0, 0, 0, 734, + 734, 0, 0, 0, 734, 734, 734, 734, 734, 734, + 0, 734, 734, 734, 0, 734, 734, 0, 0, 734, + 734, 734, 734, 324, 0, 0, 734, 734, 324, 324, + 0, 734, 734, 734, 734, 734, 734, 734, 734, 331, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 734, 324, 0, 734, 0, 734, 0, 734, 0, 0, + 734, 324, 0, 0, 324, 324, 734, 0, 0, 324, + 0, 0, 324, 0, 324, 0, 324, 324, 324, 324, + 0, 0, 0, 0, 324, 0, 0, 0, 324, 0, + 0, 0, 324, 0, 0, 0, 0, 0, 0, 0, + 324, 0, 0, 324, 0, 324, 324, 0, 0, 0, + 0, 324, 0, 324, 324, 324, 324, 324, 324, 324, + 324, 324, 324, 324, 0, 0, 0, 0, 0, 324, + 324, 0, 0, 0, 324, 324, 324, 324, 324, 324, + 0, 324, 324, 324, 0, 324, 324, 0, 0, 324, + 324, 324, 324, 0, 0, 0, 324, 324, 0, 0, + 0, 324, 324, 324, 324, 324, 324, 324, 324, 0, + 361, 0, 0, 0, 0, 361, 361, 0, 0, 0, + 324, 0, 0, 324, 0, 324, 356, 324, 0, 0, + 324, 0, 0, 0, 0, 0, 324, 0, 361, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 361, 0, + 0, 361, 361, 0, 0, 0, 361, 0, 0, 361, + 0, 361, 0, 361, 361, 361, 361, 0, 0, 0, + 0, 361, 0, 0, 0, 361, 0, 0, 0, 361, + 0, 0, 0, 0, 0, 0, 0, 361, 0, 0, + 361, 0, 361, 361, 0, 0, 0, 0, 361, 0, + 361, 361, 361, 361, 361, 361, 361, 361, 361, 361, + 361, 0, 0, 0, 0, 0, 361, 361, 0, 0, + 0, 361, 361, 0, 361, 361, 361, 0, 361, 361, + 361, 0, 361, 361, 0, 331, 361, 361, 361, 361, + 0, 331, 0, 361, 361, 0, 0, 0, 361, 361, + 361, 361, 361, 361, 361, 361, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 361, 0, 0, + 361, 0, 361, 331, 0, 0, 0, 331, 0, 0, + 0, 0, 0, 361, 49, 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, - 332, 0, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 0, 0, 0, 0, 0, 332, - 0, 0, 0, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 0, 332, 332, 0, 0, 332, 332, - 332, 332, 332, 0, 0, 332, 332, 0, 0, 0, - 332, 332, 332, 332, 332, 332, 332, 332, 0, 357, - 0, 0, 0, 354, 0, 357, 0, 0, 0, 332, - 0, 0, 332, 0, 332, 0, 332, 0, 0, 332, - 28, 0, 0, 0, 0, 332, 354, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 357, 0, 354, - 0, 357, 0, 0, 354, 0, 0, 230, 0, 354, - 0, 354, 354, 354, 354, 0, 0, 0, 0, 354, - 0, 0, 0, 354, 0, 0, 0, 354, 0, 0, - 0, 0, 0, 0, 0, 354, 0, 0, 354, 0, - 354, 0, 357, 36, 0, 0, 0, 357, 0, 357, - 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, - 0, 0, 0, 0, 354, 0, 357, 0, 0, 0, - 357, 357, 0, 357, 357, 357, 0, 357, 357, 357, - 0, 357, 357, 0, 0, 357, 357, 357, 357, 0, - 0, 0, 357, 357, 0, 0, 0, 357, 357, 357, - 357, 357, 357, 357, 357, 0, 0, 0, 0, 0, - 0, 0, 34, 0, 0, 0, 357, 0, 49, 357, - 354, 357, 49, 0, 49, 0, 49, 0, 49, 0, - 0, 49, 357, 49, 49, 0, 49, 0, 49, 0, - 49, 0, 49, 49, 49, 49, 0, 0, 49, 49, - 0, 0, 0, 0, 49, 49, 49, 49, 49, 0, - 0, 49, 49, 49, 0, 49, 0, 49, 49, 49, - 49, 49, 49, 49, 49, 28, 49, 49, 49, 49, - 0, 0, 49, 49, 49, 0, 49, 0, 0, 0, - 0, 49, 49, 0, 49, 49, 0, 49, 49, 49, - 0, 0, 0, 49, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 33, 0, - 0, 0, 0, 49, 0, 49, 49, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 28, 28, 49, 0, - 0, 28, 0, 0, 0, 28, 0, 28, 0, 0, - 28, 0, 28, 28, 0, 28, 0, 28, 0, 28, - 0, 28, 28, 28, 28, 0, 0, 28, 28, 0, - 0, 0, 0, 28, 0, 28, 28, 28, 0, 49, - 28, 28, 28, 0, 28, 0, 0, 28, 0, 28, - 28, 28, 28, 0, 0, 0, 28, 28, 28, 0, - 36, 28, 28, 28, 36, 925, 0, 0, 0, 0, - 28, 28, 0, 28, 28, 36, 28, 28, 28, 0, - 36, 0, 28, 0, 36, 0, 0, 36, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, - 36, 0, 28, 0, 36, 36, 0, 0, 28, 28, - 36, 0, 36, 36, 36, 36, 0, 28, 0, 0, - 36, 0, 0, 0, 36, 0, 36, 0, 48, 34, - 0, 0, 0, 34, 0, 0, 36, 0, 36, 36, - 0, 36, 0, 0, 34, 36, 0, 0, 0, 34, - 0, 0, 0, 34, 0, 0, 34, 0, 28, 0, - 0, 0, 0, 0, 0, 36, 0, 0, 34, 34, - 0, 36, 36, 34, 34, 7, 0, 0, 0, 34, - 0, 34, 34, 34, 34, 0, 0, 0, 0, 34, - 0, 0, 28, 34, 0, 34, 28, 0, 0, 0, - 0, 0, 0, 0, 0, 34, 0, 28, 34, 0, - 34, 0, 28, 0, 34, 0, 28, 0, 0, 28, - 0, 0, 926, 0, 0, 0, 0, 0, 0, 0, - 0, 28, 28, 0, 34, 33, 28, 28, 0, 33, - 34, 34, 28, 0, 28, 28, 28, 28, 0, 0, - 33, 0, 28, 0, 0, 33, 28, 0, 28, 33, - 0, 0, 33, 0, 0, 0, 0, 0, 28, 0, - 0, 28, 0, 28, 33, 33, 0, 28, 0, 33, - 33, 0, 0, 450, 0, 33, 0, 33, 33, 33, - 33, 0, 0, 0, 0, 33, 0, 28, 0, 33, - 0, 33, 0, 28, 28, 0, 451, 0, 0, 0, - 0, 33, 0, 0, 33, 0, 33, 0, 0, 452, - 33, 0, 925, 453, 454, 0, 48, 0, 0, 455, - 0, 456, 457, 458, 459, 0, 0, 48, 0, 460, - 33, 0, 48, 461, 0, 0, 48, 33, 0, 48, - 0, 0, 0, 0, 0, 462, 0, 0, 463, 0, - 464, 48, 48, 0, 0, 0, 48, 48, 0, 0, - 0, 0, 48, 0, 48, 48, 48, 48, 0, 0, - 0, 0, 48, 0, 465, 48, 48, 0, 48, 48, - 0, 0, 0, 0, 0, 0, 0, 0, 48, 0, - 48, 48, 0, 48, 0, 48, 0, 48, 0, 48, - 0, 0, 48, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 48, 48, 0, 48, 0, 48, - 48, 0, 7, 0, 0, 48, 49, 48, 48, 48, - 48, 0, 0, 0, 0, 48, 0, 49, 0, 48, - 0, 48, 49, 0, 0, 0, 49, 0, 0, 49, - 0, 48, 0, 0, 48, 0, 48, 0, 0, 0, - 48, 49, 49, 0, 0, 0, 49, 49, 0, 926, - 0, 0, 49, 48, 49, 49, 49, 49, 0, 0, - 48, 0, 49, 0, 48, 0, 49, 0, 49, 48, - 0, 0, 0, 48, 0, 0, 48, 0, 49, 0, - 0, 49, 0, 49, 0, 0, 0, 49, 48, 48, - 0, 0, 0, 48, 48, 0, 0, 0, 0, 48, - 0, 48, 48, 48, 48, 0, 0, 49, 0, 48, - 0, 0, 0, 48, 0, 48, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 48, 0, 56, 48, 0, - 48, 0, 0, 0, 48, 57, 25, 58, 26, 0, - 0, 27, 59, 0, 60, 61, 28, 62, 63, 64, - 29, 0, 0, 0, 48, 0, 65, 0, 66, 31, - 67, 68, 69, 70, 0, 0, 33, 0, 0, 0, - 71, 34, 0, 72, 73, 35, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 74, 0, 37, 0, 38, - 75, 0, 0, 39, 0, 76, 77, 78, 79, 80, - 81, 40, 41, 82, 83, 42, 84, 0, 85, 0, - 0, 86, 87, 0, 332, 88, 89, 0, 0, 0, - 332, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 90, 91, 92, 93, 94, 0, 0, 0, 95, 0, - 0, 0, 96, 0, 0, 0, 0, 97, 98, 99, - 100, 101, 0, 0, 0, 102, 332, 103, 0, 0, - 0, 0, 0, 104, 105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 332, 0, 0, 0, 0, 0, 332, 0, 106, 107, - 108, 109, 0, 0, 0, 0, 0, 332, 0, 0, - 198, 0, 332, 0, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 0, 0, 0, 0, - 0, 332, 332, 0, 0, 0, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 0, 332, 332, 0, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 0, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 0, 503, 0, 0, 332, 0, 332, 503, - 0, 332, 0, 0, 0, 0, 0, 332, 0, 0, - 0, 0, 332, 0, 0, 332, 0, 332, 332, 0, - 0, 0, 332, 332, 0, 0, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 503, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 332, 332, 0, 0, - 0, 0, 0, 0, 332, 0, 0, 332, 0, 0, - 0, 0, 0, 332, 0, 0, 503, 0, 0, 0, - 0, 503, 0, 503, 503, 503, 503, 503, 503, 503, - 503, 503, 503, 503, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 503, 503, 503, 503, 503, 503, - 503, 503, 503, 503, 0, 503, 503, 0, 503, 503, - 503, 503, 503, 503, 503, 503, 503, 503, 0, 503, - 503, 503, 503, 503, 503, 503, 503, 503, 503, 503, - 503, 503, 503, 503, 503, 503, 503, 503, 503, 503, - 503, 0, 499, 560, 0, 0, 0, 503, 499, 0, - 0, 0, 25, 0, 26, 0, 503, 27, 0, 0, - 0, 0, 28, 0, 0, 0, 29, 0, 0, 0, - 0, 0, 0, 0, 0, 31, 0, 0, 0, 0, - 0, 0, 33, 0, 499, 0, 0, 34, 0, 0, - 0, 35, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 37, 0, 38, 0, 0, 0, 39, - 0, 0, 0, 0, 0, 0, 0, 40, 41, 389, - 0, 42, 0, 0, 321, 499, 0, 0, 0, 0, - 499, 0, 499, 499, 499, 499, 499, 499, 499, 499, - 499, 499, 499, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 499, 499, 389, 499, 499, 499, 499, - 499, 499, 499, 0, 499, 499, 0, 499, 499, 499, - 499, 499, 499, 499, 499, 499, 499, 0, 499, 499, - 499, 499, 499, 499, 499, 499, 499, 499, 499, 499, - 499, 499, 499, 499, 499, 499, 499, 499, 499, 499, - 0, 507, 0, 0, 0, 354, 499, 507, 0, 499, - 0, 0, 0, 0, 0, 499, 0, 0, 0, 0, - 325, 0, 0, 0, 0, 0, 325, 0, 389, 389, - 389, 389, 0, 389, 0, 389, 389, 0, 389, 389, - 389, 389, 389, 507, 389, 389, 389, 389, 0, 389, - 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, - 389, 389, 389, 389, 389, 389, 389, 389, 389, 389, - 389, 0, 0, 0, 0, 325, 0, 389, 0, 0, - 389, 0, 0, 0, 507, 0, 389, 0, 0, 507, - 0, 507, 507, 507, 507, 507, 507, 507, 507, 507, - 507, 507, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 507, 0, 507, 507, 507, 507, 507, - 507, 507, 0, 507, 507, 0, 507, 507, 507, 507, - 507, 507, 507, 507, 507, 507, 0, 507, 507, 507, - 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, - 507, 507, 507, 507, 507, 507, 507, 507, 507, 0, - 332, 881, 0, 0, 0, 507, 332, 0, 507, 0, - 25, 0, 26, 0, 507, 27, 0, 0, 0, 0, - 28, 0, 0, 0, 29, 0, 0, 0, 0, 0, - 0, 0, 0, 31, 0, 0, 0, 0, 0, 0, - 33, 0, 332, 0, 0, 34, 0, 0, 0, 35, + 0, 0, 0, 0, 0, 0, 0, 0, 331, 0, + 0, 0, 0, 331, 0, 331, 331, 331, 331, 331, + 331, 331, 331, 331, 331, 331, 331, 0, 0, 919, + 0, 0, 331, 0, 0, 0, 331, 331, 331, 331, + 331, 331, 331, 331, 331, 331, 0, 331, 331, 0, + 0, 331, 331, 331, 331, 331, 0, 0, 331, 331, + 34, 0, 0, 331, 331, 331, 331, 331, 331, 331, + 331, 0, 356, 0, 0, 0, 0, 0, 356, 0, + 0, 0, 331, 0, 0, 331, 0, 331, 0, 331, + 0, 0, 331, 0, 0, 0, 0, 0, 331, 0, + 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, + 356, 0, 919, 0, 356, 0, 0, 919, 0, 919, + 919, 919, 919, 919, 919, 919, 919, 919, 919, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 919, 0, 919, 0, 919, 33, 919, 919, 919, + 0, 0, 0, 0, 0, 356, 0, 0, 0, 0, + 356, 0, 356, 356, 356, 356, 356, 356, 356, 356, + 356, 356, 356, 0, 0, 0, 0, 0, 0, 356, + 0, 0, 0, 356, 356, 0, 356, 356, 356, 5, + 356, 356, 356, 0, 356, 356, 0, 0, 356, 356, + 356, 356, 919, 0, 0, 356, 356, 0, 0, 0, + 356, 356, 356, 356, 356, 356, 356, 356, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 356, + 0, 49, 356, 0, 356, 49, 0, 49, 0, 49, + 0, 49, 0, 0, 49, 356, 49, 49, 0, 49, + 0, 49, 927, 49, 0, 49, 49, 49, 49, 0, + 0, 49, 49, 0, 0, 0, 0, 49, 49, 49, + 49, 49, 0, 0, 49, 49, 49, 0, 49, 0, + 49, 49, 49, 49, 49, 49, 49, 49, 0, 49, + 49, 49, 49, 0, 0, 49, 49, 49, 0, 49, + 0, 0, 0, 0, 49, 49, 0, 49, 49, 0, + 49, 49, 49, 0, 0, 48, 49, 34, 0, 0, + 0, 34, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 34, 0, 0, 0, 49, 34, 49, 49, + 0, 34, 0, 0, 34, 0, 0, 0, 0, 0, + 0, 49, 0, 0, 0, 0, 34, 34, 7, 0, + 28, 34, 34, 0, 28, 0, 0, 34, 0, 34, + 34, 34, 34, 0, 0, 28, 0, 34, 0, 0, + 28, 34, 0, 34, 28, 0, 0, 28, 0, 0, + 0, 0, 49, 34, 0, 0, 34, 0, 34, 28, + 28, 928, 34, 33, 28, 28, 0, 33, 0, 0, + 28, 0, 28, 28, 28, 28, 0, 0, 33, 0, + 28, 0, 34, 33, 28, 0, 28, 33, 34, 34, + 33, 0, 0, 0, 0, 0, 28, 0, 0, 28, + 0, 28, 33, 33, 0, 28, 5, 33, 33, 0, + 48, 0, 0, 33, 0, 33, 33, 33, 33, 0, + 0, 48, 0, 33, 0, 28, 48, 33, 0, 33, + 48, 28, 28, 48, 0, 0, 0, 0, 0, 33, + 0, 0, 33, 0, 33, 48, 48, 0, 33, 0, + 48, 48, 0, 0, 0, 0, 48, 0, 48, 48, + 48, 48, 0, 0, 0, 0, 48, 0, 33, 927, + 48, 0, 48, 48, 0, 33, 0, 0, 0, 0, + 0, 0, 48, 0, 48, 48, 0, 48, 0, 48, + 0, 48, 0, 48, 0, 0, 48, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 48, 48, + 0, 48, 0, 48, 48, 0, 0, 0, 0, 48, + 0, 48, 48, 48, 48, 0, 0, 0, 0, 48, + 0, 0, 48, 48, 0, 48, 48, 0, 0, 0, + 0, 0, 0, 0, 0, 48, 0, 48, 48, 0, + 48, 0, 48, 0, 48, 0, 48, 0, 0, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 37, 0, 38, 0, 0, 0, 39, 0, 0, - 0, 0, 0, 0, 0, 40, 41, 0, 0, 42, - 0, 0, 321, 332, 0, 0, 0, 0, 332, 0, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 332, 0, 332, 332, 332, 332, 332, 332, - 332, 0, 332, 332, 0, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 0, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 0, 432, - 1083, 0, 0, 354, 332, 432, 0, 332, 0, 25, - 0, 26, 0, 332, 27, 0, 0, 0, 0, 28, + 0, 48, 48, 0, 48, 7, 48, 48, 0, 49, + 0, 0, 48, 0, 48, 48, 48, 48, 0, 0, + 49, 0, 48, 0, 0, 49, 48, 0, 48, 49, + 0, 0, 49, 0, 0, 0, 0, 0, 48, 0, + 0, 48, 0, 48, 49, 49, 0, 48, 928, 49, + 49, 0, 48, 0, 0, 49, 0, 49, 49, 49, + 49, 0, 0, 48, 0, 49, 0, 48, 48, 49, + 0, 49, 48, 0, 0, 48, 0, 0, 0, 0, + 0, 49, 0, 0, 49, 0, 49, 48, 48, 0, + 49, 0, 48, 48, 0, 0, 0, 0, 48, 0, + 48, 48, 48, 48, 0, 0, 0, 0, 48, 0, + 49, 0, 48, 0, 48, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 48, 0, 56, 48, 0, 48, + 0, 0, 0, 48, 57, 25, 58, 26, 0, 0, + 27, 59, 0, 60, 61, 28, 62, 63, 64, 29, + 0, 0, 0, 48, 0, 65, 0, 66, 31, 67, + 68, 69, 70, 0, 0, 33, 0, 0, 0, 71, + 34, 0, 72, 73, 35, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 74, 0, 37, 0, 38, 75, + 0, 0, 39, 0, 76, 77, 78, 79, 80, 81, + 40, 41, 82, 83, 42, 84, 0, 85, 0, 0, + 86, 87, 0, 331, 88, 89, 0, 0, 0, 331, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 90, + 91, 92, 93, 94, 0, 0, 0, 95, 0, 0, + 0, 96, 0, 0, 0, 0, 97, 98, 99, 100, + 101, 0, 0, 0, 102, 331, 103, 0, 0, 0, + 0, 0, 104, 105, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 331, + 0, 0, 0, 0, 0, 331, 0, 106, 107, 108, + 109, 0, 0, 0, 0, 0, 331, 0, 0, 198, + 0, 331, 0, 331, 331, 331, 331, 331, 331, 331, + 331, 331, 331, 331, 331, 0, 0, 0, 0, 0, + 331, 331, 0, 0, 0, 331, 331, 331, 331, 331, + 331, 331, 331, 331, 0, 331, 331, 0, 331, 331, + 331, 331, 331, 331, 331, 331, 331, 331, 0, 331, + 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, + 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, + 331, 0, 502, 0, 0, 331, 0, 331, 502, 0, + 331, 0, 0, 0, 0, 0, 331, 0, 0, 0, + 0, 331, 0, 0, 331, 0, 331, 331, 0, 0, + 0, 331, 331, 0, 0, 331, 331, 331, 331, 331, + 331, 331, 331, 331, 502, 331, 331, 331, 331, 331, + 331, 331, 331, 331, 331, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 331, 331, 0, 0, 0, + 0, 0, 0, 331, 0, 0, 331, 0, 0, 0, + 0, 0, 331, 0, 0, 502, 0, 0, 0, 0, + 502, 0, 502, 502, 502, 502, 502, 502, 502, 502, + 502, 502, 502, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 502, 502, 502, 502, 502, 502, 502, + 502, 502, 502, 0, 502, 502, 0, 502, 502, 502, + 502, 502, 502, 502, 502, 502, 502, 0, 502, 502, + 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, + 502, 502, 502, 502, 502, 502, 502, 502, 502, 502, + 0, 498, 561, 0, 0, 0, 502, 498, 0, 0, + 0, 25, 0, 26, 0, 502, 27, 0, 0, 0, + 0, 28, 0, 0, 0, 29, 0, 0, 0, 0, + 0, 0, 0, 0, 31, 0, 0, 0, 0, 0, + 0, 33, 0, 498, 0, 0, 34, 0, 0, 0, + 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 37, 0, 38, 0, 0, 0, 39, 0, + 0, 0, 0, 0, 0, 0, 40, 41, 388, 0, + 42, 0, 0, 321, 498, 0, 0, 0, 0, 498, + 0, 498, 498, 498, 498, 498, 498, 498, 498, 498, + 498, 498, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 498, 498, 388, 498, 498, 498, 498, 498, + 498, 498, 0, 498, 498, 0, 498, 498, 498, 498, + 498, 498, 498, 498, 498, 498, 0, 498, 498, 498, + 498, 498, 498, 498, 498, 498, 498, 498, 498, 498, + 498, 498, 498, 498, 498, 498, 498, 498, 498, 0, + 506, 0, 0, 0, 354, 498, 506, 0, 498, 0, + 0, 0, 0, 0, 498, 0, 0, 0, 0, 324, + 0, 0, 0, 0, 0, 324, 0, 388, 388, 388, + 388, 0, 388, 0, 388, 388, 0, 388, 388, 388, + 388, 388, 506, 388, 388, 388, 388, 0, 388, 388, + 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, + 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, + 0, 0, 0, 0, 324, 0, 388, 0, 0, 388, + 0, 0, 0, 506, 0, 388, 0, 0, 506, 0, + 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, + 506, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 506, 0, 506, 506, 506, 506, 506, 506, + 506, 0, 506, 506, 0, 506, 506, 506, 506, 506, + 506, 506, 506, 506, 506, 0, 506, 506, 506, 506, + 506, 506, 506, 506, 506, 506, 506, 506, 506, 506, + 506, 506, 506, 506, 506, 506, 506, 506, 0, 331, + 883, 0, 0, 0, 506, 331, 0, 506, 0, 25, + 0, 26, 0, 506, 27, 0, 0, 0, 0, 28, 0, 0, 0, 29, 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 0, 0, 0, 0, 0, 33, - 0, 432, 0, 0, 34, 0, 0, 0, 35, 0, + 0, 331, 0, 0, 34, 0, 0, 0, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 37, 0, 38, 0, 0, 0, 39, 0, 0, 0, 0, 0, 0, 0, 40, 41, 0, 0, 42, 0, - 0, 321, 432, 0, 0, 0, 0, 432, 0, 432, - 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, + 0, 321, 331, 0, 0, 0, 0, 331, 0, 331, + 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 432, 0, 432, 432, 432, 432, 432, 432, 432, - 0, 432, 432, 0, 432, 432, 432, 432, 432, 432, - 432, 432, 432, 432, 0, 432, 432, 432, 432, 432, - 432, 432, 432, 432, 432, 432, 432, 432, 432, 432, - 432, 432, 432, 432, 432, 432, 432, 0, 392, 1149, - 0, 0, 354, 432, 392, 0, 432, 0, 25, 0, - 26, 0, 432, 27, 0, 0, 0, 0, 28, 0, + 0, 331, 0, 331, 331, 331, 331, 331, 331, 331, + 0, 331, 331, 0, 331, 331, 331, 331, 331, 331, + 331, 331, 331, 331, 0, 331, 331, 331, 331, 331, + 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, + 331, 331, 331, 331, 331, 331, 331, 0, 431, 1029, + 0, 0, 354, 331, 431, 0, 331, 0, 25, 0, + 26, 0, 331, 27, 0, 0, 0, 0, 28, 0, 0, 0, 29, 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 0, 0, 0, 0, 0, 33, 0, - 392, 0, 0, 34, 0, 0, 0, 35, 0, 0, + 431, 0, 0, 34, 0, 0, 0, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 37, 0, 38, 0, 0, 0, 39, 0, 0, 0, 0, 0, 0, 0, 40, 41, 0, 0, 42, 0, 0, - 321, 392, 0, 0, 0, 0, 392, 0, 392, 392, - 392, 392, 392, 392, 392, 392, 392, 392, 392, 0, + 321, 431, 0, 0, 0, 0, 431, 0, 431, 431, + 431, 431, 431, 431, 431, 431, 431, 431, 431, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 392, 0, 392, 392, 392, 392, 392, 392, 392, 0, - 392, 0, 0, 392, 392, 392, 392, 392, 392, 392, - 392, 392, 392, 0, 392, 392, 392, 392, 392, 392, - 392, 392, 392, 392, 392, 392, 392, 392, 392, 392, - 392, 392, 392, 392, 392, 392, 0, 538, 0, 353, - 0, 354, 392, 538, 0, 392, 0, 0, 0, 0, - 0, 392, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 353, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 353, 0, 0, 0, 538, - 353, 0, 0, 229, 0, 353, 0, 353, 353, 353, - 353, 0, 0, 0, 0, 353, 0, 0, 0, 353, - 332, 0, 0, 353, 0, 0, 332, 0, 0, 0, - 737, 353, 0, 0, 353, 0, 353, 0, 0, 0, - 538, 0, 0, 0, 0, 538, 0, 538, 538, 538, - 538, 538, 538, 538, 538, 538, 538, 538, 0, 0, - 353, 0, 332, 0, 0, 0, 0, 0, 0, 538, - 0, 538, 0, 538, 0, 538, 538, 538, 737, 538, - 538, 0, 538, 538, 538, 538, 538, 538, 538, 538, - 538, 538, 0, 0, 0, 538, 538, 538, 538, 538, - 538, 538, 538, 538, 538, 538, 538, 538, 538, 538, - 538, 538, 538, 550, 538, 0, 353, 0, 0, 550, - 0, 332, 0, 0, 0, 0, 0, 332, 0, 0, - 538, 0, 0, 332, 332, 332, 332, 332, 332, 737, - 332, 0, 332, 332, 0, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 550, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 0, 0, - 0, 0, 332, 0, 332, 0, 0, 332, 0, 0, - 0, 0, 0, 332, 0, 0, 550, 0, 0, 0, - 0, 550, 0, 550, 550, 550, 550, 550, 550, 550, - 550, 550, 550, 550, 0, 0, 0, 554, 0, 0, - 0, 0, 0, 554, 0, 550, 0, 550, 0, 550, - 0, 550, 550, 550, 0, 550, 550, 0, 0, 550, - 550, 550, 550, 550, 550, 550, 550, 550, 0, 0, - 0, 550, 550, 550, 550, 550, 550, 550, 550, 554, + 431, 0, 431, 431, 431, 431, 431, 431, 431, 0, + 431, 431, 0, 431, 431, 431, 431, 431, 431, 431, + 431, 431, 431, 0, 431, 431, 431, 431, 431, 431, + 431, 431, 431, 431, 431, 431, 431, 431, 431, 431, + 431, 431, 431, 431, 431, 431, 0, 391, 1151, 0, + 0, 354, 431, 391, 0, 431, 0, 25, 0, 26, + 0, 431, 27, 0, 0, 0, 0, 28, 0, 0, + 0, 29, 0, 0, 0, 0, 0, 0, 0, 0, + 31, 0, 0, 0, 0, 0, 0, 33, 0, 391, + 0, 0, 34, 0, 0, 0, 35, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 37, 0, + 38, 0, 0, 0, 39, 0, 0, 0, 0, 0, + 0, 0, 40, 41, 0, 0, 42, 0, 0, 321, + 391, 0, 0, 0, 0, 391, 0, 391, 391, 391, + 391, 391, 391, 391, 391, 391, 391, 391, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 391, + 0, 391, 391, 391, 391, 391, 391, 391, 0, 391, + 0, 0, 391, 391, 391, 391, 391, 391, 391, 391, + 391, 391, 0, 391, 391, 391, 391, 391, 391, 391, + 391, 391, 391, 391, 391, 391, 391, 391, 391, 391, + 391, 391, 391, 391, 391, 0, 537, 0, 352, 0, + 354, 391, 537, 0, 391, 0, 0, 0, 0, 0, + 391, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 352, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 352, 0, 0, 0, 537, 352, + 0, 0, 229, 0, 352, 0, 352, 352, 352, 352, + 0, 0, 0, 0, 352, 0, 0, 0, 352, 331, + 0, 0, 352, 0, 0, 331, 0, 0, 0, 737, + 352, 0, 0, 352, 0, 352, 0, 0, 0, 537, + 0, 0, 0, 0, 537, 0, 537, 537, 537, 537, + 537, 537, 537, 537, 537, 537, 537, 0, 0, 352, + 0, 331, 0, 0, 0, 0, 0, 0, 537, 0, + 537, 0, 537, 0, 537, 537, 537, 737, 537, 537, + 0, 537, 537, 537, 537, 537, 537, 537, 537, 537, + 537, 0, 0, 0, 537, 537, 537, 537, 537, 537, + 537, 537, 537, 537, 537, 537, 537, 537, 537, 537, + 537, 537, 549, 537, 0, 352, 0, 0, 549, 0, + 331, 0, 0, 0, 0, 0, 331, 0, 0, 537, + 0, 0, 331, 331, 331, 331, 331, 331, 737, 331, + 0, 331, 331, 0, 331, 331, 331, 331, 331, 331, + 331, 331, 331, 331, 549, 331, 331, 331, 331, 331, + 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, + 331, 331, 331, 331, 331, 331, 331, 0, 0, 0, + 0, 331, 0, 331, 0, 0, 331, 0, 0, 0, + 0, 0, 331, 0, 0, 549, 0, 0, 0, 0, + 549, 0, 549, 549, 549, 549, 549, 549, 549, 549, + 549, 549, 549, 0, 0, 0, 553, 0, 0, 0, + 0, 0, 553, 0, 549, 0, 549, 0, 549, 0, + 549, 549, 549, 0, 549, 549, 0, 0, 549, 549, + 549, 549, 549, 549, 549, 549, 549, 0, 0, 0, + 549, 549, 549, 549, 549, 549, 549, 549, 553, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 549, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 550, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 557, 550, 0, 0, 0, - 0, 557, 0, 0, 0, 0, 0, 0, 0, 0, - 554, 0, 0, 0, 0, 554, 0, 554, 554, 554, - 554, 554, 554, 554, 554, 554, 554, 554, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 557, 0, 554, - 0, 554, 0, 554, 0, 554, 554, 554, 0, 554, - 554, 0, 0, 554, 554, 554, 554, 0, 0, 0, - 554, 554, 0, 0, 0, 554, 554, 554, 554, 554, - 554, 554, 554, 0, 0, 0, 0, 0, 557, 0, - 0, 0, 0, 557, 554, 557, 557, 557, 557, 557, - 557, 557, 557, 557, 557, 557, 0, 0, 0, 555, - 554, 0, 0, 0, 0, 555, 0, 557, 0, 557, - 0, 557, 0, 557, 557, 557, 0, 557, 557, 0, - 0, 557, 557, 557, 557, 0, 0, 0, 557, 557, - 0, 0, 0, 557, 557, 557, 557, 557, 557, 557, - 557, 555, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 557, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 556, 557, 0, - 0, 0, 0, 556, 0, 0, 0, 0, 0, 0, - 0, 0, 555, 0, 0, 0, 0, 555, 0, 555, - 555, 555, 555, 555, 555, 555, 555, 555, 555, 555, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 556, - 0, 555, 0, 555, 0, 555, 0, 555, 555, 555, - 0, 555, 555, 0, 0, 555, 555, 555, 555, 0, - 0, 0, 555, 555, 0, 560, 0, 555, 555, 555, - 555, 555, 555, 555, 555, 0, 0, 0, 0, 0, - 556, 0, 0, 0, 0, 556, 555, 556, 556, 556, - 556, 556, 556, 556, 556, 556, 556, 556, 0, 0, - 0, 0, 555, 0, 0, 0, 0, 0, 0, 556, - 0, 556, 0, 556, 0, 556, 556, 556, 0, 556, - 556, 0, 0, 556, 556, 556, 556, 0, 0, 0, - 556, 556, 0, 561, 0, 556, 556, 556, 556, 556, - 556, 556, 556, 0, 0, 0, 0, 0, 560, 0, - 0, 0, 0, 560, 556, 560, 560, 560, 560, 560, - 560, 560, 560, 560, 560, 560, 0, 0, 0, 0, - 556, 0, 0, 0, 0, 0, 0, 560, 0, 560, - 0, 560, 0, 560, 560, 560, 0, 0, 0, 0, - 0, 560, 560, 560, 560, 0, 0, 0, 560, 560, - 0, 562, 0, 560, 560, 560, 560, 560, 560, 560, - 560, 0, 0, 0, 0, 0, 561, 0, 0, 0, - 0, 561, 560, 561, 561, 561, 561, 561, 561, 561, - 561, 561, 561, 561, 0, 0, 0, 0, 560, 0, - 0, 0, 0, 0, 0, 561, 0, 561, 0, 561, - 0, 561, 561, 561, 0, 0, 0, 0, 0, 561, - 561, 561, 561, 0, 0, 0, 561, 561, 0, 563, - 0, 561, 561, 561, 561, 561, 561, 561, 561, 0, - 0, 0, 0, 0, 562, 0, 0, 0, 0, 562, - 561, 562, 562, 562, 562, 562, 562, 562, 562, 562, - 562, 562, 0, 0, 0, 0, 561, 0, 0, 0, - 0, 0, 0, 562, 0, 562, 0, 562, 0, 562, - 562, 562, 0, 0, 0, 0, 0, 562, 562, 562, - 562, 0, 0, 0, 562, 562, 0, 564, 0, 562, - 562, 562, 562, 562, 562, 562, 562, 0, 0, 0, - 0, 0, 563, 0, 0, 0, 0, 563, 562, 563, - 563, 563, 563, 563, 563, 563, 563, 563, 563, 563, - 0, 0, 0, 0, 562, 0, 0, 0, 0, 0, - 0, 563, 0, 563, 0, 563, 0, 563, 563, 563, - 0, 0, 0, 0, 0, 563, 563, 563, 563, 0, - 0, 0, 563, 563, 0, 565, 0, 0, 0, 563, - 563, 563, 563, 563, 563, 0, 0, 0, 0, 0, - 564, 0, 0, 0, 0, 564, 563, 564, 564, 564, - 564, 564, 564, 564, 564, 564, 564, 564, 0, 0, - 0, 0, 563, 0, 0, 0, 0, 0, 0, 564, - 0, 564, 0, 564, 0, 564, 564, 564, 0, 0, - 0, 0, 0, 564, 564, 564, 564, 0, 0, 0, - 564, 564, 0, 566, 0, 0, 0, 564, 564, 564, - 564, 564, 564, 0, 0, 0, 0, 0, 565, 0, - 0, 0, 0, 565, 564, 565, 565, 565, 565, 565, - 565, 565, 565, 565, 565, 565, 0, 0, 0, 0, - 564, 0, 0, 0, 0, 0, 0, 565, 0, 565, - 0, 565, 0, 565, 565, 565, 0, 0, 0, 0, - 0, 565, 565, 565, 565, 0, 0, 0, 565, 565, - 0, 567, 0, 0, 0, 565, 565, 565, 565, 565, - 565, 0, 0, 0, 0, 0, 566, 0, 0, 0, - 0, 566, 565, 566, 566, 566, 566, 566, 566, 566, - 566, 566, 566, 566, 0, 0, 0, 0, 565, 0, - 0, 0, 0, 0, 0, 566, 0, 566, 0, 566, - 0, 566, 566, 566, 0, 0, 0, 0, 0, 566, - 566, 566, 566, 0, 0, 0, 566, 566, 0, 568, - 0, 0, 0, 566, 566, 566, 566, 566, 566, 0, - 0, 0, 0, 0, 567, 0, 0, 0, 0, 567, - 566, 567, 567, 567, 567, 567, 567, 567, 567, 567, - 567, 567, 0, 0, 0, 0, 566, 0, 0, 0, - 0, 0, 0, 567, 0, 567, 0, 567, 0, 567, - 567, 567, 0, 0, 0, 0, 0, 567, 567, 567, - 567, 0, 0, 0, 567, 567, 0, 569, 0, 0, - 0, 567, 567, 567, 567, 567, 567, 0, 0, 0, - 0, 0, 568, 0, 0, 0, 0, 568, 567, 568, - 568, 568, 568, 568, 568, 568, 568, 568, 568, 568, - 0, 0, 0, 0, 567, 0, 0, 0, 0, 0, - 0, 568, 0, 568, 0, 568, 0, 568, 568, 568, - 0, 0, 0, 0, 0, 0, 0, 568, 568, 0, - 0, 0, 568, 568, 0, 570, 0, 0, 0, 0, - 0, 568, 568, 568, 568, 0, 0, 0, 0, 0, - 569, 0, 0, 0, 0, 569, 568, 569, 569, 569, - 569, 569, 569, 569, 569, 569, 569, 569, 0, 0, - 0, 0, 568, 0, 0, 0, 0, 0, 0, 569, - 0, 569, 0, 569, 0, 569, 569, 569, 0, 0, - 0, 0, 0, 0, 0, 569, 569, 0, 0, 0, - 569, 569, 0, 571, 0, 0, 0, 0, 0, 569, - 569, 569, 569, 0, 0, 0, 0, 0, 570, 0, - 0, 0, 0, 570, 569, 570, 570, 570, 570, 570, - 570, 570, 570, 570, 570, 570, 0, 0, 0, 0, - 569, 0, 0, 0, 0, 0, 0, 570, 0, 570, - 0, 570, 0, 570, 570, 570, 0, 0, 0, 0, - 0, 0, 0, 570, 570, 0, 0, 0, 570, 570, - 0, 572, 0, 0, 0, 0, 0, 570, 570, 570, - 570, 0, 0, 0, 0, 0, 571, 0, 0, 0, - 0, 571, 570, 571, 571, 571, 571, 571, 571, 571, - 571, 571, 571, 571, 0, 0, 0, 0, 570, 0, - 0, 0, 0, 0, 0, 571, 0, 571, 0, 571, - 0, 571, 571, 571, 0, 0, 0, 0, 0, 0, - 0, 571, 571, 0, 0, 0, 571, 571, 0, 573, - 0, 0, 0, 0, 0, 0, 0, 571, 571, 0, - 0, 0, 0, 0, 572, 0, 0, 0, 0, 572, - 571, 572, 572, 572, 572, 572, 572, 572, 572, 572, - 572, 572, 0, 0, 0, 0, 571, 0, 0, 0, - 0, 0, 0, 572, 0, 572, 0, 572, 0, 572, - 572, 572, 0, 0, 0, 0, 0, 0, 0, 572, - 572, 0, 0, 0, 572, 572, 0, 574, 0, 0, - 0, 0, 0, 0, 0, 572, 572, 0, 0, 0, - 0, 0, 573, 0, 0, 0, 0, 573, 572, 573, - 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, - 0, 0, 0, 0, 572, 0, 0, 0, 0, 0, - 0, 573, 0, 573, 0, 573, 0, 573, 573, 573, - 0, 0, 0, 0, 0, 0, 0, 0, 573, 0, - 0, 0, 573, 573, 0, 575, 0, 0, 0, 0, - 0, 0, 0, 573, 573, 0, 0, 0, 0, 0, - 574, 0, 0, 0, 0, 574, 573, 574, 574, 574, - 574, 574, 574, 574, 574, 574, 574, 574, 0, 0, - 0, 0, 573, 0, 0, 0, 0, 0, 0, 574, - 0, 574, 0, 574, 0, 574, 574, 574, 0, 0, - 0, 0, 0, 0, 0, 0, 574, 0, 0, 0, - 574, 574, 0, 576, 0, 0, 0, 0, 0, 0, - 0, 574, 574, 0, 0, 0, 0, 0, 575, 0, - 0, 0, 0, 575, 574, 575, 575, 575, 575, 575, - 575, 575, 575, 575, 575, 575, 0, 0, 0, 0, - 574, 0, 0, 0, 0, 0, 0, 575, 0, 575, - 0, 575, 0, 575, 575, 575, 0, 0, 0, 0, - 0, 0, 0, 0, 575, 0, 0, 0, 0, 575, - 0, 577, 0, 0, 0, 0, 0, 0, 0, 575, - 575, 0, 0, 0, 0, 0, 576, 0, 0, 0, - 0, 576, 575, 576, 576, 576, 576, 576, 576, 576, - 576, 576, 576, 576, 0, 0, 0, 0, 575, 0, - 0, 0, 0, 0, 0, 576, 0, 576, 0, 576, - 0, 576, 576, 576, 0, 0, 0, 0, 0, 0, - 0, 0, 576, 0, 0, 0, 0, 576, 0, 578, - 0, 0, 0, 0, 0, 0, 0, 576, 576, 0, - 0, 0, 0, 0, 577, 0, 0, 0, 0, 577, - 576, 577, 577, 577, 577, 577, 577, 577, 577, 577, - 577, 577, 0, 0, 0, 0, 576, 0, 0, 0, - 0, 0, 0, 577, 0, 577, 0, 577, 0, 577, - 577, 577, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 577, 0, 579, 0, 0, - 0, 0, 0, 0, 0, 577, 577, 0, 0, 0, - 0, 0, 578, 0, 0, 0, 0, 578, 577, 578, - 578, 578, 578, 578, 578, 578, 578, 578, 578, 578, - 0, 0, 0, 0, 577, 0, 0, 0, 0, 0, - 0, 578, 0, 578, 0, 578, 0, 578, 578, 578, - 0, 0, 0, 580, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 578, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 578, 578, 0, 0, 0, 0, 0, - 579, 0, 0, 0, 0, 579, 578, 579, 579, 579, - 579, 579, 579, 579, 579, 579, 579, 579, 0, 0, - 0, 0, 578, 0, 0, 0, 0, 0, 0, 579, - 0, 579, 0, 579, 0, 579, 579, 579, 0, 0, - 0, 581, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 579, 0, 0, 0, 0, 580, 0, 0, 0, - 0, 580, 579, 580, 580, 580, 580, 580, 580, 580, - 580, 580, 580, 580, 579, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 580, 0, 580, 0, 580, - 579, 580, 580, 580, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 580, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 580, 0, - 0, 0, 0, 0, 581, 0, 0, 0, 0, 581, - 580, 581, 581, 581, 581, 581, 581, 581, 581, 581, - 581, 581, 0, 0, 0, 0, 580, 0, 0, 0, - 0, 0, 0, 581, 0, 581, 0, 581, 0, 581, - 581, 581, 56, 0, 0, 0, 0, 0, 0, 0, - 57, 25, 58, 26, 0, 581, 27, 59, 0, 60, + 0, 0, 0, 0, 556, 549, 0, 0, 0, 0, + 556, 0, 0, 0, 0, 0, 0, 0, 0, 553, + 0, 0, 0, 0, 553, 0, 553, 553, 553, 553, + 553, 553, 553, 553, 553, 553, 553, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 556, 0, 553, 0, + 553, 0, 553, 0, 553, 553, 553, 0, 553, 553, + 0, 0, 553, 553, 553, 553, 0, 0, 0, 553, + 553, 0, 0, 0, 553, 553, 553, 553, 553, 553, + 553, 553, 0, 0, 0, 0, 0, 556, 0, 0, + 0, 0, 556, 553, 556, 556, 556, 556, 556, 556, + 556, 556, 556, 556, 556, 0, 0, 0, 554, 553, + 0, 0, 0, 0, 554, 0, 556, 0, 556, 0, + 556, 0, 556, 556, 556, 0, 556, 556, 0, 0, + 556, 556, 556, 556, 0, 0, 0, 556, 556, 0, + 0, 0, 556, 556, 556, 556, 556, 556, 556, 556, + 554, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 556, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 555, 556, 0, 0, + 0, 0, 555, 0, 0, 0, 0, 0, 0, 0, + 0, 554, 0, 0, 0, 0, 554, 0, 554, 554, + 554, 554, 554, 554, 554, 554, 554, 554, 554, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 555, 0, + 554, 0, 554, 0, 554, 0, 554, 554, 554, 0, + 554, 554, 0, 0, 554, 554, 554, 554, 0, 0, + 0, 554, 554, 0, 559, 0, 554, 554, 554, 554, + 554, 554, 554, 554, 0, 0, 0, 0, 0, 555, + 0, 0, 0, 0, 555, 554, 555, 555, 555, 555, + 555, 555, 555, 555, 555, 555, 555, 0, 0, 0, + 0, 554, 0, 0, 0, 0, 0, 0, 555, 0, + 555, 0, 555, 0, 555, 555, 555, 0, 555, 555, + 0, 0, 555, 555, 555, 555, 0, 0, 0, 555, + 555, 0, 560, 0, 555, 555, 555, 555, 555, 555, + 555, 555, 0, 0, 0, 0, 0, 559, 0, 0, + 0, 0, 559, 555, 559, 559, 559, 559, 559, 559, + 559, 559, 559, 559, 559, 0, 0, 0, 0, 555, + 0, 0, 0, 0, 0, 0, 559, 0, 559, 0, + 559, 0, 559, 559, 559, 0, 0, 0, 0, 0, + 559, 559, 559, 559, 0, 0, 0, 559, 559, 0, + 561, 0, 559, 559, 559, 559, 559, 559, 559, 559, + 0, 0, 0, 0, 0, 560, 0, 0, 0, 0, + 560, 559, 560, 560, 560, 560, 560, 560, 560, 560, + 560, 560, 560, 0, 0, 0, 0, 559, 0, 0, + 0, 0, 0, 0, 560, 0, 560, 0, 560, 0, + 560, 560, 560, 0, 0, 0, 0, 0, 560, 560, + 560, 560, 0, 0, 0, 560, 560, 0, 562, 0, + 560, 560, 560, 560, 560, 560, 560, 560, 0, 0, + 0, 0, 0, 561, 0, 0, 0, 0, 561, 560, + 561, 561, 561, 561, 561, 561, 561, 561, 561, 561, + 561, 0, 0, 0, 0, 560, 0, 0, 0, 0, + 0, 0, 561, 0, 561, 0, 561, 0, 561, 561, + 561, 0, 0, 0, 0, 0, 561, 561, 561, 561, + 0, 0, 0, 561, 561, 0, 563, 0, 561, 561, + 561, 561, 561, 561, 561, 561, 0, 0, 0, 0, + 0, 562, 0, 0, 0, 0, 562, 561, 562, 562, + 562, 562, 562, 562, 562, 562, 562, 562, 562, 0, + 0, 0, 0, 561, 0, 0, 0, 0, 0, 0, + 562, 0, 562, 0, 562, 0, 562, 562, 562, 0, + 0, 0, 0, 0, 562, 562, 562, 562, 0, 0, + 0, 562, 562, 0, 564, 0, 0, 0, 562, 562, + 562, 562, 562, 562, 0, 0, 0, 0, 0, 563, + 0, 0, 0, 0, 563, 562, 563, 563, 563, 563, + 563, 563, 563, 563, 563, 563, 563, 0, 0, 0, + 0, 562, 0, 0, 0, 0, 0, 0, 563, 0, + 563, 0, 563, 0, 563, 563, 563, 0, 0, 0, + 0, 0, 563, 563, 563, 563, 0, 0, 0, 563, + 563, 0, 565, 0, 0, 0, 563, 563, 563, 563, + 563, 563, 0, 0, 0, 0, 0, 564, 0, 0, + 0, 0, 564, 563, 564, 564, 564, 564, 564, 564, + 564, 564, 564, 564, 564, 0, 0, 0, 0, 563, + 0, 0, 0, 0, 0, 0, 564, 0, 564, 0, + 564, 0, 564, 564, 564, 0, 0, 0, 0, 0, + 564, 564, 564, 564, 0, 0, 0, 564, 564, 0, + 566, 0, 0, 0, 564, 564, 564, 564, 564, 564, + 0, 0, 0, 0, 0, 565, 0, 0, 0, 0, + 565, 564, 565, 565, 565, 565, 565, 565, 565, 565, + 565, 565, 565, 0, 0, 0, 0, 564, 0, 0, + 0, 0, 0, 0, 565, 0, 565, 0, 565, 0, + 565, 565, 565, 0, 0, 0, 0, 0, 565, 565, + 565, 565, 0, 0, 0, 565, 565, 0, 567, 0, + 0, 0, 565, 565, 565, 565, 565, 565, 0, 0, + 0, 0, 0, 566, 0, 0, 0, 0, 566, 565, + 566, 566, 566, 566, 566, 566, 566, 566, 566, 566, + 566, 0, 0, 0, 0, 565, 0, 0, 0, 0, + 0, 0, 566, 0, 566, 0, 566, 0, 566, 566, + 566, 0, 0, 0, 0, 0, 566, 566, 566, 566, + 0, 0, 0, 566, 566, 0, 568, 0, 0, 0, + 566, 566, 566, 566, 566, 566, 0, 0, 0, 0, + 0, 567, 0, 0, 0, 0, 567, 566, 567, 567, + 567, 567, 567, 567, 567, 567, 567, 567, 567, 0, + 0, 0, 0, 566, 0, 0, 0, 0, 0, 0, + 567, 0, 567, 0, 567, 0, 567, 567, 567, 0, + 0, 0, 0, 0, 0, 0, 567, 567, 0, 0, + 0, 567, 567, 0, 569, 0, 0, 0, 0, 0, + 567, 567, 567, 567, 0, 0, 0, 0, 0, 568, + 0, 0, 0, 0, 568, 567, 568, 568, 568, 568, + 568, 568, 568, 568, 568, 568, 568, 0, 0, 0, + 0, 567, 0, 0, 0, 0, 0, 0, 568, 0, + 568, 0, 568, 0, 568, 568, 568, 0, 0, 0, + 0, 0, 0, 0, 568, 568, 0, 0, 0, 568, + 568, 0, 570, 0, 0, 0, 0, 0, 568, 568, + 568, 568, 0, 0, 0, 0, 0, 569, 0, 0, + 0, 0, 569, 568, 569, 569, 569, 569, 569, 569, + 569, 569, 569, 569, 569, 0, 0, 0, 0, 568, + 0, 0, 0, 0, 0, 0, 569, 0, 569, 0, + 569, 0, 569, 569, 569, 0, 0, 0, 0, 0, + 0, 0, 569, 569, 0, 0, 0, 569, 569, 0, + 571, 0, 0, 0, 0, 0, 569, 569, 569, 569, + 0, 0, 0, 0, 0, 570, 0, 0, 0, 0, + 570, 569, 570, 570, 570, 570, 570, 570, 570, 570, + 570, 570, 570, 0, 0, 0, 0, 569, 0, 0, + 0, 0, 0, 0, 570, 0, 570, 0, 570, 0, + 570, 570, 570, 0, 0, 0, 0, 0, 0, 0, + 570, 570, 0, 0, 0, 570, 570, 0, 572, 0, + 0, 0, 0, 0, 0, 0, 570, 570, 0, 0, + 0, 0, 0, 571, 0, 0, 0, 0, 571, 570, + 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, + 571, 0, 0, 0, 0, 570, 0, 0, 0, 0, + 0, 0, 571, 0, 571, 0, 571, 0, 571, 571, + 571, 0, 0, 0, 0, 0, 0, 0, 571, 571, + 0, 0, 0, 571, 571, 0, 573, 0, 0, 0, + 0, 0, 0, 0, 571, 571, 0, 0, 0, 0, + 0, 572, 0, 0, 0, 0, 572, 571, 572, 572, + 572, 572, 572, 572, 572, 572, 572, 572, 572, 0, + 0, 0, 0, 571, 0, 0, 0, 0, 0, 0, + 572, 0, 572, 0, 572, 0, 572, 572, 572, 0, + 0, 0, 0, 0, 0, 0, 0, 572, 0, 0, + 0, 572, 572, 0, 574, 0, 0, 0, 0, 0, + 0, 0, 572, 572, 0, 0, 0, 0, 0, 573, + 0, 0, 0, 0, 573, 572, 573, 573, 573, 573, + 573, 573, 573, 573, 573, 573, 573, 0, 0, 0, + 0, 572, 0, 0, 0, 0, 0, 0, 573, 0, + 573, 0, 573, 0, 573, 573, 573, 0, 0, 0, + 0, 0, 0, 0, 0, 573, 0, 0, 0, 573, + 573, 0, 575, 0, 0, 0, 0, 0, 0, 0, + 573, 573, 0, 0, 0, 0, 0, 574, 0, 0, + 0, 0, 574, 573, 574, 574, 574, 574, 574, 574, + 574, 574, 574, 574, 574, 0, 0, 0, 0, 573, + 0, 0, 0, 0, 0, 0, 574, 0, 574, 0, + 574, 0, 574, 574, 574, 0, 0, 0, 0, 0, + 0, 0, 0, 574, 0, 0, 0, 0, 574, 0, + 576, 0, 0, 0, 0, 0, 0, 0, 574, 574, + 0, 0, 0, 0, 0, 575, 0, 0, 0, 0, + 575, 574, 575, 575, 575, 575, 575, 575, 575, 575, + 575, 575, 575, 0, 0, 0, 0, 574, 0, 0, + 0, 0, 0, 0, 575, 0, 575, 0, 575, 0, + 575, 575, 575, 0, 0, 0, 0, 0, 0, 0, + 0, 575, 0, 0, 0, 0, 575, 0, 577, 0, + 0, 0, 0, 0, 0, 0, 575, 575, 0, 0, + 0, 0, 0, 576, 0, 0, 0, 0, 576, 575, + 576, 576, 576, 576, 576, 576, 576, 576, 576, 576, + 576, 0, 0, 0, 0, 575, 0, 0, 0, 0, + 0, 0, 576, 0, 576, 0, 576, 0, 576, 576, + 576, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 576, 0, 578, 0, 0, 0, + 0, 0, 0, 0, 576, 576, 0, 0, 0, 0, + 0, 577, 0, 0, 0, 0, 577, 576, 577, 577, + 577, 577, 577, 577, 577, 577, 577, 577, 577, 0, + 0, 0, 0, 576, 0, 0, 0, 0, 0, 0, + 577, 0, 577, 0, 577, 0, 577, 577, 577, 0, + 0, 0, 579, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 577, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 577, 577, 0, 0, 0, 0, 0, 578, + 0, 0, 0, 0, 578, 577, 578, 578, 578, 578, + 578, 578, 578, 578, 578, 578, 578, 0, 0, 0, + 0, 577, 0, 0, 0, 0, 0, 0, 578, 0, + 578, 0, 578, 0, 578, 578, 578, 0, 0, 0, + 0, 331, 0, 0, 0, 737, 0, 0, 0, 0, + 578, 0, 0, 0, 0, 579, 0, 0, 0, 0, + 579, 578, 579, 579, 579, 579, 579, 579, 579, 579, + 579, 579, 579, 578, 0, 0, 0, 331, 0, 0, + 0, 0, 0, 0, 579, 0, 579, 0, 579, 578, + 579, 579, 579, 737, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 579, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 579, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 579, + 0, 0, 0, 0, 0, 0, 331, 0, 0, 0, + 0, 0, 331, 0, 0, 579, 0, 0, 331, 0, + 331, 0, 331, 0, 737, 331, 0, 331, 331, 0, + 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, + 0, 331, 331, 331, 331, 331, 331, 331, 331, 331, + 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, + 331, 331, 331, 0, 0, 56, 0, 331, 0, 331, + 0, 0, 331, 57, 25, 58, 26, 0, 331, 27, + 59, 0, 60, 61, 28, 62, 63, 64, 29, 0, + 0, 0, 0, 0, 65, 0, 66, 31, 67, 68, + 69, 70, 0, 0, 33, 0, 0, 0, 71, 34, + 0, 72, 73, 35, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 74, 0, 37, 0, 38, 75, 0, + 0, 39, 0, 76, 77, 78, 79, 80, 81, 40, + 41, 82, 83, 42, 84, 0, 85, 0, 0, 86, + 87, 0, 0, 88, 89, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 90, 91, + 92, 93, 94, 0, 0, 0, 95, 0, 0, 0, + 96, 0, 0, 0, 0, 97, 98, 99, 100, 101, + 0, 0, 0, 102, 0, 103, 0, 0, 0, 0, + 0, 104, 105, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 267, 0, 0, 0, 106, 107, 108, 109, + 57, 25, 58, 26, 0, 0, 27, 59, 0, 60, 61, 28, 62, 63, 64, 29, 0, 0, 0, 0, 0, 65, 0, 66, 31, 67, 68, 69, 70, 0, 0, 33, 0, 0, 0, 71, 34, 0, 72, 73, - 35, 0, 0, 0, 581, 0, 0, 0, 0, 0, + 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 74, 0, 37, 0, 38, 75, 0, 0, 39, 0, 76, 77, 78, 79, 80, 81, 40, 41, 82, 83, 42, 84, 0, 85, 0, 0, 86, 87, 0, 0, @@ -10309,7 +10346,7 @@ void case_950() 0, 0, 97, 98, 99, 100, 101, 0, 0, 0, 102, 0, 103, 0, 0, 0, 0, 0, 104, 105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 267, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 550, 0, 0, 0, 106, 107, 108, 109, 57, 25, 58, 26, 0, 0, 27, 59, 0, 60, 61, 28, 62, 63, 64, 29, 0, 0, 0, 0, 0, 65, 0, @@ -10325,1038 +10362,1008 @@ void case_950() 98, 99, 100, 101, 0, 0, 0, 102, 0, 103, 0, 0, 0, 0, 0, 104, 105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 550, 0, 0, 0, - 106, 107, 108, 109, 57, 25, 58, 26, 0, 0, - 27, 59, 0, 60, 61, 28, 62, 63, 64, 29, - 0, 0, 0, 0, 0, 65, 0, 66, 31, 67, - 68, 69, 70, 0, 0, 33, 0, 0, 0, 71, - 34, 0, 72, 73, 35, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 74, 0, 37, 0, 38, 75, - 0, 0, 39, 0, 76, 77, 78, 79, 80, 81, - 40, 41, 82, 83, 42, 84, 0, 85, 0, 0, - 86, 87, 0, 0, 88, 89, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 90, - 91, 92, 93, 94, 0, 0, 0, 95, 0, 0, - 0, 96, 0, 0, 0, 0, 97, 98, 99, 100, - 101, 0, 0, 0, 102, 0, 103, 0, 0, 0, - 0, 0, 104, 105, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 922, 0, 0, 0, 106, 107, 108, - 109, 922, 922, 922, 922, 0, 0, 922, 922, 0, - 922, 922, 922, 922, 922, 922, 922, 0, 0, 0, - 0, 0, 922, 0, 922, 922, 922, 922, 922, 922, - 0, 0, 922, 0, 0, 0, 922, 922, 0, 922, - 922, 922, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 922, 0, 922, 0, 922, 922, 0, 0, 922, - 0, 922, 922, 922, 922, 922, 922, 922, 922, 922, - 922, 922, 922, 0, 922, 0, 0, 922, 922, 0, - 0, 922, 922, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 922, 922, 922, 922, - 922, 0, 0, 0, 922, 0, 0, 0, 922, 0, - 0, 0, 0, 922, 922, 922, 922, 922, 0, 0, - 0, 922, 0, 922, 0, 0, 0, 0, 0, 922, - 922, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 783, 0, 0, 0, 922, 922, 922, 922, 783, 783, - 783, 783, 0, 0, 783, 783, 0, 783, 783, 783, - 783, 783, 783, 783, 0, 0, 0, 0, 0, 783, - 0, 783, 783, 783, 783, 783, 783, 0, 0, 783, - 0, 0, 0, 783, 783, 0, 783, 783, 783, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 783, 0, - 783, 0, 783, 783, 0, 0, 783, 0, 783, 783, - 783, 783, 783, 783, 783, 783, 783, 783, 783, 783, - 0, 783, 0, 0, 783, 783, 0, 0, 783, 783, + 0, 0, 0, 0, 0, 0, 924, 0, 0, 0, + 106, 551, 108, 109, 924, 924, 924, 924, 0, 0, + 924, 924, 0, 924, 924, 924, 924, 924, 924, 924, + 0, 0, 0, 0, 0, 924, 0, 924, 924, 924, + 924, 924, 924, 0, 0, 924, 0, 0, 0, 924, + 924, 0, 924, 924, 924, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 924, 0, 924, 0, 924, 924, + 0, 0, 924, 0, 924, 924, 924, 924, 924, 924, + 924, 924, 924, 924, 924, 924, 0, 924, 0, 0, + 924, 924, 0, 0, 924, 924, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 924, + 924, 924, 924, 924, 0, 0, 0, 924, 0, 0, + 0, 924, 0, 0, 0, 0, 924, 924, 924, 924, + 924, 0, 0, 0, 924, 0, 924, 0, 0, 0, + 0, 0, 924, 924, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 783, 0, 0, 0, 924, 924, 924, + 924, 783, 783, 783, 783, 0, 0, 783, 783, 0, + 783, 783, 783, 783, 783, 783, 783, 0, 0, 0, + 0, 0, 783, 0, 783, 783, 783, 783, 783, 783, + 0, 0, 783, 0, 0, 0, 783, 783, 0, 783, + 783, 783, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 783, 0, 783, 0, 783, 783, 0, 0, 783, + 0, 783, 783, 783, 783, 783, 783, 783, 783, 783, + 783, 783, 783, 0, 783, 0, 0, 783, 783, 0, + 0, 783, 783, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 783, 783, 783, 783, + 783, 0, 0, 0, 783, 0, 0, 0, 783, 0, 0, 0, 0, 783, 783, 783, 783, 783, 0, 0, - 0, 783, 0, 0, 0, 783, 0, 0, 0, 0, - 783, 783, 783, 783, 783, 0, 0, 0, 783, 0, - 783, 0, 0, 0, 0, 0, 783, 783, 0, 0, + 0, 783, 0, 783, 0, 0, 0, 0, 0, 783, + 783, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 729, 0, 0, - 0, 783, 783, 783, 783, 57, 25, 0, 26, 0, - 0, 27, 255, 0, 0, 0, 28, 62, 63, 0, + 730, 0, 0, 0, 783, 783, 783, 783, 57, 25, + 0, 26, 0, 0, 27, 255, 0, 0, 0, 28, + 62, 63, 0, 29, 0, 0, 172, 0, 172, 65, + 0, 172, 31, 0, 0, 0, 172, 0, 0, 33, + 172, 0, 0, 0, 34, 0, 72, 73, 35, 172, + 0, 0, 0, 0, 0, 0, 172, 0, 0, 0, + 37, 172, 38, 75, 0, 172, 39, 0, 0, 77, + 0, 79, 0, 81, 40, 41, 256, 172, 42, 172, + 0, 0, 0, 172, 0, 87, 0, 0, 88, 89, + 0, 172, 172, 0, 0, 172, 0, 0, 172, 0, + 0, 0, 0, 90, 91, 92, 93, 302, 0, 0, + 0, 512, 731, 0, 0, 96, 0, 0, 0, 0, + 0, 98, 99, 100, 101, 0, 0, 0, 102, 0, + 103, 0, 0, 948, 0, 0, 104, 105, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 914, 0, 0, + 0, 106, 303, 108, 109, 57, 25, 0, 26, 0, + 0, 27, 255, 0, 0, 0, 28, 62, 63, 172, 29, 0, 0, 172, 0, 172, 65, 0, 172, 31, 0, 0, 0, 172, 0, 0, 33, 172, 0, 0, 0, 34, 0, 72, 73, 35, 172, 0, 0, 0, 0, 0, 0, 172, 0, 0, 0, 37, 172, 38, - 75, 0, 172, 39, 0, 0, 77, 0, 79, 0, + 75, 915, 172, 39, 0, 0, 77, 0, 79, 0, 81, 40, 41, 256, 172, 42, 172, 0, 0, 0, 172, 0, 87, 0, 0, 88, 89, 0, 172, 172, 0, 0, 172, 0, 0, 172, 0, 0, 0, 0, - 90, 91, 92, 93, 302, 0, 0, 0, 512, 730, + 90, 91, 92, 93, 302, 0, 0, 0, 512, 0, 0, 0, 96, 0, 0, 0, 0, 0, 98, 99, - 100, 101, 0, 0, 0, 102, 0, 103, 0, 0, - 946, 0, 0, 104, 105, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 912, 0, 0, 0, 106, 303, - 108, 109, 57, 25, 0, 26, 0, 0, 27, 255, - 0, 0, 0, 28, 62, 63, 172, 29, 0, 0, - 172, 0, 172, 65, 0, 172, 31, 0, 0, 0, - 172, 0, 0, 33, 172, 0, 0, 0, 34, 0, - 72, 73, 35, 172, 0, 0, 0, 0, 0, 0, - 172, 0, 0, 0, 37, 172, 38, 75, 913, 172, - 39, 0, 0, 77, 0, 79, 0, 81, 40, 41, - 256, 172, 42, 172, 0, 0, 0, 172, 0, 87, - 0, 0, 88, 89, 0, 172, 172, 0, 0, 172, - 0, 0, 172, 0, 0, 0, 0, 90, 91, 92, - 93, 302, 0, 0, 0, 512, 0, 0, 0, 96, - 0, 0, 0, 0, 0, 98, 99, 100, 101, 0, - 0, 0, 102, 0, 103, 946, 0, 0, 0, 0, - 104, 105, 0, 0, 0, 0, 0, 0, 57, 25, - 0, 26, 0, 0, 27, 255, 0, 0, 0, 28, - 62, 63, 0, 29, 0, 106, 303, 108, 109, 65, - 0, 0, 31, 0, 0, 0, 0, 0, 0, 33, - 0, 0, 0, 172, 34, 0, 72, 73, 35, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 37, 0, 38, 75, 0, 0, 39, 0, 0, 77, - 0, 79, 0, 81, 40, 41, 256, 0, 42, 0, - 0, 0, 0, 0, 0, 87, 0, 0, 88, 89, + 100, 101, 0, 0, 0, 102, 0, 103, 948, 0, + 0, 0, 0, 104, 105, 0, 0, 0, 0, 0, + 0, 57, 25, 0, 26, 0, 0, 27, 255, 0, + 0, 0, 28, 62, 63, 0, 29, 0, 106, 303, + 108, 109, 65, 0, 0, 31, 0, 0, 0, 0, + 0, 0, 33, 0, 0, 0, 172, 34, 0, 72, + 73, 35, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 37, 0, 38, 75, 0, 0, 39, + 0, 0, 77, 0, 79, 0, 81, 40, 41, 256, + 0, 42, 0, 0, 0, 0, 0, 0, 87, 0, + 0, 88, 89, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 90, 91, 92, 93, + 302, 0, 0, 0, 717, 983, 0, 0, 96, 0, + 0, 0, 0, 0, 98, 99, 100, 101, 0, 0, + 0, 102, 0, 103, 0, 0, 0, 0, 0, 104, + 105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 90, 91, 92, 93, 302, 0, 0, - 0, 716, 982, 0, 0, 96, 0, 0, 0, 0, - 0, 98, 99, 100, 101, 0, 0, 0, 102, 0, - 103, 0, 0, 0, 0, 0, 104, 105, 0, 0, + 0, 0, 730, 0, 106, 718, 108, 109, 0, 0, + 57, 25, 0, 26, 0, 719, 27, 255, 0, 0, + 0, 28, 62, 63, 0, 29, 0, 0, 25, 0, + 26, 65, 0, 27, 31, 0, 0, 0, 28, 0, + 0, 33, 29, 0, 0, 0, 34, 0, 72, 73, + 35, 31, 0, 0, 0, 0, 0, 0, 33, 0, + 0, 0, 37, 34, 38, 75, 915, 35, 39, 0, + 0, 77, 0, 79, 0, 81, 40, 41, 256, 37, + 42, 38, 0, 0, 0, 39, 0, 87, 0, 0, + 88, 89, 0, 40, 41, 0, 0, 42, 0, 0, + 321, 0, 0, 0, 0, 90, 91, 92, 93, 302, + 0, 0, 0, 512, 0, 0, 0, 96, 0, 0, + 0, 0, 0, 98, 99, 100, 101, 0, 0, 0, + 102, 0, 103, 0, 0, 0, 0, 0, 104, 105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 729, - 0, 106, 717, 108, 109, 0, 0, 57, 25, 0, - 26, 0, 718, 27, 255, 0, 0, 0, 28, 62, - 63, 0, 29, 0, 0, 25, 0, 26, 65, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 700, + 0, 0, 0, 106, 303, 108, 109, 57, 25, 0, + 26, 0, 0, 27, 255, 0, 0, 0, 28, 62, + 63, 354, 29, 0, 0, 25, 0, 26, 65, 0, 27, 31, 0, 0, 0, 28, 0, 0, 33, 29, 0, 0, 0, 34, 0, 72, 73, 35, 31, 0, 0, 0, 0, 0, 0, 33, 0, 0, 0, 37, - 34, 38, 75, 913, 35, 39, 0, 0, 77, 0, + 34, 38, 75, 0, 35, 39, 0, 0, 77, 0, 79, 0, 81, 40, 41, 256, 37, 42, 38, 0, - 0, 0, 39, 0, 87, 0, 0, 88, 89, 0, - 40, 41, 0, 0, 42, 0, 0, 321, 0, 0, + 85, 0, 39, 0, 87, 0, 0, 88, 89, 0, + 40, 41, 0, 0, 42, 0, 0, 514, 0, 0, 0, 0, 90, 91, 92, 93, 302, 0, 0, 0, - 512, 0, 0, 0, 96, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 96, 0, 0, 0, 0, 0, 98, 99, 100, 101, 0, 0, 0, 102, 0, 103, 0, 0, 0, 0, 0, 104, 105, 0, 0, 0, + 0, 0, 0, 57, 25, 0, 26, 0, 0, 27, + 255, 0, 0, 0, 28, 62, 63, 0, 29, 0, + 106, 303, 108, 109, 65, 0, 0, 31, 0, 0, + 0, 0, 0, 0, 33, 0, 0, 0, 354, 34, + 0, 72, 73, 35, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 37, 0, 38, 75, 0, + 0, 39, 0, 0, 77, 0, 79, 0, 81, 40, + 41, 256, 0, 42, 0, 0, 0, 0, 0, 0, + 87, 0, 0, 88, 89, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 90, 91, + 92, 93, 302, 0, 0, 0, 717, 0, 0, 0, + 96, 0, 0, 0, 0, 0, 98, 99, 100, 101, + 0, 0, 0, 102, 0, 103, 0, 0, 0, 0, + 0, 104, 105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 699, 0, 0, 0, - 106, 303, 108, 109, 57, 25, 0, 26, 0, 0, - 27, 255, 0, 0, 0, 28, 62, 63, 354, 29, - 0, 0, 25, 0, 26, 65, 0, 27, 31, 0, - 0, 0, 28, 0, 0, 33, 29, 0, 0, 0, - 34, 0, 72, 73, 35, 31, 0, 0, 0, 0, - 0, 0, 33, 0, 0, 0, 37, 34, 38, 75, - 0, 35, 39, 0, 0, 77, 0, 79, 0, 81, - 40, 41, 256, 37, 42, 38, 0, 85, 0, 39, - 0, 87, 0, 0, 88, 89, 0, 40, 41, 0, - 0, 42, 0, 0, 514, 0, 0, 0, 0, 90, - 91, 92, 93, 302, 0, 0, 0, 0, 0, 0, - 0, 96, 0, 0, 0, 0, 0, 98, 99, 100, - 101, 0, 0, 0, 102, 0, 103, 0, 0, 0, - 0, 0, 104, 105, 0, 0, 0, 0, 0, 0, - 57, 25, 0, 26, 0, 0, 27, 255, 0, 0, - 0, 28, 62, 63, 0, 29, 0, 106, 303, 108, - 109, 65, 0, 0, 31, 0, 0, 0, 0, 0, - 0, 33, 0, 0, 0, 354, 34, 0, 72, 73, - 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 37, 0, 38, 75, 0, 0, 39, 0, - 0, 77, 0, 79, 0, 81, 40, 41, 256, 0, - 42, 0, 0, 0, 0, 0, 0, 87, 0, 0, - 88, 89, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 90, 91, 92, 93, 302, - 0, 0, 0, 716, 0, 0, 0, 96, 0, 0, - 0, 0, 0, 98, 99, 100, 101, 0, 0, 0, - 102, 0, 103, 0, 0, 0, 0, 0, 104, 105, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 730, 0, 106, 718, 108, 109, + 0, 0, 57, 25, 0, 26, 0, 719, 27, 255, + 0, 0, 0, 28, 62, 63, 0, 29, 0, 0, + 25, 0, 26, 65, 0, 27, 31, 0, 0, 0, + 28, 0, 0, 33, 29, 0, 0, 0, 34, 0, + 72, 73, 35, 31, 0, 0, 0, 0, 0, 0, + 33, 0, 0, 0, 37, 34, 38, 75, 0, 35, + 39, 0, 0, 77, 0, 79, 0, 81, 40, 41, + 256, 37, 42, 38, 0, 0, 0, 39, 0, 87, + 0, 0, 88, 89, 0, 40, 41, 0, 0, 42, + 0, 0, 567, 0, 0, 0, 0, 90, 91, 92, + 93, 302, 0, 0, 0, 512, 0, 0, 0, 96, + 0, 0, 0, 0, 0, 98, 99, 100, 101, 0, + 0, 0, 102, 0, 103, 0, 0, 0, 0, 0, + 104, 105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 729, 0, 106, 717, 108, 109, 0, 0, 57, - 25, 0, 26, 0, 718, 27, 255, 0, 0, 0, - 28, 62, 63, 0, 29, 0, 0, 25, 0, 26, + 0, 585, 0, 0, 0, 106, 303, 108, 109, 57, + 25, 0, 26, 0, 0, 27, 255, 0, 0, 0, + 28, 62, 63, 354, 29, 0, 0, 25, 0, 26, 65, 0, 27, 31, 0, 0, 0, 28, 0, 0, 33, 29, 0, 0, 0, 34, 0, 72, 73, 35, 31, 0, 0, 0, 0, 0, 0, 33, 0, 0, 0, 37, 34, 38, 75, 0, 35, 39, 0, 0, 77, 0, 79, 0, 81, 40, 41, 256, 37, 42, 38, 0, 0, 0, 39, 0, 87, 0, 0, 88, - 89, 0, 40, 41, 0, 0, 42, 0, 0, 566, - 0, 0, 0, 0, 90, 91, 92, 93, 302, 0, - 0, 0, 512, 0, 0, 0, 96, 0, 0, 0, + 89, 0, 40, 41, 0, 0, 42, 0, 0, 744, + 0, 0, 0, 0, 90, 91, 92, 93, 94, 0, + 0, 0, 0, 0, 0, 0, 96, 0, 0, 0, 0, 0, 98, 99, 100, 101, 0, 0, 0, 102, 0, 103, 0, 0, 0, 0, 0, 104, 105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 584, 0, - 0, 0, 106, 303, 108, 109, 57, 25, 0, 26, + 0, 0, 0, 0, 0, 0, 0, 0, 902, 0, + 0, 0, 106, 107, 108, 109, 57, 25, 0, 26, 0, 0, 27, 255, 0, 0, 0, 28, 62, 63, - 354, 29, 0, 0, 25, 0, 26, 65, 0, 27, - 31, 0, 0, 0, 28, 0, 0, 33, 29, 0, - 0, 0, 34, 0, 72, 73, 35, 31, 0, 0, - 0, 0, 0, 0, 33, 0, 0, 0, 37, 34, - 38, 75, 0, 35, 39, 0, 0, 77, 0, 79, - 0, 81, 40, 41, 256, 37, 42, 38, 0, 0, - 0, 39, 0, 87, 0, 0, 88, 89, 0, 40, - 41, 0, 0, 42, 0, 0, 743, 0, 0, 0, - 0, 90, 91, 92, 93, 94, 0, 0, 0, 0, + 354, 29, 0, 0, 485, 0, 485, 65, 0, 485, + 31, 0, 0, 0, 485, 0, 0, 33, 485, 0, + 0, 0, 34, 0, 72, 73, 35, 485, 0, 0, + 0, 0, 0, 0, 485, 0, 0, 0, 37, 485, + 38, 75, 0, 485, 39, 0, 0, 77, 0, 79, + 0, 81, 40, 41, 256, 485, 42, 485, 0, 0, + 0, 485, 0, 87, 0, 0, 88, 89, 0, 485, + 485, 0, 0, 485, 0, 0, 485, 0, 0, 0, + 0, 90, 91, 92, 93, 302, 0, 0, 0, 0, 0, 0, 0, 96, 0, 0, 0, 0, 0, 98, 99, 100, 101, 0, 0, 0, 102, 0, 103, 0, 0, 0, 0, 0, 104, 105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 900, 0, 0, 0, 106, - 107, 108, 109, 57, 25, 0, 26, 0, 0, 27, - 255, 0, 0, 0, 28, 62, 63, 354, 29, 0, - 0, 486, 0, 486, 65, 0, 486, 31, 0, 0, - 0, 486, 0, 0, 33, 486, 0, 0, 0, 34, - 0, 72, 73, 35, 486, 0, 0, 0, 0, 0, - 0, 486, 0, 0, 0, 37, 486, 38, 75, 0, - 486, 39, 0, 0, 77, 0, 79, 0, 81, 40, - 41, 256, 486, 42, 486, 0, 0, 0, 486, 0, - 87, 0, 0, 88, 89, 0, 486, 486, 0, 0, - 486, 0, 0, 486, 0, 0, 0, 0, 90, 91, - 92, 93, 302, 0, 0, 0, 0, 0, 0, 0, - 96, 0, 0, 0, 0, 0, 98, 99, 100, 101, - 0, 0, 0, 102, 0, 103, 0, 0, 0, 0, - 0, 104, 105, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 971, 0, 0, 0, 106, 303, 108, 109, + 0, 0, 0, 0, 0, 604, 0, 0, 0, 106, + 303, 108, 109, 604, 604, 0, 604, 0, 0, 604, + 604, 0, 0, 0, 604, 604, 604, 485, 604, 0, + 0, 173, 0, 173, 604, 0, 173, 604, 0, 0, + 0, 173, 0, 0, 604, 173, 0, 0, 0, 604, + 0, 604, 604, 604, 173, 0, 0, 0, 0, 0, + 0, 173, 0, 0, 0, 604, 173, 604, 604, 0, + 173, 604, 0, 0, 604, 0, 604, 0, 604, 604, + 604, 604, 173, 604, 173, 0, 0, 0, 173, 0, + 604, 0, 0, 604, 604, 0, 173, 173, 0, 0, + 173, 0, 0, 173, 0, 0, 0, 0, 604, 604, + 604, 604, 604, 0, 0, 0, 0, 0, 0, 0, + 604, 0, 0, 0, 0, 0, 604, 604, 604, 604, + 0, 0, 0, 604, 0, 604, 0, 0, 0, 0, + 0, 604, 604, 0, 0, 0, 0, 0, 0, 0, + 203, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 495, 0, 0, 0, 604, 604, 604, 604, 57, 25, 0, 26, 0, 0, 27, 255, 0, 0, - 0, 28, 62, 63, 486, 29, 0, 0, 173, 0, - 173, 65, 0, 173, 31, 0, 0, 0, 173, 0, - 0, 33, 173, 0, 0, 0, 34, 0, 72, 73, - 35, 173, 0, 0, 0, 0, 0, 0, 173, 0, - 0, 0, 37, 173, 38, 75, 0, 173, 39, 0, - 0, 77, 0, 79, 0, 81, 40, 41, 256, 173, - 42, 173, 0, 0, 0, 173, 0, 87, 0, 0, - 88, 89, 0, 173, 173, 0, 0, 173, 0, 0, - 173, 0, 0, 0, 0, 90, 91, 92, 93, 302, + 0, 28, 62, 63, 173, 29, 0, 0, 0, 0, + 0, 65, 204, 0, 31, 0, 0, 0, 0, 0, + 0, 33, 0, 0, 0, 331, 34, 0, 72, 73, + 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 37, 0, 38, 75, 0, 0, 39, 0, + 0, 77, 0, 79, 0, 81, 40, 41, 256, 0, + 42, 331, 205, 206, 207, 208, 0, 209, 210, 211, + 212, 213, 214, 215, 216, 0, 0, 217, 218, 219, + 220, 221, 222, 223, 224, 90, 91, 92, 257, 0, 0, 0, 0, 0, 0, 0, 0, 96, 0, 0, - 0, 0, 0, 98, 99, 100, 101, 0, 0, 0, - 102, 0, 103, 0, 0, 0, 0, 0, 104, 105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 605, - 0, 0, 0, 106, 303, 108, 109, 605, 605, 0, - 605, 0, 0, 605, 605, 0, 0, 0, 605, 605, - 605, 173, 605, 0, 0, 172, 0, 172, 605, 0, - 172, 605, 0, 0, 0, 172, 0, 0, 605, 172, - 0, 0, 0, 605, 0, 605, 605, 605, 172, 0, - 0, 0, 0, 0, 0, 172, 0, 0, 0, 605, - 172, 605, 605, 0, 172, 605, 0, 0, 605, 0, - 605, 0, 605, 605, 605, 605, 172, 605, 172, 0, - 0, 0, 172, 0, 605, 0, 0, 605, 605, 0, - 172, 172, 0, 0, 172, 0, 0, 172, 0, 0, - 0, 0, 605, 605, 605, 605, 605, 0, 0, 0, - 0, 0, 0, 0, 605, 0, 0, 0, 0, 0, - 605, 605, 605, 605, 0, 0, 0, 605, 0, 605, - 0, 0, 0, 0, 0, 605, 605, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 495, 0, 0, 0, - 605, 605, 605, 605, 57, 25, 0, 26, 0, 0, - 27, 255, 0, 0, 0, 28, 62, 63, 172, 29, - 0, 0, 0, 0, 0, 65, 0, 0, 31, 0, - 0, 0, 0, 0, 0, 33, 0, 450, 0, 332, - 34, 0, 72, 73, 35, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 37, 0, 38, 75, - 451, 0, 39, 0, 0, 77, 0, 79, 0, 81, - 40, 41, 256, 452, 42, 332, 0, 0, 454, 0, - 0, 0, 0, 455, 0, 456, 457, 458, 459, 0, - 0, 0, 0, 460, 0, 0, 0, 461, 0, 90, - 91, 92, 257, 0, 0, 0, 0, 0, 0, 462, - 0, 96, 463, 0, 464, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 465, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 332, 332, - 332, 332, 737, 0, 0, 332, 332, 106, 496, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 0, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 0, 48, 0, 1306, 0, 48, 332, 48, 0, - 332, 48, 0, 48, 48, 0, 48, 0, 48, 0, - 48, 0, 48, 48, 48, 48, 0, 0, 48, 48, - 0, 0, 0, 0, 48, 0, 48, 48, 48, 0, - 0, 48, 0, 48, 0, 48, 0, 0, 48, 0, - 48, 48, 48, 48, 0, 0, 0, 48, 48, 48, - 0, 0, 48, 48, 48, 0, 0, 0, 0, 0, - 0, 48, 48, 0, 48, 48, 0, 48, 48, 48, - 0, 0, 0, 48, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 331, 331, 331, 331, 737, 0, + 0, 331, 331, 106, 496, 331, 331, 331, 331, 331, + 331, 331, 331, 331, 0, 331, 331, 331, 331, 331, + 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, + 331, 331, 331, 331, 331, 331, 331, 0, 48, 0, + 0, 0, 48, 331, 48, 0, 331, 48, 0, 48, + 48, 0, 48, 0, 48, 0, 48, 0, 48, 48, + 48, 48, 0, 0, 48, 48, 0, 0, 0, 0, + 48, 0, 48, 48, 48, 0, 0, 48, 0, 48, + 0, 48, 0, 0, 48, 0, 48, 48, 48, 48, + 0, 0, 0, 48, 48, 48, 0, 0, 48, 48, + 48, 0, 0, 0, 0, 0, 0, 48, 48, 0, + 48, 48, 0, 48, 48, 48, 0, 0, 0, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 48, 0, 48, 0, 48, 0, 48, 0, 81, - 48, 0, 48, 48, 0, 48, 0, 48, 48, 48, - 0, 48, 48, 48, 48, 0, 0, 48, 48, 0, - 0, 0, 0, 48, 0, 48, 48, 48, 0, 0, - 48, 0, 48, 0, 48, 0, 0, 48, 0, 48, - 48, 48, 48, 0, 0, 0, 48, 48, 48, 48, - 0, 48, 48, 48, 0, 0, 0, 0, 0, 0, - 48, 48, 0, 48, 48, 0, 48, 48, 48, 0, - 0, 0, 48, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 48, 0, 48, + 0, 48, 0, 48, 0, 81, 48, 0, 48, 48, + 0, 48, 0, 48, 48, 48, 0, 48, 48, 48, + 48, 0, 0, 48, 48, 0, 0, 0, 0, 48, + 0, 48, 48, 48, 0, 0, 48, 0, 48, 0, + 48, 0, 0, 48, 0, 48, 48, 48, 48, 0, + 0, 0, 48, 48, 48, 48, 0, 48, 48, 48, + 0, 0, 0, 0, 0, 0, 48, 48, 0, 48, + 48, 0, 48, 48, 48, 0, 0, 0, 48, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 48, 0, 48, 0, + 48, 0, 48, 0, 82, 48, 0, 48, 48, 0, + 48, 0, 48, 48, 48, 0, 48, 48, 48, 48, + 0, 0, 48, 48, 0, 0, 0, 0, 48, 0, + 48, 48, 48, 0, 0, 48, 0, 48, 0, 48, + 0, 0, 48, 0, 48, 48, 48, 48, 0, 0, + 0, 48, 48, 48, 48, 0, 48, 48, 48, 0, + 0, 0, 0, 0, 0, 48, 48, 0, 48, 48, + 0, 48, 48, 48, 0, 0, 0, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 48, 0, 48, 0, 48, 0, 48, 0, 82, 48, - 0, 48, 48, 0, 48, 0, 48, 48, 48, 0, + 48, 0, 0, 0, 48, 0, 48, 48, 0, 48, + 0, 48, 48, 212, 48, 0, 48, 0, 48, 0, 48, 48, 48, 48, 0, 0, 48, 48, 0, 0, 0, 0, 48, 0, 48, 48, 48, 0, 0, 48, - 0, 48, 0, 48, 0, 0, 48, 0, 48, 48, - 48, 48, 0, 0, 0, 48, 48, 48, 48, 0, - 48, 48, 48, 0, 0, 0, 0, 0, 0, 48, - 48, 0, 48, 48, 0, 48, 48, 48, 0, 0, - 0, 48, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 48, 0, 0, 0, 48, 0, - 48, 48, 0, 48, 0, 48, 48, 212, 48, 0, - 48, 0, 48, 0, 48, 48, 48, 48, 0, 0, - 48, 48, 0, 0, 0, 0, 48, 0, 48, 48, - 48, 0, 0, 48, 0, 48, 332, 48, 0, 0, - 48, 0, 48, 48, 48, 48, 0, 0, 0, 48, - 48, 48, 0, 0, 48, 48, 48, 48, 0, 332, - 0, 0, 0, 48, 48, 0, 48, 48, 0, 48, - 48, 48, 332, 0, 0, 48, 0, 332, 0, 0, - 332, 0, 332, 0, 332, 332, 332, 332, 0, 0, - 0, 0, 332, 0, 0, 48, 332, 0, 0, 0, - 332, 213, 0, 0, 0, 0, 0, 0, 332, 0, - 0, 332, 0, 332, 57, 25, 0, 26, 0, 0, - 27, 255, 0, 0, 0, 28, 62, 63, 0, 29, - 0, 0, 332, 0, 0, 65, 0, 332, 31, 0, - 0, 0, 0, 0, 332, 33, 263, 0, 332, 0, - 34, 48, 72, 73, 35, 0, 586, 0, 0, 0, - 0, 332, 0, 587, 0, 0, 37, 0, 38, 75, - 0, 0, 39, 0, 0, 77, 0, 79, 0, 81, - 40, 41, 256, 0, 42, 0, 0, 0, 0, 0, - 0, 588, 0, 332, 88, 89, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 90, - 91, 92, 93, 94, 0, 0, 0, 0, 0, 0, - 0, 96, 907, 0, 589, 0, 0, 98, 99, 100, - 101, 0, 0, 0, 102, 0, 103, 0, 0, 0, - 0, 0, 104, 105, 0, 0, 0, 0, 0, 0, - 57, 25, 0, 26, 0, 0, 27, 255, 0, 0, - 0, 28, 62, 63, 0, 29, 0, 106, 107, 108, - 109, 65, 0, 0, 31, 0, 0, 0, 0, 0, - 0, 33, 0, 0, 0, 0, 34, 0, 72, 73, - 35, 0, 586, 0, 0, 0, 0, 0, 0, 587, - 0, 0, 37, 0, 38, 75, 0, 0, 39, 0, - 0, 77, 0, 79, 0, 81, 40, 41, 256, 0, - 42, 0, 0, 0, 0, 0, 0, 588, 0, 0, - 88, 89, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 90, 91, 92, 93, 94, - 0, 0, 0, 0, 0, 0, 0, 96, 0, 0, - 589, 0, 0, 98, 99, 100, 101, 0, 0, 0, - 102, 0, 103, 0, 0, 0, 0, 0, 104, 105, - 0, 0, 0, 0, 0, 0, 57, 25, 0, 26, - 0, 0, 27, 255, 0, 0, 0, 28, 62, 63, - 0, 29, 0, 106, 107, 108, 109, 65, 0, 0, - 31, 0, 0, 0, 0, 0, 0, 33, 0, 0, - 0, 0, 34, 0, 72, 73, 35, 0, 586, 0, - 0, 0, 0, 0, 0, 587, 0, 0, 37, 0, - 38, 75, 0, 0, 39, 0, 0, 77, 0, 79, - 0, 81, 40, 41, 256, 0, 42, 0, 0, 0, - 0, 0, 0, 588, 0, 0, 88, 89, 0, 0, + 0, 48, 331, 48, 0, 0, 48, 0, 48, 48, + 48, 48, 0, 0, 0, 48, 48, 48, 0, 0, + 48, 48, 48, 48, 0, 331, 0, 0, 0, 48, + 48, 0, 48, 48, 0, 48, 48, 48, 331, 0, + 0, 48, 0, 331, 0, 0, 331, 0, 331, 0, + 331, 331, 331, 331, 0, 0, 0, 0, 331, 0, + 0, 48, 331, 0, 0, 0, 331, 213, 0, 0, + 450, 0, 0, 0, 331, 0, 0, 331, 0, 331, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 90, 91, 92, 93, 94, 0, 0, 0, 0, - 0, 0, 0, 96, 0, 0, 0, 0, 0, 98, - 99, 100, 101, 0, 0, 0, 102, 0, 103, 0, - 0, 0, 0, 0, 104, 105, 0, 0, 0, 0, - 0, 0, 57, 25, 0, 26, 0, 0, 27, 255, - 0, 0, 0, 28, 62, 63, 0, 29, 0, 106, - 107, 108, 109, 65, 0, 0, 31, 0, 0, 0, - 0, 0, 0, 33, 0, 0, 0, 0, 34, 0, - 72, 73, 35, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 37, 0, 38, 75, 0, 0, - 39, 0, 0, 77, 0, 79, 0, 81, 40, 41, - 256, 0, 42, 0, 0, 85, 0, 0, 0, 87, - 0, 0, 88, 89, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 90, 91, 92, - 93, 302, 0, 0, 0, 0, 0, 0, 0, 96, - 0, 0, 0, 0, 0, 98, 99, 100, 101, 0, - 0, 0, 102, 0, 103, 0, 0, 0, 0, 0, - 104, 105, 0, 0, 0, 0, 0, 0, 57, 25, - 0, 26, 0, 0, 27, 255, 0, 0, 0, 28, - 62, 63, 0, 29, 0, 106, 303, 108, 109, 65, - 0, 0, 31, 0, 0, 0, 0, 0, 0, 33, - 0, 0, 0, 0, 34, 0, 72, 73, 35, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 37, 0, 38, 75, 0, 0, 39, 0, 0, 77, - 0, 79, 0, 81, 40, 41, 256, 0, 42, 0, - 0, 0, 0, 0, 0, 87, 0, 0, 88, 89, + 0, 0, 0, 451, 0, 0, 0, 0, 331, 0, + 0, 0, 0, 331, 0, 0, 452, 0, 0, 0, + 331, 454, 263, 0, 331, 0, 455, 48, 456, 457, + 458, 459, 0, 0, 0, 0, 460, 331, 0, 0, + 461, 0, 0, 0, 1294, 0, 0, 57, 25, 0, + 26, 0, 462, 27, 255, 463, 0, 464, 28, 62, + 63, 0, 29, 0, 0, 0, 0, 0, 65, 331, + 0, 31, 0, 0, 0, 0, 0, 0, 33, 0, + 0, 465, 0, 34, 0, 72, 73, 35, 0, 587, + 0, 0, 0, 0, 0, 0, 588, 0, 0, 37, + 0, 38, 75, 0, 0, 39, 0, 0, 77, 0, + 79, 0, 81, 40, 41, 256, 0, 42, 0, 0, + 0, 0, 0, 0, 589, 0, 0, 88, 89, 0, + 0, 0, 0, 0, 0, 0, 0, 1295, 0, 0, + 0, 0, 90, 91, 92, 93, 94, 0, 0, 0, + 0, 0, 0, 0, 96, 909, 0, 590, 0, 0, + 98, 99, 100, 101, 0, 0, 0, 102, 0, 103, + 0, 0, 0, 0, 0, 104, 105, 0, 0, 0, + 0, 0, 0, 57, 25, 0, 26, 0, 0, 27, + 255, 0, 0, 0, 28, 62, 63, 0, 29, 0, + 106, 107, 108, 109, 65, 0, 0, 31, 0, 0, + 0, 0, 0, 0, 33, 0, 0, 0, 0, 34, + 0, 72, 73, 35, 0, 587, 0, 0, 0, 0, + 0, 0, 588, 0, 0, 37, 0, 38, 75, 0, + 0, 39, 0, 0, 77, 0, 79, 0, 81, 40, + 41, 256, 0, 42, 0, 0, 0, 0, 0, 0, + 589, 0, 0, 88, 89, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 90, 91, + 92, 93, 94, 0, 0, 0, 0, 0, 0, 0, + 96, 0, 0, 590, 0, 0, 98, 99, 100, 101, + 0, 0, 0, 102, 0, 103, 0, 0, 0, 0, + 0, 104, 105, 0, 0, 0, 0, 0, 0, 57, + 25, 0, 26, 0, 0, 27, 255, 0, 0, 0, + 28, 62, 63, 0, 29, 0, 106, 107, 108, 109, + 65, 0, 0, 31, 0, 0, 0, 0, 0, 0, + 33, 0, 0, 0, 0, 34, 0, 72, 73, 35, + 0, 587, 0, 0, 0, 0, 0, 0, 588, 0, + 0, 37, 0, 38, 75, 0, 0, 39, 0, 0, + 77, 0, 79, 0, 81, 40, 41, 256, 0, 42, + 0, 0, 0, 0, 0, 0, 589, 0, 0, 88, + 89, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 90, 91, 92, 93, 94, 0, + 0, 0, 0, 0, 0, 0, 96, 0, 0, 0, + 0, 0, 98, 99, 100, 101, 0, 0, 0, 102, + 0, 103, 0, 0, 0, 0, 0, 104, 105, 0, + 0, 0, 0, 0, 0, 57, 25, 0, 26, 0, + 0, 27, 255, 0, 0, 0, 28, 62, 63, 0, + 29, 0, 106, 107, 108, 109, 65, 0, 0, 31, + 0, 0, 0, 0, 0, 0, 33, 0, 0, 0, + 0, 34, 0, 72, 73, 35, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 37, 0, 38, + 75, 0, 0, 39, 0, 0, 77, 0, 79, 0, + 81, 40, 41, 256, 0, 42, 0, 0, 85, 0, + 0, 0, 87, 0, 0, 88, 89, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 90, 91, 92, 93, 302, 0, 0, - 0, 0, 864, 0, 0, 96, 0, 0, 0, 0, - 0, 98, 99, 100, 101, 0, 0, 0, 102, 0, - 103, 0, 0, 0, 0, 0, 104, 105, 0, 0, - 0, 0, 0, 0, 57, 25, 0, 26, 0, 0, - 27, 255, 0, 0, 0, 28, 62, 63, 0, 29, - 0, 106, 303, 108, 109, 65, 0, 0, 31, 0, - 0, 0, 0, 0, 0, 33, 0, 0, 0, 0, - 34, 0, 72, 73, 35, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 37, 0, 38, 75, - 0, 0, 39, 0, 0, 77, 0, 79, 0, 81, - 40, 41, 256, 0, 42, 0, 0, 0, 0, 0, - 0, 87, 0, 0, 88, 89, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 90, - 91, 92, 93, 302, 0, 0, 0, 512, 0, 0, - 0, 96, 0, 0, 0, 0, 0, 98, 99, 100, - 101, 0, 0, 0, 102, 0, 103, 0, 0, 0, - 0, 0, 104, 105, 0, 0, 0, 0, 0, 0, - 57, 25, 0, 26, 0, 0, 27, 255, 0, 0, - 0, 28, 62, 63, 0, 29, 0, 106, 303, 108, - 109, 65, 0, 0, 31, 0, 0, 0, 0, 0, - 0, 33, 0, 0, 0, 0, 34, 0, 72, 73, - 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 37, 0, 38, 75, 0, 0, 39, 0, - 0, 77, 0, 79, 0, 81, 40, 41, 256, 0, - 42, 0, 0, 0, 0, 0, 0, 87, 0, 0, - 88, 89, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 90, 91, 92, 93, 302, - 0, 0, 0, 506, 0, 0, 0, 96, 0, 0, - 0, 0, 0, 98, 99, 100, 101, 0, 0, 0, - 102, 0, 103, 0, 0, 0, 0, 0, 104, 105, - 0, 0, 0, 0, 0, 0, 57, 25, 0, 26, - 0, 0, 27, 255, 0, 0, 0, 28, 62, 63, - 0, 29, 0, 106, 303, 108, 109, 65, 0, 0, - 31, 0, 0, 0, 0, 0, 0, 33, 0, 0, - 0, 0, 34, 0, 72, 73, 35, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 37, 0, - 38, 75, 0, 0, 39, 0, 0, 77, 0, 79, - 0, 81, 40, 41, 256, 0, 42, 0, 0, 0, - 0, 0, 0, 87, 0, 0, 88, 89, 0, 0, + 90, 91, 92, 93, 302, 0, 0, 0, 0, 0, + 0, 0, 96, 0, 0, 0, 0, 0, 98, 99, + 100, 101, 0, 0, 0, 102, 0, 103, 0, 0, + 0, 0, 0, 104, 105, 0, 0, 0, 0, 0, + 0, 57, 25, 0, 26, 0, 0, 27, 255, 0, + 0, 0, 28, 62, 63, 0, 29, 0, 106, 303, + 108, 109, 65, 0, 0, 31, 0, 0, 0, 0, + 0, 0, 33, 0, 0, 0, 0, 34, 0, 72, + 73, 35, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 37, 0, 38, 75, 0, 0, 39, + 0, 0, 77, 0, 79, 0, 81, 40, 41, 256, + 0, 42, 0, 0, 0, 0, 0, 0, 87, 0, + 0, 88, 89, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 90, 91, 92, 93, + 302, 0, 0, 0, 0, 866, 0, 0, 96, 0, + 0, 0, 0, 0, 98, 99, 100, 101, 0, 0, + 0, 102, 0, 103, 0, 0, 0, 0, 0, 104, + 105, 0, 0, 0, 0, 0, 0, 57, 25, 0, + 26, 0, 0, 27, 255, 0, 0, 0, 28, 62, + 63, 0, 29, 0, 106, 303, 108, 109, 65, 0, + 0, 31, 0, 0, 0, 0, 0, 0, 33, 0, + 0, 0, 0, 34, 0, 72, 73, 35, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 37, + 0, 38, 75, 0, 0, 39, 0, 0, 77, 0, + 79, 0, 81, 40, 41, 256, 0, 42, 0, 0, + 0, 0, 0, 0, 87, 0, 0, 88, 89, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 90, 91, 92, 93, 302, 0, 0, 0, 0, - 0, 0, 0, 96, 0, 0, 0, 0, 0, 98, - 99, 100, 101, 0, 0, 0, 102, 0, 103, 0, - 0, 0, 0, 0, 104, 105, 0, 0, 0, 0, - 0, 0, 57, 25, 0, 26, 0, 0, 27, 255, - 0, 0, 0, 28, 62, 63, 0, 29, 0, 106, - 303, 108, 109, 65, 0, 0, 31, 0, 0, 0, - 0, 0, 0, 33, 0, 0, 0, 0, 34, 0, - 72, 73, 35, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 37, 0, 38, 75, 0, 0, - 39, 0, 0, 77, 0, 79, 0, 81, 40, 41, - 256, 0, 42, 0, 0, 0, 0, 0, 0, 87, - 0, 0, 88, 89, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 90, 91, 92, - 93, 94, 0, 0, 0, 0, 0, 0, 0, 96, - 0, 0, 0, 0, 0, 98, 99, 100, 101, 0, - 0, 0, 102, 0, 103, 0, 0, 0, 0, 0, - 104, 105, 0, 0, 0, 0, 0, 0, 57, 25, - 0, 26, 0, 0, 27, 255, 0, 0, 0, 28, - 62, 63, 0, 29, 0, 106, 107, 108, 109, 65, - 0, 0, 31, 0, 0, 0, 0, 0, 0, 33, - 0, 0, 0, 0, 34, 0, 72, 73, 35, 0, + 0, 0, 90, 91, 92, 93, 302, 0, 0, 0, + 512, 0, 0, 0, 96, 0, 0, 0, 0, 0, + 98, 99, 100, 101, 0, 0, 0, 102, 0, 103, + 0, 0, 0, 0, 0, 104, 105, 0, 0, 0, + 0, 0, 0, 57, 25, 0, 26, 0, 0, 27, + 255, 0, 0, 0, 28, 62, 63, 0, 29, 0, + 106, 303, 108, 109, 65, 0, 0, 31, 0, 0, + 0, 0, 0, 0, 33, 0, 0, 0, 0, 34, + 0, 72, 73, 35, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 37, 0, 38, 75, 0, + 0, 39, 0, 0, 77, 0, 79, 0, 81, 40, + 41, 256, 0, 42, 0, 0, 0, 0, 0, 0, + 87, 0, 0, 88, 89, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 90, 91, + 92, 93, 302, 0, 0, 0, 506, 0, 0, 0, + 96, 0, 0, 0, 0, 0, 98, 99, 100, 101, + 0, 0, 0, 102, 0, 103, 0, 0, 0, 0, + 0, 104, 105, 0, 0, 0, 0, 0, 0, 57, + 25, 0, 26, 0, 0, 27, 255, 0, 0, 0, + 28, 62, 63, 0, 29, 0, 106, 303, 108, 109, + 65, 0, 0, 31, 0, 0, 0, 0, 0, 0, + 33, 0, 0, 0, 0, 34, 0, 72, 73, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 37, 0, 38, 75, 0, 0, 39, 0, 0, 77, - 0, 79, 0, 81, 40, 41, 256, 0, 42, 0, - 0, 0, 0, 0, 0, 87, 0, 0, 88, 89, + 0, 37, 0, 38, 75, 0, 0, 39, 0, 0, + 77, 0, 79, 0, 81, 40, 41, 256, 0, 42, + 0, 0, 0, 0, 0, 0, 87, 0, 0, 88, + 89, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 90, 91, 92, 93, 302, 0, + 0, 0, 0, 0, 0, 0, 96, 0, 0, 0, + 0, 0, 98, 99, 100, 101, 0, 0, 0, 102, + 0, 103, 0, 0, 0, 0, 0, 104, 105, 0, + 0, 0, 0, 0, 0, 57, 25, 0, 26, 0, + 0, 27, 255, 0, 0, 0, 28, 62, 63, 0, + 29, 0, 106, 303, 108, 109, 65, 0, 0, 31, + 0, 0, 0, 0, 0, 0, 33, 0, 0, 0, + 0, 34, 0, 72, 73, 35, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 37, 0, 38, + 75, 0, 0, 39, 0, 0, 77, 0, 79, 0, + 81, 40, 41, 256, 0, 42, 0, 0, 0, 0, + 0, 0, 87, 0, 0, 88, 89, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 90, 91, 92, 93, 94, 0, 0, - 0, 0, 0, 0, 0, 96, 0, 0, 0, 0, - 0, 98, 99, 100, 101, 0, 0, 0, 102, 0, - 103, 0, 0, 0, 0, 0, 104, 105, 0, 0, - 0, 0, 0, 0, 78, 78, 0, 78, 0, 0, - 78, 78, 0, 0, 0, 78, 78, 78, 0, 78, - 0, 106, 1020, 108, 109, 78, 0, 0, 78, 0, - 0, 0, 0, 0, 0, 78, 0, 0, 0, 0, - 78, 0, 78, 78, 78, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 78, 0, 78, 78, - 0, 0, 78, 0, 0, 78, 0, 78, 0, 78, - 78, 78, 78, 0, 78, 0, 0, 0, 0, 0, - 0, 78, 0, 0, 78, 78, 0, 0, 0, 0, + 90, 91, 92, 93, 94, 0, 0, 0, 0, 0, + 0, 0, 96, 0, 0, 0, 0, 0, 98, 99, + 100, 101, 0, 0, 0, 102, 0, 103, 0, 0, + 0, 0, 0, 104, 105, 0, 0, 0, 0, 0, + 0, 57, 25, 0, 26, 0, 0, 27, 255, 0, + 0, 0, 28, 62, 63, 0, 29, 0, 106, 107, + 108, 109, 65, 0, 0, 31, 0, 0, 0, 0, + 0, 0, 33, 0, 0, 0, 0, 34, 0, 72, + 73, 35, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 37, 0, 38, 75, 0, 0, 39, + 0, 0, 77, 0, 79, 0, 81, 40, 41, 256, + 0, 42, 0, 0, 0, 0, 0, 0, 87, 0, + 0, 88, 89, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 90, 91, 92, 93, + 94, 0, 0, 0, 0, 0, 0, 0, 96, 0, + 0, 0, 0, 0, 98, 99, 100, 101, 0, 0, + 0, 102, 0, 103, 0, 0, 0, 0, 0, 104, + 105, 0, 0, 0, 0, 0, 0, 78, 78, 0, + 78, 0, 0, 78, 78, 0, 0, 0, 78, 78, + 78, 0, 78, 0, 106, 1021, 108, 109, 78, 0, + 0, 78, 0, 0, 0, 0, 0, 0, 78, 0, + 0, 0, 0, 78, 0, 78, 78, 78, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 78, - 78, 78, 78, 78, 0, 0, 0, 0, 0, 0, - 0, 78, 0, 0, 0, 0, 0, 78, 78, 78, - 78, 0, 0, 0, 78, 0, 78, 0, 0, 0, - 0, 0, 78, 78, 0, 0, 0, 0, 0, 0, - 135, 135, 0, 135, 0, 0, 135, 135, 0, 0, - 0, 135, 135, 135, 0, 135, 0, 78, 78, 78, - 78, 135, 0, 0, 135, 0, 0, 0, 0, 0, - 0, 135, 0, 0, 0, 0, 135, 0, 135, 135, - 135, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 135, 0, 135, 135, 0, 0, 135, 0, - 0, 135, 0, 135, 0, 135, 135, 135, 135, 0, - 135, 0, 0, 0, 0, 0, 0, 135, 0, 0, - 135, 135, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 135, 135, 135, 135, 135, - 0, 0, 0, 0, 0, 0, 0, 135, 0, 0, - 0, 0, 0, 135, 135, 135, 135, 0, 0, 0, - 135, 0, 135, 0, 0, 0, 0, 0, 135, 135, - 0, 0, 0, 0, 0, 0, 57, 25, 0, 26, - 0, 0, 27, 255, 0, 0, 0, 28, 62, 63, - 0, 29, 0, 135, 135, 135, 135, 65, 0, 0, - 31, 0, 0, 0, 0, 0, 0, 33, 0, 28, + 0, 78, 78, 0, 0, 78, 0, 0, 78, 0, + 78, 0, 78, 78, 78, 78, 0, 78, 0, 0, + 0, 0, 0, 0, 78, 0, 0, 78, 78, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 78, 78, 78, 78, 78, 0, 0, 0, + 0, 0, 0, 0, 78, 0, 0, 0, 0, 0, + 78, 78, 78, 78, 0, 0, 0, 78, 0, 78, + 0, 0, 0, 0, 0, 78, 78, 0, 0, 0, + 0, 0, 0, 135, 135, 0, 135, 0, 0, 135, + 135, 0, 0, 0, 135, 135, 135, 0, 135, 0, + 78, 78, 78, 78, 135, 0, 0, 135, 0, 0, + 0, 0, 0, 0, 135, 0, 0, 0, 0, 135, + 0, 135, 135, 135, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 135, 0, 135, 135, 0, + 0, 135, 0, 0, 135, 0, 135, 0, 135, 135, + 135, 135, 0, 135, 0, 0, 0, 0, 0, 0, + 135, 0, 0, 135, 135, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 135, 135, + 135, 135, 135, 0, 0, 0, 0, 0, 0, 0, + 135, 0, 0, 0, 0, 0, 135, 135, 135, 135, + 0, 0, 0, 135, 0, 135, 0, 0, 0, 0, + 0, 135, 135, 0, 0, 0, 0, 0, 0, 57, + 25, 0, 26, 0, 0, 27, 255, 0, 0, 0, + 28, 62, 63, 0, 29, 0, 135, 135, 135, 135, + 65, 0, 0, 31, 0, 0, 0, 0, 0, 0, + 33, 0, 28, 0, 0, 34, 0, 72, 73, 35, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 37, 0, 38, 75, 28, 0, 39, 0, 0, + 77, 0, 79, 0, 81, 40, 41, 256, 28, 42, + 0, 0, 0, 28, 0, 0, 0, 0, 28, 0, + 28, 28, 28, 28, 0, 0, 28, 0, 28, 0, + 0, 0, 28, 0, 90, 91, 92, 257, 302, 0, + 0, 0, 0, 0, 28, 0, 96, 28, 0, 28, + 0, 0, 98, 99, 100, 101, 0, 0, 0, 102, + 0, 103, 0, 0, 0, 0, 0, 104, 105, 0, + 0, 0, 0, 28, 0, 0, 0, 0, 0, 28, + 28, 0, 0, 0, 0, 0, 0, 637, 0, 637, + 0, 637, 106, 258, 637, 109, 637, 637, 0, 637, + 0, 637, 0, 637, 0, 637, 637, 637, 0, 0, + 0, 637, 637, 0, 0, 0, 0, 637, 0, 637, + 637, 0, 0, 0, 637, 0, 0, 0, 637, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 637, + 637, 0, 637, 0, 0, 0, 637, 637, 0, 0, + 0, 0, 0, 0, 637, 637, 57, 25, 637, 26, + 0, 637, 27, 255, 0, 0, 637, 28, 62, 63, + 0, 29, 0, 0, 0, 0, 0, 65, 0, 0, + 31, 0, 0, 0, 0, 0, 0, 33, 637, 637, 0, 0, 34, 0, 72, 73, 35, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 37, 0, - 38, 75, 28, 0, 39, 0, 0, 77, 0, 79, - 0, 81, 40, 41, 256, 28, 42, 0, 0, 0, - 28, 0, 0, 0, 0, 28, 0, 28, 28, 28, - 28, 0, 0, 28, 0, 28, 0, 0, 0, 28, - 0, 90, 91, 92, 257, 302, 0, 0, 0, 0, - 0, 28, 0, 96, 28, 0, 28, 0, 0, 98, - 99, 100, 101, 0, 0, 0, 102, 0, 103, 0, - 0, 0, 0, 0, 104, 105, 0, 0, 0, 0, - 28, 0, 0, 0, 0, 0, 28, 28, 0, 0, - 0, 0, 0, 0, 638, 0, 638, 0, 638, 106, - 258, 638, 109, 638, 638, 0, 638, 0, 638, 0, - 638, 0, 638, 638, 638, 0, 0, 0, 638, 638, - 0, 0, 0, 0, 638, 0, 638, 638, 0, 0, - 0, 638, 0, 0, 0, 638, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 638, 638, 0, 638, - 0, 0, 0, 638, 638, 0, 0, 0, 0, 0, - 0, 638, 638, 57, 25, 638, 26, 0, 638, 27, - 255, 0, 0, 638, 28, 62, 63, 0, 29, 0, - 0, 0, 0, 0, 65, 0, 0, 31, 0, 0, - 0, 0, 0, 0, 33, 638, 638, 0, 0, 34, - 0, 72, 73, 35, 0, 0, 0, 0, 638, 0, - 0, 0, 0, 0, 0, 37, 0, 38, 75, 0, - 0, 39, 0, 0, 77, 0, 79, 0, 81, 40, - 41, 256, 0, 42, 0, 0, 85, 0, 0, 0, - 0, 0, 0, 25, 0, 26, 0, 0, 27, 638, - 1200, 0, 0, 28, 0, 0, 0, 29, 90, 91, - 92, 257, 0, 0, 0, 0, 31, 637, 0, 637, - 96, 0, 637, 33, 637, 637, 0, 637, 34, 637, - 1201, 637, 35, 637, 637, 637, 0, 0, 0, 637, - 637, 0, 0, 0, 37, 637, 38, 637, 637, 0, - 39, 1202, 637, 0, 0, 0, 637, 0, 40, 41, - 0, 0, 42, 0, 0, 321, 106, 258, 637, 0, - 637, 0, 0, 0, 637, 637, 0, 0, 0, 0, - 0, 0, 637, 637, 0, 25, 637, 26, 0, 637, - 27, 0, 0, 1261, 637, 28, 0, 675, 0, 29, - 0, 676, 1262, 1263, 0, 0, 0, 1264, 31, 0, - 0, 0, 0, 1265, 0, 33, 0, 0, 0, 0, - 34, 0, 0, 0, 35, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 37, 0, 38, 0, - 0, 0, 39, 0, 0, 0, 354, 0, 0, 0, - 40, 41, 0, 0, 42, 0, 0, 1266, 0, 25, - 0, 26, 1267, 0, 27, 0, 0, 1261, 0, 28, - 637, 675, 0, 29, 0, 676, 1262, 1263, 0, 0, - 0, 1264, 31, 0, 0, 0, 0, 1265, 0, 33, - 0, 48, 0, 48, 34, 0, 48, 1268, 35, 0, - 0, 48, 0, 0, 0, 48, 0, 0, 0, 0, - 37, 0, 38, 0, 48, 0, 39, 0, 0, 0, - 0, 48, 0, 0, 40, 41, 48, 0, 42, 0, - 48, 1266, 48, 0, 48, 48, 1267, 48, 1269, 48, - 48, 0, 48, 0, 48, 48, 0, 0, 48, 48, - 0, 48, 0, 0, 0, 0, 48, 48, 48, 0, - 48, 0, 0, 48, 0, 48, 0, 48, 0, 48, - 48, 0, 48, 0, 48, 0, 48, 48, 48, 0, - 0, 48, 0, 48, 0, 0, 48, 0, 48, 0, - 48, 0, 48, 0, 0, 48, 0, 48, 153, 0, - 48, 48, 48, 0, 48, 0, 48, 48, 48, 0, - 48, 25, 1269, 26, 0, 48, 27, 0, 48, 0, - 48, 28, 0, 0, 48, 29, 0, 48, 0, 0, - 0, 0, 48, 48, 31, 0, 48, 0, 0, 48, - 153, 33, 0, 25, 48, 26, 34, 0, 27, 0, - 35, 0, 563, 28, 0, 0, 0, 29, 0, 564, - 0, 0, 37, 0, 38, 0, 31, 0, 39, 0, - 0, 565, 0, 33, 203, 0, 40, 41, 34, 0, - 42, 0, 35, 566, 0, 0, 0, 182, 48, 182, - 0, 0, 182, 0, 37, 0, 38, 182, 0, 0, - 39, 182, 0, 0, 0, 0, 0, 0, 40, 41, - 182, 0, 42, 0, 0, 321, 204, 182, 0, 0, - 48, 0, 182, 0, 0, 0, 182, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 182, 0, - 182, 292, 0, 0, 182, 0, 0, 0, 0, 0, - 0, 0, 182, 182, 0, 0, 182, 0, 0, 182, - 0, 0, 0, 0, 567, 0, 205, 206, 207, 208, - 0, 209, 210, 211, 212, 213, 214, 215, 216, 35, - 0, 217, 218, 219, 220, 221, 222, 223, 224, 0, - 35, 0, 0, 0, 0, 35, 322, 0, 0, 35, - 0, 0, 35, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 35, 35, 0, 0, 0, 35, - 35, 0, 33, 0, 0, 35, 0, 35, 35, 35, - 35, 0, 0, 33, 0, 35, 0, 0, 33, 35, - 182, 35, 33, 0, 0, 33, 0, 0, 0, 0, - 0, 35, 0, 35, 35, 0, 35, 33, 33, 0, - 35, 0, 33, 33, 0, 28, 0, 28, 33, 0, - 33, 33, 33, 33, 0, 0, 0, 0, 33, 0, - 35, 0, 33, 0, 33, 0, 35, 35, 28, 0, - 0, 0, 0, 0, 33, 0, 0, 33, 0, 33, - 0, 28, 0, 33, 0, 0, 28, 0, 48, 0, - 0, 28, 0, 28, 28, 28, 28, 0, 0, 48, - 0, 28, 0, 33, 48, 28, 0, 0, 48, 33, - 33, 48, 0, 0, 0, 0, 0, 28, 0, 0, - 28, 0, 28, 48, 48, 0, 0, 0, 48, 48, - 0, 48, 0, 0, 48, 0, 48, 48, 48, 48, - 0, 0, 48, 0, 48, 0, 28, 48, 48, 0, - 48, 48, 28, 28, 48, 0, 0, 0, 0, 0, - 48, 0, 0, 48, 0, 48, 48, 48, 0, 48, - 0, 48, 48, 48, 0, 0, 0, 48, 0, 48, - 48, 48, 48, 0, 0, 0, 0, 48, 0, 48, - 0, 48, 0, 48, 0, 37, 48, 0, 0, 0, - 0, 0, 0, 48, 0, 0, 48, 0, 48, 48, - 0, 48, 48, 0, 48, 0, 0, 0, 0, 48, - 0, 48, 48, 48, 48, 0, 0, 0, 0, 48, - 0, 0, 48, 48, 48, 0, 0, 0, 38, 0, - 0, 0, 0, 0, 0, 48, 0, 48, 48, 48, - 48, 0, 48, 0, 0, 0, 0, 48, 0, 48, - 48, 48, 48, 0, 0, 0, 0, 48, 0, 0, - 0, 48, 48, 0, 48, 0, 48, 48, 0, 0, - 194, 0, 0, 48, 0, 48, 48, 48, 48, 48, - 48, 0, 0, 0, 0, 48, 0, 48, 48, 48, - 48, 0, 0, 48, 0, 48, 0, 0, 0, 48, - 48, 0, 48, 0, 48, 48, 0, 0, 196, 0, - 0, 48, 0, 48, 48, 48, 48, 0, 48, 0, - 0, 0, 0, 48, 0, 48, 48, 48, 48, 0, - 0, 0, 0, 48, 0, 0, 0, 48, 48, 0, - 48, 0, 0, 0, 0, 48, 296, 48, 0, 48, - 0, 48, 48, 0, 48, 0, 48, 0, 0, 0, - 0, 48, 0, 48, 48, 48, 48, 0, 48, 0, - 0, 48, 0, 0, 0, 48, 0, 0, 48, 0, - 0, 48, 0, 0, 297, 450, 48, 48, 0, 0, - 48, 48, 48, 48, 48, 48, 48, 0, 0, 48, - 0, 48, 0, 0, 0, 48, 0, 0, 451, 0, - 0, 0, 0, 0, 0, 0, 48, 48, 48, 48, - 48, 452, 48, 0, 0, 0, 454, 0, 0, 0, - 0, 455, 0, 456, 457, 458, 459, 0, 0, 0, - 0, 460, 0, 0, 0, 461, 48, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 462, 0, 0, - 463, 0, 464, 0, 0, 0, 0, 0, 0, 0, + 0, 637, 0, 0, 0, 0, 0, 0, 37, 0, + 38, 75, 0, 0, 39, 0, 0, 77, 0, 79, + 0, 81, 40, 41, 256, 0, 42, 0, 0, 85, + 0, 0, 0, 0, 0, 0, 25, 0, 26, 0, + 0, 27, 637, 1204, 0, 0, 28, 0, 0, 0, + 29, 90, 91, 92, 257, 0, 0, 0, 0, 31, + 636, 0, 636, 96, 0, 636, 33, 636, 636, 0, + 636, 34, 636, 1205, 636, 35, 636, 636, 636, 0, + 0, 0, 636, 636, 0, 0, 0, 37, 636, 38, + 636, 636, 0, 39, 1206, 636, 0, 0, 0, 636, + 0, 40, 41, 0, 0, 42, 0, 0, 321, 106, + 258, 636, 0, 636, 0, 0, 0, 636, 636, 0, + 0, 0, 0, 0, 0, 636, 636, 0, 636, 636, + 636, 0, 636, 636, 0, 636, 636, 636, 636, 0, + 636, 0, 636, 0, 636, 636, 636, 0, 0, 0, + 636, 636, 0, 0, 0, 0, 636, 0, 636, 636, + 0, 0, 0, 636, 0, 0, 0, 636, 0, 0, + 0, 0, 636, 0, 0, 0, 0, 0, 0, 636, + 0, 636, 0, 0, 0, 636, 636, 0, 0, 354, + 0, 0, 0, 636, 636, 0, 0, 636, 0, 0, + 636, 0, 25, 0, 26, 636, 0, 27, 0, 0, + 1264, 0, 28, 636, 676, 0, 29, 0, 677, 1265, + 1266, 0, 0, 0, 1267, 31, 0, 0, 0, 0, + 1268, 0, 33, 0, 25, 0, 26, 34, 0, 27, + 0, 35, 1264, 0, 28, 0, 676, 0, 29, 0, + 677, 1265, 1266, 37, 0, 38, 1267, 31, 0, 39, + 0, 0, 1268, 0, 33, 0, 0, 40, 41, 34, + 0, 42, 0, 35, 1269, 0, 0, 0, 48, 1270, + 48, 636, 0, 48, 0, 37, 0, 38, 48, 0, + 0, 39, 48, 0, 0, 0, 0, 0, 0, 40, + 41, 48, 0, 42, 0, 0, 1269, 0, 48, 0, + 48, 1270, 48, 48, 1271, 48, 0, 48, 0, 48, + 48, 48, 0, 0, 48, 0, 48, 0, 0, 48, + 0, 48, 0, 48, 0, 48, 0, 0, 48, 0, + 48, 0, 0, 48, 48, 48, 0, 48, 0, 48, + 48, 48, 0, 48, 48, 1272, 48, 0, 48, 48, + 0, 48, 0, 48, 48, 0, 0, 48, 48, 0, + 48, 0, 0, 0, 0, 48, 48, 48, 0, 48, + 0, 0, 48, 0, 48, 153, 25, 1272, 26, 48, + 0, 27, 0, 48, 0, 48, 28, 48, 0, 0, + 29, 0, 48, 0, 0, 48, 0, 48, 0, 31, + 0, 48, 0, 0, 48, 153, 33, 0, 0, 48, + 48, 34, 0, 48, 0, 35, 48, 564, 0, 0, + 0, 48, 0, 0, 565, 0, 0, 37, 0, 38, + 0, 0, 0, 39, 0, 0, 566, 0, 0, 0, + 0, 40, 41, 0, 0, 42, 0, 25, 567, 26, + 0, 0, 27, 48, 0, 0, 0, 28, 0, 0, + 0, 29, 0, 0, 0, 30, 172, 0, 172, 0, + 31, 172, 0, 0, 0, 32, 172, 33, 0, 0, + 172, 0, 34, 0, 0, 0, 35, 36, 0, 172, + 0, 0, 0, 0, 0, 0, 172, 48, 37, 0, + 38, 172, 0, 0, 39, 172, 0, 0, 0, 0, + 0, 0, 40, 41, 0, 0, 42, 172, 0, 172, + 182, 0, 182, 172, 0, 182, 0, 0, 0, 568, + 182, 172, 172, 0, 182, 172, 0, 0, 172, 0, + 0, 0, 0, 182, 0, 0, 0, 0, 0, 0, + 182, 0, 0, 0, 0, 182, 0, 0, 35, 182, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, + 0, 182, 0, 182, 35, 0, 0, 182, 35, 0, + 0, 35, 0, 0, 0, 182, 182, 0, 0, 182, + 0, 0, 182, 35, 35, 0, 0, 0, 35, 35, + 43, 0, 0, 0, 35, 0, 35, 35, 35, 35, + 0, 0, 0, 0, 35, 0, 0, 0, 35, 172, + 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 35, 0, 35, 35, 33, 35, 0, 0, 0, 35, + 0, 0, 0, 0, 0, 33, 0, 0, 0, 0, + 33, 0, 0, 0, 33, 0, 0, 33, 0, 35, + 0, 0, 0, 0, 0, 35, 35, 0, 0, 33, + 33, 0, 0, 182, 33, 33, 28, 0, 28, 0, + 33, 0, 33, 33, 33, 33, 0, 0, 0, 0, + 33, 0, 0, 0, 33, 0, 33, 0, 0, 28, + 0, 0, 0, 0, 0, 0, 33, 0, 0, 33, + 0, 33, 28, 0, 0, 33, 0, 28, 0, 0, + 0, 0, 28, 0, 28, 28, 28, 28, 0, 0, + 0, 0, 28, 0, 0, 33, 28, 0, 0, 48, + 0, 33, 33, 0, 0, 0, 0, 0, 28, 0, + 48, 28, 0, 28, 0, 48, 0, 0, 0, 48, + 0, 0, 48, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 48, 48, 0, 28, 0, 48, + 48, 0, 48, 28, 28, 48, 0, 48, 48, 48, + 48, 0, 0, 48, 0, 48, 0, 0, 48, 48, + 0, 48, 48, 0, 0, 48, 0, 0, 0, 0, + 0, 48, 0, 0, 48, 0, 48, 48, 48, 0, + 48, 0, 48, 48, 48, 0, 0, 0, 48, 0, + 48, 48, 48, 48, 0, 0, 0, 0, 48, 0, + 48, 0, 48, 0, 48, 0, 37, 48, 0, 0, + 0, 0, 0, 0, 48, 0, 0, 48, 0, 48, + 48, 0, 48, 48, 0, 48, 0, 0, 0, 0, + 48, 0, 48, 48, 48, 48, 0, 0, 0, 0, + 48, 0, 0, 48, 48, 48, 0, 0, 0, 38, + 0, 0, 0, 0, 0, 0, 48, 0, 48, 48, + 48, 48, 0, 48, 0, 0, 0, 0, 48, 0, + 48, 48, 48, 48, 0, 0, 0, 0, 48, 0, + 0, 0, 48, 48, 0, 48, 0, 48, 48, 0, + 0, 194, 0, 0, 48, 0, 48, 48, 48, 48, + 48, 48, 0, 0, 0, 0, 48, 0, 48, 48, + 48, 48, 0, 0, 48, 0, 48, 0, 0, 0, + 48, 48, 0, 48, 0, 48, 48, 0, 0, 196, + 0, 0, 48, 0, 48, 48, 48, 48, 0, 48, + 0, 0, 0, 0, 48, 0, 48, 48, 48, 48, + 0, 0, 0, 0, 48, 0, 0, 0, 48, 48, + 0, 48, 0, 0, 0, 0, 48, 296, 48, 0, + 48, 0, 48, 48, 0, 48, 0, 48, 0, 0, + 0, 0, 48, 0, 48, 48, 48, 48, 0, 48, + 0, 0, 48, 0, 0, 0, 48, 0, 0, 48, + 0, 0, 48, 0, 0, 297, 450, 48, 48, 0, + 0, 48, 48, 48, 48, 48, 48, 48, 0, 0, + 48, 0, 48, 0, 0, 0, 48, 0, 0, 451, + 0, 0, 0, 0, 0, 0, 450, 48, 48, 48, + 48, 48, 452, 48, 0, 0, 453, 454, 0, 0, + 0, 0, 455, 0, 456, 457, 458, 459, 0, 451, + 0, 0, 460, 0, 0, 0, 461, 48, 0, 0, + 0, 0, 452, 0, 0, 0, 0, 454, 462, 0, + 0, 463, 455, 464, 456, 457, 458, 459, 0, 0, + 0, 0, 460, 0, 0, 0, 461, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 465, 462, 0, + 0, 463, 0, 464, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 465, + 0, 0, 0, 0, 0, 0, 0, 465, }; protected static readonly short [] yyCheck = { 17, - 300, 52, 17, 17, 20, 88, 89, 4, 510, 18, - 301, 190, 338, 512, 290, 6, 234, 60, 249, 353, - 299, 20, 467, 189, 486, 552, 109, 158, 17, 297, - 331, 320, 85, 353, 60, 1126, 1127, 913, 1089, 709, - 710, 256, 764, 78, 236, 59, 0, 918, 327, 192, - 577, 734, 256, 268, 17, 114, 74, 116, 325, 1167, - 78, 114, 569, 116, 368, 48, 80, 256, 82, 256, - 256, 256, 88, 89, 17, 257, 256, 1168, 96, 256, - 256, 256, 752, 256, 754, 325, 17, 335, 368, 17, - 1198, 372, 62, 109, 268, 257, 66, 67, 68, 256, - 70, 71, 282, 264, 256, 75, 76, 256, 268, 17, - 363, 17, 82, 376, 84, 17, 86, 17, 201, 202, - 374, 91, 92, 17, 268, 429, 0, 17, 256, 1282, - 256, 410, 276, 69, 314, 17, 256, 368, 277, 190, - 158, 368, 1295, 158, 158, 115, 370, 654, 429, 429, - 374, 418, 88, 89, 358, 888, 256, 93, 256, 60, - 358, 1314, 416, 339, 325, 418, 429, 1275, 344, 158, - 346, 1279, 0, 1044, 256, 294, 352, 353, 418, 322, - 263, 429, 369, 234, 256, 201, 202, 306, 294, 256, - 339, 418, 526, 94, 1207, 158, 1304, 98, 99, 100, - 101, 102, 103, 104, 105, 506, 289, 422, 368, 509, - 1223, 354, 711, 431, 548, 158, 359, 369, 375, 363, - 424, 425, 426, 427, 363, 308, 552, 158, 548, 418, - 158, 249, 418, 418, 256, 569, 254, 173, 418, 230, - 432, 418, 225, 418, 287, 418, 374, 263, 422, 369, - 158, 577, 158, 429, 297, 381, 158, 363, 158, 341, - 256, 287, 422, 996, 158, 998, 319, 350, 158, 328, - 323, 1082, 290, 289, 418, 328, 158, 295, 296, 418, - 419, 381, 1004, 381, 17, 301, 256, 369, 256, 259, - 316, 309, 308, 363, 437, 256, 314, 369, 316, 418, - 367, 315, 320, 257, 387, 388, 266, 977, 256, 376, - 335, 262, 418, 249, 332, 333, 368, 339, 349, 350, - 654, 256, 357, 338, 368, 261, 1377, 60, 471, 299, - 368, 64, 415, 416, 350, 655, 1019, 353, 418, 357, - 847, 675, 312, 1065, 368, 367, 256, 298, 418, 338, - 368, 369, 1443, 372, 314, 373, 374, 375, 376, 377, - 378, 379, 380, 381, 382, 383, 372, 363, 266, 372, - 1383, 387, 388, 371, 370, 373, 372, 429, 374, 878, - 431, 1472, 256, 969, 372, 429, 287, 405, 1264, 325, - 441, 429, 363, 256, 330, 857, 297, 1410, 429, 415, - 416, 302, 370, 1412, 1413, 429, 374, 368, 697, 1422, - 429, 1424, 418, 374, 1000, 375, 314, 433, 363, 367, - 305, 369, 418, 371, 567, 158, 429, 378, 379, 257, - 1100, 447, 368, 369, 433, 370, 579, 1107, 581, 374, - 583, 429, 371, 777, 272, 713, 263, 418, 447, 277, - 349, 350, 683, 281, 341, 438, 439, 777, 368, 1468, - 486, 444, 1132, 1133, 374, 339, 277, 481, 296, 968, - 281, 372, 420, 418, 369, 423, 339, 375, 373, 415, - 416, 417, 369, 384, 385, 386, 256, 343, 389, 390, - 508, 420, 510, 367, 512, 323, 256, 371, 315, 373, - 374, 375, 376, 646, 367, 1316, 376, 381, 522, 523, - 526, 368, 482, 847, 342, 349, 350, 1191, 536, 372, - 256, 374, 665, 541, 256, 381, 846, 526, 423, 256, - 429, 342, 548, 1344, 1345, 391, 1347, 552, 374, 1191, - 269, 372, 414, 374, 844, 559, 371, 1358, 373, 485, - 1361, 487, 522, 569, 287, 263, 428, 286, 414, 429, - 1234, 418, 577, 552, 391, 1376, 797, 856, 586, 587, - 871, 343, 428, 305, 510, 363, 429, 261, 305, 339, - 416, 369, 1234, 316, 344, 1047, 346, 414, 577, 1400, - 526, 722, 352, 353, 530, 429, 875, 367, 429, 369, - 284, 371, 372, 339, 374, 338, 376, 315, 344, 1136, - 346, 394, 395, 297, 1191, 633, 352, 353, 302, 391, - 1191, 639, 913, 307, 1191, 309, 310, 311, 312, 363, - 418, 357, 568, 317, 272, 369, 367, 321, 654, 294, - 371, 325, 414, 369, 343, 305, 372, 373, 418, 333, - 420, 1191, 336, 423, 338, 738, 428, 1234, 296, 675, - 386, 339, 367, 1234, 369, 683, 344, 1234, 346, 429, - 713, 349, 350, 574, 352, 353, 759, 381, 362, 697, - 1191, 272, 381, 357, 418, 323, 986, 391, 706, 420, - 773, 744, 391, 711, 1234, 421, 374, 367, 716, 635, - 369, 637, 357, 1191, 272, 296, 376, 938, 363, 256, - 414, 272, 386, 21, 369, 414, 277, 372, 373, 391, - 281, 339, 738, 1234, 428, 866, 740, 381, 296, 428, - 373, 386, 323, 376, 418, 296, 877, 391, 756, 256, - 758, 376, 414, 759, 887, 53, 1234, 683, 762, 367, - 764, 429, 269, 486, 772, 323, 428, 773, 376, 357, - 414, 777, 323, 418, 700, 848, 421, 357, 372, 286, - 821, 1190, 1191, 414, 792, 373, 376, 1053, 1104, 797, - 798, 342, 800, 373, 376, 389, 390, 428, 386, 1089, - 371, 1210, 339, 811, 812, 373, 386, 344, 376, 346, - 347, 348, 349, 350, 351, 352, 353, 354, 355, 6, - 1136, 747, 713, 829, 367, 1234, 1092, 1236, 357, 552, - 17, 368, 386, 370, 842, 372, 844, 374, 375, 376, - 829, 847, 848, 367, 373, 370, 371, 1163, 856, 374, - 776, 859, 376, 834, 577, 836, 306, 386, 866, 1080, - 1295, 1017, 995, 313, 1130, 374, 792, 376, 876, 401, - 878, 797, 306, 60, 308, 325, 1365, 64, 372, 313, - 374, 413, 306, 339, 371, 418, 373, 813, 344, 313, - 346, 325, 429, 349, 350, 428, 352, 353, 368, 398, - 399, 88, 89, 294, 374, 392, 393, 913, 369, 382, - 383, 381, 920, 371, 922, 306, 924, 418, 374, 379, - 381, 1245, 109, 396, 397, 412, 367, 428, 1252, 935, - 938, 367, 418, 420, 339, 376, 423, 1145, 1427, 344, - 376, 346, 367, 389, 349, 350, 935, 352, 353, 384, - 367, 376, 1121, 367, 385, 1028, 882, 370, 884, 376, - 968, 374, 376, 944, 890, 946, 369, 948, 400, 372, - 374, 158, 376, 429, 1463, 1241, 372, 381, 374, 390, - 376, 370, 369, 1264, 339, 374, 709, 710, 370, 344, - 916, 346, 374, 1485, 1486, 367, 373, 352, 353, 371, - 1004, 373, 374, 1011, 376, 1013, 339, 1015, 372, 381, - 374, 344, 938, 346, 201, 202, 349, 350, 376, 352, - 353, 370, 1028, 339, 429, 374, 418, 953, 344, 752, - 346, 754, 371, 349, 350, 415, 352, 353, 256, 1026, - 357, 354, 355, 415, 367, 1053, 363, 374, 371, 376, - 373, 374, 369, 376, 277, 372, 373, 374, 381, 1067, - 1068, 1065, 372, 340, 374, 368, 376, 1075, 371, 386, - 373, 374, 1080, 370, 418, 372, 263, 374, 418, 367, - 1121, 1089, 1081, 371, 1092, 373, 374, 1377, 376, 392, - 393, 376, 415, 381, 376, 370, 429, 372, 367, 1104, - 287, 418, 289, 1111, 1145, 373, 370, 1148, 372, 412, - 1118, 354, 355, 429, 301, 376, 1189, 420, 1124, 376, - 423, 308, 1130, 370, 371, 1104, 373, 374, 375, 316, - 370, 1136, 372, 343, 1142, 1143, 1269, 370, 370, 372, - 372, 374, 393, 394, 395, 396, 1187, 414, 415, 1190, - 1191, 338, 294, 372, 1080, 374, 294, 1136, 1163, 1292, - 386, 387, 388, 350, 364, 365, 353, 1173, 372, 1210, - 374, 1244, 1180, 1306, 370, 370, 372, 372, 364, 365, - 374, 372, 376, 1189, 1163, 349, 350, 1195, 1261, 1262, - 1323, 418, 1325, 1234, 376, 1236, 381, 374, 414, 376, - 387, 388, 374, 374, 376, 376, 418, 368, 1087, 1088, - 371, 1284, 373, 374, 1287, 372, 373, 402, 403, 404, - 405, 406, 407, 408, 409, 410, 411, 375, 415, 416, - 418, 392, 393, 1241, 369, 0, 391, 392, 1244, 1245, - 372, 397, 398, 372, 1248, 376, 1252, 372, 372, 368, - 294, 412, 374, 294, 977, 1261, 1262, 372, 1264, 420, - 372, 372, 423, 372, 1270, 372, 374, 372, 256, 372, - 374, 372, 371, 256, 376, 375, 1282, 265, 1284, 267, - 374, 1287, 270, 294, 294, 381, 356, 275, 372, 1295, - 375, 279, 374, 374, 373, 381, 1300, 372, 374, 486, - 288, 374, 374, 294, 372, 376, 256, 295, 1314, 374, - 423, 1237, 300, 94, 1355, 429, 304, 98, 99, 100, - 101, 102, 103, 104, 105, 374, 421, 367, 316, 372, - 318, 1372, 374, 372, 322, 373, 343, 294, 294, 526, - 374, 418, 330, 331, 1385, 1386, 334, 370, 367, 337, - 371, 418, 418, 256, 256, 256, 374, 1365, 256, 1363, - 372, 548, 280, 372, 381, 552, 256, 367, 0, 1377, - 368, 1412, 1413, 372, 343, 363, 370, 1100, 371, 376, - 375, 1104, 569, 351, 1107, 372, 1394, 376, 374, 339, - 577, 376, 374, 370, 344, 376, 346, 347, 348, 349, - 350, 351, 352, 353, 354, 355, 356, 372, 372, 1132, - 1133, 381, 347, 1136, 381, 423, 256, 256, 368, 1427, - 370, 381, 372, 372, 374, 375, 376, 1468, 368, 265, - 418, 267, 347, 374, 270, 372, 272, 273, 370, 275, - 1163, 277, 367, 279, 375, 281, 282, 283, 370, 375, - 367, 287, 288, 372, 370, 1463, 348, 293, 368, 295, - 296, 374, 339, 418, 300, 1469, 1470, 654, 304, 348, - 376, 418, 1476, 1477, 374, 368, 375, 1485, 1486, 429, - 316, 367, 318, 367, 367, 356, 322, 323, 675, 376, - 368, 371, 257, 381, 330, 331, 261, 305, 334, 374, - 368, 337, 368, 372, 368, 337, 342, 272, 371, 418, - 418, 418, 277, 371, 369, 367, 281, 371, 371, 284, - 376, 302, 709, 710, 418, 371, 373, 418, 371, 367, - 381, 296, 297, 381, 371, 369, 301, 302, 371, 374, - 256, 377, 307, 372, 309, 310, 311, 312, 0, 372, - 331, 738, 317, 373, 373, 376, 321, 374, 323, 1485, - 1486, 374, 374, 372, 367, 752, 372, 754, 333, 418, - 370, 336, 759, 338, 418, 376, 418, 342, 376, 372, - 376, 372, 418, 372, 381, 368, 773, 418, 370, 381, - 777, 372, 372, 368, 315, 263, 372, 362, 371, 371, - 368, 372, 0, 384, 385, 386, 0, 367, 389, 390, - 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, - 401, 402, 403, 404, 256, 376, 376, 368, 372, 261, - 262, 0, 368, 376, 372, 372, 370, 367, 315, 418, - 368, 376, 368, 372, 376, 370, 373, 263, 418, 418, - 368, 51, 284, 376, 376, 372, 376, 367, 372, 368, - 847, 848, 294, 376, 372, 297, 298, 372, 368, 372, - 302, 367, 376, 305, 368, 307, 368, 309, 310, 311, - 312, 367, 52, 376, 12, 317, 376, 376, 376, 321, - 5, 376, 376, 325, 376, 376, 935, 0, 1236, 829, - 1210, 333, 1080, 1417, 336, 1080, 338, 339, 1380, 675, - 1368, 1397, 344, 1433, 346, 347, 348, 349, 350, 351, - 352, 353, 354, 355, 356, 506, 913, 1363, 1270, 850, - 362, 363, 850, 850, 1282, 367, 368, 689, 370, 371, - 372, 373, 374, 375, 376, 1477, 378, 379, 846, 381, - 382, 383, 384, 385, 386, 387, 388, 389, 390, 1234, - 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, - 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, - 412, 413, 1301, 1222, 416, 1390, 418, 1471, 420, 1386, - 977, 423, 1385, 574, 1470, 1325, 1270, 429, 368, 1187, - 1173, 821, 526, 587, 256, 257, 986, 871, 792, 683, - 72, 716, 264, 265, 266, 267, 268, 797, 270, 271, - 334, 273, 274, 275, 276, 277, 278, 279, 280, 400, - 399, 713, 404, 285, 401, 287, 288, 289, 290, 291, - 292, 1028, 0, 295, 402, 1156, 403, 299, 300, 777, - 302, 303, 304, 548, 1244, 1163, 1104, 158, 955, 1068, - 970, 1000, 314, 1046, 316, 1058, 318, 319, 1047, 524, - 322, 423, 324, 325, 326, 327, 328, 329, 330, 331, - 332, 333, 334, 335, 1143, 337, 1056, 892, 340, 341, - 826, 1239, 344, 345, 827, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 359, 360, 361, - 362, 363, -1, 1100, -1, 367, 368, 1104, -1, 371, - 1107, -1, -1, -1, 376, 377, 378, 379, 380, -1, - -1, -1, 384, -1, 386, -1, -1, 1124, -1, -1, - 392, 393, -1, -1, -1, 1132, 1133, -1, -1, 1136, - -1, -1, -1, -1, 257, -1, -1, -1, 261, -1, - -1, -1, -1, -1, -1, 417, 418, 419, 420, 272, - 422, 0, -1, -1, 277, -1, 1163, 429, 281, -1, - -1, 284, -1, -1, -1, -1, 1173, 265, -1, 267, - -1, -1, 270, 296, 297, -1, -1, 275, 301, 302, - -1, 279, 1189, -1, 307, 283, 309, 310, 311, 312, - 288, -1, -1, -1, 317, 293, -1, 295, 321, -1, - 323, -1, 300, -1, -1, -1, 304, 305, -1, -1, - 333, -1, 335, 336, -1, 338, -1, -1, 316, 342, - 318, -1, -1, -1, 322, -1, -1, -1, -1, -1, - -1, -1, 330, 331, -1, -1, 334, 1244, 1245, 362, - -1, -1, -1, -1, -1, 1252, 369, -1, -1, -1, - -1, -1, -1, -1, 1261, 1262, -1, 1264, -1, -1, + 4, 300, 18, 17, 510, 301, 6, 190, 20, 52, + 234, 467, 189, 88, 89, 512, 60, 290, 249, 299, + 158, 353, 320, 553, 338, 915, 17, 297, 486, 331, + 353, 17, 1090, 85, 109, 735, 0, 710, 711, 765, + 48, 236, 78, 60, 256, 59, 570, 327, 578, 1125, + 1126, 0, 114, 256, 116, 256, 74, 256, 268, 256, + 78, 920, 114, 325, 116, 256, 80, 60, 82, 268, + 256, 1211, 256, 363, 268, 256, 1195, 17, 96, 369, + 753, 17, 755, 256, 256, 282, 256, 1227, 17, 256, + 192, 368, 256, 256, 17, 1195, 1172, 372, 363, 277, + 325, 94, 335, 17, 17, 98, 99, 100, 101, 102, + 103, 104, 105, 263, 21, 69, 357, 314, 17, 1238, + 17, 17, 17, 294, 17, 368, 201, 202, 418, 256, + 410, 655, 373, 256, 88, 89, 339, 368, 1238, 93, + 158, 344, 343, 346, 158, 386, 53, 190, 256, 352, + 353, 256, 429, 418, 429, 367, 418, 369, 368, 371, + 372, 257, 374, 256, 376, 315, 339, 158, 0, 256, + 256, 344, 158, 346, 347, 348, 349, 350, 351, 352, + 353, 354, 355, 356, 375, 363, 429, 1046, 263, 1085, + 391, 234, 363, 418, 526, 368, 429, 370, 256, 372, + 381, 374, 375, 376, 506, 358, 418, 431, 420, 381, + 509, 423, 422, 414, 289, 712, 548, 225, 158, 173, + 322, 418, 158, 422, 256, 548, 429, 428, 422, 158, + 230, 249, 418, 308, 418, 158, 254, 432, 570, 553, + 418, 419, 369, 287, 158, 158, 1386, 418, 418, 256, + 358, 418, 354, 297, 418, 418, 429, 359, 381, 158, + 20, 158, 158, 158, 578, 158, 328, 319, 256, 374, + 287, 323, 290, 1413, 367, 350, 328, 295, 296, 1005, + 368, 256, 369, 376, 370, 1425, 266, 1427, 374, 268, + 363, 309, 256, 256, 287, 249, 314, 276, 316, 316, + 376, 315, 320, 1195, 297, 978, 256, 261, 257, 302, + 256, 369, 387, 388, 332, 333, 424, 425, 426, 427, + 1020, 357, 1380, 655, 294, 849, 363, 868, 88, 89, + 418, 17, 339, 656, 314, 437, 306, 369, 879, 357, + 415, 416, 1068, 335, 676, 418, 1238, 338, 1171, 109, + 368, 369, 338, 429, 262, 373, 374, 375, 376, 377, + 378, 379, 380, 381, 382, 383, 341, 1190, 257, 471, + 1446, 325, 890, 264, 60, 339, 330, 1267, 64, 372, + 368, 418, 256, 880, 363, 277, 374, 405, 431, 281, + 298, 384, 385, 386, 369, 375, 389, 390, 441, 1475, + 698, 859, 256, 367, 367, 256, 369, 371, 371, 373, + 374, 375, 376, 418, 368, 369, 256, 381, 363, 372, + 370, 433, 368, 1319, 374, 257, 1099, 266, 374, 414, + 438, 439, 414, 1106, 325, 447, 444, 305, 256, 418, + 272, 201, 202, 428, 714, 277, 428, 779, 418, 281, + 342, 1347, 1348, 684, 1350, 1278, 779, 420, 1131, 1282, + 423, 415, 416, 417, 296, 1361, 568, 481, 1364, 486, + 378, 379, 158, 418, 971, 314, 429, 305, 580, 997, + 582, 999, 584, 1379, 1307, 339, 349, 350, 339, 363, + 508, 323, 510, 344, 512, 346, 370, 368, 372, 339, + 374, 352, 353, 263, 349, 350, 343, 1403, 522, 523, + 342, 371, 368, 367, 526, 349, 350, 849, 536, 368, + 368, 339, 372, 541, 1197, 848, 344, 367, 346, 289, + 376, 485, 1195, 487, 352, 353, 375, 256, 368, 386, + 418, 301, 1415, 1416, 418, 647, 560, 846, 308, 256, + 428, 372, 372, 374, 391, 363, 510, 256, 429, 369, + 420, 369, 553, 373, 666, 372, 429, 553, 799, 587, + 588, 873, 526, 429, 263, 1238, 530, 414, 429, 429, + 429, 429, 575, 429, 429, 723, 305, 578, 418, 339, + 350, 428, 578, 353, 344, 429, 346, 877, 1471, 349, + 350, 287, 352, 353, 369, 1135, 305, 339, 429, 429, + 418, 418, 344, 423, 346, 569, 634, 349, 350, 915, + 352, 353, 640, 339, 374, 381, 315, 387, 388, 372, + 316, 374, 339, 294, 391, 391, 269, 344, 1195, 346, + 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, + 367, 367, 338, 286, 272, 415, 416, 414, 414, 376, + 376, 368, 374, 370, 739, 372, 684, 374, 375, 376, + 714, 374, 428, 433, 1132, 376, 974, 677, 296, 429, + 698, 1238, 636, 390, 638, 760, 429, 447, 987, 707, + 1195, 357, 272, 745, 712, 272, 357, 429, 341, 717, + 775, 1195, 363, 369, 416, 323, 372, 373, 369, 940, + 1195, 372, 373, 416, 367, 371, 296, 391, 371, 296, + 386, 714, 429, 367, 339, 386, 369, 741, 376, 344, + 684, 346, 1285, 1238, 349, 350, 376, 352, 353, 757, + 414, 759, 418, 323, 1238, 1298, 323, 701, 256, 763, + 357, 765, 381, 1238, 428, 421, 774, 418, 339, 374, + 421, 269, 391, 344, 1317, 346, 526, 420, 349, 350, + 306, 352, 353, 371, 401, 850, 794, 313, 286, 386, + 823, 799, 800, 1056, 802, 414, 413, 889, 548, 1103, + 379, 1090, 339, 6, 748, 813, 814, 344, 972, 346, + 486, 343, 349, 350, 17, 352, 353, 389, 272, 357, + 570, 1194, 1195, 277, 429, 306, 343, 281, 294, 831, + 1093, 1135, 313, 369, 778, 373, 844, 1001, 846, 370, + 306, 1214, 296, 374, 325, 381, 836, 367, 386, 381, + 794, 1018, 1298, 861, 384, 799, 376, 60, 429, 391, + 868, 64, 1083, 1167, 381, 1238, 1129, 1240, 390, 323, + 878, 815, 880, 372, 391, 367, 373, 553, 357, 376, + 945, 1368, 414, 357, 376, 88, 89, 400, 342, 363, + 389, 390, 429, 369, 373, 369, 428, 414, 372, 373, + 374, 306, 578, 308, 996, 655, 109, 386, 313, 382, + 383, 428, 386, 385, 922, 371, 924, 373, 926, 367, + 325, 354, 355, 396, 397, 368, 676, 1249, 376, 370, + 1144, 374, 940, 374, 1256, 937, 392, 393, 381, 1202, + 884, 418, 886, 1430, 418, 367, 370, 1120, 892, 367, + 374, 428, 373, 367, 376, 158, 412, 947, 376, 949, + 376, 951, 376, 971, 420, 418, 974, 423, 372, 367, + 374, 415, 376, 371, 918, 373, 374, 339, 376, 1466, + 371, 1267, 344, 381, 346, 393, 394, 395, 396, 739, + 352, 353, 1488, 1489, 394, 395, 940, 368, 201, 202, + 371, 1005, 373, 374, 1012, 418, 1014, 374, 1016, 376, + 760, 370, 956, 368, 381, 374, 371, 415, 373, 374, + 373, 392, 393, 370, 371, 775, 373, 374, 375, 779, + 386, 387, 388, 1027, 710, 711, 367, 392, 393, 256, + 371, 412, 373, 374, 371, 376, 373, 370, 1056, 420, + 381, 374, 423, 373, 370, 371, 376, 412, 374, 371, + 263, 373, 1070, 1071, 1068, 420, 418, 0, 423, 372, + 1078, 374, 370, 376, 372, 1083, 374, 753, 1084, 755, + 369, 831, 1090, 372, 287, 1093, 289, 1120, 370, 1122, + 372, 1380, 374, 340, 367, 261, 369, 277, 301, 849, + 850, 372, 1110, 374, 372, 308, 374, 398, 399, 1117, + 367, 1144, 376, 316, 371, 376, 373, 374, 284, 376, + 376, 1129, 1103, 374, 381, 376, 367, 1103, 1193, 343, + 370, 297, 372, 1141, 1142, 338, 302, 376, 374, 1083, + 376, 307, 1175, 309, 310, 311, 312, 350, 414, 415, + 353, 317, 354, 355, 1135, 321, 364, 365, 415, 1135, + 372, 1194, 1195, 294, 370, 915, 372, 333, 294, 370, + 336, 372, 338, 370, 418, 372, 1184, 372, 376, 374, + 1272, 1214, 414, 1248, 387, 388, 1167, 937, 372, 418, + 374, 1167, 1200, 418, 1202, 945, 362, 349, 350, 1264, + 1265, 375, 370, 1295, 372, 1238, 370, 1240, 372, 374, + 372, 376, 415, 416, 374, 369, 376, 1309, 374, 374, + 376, 376, 1287, 372, 373, 1290, 364, 365, 1088, 1089, + 391, 392, 372, 376, 1326, 372, 1328, 62, 397, 398, + 372, 66, 67, 68, 368, 70, 71, 381, 1252, 374, + 75, 76, 418, 372, 372, 372, 372, 82, 372, 84, + 294, 86, 294, 374, 372, 372, 91, 92, 402, 403, + 404, 405, 406, 407, 408, 409, 410, 411, 374, 372, + 371, 376, 256, 486, 374, 294, 375, 294, 356, 381, + 115, 372, 374, 381, 373, 375, 374, 418, 1242, 1303, + 372, 94, 978, 374, 374, 98, 99, 100, 101, 102, + 103, 104, 105, 374, 376, 374, 294, 429, 423, 372, + 374, 367, 421, 526, 257, 1358, 373, 372, 261, 372, + 343, 294, 374, 294, 374, 418, 371, 370, 367, 272, + 256, 418, 1375, 256, 277, 548, 256, 375, 281, 374, + 553, 284, 256, 372, 381, 1388, 1389, 0, 372, 280, + 1368, 256, 1366, 296, 297, 367, 372, 570, 301, 302, + 368, 343, 1380, 1123, 307, 578, 309, 310, 311, 312, + 376, 370, 1415, 1416, 317, 371, 376, 374, 321, 1397, + 323, 374, 376, 372, 370, 372, 381, 372, 347, 423, + 333, 351, 335, 336, 256, 338, 256, 367, 381, 342, + 381, 376, 368, 372, 348, 347, 374, 370, 375, 370, + 375, 367, 1430, 1099, 372, 370, 1176, 1103, 368, 362, + 1106, 256, 374, 374, 259, 368, 369, 418, 1471, 339, + 348, 372, 368, 1193, 367, 367, 376, 0, 418, 367, + 375, 368, 655, 381, 356, 1131, 376, 371, 1466, 1135, + 337, 368, 374, 368, 305, 368, 372, 376, 1472, 1473, + 371, 418, 371, 676, 299, 1479, 1480, 369, 367, 418, + 1488, 1489, 418, 418, 371, 371, 371, 312, 381, 418, + 265, 1167, 267, 373, 367, 270, 371, 371, 1248, 1249, + 275, 369, 381, 372, 279, 371, 1256, 710, 711, 302, + 372, 374, 373, 288, 1264, 1265, 373, 1267, 374, 374, + 295, 1197, 256, 1273, 418, 300, 374, 376, 372, 304, + 372, 370, 372, 376, 418, 1285, 739, 1287, 331, 376, + 1290, 316, 418, 318, 1488, 1489, 418, 322, 1298, 376, + 753, 372, 755, 381, 367, 330, 331, 760, 372, 334, + 368, 381, 337, 370, 368, 315, 372, 1317, 263, 371, + 371, 368, 775, 372, 372, 0, 779, 0, 367, 372, + 376, 376, 368, 0, 372, 376, 368, 372, 363, 372, + 370, 384, 385, 386, 418, 367, 389, 390, 391, 392, + 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, + 403, 404, 376, 368, 257, 368, 372, 376, 261, 370, + 367, 373, 376, 368, 418, 367, 418, 376, 372, 272, + 376, 372, 368, 376, 277, 372, 368, 372, 281, 368, + 368, 284, 372, 418, 367, 376, 849, 850, 315, 376, + 376, 376, 376, 296, 297, 376, 376, 482, 301, 302, + 376, 376, 256, 263, 307, 51, 309, 310, 311, 312, + 0, 265, 52, 267, 317, 12, 270, 5, 321, 937, + 323, 275, 1083, 831, 1083, 279, 1240, 1214, 1420, 1383, + 333, 1436, 335, 336, 288, 338, 676, 522, 1371, 342, + 1400, 295, 852, 256, 1366, 1273, 300, 852, 261, 262, + 304, 852, 915, 506, 1480, 848, 1285, 1238, 1304, 362, + 1226, 690, 316, 1474, 318, 1393, 369, 1388, 322, 1389, + 1473, 284, 1328, 1175, 1273, 717, 330, 331, 823, 526, + 334, 294, 945, 337, 297, 298, 1176, 799, 368, 302, + 873, 72, 305, 794, 307, 588, 309, 310, 311, 312, + 684, 987, 714, 334, 317, 399, 401, 400, 321, 363, + 402, 779, 325, 403, 548, 978, 404, 1158, 1248, 1167, + 333, 1103, 575, 336, 158, 338, 339, 973, 1048, 958, + 1071, 344, 1001, 346, 347, 348, 349, 350, 351, 352, + 353, 354, 355, 356, 1059, 524, 1132, 1061, 894, 362, + 363, 423, 1244, 1142, 367, 368, 828, 370, 371, 372, + 373, 374, 375, 376, 418, 378, 379, -1, 381, 382, + 383, 384, 385, 386, 387, 388, 389, 390, 0, 392, + 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, + 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, + 413, 261, 829, 416, -1, 418, -1, 420, -1, -1, + 423, -1, -1, -1, -1, -1, 429, -1, -1, -1, + -1, -1, -1, -1, 284, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 1099, 297, -1, -1, + 1103, -1, 302, 1106, -1, 305, -1, 307, -1, 309, + 310, 311, 312, -1, -1, -1, -1, 317, -1, -1, + 1123, 321, -1, -1, -1, 325, 256, 257, 1131, -1, + -1, 261, 1135, 333, -1, 265, 336, 267, 338, -1, + 270, -1, 272, 273, -1, 275, -1, 277, -1, 279, + -1, 281, 282, 283, 284, -1, -1, 287, 288, -1, + -1, -1, 362, 293, 1167, 295, 296, 297, -1, -1, + 300, 301, 302, 1176, 304, -1, -1, 307, -1, 309, + 310, 311, 312, -1, -1, -1, 316, 317, 318, -1, + 1193, 321, 322, 323, 1197, -1, -1, -1, -1, -1, + 330, 331, -1, 333, 334, 0, 336, 337, 338, -1, + -1, -1, 342, -1, -1, -1, -1, -1, 418, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 871, -1, -1, -1, -1, -1, -1, 1284, 256, 257, - 1287, -1, -1, -1, -1, -1, 264, 265, 266, 267, - 268, -1, 270, 271, -1, 273, 274, 275, 276, 277, - 278, 279, -1, -1, 0, -1, -1, 285, -1, 287, - 288, 289, 290, 291, 292, -1, -1, 295, -1, -1, - 418, 299, 300, -1, 302, 303, 304, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 314, -1, 316, -1, - 318, 319, -1, -1, 322, -1, 324, 325, 326, 327, - 328, 329, 330, 331, 332, 333, 334, 335, -1, 337, - -1, -1, 340, 341, -1, -1, 344, 345, -1, -1, + -1, -1, 362, -1, -1, -1, -1, -1, 368, 369, + -1, -1, -1, -1, -1, 1248, 1249, 377, -1, -1, + -1, -1, -1, 1256, -1, -1, -1, -1, -1, -1, + -1, 1264, 1265, -1, 1267, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 359, 360, 361, 362, 363, -1, -1, -1, 367, - 368, -1, -1, 371, -1, -1, -1, -1, 376, 377, - 378, 379, 380, -1, -1, -1, 384, 256, 386, -1, - -1, -1, 261, 262, 392, 393, -1, -1, -1, -1, + 873, -1, -1, -1, 1287, -1, -1, 1290, 418, -1, + -1, -1, -1, -1, 256, 257, -1, -1, -1, -1, + -1, -1, 264, 265, 266, 267, 268, -1, 270, 271, + -1, 273, 274, 275, 276, 277, 278, 279, 280, -1, + -1, -1, -1, 285, -1, 287, 288, 289, 290, 291, + 292, -1, -1, 295, 0, -1, -1, 299, 300, -1, + 302, 303, 304, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 314, -1, 316, -1, 318, 319, -1, -1, + 322, -1, 324, 325, 326, 327, 328, 329, 330, 331, + 332, 333, 334, 335, -1, 337, -1, -1, 340, 341, + -1, -1, 344, 345, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 359, 360, 361, + 362, 363, -1, -1, -1, 367, 368, -1, -1, 371, + -1, -1, -1, -1, 376, 377, 378, 379, 380, -1, + -1, -1, 384, -1, 386, -1, -1, -1, -1, -1, + 392, 393, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 0, 284, -1, -1, -1, 417, - 418, 419, 420, -1, 422, 294, -1, -1, 297, 298, - -1, 429, -1, 302, -1, -1, 305, -1, 307, -1, - 309, 310, 311, 312, -1, -1, -1, -1, 317, -1, - -1, -1, 321, -1, -1, -1, 325, -1, -1, -1, - -1, -1, -1, -1, 333, -1, -1, 336, -1, 338, - 339, -1, -1, -1, -1, 344, -1, 346, 347, 348, - 349, 350, 351, 352, 353, 354, 355, 356, 357, -1, - -1, -1, -1, 362, 363, -1, -1, -1, 367, 368, - 369, 370, 371, 372, 373, 374, 375, 376, -1, 378, - 379, -1, -1, 382, 383, 384, 385, 386, -1, -1, - 389, 390, -1, -1, -1, 394, 395, 396, 397, 398, - 399, 400, 401, -1, -1, -1, -1, -1, -1, -1, - 256, -1, -1, -1, 413, 261, 262, 416, -1, 418, - -1, 420, -1, -1, 423, -1, -1, -1, -1, -1, - 429, 0, -1, -1, -1, -1, -1, -1, 284, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 294, -1, - -1, 297, 298, -1, -1, -1, 302, -1, -1, 305, + -1, -1, -1, -1, -1, 417, 418, 419, 420, -1, + 422, 256, 257, -1, -1, -1, -1, 429, -1, 264, + 265, 266, 267, 268, -1, 270, 271, -1, 273, 274, + 275, 276, 277, 278, 279, -1, -1, 0, -1, -1, + 285, -1, 287, 288, 289, 290, 291, 292, -1, -1, + 295, -1, -1, -1, 299, 300, -1, 302, 303, 304, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 314, + -1, 316, -1, 318, 319, -1, -1, 322, -1, 324, + 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, + 335, -1, 337, -1, -1, 340, 341, -1, -1, 344, + 345, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 359, 360, 361, 362, 363, -1, + -1, -1, 367, 368, -1, -1, 371, -1, -1, -1, + -1, 376, 377, 378, 379, 380, -1, -1, -1, 384, + 256, 386, -1, -1, -1, 261, 262, 392, 393, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 0, 284, -1, + -1, -1, 417, 418, 419, 420, -1, 422, 294, -1, + -1, 297, 298, -1, 429, -1, 302, -1, -1, 305, -1, 307, -1, 309, 310, 311, 312, -1, -1, -1, -1, 317, -1, -1, -1, 321, -1, -1, -1, 325, -1, -1, -1, -1, -1, -1, -1, 333, -1, -1, 336, -1, 338, 339, -1, -1, -1, -1, 344, -1, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, - 356, -1, -1, -1, -1, -1, 362, 363, -1, -1, - -1, 367, 368, 369, 370, 371, 372, -1, 374, 375, + 356, 357, -1, -1, -1, -1, 362, 363, -1, -1, + -1, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, -1, 378, 379, -1, -1, 382, 383, 384, 385, - 256, -1, -1, 389, 390, 261, 262, -1, 394, 395, - 396, 397, 398, 399, 400, 401, 0, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 413, 284, -1, - 416, -1, 418, -1, 420, -1, -1, 423, 294, -1, - -1, 297, 298, 429, -1, -1, 302, -1, -1, 305, + 386, -1, -1, 389, 390, -1, -1, -1, 394, 395, + 396, 397, 398, 399, 400, 401, -1, -1, -1, -1, + -1, -1, -1, 256, -1, -1, -1, 413, 261, 262, + 416, -1, 418, -1, 420, -1, -1, 423, -1, -1, + -1, -1, -1, 429, 0, -1, -1, -1, -1, -1, + -1, 284, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 294, -1, -1, 297, 298, -1, -1, -1, 302, + -1, -1, 305, -1, 307, -1, 309, 310, 311, 312, + -1, -1, -1, -1, 317, -1, -1, -1, 321, -1, + -1, -1, 325, -1, -1, -1, -1, -1, -1, -1, + 333, -1, -1, 336, -1, 338, 339, -1, -1, -1, + -1, 344, -1, 346, 347, 348, 349, 350, 351, 352, + 353, 354, 355, 356, -1, -1, -1, -1, -1, 362, + 363, -1, -1, -1, 367, 368, 369, 370, 371, 372, + -1, 374, 375, 376, -1, 378, 379, -1, -1, 382, + 383, 384, 385, 256, -1, -1, 389, 390, 261, 262, + -1, 394, 395, 396, 397, 398, 399, 400, 401, 0, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 413, 284, -1, 416, -1, 418, -1, 420, -1, -1, + 423, 294, -1, -1, 297, 298, 429, -1, -1, 302, + -1, -1, 305, -1, 307, -1, 309, 310, 311, 312, + -1, -1, -1, -1, 317, -1, -1, -1, 321, -1, + -1, -1, 325, -1, -1, -1, -1, -1, -1, -1, + 333, -1, -1, 336, -1, 338, 339, -1, -1, -1, + -1, 344, -1, 346, 347, 348, 349, 350, 351, 352, + 353, 354, 355, 356, -1, -1, -1, -1, -1, 362, + 363, -1, -1, -1, 367, 368, 369, 370, 371, 372, + -1, 374, 375, 376, -1, 378, 379, -1, -1, 382, + 383, 384, 385, -1, -1, -1, 389, 390, -1, -1, + -1, 394, 395, 396, 397, 398, 399, 400, 401, -1, + 256, -1, -1, -1, -1, 261, 262, -1, -1, -1, + 413, -1, -1, 416, -1, 418, 0, 420, -1, -1, + 423, -1, -1, -1, -1, -1, 429, -1, 284, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 294, -1, + -1, 297, 298, -1, -1, -1, 302, -1, -1, 305, -1, 307, -1, 309, 310, 311, 312, -1, -1, -1, -1, 317, -1, -1, -1, 321, -1, -1, -1, 325, -1, -1, -1, -1, -1, -1, -1, 333, -1, -1, 336, -1, 338, 339, -1, -1, -1, -1, 344, -1, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, -1, -1, -1, -1, -1, 362, 363, -1, -1, - -1, 367, 368, 369, 370, 371, 372, -1, 374, 375, - 376, -1, 378, 379, -1, -1, 382, 383, 384, 385, - -1, -1, -1, 389, 390, -1, -1, -1, 394, 395, - 396, 397, 398, 399, 400, 401, -1, 256, -1, -1, - -1, -1, 261, 262, -1, -1, -1, 413, -1, -1, - 416, -1, 418, 0, 420, -1, -1, 423, -1, -1, - -1, -1, -1, 429, -1, 284, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 294, -1, -1, 297, 298, - -1, -1, -1, 302, -1, -1, 305, -1, 307, -1, - 309, 310, 311, 312, -1, -1, -1, -1, 317, -1, - -1, -1, 321, -1, -1, -1, 325, -1, -1, -1, - -1, -1, -1, -1, 333, -1, -1, 336, -1, 338, - 339, -1, -1, -1, -1, 344, -1, 346, 347, 348, - 349, 350, 351, 352, 353, 354, 355, 356, -1, -1, - -1, -1, -1, 362, 363, -1, -1, -1, 367, 368, - -1, 370, 371, 372, -1, 374, 375, 376, -1, 378, - 379, -1, 256, 382, 383, 384, 385, -1, 262, -1, - 389, 390, -1, -1, -1, 394, 395, 396, 397, 398, - 399, 400, 401, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 413, -1, -1, 416, -1, 418, - 294, -1, -1, -1, 298, -1, -1, -1, -1, -1, - 429, 0, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 367, 368, -1, 370, 371, 372, -1, 374, 375, + 376, -1, 378, 379, -1, 256, 382, 383, 384, 385, + -1, 262, -1, 389, 390, -1, -1, -1, 394, 395, + 396, 397, 398, 399, 400, 401, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 413, -1, -1, + 416, -1, 418, 294, -1, -1, -1, 298, -1, -1, + -1, -1, -1, 429, 0, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 339, -1, + -1, -1, -1, 344, -1, 346, 347, 348, 349, 350, + 351, 352, 353, 354, 355, 356, 357, -1, -1, 256, + -1, -1, 363, -1, -1, -1, 367, 368, 369, 370, + 371, 372, 373, 374, 375, 376, -1, 378, 379, -1, + -1, 382, 383, 384, 385, 386, -1, -1, 389, 390, + 0, -1, -1, 394, 395, 396, 397, 398, 399, 400, + 401, -1, 256, -1, -1, -1, -1, -1, 262, -1, + -1, -1, 413, -1, -1, 416, -1, 418, -1, 420, + -1, -1, 423, -1, -1, -1, -1, -1, 429, -1, + -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, + 294, -1, 339, -1, 298, -1, -1, 344, -1, 346, + 347, 348, 349, 350, 351, 352, 353, 354, 355, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 368, -1, 370, -1, 372, 0, 374, 375, 376, -1, -1, -1, -1, -1, 339, -1, -1, -1, -1, 344, -1, 346, 347, 348, 349, 350, 351, 352, 353, - 354, 355, 356, 357, -1, -1, -1, -1, -1, 363, - -1, -1, -1, 367, 368, 369, 370, 371, 372, 373, + 354, 355, 356, -1, -1, -1, -1, -1, -1, 363, + -1, -1, -1, 367, 368, -1, 370, 371, 372, 0, 374, 375, 376, -1, 378, 379, -1, -1, 382, 383, - 384, 385, 386, -1, -1, 389, 390, -1, -1, -1, - 394, 395, 396, 397, 398, 399, 400, 401, -1, 256, - -1, -1, -1, 261, -1, 262, -1, -1, -1, 413, - -1, -1, 416, -1, 418, -1, 420, -1, -1, 423, - 0, -1, -1, -1, -1, 429, 284, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 294, -1, 297, - -1, 298, -1, -1, 302, -1, -1, 305, -1, 307, - -1, 309, 310, 311, 312, -1, -1, -1, -1, 317, - -1, -1, -1, 321, -1, -1, -1, 325, -1, -1, - -1, -1, -1, -1, -1, 333, -1, -1, 336, -1, - 338, -1, 339, 0, -1, -1, -1, 344, -1, 346, - 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, - -1, -1, -1, -1, 362, -1, 363, -1, -1, -1, - 367, 368, -1, 370, 371, 372, -1, 374, 375, 376, - -1, 378, 379, -1, -1, 382, 383, 384, 385, -1, - -1, -1, 389, 390, -1, -1, -1, 394, 395, 396, - 397, 398, 399, 400, 401, -1, -1, -1, -1, -1, - -1, -1, 0, -1, -1, -1, 413, -1, 257, 416, - 418, 418, 261, -1, 263, -1, 265, -1, 267, -1, - -1, 270, 429, 272, 273, -1, 275, -1, 277, -1, - 279, -1, 281, 282, 283, 284, -1, -1, 287, 288, - -1, -1, -1, -1, 293, 294, 295, 296, 297, -1, - -1, 300, 301, 302, -1, 304, -1, 306, 307, 308, - 309, 310, 311, 312, 313, 0, 315, 316, 317, 318, - -1, -1, 321, 322, 323, -1, 325, -1, -1, -1, - -1, 330, 331, -1, 333, 334, -1, 336, 337, 338, - -1, -1, -1, 342, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, - -1, -1, -1, 362, -1, 364, 365, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 256, 257, 377, -1, - -1, 261, -1, -1, -1, 265, -1, 267, -1, -1, - 270, -1, 272, 273, -1, 275, -1, 277, -1, 279, - -1, 281, 282, 283, 284, -1, -1, 287, 288, -1, - -1, -1, -1, 293, -1, 295, 296, 297, -1, 418, - 300, 301, 302, -1, 304, -1, -1, 307, -1, 309, - 310, 311, 312, -1, -1, -1, 316, 317, 318, -1, - 257, 321, 322, 323, 261, 0, -1, -1, -1, -1, - 330, 331, -1, 333, 334, 272, 336, 337, 338, -1, - 277, -1, 342, -1, 281, -1, -1, 284, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 296, - 297, -1, 362, -1, 301, 302, -1, -1, 368, 369, - 307, -1, 309, 310, 311, 312, -1, 377, -1, -1, - 317, -1, -1, -1, 321, -1, 323, -1, 0, 257, - -1, -1, -1, 261, -1, -1, 333, -1, 335, 336, - -1, 338, -1, -1, 272, 342, -1, -1, -1, 277, - -1, -1, -1, 281, -1, -1, 284, -1, 418, -1, - -1, -1, -1, -1, -1, 362, -1, -1, 296, 297, - -1, 368, 369, 301, 302, 0, -1, -1, -1, 307, + 384, 385, 429, -1, -1, 389, 390, -1, -1, -1, + 394, 395, 396, 397, 398, 399, 400, 401, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 413, + -1, 257, 416, -1, 418, 261, -1, 263, -1, 265, + -1, 267, -1, -1, 270, 429, 272, 273, -1, 275, + -1, 277, 0, 279, -1, 281, 282, 283, 284, -1, + -1, 287, 288, -1, -1, -1, -1, 293, 294, 295, + 296, 297, -1, -1, 300, 301, 302, -1, 304, -1, + 306, 307, 308, 309, 310, 311, 312, 313, -1, 315, + 316, 317, 318, -1, -1, 321, 322, 323, -1, 325, + -1, -1, -1, -1, 330, 331, -1, 333, 334, -1, + 336, 337, 338, -1, -1, 0, 342, 257, -1, -1, + -1, 261, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 272, -1, -1, -1, 362, 277, 364, 365, + -1, 281, -1, -1, 284, -1, -1, -1, -1, -1, + -1, 377, -1, -1, -1, -1, 296, 297, 0, -1, + 257, 301, 302, -1, 261, -1, -1, 307, -1, 309, + 310, 311, 312, -1, -1, 272, -1, 317, -1, -1, + 277, 321, -1, 323, 281, -1, -1, 284, -1, -1, + -1, -1, 418, 333, -1, -1, 336, -1, 338, 296, + 297, 0, 342, 257, 301, 302, -1, 261, -1, -1, + 307, -1, 309, 310, 311, 312, -1, -1, 272, -1, + 317, -1, 362, 277, 321, -1, 323, 281, 368, 369, + 284, -1, -1, -1, -1, -1, 333, -1, -1, 336, + -1, 338, 296, 297, -1, 342, 257, 301, 302, -1, + 261, -1, -1, 307, -1, 309, 310, 311, 312, -1, + -1, 272, -1, 317, -1, 362, 277, 321, -1, 323, + 281, 368, 369, 284, -1, -1, -1, -1, -1, 333, + -1, -1, 336, -1, 338, 296, 297, -1, 342, -1, + 301, 302, -1, -1, -1, -1, 307, -1, 309, 310, + 311, 312, -1, -1, -1, -1, 317, -1, 362, 257, + 321, -1, 323, 261, -1, 369, -1, -1, -1, -1, + -1, -1, 333, -1, 272, 336, -1, 338, -1, 277, + -1, 342, -1, 281, -1, -1, 284, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 296, 297, + -1, 362, -1, 301, 302, -1, -1, -1, -1, 307, -1, 309, 310, 311, 312, -1, -1, -1, -1, 317, -1, -1, 257, 321, -1, 323, 261, -1, -1, -1, -1, -1, -1, -1, -1, 333, -1, 272, 336, -1, 338, -1, 277, -1, 342, -1, 281, -1, -1, 284, - -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 296, 297, -1, 362, 257, 301, 302, -1, 261, - 368, 369, 307, -1, 309, 310, 311, 312, -1, -1, + -1, -1, 307, -1, 309, 310, 311, 312, -1, -1, 272, -1, 317, -1, -1, 277, 321, -1, 323, 281, -1, -1, 284, -1, -1, -1, -1, -1, 333, -1, - -1, 336, -1, 338, 296, 297, -1, 342, -1, 301, - 302, -1, -1, 261, -1, 307, -1, 309, 310, 311, - 312, -1, -1, -1, -1, 317, -1, 362, -1, 321, - -1, 323, -1, 368, 369, -1, 284, -1, -1, -1, - -1, 333, -1, -1, 336, -1, 338, -1, -1, 297, - 342, -1, 257, 301, 302, -1, 261, -1, -1, 307, - -1, 309, 310, 311, 312, -1, -1, 272, -1, 317, - 362, -1, 277, 321, -1, -1, 281, 369, -1, 284, - -1, -1, -1, -1, -1, 333, -1, -1, 336, -1, - 338, 296, 297, -1, -1, -1, 301, 302, -1, -1, - -1, -1, 307, -1, 309, 310, 311, 312, -1, -1, - -1, -1, 317, -1, 362, 257, 321, -1, 323, 261, - -1, -1, -1, -1, -1, -1, -1, -1, 333, -1, - 272, 336, -1, 338, -1, 277, -1, 342, -1, 281, - -1, -1, 284, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 296, 297, -1, 362, -1, 301, - 302, -1, 257, -1, -1, 307, 261, 309, 310, 311, - 312, -1, -1, -1, -1, 317, -1, 272, -1, 321, - -1, 323, 277, -1, -1, -1, 281, -1, -1, 284, - -1, 333, -1, -1, 336, -1, 338, -1, -1, -1, - 342, 296, 297, -1, -1, -1, 301, 302, -1, 257, - -1, -1, 307, 261, 309, 310, 311, 312, -1, -1, - 362, -1, 317, -1, 272, -1, 321, -1, 323, 277, - -1, -1, -1, 281, -1, -1, 284, -1, 333, -1, - -1, 336, -1, 338, -1, -1, -1, 342, 296, 297, - -1, -1, -1, 301, 302, -1, -1, -1, -1, 307, - -1, 309, 310, 311, 312, -1, -1, 362, -1, 317, - -1, -1, -1, 321, -1, 323, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 333, -1, 256, 336, -1, - 338, -1, -1, -1, 342, 264, 265, 266, 267, -1, - -1, 270, 271, -1, 273, 274, 275, 276, 277, 278, - 279, -1, -1, -1, 362, -1, 285, -1, 287, 288, - 289, 290, 291, 292, -1, -1, 295, -1, -1, -1, - 299, 300, -1, 302, 303, 304, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 314, -1, 316, -1, 318, - 319, -1, -1, 322, -1, 324, 325, 326, 327, 328, - 329, 330, 331, 332, 333, 334, 335, -1, 337, -1, - -1, 340, 341, -1, 256, 344, 345, -1, -1, -1, - 262, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 359, 360, 361, 362, 363, -1, -1, -1, 367, -1, - -1, -1, 371, -1, -1, -1, -1, 376, 377, 378, - 379, 380, -1, -1, -1, 384, 298, 386, -1, -1, - -1, -1, -1, 392, 393, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 256, -1, -1, -1, -1, -1, 262, -1, 417, 418, - 419, 420, -1, -1, -1, -1, -1, 339, -1, -1, - 429, -1, 344, -1, 346, 347, 348, 349, 350, 351, - 352, 353, 354, 355, 356, 357, -1, -1, -1, -1, - -1, 363, 298, -1, -1, -1, 368, 369, 370, 371, - 372, 373, 374, 375, 376, -1, 378, 379, -1, 381, - 382, 383, 384, 385, 386, 387, 388, 389, 390, -1, - 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, - 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, - 412, 413, -1, 256, -1, -1, 418, -1, 420, 262, - -1, 423, -1, -1, -1, -1, -1, 429, -1, -1, - -1, -1, 368, -1, -1, 371, -1, 373, 374, -1, - -1, -1, 378, 379, -1, -1, 382, 383, 384, 385, - 386, 387, 388, 389, 390, 298, 392, 393, 394, 395, - 396, 397, 398, 399, 400, 401, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 412, 413, -1, -1, - -1, -1, -1, -1, 420, -1, -1, 423, -1, -1, - -1, -1, -1, 429, -1, -1, 339, -1, -1, -1, + -1, 336, -1, 338, 296, 297, -1, 342, 257, 301, + 302, -1, 261, -1, -1, 307, -1, 309, 310, 311, + 312, -1, -1, 272, -1, 317, -1, 362, 277, 321, + -1, 323, 281, -1, -1, 284, -1, -1, -1, -1, + -1, 333, -1, -1, 336, -1, 338, 296, 297, -1, + 342, -1, 301, 302, -1, -1, -1, -1, 307, -1, + 309, 310, 311, 312, -1, -1, -1, -1, 317, -1, + 362, -1, 321, -1, 323, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 333, -1, 256, 336, -1, 338, + -1, -1, -1, 342, 264, 265, 266, 267, -1, -1, + 270, 271, -1, 273, 274, 275, 276, 277, 278, 279, + -1, -1, -1, 362, -1, 285, -1, 287, 288, 289, + 290, 291, 292, -1, -1, 295, -1, -1, -1, 299, + 300, -1, 302, 303, 304, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 314, -1, 316, -1, 318, 319, + -1, -1, 322, -1, 324, 325, 326, 327, 328, 329, + 330, 331, 332, 333, 334, 335, -1, 337, -1, -1, + 340, 341, -1, 256, 344, 345, -1, -1, -1, 262, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 359, + 360, 361, 362, 363, -1, -1, -1, 367, -1, -1, + -1, 371, -1, -1, -1, -1, 376, 377, 378, 379, + 380, -1, -1, -1, 384, 298, 386, -1, -1, -1, + -1, -1, 392, 393, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 256, + -1, -1, -1, -1, -1, 262, -1, 417, 418, 419, + 420, -1, -1, -1, -1, -1, 339, -1, -1, 429, -1, 344, -1, 346, 347, 348, 349, 350, 351, 352, - 353, 354, 355, 356, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 367, 368, 369, 370, 371, 372, + 353, 354, 355, 356, 357, -1, -1, -1, -1, -1, + 363, 298, -1, -1, -1, 368, 369, 370, 371, 372, 373, 374, 375, 376, -1, 378, 379, -1, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, -1, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, - 413, -1, 256, 256, -1, -1, -1, 420, 262, -1, - -1, -1, 265, -1, 267, -1, 429, 270, -1, -1, - -1, -1, 275, -1, -1, -1, 279, -1, -1, -1, - -1, -1, -1, -1, -1, 288, -1, -1, -1, -1, - -1, -1, 295, -1, 298, -1, -1, 300, -1, -1, - -1, 304, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 316, -1, 318, -1, -1, -1, 322, - -1, -1, -1, -1, -1, -1, -1, 330, 331, 262, - -1, 334, -1, -1, 337, 339, -1, -1, -1, -1, + 413, -1, 256, -1, -1, 418, -1, 420, 262, -1, + 423, -1, -1, -1, -1, -1, 429, -1, -1, -1, + -1, 368, -1, -1, 371, -1, 373, 374, -1, -1, + -1, 378, 379, -1, -1, 382, 383, 384, 385, 386, + 387, 388, 389, 390, 298, 392, 393, 394, 395, 396, + 397, 398, 399, 400, 401, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 412, 413, -1, -1, -1, + -1, -1, -1, 420, -1, -1, 423, -1, -1, -1, + -1, -1, 429, -1, -1, 339, -1, -1, -1, -1, 344, -1, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 367, 368, 298, 370, 371, 372, 373, + -1, -1, -1, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, -1, 378, 379, -1, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, -1, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, - -1, 256, -1, -1, -1, 418, 420, 262, -1, 423, - -1, -1, -1, -1, -1, 429, -1, -1, -1, -1, - 363, -1, -1, -1, -1, -1, 369, -1, 371, 372, - 373, 374, -1, 376, -1, 378, 379, -1, 381, 382, - 383, 384, 385, 298, 387, 388, 389, 390, -1, 392, - 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, - 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, - 413, -1, -1, -1, -1, 418, -1, 420, -1, -1, - 423, -1, -1, -1, 339, -1, 429, -1, -1, 344, + -1, 256, 256, -1, -1, -1, 420, 262, -1, -1, + -1, 265, -1, 267, -1, 429, 270, -1, -1, -1, + -1, 275, -1, -1, -1, 279, -1, -1, -1, -1, + -1, -1, -1, -1, 288, -1, -1, -1, -1, -1, + -1, 295, -1, 298, -1, -1, 300, -1, -1, -1, + 304, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 316, -1, 318, -1, -1, -1, 322, -1, + -1, -1, -1, -1, -1, -1, 330, 331, 262, -1, + 334, -1, -1, 337, 339, -1, -1, -1, -1, 344, -1, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 368, -1, 370, 371, 372, 373, 374, + -1, -1, 367, 368, 298, 370, 371, 372, 373, 374, 375, 376, -1, 378, 379, -1, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, -1, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, -1, - 256, 256, -1, -1, -1, 420, 262, -1, 423, -1, - 265, -1, 267, -1, 429, 270, -1, -1, -1, -1, - 275, -1, -1, -1, 279, -1, -1, -1, -1, -1, - -1, -1, -1, 288, -1, -1, -1, -1, -1, -1, - 295, -1, 298, -1, -1, 300, -1, -1, -1, 304, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 316, -1, 318, -1, -1, -1, 322, -1, -1, - -1, -1, -1, -1, -1, 330, 331, -1, -1, 334, - -1, -1, 337, 339, -1, -1, -1, -1, 344, -1, + 256, -1, -1, -1, 418, 420, 262, -1, 423, -1, + -1, -1, -1, -1, 429, -1, -1, -1, -1, 363, + -1, -1, -1, -1, -1, 369, -1, 371, 372, 373, + 374, -1, 376, -1, 378, 379, -1, 381, 382, 383, + 384, 385, 298, 387, 388, 389, 390, -1, 392, 393, + 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, + 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, + -1, -1, -1, -1, 418, -1, 420, -1, -1, 423, + -1, -1, -1, 339, -1, 429, -1, -1, 344, -1, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 368, -1, 370, 371, 372, 373, 374, 375, @@ -11364,7 +11371,7 @@ void case_950() 386, 387, 388, 389, 390, -1, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, -1, 256, - 256, -1, -1, 418, 420, 262, -1, 423, -1, 265, + 256, -1, -1, -1, 420, 262, -1, 423, -1, 265, -1, 267, -1, 429, 270, -1, -1, -1, -1, 275, -1, -1, -1, 279, -1, -1, -1, -1, -1, -1, -1, -1, 288, -1, -1, -1, -1, -1, -1, 295, @@ -11392,226 +11399,261 @@ void case_950() 348, 349, 350, 351, 352, 353, 354, 355, 356, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 368, -1, 370, 371, 372, 373, 374, 375, 376, -1, - 378, -1, -1, 381, 382, 383, 384, 385, 386, 387, + 378, 379, -1, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, -1, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, - 408, 409, 410, 411, 412, 413, -1, 256, -1, 261, - -1, 418, 420, 262, -1, 423, -1, -1, -1, -1, - -1, 429, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 284, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 297, -1, -1, -1, 298, - 302, -1, -1, 305, -1, 307, -1, 309, 310, 311, - 312, -1, -1, -1, -1, 317, -1, -1, -1, 321, - 256, -1, -1, 325, -1, -1, 262, -1, -1, -1, - 266, 333, -1, -1, 336, -1, 338, -1, -1, -1, + 408, 409, 410, 411, 412, 413, -1, 256, 256, -1, + -1, 418, 420, 262, -1, 423, -1, 265, -1, 267, + -1, 429, 270, -1, -1, -1, -1, 275, -1, -1, + -1, 279, -1, -1, -1, -1, -1, -1, -1, -1, + 288, -1, -1, -1, -1, -1, -1, 295, -1, 298, + -1, -1, 300, -1, -1, -1, 304, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 316, -1, + 318, -1, -1, -1, 322, -1, -1, -1, -1, -1, + -1, -1, 330, 331, -1, -1, 334, -1, -1, 337, 339, -1, -1, -1, -1, 344, -1, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, -1, -1, - 362, -1, 298, -1, -1, -1, -1, -1, -1, 368, - -1, 370, -1, 372, -1, 374, 375, 376, 314, 378, - 379, -1, 381, 382, 383, 384, 385, 386, 387, 388, - 389, 390, -1, -1, -1, 394, 395, 396, 397, 398, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 368, + -1, 370, 371, 372, 373, 374, 375, 376, -1, 378, + -1, -1, 381, 382, 383, 384, 385, 386, 387, 388, + 389, 390, -1, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, - 409, 410, 411, 256, 413, -1, 418, -1, -1, 262, - -1, 357, -1, -1, -1, -1, -1, 363, -1, -1, - 429, -1, -1, 369, 370, 371, 372, 373, 374, 375, - 376, -1, 378, 379, -1, 381, 382, 383, 384, 385, - 386, 387, 388, 389, 390, 298, 392, 393, 394, 395, - 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, - 406, 407, 408, 409, 410, 411, 412, 413, -1, -1, - -1, -1, 418, -1, 420, -1, -1, 423, -1, -1, - -1, -1, -1, 429, -1, -1, 339, -1, -1, -1, - -1, 344, -1, 346, 347, 348, 349, 350, 351, 352, - 353, 354, 355, 356, -1, -1, -1, 256, -1, -1, - -1, -1, -1, 262, -1, 368, -1, 370, -1, 372, - -1, 374, 375, 376, -1, 378, 379, -1, -1, 382, - 383, 384, 385, 386, 387, 388, 389, 390, -1, -1, - -1, 394, 395, 396, 397, 398, 399, 400, 401, 298, + 409, 410, 411, 412, 413, -1, 256, -1, 261, -1, + 418, 420, 262, -1, 423, -1, -1, -1, -1, -1, + 429, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 284, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 297, -1, -1, -1, 298, 302, + -1, -1, 305, -1, 307, -1, 309, 310, 311, 312, + -1, -1, -1, -1, 317, -1, -1, -1, 321, 256, + -1, -1, 325, -1, -1, 262, -1, -1, -1, 266, + 333, -1, -1, 336, -1, 338, -1, -1, -1, 339, + -1, -1, -1, -1, 344, -1, 346, 347, 348, 349, + 350, 351, 352, 353, 354, 355, 356, -1, -1, 362, + -1, 298, -1, -1, -1, -1, -1, -1, 368, -1, + 370, -1, 372, -1, 374, 375, 376, 314, 378, 379, + -1, 381, 382, 383, 384, 385, 386, 387, 388, 389, + 390, -1, -1, -1, 394, 395, 396, 397, 398, 399, + 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, + 410, 411, 256, 413, -1, 418, -1, -1, 262, -1, + 357, -1, -1, -1, -1, -1, 363, -1, -1, 429, + -1, -1, 369, 370, 371, 372, 373, 374, 375, 376, + -1, 378, 379, -1, 381, 382, 383, 384, 385, 386, + 387, 388, 389, 390, 298, 392, 393, 394, 395, 396, + 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, + 407, 408, 409, 410, 411, 412, 413, -1, -1, -1, + -1, 418, -1, 420, -1, -1, 423, -1, -1, -1, + -1, -1, 429, -1, -1, 339, -1, -1, -1, -1, + 344, -1, 346, 347, 348, 349, 350, 351, 352, 353, + 354, 355, 356, -1, -1, -1, 256, -1, -1, -1, + -1, -1, 262, -1, 368, -1, 370, -1, 372, -1, + 374, 375, 376, -1, 378, 379, -1, -1, 382, 383, + 384, 385, 386, 387, 388, 389, 390, -1, -1, -1, + 394, 395, 396, 397, 398, 399, 400, 401, 298, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 413, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 413, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 256, 429, -1, -1, -1, - -1, 262, -1, -1, -1, -1, -1, -1, -1, -1, - 339, -1, -1, -1, -1, 344, -1, 346, 347, 348, - 349, 350, 351, 352, 353, 354, 355, 356, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 298, -1, 368, - -1, 370, -1, 372, -1, 374, 375, 376, -1, 378, - 379, -1, -1, 382, 383, 384, 385, -1, -1, -1, - 389, 390, -1, -1, -1, 394, 395, 396, 397, 398, - 399, 400, 401, -1, -1, -1, -1, -1, 339, -1, - -1, -1, -1, 344, 413, 346, 347, 348, 349, 350, - 351, 352, 353, 354, 355, 356, -1, -1, -1, 256, - 429, -1, -1, -1, -1, 262, -1, 368, -1, 370, - -1, 372, -1, 374, 375, 376, -1, 378, 379, -1, - -1, 382, 383, 384, 385, -1, -1, -1, 389, 390, - -1, -1, -1, 394, 395, 396, 397, 398, 399, 400, - 401, 298, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 413, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 256, 429, -1, - -1, -1, -1, 262, -1, -1, -1, -1, -1, -1, - -1, -1, 339, -1, -1, -1, -1, 344, -1, 346, - 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 298, - -1, 368, -1, 370, -1, 372, -1, 374, 375, 376, - -1, 378, 379, -1, -1, 382, 383, 384, 385, -1, - -1, -1, 389, 390, -1, 256, -1, 394, 395, 396, - 397, 398, 399, 400, 401, -1, -1, -1, -1, -1, - 339, -1, -1, -1, -1, 344, 413, 346, 347, 348, - 349, 350, 351, 352, 353, 354, 355, 356, -1, -1, - -1, -1, 429, -1, -1, -1, -1, -1, -1, 368, - -1, 370, -1, 372, -1, 374, 375, 376, -1, 378, - 379, -1, -1, 382, 383, 384, 385, -1, -1, -1, - 389, 390, -1, 256, -1, 394, 395, 396, 397, 398, - 399, 400, 401, -1, -1, -1, -1, -1, 339, -1, - -1, -1, -1, 344, 413, 346, 347, 348, 349, 350, - 351, 352, 353, 354, 355, 356, -1, -1, -1, -1, - 429, -1, -1, -1, -1, -1, -1, 368, -1, 370, - -1, 372, -1, 374, 375, 376, -1, -1, -1, -1, - -1, 382, 383, 384, 385, -1, -1, -1, 389, 390, - -1, 256, -1, 394, 395, 396, 397, 398, 399, 400, - 401, -1, -1, -1, -1, -1, 339, -1, -1, -1, - -1, 344, 413, 346, 347, 348, 349, 350, 351, 352, - 353, 354, 355, 356, -1, -1, -1, -1, 429, -1, - -1, -1, -1, -1, -1, 368, -1, 370, -1, 372, - -1, 374, 375, 376, -1, -1, -1, -1, -1, 382, - 383, 384, 385, -1, -1, -1, 389, 390, -1, 256, - -1, 394, 395, 396, 397, 398, 399, 400, 401, -1, - -1, -1, -1, -1, 339, -1, -1, -1, -1, 344, - 413, 346, 347, 348, 349, 350, 351, 352, 353, 354, - 355, 356, -1, -1, -1, -1, 429, -1, -1, -1, - -1, -1, -1, 368, -1, 370, -1, 372, -1, 374, - 375, 376, -1, -1, -1, -1, -1, 382, 383, 384, - 385, -1, -1, -1, 389, 390, -1, 256, -1, 394, - 395, 396, 397, 398, 399, 400, 401, -1, -1, -1, - -1, -1, 339, -1, -1, -1, -1, 344, 413, 346, - 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, - -1, -1, -1, -1, 429, -1, -1, -1, -1, -1, - -1, 368, -1, 370, -1, 372, -1, 374, 375, 376, - -1, -1, -1, -1, -1, 382, 383, 384, 385, -1, - -1, -1, 389, 390, -1, 256, -1, -1, -1, 396, - 397, 398, 399, 400, 401, -1, -1, -1, -1, -1, - 339, -1, -1, -1, -1, 344, 413, 346, 347, 348, - 349, 350, 351, 352, 353, 354, 355, 356, -1, -1, - -1, -1, 429, -1, -1, -1, -1, -1, -1, 368, - -1, 370, -1, 372, -1, 374, 375, 376, -1, -1, - -1, -1, -1, 382, 383, 384, 385, -1, -1, -1, - 389, 390, -1, 256, -1, -1, -1, 396, 397, 398, - 399, 400, 401, -1, -1, -1, -1, -1, 339, -1, - -1, -1, -1, 344, 413, 346, 347, 348, 349, 350, - 351, 352, 353, 354, 355, 356, -1, -1, -1, -1, - 429, -1, -1, -1, -1, -1, -1, 368, -1, 370, - -1, 372, -1, 374, 375, 376, -1, -1, -1, -1, - -1, 382, 383, 384, 385, -1, -1, -1, 389, 390, - -1, 256, -1, -1, -1, 396, 397, 398, 399, 400, - 401, -1, -1, -1, -1, -1, 339, -1, -1, -1, - -1, 344, 413, 346, 347, 348, 349, 350, 351, 352, - 353, 354, 355, 356, -1, -1, -1, -1, 429, -1, - -1, -1, -1, -1, -1, 368, -1, 370, -1, 372, - -1, 374, 375, 376, -1, -1, -1, -1, -1, 382, - 383, 384, 385, -1, -1, -1, 389, 390, -1, 256, - -1, -1, -1, 396, 397, 398, 399, 400, 401, -1, - -1, -1, -1, -1, 339, -1, -1, -1, -1, 344, - 413, 346, 347, 348, 349, 350, 351, 352, 353, 354, - 355, 356, -1, -1, -1, -1, 429, -1, -1, -1, - -1, -1, -1, 368, -1, 370, -1, 372, -1, 374, - 375, 376, -1, -1, -1, -1, -1, 382, 383, 384, - 385, -1, -1, -1, 389, 390, -1, 256, -1, -1, - -1, 396, 397, 398, 399, 400, 401, -1, -1, -1, - -1, -1, 339, -1, -1, -1, -1, 344, 413, 346, - 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, - -1, -1, -1, -1, 429, -1, -1, -1, -1, -1, - -1, 368, -1, 370, -1, 372, -1, 374, 375, 376, - -1, -1, -1, -1, -1, -1, -1, 384, 385, -1, - -1, -1, 389, 390, -1, 256, -1, -1, -1, -1, - -1, 398, 399, 400, 401, -1, -1, -1, -1, -1, - 339, -1, -1, -1, -1, 344, 413, 346, 347, 348, - 349, 350, 351, 352, 353, 354, 355, 356, -1, -1, - -1, -1, 429, -1, -1, -1, -1, -1, -1, 368, - -1, 370, -1, 372, -1, 374, 375, 376, -1, -1, - -1, -1, -1, -1, -1, 384, 385, -1, -1, -1, - 389, 390, -1, 256, -1, -1, -1, -1, -1, 398, - 399, 400, 401, -1, -1, -1, -1, -1, 339, -1, - -1, -1, -1, 344, 413, 346, 347, 348, 349, 350, - 351, 352, 353, 354, 355, 356, -1, -1, -1, -1, - 429, -1, -1, -1, -1, -1, -1, 368, -1, 370, - -1, 372, -1, 374, 375, 376, -1, -1, -1, -1, - -1, -1, -1, 384, 385, -1, -1, -1, 389, 390, - -1, 256, -1, -1, -1, -1, -1, 398, 399, 400, - 401, -1, -1, -1, -1, -1, 339, -1, -1, -1, - -1, 344, 413, 346, 347, 348, 349, 350, 351, 352, - 353, 354, 355, 356, -1, -1, -1, -1, 429, -1, - -1, -1, -1, -1, -1, 368, -1, 370, -1, 372, - -1, 374, 375, 376, -1, -1, -1, -1, -1, -1, - -1, 384, 385, -1, -1, -1, 389, 390, -1, 256, - -1, -1, -1, -1, -1, -1, -1, 400, 401, -1, - -1, -1, -1, -1, 339, -1, -1, -1, -1, 344, - 413, 346, 347, 348, 349, 350, 351, 352, 353, 354, - 355, 356, -1, -1, -1, -1, 429, -1, -1, -1, - -1, -1, -1, 368, -1, 370, -1, 372, -1, 374, - 375, 376, -1, -1, -1, -1, -1, -1, -1, 384, - 385, -1, -1, -1, 389, 390, -1, 256, -1, -1, - -1, -1, -1, -1, -1, 400, 401, -1, -1, -1, - -1, -1, 339, -1, -1, -1, -1, 344, 413, 346, - 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, - -1, -1, -1, -1, 429, -1, -1, -1, -1, -1, - -1, 368, -1, 370, -1, 372, -1, 374, 375, 376, - -1, -1, -1, -1, -1, -1, -1, -1, 385, -1, - -1, -1, 389, 390, -1, 256, -1, -1, -1, -1, - -1, -1, -1, 400, 401, -1, -1, -1, -1, -1, - 339, -1, -1, -1, -1, 344, 413, 346, 347, 348, - 349, 350, 351, 352, 353, 354, 355, 356, -1, -1, - -1, -1, 429, -1, -1, -1, -1, -1, -1, 368, - -1, 370, -1, 372, -1, 374, 375, 376, -1, -1, - -1, -1, -1, -1, -1, -1, 385, -1, -1, -1, - 389, 390, -1, 256, -1, -1, -1, -1, -1, -1, - -1, 400, 401, -1, -1, -1, -1, -1, 339, -1, - -1, -1, -1, 344, 413, 346, 347, 348, 349, 350, - 351, 352, 353, 354, 355, 356, -1, -1, -1, -1, - 429, -1, -1, -1, -1, -1, -1, 368, -1, 370, - -1, 372, -1, 374, 375, 376, -1, -1, -1, -1, - -1, -1, -1, -1, 385, -1, -1, -1, -1, 390, - -1, 256, -1, -1, -1, -1, -1, -1, -1, 400, - 401, -1, -1, -1, -1, -1, 339, -1, -1, -1, - -1, 344, 413, 346, 347, 348, 349, 350, 351, 352, - 353, 354, 355, 356, -1, -1, -1, -1, 429, -1, - -1, -1, -1, -1, -1, 368, -1, 370, -1, 372, - -1, 374, 375, 376, -1, -1, -1, -1, -1, -1, - -1, -1, 385, -1, -1, -1, -1, 390, -1, 256, - -1, -1, -1, -1, -1, -1, -1, 400, 401, -1, - -1, -1, -1, -1, 339, -1, -1, -1, -1, 344, - 413, 346, 347, 348, 349, 350, 351, 352, 353, 354, - 355, 356, -1, -1, -1, -1, 429, -1, -1, -1, - -1, -1, -1, 368, -1, 370, -1, 372, -1, 374, - 375, 376, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 390, -1, 256, -1, -1, - -1, -1, -1, -1, -1, 400, 401, -1, -1, -1, - -1, -1, 339, -1, -1, -1, -1, 344, 413, 346, - 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, - -1, -1, -1, -1, 429, -1, -1, -1, -1, -1, - -1, 368, -1, 370, -1, 372, -1, 374, 375, 376, - -1, -1, -1, 256, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 390, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 400, 401, -1, -1, -1, -1, -1, - 339, -1, -1, -1, -1, 344, 413, 346, 347, 348, - 349, 350, 351, 352, 353, 354, 355, 356, -1, -1, - -1, -1, 429, -1, -1, -1, -1, -1, -1, 368, - -1, 370, -1, 372, -1, 374, 375, 376, -1, -1, - -1, 256, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 390, -1, -1, -1, -1, 339, -1, -1, -1, - -1, 344, 401, 346, 347, 348, 349, 350, 351, 352, - 353, 354, 355, 356, 413, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 368, -1, 370, -1, 372, - 429, 374, 375, 376, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 390, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 401, -1, - -1, -1, -1, -1, 339, -1, -1, -1, -1, 344, - 413, 346, 347, 348, 349, 350, 351, 352, 353, 354, - 355, 356, -1, -1, -1, -1, 429, -1, -1, -1, - -1, -1, -1, 368, -1, 370, -1, 372, -1, 374, - 375, 376, 256, -1, -1, -1, -1, -1, -1, -1, - 264, 265, 266, 267, -1, 390, 270, 271, -1, 273, + -1, -1, -1, -1, 256, 429, -1, -1, -1, -1, + 262, -1, -1, -1, -1, -1, -1, -1, -1, 339, + -1, -1, -1, -1, 344, -1, 346, 347, 348, 349, + 350, 351, 352, 353, 354, 355, 356, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 298, -1, 368, -1, + 370, -1, 372, -1, 374, 375, 376, -1, 378, 379, + -1, -1, 382, 383, 384, 385, -1, -1, -1, 389, + 390, -1, -1, -1, 394, 395, 396, 397, 398, 399, + 400, 401, -1, -1, -1, -1, -1, 339, -1, -1, + -1, -1, 344, 413, 346, 347, 348, 349, 350, 351, + 352, 353, 354, 355, 356, -1, -1, -1, 256, 429, + -1, -1, -1, -1, 262, -1, 368, -1, 370, -1, + 372, -1, 374, 375, 376, -1, 378, 379, -1, -1, + 382, 383, 384, 385, -1, -1, -1, 389, 390, -1, + -1, -1, 394, 395, 396, 397, 398, 399, 400, 401, + 298, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 413, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 256, 429, -1, -1, + -1, -1, 262, -1, -1, -1, -1, -1, -1, -1, + -1, 339, -1, -1, -1, -1, 344, -1, 346, 347, + 348, 349, 350, 351, 352, 353, 354, 355, 356, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 298, -1, + 368, -1, 370, -1, 372, -1, 374, 375, 376, -1, + 378, 379, -1, -1, 382, 383, 384, 385, -1, -1, + -1, 389, 390, -1, 256, -1, 394, 395, 396, 397, + 398, 399, 400, 401, -1, -1, -1, -1, -1, 339, + -1, -1, -1, -1, 344, 413, 346, 347, 348, 349, + 350, 351, 352, 353, 354, 355, 356, -1, -1, -1, + -1, 429, -1, -1, -1, -1, -1, -1, 368, -1, + 370, -1, 372, -1, 374, 375, 376, -1, 378, 379, + -1, -1, 382, 383, 384, 385, -1, -1, -1, 389, + 390, -1, 256, -1, 394, 395, 396, 397, 398, 399, + 400, 401, -1, -1, -1, -1, -1, 339, -1, -1, + -1, -1, 344, 413, 346, 347, 348, 349, 350, 351, + 352, 353, 354, 355, 356, -1, -1, -1, -1, 429, + -1, -1, -1, -1, -1, -1, 368, -1, 370, -1, + 372, -1, 374, 375, 376, -1, -1, -1, -1, -1, + 382, 383, 384, 385, -1, -1, -1, 389, 390, -1, + 256, -1, 394, 395, 396, 397, 398, 399, 400, 401, + -1, -1, -1, -1, -1, 339, -1, -1, -1, -1, + 344, 413, 346, 347, 348, 349, 350, 351, 352, 353, + 354, 355, 356, -1, -1, -1, -1, 429, -1, -1, + -1, -1, -1, -1, 368, -1, 370, -1, 372, -1, + 374, 375, 376, -1, -1, -1, -1, -1, 382, 383, + 384, 385, -1, -1, -1, 389, 390, -1, 256, -1, + 394, 395, 396, 397, 398, 399, 400, 401, -1, -1, + -1, -1, -1, 339, -1, -1, -1, -1, 344, 413, + 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, + 356, -1, -1, -1, -1, 429, -1, -1, -1, -1, + -1, -1, 368, -1, 370, -1, 372, -1, 374, 375, + 376, -1, -1, -1, -1, -1, 382, 383, 384, 385, + -1, -1, -1, 389, 390, -1, 256, -1, 394, 395, + 396, 397, 398, 399, 400, 401, -1, -1, -1, -1, + -1, 339, -1, -1, -1, -1, 344, 413, 346, 347, + 348, 349, 350, 351, 352, 353, 354, 355, 356, -1, + -1, -1, -1, 429, -1, -1, -1, -1, -1, -1, + 368, -1, 370, -1, 372, -1, 374, 375, 376, -1, + -1, -1, -1, -1, 382, 383, 384, 385, -1, -1, + -1, 389, 390, -1, 256, -1, -1, -1, 396, 397, + 398, 399, 400, 401, -1, -1, -1, -1, -1, 339, + -1, -1, -1, -1, 344, 413, 346, 347, 348, 349, + 350, 351, 352, 353, 354, 355, 356, -1, -1, -1, + -1, 429, -1, -1, -1, -1, -1, -1, 368, -1, + 370, -1, 372, -1, 374, 375, 376, -1, -1, -1, + -1, -1, 382, 383, 384, 385, -1, -1, -1, 389, + 390, -1, 256, -1, -1, -1, 396, 397, 398, 399, + 400, 401, -1, -1, -1, -1, -1, 339, -1, -1, + -1, -1, 344, 413, 346, 347, 348, 349, 350, 351, + 352, 353, 354, 355, 356, -1, -1, -1, -1, 429, + -1, -1, -1, -1, -1, -1, 368, -1, 370, -1, + 372, -1, 374, 375, 376, -1, -1, -1, -1, -1, + 382, 383, 384, 385, -1, -1, -1, 389, 390, -1, + 256, -1, -1, -1, 396, 397, 398, 399, 400, 401, + -1, -1, -1, -1, -1, 339, -1, -1, -1, -1, + 344, 413, 346, 347, 348, 349, 350, 351, 352, 353, + 354, 355, 356, -1, -1, -1, -1, 429, -1, -1, + -1, -1, -1, -1, 368, -1, 370, -1, 372, -1, + 374, 375, 376, -1, -1, -1, -1, -1, 382, 383, + 384, 385, -1, -1, -1, 389, 390, -1, 256, -1, + -1, -1, 396, 397, 398, 399, 400, 401, -1, -1, + -1, -1, -1, 339, -1, -1, -1, -1, 344, 413, + 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, + 356, -1, -1, -1, -1, 429, -1, -1, -1, -1, + -1, -1, 368, -1, 370, -1, 372, -1, 374, 375, + 376, -1, -1, -1, -1, -1, 382, 383, 384, 385, + -1, -1, -1, 389, 390, -1, 256, -1, -1, -1, + 396, 397, 398, 399, 400, 401, -1, -1, -1, -1, + -1, 339, -1, -1, -1, -1, 344, 413, 346, 347, + 348, 349, 350, 351, 352, 353, 354, 355, 356, -1, + -1, -1, -1, 429, -1, -1, -1, -1, -1, -1, + 368, -1, 370, -1, 372, -1, 374, 375, 376, -1, + -1, -1, -1, -1, -1, -1, 384, 385, -1, -1, + -1, 389, 390, -1, 256, -1, -1, -1, -1, -1, + 398, 399, 400, 401, -1, -1, -1, -1, -1, 339, + -1, -1, -1, -1, 344, 413, 346, 347, 348, 349, + 350, 351, 352, 353, 354, 355, 356, -1, -1, -1, + -1, 429, -1, -1, -1, -1, -1, -1, 368, -1, + 370, -1, 372, -1, 374, 375, 376, -1, -1, -1, + -1, -1, -1, -1, 384, 385, -1, -1, -1, 389, + 390, -1, 256, -1, -1, -1, -1, -1, 398, 399, + 400, 401, -1, -1, -1, -1, -1, 339, -1, -1, + -1, -1, 344, 413, 346, 347, 348, 349, 350, 351, + 352, 353, 354, 355, 356, -1, -1, -1, -1, 429, + -1, -1, -1, -1, -1, -1, 368, -1, 370, -1, + 372, -1, 374, 375, 376, -1, -1, -1, -1, -1, + -1, -1, 384, 385, -1, -1, -1, 389, 390, -1, + 256, -1, -1, -1, -1, -1, 398, 399, 400, 401, + -1, -1, -1, -1, -1, 339, -1, -1, -1, -1, + 344, 413, 346, 347, 348, 349, 350, 351, 352, 353, + 354, 355, 356, -1, -1, -1, -1, 429, -1, -1, + -1, -1, -1, -1, 368, -1, 370, -1, 372, -1, + 374, 375, 376, -1, -1, -1, -1, -1, -1, -1, + 384, 385, -1, -1, -1, 389, 390, -1, 256, -1, + -1, -1, -1, -1, -1, -1, 400, 401, -1, -1, + -1, -1, -1, 339, -1, -1, -1, -1, 344, 413, + 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, + 356, -1, -1, -1, -1, 429, -1, -1, -1, -1, + -1, -1, 368, -1, 370, -1, 372, -1, 374, 375, + 376, -1, -1, -1, -1, -1, -1, -1, 384, 385, + -1, -1, -1, 389, 390, -1, 256, -1, -1, -1, + -1, -1, -1, -1, 400, 401, -1, -1, -1, -1, + -1, 339, -1, -1, -1, -1, 344, 413, 346, 347, + 348, 349, 350, 351, 352, 353, 354, 355, 356, -1, + -1, -1, -1, 429, -1, -1, -1, -1, -1, -1, + 368, -1, 370, -1, 372, -1, 374, 375, 376, -1, + -1, -1, -1, -1, -1, -1, -1, 385, -1, -1, + -1, 389, 390, -1, 256, -1, -1, -1, -1, -1, + -1, -1, 400, 401, -1, -1, -1, -1, -1, 339, + -1, -1, -1, -1, 344, 413, 346, 347, 348, 349, + 350, 351, 352, 353, 354, 355, 356, -1, -1, -1, + -1, 429, -1, -1, -1, -1, -1, -1, 368, -1, + 370, -1, 372, -1, 374, 375, 376, -1, -1, -1, + -1, -1, -1, -1, -1, 385, -1, -1, -1, 389, + 390, -1, 256, -1, -1, -1, -1, -1, -1, -1, + 400, 401, -1, -1, -1, -1, -1, 339, -1, -1, + -1, -1, 344, 413, 346, 347, 348, 349, 350, 351, + 352, 353, 354, 355, 356, -1, -1, -1, -1, 429, + -1, -1, -1, -1, -1, -1, 368, -1, 370, -1, + 372, -1, 374, 375, 376, -1, -1, -1, -1, -1, + -1, -1, -1, 385, -1, -1, -1, -1, 390, -1, + 256, -1, -1, -1, -1, -1, -1, -1, 400, 401, + -1, -1, -1, -1, -1, 339, -1, -1, -1, -1, + 344, 413, 346, 347, 348, 349, 350, 351, 352, 353, + 354, 355, 356, -1, -1, -1, -1, 429, -1, -1, + -1, -1, -1, -1, 368, -1, 370, -1, 372, -1, + 374, 375, 376, -1, -1, -1, -1, -1, -1, -1, + -1, 385, -1, -1, -1, -1, 390, -1, 256, -1, + -1, -1, -1, -1, -1, -1, 400, 401, -1, -1, + -1, -1, -1, 339, -1, -1, -1, -1, 344, 413, + 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, + 356, -1, -1, -1, -1, 429, -1, -1, -1, -1, + -1, -1, 368, -1, 370, -1, 372, -1, 374, 375, + 376, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 390, -1, 256, -1, -1, -1, + -1, -1, -1, -1, 400, 401, -1, -1, -1, -1, + -1, 339, -1, -1, -1, -1, 344, 413, 346, 347, + 348, 349, 350, 351, 352, 353, 354, 355, 356, -1, + -1, -1, -1, 429, -1, -1, -1, -1, -1, -1, + 368, -1, 370, -1, 372, -1, 374, 375, 376, -1, + -1, -1, 256, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 390, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 400, 401, -1, -1, -1, -1, -1, 339, + -1, -1, -1, -1, 344, 413, 346, 347, 348, 349, + 350, 351, 352, 353, 354, 355, 356, -1, -1, -1, + -1, 429, -1, -1, -1, -1, -1, -1, 368, -1, + 370, -1, 372, -1, 374, 375, 376, -1, -1, -1, + -1, 262, -1, -1, -1, 266, -1, -1, -1, -1, + 390, -1, -1, -1, -1, 339, -1, -1, -1, -1, + 344, 401, 346, 347, 348, 349, 350, 351, 352, 353, + 354, 355, 356, 413, -1, -1, -1, 298, -1, -1, + -1, -1, -1, -1, 368, -1, 370, -1, 372, 429, + 374, 375, 376, 314, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 390, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 401, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 413, + -1, -1, -1, -1, -1, -1, 357, -1, -1, -1, + -1, -1, 363, -1, -1, 429, -1, -1, 369, -1, + 371, -1, 373, -1, 375, 376, -1, 378, 379, -1, + 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, + -1, 392, 393, 394, 395, 396, 397, 398, 399, 400, + 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, + 411, 412, 413, -1, -1, 256, -1, 418, -1, 420, + -1, -1, 423, 264, 265, 266, 267, -1, 429, 270, + 271, -1, 273, 274, 275, 276, 277, 278, 279, -1, + -1, -1, -1, -1, 285, -1, 287, 288, 289, 290, + 291, 292, -1, -1, 295, -1, -1, -1, 299, 300, + -1, 302, 303, 304, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 314, -1, 316, -1, 318, 319, -1, + -1, 322, -1, 324, 325, 326, 327, 328, 329, 330, + 331, 332, 333, 334, 335, -1, 337, -1, -1, 340, + 341, -1, -1, 344, 345, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 359, 360, + 361, 362, 363, -1, -1, -1, 367, -1, -1, -1, + 371, -1, -1, -1, -1, 376, 377, 378, 379, 380, + -1, -1, -1, 384, -1, 386, -1, -1, -1, -1, + -1, 392, 393, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 256, -1, -1, -1, 417, 418, 419, 420, + 264, 265, 266, 267, -1, -1, 270, 271, -1, 273, 274, 275, 276, 277, 278, 279, -1, -1, -1, -1, -1, 285, -1, 287, 288, 289, 290, 291, 292, -1, -1, 295, -1, -1, -1, 299, 300, -1, 302, 303, - 304, -1, -1, -1, 429, -1, -1, -1, -1, -1, + 304, -1, -1, -1, -1, -1, -1, -1, -1, -1, 314, -1, 316, -1, 318, 319, -1, -1, 322, -1, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, -1, 337, -1, -1, 340, 341, -1, -1, @@ -11670,114 +11712,114 @@ void case_950() 393, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 256, -1, -1, -1, 417, 418, 419, 420, 264, 265, - 266, 267, -1, -1, 270, 271, -1, 273, 274, 275, - 276, 277, 278, 279, -1, -1, -1, -1, -1, 285, - -1, 287, 288, 289, 290, 291, 292, -1, -1, 295, - -1, -1, -1, 299, 300, -1, 302, 303, 304, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 314, -1, - 316, -1, 318, 319, -1, -1, 322, -1, 324, 325, - 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, - -1, 337, -1, -1, 340, 341, -1, -1, 344, 345, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 267, -1, -1, 270, 271, -1, -1, -1, 275, + 276, 277, -1, 279, -1, -1, 265, -1, 267, 285, + -1, 270, 288, -1, -1, -1, 275, -1, -1, 295, + 279, -1, -1, -1, 300, -1, 302, 303, 304, 288, + -1, -1, -1, -1, -1, -1, 295, -1, -1, -1, + 316, 300, 318, 319, -1, 304, 322, -1, -1, 325, + -1, 327, -1, 329, 330, 331, 332, 316, 334, 318, + -1, -1, -1, 322, -1, 341, -1, -1, 344, 345, + -1, 330, 331, -1, -1, 334, -1, -1, 337, -1, -1, -1, -1, 359, 360, 361, 362, 363, -1, -1, - -1, 367, -1, -1, -1, 371, -1, -1, -1, -1, - 376, 377, 378, 379, 380, -1, -1, -1, 384, -1, - 386, -1, -1, -1, -1, -1, 392, 393, -1, -1, + -1, 367, 368, -1, -1, 371, -1, -1, -1, -1, + -1, 377, 378, 379, 380, -1, -1, -1, 384, -1, + 386, -1, -1, 372, -1, -1, 392, 393, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 256, -1, -1, -1, 417, 418, 419, 420, 264, 265, -1, 267, -1, - -1, 270, 271, -1, -1, -1, 275, 276, 277, -1, + -1, 270, 271, -1, -1, -1, 275, 276, 277, 418, 279, -1, -1, 265, -1, 267, 285, -1, 270, 288, -1, -1, -1, 275, -1, -1, 295, 279, -1, -1, -1, 300, -1, 302, 303, 304, 288, -1, -1, -1, -1, -1, -1, 295, -1, -1, -1, 316, 300, 318, - 319, -1, 304, 322, -1, -1, 325, -1, 327, -1, + 319, 320, 304, 322, -1, -1, 325, -1, 327, -1, 329, 330, 331, 332, 316, 334, 318, -1, -1, -1, 322, -1, 341, -1, -1, 344, 345, -1, 330, 331, -1, -1, 334, -1, -1, 337, -1, -1, -1, -1, - 359, 360, 361, 362, 363, -1, -1, -1, 367, 368, + 359, 360, 361, 362, 363, -1, -1, -1, 367, -1, -1, -1, 371, -1, -1, -1, -1, -1, 377, 378, - 379, 380, -1, -1, -1, 384, -1, 386, -1, -1, - 372, -1, -1, 392, 393, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 256, -1, -1, -1, 417, 418, - 419, 420, 264, 265, -1, 267, -1, -1, 270, 271, - -1, -1, -1, 275, 276, 277, 418, 279, -1, -1, - 265, -1, 267, 285, -1, 270, 288, -1, -1, -1, - 275, -1, -1, 295, 279, -1, -1, -1, 300, -1, - 302, 303, 304, 288, -1, -1, -1, -1, -1, -1, - 295, -1, -1, -1, 316, 300, 318, 319, 320, 304, - 322, -1, -1, 325, -1, 327, -1, 329, 330, 331, - 332, 316, 334, 318, -1, -1, -1, 322, -1, 341, - -1, -1, 344, 345, -1, 330, 331, -1, -1, 334, - -1, -1, 337, -1, -1, -1, -1, 359, 360, 361, - 362, 363, -1, -1, -1, 367, -1, -1, -1, 371, - -1, -1, -1, -1, -1, 377, 378, 379, 380, -1, - -1, -1, 384, -1, 386, 370, -1, -1, -1, -1, - 392, 393, -1, -1, -1, -1, -1, -1, 264, 265, - -1, 267, -1, -1, 270, 271, -1, -1, -1, 275, - 276, 277, -1, 279, -1, 417, 418, 419, 420, 285, - -1, -1, 288, -1, -1, -1, -1, -1, -1, 295, - -1, -1, -1, 418, 300, -1, 302, 303, 304, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 316, -1, 318, 319, -1, -1, 322, -1, -1, 325, - -1, 327, -1, 329, 330, 331, 332, -1, 334, -1, - -1, -1, -1, -1, -1, 341, -1, -1, 344, 345, + 379, 380, -1, -1, -1, 384, -1, 386, 370, -1, + -1, -1, -1, 392, 393, -1, -1, -1, -1, -1, + -1, 264, 265, -1, 267, -1, -1, 270, 271, -1, + -1, -1, 275, 276, 277, -1, 279, -1, 417, 418, + 419, 420, 285, -1, -1, 288, -1, -1, -1, -1, + -1, -1, 295, -1, -1, -1, 418, 300, -1, 302, + 303, 304, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 316, -1, 318, 319, -1, -1, 322, + -1, -1, 325, -1, 327, -1, 329, 330, 331, 332, + -1, 334, -1, -1, -1, -1, -1, -1, 341, -1, + -1, 344, 345, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 359, 360, 361, 362, + 363, -1, -1, -1, 367, 368, -1, -1, 371, -1, + -1, -1, -1, -1, 377, 378, 379, 380, -1, -1, + -1, 384, -1, 386, -1, -1, -1, -1, -1, 392, + 393, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 359, 360, 361, 362, 363, -1, -1, - -1, 367, 368, -1, -1, 371, -1, -1, -1, -1, - -1, 377, 378, 379, 380, -1, -1, -1, 384, -1, - 386, -1, -1, -1, -1, -1, 392, 393, -1, -1, + -1, -1, 256, -1, 417, 418, 419, 420, -1, -1, + 264, 265, -1, 267, -1, 428, 270, 271, -1, -1, + -1, 275, 276, 277, -1, 279, -1, -1, 265, -1, + 267, 285, -1, 270, 288, -1, -1, -1, 275, -1, + -1, 295, 279, -1, -1, -1, 300, -1, 302, 303, + 304, 288, -1, -1, -1, -1, -1, -1, 295, -1, + -1, -1, 316, 300, 318, 319, 320, 304, 322, -1, + -1, 325, -1, 327, -1, 329, 330, 331, 332, 316, + 334, 318, -1, -1, -1, 322, -1, 341, -1, -1, + 344, 345, -1, 330, 331, -1, -1, 334, -1, -1, + 337, -1, -1, -1, -1, 359, 360, 361, 362, 363, + -1, -1, -1, 367, -1, -1, -1, 371, -1, -1, + -1, -1, -1, 377, 378, 379, 380, -1, -1, -1, + 384, -1, 386, -1, -1, -1, -1, -1, 392, 393, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 256, - -1, 417, 418, 419, 420, -1, -1, 264, 265, -1, - 267, -1, 428, 270, 271, -1, -1, -1, 275, 276, - 277, -1, 279, -1, -1, 265, -1, 267, 285, -1, + -1, -1, -1, 417, 418, 419, 420, 264, 265, -1, + 267, -1, -1, 270, 271, -1, -1, -1, 275, 276, + 277, 418, 279, -1, -1, 265, -1, 267, 285, -1, 270, 288, -1, -1, -1, 275, -1, -1, 295, 279, -1, -1, -1, 300, -1, 302, 303, 304, 288, -1, -1, -1, -1, -1, -1, 295, -1, -1, -1, 316, - 300, 318, 319, 320, 304, 322, -1, -1, 325, -1, + 300, 318, 319, -1, 304, 322, -1, -1, 325, -1, 327, -1, 329, 330, 331, 332, 316, 334, 318, -1, - -1, -1, 322, -1, 341, -1, -1, 344, 345, -1, + 337, -1, 322, -1, 341, -1, -1, 344, 345, -1, 330, 331, -1, -1, 334, -1, -1, 337, -1, -1, -1, -1, 359, 360, 361, 362, 363, -1, -1, -1, - 367, -1, -1, -1, 371, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 371, -1, -1, -1, -1, -1, 377, 378, 379, 380, -1, -1, -1, 384, -1, 386, -1, -1, -1, -1, -1, 392, 393, -1, -1, -1, + -1, -1, -1, 264, 265, -1, 267, -1, -1, 270, + 271, -1, -1, -1, 275, 276, 277, -1, 279, -1, + 417, 418, 419, 420, 285, -1, -1, 288, -1, -1, + -1, -1, -1, -1, 295, -1, -1, -1, 418, 300, + -1, 302, 303, 304, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 316, -1, 318, 319, -1, + -1, 322, -1, -1, 325, -1, 327, -1, 329, 330, + 331, 332, -1, 334, -1, -1, -1, -1, -1, -1, + 341, -1, -1, 344, 345, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 359, 360, + 361, 362, 363, -1, -1, -1, 367, -1, -1, -1, + 371, -1, -1, -1, -1, -1, 377, 378, 379, 380, + -1, -1, -1, 384, -1, 386, -1, -1, -1, -1, + -1, 392, 393, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 256, -1, -1, -1, - 417, 418, 419, 420, 264, 265, -1, 267, -1, -1, - 270, 271, -1, -1, -1, 275, 276, 277, 418, 279, - -1, -1, 265, -1, 267, 285, -1, 270, 288, -1, - -1, -1, 275, -1, -1, 295, 279, -1, -1, -1, - 300, -1, 302, 303, 304, 288, -1, -1, -1, -1, - -1, -1, 295, -1, -1, -1, 316, 300, 318, 319, - -1, 304, 322, -1, -1, 325, -1, 327, -1, 329, - 330, 331, 332, 316, 334, 318, -1, 337, -1, 322, - -1, 341, -1, -1, 344, 345, -1, 330, 331, -1, - -1, 334, -1, -1, 337, -1, -1, -1, -1, 359, - 360, 361, 362, 363, -1, -1, -1, -1, -1, -1, - -1, 371, -1, -1, -1, -1, -1, 377, 378, 379, - 380, -1, -1, -1, 384, -1, 386, -1, -1, -1, - -1, -1, 392, 393, -1, -1, -1, -1, -1, -1, - 264, 265, -1, 267, -1, -1, 270, 271, -1, -1, - -1, 275, 276, 277, -1, 279, -1, 417, 418, 419, - 420, 285, -1, -1, 288, -1, -1, -1, -1, -1, - -1, 295, -1, -1, -1, 418, 300, -1, 302, 303, - 304, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 316, -1, 318, 319, -1, -1, 322, -1, - -1, 325, -1, 327, -1, 329, 330, 331, 332, -1, - 334, -1, -1, -1, -1, -1, -1, 341, -1, -1, - 344, 345, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 359, 360, 361, 362, 363, - -1, -1, -1, 367, -1, -1, -1, 371, -1, -1, - -1, -1, -1, 377, 378, 379, 380, -1, -1, -1, - 384, -1, 386, -1, -1, -1, -1, -1, 392, 393, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 256, -1, 417, 418, 419, 420, + -1, -1, 264, 265, -1, 267, -1, 428, 270, 271, + -1, -1, -1, 275, 276, 277, -1, 279, -1, -1, + 265, -1, 267, 285, -1, 270, 288, -1, -1, -1, + 275, -1, -1, 295, 279, -1, -1, -1, 300, -1, + 302, 303, 304, 288, -1, -1, -1, -1, -1, -1, + 295, -1, -1, -1, 316, 300, 318, 319, -1, 304, + 322, -1, -1, 325, -1, 327, -1, 329, 330, 331, + 332, 316, 334, 318, -1, -1, -1, 322, -1, 341, + -1, -1, 344, 345, -1, 330, 331, -1, -1, 334, + -1, -1, 337, -1, -1, -1, -1, 359, 360, 361, + 362, 363, -1, -1, -1, 367, -1, -1, -1, 371, + -1, -1, -1, -1, -1, 377, 378, 379, 380, -1, + -1, -1, 384, -1, 386, -1, -1, -1, -1, -1, + 392, 393, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 256, -1, 417, 418, 419, 420, -1, -1, 264, - 265, -1, 267, -1, 428, 270, 271, -1, -1, -1, - 275, 276, 277, -1, 279, -1, -1, 265, -1, 267, + -1, 256, -1, -1, -1, 417, 418, 419, 420, 264, + 265, -1, 267, -1, -1, 270, 271, -1, -1, -1, + 275, 276, 277, 418, 279, -1, -1, 265, -1, 267, 285, -1, 270, 288, -1, -1, -1, 275, -1, -1, 295, 279, -1, -1, -1, 300, -1, 302, 303, 304, 288, -1, -1, -1, -1, -1, -1, 295, -1, -1, @@ -11786,7 +11828,7 @@ void case_950() 318, -1, -1, -1, 322, -1, 341, -1, -1, 344, 345, -1, 330, 331, -1, -1, 334, -1, -1, 337, -1, -1, -1, -1, 359, 360, 361, 362, 363, -1, - -1, -1, 367, -1, -1, -1, 371, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 371, -1, -1, -1, -1, -1, 377, 378, 379, 380, -1, -1, -1, 384, -1, 386, -1, -1, -1, -1, -1, 392, 393, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, @@ -11821,398 +11863,385 @@ void case_950() 371, -1, -1, -1, -1, -1, 377, 378, 379, 380, -1, -1, -1, 384, -1, 386, -1, -1, -1, -1, -1, 392, 393, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 285, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 256, -1, -1, -1, 417, 418, 419, 420, 264, 265, -1, 267, -1, -1, 270, 271, -1, -1, - -1, 275, 276, 277, 418, 279, -1, -1, 265, -1, - 267, 285, -1, 270, 288, -1, -1, -1, 275, -1, - -1, 295, 279, -1, -1, -1, 300, -1, 302, 303, - 304, 288, -1, -1, -1, -1, -1, -1, 295, -1, - -1, -1, 316, 300, 318, 319, -1, 304, 322, -1, - -1, 325, -1, 327, -1, 329, 330, 331, 332, 316, - 334, 318, -1, -1, -1, 322, -1, 341, -1, -1, - 344, 345, -1, 330, 331, -1, -1, 334, -1, -1, - 337, -1, -1, -1, -1, 359, 360, 361, 362, 363, + -1, 275, 276, 277, 418, 279, -1, -1, -1, -1, + -1, 285, 327, -1, 288, -1, -1, -1, -1, -1, + -1, 295, -1, -1, -1, 262, 300, -1, 302, 303, + 304, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 316, -1, 318, 319, -1, -1, 322, -1, + -1, 325, -1, 327, -1, 329, 330, 331, 332, -1, + 334, 298, 377, 378, 379, 380, -1, 382, 383, 384, + 385, 386, 387, 388, 389, -1, -1, 392, 393, 394, + 395, 396, 397, 398, 399, 359, 360, 361, 362, -1, -1, -1, -1, -1, -1, -1, -1, 371, -1, -1, - -1, -1, -1, 377, 378, 379, 380, -1, -1, -1, - 384, -1, 386, -1, -1, -1, -1, -1, 392, 393, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 256, - -1, -1, -1, 417, 418, 419, 420, 264, 265, -1, - 267, -1, -1, 270, 271, -1, -1, -1, 275, 276, - 277, 418, 279, -1, -1, 265, -1, 267, 285, -1, - 270, 288, -1, -1, -1, 275, -1, -1, 295, 279, - -1, -1, -1, 300, -1, 302, 303, 304, 288, -1, - -1, -1, -1, -1, -1, 295, -1, -1, -1, 316, - 300, 318, 319, -1, 304, 322, -1, -1, 325, -1, - 327, -1, 329, 330, 331, 332, 316, 334, 318, -1, - -1, -1, 322, -1, 341, -1, -1, 344, 345, -1, - 330, 331, -1, -1, 334, -1, -1, 337, -1, -1, - -1, -1, 359, 360, 361, 362, 363, -1, -1, -1, - -1, -1, -1, -1, 371, -1, -1, -1, -1, -1, - 377, 378, 379, 380, -1, -1, -1, 384, -1, 386, - -1, -1, -1, -1, -1, 392, 393, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 256, -1, -1, -1, - 417, 418, 419, 420, 264, 265, -1, 267, -1, -1, - 270, 271, -1, -1, -1, 275, 276, 277, 418, 279, - -1, -1, -1, -1, -1, 285, -1, -1, 288, -1, - -1, -1, -1, -1, -1, 295, -1, 261, -1, 262, - 300, -1, 302, 303, 304, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 316, -1, 318, 319, - 284, -1, 322, -1, -1, 325, -1, 327, -1, 329, - 330, 331, 332, 297, 334, 298, -1, -1, 302, -1, - -1, -1, -1, 307, -1, 309, 310, 311, 312, -1, - -1, -1, -1, 317, -1, -1, -1, 321, -1, 359, - 360, 361, 362, -1, -1, -1, -1, -1, -1, 333, - -1, 371, 336, -1, 338, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 362, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 371, 372, - 373, 374, 375, -1, -1, 378, 379, 417, 418, 382, - 383, 384, 385, 386, 387, 388, 389, 390, -1, 392, - 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, - 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, - 413, -1, 261, -1, 418, -1, 265, 420, 267, -1, - 423, 270, -1, 272, 273, -1, 275, -1, 277, -1, - 279, -1, 281, 282, 283, 284, -1, -1, 287, 288, - -1, -1, -1, -1, 293, -1, 295, 296, 297, -1, - -1, 300, -1, 302, -1, 304, -1, -1, 307, -1, - 309, 310, 311, 312, -1, -1, -1, 316, 317, 318, - -1, -1, 321, 322, 323, -1, -1, -1, -1, -1, - -1, 330, 331, -1, 333, 334, -1, 336, 337, 338, - -1, -1, -1, 342, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 371, 372, 373, 374, 375, -1, + -1, 378, 379, 417, 418, 382, 383, 384, 385, 386, + 387, 388, 389, 390, -1, 392, 393, 394, 395, 396, + 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, + 407, 408, 409, 410, 411, 412, 413, -1, 261, -1, + -1, -1, 265, 420, 267, -1, 423, 270, -1, 272, + 273, -1, 275, -1, 277, -1, 279, -1, 281, 282, + 283, 284, -1, -1, 287, 288, -1, -1, -1, -1, + 293, -1, 295, 296, 297, -1, -1, 300, -1, 302, + -1, 304, -1, -1, 307, -1, 309, 310, 311, 312, + -1, -1, -1, 316, 317, 318, -1, -1, 321, 322, + 323, -1, -1, -1, -1, -1, -1, 330, 331, -1, + 333, 334, -1, 336, 337, 338, -1, -1, -1, 342, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 261, -1, 362, -1, 265, -1, 267, -1, 368, - 270, -1, 272, 273, -1, 275, -1, 277, 377, 279, - -1, 281, 282, 283, 284, -1, -1, 287, 288, -1, - -1, -1, -1, 293, -1, 295, 296, 297, -1, -1, - 300, -1, 302, -1, 304, -1, -1, 307, -1, 309, - 310, 311, 312, -1, -1, -1, 316, 317, 318, 418, - -1, 321, 322, 323, -1, -1, -1, -1, -1, -1, - 330, 331, -1, 333, 334, -1, 336, 337, 338, -1, - -1, -1, 342, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 261, -1, 362, + -1, 265, -1, 267, -1, 368, 270, -1, 272, 273, + -1, 275, -1, 277, 377, 279, -1, 281, 282, 283, + 284, -1, -1, 287, 288, -1, -1, -1, -1, 293, + -1, 295, 296, 297, -1, -1, 300, -1, 302, -1, + 304, -1, -1, 307, -1, 309, 310, 311, 312, -1, + -1, -1, 316, 317, 318, 418, -1, 321, 322, 323, + -1, -1, -1, -1, -1, -1, 330, 331, -1, 333, + 334, -1, 336, 337, 338, -1, -1, -1, 342, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 261, -1, 362, -1, + 265, -1, 267, -1, 368, 270, -1, 272, 273, -1, + 275, -1, 277, 377, 279, -1, 281, 282, 283, 284, + -1, -1, 287, 288, -1, -1, -1, -1, 293, -1, + 295, 296, 297, -1, -1, 300, -1, 302, -1, 304, + -1, -1, 307, -1, 309, 310, 311, 312, -1, -1, + -1, 316, 317, 318, 418, -1, 321, 322, 323, -1, + -1, -1, -1, -1, -1, 330, 331, -1, 333, 334, + -1, 336, 337, 338, -1, -1, -1, 342, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 261, -1, 362, -1, 265, -1, 267, -1, 368, 270, - -1, 272, 273, -1, 275, -1, 277, 377, 279, -1, + 261, -1, -1, -1, 265, -1, 267, 362, -1, 270, + -1, 272, 273, 368, 275, -1, 277, -1, 279, -1, 281, 282, 283, 284, -1, -1, 287, 288, -1, -1, -1, -1, 293, -1, 295, 296, 297, -1, -1, 300, - -1, 302, -1, 304, -1, -1, 307, -1, 309, 310, - 311, 312, -1, -1, -1, 316, 317, 318, 418, -1, - 321, 322, 323, -1, -1, -1, -1, -1, -1, 330, - 331, -1, 333, 334, -1, 336, 337, 338, -1, -1, - -1, 342, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 261, -1, -1, -1, 265, -1, - 267, 362, -1, 270, -1, 272, 273, 368, 275, -1, - 277, -1, 279, -1, 281, 282, 283, 284, -1, -1, - 287, 288, -1, -1, -1, -1, 293, -1, 295, 296, - 297, -1, -1, 300, -1, 302, 261, 304, -1, -1, - 307, -1, 309, 310, 311, 312, -1, -1, -1, 316, - 317, 318, -1, -1, 321, 322, 323, 418, -1, 284, - -1, -1, -1, 330, 331, -1, 333, 334, -1, 336, - 337, 338, 297, -1, -1, 342, -1, 302, -1, -1, - 305, -1, 307, -1, 309, 310, 311, 312, -1, -1, - -1, -1, 317, -1, -1, 362, 321, -1, -1, -1, - 325, 368, -1, -1, -1, -1, -1, -1, 333, -1, - -1, 336, -1, 338, 264, 265, -1, 267, -1, -1, - 270, 271, -1, -1, -1, 275, 276, 277, -1, 279, - -1, -1, 357, -1, -1, 285, -1, 362, 288, -1, - -1, -1, -1, -1, 369, 295, 371, -1, 373, -1, - 300, 418, 302, 303, 304, -1, 306, -1, -1, -1, - -1, 386, -1, 313, -1, -1, 316, -1, 318, 319, - -1, -1, 322, -1, -1, 325, -1, 327, -1, 329, - 330, 331, 332, -1, 334, -1, -1, -1, -1, -1, - -1, 341, -1, 418, 344, 345, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 359, - 360, 361, 362, 363, -1, -1, -1, -1, -1, -1, - -1, 371, 372, -1, 374, -1, -1, 377, 378, 379, - 380, -1, -1, -1, 384, -1, 386, -1, -1, -1, - -1, -1, 392, 393, -1, -1, -1, -1, -1, -1, - 264, 265, -1, 267, -1, -1, 270, 271, -1, -1, - -1, 275, 276, 277, -1, 279, -1, 417, 418, 419, - 420, 285, -1, -1, 288, -1, -1, -1, -1, -1, - -1, 295, -1, -1, -1, -1, 300, -1, 302, 303, - 304, -1, 306, -1, -1, -1, -1, -1, -1, 313, - -1, -1, 316, -1, 318, 319, -1, -1, 322, -1, - -1, 325, -1, 327, -1, 329, 330, 331, 332, -1, - 334, -1, -1, -1, -1, -1, -1, 341, -1, -1, - 344, 345, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 359, 360, 361, 362, 363, - -1, -1, -1, -1, -1, -1, -1, 371, -1, -1, - 374, -1, -1, 377, 378, 379, 380, -1, -1, -1, - 384, -1, 386, -1, -1, -1, -1, -1, 392, 393, - -1, -1, -1, -1, -1, -1, 264, 265, -1, 267, - -1, -1, 270, 271, -1, -1, -1, 275, 276, 277, - -1, 279, -1, 417, 418, 419, 420, 285, -1, -1, - 288, -1, -1, -1, -1, -1, -1, 295, -1, -1, - -1, -1, 300, -1, 302, 303, 304, -1, 306, -1, - -1, -1, -1, -1, -1, 313, -1, -1, 316, -1, - 318, 319, -1, -1, 322, -1, -1, 325, -1, 327, - -1, 329, 330, 331, 332, -1, 334, -1, -1, -1, - -1, -1, -1, 341, -1, -1, 344, 345, -1, -1, + -1, 302, 261, 304, -1, -1, 307, -1, 309, 310, + 311, 312, -1, -1, -1, 316, 317, 318, -1, -1, + 321, 322, 323, 418, -1, 284, -1, -1, -1, 330, + 331, -1, 333, 334, -1, 336, 337, 338, 297, -1, + -1, 342, -1, 302, -1, -1, 305, -1, 307, -1, + 309, 310, 311, 312, -1, -1, -1, -1, 317, -1, + -1, 362, 321, -1, -1, -1, 325, 368, -1, -1, + 261, -1, -1, -1, 333, -1, -1, 336, -1, 338, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 359, 360, 361, 362, 363, -1, -1, -1, -1, - -1, -1, -1, 371, -1, -1, -1, -1, -1, 377, - 378, 379, 380, -1, -1, -1, 384, -1, 386, -1, - -1, -1, -1, -1, 392, 393, -1, -1, -1, -1, - -1, -1, 264, 265, -1, 267, -1, -1, 270, 271, - -1, -1, -1, 275, 276, 277, -1, 279, -1, 417, - 418, 419, 420, 285, -1, -1, 288, -1, -1, -1, - -1, -1, -1, 295, -1, -1, -1, -1, 300, -1, - 302, 303, 304, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 316, -1, 318, 319, -1, -1, - 322, -1, -1, 325, -1, 327, -1, 329, 330, 331, - 332, -1, 334, -1, -1, 337, -1, -1, -1, 341, - -1, -1, 344, 345, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 359, 360, 361, - 362, 363, -1, -1, -1, -1, -1, -1, -1, 371, - -1, -1, -1, -1, -1, 377, 378, 379, 380, -1, - -1, -1, 384, -1, 386, -1, -1, -1, -1, -1, - 392, 393, -1, -1, -1, -1, -1, -1, 264, 265, - -1, 267, -1, -1, 270, 271, -1, -1, -1, 275, - 276, 277, -1, 279, -1, 417, 418, 419, 420, 285, - -1, -1, 288, -1, -1, -1, -1, -1, -1, 295, - -1, -1, -1, -1, 300, -1, 302, 303, 304, -1, + -1, -1, -1, 284, -1, -1, -1, -1, 357, -1, + -1, -1, -1, 362, -1, -1, 297, -1, -1, -1, + 369, 302, 371, -1, 373, -1, 307, 418, 309, 310, + 311, 312, -1, -1, -1, -1, 317, 386, -1, -1, + 321, -1, -1, -1, 325, -1, -1, 264, 265, -1, + 267, -1, 333, 270, 271, 336, -1, 338, 275, 276, + 277, -1, 279, -1, -1, -1, -1, -1, 285, 418, + -1, 288, -1, -1, -1, -1, -1, -1, 295, -1, + -1, 362, -1, 300, -1, 302, 303, 304, -1, 306, + -1, -1, -1, -1, -1, -1, 313, -1, -1, 316, + -1, 318, 319, -1, -1, 322, -1, -1, 325, -1, + 327, -1, 329, 330, 331, 332, -1, 334, -1, -1, + -1, -1, -1, -1, 341, -1, -1, 344, 345, -1, + -1, -1, -1, -1, -1, -1, -1, 418, -1, -1, + -1, -1, 359, 360, 361, 362, 363, -1, -1, -1, + -1, -1, -1, -1, 371, 372, -1, 374, -1, -1, + 377, 378, 379, 380, -1, -1, -1, 384, -1, 386, + -1, -1, -1, -1, -1, 392, 393, -1, -1, -1, + -1, -1, -1, 264, 265, -1, 267, -1, -1, 270, + 271, -1, -1, -1, 275, 276, 277, -1, 279, -1, + 417, 418, 419, 420, 285, -1, -1, 288, -1, -1, + -1, -1, -1, -1, 295, -1, -1, -1, -1, 300, + -1, 302, 303, 304, -1, 306, -1, -1, -1, -1, + -1, -1, 313, -1, -1, 316, -1, 318, 319, -1, + -1, 322, -1, -1, 325, -1, 327, -1, 329, 330, + 331, 332, -1, 334, -1, -1, -1, -1, -1, -1, + 341, -1, -1, 344, 345, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 359, 360, + 361, 362, 363, -1, -1, -1, -1, -1, -1, -1, + 371, -1, -1, 374, -1, -1, 377, 378, 379, 380, + -1, -1, -1, 384, -1, 386, -1, -1, -1, -1, + -1, 392, 393, -1, -1, -1, -1, -1, -1, 264, + 265, -1, 267, -1, -1, 270, 271, -1, -1, -1, + 275, 276, 277, -1, 279, -1, 417, 418, 419, 420, + 285, -1, -1, 288, -1, -1, -1, -1, -1, -1, + 295, -1, -1, -1, -1, 300, -1, 302, 303, 304, + -1, 306, -1, -1, -1, -1, -1, -1, 313, -1, + -1, 316, -1, 318, 319, -1, -1, 322, -1, -1, + 325, -1, 327, -1, 329, 330, 331, 332, -1, 334, + -1, -1, -1, -1, -1, -1, 341, -1, -1, 344, + 345, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 359, 360, 361, 362, 363, -1, + -1, -1, -1, -1, -1, -1, 371, -1, -1, -1, + -1, -1, 377, 378, 379, 380, -1, -1, -1, 384, + -1, 386, -1, -1, -1, -1, -1, 392, 393, -1, + -1, -1, -1, -1, -1, 264, 265, -1, 267, -1, + -1, 270, 271, -1, -1, -1, 275, 276, 277, -1, + 279, -1, 417, 418, 419, 420, 285, -1, -1, 288, + -1, -1, -1, -1, -1, -1, 295, -1, -1, -1, + -1, 300, -1, 302, 303, 304, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 316, -1, 318, + 319, -1, -1, 322, -1, -1, 325, -1, 327, -1, + 329, 330, 331, 332, -1, 334, -1, -1, 337, -1, + -1, -1, 341, -1, -1, 344, 345, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 316, -1, 318, 319, -1, -1, 322, -1, -1, 325, - -1, 327, -1, 329, 330, 331, 332, -1, 334, -1, - -1, -1, -1, -1, -1, 341, -1, -1, 344, 345, + 359, 360, 361, 362, 363, -1, -1, -1, -1, -1, + -1, -1, 371, -1, -1, -1, -1, -1, 377, 378, + 379, 380, -1, -1, -1, 384, -1, 386, -1, -1, + -1, -1, -1, 392, 393, -1, -1, -1, -1, -1, + -1, 264, 265, -1, 267, -1, -1, 270, 271, -1, + -1, -1, 275, 276, 277, -1, 279, -1, 417, 418, + 419, 420, 285, -1, -1, 288, -1, -1, -1, -1, + -1, -1, 295, -1, -1, -1, -1, 300, -1, 302, + 303, 304, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 316, -1, 318, 319, -1, -1, 322, + -1, -1, 325, -1, 327, -1, 329, 330, 331, 332, + -1, 334, -1, -1, -1, -1, -1, -1, 341, -1, + -1, 344, 345, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 359, 360, 361, 362, + 363, -1, -1, -1, -1, 368, -1, -1, 371, -1, + -1, -1, -1, -1, 377, 378, 379, 380, -1, -1, + -1, 384, -1, 386, -1, -1, -1, -1, -1, 392, + 393, -1, -1, -1, -1, -1, -1, 264, 265, -1, + 267, -1, -1, 270, 271, -1, -1, -1, 275, 276, + 277, -1, 279, -1, 417, 418, 419, 420, 285, -1, + -1, 288, -1, -1, -1, -1, -1, -1, 295, -1, + -1, -1, -1, 300, -1, 302, 303, 304, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 316, + -1, 318, 319, -1, -1, 322, -1, -1, 325, -1, + 327, -1, 329, 330, 331, 332, -1, 334, -1, -1, + -1, -1, -1, -1, 341, -1, -1, 344, 345, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 359, 360, 361, 362, 363, -1, -1, - -1, -1, 368, -1, -1, 371, -1, -1, -1, -1, - -1, 377, 378, 379, 380, -1, -1, -1, 384, -1, - 386, -1, -1, -1, -1, -1, 392, 393, -1, -1, - -1, -1, -1, -1, 264, 265, -1, 267, -1, -1, - 270, 271, -1, -1, -1, 275, 276, 277, -1, 279, - -1, 417, 418, 419, 420, 285, -1, -1, 288, -1, - -1, -1, -1, -1, -1, 295, -1, -1, -1, -1, - 300, -1, 302, 303, 304, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 316, -1, 318, 319, - -1, -1, 322, -1, -1, 325, -1, 327, -1, 329, - 330, 331, 332, -1, 334, -1, -1, -1, -1, -1, - -1, 341, -1, -1, 344, 345, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 359, - 360, 361, 362, 363, -1, -1, -1, 367, -1, -1, - -1, 371, -1, -1, -1, -1, -1, 377, 378, 379, - 380, -1, -1, -1, 384, -1, 386, -1, -1, -1, - -1, -1, 392, 393, -1, -1, -1, -1, -1, -1, - 264, 265, -1, 267, -1, -1, 270, 271, -1, -1, - -1, 275, 276, 277, -1, 279, -1, 417, 418, 419, - 420, 285, -1, -1, 288, -1, -1, -1, -1, -1, - -1, 295, -1, -1, -1, -1, 300, -1, 302, 303, - 304, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 316, -1, 318, 319, -1, -1, 322, -1, - -1, 325, -1, 327, -1, 329, 330, 331, 332, -1, - 334, -1, -1, -1, -1, -1, -1, 341, -1, -1, - 344, 345, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 359, 360, 361, 362, 363, - -1, -1, -1, 367, -1, -1, -1, 371, -1, -1, - -1, -1, -1, 377, 378, 379, 380, -1, -1, -1, - 384, -1, 386, -1, -1, -1, -1, -1, 392, 393, - -1, -1, -1, -1, -1, -1, 264, 265, -1, 267, - -1, -1, 270, 271, -1, -1, -1, 275, 276, 277, - -1, 279, -1, 417, 418, 419, 420, 285, -1, -1, - 288, -1, -1, -1, -1, -1, -1, 295, -1, -1, - -1, -1, 300, -1, 302, 303, 304, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 316, -1, - 318, 319, -1, -1, 322, -1, -1, 325, -1, 327, - -1, 329, 330, 331, 332, -1, 334, -1, -1, -1, - -1, -1, -1, 341, -1, -1, 344, 345, -1, -1, + -1, -1, 359, 360, 361, 362, 363, -1, -1, -1, + 367, -1, -1, -1, 371, -1, -1, -1, -1, -1, + 377, 378, 379, 380, -1, -1, -1, 384, -1, 386, + -1, -1, -1, -1, -1, 392, 393, -1, -1, -1, + -1, -1, -1, 264, 265, -1, 267, -1, -1, 270, + 271, -1, -1, -1, 275, 276, 277, -1, 279, -1, + 417, 418, 419, 420, 285, -1, -1, 288, -1, -1, + -1, -1, -1, -1, 295, -1, -1, -1, -1, 300, + -1, 302, 303, 304, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 316, -1, 318, 319, -1, + -1, 322, -1, -1, 325, -1, 327, -1, 329, 330, + 331, 332, -1, 334, -1, -1, -1, -1, -1, -1, + 341, -1, -1, 344, 345, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 359, 360, + 361, 362, 363, -1, -1, -1, 367, -1, -1, -1, + 371, -1, -1, -1, -1, -1, 377, 378, 379, 380, + -1, -1, -1, 384, -1, 386, -1, -1, -1, -1, + -1, 392, 393, -1, -1, -1, -1, -1, -1, 264, + 265, -1, 267, -1, -1, 270, 271, -1, -1, -1, + 275, 276, 277, -1, 279, -1, 417, 418, 419, 420, + 285, -1, -1, 288, -1, -1, -1, -1, -1, -1, + 295, -1, -1, -1, -1, 300, -1, 302, 303, 304, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 359, 360, 361, 362, 363, -1, -1, -1, -1, - -1, -1, -1, 371, -1, -1, -1, -1, -1, 377, - 378, 379, 380, -1, -1, -1, 384, -1, 386, -1, - -1, -1, -1, -1, 392, 393, -1, -1, -1, -1, - -1, -1, 264, 265, -1, 267, -1, -1, 270, 271, - -1, -1, -1, 275, 276, 277, -1, 279, -1, 417, - 418, 419, 420, 285, -1, -1, 288, -1, -1, -1, - -1, -1, -1, 295, -1, -1, -1, -1, 300, -1, - 302, 303, 304, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 316, -1, 318, 319, -1, -1, - 322, -1, -1, 325, -1, 327, -1, 329, 330, 331, - 332, -1, 334, -1, -1, -1, -1, -1, -1, 341, - -1, -1, 344, 345, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 359, 360, 361, - 362, 363, -1, -1, -1, -1, -1, -1, -1, 371, - -1, -1, -1, -1, -1, 377, 378, 379, 380, -1, - -1, -1, 384, -1, 386, -1, -1, -1, -1, -1, - 392, 393, -1, -1, -1, -1, -1, -1, 264, 265, - -1, 267, -1, -1, 270, 271, -1, -1, -1, 275, - 276, 277, -1, 279, -1, 417, 418, 419, 420, 285, - -1, -1, 288, -1, -1, -1, -1, -1, -1, 295, - -1, -1, -1, -1, 300, -1, 302, 303, 304, -1, + -1, 316, -1, 318, 319, -1, -1, 322, -1, -1, + 325, -1, 327, -1, 329, 330, 331, 332, -1, 334, + -1, -1, -1, -1, -1, -1, 341, -1, -1, 344, + 345, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 359, 360, 361, 362, 363, -1, + -1, -1, -1, -1, -1, -1, 371, -1, -1, -1, + -1, -1, 377, 378, 379, 380, -1, -1, -1, 384, + -1, 386, -1, -1, -1, -1, -1, 392, 393, -1, + -1, -1, -1, -1, -1, 264, 265, -1, 267, -1, + -1, 270, 271, -1, -1, -1, 275, 276, 277, -1, + 279, -1, 417, 418, 419, 420, 285, -1, -1, 288, + -1, -1, -1, -1, -1, -1, 295, -1, -1, -1, + -1, 300, -1, 302, 303, 304, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 316, -1, 318, + 319, -1, -1, 322, -1, -1, 325, -1, 327, -1, + 329, 330, 331, 332, -1, 334, -1, -1, -1, -1, + -1, -1, 341, -1, -1, 344, 345, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 316, -1, 318, 319, -1, -1, 322, -1, -1, 325, - -1, 327, -1, 329, 330, 331, 332, -1, 334, -1, - -1, -1, -1, -1, -1, 341, -1, -1, 344, 345, + 359, 360, 361, 362, 363, -1, -1, -1, -1, -1, + -1, -1, 371, -1, -1, -1, -1, -1, 377, 378, + 379, 380, -1, -1, -1, 384, -1, 386, -1, -1, + -1, -1, -1, 392, 393, -1, -1, -1, -1, -1, + -1, 264, 265, -1, 267, -1, -1, 270, 271, -1, + -1, -1, 275, 276, 277, -1, 279, -1, 417, 418, + 419, 420, 285, -1, -1, 288, -1, -1, -1, -1, + -1, -1, 295, -1, -1, -1, -1, 300, -1, 302, + 303, 304, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 316, -1, 318, 319, -1, -1, 322, + -1, -1, 325, -1, 327, -1, 329, 330, 331, 332, + -1, 334, -1, -1, -1, -1, -1, -1, 341, -1, + -1, 344, 345, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 359, 360, 361, 362, + 363, -1, -1, -1, -1, -1, -1, -1, 371, -1, + -1, -1, -1, -1, 377, 378, 379, 380, -1, -1, + -1, 384, -1, 386, -1, -1, -1, -1, -1, 392, + 393, -1, -1, -1, -1, -1, -1, 264, 265, -1, + 267, -1, -1, 270, 271, -1, -1, -1, 275, 276, + 277, -1, 279, -1, 417, 418, 419, 420, 285, -1, + -1, 288, -1, -1, -1, -1, -1, -1, 295, -1, + -1, -1, -1, 300, -1, 302, 303, 304, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 316, + -1, 318, 319, -1, -1, 322, -1, -1, 325, -1, + 327, -1, 329, 330, 331, 332, -1, 334, -1, -1, + -1, -1, -1, -1, 341, -1, -1, 344, 345, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 359, 360, 361, 362, 363, -1, -1, - -1, -1, -1, -1, -1, 371, -1, -1, -1, -1, - -1, 377, 378, 379, 380, -1, -1, -1, 384, -1, - 386, -1, -1, -1, -1, -1, 392, 393, -1, -1, - -1, -1, -1, -1, 264, 265, -1, 267, -1, -1, - 270, 271, -1, -1, -1, 275, 276, 277, -1, 279, - -1, 417, 418, 419, 420, 285, -1, -1, 288, -1, - -1, -1, -1, -1, -1, 295, -1, -1, -1, -1, - 300, -1, 302, 303, 304, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 316, -1, 318, 319, - -1, -1, 322, -1, -1, 325, -1, 327, -1, 329, - 330, 331, 332, -1, 334, -1, -1, -1, -1, -1, - -1, 341, -1, -1, 344, 345, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 359, - 360, 361, 362, 363, -1, -1, -1, -1, -1, -1, - -1, 371, -1, -1, -1, -1, -1, 377, 378, 379, - 380, -1, -1, -1, 384, -1, 386, -1, -1, -1, - -1, -1, 392, 393, -1, -1, -1, -1, -1, -1, - 264, 265, -1, 267, -1, -1, 270, 271, -1, -1, - -1, 275, 276, 277, -1, 279, -1, 417, 418, 419, - 420, 285, -1, -1, 288, -1, -1, -1, -1, -1, - -1, 295, -1, -1, -1, -1, 300, -1, 302, 303, - 304, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 316, -1, 318, 319, -1, -1, 322, -1, - -1, 325, -1, 327, -1, 329, 330, 331, 332, -1, - 334, -1, -1, -1, -1, -1, -1, 341, -1, -1, - 344, 345, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 359, 360, 361, 362, 363, - -1, -1, -1, -1, -1, -1, -1, 371, -1, -1, - -1, -1, -1, 377, 378, 379, 380, -1, -1, -1, - 384, -1, 386, -1, -1, -1, -1, -1, 392, 393, - -1, -1, -1, -1, -1, -1, 264, 265, -1, 267, - -1, -1, 270, 271, -1, -1, -1, 275, 276, 277, - -1, 279, -1, 417, 418, 419, 420, 285, -1, -1, - 288, -1, -1, -1, -1, -1, -1, 295, -1, 261, - -1, -1, 300, -1, 302, 303, 304, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 316, -1, - 318, 319, 284, -1, 322, -1, -1, 325, -1, 327, - -1, 329, 330, 331, 332, 297, 334, -1, -1, -1, - 302, -1, -1, -1, -1, 307, -1, 309, 310, 311, - 312, -1, -1, 315, -1, 317, -1, -1, -1, 321, - -1, 359, 360, 361, 362, 363, -1, -1, -1, -1, - -1, 333, -1, 371, 336, -1, 338, -1, -1, 377, - 378, 379, 380, -1, -1, -1, 384, -1, 386, -1, - -1, -1, -1, -1, 392, 393, -1, -1, -1, -1, - 362, -1, -1, -1, -1, -1, 368, 369, -1, -1, - -1, -1, -1, -1, 263, -1, 265, -1, 267, 417, - 418, 270, 420, 272, 273, -1, 275, -1, 277, -1, - 279, -1, 281, 282, 283, -1, -1, -1, 287, 288, - -1, -1, -1, -1, 293, -1, 295, 296, -1, -1, - -1, 300, -1, -1, -1, 304, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 315, 316, -1, 318, - -1, -1, -1, 322, 323, -1, -1, -1, -1, -1, - -1, 330, 331, 264, 265, 334, 267, -1, 337, 270, - 271, -1, -1, 342, 275, 276, 277, -1, 279, -1, - -1, -1, -1, -1, 285, -1, -1, 288, -1, -1, - -1, -1, -1, -1, 295, 364, 365, -1, -1, 300, - -1, 302, 303, 304, -1, -1, -1, -1, 377, -1, + -1, -1, 359, 360, 361, 362, 363, -1, -1, -1, + -1, -1, -1, -1, 371, -1, -1, -1, -1, -1, + 377, 378, 379, 380, -1, -1, -1, 384, -1, 386, + -1, -1, -1, -1, -1, 392, 393, -1, -1, -1, + -1, -1, -1, 264, 265, -1, 267, -1, -1, 270, + 271, -1, -1, -1, 275, 276, 277, -1, 279, -1, + 417, 418, 419, 420, 285, -1, -1, 288, -1, -1, + -1, -1, -1, -1, 295, -1, -1, -1, -1, 300, + -1, 302, 303, 304, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 316, -1, 318, 319, -1, -1, 322, -1, -1, 325, -1, 327, -1, 329, 330, - 331, 332, -1, 334, -1, -1, 337, -1, -1, -1, - -1, -1, -1, 265, -1, 267, -1, -1, 270, 418, - 272, -1, -1, 275, -1, -1, -1, 279, 359, 360, - 361, 362, -1, -1, -1, -1, 288, 265, -1, 267, - 371, -1, 270, 295, 272, 273, -1, 275, 300, 277, - 302, 279, 304, 281, 282, 283, -1, -1, -1, 287, - 288, -1, -1, -1, 316, 293, 318, 295, 296, -1, - 322, 323, 300, -1, -1, -1, 304, -1, 330, 331, - -1, -1, 334, -1, -1, 337, 417, 418, 316, -1, - 318, -1, -1, -1, 322, 323, -1, -1, -1, -1, - -1, -1, 330, 331, -1, 265, 334, 267, -1, 337, - 270, -1, -1, 273, 342, 275, -1, 277, -1, 279, - -1, 281, 282, 283, -1, -1, -1, 287, 288, -1, - -1, -1, -1, 293, -1, 295, -1, -1, -1, -1, - 300, -1, -1, -1, 304, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 316, -1, 318, -1, - -1, -1, 322, -1, -1, -1, 418, -1, -1, -1, - 330, 331, -1, -1, 334, -1, -1, 337, -1, 265, - -1, 267, 342, -1, 270, -1, -1, 273, -1, 275, - 418, 277, -1, 279, -1, 281, 282, 283, -1, -1, + 331, 332, -1, 334, -1, -1, -1, -1, -1, -1, + 341, -1, -1, 344, 345, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 359, 360, + 361, 362, 363, -1, -1, -1, -1, -1, -1, -1, + 371, -1, -1, -1, -1, -1, 377, 378, 379, 380, + -1, -1, -1, 384, -1, 386, -1, -1, -1, -1, + -1, 392, 393, -1, -1, -1, -1, -1, -1, 264, + 265, -1, 267, -1, -1, 270, 271, -1, -1, -1, + 275, 276, 277, -1, 279, -1, 417, 418, 419, 420, + 285, -1, -1, 288, -1, -1, -1, -1, -1, -1, + 295, -1, 261, -1, -1, 300, -1, 302, 303, 304, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 316, -1, 318, 319, 284, -1, 322, -1, -1, + 325, -1, 327, -1, 329, 330, 331, 332, 297, 334, + -1, -1, -1, 302, -1, -1, -1, -1, 307, -1, + 309, 310, 311, 312, -1, -1, 315, -1, 317, -1, + -1, -1, 321, -1, 359, 360, 361, 362, 363, -1, + -1, -1, -1, -1, 333, -1, 371, 336, -1, 338, + -1, -1, 377, 378, 379, 380, -1, -1, -1, 384, + -1, 386, -1, -1, -1, -1, -1, 392, 393, -1, + -1, -1, -1, 362, -1, -1, -1, -1, -1, 368, + 369, -1, -1, -1, -1, -1, -1, 263, -1, 265, + -1, 267, 417, 418, 270, 420, 272, 273, -1, 275, + -1, 277, -1, 279, -1, 281, 282, 283, -1, -1, -1, 287, 288, -1, -1, -1, -1, 293, -1, 295, - -1, 265, -1, 267, 300, -1, 270, 377, 304, -1, - -1, 275, -1, -1, -1, 279, -1, -1, -1, -1, - 316, -1, 318, -1, 288, -1, 322, -1, -1, -1, - -1, 295, -1, -1, 330, 331, 300, -1, 334, -1, - 304, 337, 306, -1, 308, 265, 342, 267, 418, 313, - 270, -1, 316, -1, 318, 275, -1, -1, 322, 279, - -1, 325, -1, -1, -1, -1, 330, 331, 288, -1, - 334, -1, -1, 337, -1, 295, -1, 265, -1, 267, - 300, -1, 270, -1, 304, -1, 306, 275, 308, -1, - -1, 279, -1, 313, -1, -1, 316, -1, 318, -1, - 288, -1, 322, -1, -1, 325, -1, 295, 372, -1, - 330, 331, 300, -1, 334, -1, 304, 337, 306, -1, - 308, 265, 418, 267, -1, 313, 270, -1, 316, -1, - 318, 275, -1, -1, 322, 279, -1, 325, -1, -1, - -1, -1, 330, 331, 288, -1, 334, -1, -1, 337, - 370, 295, -1, 265, 418, 267, 300, -1, 270, -1, - 304, -1, 306, 275, -1, -1, -1, 279, -1, 313, - -1, -1, 316, -1, 318, -1, 288, -1, 322, -1, - -1, 325, -1, 295, 285, -1, 330, 331, 300, -1, - 334, -1, 304, 337, -1, -1, -1, 265, 418, 267, - -1, -1, 270, -1, 316, -1, 318, 275, -1, -1, - 322, 279, -1, -1, -1, -1, -1, -1, 330, 331, - 288, -1, 334, -1, -1, 337, 327, 295, -1, -1, - 418, -1, 300, -1, -1, -1, 304, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 316, -1, - 318, 363, -1, -1, 322, -1, -1, -1, -1, -1, - -1, -1, 330, 331, -1, -1, 334, -1, -1, 337, - -1, -1, -1, -1, 418, -1, 377, 378, 379, 380, - -1, 382, 383, 384, 385, 386, 387, 388, 389, 261, - -1, 392, 393, 394, 395, 396, 397, 398, 399, -1, - 272, -1, -1, -1, -1, 277, 418, -1, -1, 281, + 296, -1, -1, -1, 300, -1, -1, -1, 304, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 315, + 316, -1, 318, -1, -1, -1, 322, 323, -1, -1, + -1, -1, -1, -1, 330, 331, 264, 265, 334, 267, + -1, 337, 270, 271, -1, -1, 342, 275, 276, 277, + -1, 279, -1, -1, -1, -1, -1, 285, -1, -1, + 288, -1, -1, -1, -1, -1, -1, 295, 364, 365, + -1, -1, 300, -1, 302, 303, 304, -1, -1, -1, + -1, 377, -1, -1, -1, -1, -1, -1, 316, -1, + 318, 319, -1, -1, 322, -1, -1, 325, -1, 327, + -1, 329, 330, 331, 332, -1, 334, -1, -1, 337, + -1, -1, -1, -1, -1, -1, 265, -1, 267, -1, + -1, 270, 418, 272, -1, -1, 275, -1, -1, -1, + 279, 359, 360, 361, 362, -1, -1, -1, -1, 288, + 265, -1, 267, 371, -1, 270, 295, 272, 273, -1, + 275, 300, 277, 302, 279, 304, 281, 282, 283, -1, + -1, -1, 287, 288, -1, -1, -1, 316, 293, 318, + 295, 296, -1, 322, 323, 300, -1, -1, -1, 304, + -1, 330, 331, -1, -1, 334, -1, -1, 337, 417, + 418, 316, -1, 318, -1, -1, -1, 322, 323, -1, + -1, -1, -1, -1, -1, 330, 331, -1, 265, 334, + 267, -1, 337, 270, -1, 272, 273, 342, 275, -1, + 277, -1, 279, -1, 281, 282, 283, -1, -1, -1, + 287, 288, -1, -1, -1, -1, 293, -1, 295, 296, + -1, -1, -1, 300, -1, -1, -1, 304, -1, -1, + -1, -1, 377, -1, -1, -1, -1, -1, -1, 316, + -1, 318, -1, -1, -1, 322, 323, -1, -1, 418, + -1, -1, -1, 330, 331, -1, -1, 334, -1, -1, + 337, -1, 265, -1, 267, 342, -1, 270, -1, -1, + 273, -1, 275, 418, 277, -1, 279, -1, 281, 282, + 283, -1, -1, -1, 287, 288, -1, -1, -1, -1, + 293, -1, 295, -1, 265, -1, 267, 300, -1, 270, + -1, 304, 273, -1, 275, -1, 277, -1, 279, -1, + 281, 282, 283, 316, -1, 318, 287, 288, -1, 322, + -1, -1, 293, -1, 295, -1, -1, 330, 331, 300, + -1, 334, -1, 304, 337, -1, -1, -1, 265, 342, + 267, 418, -1, 270, -1, 316, -1, 318, 275, -1, + -1, 322, 279, -1, -1, -1, -1, -1, -1, 330, + 331, 288, -1, 334, -1, -1, 337, -1, 295, -1, + 265, 342, 267, 300, 377, 270, -1, 304, -1, 306, + 275, 308, -1, -1, 279, -1, 313, -1, -1, 316, + -1, 318, -1, 288, -1, 322, -1, -1, 325, -1, + 295, -1, -1, 330, 331, 300, -1, 334, -1, 304, + 337, 306, -1, 308, 265, 418, 267, -1, 313, 270, + -1, 316, -1, 318, 275, -1, -1, 322, 279, -1, + 325, -1, -1, -1, -1, 330, 331, 288, -1, 334, + -1, -1, 337, -1, 295, 372, 265, 418, 267, 300, + -1, 270, -1, 304, -1, 306, 275, 308, -1, -1, + 279, -1, 313, -1, -1, 316, -1, 318, -1, 288, + -1, 322, -1, -1, 325, 370, 295, -1, -1, 330, + 331, 300, -1, 334, -1, 304, 337, 306, -1, -1, + -1, 418, -1, -1, 313, -1, -1, 316, -1, 318, + -1, -1, -1, 322, -1, -1, 325, -1, -1, -1, + -1, 330, 331, -1, -1, 334, -1, 265, 337, 267, + -1, -1, 270, 418, -1, -1, -1, 275, -1, -1, + -1, 279, -1, -1, -1, 283, 265, -1, 267, -1, + 288, 270, -1, -1, -1, 293, 275, 295, -1, -1, + 279, -1, 300, -1, -1, -1, 304, 305, -1, 288, + -1, -1, -1, -1, -1, -1, 295, 418, 316, -1, + 318, 300, -1, -1, 322, 304, -1, -1, -1, -1, + -1, -1, 330, 331, -1, -1, 334, 316, -1, 318, + 265, -1, 267, 322, -1, 270, -1, -1, -1, 418, + 275, 330, 331, -1, 279, 334, -1, -1, 337, -1, + -1, -1, -1, 288, -1, -1, -1, -1, -1, -1, + 295, -1, -1, -1, -1, 300, -1, -1, 261, 304, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 272, + -1, 316, -1, 318, 277, -1, -1, 322, 281, -1, + -1, 284, -1, -1, -1, 330, 331, -1, -1, 334, + -1, -1, 337, 296, 297, -1, -1, -1, 301, 302, + 418, -1, -1, -1, 307, -1, 309, 310, 311, 312, + -1, -1, -1, -1, 317, -1, -1, -1, 321, 418, + 323, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 333, -1, 335, 336, 261, 338, -1, -1, -1, 342, + -1, -1, -1, -1, -1, 272, -1, -1, -1, -1, + 277, -1, -1, -1, 281, -1, -1, 284, -1, 362, + -1, -1, -1, -1, -1, 368, 369, -1, -1, 296, + 297, -1, -1, 418, 301, 302, 261, -1, 263, -1, + 307, -1, 309, 310, 311, 312, -1, -1, -1, -1, + 317, -1, -1, -1, 321, -1, 323, -1, -1, 284, + -1, -1, -1, -1, -1, -1, 333, -1, -1, 336, + -1, 338, 297, -1, -1, 342, -1, 302, -1, -1, + -1, -1, 307, -1, 309, 310, 311, 312, -1, -1, + -1, -1, 317, -1, -1, 362, 321, -1, -1, 261, + -1, 368, 369, -1, -1, -1, -1, -1, 333, -1, + 272, 336, -1, 338, -1, 277, -1, -1, -1, 281, -1, -1, 284, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 296, 297, -1, -1, -1, 301, - 302, -1, 261, -1, -1, 307, -1, 309, 310, 311, + -1, -1, -1, -1, 296, 297, -1, 362, -1, 301, + 302, -1, 261, 368, 369, 307, -1, 309, 310, 311, 312, -1, -1, 272, -1, 317, -1, -1, 277, 321, - 418, 323, 281, -1, -1, 284, -1, -1, -1, -1, - -1, 333, -1, 335, 336, -1, 338, 296, 297, -1, - 342, -1, 301, 302, -1, 261, -1, 263, 307, -1, + -1, 323, 281, -1, -1, 284, -1, -1, -1, -1, + -1, 333, -1, -1, 336, -1, 338, 296, 297, -1, + 342, -1, 301, 302, 261, -1, -1, -1, 307, -1, 309, 310, 311, 312, -1, -1, -1, -1, 317, -1, - 362, -1, 321, -1, 323, -1, 368, 369, 284, -1, + 362, -1, 321, -1, 323, -1, 368, 284, -1, -1, -1, -1, -1, -1, 333, -1, -1, 336, -1, 338, - -1, 297, -1, 342, -1, -1, 302, -1, 261, -1, - -1, 307, -1, 309, 310, 311, 312, -1, -1, 272, - -1, 317, -1, 362, 277, 321, -1, -1, 281, 368, - 369, 284, -1, -1, -1, -1, -1, 333, -1, -1, - 336, -1, 338, 296, 297, -1, -1, -1, 301, 302, - -1, 261, -1, -1, 307, -1, 309, 310, 311, 312, - -1, -1, 272, -1, 317, -1, 362, 277, 321, -1, - 323, 281, 368, 369, 284, -1, -1, -1, -1, -1, - 333, -1, -1, 336, -1, 338, 296, 297, -1, 342, - -1, 301, 302, 261, -1, -1, -1, 307, -1, 309, - 310, 311, 312, -1, -1, -1, -1, 317, -1, 362, - -1, 321, -1, 323, -1, 368, 284, -1, -1, -1, - -1, -1, -1, 333, -1, -1, 336, -1, 338, 297, - -1, 261, 342, -1, 302, -1, -1, -1, -1, 307, - -1, 309, 310, 311, 312, -1, -1, -1, -1, 317, - -1, -1, 362, 321, 284, -1, -1, -1, 368, -1, - -1, -1, -1, -1, -1, 333, -1, 297, 336, 261, - 338, -1, 302, -1, -1, -1, -1, 307, -1, 309, - 310, 311, 312, -1, -1, -1, -1, 317, -1, -1, - -1, 321, 284, -1, 362, -1, 364, 365, -1, -1, - 368, -1, -1, 333, -1, 297, 336, 261, 338, 263, - 302, -1, -1, -1, -1, 307, -1, 309, 310, 311, - 312, -1, -1, 315, -1, 317, -1, -1, -1, 321, - 284, -1, 362, -1, 364, 365, -1, -1, 368, -1, - -1, 333, -1, 297, 336, 261, 338, -1, 302, -1, - -1, -1, -1, 307, -1, 309, 310, 311, 312, -1, - -1, -1, -1, 317, -1, -1, -1, 321, 284, -1, - 362, -1, -1, -1, -1, 261, 368, 263, -1, 333, - -1, 297, 336, -1, 338, -1, 302, -1, -1, -1, - -1, 307, -1, 309, 310, 311, 312, -1, 284, -1, - -1, 317, -1, -1, -1, 321, -1, -1, 362, -1, - -1, 297, -1, -1, 368, 261, 302, 333, -1, -1, - 336, 307, 338, 309, 310, 311, 312, -1, -1, 315, - -1, 317, -1, -1, -1, 321, -1, -1, 284, -1, - -1, -1, -1, -1, -1, -1, 362, 333, 364, 365, - 336, 297, 338, -1, -1, -1, 302, -1, -1, -1, - -1, 307, -1, 309, 310, 311, 312, -1, -1, -1, - -1, 317, -1, -1, -1, 321, 362, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 333, -1, -1, - 336, -1, 338, -1, -1, -1, -1, -1, -1, -1, + 297, -1, 261, 342, -1, 302, -1, -1, -1, -1, + 307, -1, 309, 310, 311, 312, -1, -1, -1, -1, + 317, -1, -1, 362, 321, 284, -1, -1, -1, 368, + -1, -1, -1, -1, -1, -1, 333, -1, 297, 336, + 261, 338, -1, 302, -1, -1, -1, -1, 307, -1, + 309, 310, 311, 312, -1, -1, -1, -1, 317, -1, + -1, -1, 321, 284, -1, 362, -1, 364, 365, -1, + -1, 368, -1, -1, 333, -1, 297, 336, 261, 338, + 263, 302, -1, -1, -1, -1, 307, -1, 309, 310, + 311, 312, -1, -1, 315, -1, 317, -1, -1, -1, + 321, 284, -1, 362, -1, 364, 365, -1, -1, 368, + -1, -1, 333, -1, 297, 336, 261, 338, -1, 302, + -1, -1, -1, -1, 307, -1, 309, 310, 311, 312, + -1, -1, -1, -1, 317, -1, -1, -1, 321, 284, + -1, 362, -1, -1, -1, -1, 261, 368, 263, -1, + 333, -1, 297, 336, -1, 338, -1, 302, -1, -1, + -1, -1, 307, -1, 309, 310, 311, 312, -1, 284, + -1, -1, 317, -1, -1, -1, 321, -1, -1, 362, + -1, -1, 297, -1, -1, 368, 261, 302, 333, -1, + -1, 336, 307, 338, 309, 310, 311, 312, -1, -1, + 315, -1, 317, -1, -1, -1, 321, -1, -1, 284, + -1, -1, -1, -1, -1, -1, 261, 362, 333, 364, + 365, 336, 297, 338, -1, -1, 301, 302, -1, -1, + -1, -1, 307, -1, 309, 310, 311, 312, -1, 284, + -1, -1, 317, -1, -1, -1, 321, 362, -1, -1, + -1, -1, 297, -1, -1, -1, -1, 302, 333, -1, + -1, 336, 307, 338, 309, 310, 311, 312, -1, -1, + -1, -1, 317, -1, -1, -1, 321, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 362, 333, -1, + -1, 336, -1, 338, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 362, + -1, -1, -1, -1, -1, -1, -1, 362, }; -#line 6388 "cs-parser.jay" +#line 6399 "cs-parser.jay" // <summary> // A class used to hold info about an operator declarator diff --git a/main/contrib/ICSharpCode.NRefactory.CSharp/Parser/mcs/cs-tokenizer.cs b/main/contrib/ICSharpCode.NRefactory.CSharp/Parser/mcs/cs-tokenizer.cs index 637df0da14..b6a6f3eb0e 100644 --- a/main/contrib/ICSharpCode.NRefactory.CSharp/Parser/mcs/cs-tokenizer.cs +++ b/main/contrib/ICSharpCode.NRefactory.CSharp/Parser/mcs/cs-tokenizer.cs @@ -424,10 +424,6 @@ namespace Mono.CSharp else tab_size = 8; - // - // FIXME: This could be `Location.Push' but we have to - // find out why the MS compiler allows this - // Mono.CSharp.Location.Push (file, file); } diff --git a/main/contrib/ICSharpCode.NRefactory.CSharp/Parser/mcs/decl.cs b/main/contrib/ICSharpCode.NRefactory.CSharp/Parser/mcs/decl.cs index a0fb584059..69b5e04302 100644 --- a/main/contrib/ICSharpCode.NRefactory.CSharp/Parser/mcs/decl.cs +++ b/main/contrib/ICSharpCode.NRefactory.CSharp/Parser/mcs/decl.cs @@ -8,6 +8,7 @@ // // Copyright 2001 Ximian, Inc (http://www.ximian.com) // Copyright 2004-2008 Novell, Inc +// Copyright 2011 Xamarin Inc // // @@ -1346,7 +1347,7 @@ namespace Mono.CSharp { } else { Report.Error (102, symbol.Location, "The type `{0}' already contains a definition for `{1}'", - GetSignatureForError (), symbol.MemberName.Name); + GetSignatureForError (), name); } return false; diff --git a/main/contrib/ICSharpCode.NRefactory.CSharp/Parser/mcs/delegate.cs b/main/contrib/ICSharpCode.NRefactory.CSharp/Parser/mcs/delegate.cs index cc381846ff..b7efb87219 100644 --- a/main/contrib/ICSharpCode.NRefactory.CSharp/Parser/mcs/delegate.cs +++ b/main/contrib/ICSharpCode.NRefactory.CSharp/Parser/mcs/delegate.cs @@ -10,6 +10,7 @@ // // Copyright 2001 Ximian, Inc (http://www.ximian.com) // Copyright 2003-2009 Novell, Inc (http://www.novell.com) +// Copyright 2011 Xamarin Inc // using System; @@ -176,20 +177,21 @@ namespace Mono.CSharp { TypeManager.CheckTypeVariance (ret_type, Variance.Covariant, this); - InvokeBuilder = new Method (this, null, ReturnType, MethodModifiers, new MemberName (InvokeMethodName), p, null); + var resolved_rt = new TypeExpression (ret_type, Location); + InvokeBuilder = new Method (this, null, resolved_rt, MethodModifiers, new MemberName (InvokeMethodName), p, null); InvokeBuilder.Define (); // // Don't emit async method for compiler generated delegates (e.g. dynamic site containers) // if (!IsCompilerGenerated) { - DefineAsyncMethods (Parameters.CallingConvention); + DefineAsyncMethods (Parameters.CallingConvention, resolved_rt); } return true; } - void DefineAsyncMethods (CallingConventions cc) + void DefineAsyncMethods (CallingConventions cc, TypeExpression returnType) { var iasync_result = Module.PredefinedTypes.IAsyncResult; var async_callback = Module.PredefinedTypes.AsyncCallback; @@ -280,7 +282,7 @@ namespace Mono.CSharp { // // Create method, define parameters, register parameters with type system // - EndInvokeBuilder = new Method (this, null, ReturnType, MethodModifiers, new MemberName ("EndInvoke"), end_parameters, null); + EndInvokeBuilder = new Method (this, null, returnType, MethodModifiers, new MemberName ("EndInvoke"), end_parameters, null); EndInvokeBuilder.Define (); } diff --git a/main/contrib/ICSharpCode.NRefactory.CSharp/Parser/mcs/doc.cs b/main/contrib/ICSharpCode.NRefactory.CSharp/Parser/mcs/doc.cs index 769154d691..59f67f0dbe 100644 --- a/main/contrib/ICSharpCode.NRefactory.CSharp/Parser/mcs/doc.cs +++ b/main/contrib/ICSharpCode.NRefactory.CSharp/Parser/mcs/doc.cs @@ -8,6 +8,7 @@ // Dual licensed under the terms of the MIT X11 or GNU GPL // // Copyright 2004 Novell, Inc. +// Copyright 2011 Xamarin Inc // // diff --git a/main/contrib/ICSharpCode.NRefactory.CSharp/Parser/mcs/driver.cs b/main/contrib/ICSharpCode.NRefactory.CSharp/Parser/mcs/driver.cs index 27cae0d85c..e1566ce62b 100644 --- a/main/contrib/ICSharpCode.NRefactory.CSharp/Parser/mcs/driver.cs +++ b/main/contrib/ICSharpCode.NRefactory.CSharp/Parser/mcs/driver.cs @@ -9,6 +9,7 @@ // // Copyright 2001, 2002, 2003 Ximian, Inc (http://www.ximian.com) // Copyright 2004, 2005, 2006, 2007, 2008 Novell, Inc +// Copyright 2011 Xamarin Inc // using System; diff --git a/main/contrib/ICSharpCode.NRefactory.CSharp/Parser/mcs/ecore.cs b/main/contrib/ICSharpCode.NRefactory.CSharp/Parser/mcs/ecore.cs index 27762336ca..410dd4da0b 100644 --- a/main/contrib/ICSharpCode.NRefactory.CSharp/Parser/mcs/ecore.cs +++ b/main/contrib/ICSharpCode.NRefactory.CSharp/Parser/mcs/ecore.cs @@ -316,9 +316,20 @@ namespace Mono.CSharp { TypeManager.CSharpName (type), name); } - protected static void Error_ValueAssignment (ResolveContext ec, Location loc) + public void Error_ValueAssignment (ResolveContext rc, Expression rhs) { - ec.Report.Error (131, loc, "The left-hand side of an assignment must be a variable, a property or an indexer"); + if (rhs == EmptyExpression.LValueMemberAccess || rhs == EmptyExpression.LValueMemberOutAccess) { + rc.Report.SymbolRelatedToPreviousError (type); + if (rc.CurrentInitializerVariable != null) { + rc.Report.Error (1918, loc, "Members of value type `{0}' cannot be assigned using a property `{1}' object initializer", + type.GetSignatureForError (), GetSignatureForError ()); + } else { + rc.Report.Error (1612, loc, "Cannot modify a value type return value of `{0}'. Consider storing the value in a temporary variable", + GetSignatureForError ()); + } + } else { + rc.Report.Error (131, loc, "The left-hand side of an assignment must be a variable, a property or an indexer"); + } } protected void Error_VoidPointerOperation (ResolveContext rc) @@ -391,7 +402,7 @@ namespace Mono.CSharp { throw; ec.Report.Error (584, loc, "Internal compiler error: {0}", ex.Message); - return EmptyExpression.Null; // TODO: Add location + return ErrorExpression.Instance; // TODO: Add location } } @@ -432,7 +443,7 @@ namespace Mono.CSharp { if (out_access) ec.Report.Error (1510, loc, "A ref or out argument must be an assignable variable"); else - Error_ValueAssignment (ec, loc); + Error_ValueAssignment (ec, right_side); } return null; } @@ -629,15 +640,11 @@ namespace Mono.CSharp { } var r = new OverloadResolver (ctors, OverloadResolver.Restrictions.NoBaseMembers, loc); - var ctor = r.ResolveMember<MethodSpec> (rc, ref args); - if (ctor == null) - return null; - - if ((ctor.Modifiers & Modifiers.PROTECTED) != 0 && !rc.HasSet (ResolveContext.Options.BaseInitializer)) { - MemberExpr.CheckProtectedMemberAccess (rc, ctor, ctor.DeclaringType, loc); + if (!rc.HasSet (ResolveContext.Options.BaseInitializer)) { + r.InstanceQualifier = new ConstructorInstanceQualifier (type); } - return ctor; + return r.ResolveMember<MethodSpec> (rc, ref args); } [Flags] @@ -884,18 +891,6 @@ namespace Mono.CSharp { Report.Error (214, loc, "Pointers and fixed size buffers may only be used in an unsafe context"); } - protected void Error_CannotModifyIntermediateExpressionValue (ResolveContext ec) - { - ec.Report.SymbolRelatedToPreviousError (type); - if (ec.CurrentInitializerVariable != null) { - ec.Report.Error (1918, loc, "Members of value type `{0}' cannot be assigned using a property `{1}' object initializer", - TypeManager.CSharpName (type), GetSignatureForError ()); - } else { - ec.Report.Error (1612, loc, "Cannot modify a value type return value of `{0}'. Consider storing the value in a temporary variable", - GetSignatureForError ()); - } - } - // // Converts `source' to an int, uint, long or ulong. // @@ -2676,7 +2671,7 @@ namespace Mono.CSharp { /// This class denotes an expression which evaluates to a member /// of a struct or a class. /// </summary> - public abstract class MemberExpr : Expression + public abstract class MemberExpr : Expression, OverloadResolver.IInstanceQualifier { // // An instance expression associated with this member, if it's a @@ -2716,6 +2711,12 @@ namespace Mono.CSharp { get; } + TypeSpec OverloadResolver.IInstanceQualifier.InstanceType { + get { + return InstanceExpression.Type; + } + } + // // Converts best base candidate for virtual method starting from QueriedBaseType // @@ -2780,32 +2781,41 @@ namespace Mono.CSharp { return method; } - protected void CheckProtectedMemberAccess<T> (ResolveContext rc, T member) where T : MemberSpec + protected void CheckProtectedMemberAccess (ResolveContext rc, MemberSpec member) { if (InstanceExpression == null) return; if ((member.Modifiers & Modifiers.PROTECTED) != 0 && !(InstanceExpression is This)) { - CheckProtectedMemberAccess (rc, member, InstanceExpression.Type, loc); + if (!CheckProtectedMemberAccess (rc, member, InstanceExpression.Type)) { + Error_ProtectedMemberAccess (rc, member, InstanceExpression.Type, loc); + } } } - public static void CheckProtectedMemberAccess<T> (ResolveContext rc, T member, TypeSpec qualifier, Location loc) where T : MemberSpec + bool OverloadResolver.IInstanceQualifier.CheckProtectedMemberAccess (ResolveContext rc, MemberSpec member) + { + if (InstanceExpression == null) + return true; + + return InstanceExpression is This || CheckProtectedMemberAccess (rc, member, InstanceExpression.Type); + } + + public static bool CheckProtectedMemberAccess<T> (ResolveContext rc, T member, TypeSpec qualifier) where T : MemberSpec { var ct = rc.CurrentType; if (ct == qualifier) - return; + return true; if ((member.Modifiers & Modifiers.INTERNAL) != 0 && member.DeclaringType.MemberDefinition.IsInternalAsPublic (ct.MemberDefinition.DeclaringAssembly)) - return; + return true; qualifier = qualifier.GetDefinition (); if (ct != qualifier && !IsSameOrBaseQualifier (ct, qualifier)) { - rc.Report.SymbolRelatedToPreviousError (member); - rc.Report.Error (1540, loc, - "Cannot access protected member `{0}' via a qualifier of type `{1}'. The qualifier must be of type `{2}' or derived from it", - member.GetSignatureForError (), qualifier.GetSignatureForError (), ct.GetSignatureForError ()); + return false; } + + return true; } public override bool ContainsEmitWithAwait () @@ -2858,6 +2868,14 @@ namespace Mono.CSharp { rc.Report.Error (205, loc, "Cannot call an abstract base member `{0}'", name); } + public static void Error_ProtectedMemberAccess (ResolveContext rc, MemberSpec member, TypeSpec qualifier, Location loc) + { + rc.Report.SymbolRelatedToPreviousError (member); + rc.Report.Error (1540, loc, + "Cannot access protected member `{0}' via a qualifier of type `{1}'. The qualifier must be of type `{2}' or derived from it", + member.GetSignatureForError (), qualifier.GetSignatureForError (), rc.CurrentType.GetSignatureForError ()); + } + // // Implements identicial simple name and type-name // @@ -2919,6 +2937,7 @@ namespace Mono.CSharp { "An object reference is required to access non-static member `{0}'", GetSignatureForError ()); + InstanceExpression = new CompilerGeneratedThis (type, loc).Resolve (rc); return false; } @@ -2968,9 +2987,6 @@ namespace Mono.CSharp { // Additional checks for l-value member access // if (rhs != null) { - // - // TODO: It should be recursive but that would break csc compatibility - // if (InstanceExpression is UnboxCast) { rc.Report.Error (445, InstanceExpression.Location, "Cannot modify the result of an unboxing conversion"); } @@ -3378,6 +3394,7 @@ namespace Mono.CSharp { var r = new OverloadResolver (Methods, type_arguments, restr, loc); if ((restr & OverloadResolver.Restrictions.NoBaseMembers) == 0) { r.BaseMembersProvider = this; + r.InstanceQualifier = this; } if (cerrors != null) @@ -3406,8 +3423,6 @@ namespace Mono.CSharp { } ResolveInstanceExpression (ec, null); - if (InstanceExpression != null) - CheckProtectedMemberAccess (ec, best_candidate); } var base_override = CandidateToBaseOverride (ec, best_candidate); @@ -3473,6 +3488,22 @@ namespace Mono.CSharp { #endregion } + struct ConstructorInstanceQualifier : OverloadResolver.IInstanceQualifier + { + public ConstructorInstanceQualifier (TypeSpec type) + : this () + { + InstanceType = type; + } + + public TypeSpec InstanceType { get; private set; } + + public bool CheckProtectedMemberAccess (ResolveContext rc, MemberSpec member) + { + return MemberExpr.CheckProtectedMemberAccess (rc, member, InstanceType); + } + } + public struct OverloadResolver { [Flags] @@ -3501,6 +3532,12 @@ namespace Mono.CSharp { bool TypeInferenceFailed (ResolveContext rc, MemberSpec best); } + public interface IInstanceQualifier + { + TypeSpec InstanceType { get; } + bool CheckProtectedMemberAccess (ResolveContext rc, MemberSpec member); + } + sealed class NoBaseMembers : IBaseMembersProvider { public static readonly IBaseMembersProvider Instance = new NoBaseMembers (); @@ -3540,6 +3577,7 @@ namespace Mono.CSharp { TypeArguments type_arguments; IBaseMembersProvider base_provider; IErrorHandler custom_errors; + IInstanceQualifier instance_qualifier; Restrictions restrictions; MethodGroupExpr best_candidate_extension_group; TypeSpec best_candidate_return_type; @@ -3617,6 +3655,15 @@ namespace Mono.CSharp { } } + public IInstanceQualifier InstanceQualifier { + get { + return instance_qualifier; + } + set { + instance_qualifier = value; + } + } + bool IsProbingOnly { get { return (restrictions & Restrictions.ProbingOnly) != 0; @@ -4446,6 +4493,11 @@ namespace Mono.CSharp { if (rc.IsRuntimeBinder && !member.DeclaringType.IsAccessible (rc)) continue; + + if ((member.Modifiers & (Modifiers.PROTECTED | Modifiers.STATIC)) == Modifiers.PROTECTED && + instance_qualifier != null && !instance_qualifier.CheckProtectedMemberAccess (rc, member)) { + continue; + } } IParametersMember pm = member as IParametersMember; @@ -4585,6 +4637,9 @@ namespace Mono.CSharp { if (error_mode) break; + if (lambda_conv_msgs != null && !lambda_conv_msgs.IsEmpty) + break; + lambda_conv_msgs = null; error_mode = true; } @@ -4747,6 +4802,12 @@ namespace Mono.CSharp { return; } + + if ((best_candidate.Modifiers & (Modifiers.PROTECTED | Modifiers.STATIC)) == Modifiers.PROTECTED && + InstanceQualifier != null && !InstanceQualifier.CheckProtectedMemberAccess (rc, best_candidate)) { + MemberExpr.Error_ProtectedMemberAccess (rc, best_candidate, InstanceQualifier.InstanceType, loc); + } + // // For candidates which match on parameters count report more details about incorrect arguments // @@ -5617,8 +5678,9 @@ namespace Mono.CSharp { return CreateExpressionFactoryCall (ec, "Property", args); } - public Expression CreateSetterTypeOfExpression () + public Expression CreateSetterTypeOfExpression (ResolveContext rc) { + DoResolveLValue (rc, null); return new TypeOfMethod (Setter, loc); } @@ -5838,7 +5900,7 @@ namespace Mono.CSharp { // if the property/indexer returns a value type, and we try to set a field in it if (right_side == EmptyExpression.LValueMemberAccess || right_side == EmptyExpression.LValueMemberOutAccess) { - Error_CannotModifyIntermediateExpressionValue (ec); + Error_ValueAssignment (ec, right_side); } if (eclass == ExprClass.Unresolved) { diff --git a/main/contrib/ICSharpCode.NRefactory.CSharp/Parser/mcs/enum.cs b/main/contrib/ICSharpCode.NRefactory.CSharp/Parser/mcs/enum.cs index fef5af717b..d84a828337 100644 --- a/main/contrib/ICSharpCode.NRefactory.CSharp/Parser/mcs/enum.cs +++ b/main/contrib/ICSharpCode.NRefactory.CSharp/Parser/mcs/enum.cs @@ -9,6 +9,7 @@ // // Copyright 2001 Ximian, Inc (http://www.ximian.com) // Copyright 2003-2003 Novell, Inc (http://www.novell.com) +// Copyright 2011 Xamarin Inc // using System; diff --git a/main/contrib/ICSharpCode.NRefactory.CSharp/Parser/mcs/eval.cs b/main/contrib/ICSharpCode.NRefactory.CSharp/Parser/mcs/eval.cs index 0e3bd71468..c996bc5e2a 100644 --- a/main/contrib/ICSharpCode.NRefactory.CSharp/Parser/mcs/eval.cs +++ b/main/contrib/ICSharpCode.NRefactory.CSharp/Parser/mcs/eval.cs @@ -9,6 +9,7 @@ // // Copyright 2001, 2002, 2003 Ximian, Inc (http://www.ximian.com) // Copyright 2004-2011 Novell, Inc +// Copyright 2011 Xamarin Inc // using System; diff --git a/main/contrib/ICSharpCode.NRefactory.CSharp/Parser/mcs/expression.cs b/main/contrib/ICSharpCode.NRefactory.CSharp/Parser/mcs/expression.cs index 09f18194e0..92c02c0291 100644 --- a/main/contrib/ICSharpCode.NRefactory.CSharp/Parser/mcs/expression.cs +++ b/main/contrib/ICSharpCode.NRefactory.CSharp/Parser/mcs/expression.cs @@ -5422,6 +5422,11 @@ namespace Mono.CSharp return list.ArgumentTypes; } + public override string GetSignatureForError () + { + return mg.GetSignatureForError (); + } + // // If a member is a method or event, or if it is a constant, field or property of either a delegate type // or the type dynamic, then the member is invocable @@ -5653,7 +5658,7 @@ namespace Mono.CSharp // Check whether the type of type parameter can be constructed. BaseType can be a struct for method overrides // where type parameter constraint is inflated to struct // - if ((tparam.SpecialConstraint & (SpecialConstraint.Struct | SpecialConstraint.Constructor)) == 0 && !tparam.BaseType.IsStruct) { + if ((tparam.SpecialConstraint & (SpecialConstraint.Struct | SpecialConstraint.Constructor)) == 0 && !TypeSpec.IsValueType (tparam)) { ec.Report.Error (304, loc, "Cannot create an instance of the variable type `{0}' because it does not have the new() constraint", TypeManager.CSharpName (type)); @@ -6783,7 +6788,8 @@ namespace Mono.CSharp array_element_type = best_type_inference.InferredTypeArguments[0]; best_type_inference = null; - if (array_element_type == null || array_element_type == InternalType.MethodGroup || array_element_type == InternalType.AnonymousMethod || + if (array_element_type == null || + array_element_type == InternalType.NullLiteral || array_element_type == InternalType.MethodGroup || array_element_type == InternalType.AnonymousMethod || arguments.Count != rank.Dimension) { ec.Report.Error (826, loc, "The type of an implicitly typed array cannot be inferred from the initializer. Try specifying array type explicitly"); @@ -8420,7 +8426,7 @@ namespace Mono.CSharp return res.Resolve (ec); } - public override Expression DoResolveLValue (ResolveContext ec, Expression right_side) + public override Expression DoResolveLValue (ResolveContext ec, Expression rhs) { Expr = Expr.Resolve (ec); if (Expr == null) @@ -8432,7 +8438,12 @@ namespace Mono.CSharp if (res == null) return null; - return res.ResolveLValue (ec, right_side); + bool lvalue_instance = rhs != null && type.IsStruct && (Expr is Invocation || Expr is PropertyExpr); + if (lvalue_instance) { + Expr.Error_ValueAssignment (ec, EmptyExpression.LValueMemberAccess); + } + + return res.ResolveLValue (ec, rhs); } public override void Emit (EmitContext ec) @@ -8887,6 +8898,7 @@ namespace Mono.CSharp } else { var res = new OverloadResolver (indexers, OverloadResolver.Restrictions.None, loc); res.BaseMembersProvider = this; + res.InstanceQualifier = this; // TODO: Do I need 2 argument sets? best_candidate = res.ResolveMember<IndexerSpec> (rc, ref arguments); @@ -8919,7 +8931,6 @@ namespace Mono.CSharp if (right_side != null) ResolveInstanceExpression (rc, right_side); - CheckProtectedMemberAccess (rc, best_candidate); return this; } @@ -9642,12 +9653,21 @@ namespace Mono.CSharp if (fe != null) args.Add (new Argument (fe.CreateTypeOfExpression ())); else - args.Add (new Argument (((PropertyExpr)target).CreateSetterTypeOfExpression ())); + args.Add (new Argument (((PropertyExpr) target).CreateSetterTypeOfExpression (ec))); + + string mname; + Expression arg_expr; + var cinit = source as CollectionOrObjectInitializers; + if (cinit == null) { + mname = "Bind"; + arg_expr = source.CreateExpressionTree (ec); + } else { + mname = cinit.IsEmpty || cinit.Initializers[0] is ElementInitializer ? "MemberBind" : "ListBind"; + arg_expr = cinit.CreateExpressionTree (ec, !cinit.IsEmpty); + } - args.Add (new Argument (source.CreateExpressionTree (ec))); - return CreateExpressionFactoryCall (ec, - source is CollectionOrObjectInitializers ? "ListBind" : "Bind", - args); + args.Add (new Argument (arg_expr)); + return CreateExpressionFactoryCall (ec, mname, args); } protected override Expression DoResolve (ResolveContext ec) @@ -9852,6 +9872,11 @@ namespace Mono.CSharp public override Expression CreateExpressionTree (ResolveContext ec) { + return CreateExpressionTree (ec, false); + } + + public Expression CreateExpressionTree (ResolveContext ec, bool inferType) + { var expr_initializers = new ArrayInitializer (initializers.Count, loc); foreach (Expression e in initializers) { Expression expr = e.CreateExpressionTree (ec); @@ -9859,7 +9884,10 @@ namespace Mono.CSharp expr_initializers.Add (expr); } - return new ImplicitlyTypedArrayCreation (expr_initializers, loc); + if (inferType) + return new ImplicitlyTypedArrayCreation (expr_initializers, loc); + + return new ArrayCreation (new TypeExpression (ec.Module.PredefinedTypes.MemberBinding.Resolve (), loc), expr_initializers, loc); } protected override Expression DoResolve (ResolveContext ec) @@ -10035,7 +10063,7 @@ namespace Mono.CSharp Arguments args = new Arguments (2); args.Add (new Argument (base.CreateExpressionTree (ec))); if (!initializers.IsEmpty) - args.Add (new Argument (initializers.CreateExpressionTree (ec))); + args.Add (new Argument (initializers.CreateExpressionTree (ec, initializers.IsCollectionInitializer))); return CreateExpressionFactoryCall (ec, initializers.IsCollectionInitializer ? "ListInit" : "MemberInit", @@ -10278,7 +10306,7 @@ namespace Mono.CSharp type = e.Type; if (type.Kind == MemberKind.Void || type == InternalType.NullLiteral || type == InternalType.AnonymousMethod || type.IsPointer) { - Error_InvalidInitializer (ec, e.GetSignatureForError ()); + Error_InvalidInitializer (ec, type.GetSignatureForError ()); return null; } diff --git a/main/contrib/ICSharpCode.NRefactory.CSharp/Parser/mcs/field.cs b/main/contrib/ICSharpCode.NRefactory.CSharp/Parser/mcs/field.cs index e507e64b80..e26f022fc0 100644 --- a/main/contrib/ICSharpCode.NRefactory.CSharp/Parser/mcs/field.cs +++ b/main/contrib/ICSharpCode.NRefactory.CSharp/Parser/mcs/field.cs @@ -9,6 +9,7 @@ // // Copyright 2001, 2002, 2003 Ximian, Inc (http://www.ximian.com) // Copyright 2004-2008 Novell, Inc +// Copyright 2011 Xamarin Inc // using System; diff --git a/main/contrib/ICSharpCode.NRefactory.CSharp/Parser/mcs/flowanalysis.cs b/main/contrib/ICSharpCode.NRefactory.CSharp/Parser/mcs/flowanalysis.cs index 3bde87c336..188d8f3a6f 100644 --- a/main/contrib/ICSharpCode.NRefactory.CSharp/Parser/mcs/flowanalysis.cs +++ b/main/contrib/ICSharpCode.NRefactory.CSharp/Parser/mcs/flowanalysis.cs @@ -1348,11 +1348,6 @@ namespace Mono.CSharp VariableInfo[] sub_info; - bool is_ever_assigned; - public bool IsEverAssigned { - get { return is_ever_assigned; } - } - protected VariableInfo (string name, TypeSpec type, int offset) { this.Name = name; @@ -1449,6 +1444,8 @@ namespace Mono.CSharp return true; } + public bool IsEverAssigned { get; set; } + public bool IsStructFieldAssigned (ResolveContext ec, string name) { return !ec.DoFlowAnalysis || ec.CurrentBranching.IsStructFieldAssigned (this, name); @@ -1483,7 +1480,7 @@ namespace Mono.CSharp else vector.SetRange (Offset, Length); - is_ever_assigned = true; + IsEverAssigned = true; } public void SetStructFieldAssigned (MyBitVector vector, string field_name) @@ -1503,12 +1500,12 @@ namespace Mono.CSharp vector[Offset + field_idx] = true; } - is_ever_assigned = true; + IsEverAssigned = true; // // Each field must be assigned // - for (int i = Offset + 1; i <= TypeInfo.Length + Offset; i++) { + for (int i = Offset + 1; i <= TypeInfo.TotalLength + Offset; i++) { if (!vector[i]) return; } diff --git a/main/contrib/ICSharpCode.NRefactory.CSharp/Parser/mcs/generic.cs b/main/contrib/ICSharpCode.NRefactory.CSharp/Parser/mcs/generic.cs index d592349bee..d623ee0e97 100644 --- a/main/contrib/ICSharpCode.NRefactory.CSharp/Parser/mcs/generic.cs +++ b/main/contrib/ICSharpCode.NRefactory.CSharp/Parser/mcs/generic.cs @@ -129,10 +129,15 @@ namespace Mono.CSharp { if (TypeSpec.IsBaseClass (ba, bb, false) || TypeSpec.IsBaseClass (bb, ba, false)) return true; + Error_ConflictingConstraints (context, spec, ba, bb, loc); + return false; + } + + public static void Error_ConflictingConstraints (IMemberContext context, TypeParameterSpec tp, TypeSpec ba, TypeSpec bb, Location loc) + { context.Module.Compiler.Report.Error (455, loc, "Type parameter `{0}' inherits conflicting constraints `{1}' and `{2}'", - spec.Name, ba.GetSignatureForError (), bb.GetSignatureForError ()); - return false; + tp.Name, ba.GetSignatureForError (), bb.GetSignatureForError ()); } public void CheckGenericConstraints (IMemberContext context, bool obsoleteCheck) @@ -808,7 +813,17 @@ namespace Mono.CSharp { // class A : B<int> { override void Foo<U> () {} } // class B<T> { virtual void Foo<U> () where U : T {} } // - return HasSpecialStruct || TypeSpec.IsValueType (BaseType); + if (HasSpecialStruct) + return true; + + if (targs != null) { + foreach (var ta in targs) { + if (TypeSpec.IsValueType (ta)) + return true; + } + } + + return false; } } @@ -853,21 +868,6 @@ namespace Mono.CSharp { #endregion - public void ChangeTypeArgumentToBaseType (int index) - { - BaseType = targs [index]; - if (targs.Length == 1) { - targs = null; - } else { - var copy = new TypeSpec[targs.Length - 1]; - if (index > 0) - Array.Copy (targs, copy, index); - - Array.Copy (targs, index + 1, copy, index, targs.Length - index - 1); - targs = copy; - } - } - public string DisplayDebugInfo () { var s = GetSignatureForError (); @@ -900,11 +900,18 @@ namespace Mono.CSharp { var types = targs; if (HasTypeConstraint) { Array.Resize (ref types, types.Length + 1); + + for (int i = 0; i < types.Length - 1; ++i) { + types[i] = types[i].BaseType; + } + types[types.Length - 1] = BaseType; + } else { + types = types.Select (l => l.BaseType).ToArray (); } if (types != null) - return Convert.FindMostEncompassedType (types.Select (l => l.BaseType)); + return Convert.FindMostEncompassedType (types); return BaseType; } @@ -2256,35 +2263,25 @@ namespace Mono.CSharp { // Check the interfaces constraints // if (tparam.Interfaces != null) { - if (atype.IsNullableType) { - if (mc == null) - return false; + foreach (TypeSpec iface in tparam.Interfaces) { + var dep = iface.GetMissingDependencies (); + if (dep != null) { + if (mc == null) + return false; - mc.Module.Compiler.Report.Error (313, loc, - "The type `{0}' cannot be used as type parameter `{1}' in the generic type or method `{2}'. The nullable type `{0}' never satisfies interface constraint", - atype.GetSignatureForError (), tparam.GetSignatureForError (), context.GetSignatureForError ()); - ok = false; - } else { - foreach (TypeSpec iface in tparam.Interfaces) { - var dep = iface.GetMissingDependencies (); - if (dep != null) { - if (mc == null) - return false; + ImportedTypeDefinition.Error_MissingDependency (mc, dep, loc); + ok = false; - ImportedTypeDefinition.Error_MissingDependency (mc, dep, loc); - ok = false; + // return immediately to avoid duplicate errors because we are scanning + // expanded interface list + return false; + } - // return immediately to avoid duplicate errors because we are scanning - // expanded interface list + if (!CheckConversion (mc, context, atype, tparam, iface, loc)) { + if (mc == null) return false; - } - if (!CheckConversion (mc, context, atype, tparam, iface, loc)) { - if (mc == null) - return false; - - ok = false; - } + ok = false; } } } @@ -2343,24 +2340,29 @@ namespace Mono.CSharp { if (atype.IsGenericParameter) { var tps = (TypeParameterSpec) atype; - if (Convert.ImplicitTypeParameterConversion (null, tps, ttype) != null) - return true; + if (tps.TypeArguments != null) { + foreach (var targ in tps.TypeArguments) { + if (TypeSpecComparer.Override.IsEqual (targ, ttype)) + return true; + } + } - // - // LAMESPEC: Identity conversion with inflated type parameter - // It's not clear from the spec what rule should apply to inherited - // inflated type parameter. The specification allows only type parameter - // conversion but that's clearly not enough - // - if (tps.HasTypeConstraint && tps.BaseType == ttype) + if (Convert.ImplicitTypeParameterConversion (null, tps, ttype) != null) return true; } else if (TypeSpec.IsValueType (atype)) { - if (Convert.ImplicitBoxingConversion (null, atype, ttype) != null) - return true; + if (atype.IsNullableType) { + // + // LAMESPEC: Only identity or base type ValueType or Object satisfy nullable type + // + if (TypeSpec.IsBaseClass (atype, ttype, false)) + return true; + } else { + if (Convert.ImplicitBoxingConversion (null, atype, ttype) != null) + return true; + } } else { - var expr = new EmptyExpression (atype); - if (Convert.ImplicitStandardConversionExists (expr, ttype)) + if (Convert.ImplicitReferenceConversionExists (atype, ttype) || Convert.ImplicitBoxingConversion (null, atype, ttype) != null) return true; } @@ -2379,9 +2381,21 @@ namespace Mono.CSharp { "The type `{0}' cannot be used as type parameter `{1}' in the generic type or method `{2}'. There is no boxing or type parameter conversion from `{0}' to `{3}'", atype.GetSignatureForError (), tparam.GetSignatureForError (), context.GetSignatureForError (), ttype.GetSignatureForError ()); } else if (TypeSpec.IsValueType (atype)) { - mc.Module.Compiler.Report.Error (315, loc, - "The type `{0}' cannot be used as type parameter `{1}' in the generic type or method `{2}'. There is no boxing conversion from `{0}' to `{3}'", - atype.GetSignatureForError (), tparam.GetSignatureForError (), context.GetSignatureForError (), ttype.GetSignatureForError ()); + if (atype.IsNullableType) { + if (ttype.IsInterface) { + mc.Module.Compiler.Report.Error (313, loc, + "The type `{0}' cannot be used as type parameter `{1}' in the generic type or method `{2}'. The nullable type `{0}' never satisfies interface constraint `{3}'", + atype.GetSignatureForError (), tparam.GetSignatureForError (), context.GetSignatureForError (), ttype.GetSignatureForError ()); + } else { + mc.Module.Compiler.Report.Error (312, loc, + "The type `{0}' cannot be used as type parameter `{1}' in the generic type or method `{2}'. The nullable type `{0}' does not satisfy constraint `{3}'", + atype.GetSignatureForError (), tparam.GetSignatureForError (), context.GetSignatureForError (), ttype.GetSignatureForError ()); + } + } else { + mc.Module.Compiler.Report.Error (315, loc, + "The type `{0}' cannot be used as type parameter `{1}' in the generic type or method `{2}'. There is no boxing conversion from `{0}' to `{3}'", + atype.GetSignatureForError (), tparam.GetSignatureForError (), context.GetSignatureForError (), ttype.GetSignatureForError ()); + } } else { mc.Module.Compiler.Report.Error (311, loc, "The type `{0}' cannot be used as type parameter `{1}' in the generic type or method `{2}'. There is no implicit reference conversion from `{0}' to `{3}'", @@ -2710,8 +2724,13 @@ namespace Mono.CSharp { var mi = Delegate.GetInvokeMethod (t_i); TypeSpec rtype = mi.ReturnType; - if (tic.IsReturnTypeNonDependent (ec, mi, rtype)) - score -= tic.OutputTypeInference (ec, arguments [i].Expr, t_i); + if (tic.IsReturnTypeNonDependent (ec, mi, rtype)) { + // It can be null for default arguments + if (arguments[i] == null) + continue; + + score -= tic.OutputTypeInference (ec, arguments[i].Expr, t_i); + } } diff --git a/main/contrib/ICSharpCode.NRefactory.CSharp/Parser/mcs/lambda.cs b/main/contrib/ICSharpCode.NRefactory.CSharp/Parser/mcs/lambda.cs index 16f96a33de..d7d8a5932d 100644 --- a/main/contrib/ICSharpCode.NRefactory.CSharp/Parser/mcs/lambda.cs +++ b/main/contrib/ICSharpCode.NRefactory.CSharp/Parser/mcs/lambda.cs @@ -7,6 +7,7 @@ // Dual licensed under the terms of the MIT X11 or GNU GPL // // Copyright 2007-2008 Novell, Inc +// Copyright 2011 Xamarin Inc // #if STATIC diff --git a/main/contrib/ICSharpCode.NRefactory.CSharp/Parser/mcs/linq.cs b/main/contrib/ICSharpCode.NRefactory.CSharp/Parser/mcs/linq.cs index 40398513c8..998f340a98 100644 --- a/main/contrib/ICSharpCode.NRefactory.CSharp/Parser/mcs/linq.cs +++ b/main/contrib/ICSharpCode.NRefactory.CSharp/Parser/mcs/linq.cs @@ -6,6 +6,7 @@ // Dual licensed under the terms of the MIT X11 or GNU GPL // // Copyright 2007-2008 Novell, Inc +// Copyright 2011 Xamarin Inc // using System; diff --git a/main/contrib/ICSharpCode.NRefactory.CSharp/Parser/mcs/literal.cs b/main/contrib/ICSharpCode.NRefactory.CSharp/Parser/mcs/literal.cs index 51502dddab..95be95d40b 100644 --- a/main/contrib/ICSharpCode.NRefactory.CSharp/Parser/mcs/literal.cs +++ b/main/contrib/ICSharpCode.NRefactory.CSharp/Parser/mcs/literal.cs @@ -6,6 +6,7 @@ // Marek Safar (marek.safar@seznam.cz) // // Copyright 2001 Ximian, Inc. +// Copyright 2011 Xamarin Inc // // // Notice that during parsing we create objects of type Literal, but the diff --git a/main/contrib/ICSharpCode.NRefactory.CSharp/Parser/mcs/membercache.cs b/main/contrib/ICSharpCode.NRefactory.CSharp/Parser/mcs/membercache.cs index 61b51dd7ef..6a497cc514 100644 --- a/main/contrib/ICSharpCode.NRefactory.CSharp/Parser/mcs/membercache.cs +++ b/main/contrib/ICSharpCode.NRefactory.CSharp/Parser/mcs/membercache.cs @@ -8,6 +8,7 @@ // // Copyright 2001 Ximian, Inc (http://www.ximian.com) // Copyright 2004-2010 Novell, Inc +// Copyright 2011 Xamarin Inc // // @@ -1177,10 +1178,14 @@ namespace Mono.CSharp { if (name_entry.MemberDefinition.CLSAttributeValue == false) continue; - IParametersMember p_a = name_entry as IParametersMember; - if (p_a != null && !name_entry.IsAccessor) { - if (!is_imported_type) { + IParametersMember p_a = null; + if (!is_imported_type) { + p_a = name_entry as IParametersMember; + if (p_a != null && !name_entry.IsAccessor) { var p_a_pd = p_a.Parameters; + // + // Check differing overloads in @container + // for (int ii = i + 1; ii < entry.Value.Count; ++ii) { var checked_entry = entry.Value[ii]; IParametersMember p_b = checked_entry as IParametersMember; @@ -1195,24 +1200,7 @@ namespace Mono.CSharp { var res = ParametersCompiled.IsSameClsSignature (p_a.Parameters, p_b.Parameters); if (res != 0) { - var last = GetLaterDefinedMember (checked_entry, name_entry); - if (last == checked_entry.MemberDefinition) { - report.SymbolRelatedToPreviousError (name_entry); - } else { - report.SymbolRelatedToPreviousError (checked_entry); - } - - if ((res & 1) != 0) { - report.Warning (3006, 1, last.Location, - "Overloaded method `{0}' differing only in ref or out, or in array rank, is not CLS-compliant", - name_entry.GetSignatureForError ()); - } - - if ((res & 2) != 0) { - report.Warning (3007, 1, last.Location, - "Overloaded method `{0}' differing only by unnamed array types is not CLS-compliant", - name_entry.GetSignatureForError ()); - } + ReportOverloadedMethodClsDifference (name_entry, checked_entry, res, report); } } } @@ -1230,11 +1218,26 @@ namespace Mono.CSharp { } else { bool same_names_only = true; foreach (var f in found) { - if (f.Name == name_entry.Name) - continue; + if (f.Name == name_entry.Name) { + if (p_a != null) { + IParametersMember p_b = f as IParametersMember; + if (p_b == null) + continue; + + if (p_a.Parameters.Count != p_b.Parameters.Count) + continue; + + if (f.IsAccessor) + continue; + + var res = ParametersCompiled.IsSameClsSignature (p_a.Parameters, p_b.Parameters); + if (res != 0) { + ReportOverloadedMethodClsDifference (f, name_entry, res, report); + } + } -// if (f.IsAccessor && name_entry.IsAccessor) -// continue; + continue; + } same_names_only = false; if (!is_imported_type) { @@ -1273,12 +1276,37 @@ namespace Mono.CSharp { if (mc_b == null) return mc_a; + if (a.DeclaringType.MemberDefinition != b.DeclaringType.MemberDefinition) + return mc_b; + if (mc_a.Location.File != mc_a.Location.File) return mc_b; return mc_b.Location.Row > mc_a.Location.Row ? mc_b : mc_a; } + static void ReportOverloadedMethodClsDifference (MemberSpec a, MemberSpec b, int res, Report report) + { + var last = GetLaterDefinedMember (a, b); + if (last == a.MemberDefinition) { + report.SymbolRelatedToPreviousError (b); + } else { + report.SymbolRelatedToPreviousError (a); + } + + if ((res & 1) != 0) { + report.Warning (3006, 1, last.Location, + "Overloaded method `{0}' differing only in ref or out, or in array rank, is not CLS-compliant", + last.GetSignatureForError ()); + } + + if ((res & 2) != 0) { + report.Warning (3007, 1, last.Location, + "Overloaded method `{0}' differing only by unnamed array types is not CLS-compliant", + last.GetSignatureForError ()); + } + } + public bool CheckExistingMembersOverloads (MemberCore member, AParametersCollection parameters) { var name = GetLookupName (member); diff --git a/main/contrib/ICSharpCode.NRefactory.CSharp/Parser/mcs/method.cs b/main/contrib/ICSharpCode.NRefactory.CSharp/Parser/mcs/method.cs index 32ef917f69..b545ce9051 100644 --- a/main/contrib/ICSharpCode.NRefactory.CSharp/Parser/mcs/method.cs +++ b/main/contrib/ICSharpCode.NRefactory.CSharp/Parser/mcs/method.cs @@ -9,6 +9,7 @@ // // Copyright 2001, 2002, 2003 Ximian, Inc (http://www.ximian.com) // Copyright 2004-2008 Novell, Inc +// Copyright 2011 Xamarin Inc. // using System; @@ -1102,7 +1103,7 @@ namespace Mono.CSharp { base_tparam.InflateConstraints (inflator, local_tparam); // - // Check all type argument constraints for possible collision + // Check all type argument constraints for possible collision or unification // introduced by inflating inherited constraints in this context // // Conflict example: @@ -1111,31 +1112,67 @@ namespace Mono.CSharp { // class B : A<int> { override void Foo<U> {} } // var local_tparam_targs = local_tparam.TypeArguments; - if (local_tparam_targs != null) { + if (local_tparam_targs != null) { for (int ii = 0; ii < local_tparam_targs.Length; ++ii) { var ta = local_tparam_targs [ii]; if (!ta.IsClass && !ta.IsStruct) continue; - if (Constraints.CheckConflictingInheritedConstraint (local_tparam, ta, this, Location)) { - local_tparam.ChangeTypeArgumentToBaseType (ii); + TypeSpec[] unique_tparams = null; + for (int iii = ii + 1; iii < local_tparam_targs.Length; ++iii) { + // + // Remove any identical or unified constraint types + // + var tparam_checked = local_tparam_targs[iii]; + if (TypeSpecComparer.IsEqual (ta, tparam_checked) || TypeSpec.IsBaseClass (ta, tparam_checked, false)) { + unique_tparams = new TypeSpec[local_tparam_targs.Length - 1]; + Array.Copy (local_tparam_targs, 0, unique_tparams, 0, iii); + Array.Copy (local_tparam_targs, iii + 1, unique_tparams, iii, local_tparam_targs.Length - iii - 1); + } else if (!TypeSpec.IsBaseClass (tparam_checked, ta, false)) { + Constraints.Error_ConflictingConstraints (this, local_tparam, ta, tparam_checked, Location); + } } + + if (unique_tparams != null) { + local_tparam_targs = unique_tparams; + local_tparam.TypeArguments = local_tparam_targs; + continue; + } + + Constraints.CheckConflictingInheritedConstraint (local_tparam, ta, this, Location); } } continue; } - - if (MethodData != null && MethodData.implementing != null) { - var base_tp = MethodData.implementing.Constraints[i]; - if (!tp.Type.HasSameConstraintsImplementation (base_tp)) { - Report.SymbolRelatedToPreviousError (MethodData.implementing); - Report.Error (425, Location, - "The constraints for type parameter `{0}' of method `{1}' must match the constraints for type parameter `{2}' of interface method `{3}'. Consider using an explicit interface implementation instead", - tp.GetSignatureForError (), GetSignatureForError (), base_tp.GetSignatureForError (), MethodData.implementing.GetSignatureForError ()); - } + } + + if (base_tparams == null && MethodData != null && MethodData.implementing != null) { + CheckImplementingMethodConstraints (Parent, spec, MethodData.implementing); + } + } + + public static bool CheckImplementingMethodConstraints (TypeContainer container, MethodSpec method, MethodSpec baseMethod) + { + var tparams = method.Constraints; + var base_tparams = baseMethod.Constraints; + for (int i = 0; i < tparams.Length; ++i) { + if (!tparams[i].HasSameConstraintsImplementation (base_tparams[i])) { + container.Compiler.Report.SymbolRelatedToPreviousError (method); + container.Compiler.Report.SymbolRelatedToPreviousError (baseMethod); + + // Using container location because the interface can be implemented + // by base class + container.Compiler.Report.Error (425, container.Location, + "The constraints for type parameter `{0}' of method `{1}' must match the constraints for type parameter `{2}' of interface method `{3}'. Consider using an explicit interface implementation instead", + tparams[i].GetSignatureForError (), method.GetSignatureForError (), + base_tparams[i].GetSignatureForError (), baseMethod.GetSignatureForError ()); + + return false; } } + + return true; } public override void Accept (StructuralVisitor visitor) @@ -1209,7 +1246,7 @@ namespace Mono.CSharp { PredefinedAttribute pa = Module.PredefinedAttributes.Extension; if (!pa.IsDefined) { Report.Error (1110, Location, - "`{0}': Extension methods cannot be declared without a reference to System.Core.dll assembly. Add the assembly reference or remove `this' modifer from the first parameter", + "`{0}': Extension methods require `System.Runtime.CompilerServices.ExtensionAttribute' type to be available. Are you missing an assembly reference?", GetSignatureForError ()); } diff --git a/main/contrib/ICSharpCode.NRefactory.CSharp/Parser/mcs/namespace.cs b/main/contrib/ICSharpCode.NRefactory.CSharp/Parser/mcs/namespace.cs index bd55dce6c2..3cdac0f082 100644 --- a/main/contrib/ICSharpCode.NRefactory.CSharp/Parser/mcs/namespace.cs +++ b/main/contrib/ICSharpCode.NRefactory.CSharp/Parser/mcs/namespace.cs @@ -7,6 +7,7 @@ // // Copyright 2001 Ximian, Inc. // Copyright 2003-2008 Novell, Inc. +// Copyright 2011 Xamarin Inc // using System; using System.Collections.Generic; @@ -987,10 +988,8 @@ namespace Mono.CSharp { if (namespace_using_table != null) return namespace_using_table; - if (using_clauses == null) { - namespace_using_table = empty_namespaces; - return namespace_using_table; - } + if (using_clauses == null) + return empty_namespaces; var list = new List<Namespace> (using_clauses.Count); @@ -1002,6 +1001,9 @@ namespace Mono.CSharp { list.Add (using_ns); } + if (Compiler.Settings.StatementMode) + return list.ToArray (); + namespace_using_table = list.ToArray (); return namespace_using_table; } diff --git a/main/contrib/ICSharpCode.NRefactory.CSharp/Parser/mcs/nullable.cs b/main/contrib/ICSharpCode.NRefactory.CSharp/Parser/mcs/nullable.cs index 28cf683e4c..b173304cb2 100644 --- a/main/contrib/ICSharpCode.NRefactory.CSharp/Parser/mcs/nullable.cs +++ b/main/contrib/ICSharpCode.NRefactory.CSharp/Parser/mcs/nullable.cs @@ -9,6 +9,7 @@ // // Copyright 2001, 2002, 2003 Ximian, Inc (http://www.ximian.com) // Copyright 2004-2008 Novell, Inc +// Copyright 2011 Xamarin Inc // using System; diff --git a/main/contrib/ICSharpCode.NRefactory.CSharp/Parser/mcs/parameter.cs b/main/contrib/ICSharpCode.NRefactory.CSharp/Parser/mcs/parameter.cs index d73a6e61ac..9fb4a57ffe 100644 --- a/main/contrib/ICSharpCode.NRefactory.CSharp/Parser/mcs/parameter.cs +++ b/main/contrib/ICSharpCode.NRefactory.CSharp/Parser/mcs/parameter.cs @@ -8,6 +8,7 @@ // // Copyright 2001-2003 Ximian, Inc (http://www.ximian.com) // Copyright 2003-2008 Novell, Inc. +// Copyright 2011 Xamarin Inc // // using System; @@ -955,10 +956,7 @@ namespace Mono.CSharp { int count = parameters.Length; for (int i = 0; i < count; i++){ - var p = parameters [i]; - if (p == null) - continue; - has_params |= (p.ModFlags & Parameter.Modifier.PARAMS) != 0; + has_params |= (parameters [i].ModFlags & Parameter.Modifier.PARAMS) != 0; } } diff --git a/main/contrib/ICSharpCode.NRefactory.CSharp/Parser/mcs/pending.cs b/main/contrib/ICSharpCode.NRefactory.CSharp/Parser/mcs/pending.cs index 0852b0f826..a9b066b436 100644 --- a/main/contrib/ICSharpCode.NRefactory.CSharp/Parser/mcs/pending.cs +++ b/main/contrib/ICSharpCode.NRefactory.CSharp/Parser/mcs/pending.cs @@ -9,6 +9,7 @@ // // Copyright 2001, 2002 Ximian, Inc (http://www.ximian.com) // Copyright 2003-2008 Novell, Inc. +// Copyright 2011 Xamarin Inc // using System; @@ -598,6 +599,10 @@ namespace Mono.CSharp { if (!TypeSpecComparer.Override.IsEqual (mi.ReturnType, base_method.ReturnType)) return false; + + if (mi.IsGeneric && !Method.CheckImplementingMethodConstraints (container, base_method, mi)) { + return true; + } } if (base_method != null) { @@ -686,7 +691,7 @@ namespace Mono.CSharp { if (candidate.IsStatic) { Report.Error (736, container.Location, "`{0}' does not implement interface member `{1}' and the best implementing candidate `{2}' is static", - container.GetSignatureForError (), mi.GetSignatureForError (), TypeManager.CSharpSignature (candidate)); + container.GetSignatureForError (), mi.GetSignatureForError (), candidate.GetSignatureForError ()); } else if ((candidate.Modifiers & Modifiers.PUBLIC) == 0) { Report.Error (737, container.Location, "`{0}' does not implement interface member `{1}' and the best implementing candidate `{2}' in not public", @@ -694,8 +699,8 @@ namespace Mono.CSharp { } else { Report.Error (738, container.Location, "`{0}' does not implement interface member `{1}' and the best implementing candidate `{2}' return type `{3}' does not match interface member return type `{4}'", - container.GetSignatureForError (), mi.GetSignatureForError (), TypeManager.CSharpSignature (candidate), - TypeManager.CSharpName (candidate.ReturnType), TypeManager.CSharpName (mi.ReturnType)); + container.GetSignatureForError (), mi.GetSignatureForError (), candidate.GetSignatureForError (), + candidate.ReturnType.GetSignatureForError (), mi.ReturnType.GetSignatureForError ()); } } else { Report.Error (535, container.Location, "`{0}' does not implement interface member `{1}'", diff --git a/main/contrib/ICSharpCode.NRefactory.CSharp/Parser/mcs/property.cs b/main/contrib/ICSharpCode.NRefactory.CSharp/Parser/mcs/property.cs index 204204e724..7c8f069b17 100644 --- a/main/contrib/ICSharpCode.NRefactory.CSharp/Parser/mcs/property.cs +++ b/main/contrib/ICSharpCode.NRefactory.CSharp/Parser/mcs/property.cs @@ -9,6 +9,7 @@ // // Copyright 2001, 2002, 2003 Ximian, Inc (http://www.ximian.com) // Copyright 2004-2008 Novell, Inc +// Copyright 2011 Xamarin Inc // using System; @@ -781,6 +782,16 @@ namespace Mono.CSharp if (!DefineAccessors ()) return false; + if (AccessorSecond == null) { + PropertyMethod pm; + if (AccessorFirst is GetMethod) + pm = new SetMethod (this, 0, ParametersCompiled.EmptyReadOnlyParameters, null, Location); + else + pm = new GetMethod (this, 0, null, Location); + + Parent.AddMember (pm); + } + if (!CheckBase ()) return false; @@ -876,7 +887,7 @@ namespace Mono.CSharp abstract class EventFieldAccessor : AEventAccessor { protected EventFieldAccessor (EventField method, string prefix) - : base (method, prefix, null, Location.Null) + : base (method, prefix, null, method.Location) { } diff --git a/main/contrib/ICSharpCode.NRefactory.CSharp/Parser/mcs/roottypes.cs b/main/contrib/ICSharpCode.NRefactory.CSharp/Parser/mcs/roottypes.cs index b9bd5edcb7..962937befc 100644 --- a/main/contrib/ICSharpCode.NRefactory.CSharp/Parser/mcs/roottypes.cs +++ b/main/contrib/ICSharpCode.NRefactory.CSharp/Parser/mcs/roottypes.cs @@ -8,6 +8,7 @@ // // Copyright 2001-2003 Ximian, Inc (http://www.ximian.com) // Copyright 2003-2008 Novell, Inc. +// Copyright 2011 Xamarin Inc // using System; diff --git a/main/contrib/ICSharpCode.NRefactory.CSharp/Parser/mcs/statement.cs b/main/contrib/ICSharpCode.NRefactory.CSharp/Parser/mcs/statement.cs index 2e8460f659..91918cebde 100644 --- a/main/contrib/ICSharpCode.NRefactory.CSharp/Parser/mcs/statement.cs +++ b/main/contrib/ICSharpCode.NRefactory.CSharp/Parser/mcs/statement.cs @@ -476,47 +476,52 @@ namespace Mono.CSharp { } } - public class For : Statement { - public Expression Test { get; private set; } - public Statement InitStatement { get; private set; } - public Statement Increment { get; private set; } - public Statement Statement { get; private set; } + public class For : Statement + { bool infinite, empty; - public For (Statement init_statement, - Expression test, - Statement increment, - Statement statement, - Location l) - { - InitStatement = init_statement; - Test = test; - Increment = increment; - Statement = statement; + public For (Location l) + { loc = l; } + public Statement Initializer { + get; set; + } + + public Expression Condition { + get; set; + } + + public Statement Iterator { + get; set; + } + + public Statement Statement { + get; set; + } + public override bool Resolve (BlockContext ec) { bool ok = true; - if (InitStatement != null){ - if (!InitStatement.Resolve (ec)) + if (Initializer != null) { + if (!Initializer.Resolve (ec)) ok = false; } - if (Test != null){ - Test = Test.Resolve (ec); - if (Test == null) + if (Condition != null) { + Condition = Condition.Resolve (ec); + if (Condition == null) ok = false; - else if (Test is Constant){ - bool value = !((Constant) Test).IsDefaultValue; + else if (Condition is Constant) { + bool value = !((Constant) Condition).IsDefaultValue; if (value == false){ if (!Statement.ResolveUnreachable (ec, true)) return false; - if ((Increment != null) && - !Increment.ResolveUnreachable (ec, false)) + if ((Iterator != null) && + !Iterator.ResolveUnreachable (ec, false)) return false; empty = true; return true; @@ -537,12 +542,12 @@ namespace Mono.CSharp { ok = false; ec.EndFlowBranching (); - if (Increment != null){ + if (Iterator != null){ if (ec.CurrentBranching.CurrentUsageVector.IsUnreachable) { - if (!Increment.ResolveUnreachable (ec, !was_unreachable)) + if (!Iterator.ResolveUnreachable (ec, !was_unreachable)) ok = false; } else { - if (!Increment.Resolve (ec)) + if (!Iterator.Resolve (ec)) ok = false; } } @@ -557,11 +562,11 @@ namespace Mono.CSharp { protected override void DoEmit (EmitContext ec) { - if (InitStatement != null) - InitStatement.Emit (ec); + if (Initializer != null) + Initializer.Emit (ec); if (empty) { - Test.EmitSideEffect (ec); + Condition.EmitSideEffect (ec); return; } @@ -578,24 +583,24 @@ namespace Mono.CSharp { Statement.Emit (ec); ec.MarkLabel (ec.LoopBegin); - Increment.Emit (ec); + Iterator.Emit (ec); ec.MarkLabel (test); // // If test is null, there is no test, and we are just // an infinite loop // - if (Test != null){ + if (Condition != null){ // // The Resolve code already catches the case for // Test == Constant (false) so we know that // this is true // - if (Test is Constant) { - Test.EmitSideEffect (ec); + if (Condition is Constant) { + Condition.EmitSideEffect (ec); ec.Emit (OpCodes.Br, loop); } else { - Test.EmitBranchable (ec, loop, true); + Condition.EmitBranchable (ec, loop, true); } } else @@ -610,15 +615,15 @@ namespace Mono.CSharp { { For target = (For) t; - if (InitStatement != null) - target.InitStatement = InitStatement.Clone (clonectx); - if (Test != null) - target.Test = Test.Clone (clonectx); - if (Increment != null) - target.Increment = Increment.Clone (clonectx); + if (Initializer != null) + target.Initializer = Initializer.Clone (clonectx); + if (Condition != null) + target.Condition = Condition.Clone (clonectx); + if (Iterator != null) + target.Iterator = Iterator.Clone (clonectx); target.Statement = Statement.Clone (clonectx); } - + public override object Accept (StructuralVisitor visitor) { return visitor.Visit (this); @@ -1403,6 +1408,9 @@ namespace Mono.CSharp { void CreateEvaluatorVariable (BlockContext bc, LocalVariable li) { + if (bc.Report.Errors != 0) + return; + var container = bc.CurrentMemberDefinition.Parent; Field f = new Field (container, new TypeExpression (li.Type, li.Location), Modifiers.PUBLIC | Modifiers.STATIC, @@ -6153,4 +6161,35 @@ namespace Mono.CSharp { return visitor.Visit (this); } } + + public class StatementErrorExpression : Statement + { + readonly Expression expr; + + public Expression Expression { + get { + return expr; + } + } + + public StatementErrorExpression (Expression expr) + { + this.expr = expr; + } + + protected override void DoEmit (EmitContext ec) + { + throw new NotImplementedException (); + } + + protected override void CloneTo (CloneContext clonectx, Statement target) + { + throw new NotImplementedException (); + } + + public override object Accept (StructuralVisitor visitor) + { + return visitor.Visit (this); + } + } } diff --git a/main/contrib/ICSharpCode.NRefactory.CSharp/Parser/mcs/support.cs b/main/contrib/ICSharpCode.NRefactory.CSharp/Parser/mcs/support.cs index 4e4b3dbb21..d1025a2176 100644 --- a/main/contrib/ICSharpCode.NRefactory.CSharp/Parser/mcs/support.cs +++ b/main/contrib/ICSharpCode.NRefactory.CSharp/Parser/mcs/support.cs @@ -8,6 +8,7 @@ // // Copyright 2001 Ximian, Inc (http://www.ximian.com) // Copyright 2003-2009 Novell, Inc +// Copyright 2011 Xamarin Inc // using System; diff --git a/main/contrib/ICSharpCode.NRefactory.CSharp/Parser/mcs/typemanager.cs b/main/contrib/ICSharpCode.NRefactory.CSharp/Parser/mcs/typemanager.cs index 57de9b1a23..51bc5326bc 100644 --- a/main/contrib/ICSharpCode.NRefactory.CSharp/Parser/mcs/typemanager.cs +++ b/main/contrib/ICSharpCode.NRefactory.CSharp/Parser/mcs/typemanager.cs @@ -8,7 +8,8 @@ // Dual licensed under the terms of the MIT X11 or GNU GPL // // Copyright 2001-2003 Ximian, Inc (http://www.ximian.com) -// Copyright 2003-2008 Novell, Inc. +// Copyright 2003-2011 Novell, Inc. +// Copyright 2011 Xamarin Inc // using System; @@ -208,6 +209,7 @@ namespace Mono.CSharp public readonly PredefinedType MethodBase; public readonly PredefinedType MethodInfo; public readonly PredefinedType ConstructorInfo; + public readonly PredefinedType MemberBinding; // // C# 4.0 @@ -256,6 +258,7 @@ namespace Mono.CSharp Expression = new PredefinedType (module, MemberKind.Class, "System.Linq.Expressions", "Expression"); ExpressionGeneric = new PredefinedType (module, MemberKind.Class, "System.Linq.Expressions", "Expression", 1); + MemberBinding = new PredefinedType (module, MemberKind.Class, "System.Linq.Expressions", "MemberBinding"); ParameterExpression = new PredefinedType (module, MemberKind.Class, "System.Linq.Expressions", "ParameterExpression"); FieldInfo = new PredefinedType (module, MemberKind.Class, "System.Reflection", "FieldInfo"); MethodBase = new PredefinedType (module, MemberKind.Class, "System.Reflection", "MethodBase"); @@ -841,31 +844,6 @@ namespace Mono.CSharp { return mb.GetSignatureForError (); } - - // - // Whether a type is unmanaged. This is used by the unsafe code (25.2) - // - public static bool IsUnmanagedType (TypeSpec t) - { - var ds = t.MemberDefinition as DeclSpace; - if (ds != null) - return ds.IsUnmanagedType (); - - if (t.Kind == MemberKind.Void) - return true; - - // Someone did the work of checking if the ElementType of t is unmanaged. Let's not repeat it. - if (t.IsPointer) - return IsUnmanagedType (GetElementType (t)); - - if (!TypeSpec.IsValueType (t)) - return false; - - if (t.IsNested && t.DeclaringType.IsGenericOrParentIsGeneric) - return false; - - return true; - } public static bool IsFamilyAccessible (TypeSpec type, TypeSpec parent) { @@ -931,12 +909,12 @@ namespace Mono.CSharp /// </summary> public static bool VerifyUnmanaged (ModuleContainer rc, TypeSpec t, Location loc) { - while (t.IsPointer) - t = GetElementType (t); - - if (IsUnmanagedType (t)) + if (t.IsUnmanaged) return true; + while (t.IsPointer) + t = ((ElementTypeSpec) t).Element; + rc.Compiler.Report.SymbolRelatedToPreviousError (t); rc.Compiler.Report.Error (208, loc, "Cannot take the address of, get the size of, or declare a pointer to a managed type `{0}'", diff --git a/main/contrib/ICSharpCode.NRefactory.CSharp/Parser/mcs/typespec.cs b/main/contrib/ICSharpCode.NRefactory.CSharp/Parser/mcs/typespec.cs index c88baa0b9c..ecb50acf98 100644 --- a/main/contrib/ICSharpCode.NRefactory.CSharp/Parser/mcs/typespec.cs +++ b/main/contrib/ICSharpCode.NRefactory.CSharp/Parser/mcs/typespec.cs @@ -284,6 +284,28 @@ namespace Mono.CSharp } } + // + // Whether a type is unmanaged. This is used by the unsafe code + // + public bool IsUnmanaged { + get { + if (IsPointer) + return ((ElementTypeSpec) this).Element.IsUnmanaged; + + var ds = MemberDefinition as DeclSpace; + if (ds != null) + return ds.IsUnmanagedType (); + + if (Kind == MemberKind.Void) + return true; + + if (IsNested && DeclaringType.IsGenericOrParentIsGeneric) + return false; + + return IsValueType (this); + } + } + public MemberCache MemberCache { get { if (cache == null || (state & StateFlags.PendingMemberCacheMembers) != 0) diff --git a/main/contrib/ICSharpCode.NRefactory.CSharp/Parser/mcs/visit.cs b/main/contrib/ICSharpCode.NRefactory.CSharp/Parser/mcs/visit.cs index 92b3876557..c0579dd439 100644 --- a/main/contrib/ICSharpCode.NRefactory.CSharp/Parser/mcs/visit.cs +++ b/main/contrib/ICSharpCode.NRefactory.CSharp/Parser/mcs/visit.cs @@ -646,5 +646,10 @@ namespace Mono.CSharp { return null; } + + public virtual object Visit (StatementErrorExpression statementErrorExpression) + { + return null; + } } }
\ No newline at end of file |