From: Mark Mitchell Date: Tue, 9 Mar 1999 23:02:42 +0000 (+0000) Subject: cp-tree.h (flag_access_control): Declare. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=d6479fe772c6ab3191be8268ac658f309675bc28;p=gcc.git cp-tree.h (flag_access_control): Declare. * cp-tree.h (flag_access_control): Declare. (TREE_VIA_PPUBLIC): Document. (DECL_NONSTATIC_MEMBER_P): New macro. (enforce_access): Return an indication of whether or not access was permitted. (build_self_reference): Change prototype. (compute_access): Replace with ... (accessible_p): New function. (dfs_walk): Change prototype. (dfs_unmark): Likewise. (markedp): Likewise. * call.c (enforce_access): Use accessible_p. * class.c (build_self_reference): Insert the declaration into the list of members for this type, and make it public. * decl.c (xref_basetypes): Avoid ill-timed recursion. * init.c (build_offset_ref): Use lookup_member, not three separate name-lookups. Call enforce_access rather than checking for illegal accesses here. (resolve_offset_ref): Likewise. * lex.c (do_identifier): Likewise. * method.c (hack_identifier): Likewise. * parse.y (self_reference): Remove. (opt_component_decl_list): Don't use it. * parse.c: Regenerated. * pt.c (print_candidates): Generalize to handle lists of overloaded functions. (instantiate_class_template): Don't rely on TREE_VIA_PRIVATE; it's not set. (get_template_base): Use new calling convention for dfs_walk. * search.c: Include varray.h. Add prototypes. (dfs_walk): Accept a data pointer to pass to the work functions. All callers changed. All work functions changed. (breadth_first_search): Rename to bfs_walk, and make consistent with dfs_walk. (dfs_walk_real): New function. (canonical_binfo): New function. (context_for_name_lookup): Likewise. (shared_marked_p): Likewise. (shared_unmarked_p): Likewise. (lokup_field_queue_p): Likewise. (lookup_field_r): Generalize to handle both functions and fields. (lookup_field): Just call lookup_member. (lookup_fnfields): Likewise. (lookup_member): Move body of lookup_field here and generalize. (dfs_accessible_queue_p): Likewise. (dfs_accessible_p): Likewise. (dfs_access_in_type): Likewise. (access_in_type): Likewise. (compute_access): Remove, and replace with ... (accessible_p): New function. (vbase_types): Remove. (vbase_decl_ptr_intermediate): Likewise. (vbase_decl_ptr): Likewise. (vbase_init_result): Likewise. (closed_envelopes): Likewise. (bvtable): Likewise. From-SVN: r25661 --- diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 3ec99ada9e1..7dcdfeae052 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,62 @@ +1999-03-09 Mark Mitchell + + * cp-tree.h (flag_access_control): Declare. + (TREE_VIA_PPUBLIC): Document. + (DECL_NONSTATIC_MEMBER_P): New macro. + (enforce_access): Return an indication of whether or not access + was permitted. + (build_self_reference): Change prototype. + (compute_access): Replace with ... + (accessible_p): New function. + (dfs_walk): Change prototype. + (dfs_unmark): Likewise. + (markedp): Likewise. + * call.c (enforce_access): Use accessible_p. + * class.c (build_self_reference): Insert the declaration into the + list of members for this type, and make it public. + * decl.c (xref_basetypes): Avoid ill-timed recursion. + * init.c (build_offset_ref): Use lookup_member, not three separate + name-lookups. Call enforce_access rather than checking for + illegal accesses here. + (resolve_offset_ref): Likewise. + * lex.c (do_identifier): Likewise. + * method.c (hack_identifier): Likewise. + * parse.y (self_reference): Remove. + (opt_component_decl_list): Don't use it. + * parse.c: Regenerated. + * pt.c (print_candidates): Generalize to handle lists of + overloaded functions. + (instantiate_class_template): Don't rely on TREE_VIA_PRIVATE; it's + not set. + (get_template_base): Use new calling convention for dfs_walk. + * search.c: Include varray.h. Add prototypes. + (dfs_walk): Accept a data pointer to pass to the work functions. + All callers changed. All work functions changed. + (breadth_first_search): Rename to bfs_walk, and make consistent + with dfs_walk. + (dfs_walk_real): New function. + (canonical_binfo): New function. + (context_for_name_lookup): Likewise. + (shared_marked_p): Likewise. + (shared_unmarked_p): Likewise. + (lokup_field_queue_p): Likewise. + (lookup_field_r): Generalize to handle both functions and fields. + (lookup_field): Just call lookup_member. + (lookup_fnfields): Likewise. + (lookup_member): Move body of lookup_field here and generalize. + (dfs_accessible_queue_p): Likewise. + (dfs_accessible_p): Likewise. + (dfs_access_in_type): Likewise. + (access_in_type): Likewise. + (compute_access): Remove, and replace with ... + (accessible_p): New function. + (vbase_types): Remove. + (vbase_decl_ptr_intermediate): Likewise. + (vbase_decl_ptr): Likewise. + (vbase_init_result): Likewise. + (closed_envelopes): Likewise. + (bvtable): Likewise. + 1999-03-09 Jason Merrill * call.c (add_function_candidate): Check for proper number of args diff --git a/gcc/cp/call.c b/gcc/cp/call.c index e6b11251457..1376303140a 100644 --- a/gcc/cp/call.c +++ b/gcc/cp/call.c @@ -3029,28 +3029,30 @@ build_op_delete_call (code, addr, size, flags, placement) } /* If the current scope isn't allowed to access DECL along - BASETYPE_PATH, give an error. */ + BASETYPE_PATH, give an error. The most derived class in + BASETYPE_PATH is the one used to qualify DECL. */ -void +int enforce_access (basetype_path, decl) - tree basetype_path, decl; + tree basetype_path; + tree decl; { - tree access = compute_access (basetype_path, decl); + int accessible; - if (access == access_private_node) - { - cp_error_at ("`%+#D' is %s", decl, - TREE_PRIVATE (decl) ? "private" - : "from private base class"); - error ("within this context"); - } - else if (access == access_protected_node) + accessible = accessible_p (basetype_path, decl); + if (!accessible) { - cp_error_at ("`%+#D' %s", decl, - TREE_PROTECTED (decl) ? "is protected" - : "has protected accessibility"); - error ("within this context"); + if (TREE_PRIVATE (decl)) + cp_error_at ("`%+#D' is private", decl); + else if (TREE_PROTECTED (decl)) + cp_error_at ("`%+#D' is protected", decl); + else + cp_error_at ("`%+#D' is inaccessible", decl); + cp_error ("within this context"); + return 0; } + + return 1; } /* Perform the conversions in CONVS on the expression EXPR. */ diff --git a/gcc/cp/class.c b/gcc/cp/class.c index 5e71c41e04c..6d8a4d61e50 100644 --- a/gcc/cp/class.c +++ b/gcc/cp/class.c @@ -1440,7 +1440,6 @@ alter_access (t, binfo, fdecl, access) else { enforce_access (binfo, fdecl); - DECL_ACCESS (fdecl) = tree_cons (t, access, DECL_ACCESS (fdecl)); return 1; } @@ -5548,18 +5547,24 @@ maybe_push_cache_obstack () into the scope of the class itself. For purposes of access checking, the inserted class name is treated as if it were a public member name. */ -tree +void build_self_reference () { tree name = constructor_name (current_class_type); tree value = build_lang_decl (TYPE_DECL, name, current_class_type); + tree saved_cas; + DECL_NONLOCAL (value) = 1; DECL_CONTEXT (value) = current_class_type; DECL_CLASS_CONTEXT (value) = current_class_type; DECL_ARTIFICIAL (value) = 1; pushdecl_class_level (value); - return value; + + saved_cas = current_access_specifier; + current_access_specifier = access_public_node; + finish_member_declaration (value); + current_access_specifier = saved_cas; } /* Returns 1 if TYPE contains only padding bytes. */ diff --git a/gcc/cp/cp-tree.h b/gcc/cp/cp-tree.h index a6f438bf63d..551803bb6ad 100644 --- a/gcc/cp/cp-tree.h +++ b/gcc/cp/cp-tree.h @@ -549,6 +549,11 @@ extern int flag_vtable_gc; /* Nonzero means make the default pedwarns warnings instead of errors. The value of this flag is ignored if -pedantic is specified. */ extern int flag_permissive; + +/* Nonzero if we want to obey access control semantics. */ + +extern int flag_access_control; + /* C++ language-specific tree codes. */ #define DEFTREECODE(SYM, NAME, TYPE, LENGTH) SYM, @@ -1086,11 +1091,16 @@ struct lang_type gcc/tree.h. In particular if D is derived from B then the BINFO for B (in D) will have a BINFO_INHERITANCE_CHAIN pointing to D. In tree.h, this pointer is described as pointing in other - direction. + direction. There is a different BINFO for each path to a virtual + base; BINFOs for virtual bases are not shared. In addition, shared + versions of each of the virtual class BINFOs are stored in + CLASSTYPE_VBASECLASSES. - After a call to get_vbase_types, the vbases are chained together in - depth-first order via TREE_CHAIN. Other than that, TREE_CHAIN is - unused. */ + We use TREE_VIA_PROTECTED and TREE_VIA_PUBLIC, but private + inheritance is indicated by the absence of the other two flags, not + by TREE_VIAR_PRIVATE, which is unused. + + The TREE_CHAIN is for scratch space in search.c. */ /* Nonzero means marked by DFS or BFS search, including searches by `get_binfo' and `get_base_distance'. */ @@ -1299,6 +1309,12 @@ struct lang_decl has `this' as volatile X *const. */ #define DECL_VOLATILE_MEMFUNC_P(NODE) (DECL_LANG_SPECIFIC(NODE)->decl_flags.volatile_memfunc) +/* Nonzero for a DECL means that this member is a non-static member. */ +#define DECL_NONSTATIC_MEMBER_P(NODE) \ + ((TREE_CODE (NODE) == FUNCTION_DECL \ + && DECL_NONSTATIC_MEMBER_FUNCTION_P (NODE)) \ + || TREE_CODE (NODE) == FIELD_DECL) + /* Nonzero for _DECL means that this member object type is mutable. */ #define DECL_MUTABLE_P(NODE) (DECL_LANG_SPECIFIC(NODE)->decl_flags.mutable_flag) @@ -2653,7 +2669,7 @@ extern tree build_op_new_call PROTO((enum tree_code, tree, tree, int)); extern tree build_op_delete_call PROTO((enum tree_code, tree, tree, int, tree)); extern int can_convert PROTO((tree, tree)); extern int can_convert_arg PROTO((tree, tree, tree)); -extern void enforce_access PROTO((tree, tree)); +extern int enforce_access PROTO((tree, tree)); extern tree convert_default_arg PROTO((tree, tree, tree)); extern tree convert_arg_to_ellipsis PROTO((tree)); @@ -2680,7 +2696,7 @@ extern tree instantiate_type PROTO((tree, tree, int)); extern void print_class_statistics PROTO((void)); extern void maybe_push_cache_obstack PROTO((void)); extern unsigned HOST_WIDE_INT skip_rtti_stuff PROTO((tree *)); -extern tree build_self_reference PROTO((void)); +extern void build_self_reference PROTO((void)); extern void warn_hidden PROTO((tree)); extern tree get_enclosing_class PROTO((tree)); int is_base_of_enclosing_class PROTO((tree, tree)); @@ -3128,7 +3144,7 @@ extern int types_overlap_p PROTO((tree, tree)); extern tree get_vbase PROTO((tree, tree)); extern tree get_binfo PROTO((tree, tree, int)); extern int get_base_distance PROTO((tree, tree, int, tree *)); -extern tree compute_access PROTO((tree, tree)); +extern int accessible_p PROTO((tree, tree)); extern tree lookup_field PROTO((tree, tree, int, int)); extern tree lookup_nested_field PROTO((tree, int)); extern int lookup_fnfields_1 PROTO((tree, tree)); @@ -3153,9 +3169,12 @@ extern void reinit_search_statistics PROTO((void)); extern tree current_scope PROTO((void)); extern tree lookup_conversions PROTO((tree)); extern tree binfo_for_vtable PROTO((tree)); -extern void dfs_walk PROTO((tree, void (*) (tree), int (*) (tree))); -extern void dfs_unmark PROTO((tree)); -extern int markedp PROTO((tree)); +extern tree dfs_walk PROTO((tree, + tree (*)(tree, void *), + tree (*) (tree, void *), + void *)); +extern tree dfs_unmark PROTO((tree, void *)); +extern tree markedp PROTO((tree, void *)); /* in semantics.c */ extern void finish_expr_stmt PROTO((tree)); diff --git a/gcc/cp/decl.c b/gcc/cp/decl.c index a386735b082..9a51e651404 100644 --- a/gcc/cp/decl.c +++ b/gcc/cp/decl.c @@ -12383,6 +12383,8 @@ xref_basetypes (code_type_node, name, ref, binfo) /* In the declaration `A : X, Y, ... Z' we mark all the types (A, X, Y, ..., Z) so we can check for duplicates. */ tree binfos; + tree base; + int i, len; enum tag_types tag_code = (enum tag_types) TREE_INT_CST_LOW (code_type_node); @@ -12395,6 +12397,13 @@ xref_basetypes (code_type_node, name, ref, binfo) len = list_length (binfo); push_obstacks (TYPE_OBSTACK (ref), TYPE_OBSTACK (ref)); + /* First, make sure that any templates in base-classes are + instantiated. This ensures that if we call ourselves recursively + we do not get confused about which classes are marked and which + are not. */ + for (base = binfo; base; base = TREE_CHAIN (base)) + complete_type (TREE_VALUE (base)); + SET_CLASSTYPE_MARKED (ref); BINFO_BASETYPES (TYPE_BINFO (ref)) = binfos = make_tree_vec (len); @@ -12433,16 +12442,14 @@ xref_basetypes (code_type_node, name, ref, binfo) GNU_xref_hier (name, basetype, via_public, via_virtual, 0); -#if 1 /* This code replaces similar code in layout_basetypes. We put the complete_type first for implicit `typename'. */ - if (TYPE_SIZE (complete_type (basetype)) == NULL_TREE + if (TYPE_SIZE (basetype) == NULL_TREE && ! (current_template_parms && uses_template_parms (basetype))) { cp_error ("base class `%T' has incomplete type", basetype); continue; } -#endif else { if (CLASSTYPE_MARKED (basetype)) diff --git a/gcc/cp/init.c b/gcc/cp/init.c index ea424b61780..98f26f59325 100644 --- a/gcc/cp/init.c +++ b/gcc/cp/init.c @@ -1490,7 +1490,8 @@ tree build_offset_ref (type, name) tree type, name; { - tree decl, fnfields, fields, t = error_mark_node; + tree decl, t = error_mark_node; + tree member; tree basebinfo = NULL_TREE; tree orig_name = name; @@ -1558,17 +1559,17 @@ build_offset_ref (type, name) decl = maybe_dummy_object (type, &basebinfo); - fnfields = lookup_fnfields (basebinfo, name, 1); - fields = lookup_field (basebinfo, name, 0, 0); + member = lookup_member (basebinfo, name, 1, 0); - if (fields == error_mark_node || fnfields == error_mark_node) + if (member == error_mark_node) return error_mark_node; /* A lot of this logic is now handled in lookup_field and lookup_fnfield. */ - if (fnfields) + if (member && TREE_CODE (member) == TREE_LIST) { /* Go from the TREE_BASELINK to the member function info. */ + tree fnfields = member; t = TREE_VALUE (fnfields); if (TREE_CODE (orig_name) == TEMPLATE_ID_EXPR) @@ -1596,26 +1597,13 @@ build_offset_ref (type, name) if (!really_overloaded_fn (t)) { - tree access; - /* Get rid of a potential OVERLOAD around it */ t = OVL_CURRENT (t); /* unique functions are handled easily. */ basebinfo = TREE_PURPOSE (fnfields); - access = compute_access (basebinfo, t); - if (access == access_protected_node) - { - cp_error_at ("member function `%#D' is protected", t); - error ("in this context"); - return error_mark_node; - } - if (access == access_private_node) - { - cp_error_at ("member function `%#D' is private", t); - error ("in this context"); - return error_mark_node; - } + if (!enforce_access (basebinfo, t)) + return error_mark_node; mark_used (t); if (DECL_STATIC_FUNCTION_P (t)) return t; @@ -1638,14 +1626,7 @@ build_offset_ref (type, name) return t; } - /* Now that we know we are looking for a field, see if we - have access to that field. Lookup_field will give us the - error message. */ - - t = lookup_field (basebinfo, name, 1, 0); - - if (t == error_mark_node) - return error_mark_node; + t = member; if (t == NULL_TREE) { @@ -1754,7 +1735,6 @@ resolve_offset_ref (exp) && (base == current_class_ref || is_dummy_object (base))) { tree basetype_path; - tree access; tree expr; if (TREE_CODE (exp) == OFFSET_REF && TREE_CODE (type) == OFFSET_TYPE) @@ -1771,19 +1751,9 @@ resolve_offset_ref (exp) } /* Kludge: we need to use basetype_path now, because convert_pointer_to will bash it. */ - access = compute_access (basetype_path, member); + enforce_access (basetype_path, member); addr = convert_pointer_to (basetype, base); - /* Issue errors if there was an access violation. */ - if (access != access_public_node) - { - cp_error_at ("member `%D' is %s", - access == access_private_node - ? "private" : "protected", - member); - cp_error ("in this context"); - } - /* Even in the case of illegal access, we form the COMPONENT_REF; that will allow better error recovery than just feeding back error_mark_node. */ diff --git a/gcc/cp/lex.c b/gcc/cp/lex.c index cff3064d3dc..6d440f42474 100644 --- a/gcc/cp/lex.c +++ b/gcc/cp/lex.c @@ -3043,14 +3043,9 @@ do_identifier (token, parsing, args) /* TREE_USED is set in `hack_identifier'. */ if (TREE_CODE (id) == CONST_DECL) { + /* Check access. */ if (IDENTIFIER_CLASS_VALUE (token) == id) - { - /* Check access. */ - tree access = compute_access (TYPE_BINFO (current_class_type), id); - if (access == access_private_node) - cp_error ("enum `%D' is private", id); - /* protected is OK, since it's an enum of `this'. */ - } + enforce_access (current_class_type, id); if (!processing_template_decl || DECL_TEMPLATE_PARM_P (id)) id = DECL_INITIAL (id); } diff --git a/gcc/cp/method.c b/gcc/cp/method.c index f5958f264f9..c2ac3f4e451 100644 --- a/gcc/cp/method.c +++ b/gcc/cp/method.c @@ -1994,29 +1994,15 @@ hack_identifier (value, name) if (DECL_LANG_SPECIFIC (value) && DECL_CLASS_CONTEXT (value) != current_class_type) { - tree path, access; + tree path; register tree context = (TREE_CODE (value) == FUNCTION_DECL && DECL_VIRTUAL_P (value)) ? DECL_CLASS_CONTEXT (value) : DECL_CONTEXT (value); get_base_distance (context, current_class_type, 0, &path); - if (path) - { - access = compute_access (path, value); - if (access != access_public_node) - { - if (TREE_CODE (value) == VAR_DECL) - error ("static member `%s' is %s", - IDENTIFIER_POINTER (name), - TREE_PRIVATE (value) ? "private" - : "from a private base class"); - else - error ("enum `%s' is from private base class", - IDENTIFIER_POINTER (name)); - return error_mark_node; - } - } + if (path && !enforce_access (current_class_type, value)) + return error_mark_node; } } else if (TREE_CODE (value) == TREE_LIST && TREE_NONLOCAL_FLAG (value)) diff --git a/gcc/cp/parse.c b/gcc/cp/parse.c index fe1c8f4dfed..5e9600f55c8 100644 --- a/gcc/cp/parse.c +++ b/gcc/cp/parse.c @@ -215,11 +215,11 @@ parse_decl(declarator, specs_attrs, attributes, initialized, decl) -#define YYFINAL 1630 +#define YYFINAL 1629 #define YYFLAG -32768 #define YYNTBASE 112 -#define YYTRANSLATE(x) ((unsigned)(x) <= 342 ? yytranslate[x] : 400) +#define YYTRANSLATE(x) ((unsigned)(x) <= 342 ? yytranslate[x] : 399) static const char yytranslate[] = { 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, @@ -313,42 +313,42 @@ static const short yyprhs[] = { 0, 1630, 1633, 1636, 1639, 1642, 1645, 1649, 1654, 1658, 1661, 1665, 1667, 1668, 1672, 1673, 1677, 1680, 1682, 1684, 1685, 1688, 1692, 1694, 1699, 1701, 1705, 1707, 1709, 1714, 1719, - 1722, 1725, 1729, 1733, 1735, 1736, 1738, 1741, 1745, 1748, - 1751, 1753, 1756, 1759, 1762, 1765, 1768, 1771, 1774, 1776, - 1779, 1782, 1786, 1789, 1792, 1797, 1802, 1805, 1807, 1813, - 1818, 1820, 1821, 1823, 1827, 1828, 1830, 1834, 1836, 1838, - 1840, 1842, 1847, 1852, 1857, 1862, 1867, 1871, 1876, 1881, - 1886, 1891, 1895, 1897, 1901, 1903, 1907, 1910, 1912, 1920, - 1921, 1924, 1926, 1929, 1930, 1933, 1938, 1943, 1946, 1951, - 1955, 1959, 1962, 1965, 1969, 1971, 1973, 1976, 1978, 1980, - 1983, 1986, 1991, 1996, 2000, 2004, 2007, 2009, 2011, 2014, - 2018, 2022, 2025, 2028, 2032, 2034, 2038, 2042, 2045, 2048, - 2052, 2054, 2059, 2063, 2068, 2072, 2074, 2077, 2080, 2083, - 2086, 2089, 2091, 2094, 2099, 2104, 2107, 2109, 2111, 2113, - 2115, 2118, 2123, 2126, 2129, 2132, 2135, 2137, 2140, 2143, - 2146, 2149, 2153, 2155, 2158, 2162, 2167, 2170, 2173, 2176, - 2179, 2182, 2185, 2190, 2193, 2195, 2198, 2201, 2205, 2207, - 2211, 2214, 2218, 2221, 2224, 2228, 2230, 2234, 2239, 2243, - 2246, 2249, 2251, 2255, 2258, 2261, 2263, 2266, 2270, 2272, - 2276, 2278, 2285, 2290, 2295, 2299, 2305, 2309, 2313, 2317, - 2320, 2322, 2324, 2327, 2330, 2333, 2334, 2336, 2338, 2341, - 2345, 2347, 2350, 2351, 2355, 2356, 2357, 2363, 2365, 2366, - 2369, 2371, 2373, 2375, 2378, 2379, 2384, 2386, 2387, 2388, - 2394, 2395, 2396, 2404, 2405, 2406, 2407, 2408, 2421, 2422, - 2423, 2431, 2432, 2438, 2439, 2447, 2448, 2453, 2456, 2459, - 2462, 2466, 2473, 2482, 2493, 2506, 2511, 2515, 2518, 2521, - 2523, 2525, 2527, 2529, 2531, 2532, 2533, 2540, 2541, 2542, - 2548, 2550, 2553, 2554, 2555, 2561, 2563, 2565, 2569, 2573, - 2576, 2579, 2582, 2585, 2588, 2590, 2593, 2594, 2596, 2597, - 2599, 2601, 2602, 2604, 2606, 2610, 2615, 2617, 2621, 2622, - 2624, 2626, 2628, 2631, 2634, 2637, 2639, 2642, 2645, 2646, - 2650, 2652, 2654, 2656, 2659, 2662, 2665, 2670, 2673, 2676, - 2679, 2682, 2685, 2688, 2690, 2693, 2695, 2698, 2700, 2702, - 2703, 2704, 2706, 2707, 2712, 2715, 2717, 2719, 2723, 2724, - 2728, 2732, 2736, 2738, 2741, 2744, 2747, 2750, 2753, 2756, + 1722, 1725, 1729, 1733, 1735, 1736, 1738, 1742, 1745, 1748, + 1750, 1753, 1756, 1759, 1762, 1765, 1768, 1771, 1773, 1776, + 1779, 1783, 1786, 1789, 1794, 1799, 1802, 1804, 1810, 1815, + 1817, 1818, 1820, 1824, 1825, 1827, 1831, 1833, 1835, 1837, + 1839, 1844, 1849, 1854, 1859, 1864, 1868, 1873, 1878, 1883, + 1888, 1892, 1894, 1898, 1900, 1904, 1907, 1909, 1917, 1918, + 1921, 1923, 1926, 1927, 1930, 1935, 1940, 1943, 1948, 1952, + 1956, 1959, 1962, 1966, 1968, 1970, 1973, 1975, 1977, 1980, + 1983, 1988, 1993, 1997, 2001, 2004, 2006, 2008, 2011, 2015, + 2019, 2022, 2025, 2029, 2031, 2035, 2039, 2042, 2045, 2049, + 2051, 2056, 2060, 2065, 2069, 2071, 2074, 2077, 2080, 2083, + 2086, 2088, 2091, 2096, 2101, 2104, 2106, 2108, 2110, 2112, + 2115, 2120, 2123, 2126, 2129, 2132, 2134, 2137, 2140, 2143, + 2146, 2150, 2152, 2155, 2159, 2164, 2167, 2170, 2173, 2176, + 2179, 2182, 2187, 2190, 2192, 2195, 2198, 2202, 2204, 2208, + 2211, 2215, 2218, 2221, 2225, 2227, 2231, 2236, 2240, 2243, + 2246, 2248, 2252, 2255, 2258, 2260, 2263, 2267, 2269, 2273, + 2275, 2282, 2287, 2292, 2296, 2302, 2306, 2310, 2314, 2317, + 2319, 2321, 2324, 2327, 2330, 2331, 2333, 2335, 2338, 2342, + 2344, 2347, 2348, 2352, 2353, 2354, 2360, 2362, 2363, 2366, + 2368, 2370, 2372, 2375, 2376, 2381, 2383, 2384, 2385, 2391, + 2392, 2393, 2401, 2402, 2403, 2404, 2405, 2418, 2419, 2420, + 2428, 2429, 2435, 2436, 2444, 2445, 2450, 2453, 2456, 2459, + 2463, 2470, 2479, 2490, 2503, 2508, 2512, 2515, 2518, 2520, + 2522, 2524, 2526, 2528, 2529, 2530, 2537, 2538, 2539, 2545, + 2547, 2550, 2551, 2552, 2558, 2560, 2562, 2566, 2570, 2573, + 2576, 2579, 2582, 2585, 2587, 2590, 2591, 2593, 2594, 2596, + 2598, 2599, 2601, 2603, 2607, 2612, 2614, 2618, 2619, 2621, + 2623, 2625, 2628, 2631, 2634, 2636, 2639, 2642, 2643, 2647, + 2649, 2651, 2653, 2656, 2659, 2662, 2667, 2670, 2673, 2676, + 2679, 2682, 2685, 2687, 2690, 2692, 2695, 2697, 2699, 2700, + 2701, 2703, 2704, 2709, 2712, 2714, 2716, 2720, 2721, 2725, + 2729, 2733, 2735, 2738, 2741, 2744, 2747, 2750, 2753, 2756, 2759, 2762, 2765, 2768, 2771, 2774, 2777, 2780, 2783, 2786, - 2789, 2792, 2795, 2798, 2801, 2804, 2807, 2811, 2814, 2817, - 2820, 2823, 2827, 2830, 2833, 2838, 2843, 2847 + 2789, 2792, 2795, 2798, 2801, 2804, 2808, 2811, 2814, 2817, + 2820, 2824, 2827, 2830, 2835, 2840, 2844 }; static const short yyrhs[] = { -1, @@ -360,16 +360,16 @@ static const short yyrhs[] = { -1, 0, 0, 44, 163, 58, 123, 115, 109, 0, 0, 44, 58, 124, 115, 109, 0, 125, 0, 127, 60, 0, 129, 0, 118, 122, 0, 0, 44, 163, 64, - 126, 132, 60, 0, 46, 314, 0, 46, 328, 314, - 0, 46, 328, 209, 0, 46, 131, 163, 0, 46, - 328, 163, 0, 46, 328, 131, 163, 0, 0, 46, + 126, 132, 60, 0, 46, 313, 0, 46, 327, 313, + 0, 46, 327, 209, 0, 46, 131, 163, 0, 46, + 327, 163, 0, 46, 327, 131, 163, 0, 0, 46, 44, 130, 132, 60, 0, 57, 54, 0, 131, 57, - 54, 0, 209, 0, 314, 0, 328, 314, 0, 328, + 54, 0, 209, 0, 313, 0, 327, 313, 0, 327, 209, 0, 98, 0, 133, 98, 0, 0, 48, 74, 135, 136, 75, 0, 48, 74, 75, 0, 140, 0, 136, 59, 140, 0, 163, 0, 0, 268, 137, 0, 45, 137, 0, 134, 268, 137, 0, 138, 0, 138, - 64, 225, 0, 391, 0, 391, 64, 204, 0, 139, + 64, 225, 0, 390, 0, 390, 64, 204, 0, 139, 0, 139, 64, 184, 0, 134, 142, 0, 134, 1, 0, 148, 147, 0, 143, 0, 141, 0, 133, 116, 148, 117, 147, 0, 133, 116, 143, 117, 0, 118, @@ -379,33 +379,33 @@ static const short yyrhs[] = { -1, 166, 60, 0, 226, 60, 0, 1, 60, 0, 1, 109, 0, 60, 0, 220, 0, 159, 0, 0, 158, 0, 158, 60, 0, 0, 107, 0, 154, 146, 145, - 338, 0, 154, 146, 362, 0, 154, 146, 1, 0, - 0, 319, 5, 93, 150, 382, 108, 300, 394, 0, - 319, 5, 47, 300, 394, 0, 0, 328, 319, 5, - 93, 151, 382, 108, 300, 394, 0, 328, 319, 5, - 47, 300, 394, 0, 0, 319, 179, 93, 152, 382, - 108, 300, 394, 0, 319, 179, 47, 300, 394, 0, - 0, 328, 319, 179, 93, 153, 382, 108, 300, 394, - 0, 328, 319, 179, 47, 300, 394, 0, 226, 223, - 0, 229, 311, 0, 311, 0, 229, 149, 0, 149, - 0, 5, 93, 382, 108, 300, 394, 0, 5, 47, - 300, 394, 0, 179, 93, 382, 108, 300, 394, 0, - 179, 47, 300, 394, 0, 229, 155, 0, 155, 0, - 226, 223, 0, 229, 311, 0, 311, 0, 229, 149, + 337, 0, 154, 146, 361, 0, 154, 146, 1, 0, + 0, 318, 5, 93, 150, 381, 108, 299, 393, 0, + 318, 5, 47, 299, 393, 0, 0, 327, 318, 5, + 93, 151, 381, 108, 299, 393, 0, 327, 318, 5, + 47, 299, 393, 0, 0, 318, 179, 93, 152, 381, + 108, 299, 393, 0, 318, 179, 47, 299, 393, 0, + 0, 327, 318, 179, 93, 153, 381, 108, 299, 393, + 0, 327, 318, 179, 47, 299, 393, 0, 226, 223, + 0, 229, 310, 0, 310, 0, 229, 149, 0, 149, + 0, 5, 93, 381, 108, 299, 393, 0, 5, 47, + 299, 393, 0, 179, 93, 381, 108, 299, 393, 0, + 179, 47, 299, 393, 0, 229, 155, 0, 155, 0, + 226, 223, 0, 229, 310, 0, 310, 0, 229, 149, 0, 149, 0, 25, 3, 0, 157, 253, 0, 157, 93, 196, 108, 0, 157, 47, 0, 62, 160, 161, 0, 0, 0, 162, 0, 161, 59, 162, 0, 161, 1, 0, 93, 196, 108, 0, 47, 0, 164, 93, - 196, 108, 0, 164, 47, 0, 306, 93, 196, 108, - 0, 306, 47, 0, 321, 93, 196, 108, 0, 321, + 196, 108, 0, 164, 47, 0, 305, 93, 196, 108, + 0, 305, 47, 0, 320, 93, 196, 108, 0, 320, 47, 0, 3, 0, 4, 0, 5, 0, 56, 0, 57, 0, 3, 0, 56, 0, 57, 0, 104, 0, 103, 0, 105, 0, 0, 48, 175, 232, 60, 167, 176, 0, 0, 48, 175, 226, 223, 168, 176, 0, - 0, 48, 175, 311, 169, 176, 0, 0, 48, 175, + 0, 48, 175, 310, 169, 176, 0, 0, 48, 175, 149, 170, 176, 0, 0, 7, 48, 175, 232, 60, 171, 176, 0, 0, 7, 48, 175, 226, 223, 172, - 176, 0, 0, 7, 48, 175, 311, 173, 176, 0, + 176, 0, 0, 7, 48, 175, 310, 173, 176, 0, 0, 7, 48, 175, 149, 174, 176, 0, 0, 0, 56, 74, 182, 181, 180, 0, 4, 74, 182, 181, 180, 0, 179, 0, 177, 0, 163, 74, 182, 75, @@ -415,17 +415,17 @@ static const short yyrhs[] = { -1, 78, 0, 86, 0, 87, 0, 110, 0, 195, 0, 204, 0, 47, 0, 93, 186, 108, 0, 47, 0, 93, 190, 108, 0, 0, 190, 0, 1, 0, 0, - 372, 223, 237, 246, 64, 191, 254, 0, 186, 0, - 109, 0, 335, 333, 109, 0, 335, 333, 1, 109, - 0, 335, 1, 109, 0, 0, 58, 194, 192, 0, - 347, 0, 204, 59, 204, 0, 204, 59, 1, 0, + 371, 223, 237, 246, 64, 191, 254, 0, 186, 0, + 109, 0, 334, 332, 109, 0, 334, 332, 1, 109, + 0, 334, 1, 109, 0, 0, 58, 194, 192, 0, + 346, 0, 204, 59, 204, 0, 204, 59, 1, 0, 195, 59, 204, 0, 195, 59, 1, 0, 204, 0, 195, 0, 214, 0, 118, 203, 0, 80, 203, 0, 70, 203, 0, 88, 203, 0, 185, 203, 0, 67, 163, 0, 13, 197, 0, 13, 93, 225, 108, 0, - 29, 197, 0, 29, 93, 225, 108, 0, 216, 299, - 0, 216, 299, 201, 0, 216, 200, 299, 0, 216, - 200, 299, 201, 0, 216, 93, 199, 225, 198, 0, + 29, 197, 0, 29, 93, 225, 108, 0, 216, 298, + 0, 216, 298, 201, 0, 216, 200, 298, 0, 216, + 200, 298, 201, 0, 216, 93, 199, 225, 198, 0, 216, 93, 199, 225, 198, 201, 0, 216, 200, 93, 199, 225, 198, 0, 216, 200, 93, 199, 225, 198, 201, 0, 217, 203, 0, 217, 94, 111, 203, 0, @@ -442,50 +442,50 @@ static const short yyrhs[] = { -1, 204, 74, 204, 0, 204, 75, 204, 0, 204, 72, 204, 0, 204, 71, 204, 0, 204, 70, 204, 0, 204, 68, 204, 0, 204, 69, 204, 0, 204, 67, - 204, 0, 204, 66, 204, 0, 204, 65, 377, 62, + 204, 0, 204, 66, 204, 0, 204, 65, 376, 62, 204, 0, 204, 64, 204, 0, 204, 63, 204, 0, - 61, 0, 61, 204, 0, 88, 392, 163, 0, 88, - 392, 177, 0, 207, 0, 399, 0, 3, 0, 56, + 61, 0, 61, 204, 0, 88, 391, 163, 0, 88, + 391, 177, 0, 207, 0, 398, 0, 3, 0, 56, 0, 57, 0, 0, 6, 74, 206, 182, 181, 0, - 399, 74, 206, 182, 181, 0, 48, 163, 74, 182, - 181, 0, 48, 6, 74, 182, 181, 0, 48, 399, + 398, 74, 206, 182, 181, 0, 48, 163, 74, 182, + 181, 0, 48, 6, 74, 182, 181, 0, 48, 398, 74, 182, 181, 0, 205, 0, 4, 0, 5, 0, 211, 0, 247, 211, 0, 205, 0, 80, 210, 0, 70, 210, 0, 93, 210, 108, 0, 3, 74, 182, - 181, 0, 57, 74, 183, 181, 0, 313, 0, 205, + 181, 0, 57, 74, 183, 181, 0, 312, 0, 205, 0, 212, 0, 93, 210, 108, 0, 205, 0, 10, 0, 218, 0, 219, 0, 93, 186, 108, 0, 93, 210, 108, 0, 93, 1, 108, 0, 0, 93, 215, - 339, 108, 0, 205, 93, 196, 108, 0, 205, 47, + 338, 108, 0, 205, 93, 196, 108, 0, 205, 47, 0, 214, 93, 196, 108, 0, 214, 47, 0, 214, 94, 186, 111, 0, 214, 86, 0, 214, 87, 0, - 40, 0, 9, 93, 196, 108, 0, 317, 0, 50, + 40, 0, 9, 93, 196, 108, 0, 316, 0, 50, 74, 225, 75, 93, 186, 108, 0, 51, 74, 225, 75, 93, 186, 108, 0, 52, 74, 225, 75, 93, 186, 108, 0, 53, 74, 225, 75, 93, 186, 108, 0, 49, 93, 186, 108, 0, 49, 93, 225, 108, - 0, 328, 3, 0, 328, 207, 0, 328, 399, 0, - 316, 0, 316, 93, 196, 108, 0, 316, 47, 0, + 0, 327, 3, 0, 327, 207, 0, 327, 398, 0, + 315, 0, 315, 93, 196, 108, 0, 315, 47, 0, 221, 208, 0, 221, 208, 93, 196, 108, 0, 221, - 208, 47, 0, 221, 209, 0, 221, 316, 0, 221, + 208, 47, 0, 221, 209, 0, 221, 315, 0, 221, 209, 93, 196, 108, 0, 221, 209, 47, 0, 221, - 316, 93, 196, 108, 0, 221, 316, 47, 0, 221, + 315, 93, 196, 108, 0, 221, 315, 47, 0, 221, 88, 8, 47, 0, 221, 8, 54, 88, 8, 47, - 0, 221, 1, 0, 39, 0, 328, 39, 0, 38, - 0, 328, 217, 0, 42, 0, 43, 0, 11, 0, + 0, 221, 1, 0, 39, 0, 327, 39, 0, 38, + 0, 327, 217, 0, 42, 0, 43, 0, 11, 0, 219, 11, 0, 0, 214, 92, 0, 214, 91, 0, 232, 234, 60, 0, 226, 234, 60, 0, 229, 235, 60, 0, 226, 60, 0, 229, 60, 0, 118, 222, - 0, 305, 0, 311, 0, 47, 0, 224, 47, 0, - 230, 331, 0, 301, 331, 0, 232, 331, 0, 230, - 0, 301, 0, 230, 0, 227, 0, 229, 232, 0, + 0, 304, 0, 310, 0, 47, 0, 224, 47, 0, + 230, 330, 0, 300, 330, 0, 232, 330, 0, 230, + 0, 300, 0, 230, 0, 227, 0, 229, 232, 0, 232, 228, 0, 232, 231, 228, 0, 229, 232, 228, 0, 229, 232, 231, 0, 229, 232, 231, 228, 0, 7, 0, 228, 233, 0, 228, 7, 0, 228, 247, - 0, 247, 0, 301, 0, 7, 0, 229, 9, 0, + 0, 247, 0, 300, 0, 7, 0, 229, 9, 0, 229, 7, 0, 229, 247, 0, 247, 0, 232, 0, - 301, 232, 0, 232, 231, 0, 301, 232, 231, 0, - 233, 0, 231, 233, 0, 261, 0, 8, 0, 307, + 300, 232, 0, 232, 231, 0, 300, 232, 231, 0, + 233, 0, 231, 233, 0, 261, 0, 8, 0, 306, 0, 28, 93, 186, 108, 0, 28, 93, 225, 108, 0, 30, 93, 186, 108, 0, 30, 93, 225, 108, 0, 8, 0, 9, 0, 261, 0, 242, 0, 234, @@ -493,8 +493,8 @@ static const short yyrhs[] = { -1, 0, 236, 59, 238, 0, 0, 119, 93, 219, 108, 0, 0, 223, 237, 246, 64, 239, 254, 0, 223, 237, 246, 0, 0, 246, 64, 241, 254, 0, 246, - 0, 223, 237, 240, 0, 311, 237, 240, 0, 0, - 311, 237, 245, 240, 0, 149, 237, 246, 0, 0, + 0, 223, 237, 240, 0, 310, 237, 240, 0, 0, + 310, 237, 245, 240, 0, 149, 237, 246, 0, 0, 247, 0, 248, 0, 247, 248, 0, 31, 93, 93, 249, 108, 108, 0, 250, 0, 249, 59, 250, 0, 0, 251, 0, 251, 93, 3, 108, 0, 251, 93, @@ -505,138 +505,138 @@ static const short yyrhs[] = { -1, 109, 0, 1, 0, 254, 0, 255, 59, 254, 0, 94, 204, 111, 254, 0, 163, 62, 254, 0, 255, 59, 163, 62, 254, 0, 97, 0, 256, 146, 145, - 338, 0, 256, 146, 362, 0, 256, 146, 1, 0, + 337, 0, 256, 146, 361, 0, 256, 146, 1, 0, 0, 258, 257, 147, 0, 102, 204, 107, 0, 102, 1, 107, 0, 0, 260, 259, 0, 260, 1, 0, - 0, 14, 163, 58, 262, 297, 267, 109, 0, 14, - 163, 58, 109, 0, 0, 14, 58, 263, 297, 267, + 0, 14, 163, 58, 262, 296, 267, 109, 0, 14, + 163, 58, 109, 0, 0, 14, 58, 263, 296, 267, 109, 0, 14, 58, 109, 0, 14, 163, 0, 14, - 326, 0, 45, 321, 0, 0, 0, 276, 282, 284, + 325, 0, 45, 320, 0, 0, 0, 276, 282, 283, 109, 246, 264, 260, 265, 258, 0, 276, 0, 0, 59, 0, 0, 59, 0, 36, 0, 268, 7, 0, 268, 8, 0, 268, 9, 0, 268, 36, 0, 268, 247, 0, 268, 163, 0, 268, 165, 0, 269, 58, - 0, 269, 62, 0, 268, 319, 163, 0, 268, 328, - 319, 163, 0, 268, 328, 163, 0, 268, 178, 0, - 268, 319, 178, 0, 269, 0, 0, 270, 273, 277, + 0, 269, 62, 0, 268, 318, 163, 0, 268, 327, + 318, 163, 0, 268, 327, 163, 0, 268, 178, 0, + 268, 318, 178, 0, 269, 0, 0, 270, 273, 277, 0, 0, 271, 274, 277, 0, 268, 58, 0, 275, - 0, 272, 0, 0, 62, 392, 0, 62, 392, 278, - 0, 279, 0, 278, 59, 392, 279, 0, 280, 0, - 281, 392, 280, 0, 321, 0, 306, 0, 30, 93, - 186, 108, 0, 30, 93, 225, 108, 0, 37, 392, - 0, 7, 392, 0, 281, 37, 392, 0, 281, 7, - 392, 0, 58, 0, 0, 283, 0, 283, 286, 0, - 284, 285, 286, 0, 284, 285, 0, 37, 62, 0, - 287, 0, 286, 287, 0, 288, 60, 0, 288, 109, - 0, 156, 62, 0, 156, 95, 0, 156, 25, 0, - 156, 58, 0, 60, 0, 118, 287, 0, 134, 287, - 0, 134, 226, 60, 0, 226, 289, 0, 229, 290, - 0, 311, 237, 246, 253, 0, 149, 237, 246, 253, - 0, 62, 204, 0, 1, 0, 229, 155, 237, 246, - 253, 0, 155, 237, 246, 253, 0, 127, 0, 0, - 291, 0, 289, 59, 292, 0, 0, 294, 0, 290, - 59, 296, 0, 293, 0, 294, 0, 295, 0, 296, - 0, 305, 237, 246, 253, 0, 4, 62, 204, 246, - 0, 311, 237, 246, 253, 0, 149, 237, 246, 253, - 0, 3, 62, 204, 246, 0, 62, 204, 246, 0, - 305, 237, 246, 253, 0, 4, 62, 204, 246, 0, - 311, 237, 246, 253, 0, 3, 62, 204, 246, 0, - 62, 204, 246, 0, 298, 0, 297, 59, 298, 0, - 163, 0, 163, 64, 204, 0, 372, 329, 0, 372, - 0, 93, 199, 225, 198, 94, 186, 111, 0, 0, - 300, 9, 0, 9, 0, 301, 9, 0, 0, 302, - 186, 0, 302, 93, 196, 108, 0, 302, 93, 382, - 108, 0, 302, 47, 0, 302, 93, 1, 108, 0, - 80, 301, 305, 0, 70, 301, 305, 0, 80, 305, - 0, 70, 305, 0, 327, 300, 305, 0, 309, 0, - 318, 0, 328, 318, 0, 306, 0, 308, 0, 328, - 308, 0, 319, 318, 0, 309, 304, 300, 394, 0, - 309, 94, 303, 111, 0, 309, 94, 111, 0, 93, - 305, 108, 0, 319, 318, 0, 318, 0, 311, 0, - 247, 311, 0, 80, 301, 310, 0, 70, 301, 310, - 0, 80, 310, 0, 70, 310, 0, 327, 300, 310, - 0, 213, 0, 80, 301, 310, 0, 70, 301, 310, - 0, 80, 312, 0, 70, 312, 0, 327, 300, 310, - 0, 313, 0, 213, 304, 300, 394, 0, 93, 312, - 108, 0, 213, 94, 303, 111, 0, 213, 94, 111, - 0, 315, 0, 319, 212, 0, 319, 209, 0, 319, - 208, 0, 319, 205, 0, 319, 208, 0, 315, 0, - 328, 315, 0, 232, 93, 196, 108, 0, 232, 93, - 210, 108, 0, 232, 224, 0, 4, 0, 5, 0, - 177, 0, 320, 0, 319, 320, 0, 319, 48, 325, - 54, 0, 4, 54, 0, 5, 54, 0, 57, 54, - 0, 177, 54, 0, 322, 0, 328, 322, 0, 323, - 163, 0, 323, 177, 0, 323, 325, 0, 323, 48, - 325, 0, 324, 0, 323, 324, 0, 323, 325, 54, - 0, 323, 48, 325, 54, 0, 4, 54, 0, 5, - 54, 0, 177, 54, 0, 56, 54, 0, 3, 54, - 0, 57, 54, 0, 163, 74, 182, 181, 0, 328, - 318, 0, 308, 0, 328, 308, 0, 319, 80, 0, - 328, 319, 80, 0, 54, 0, 80, 300, 329, 0, - 80, 300, 0, 70, 300, 329, 0, 70, 300, 0, - 327, 300, 0, 327, 300, 329, 0, 330, 0, 94, - 186, 111, 0, 330, 94, 303, 111, 0, 80, 301, - 331, 0, 80, 331, 0, 80, 301, 0, 80, 0, - 70, 301, 331, 0, 70, 331, 0, 70, 301, 0, - 70, 0, 327, 300, 0, 327, 300, 331, 0, 332, - 0, 93, 331, 108, 0, 90, 0, 332, 93, 382, - 108, 300, 394, 0, 332, 47, 300, 394, 0, 332, - 94, 303, 111, 0, 332, 94, 111, 0, 93, 383, - 108, 300, 394, 0, 202, 300, 394, 0, 224, 300, - 394, 0, 94, 303, 111, 0, 94, 111, 0, 346, - 0, 334, 0, 333, 346, 0, 333, 334, 0, 1, - 60, 0, 0, 336, 0, 337, 0, 336, 337, 0, - 33, 252, 60, 0, 339, 0, 1, 339, 0, 0, - 58, 340, 192, 0, 0, 0, 15, 342, 188, 343, - 344, 0, 339, 0, 0, 345, 347, 0, 339, 0, - 347, 0, 222, 0, 186, 60, 0, 0, 341, 16, - 348, 344, 0, 341, 0, 0, 0, 17, 349, 188, - 350, 193, 0, 0, 0, 18, 351, 344, 17, 352, - 187, 60, 0, 0, 0, 0, 0, 19, 353, 93, - 375, 354, 189, 60, 355, 377, 108, 356, 193, 0, - 0, 0, 20, 357, 93, 190, 108, 358, 344, 0, - 0, 21, 204, 62, 359, 346, 0, 0, 21, 204, - 12, 204, 62, 360, 346, 0, 0, 22, 62, 361, - 346, 0, 23, 60, 0, 24, 60, 0, 25, 60, - 0, 25, 186, 60, 0, 119, 376, 93, 219, 108, - 60, 0, 119, 376, 93, 219, 62, 378, 108, 60, - 0, 119, 376, 93, 219, 62, 378, 62, 378, 108, - 60, 0, 119, 376, 93, 219, 62, 378, 62, 378, - 62, 381, 108, 60, 0, 26, 80, 186, 60, 0, - 26, 163, 60, 0, 374, 346, 0, 374, 109, 0, - 60, 0, 365, 0, 129, 0, 128, 0, 125, 0, - 0, 0, 95, 363, 145, 339, 364, 368, 0, 0, - 0, 95, 366, 339, 367, 368, 0, 369, 0, 368, - 369, 0, 0, 0, 96, 370, 373, 371, 339, 0, - 230, 0, 301, 0, 93, 12, 108, 0, 93, 391, - 108, 0, 3, 62, 0, 56, 62, 0, 4, 62, - 0, 5, 62, 0, 377, 60, 0, 222, 0, 58, - 192, 0, 0, 9, 0, 0, 186, 0, 1, 0, - 0, 379, 0, 380, 0, 379, 59, 380, 0, 11, - 93, 186, 108, 0, 11, 0, 381, 59, 11, 0, - 0, 383, 0, 225, 0, 387, 0, 388, 12, 0, - 387, 12, 0, 225, 12, 0, 12, 0, 387, 62, - 0, 225, 62, 0, 0, 64, 385, 386, 0, 101, - 0, 254, 0, 389, 0, 391, 384, 0, 388, 390, - 0, 388, 393, 0, 388, 393, 64, 254, 0, 387, - 59, 0, 225, 59, 0, 227, 223, 0, 230, 223, - 0, 232, 223, 0, 227, 331, 0, 227, 0, 229, - 311, 0, 391, 0, 391, 384, 0, 389, 0, 225, - 0, 0, 0, 311, 0, 0, 61, 93, 396, 108, - 0, 61, 47, 0, 225, 0, 395, 0, 396, 59, - 395, 0, 0, 80, 300, 397, 0, 70, 300, 397, - 0, 327, 300, 397, 0, 41, 0, 398, 80, 0, - 398, 81, 0, 398, 82, 0, 398, 78, 0, 398, - 79, 0, 398, 70, 0, 398, 68, 0, 398, 69, - 0, 398, 88, 0, 398, 59, 0, 398, 73, 0, - 398, 74, 0, 398, 75, 0, 398, 72, 0, 398, - 63, 0, 398, 64, 0, 398, 76, 0, 398, 77, - 0, 398, 86, 0, 398, 87, 0, 398, 67, 0, - 398, 66, 0, 398, 110, 0, 398, 65, 62, 0, - 398, 71, 0, 398, 91, 0, 398, 83, 0, 398, - 47, 0, 398, 94, 111, 0, 398, 39, 0, 398, - 38, 0, 398, 39, 94, 111, 0, 398, 38, 94, - 111, 0, 398, 372, 397, 0, 398, 1, 0 + 0, 272, 0, 0, 62, 391, 0, 62, 391, 278, + 0, 279, 0, 278, 59, 391, 279, 0, 280, 0, + 281, 391, 280, 0, 320, 0, 305, 0, 30, 93, + 186, 108, 0, 30, 93, 225, 108, 0, 37, 391, + 0, 7, 391, 0, 281, 37, 391, 0, 281, 7, + 391, 0, 58, 0, 0, 285, 0, 283, 284, 285, + 0, 283, 284, 0, 37, 62, 0, 286, 0, 285, + 286, 0, 287, 60, 0, 287, 109, 0, 156, 62, + 0, 156, 95, 0, 156, 25, 0, 156, 58, 0, + 60, 0, 118, 286, 0, 134, 286, 0, 134, 226, + 60, 0, 226, 288, 0, 229, 289, 0, 310, 237, + 246, 253, 0, 149, 237, 246, 253, 0, 62, 204, + 0, 1, 0, 229, 155, 237, 246, 253, 0, 155, + 237, 246, 253, 0, 127, 0, 0, 290, 0, 288, + 59, 291, 0, 0, 293, 0, 289, 59, 295, 0, + 292, 0, 293, 0, 294, 0, 295, 0, 304, 237, + 246, 253, 0, 4, 62, 204, 246, 0, 310, 237, + 246, 253, 0, 149, 237, 246, 253, 0, 3, 62, + 204, 246, 0, 62, 204, 246, 0, 304, 237, 246, + 253, 0, 4, 62, 204, 246, 0, 310, 237, 246, + 253, 0, 3, 62, 204, 246, 0, 62, 204, 246, + 0, 297, 0, 296, 59, 297, 0, 163, 0, 163, + 64, 204, 0, 371, 328, 0, 371, 0, 93, 199, + 225, 198, 94, 186, 111, 0, 0, 299, 9, 0, + 9, 0, 300, 9, 0, 0, 301, 186, 0, 301, + 93, 196, 108, 0, 301, 93, 381, 108, 0, 301, + 47, 0, 301, 93, 1, 108, 0, 80, 300, 304, + 0, 70, 300, 304, 0, 80, 304, 0, 70, 304, + 0, 326, 299, 304, 0, 308, 0, 317, 0, 327, + 317, 0, 305, 0, 307, 0, 327, 307, 0, 318, + 317, 0, 308, 303, 299, 393, 0, 308, 94, 302, + 111, 0, 308, 94, 111, 0, 93, 304, 108, 0, + 318, 317, 0, 317, 0, 310, 0, 247, 310, 0, + 80, 300, 309, 0, 70, 300, 309, 0, 80, 309, + 0, 70, 309, 0, 326, 299, 309, 0, 213, 0, + 80, 300, 309, 0, 70, 300, 309, 0, 80, 311, + 0, 70, 311, 0, 326, 299, 309, 0, 312, 0, + 213, 303, 299, 393, 0, 93, 311, 108, 0, 213, + 94, 302, 111, 0, 213, 94, 111, 0, 314, 0, + 318, 212, 0, 318, 209, 0, 318, 208, 0, 318, + 205, 0, 318, 208, 0, 314, 0, 327, 314, 0, + 232, 93, 196, 108, 0, 232, 93, 210, 108, 0, + 232, 224, 0, 4, 0, 5, 0, 177, 0, 319, + 0, 318, 319, 0, 318, 48, 324, 54, 0, 4, + 54, 0, 5, 54, 0, 57, 54, 0, 177, 54, + 0, 321, 0, 327, 321, 0, 322, 163, 0, 322, + 177, 0, 322, 324, 0, 322, 48, 324, 0, 323, + 0, 322, 323, 0, 322, 324, 54, 0, 322, 48, + 324, 54, 0, 4, 54, 0, 5, 54, 0, 177, + 54, 0, 56, 54, 0, 3, 54, 0, 57, 54, + 0, 163, 74, 182, 181, 0, 327, 317, 0, 307, + 0, 327, 307, 0, 318, 80, 0, 327, 318, 80, + 0, 54, 0, 80, 299, 328, 0, 80, 299, 0, + 70, 299, 328, 0, 70, 299, 0, 326, 299, 0, + 326, 299, 328, 0, 329, 0, 94, 186, 111, 0, + 329, 94, 302, 111, 0, 80, 300, 330, 0, 80, + 330, 0, 80, 300, 0, 80, 0, 70, 300, 330, + 0, 70, 330, 0, 70, 300, 0, 70, 0, 326, + 299, 0, 326, 299, 330, 0, 331, 0, 93, 330, + 108, 0, 90, 0, 331, 93, 381, 108, 299, 393, + 0, 331, 47, 299, 393, 0, 331, 94, 302, 111, + 0, 331, 94, 111, 0, 93, 382, 108, 299, 393, + 0, 202, 299, 393, 0, 224, 299, 393, 0, 94, + 302, 111, 0, 94, 111, 0, 345, 0, 333, 0, + 332, 345, 0, 332, 333, 0, 1, 60, 0, 0, + 335, 0, 336, 0, 335, 336, 0, 33, 252, 60, + 0, 338, 0, 1, 338, 0, 0, 58, 339, 192, + 0, 0, 0, 15, 341, 188, 342, 343, 0, 338, + 0, 0, 344, 346, 0, 338, 0, 346, 0, 222, + 0, 186, 60, 0, 0, 340, 16, 347, 343, 0, + 340, 0, 0, 0, 17, 348, 188, 349, 193, 0, + 0, 0, 18, 350, 343, 17, 351, 187, 60, 0, + 0, 0, 0, 0, 19, 352, 93, 374, 353, 189, + 60, 354, 376, 108, 355, 193, 0, 0, 0, 20, + 356, 93, 190, 108, 357, 343, 0, 0, 21, 204, + 62, 358, 345, 0, 0, 21, 204, 12, 204, 62, + 359, 345, 0, 0, 22, 62, 360, 345, 0, 23, + 60, 0, 24, 60, 0, 25, 60, 0, 25, 186, + 60, 0, 119, 375, 93, 219, 108, 60, 0, 119, + 375, 93, 219, 62, 377, 108, 60, 0, 119, 375, + 93, 219, 62, 377, 62, 377, 108, 60, 0, 119, + 375, 93, 219, 62, 377, 62, 377, 62, 380, 108, + 60, 0, 26, 80, 186, 60, 0, 26, 163, 60, + 0, 373, 345, 0, 373, 109, 0, 60, 0, 364, + 0, 129, 0, 128, 0, 125, 0, 0, 0, 95, + 362, 145, 338, 363, 367, 0, 0, 0, 95, 365, + 338, 366, 367, 0, 368, 0, 367, 368, 0, 0, + 0, 96, 369, 372, 370, 338, 0, 230, 0, 300, + 0, 93, 12, 108, 0, 93, 390, 108, 0, 3, + 62, 0, 56, 62, 0, 4, 62, 0, 5, 62, + 0, 376, 60, 0, 222, 0, 58, 192, 0, 0, + 9, 0, 0, 186, 0, 1, 0, 0, 378, 0, + 379, 0, 378, 59, 379, 0, 11, 93, 186, 108, + 0, 11, 0, 380, 59, 11, 0, 0, 382, 0, + 225, 0, 386, 0, 387, 12, 0, 386, 12, 0, + 225, 12, 0, 12, 0, 386, 62, 0, 225, 62, + 0, 0, 64, 384, 385, 0, 101, 0, 254, 0, + 388, 0, 390, 383, 0, 387, 389, 0, 387, 392, + 0, 387, 392, 64, 254, 0, 386, 59, 0, 225, + 59, 0, 227, 223, 0, 230, 223, 0, 232, 223, + 0, 227, 330, 0, 227, 0, 229, 310, 0, 390, + 0, 390, 383, 0, 388, 0, 225, 0, 0, 0, + 310, 0, 0, 61, 93, 395, 108, 0, 61, 47, + 0, 225, 0, 394, 0, 395, 59, 394, 0, 0, + 80, 299, 396, 0, 70, 299, 396, 0, 326, 299, + 396, 0, 41, 0, 397, 80, 0, 397, 81, 0, + 397, 82, 0, 397, 78, 0, 397, 79, 0, 397, + 70, 0, 397, 68, 0, 397, 69, 0, 397, 88, + 0, 397, 59, 0, 397, 73, 0, 397, 74, 0, + 397, 75, 0, 397, 72, 0, 397, 63, 0, 397, + 64, 0, 397, 76, 0, 397, 77, 0, 397, 86, + 0, 397, 87, 0, 397, 67, 0, 397, 66, 0, + 397, 110, 0, 397, 65, 62, 0, 397, 71, 0, + 397, 91, 0, 397, 83, 0, 397, 47, 0, 397, + 94, 111, 0, 397, 39, 0, 397, 38, 0, 397, + 39, 94, 111, 0, 397, 38, 94, 111, 0, 397, + 371, 396, 0, 397, 1, 0 }; #endif @@ -695,42 +695,42 @@ static const short yyrline[] = { 0, 2189, 2193, 2201, 2204, 2206, 2210, 2216, 2221, 2226, 2228, 2232, 2235, 2239, 2245, 2248, 2270, 2276, 2278, 2281, 2284, 2286, 2290, 2292, 2296, 2301, 2307, 2310, 2311, 2332, 2355, - 2357, 2361, 2372, 2386, 2391, 2398, 2400, 2401, 2402, 2405, - 2420, 2425, 2431, 2433, 2438, 2440, 2442, 2444, 2446, 2448, - 2451, 2461, 2468, 2493, 2499, 2502, 2505, 2507, 2518, 2523, - 2526, 2531, 2534, 2541, 2551, 2554, 2561, 2571, 2573, 2576, - 2578, 2581, 2588, 2596, 2603, 2609, 2615, 2623, 2627, 2632, - 2636, 2639, 2648, 2650, 2654, 2657, 2662, 2666, 2672, 2683, - 2686, 2690, 2694, 2702, 2707, 2713, 2716, 2718, 2720, 2726, - 2729, 2731, 2733, 2735, 2739, 2742, 2760, 2770, 2772, 2773, - 2777, 2782, 2785, 2787, 2789, 2791, 2795, 2801, 2803, 2811, - 2814, 2816, 2818, 2820, 2824, 2827, 2830, 2832, 2834, 2836, - 2840, 2843, 2846, 2848, 2850, 2852, 2854, 2861, 2865, 2870, - 2874, 2879, 2881, 2885, 2888, 2890, 2893, 2895, 2896, 2899, - 2901, 2903, 2909, 2924, 2930, 2936, 2950, 2952, 2956, 2970, - 2972, 2974, 2978, 2984, 2997, 2999, 3003, 3016, 3022, 3024, - 3025, 3026, 3034, 3039, 3048, 3049, 3053, 3056, 3062, 3068, - 3071, 3073, 3075, 3077, 3081, 3085, 3089, 3092, 3097, 3100, - 3102, 3104, 3106, 3108, 3110, 3112, 3114, 3118, 3122, 3126, - 3130, 3131, 3133, 3135, 3137, 3139, 3141, 3143, 3145, 3147, - 3155, 3157, 3158, 3159, 3162, 3168, 3170, 3175, 3177, 3180, - 3194, 3197, 3200, 3204, 3207, 3214, 3216, 3219, 3221, 3223, - 3226, 3229, 3232, 3235, 3237, 3240, 3244, 3246, 3252, 3254, - 3255, 3257, 3262, 3264, 3266, 3268, 3270, 3273, 3274, 3276, - 3279, 3280, 3283, 3283, 3286, 3286, 3289, 3289, 3291, 3293, - 3295, 3297, 3303, 3309, 3312, 3315, 3321, 3323, 3325, 3329, - 3331, 3332, 3333, 3335, 3338, 3345, 3350, 3356, 3360, 3362, - 3365, 3367, 3370, 3374, 3376, 3379, 3381, 3384, 3401, 3407, - 3415, 3417, 3419, 3423, 3426, 3427, 3435, 3439, 3443, 3446, - 3447, 3453, 3456, 3459, 3461, 3465, 3470, 3473, 3483, 3488, - 3489, 3496, 3499, 3502, 3504, 3507, 3509, 3519, 3533, 3537, - 3540, 3542, 3546, 3550, 3553, 3556, 3558, 3562, 3564, 3571, - 3578, 3581, 3584, 3588, 3592, 3598, 3602, 3607, 3609, 3612, - 3617, 3623, 3634, 3637, 3639, 3643, 3648, 3650, 3657, 3660, - 3662, 3664, 3670, 3675, 3678, 3680, 3682, 3684, 3686, 3688, - 3690, 3692, 3694, 3696, 3698, 3700, 3702, 3704, 3706, 3708, - 3710, 3712, 3714, 3716, 3718, 3720, 3722, 3724, 3726, 3728, - 3730, 3732, 3734, 3736, 3738, 3740, 3743, 3745 + 2357, 2361, 2372, 2386, 2391, 2392, 2393, 2394, 2397, 2412, + 2417, 2423, 2425, 2430, 2432, 2434, 2436, 2438, 2440, 2443, + 2453, 2460, 2485, 2491, 2494, 2497, 2499, 2510, 2515, 2518, + 2523, 2526, 2533, 2543, 2546, 2553, 2563, 2565, 2568, 2570, + 2573, 2580, 2588, 2595, 2601, 2607, 2615, 2619, 2624, 2628, + 2631, 2640, 2642, 2646, 2649, 2654, 2658, 2664, 2675, 2678, + 2682, 2686, 2694, 2699, 2705, 2708, 2710, 2712, 2718, 2721, + 2723, 2725, 2727, 2731, 2734, 2752, 2762, 2764, 2765, 2769, + 2774, 2777, 2779, 2781, 2783, 2787, 2793, 2795, 2803, 2806, + 2808, 2810, 2812, 2816, 2819, 2822, 2824, 2826, 2828, 2832, + 2835, 2838, 2840, 2842, 2844, 2846, 2853, 2857, 2862, 2866, + 2871, 2873, 2877, 2880, 2882, 2885, 2887, 2888, 2891, 2893, + 2895, 2901, 2916, 2922, 2928, 2942, 2944, 2948, 2962, 2964, + 2966, 2970, 2976, 2989, 2991, 2995, 3008, 3014, 3016, 3017, + 3018, 3026, 3031, 3040, 3041, 3045, 3048, 3054, 3060, 3063, + 3065, 3067, 3069, 3073, 3077, 3081, 3084, 3089, 3092, 3094, + 3096, 3098, 3100, 3102, 3104, 3106, 3110, 3114, 3118, 3122, + 3123, 3125, 3127, 3129, 3131, 3133, 3135, 3137, 3139, 3147, + 3149, 3150, 3151, 3154, 3160, 3162, 3167, 3169, 3172, 3186, + 3189, 3192, 3196, 3199, 3206, 3208, 3211, 3213, 3215, 3218, + 3221, 3224, 3227, 3229, 3232, 3236, 3238, 3244, 3246, 3247, + 3249, 3254, 3256, 3258, 3260, 3262, 3265, 3266, 3268, 3271, + 3272, 3275, 3275, 3278, 3278, 3281, 3281, 3283, 3285, 3287, + 3289, 3295, 3301, 3304, 3307, 3313, 3315, 3317, 3321, 3323, + 3324, 3325, 3327, 3330, 3337, 3342, 3348, 3352, 3354, 3357, + 3359, 3362, 3366, 3368, 3371, 3373, 3376, 3393, 3399, 3407, + 3409, 3411, 3415, 3418, 3419, 3427, 3431, 3435, 3438, 3439, + 3445, 3448, 3451, 3453, 3457, 3462, 3465, 3475, 3480, 3481, + 3488, 3491, 3494, 3496, 3499, 3501, 3511, 3525, 3529, 3532, + 3534, 3538, 3542, 3545, 3548, 3550, 3554, 3556, 3563, 3570, + 3573, 3576, 3580, 3584, 3590, 3594, 3599, 3601, 3604, 3609, + 3615, 3626, 3629, 3631, 3635, 3640, 3642, 3649, 3652, 3654, + 3656, 3662, 3667, 3670, 3672, 3674, 3676, 3678, 3680, 3682, + 3684, 3686, 3688, 3690, 3692, 3694, 3696, 3698, 3700, 3702, + 3704, 3706, 3708, 3710, 3712, 3714, 3716, 3718, 3720, 3722, + 3724, 3726, 3728, 3730, 3732, 3735, 3737 }; #endif @@ -781,29 +781,28 @@ static const char * const yytname[] = { "$","error","$undefined.","IDENTIFIER" "aggr","named_class_head_sans_basetype","named_class_head_sans_basetype_defn", "named_complex_class_head_sans_basetype","named_class_head","@30","@31","unnamed_class_head", "class_head","maybe_base_class_list","base_class_list","base_class","base_class.1", -"base_class_access_list","left_curly","self_reference","opt.component_decl_list", -"access_specifier","component_decl_list","component_decl","component_decl_1", -"components","notype_components","component_declarator0","component_declarator", -"after_type_component_declarator0","notype_component_declarator0","after_type_component_declarator", -"notype_component_declarator","enumlist","enumerator","new_type_id","cv_qualifiers", -"nonempty_cv_qualifiers","suspend_mom","nonmomentary_expr","maybe_parmlist", -"after_type_declarator","nonnested_type","complete_type_name","nested_type", -"direct_after_type_declarator","notype_declarator_intern","notype_declarator", -"complex_notype_declarator","complex_direct_notype_declarator","qualified_id", -"notype_qualified_id","overqualified_id","functional_cast","type_name","nested_name_specifier", -"nested_name_specifier_1","typename_sub","typename_sub0","typename_sub1","typename_sub2", -"explicit_template_type","complex_type_name","ptr_to_mem","global_scope","new_declarator", -"direct_new_declarator","absdcl","direct_abstract_declarator","stmts","errstmt", -"maybe_label_decls","label_decls","label_decl","compstmt_or_error","compstmt", -"@32","simple_if","@33","@34","implicitly_scoped_stmt","@35","stmt","simple_stmt", -"@36","@37","@38","@39","@40","@41","@42","@43","@44","@45","@46","@47","@48", -"@49","function_try_block","@50","@51","try_block","@52","@53","handler_seq", -"handler","@54","@55","type_specifier_seq","handler_args","label_colon","for.init.statement", -"maybe_cv_qualifier","xexpr","asm_operands","nonnull_asm_operands","asm_operand", -"asm_clobbers","parmlist","complex_parmlist","defarg","@56","defarg1","parms", -"parms_comma","named_parm","full_parm","parm","see_typename","bad_parm","exception_specification_opt", -"ansi_raise_identifier","ansi_raise_identifiers","conversion_declarator","operator", -"operator_name", NULL +"base_class_access_list","left_curly","opt.component_decl_list","access_specifier", +"component_decl_list","component_decl","component_decl_1","components","notype_components", +"component_declarator0","component_declarator","after_type_component_declarator0", +"notype_component_declarator0","after_type_component_declarator","notype_component_declarator", +"enumlist","enumerator","new_type_id","cv_qualifiers","nonempty_cv_qualifiers", +"suspend_mom","nonmomentary_expr","maybe_parmlist","after_type_declarator","nonnested_type", +"complete_type_name","nested_type","direct_after_type_declarator","notype_declarator_intern", +"notype_declarator","complex_notype_declarator","complex_direct_notype_declarator", +"qualified_id","notype_qualified_id","overqualified_id","functional_cast","type_name", +"nested_name_specifier","nested_name_specifier_1","typename_sub","typename_sub0", +"typename_sub1","typename_sub2","explicit_template_type","complex_type_name", +"ptr_to_mem","global_scope","new_declarator","direct_new_declarator","absdcl", +"direct_abstract_declarator","stmts","errstmt","maybe_label_decls","label_decls", +"label_decl","compstmt_or_error","compstmt","@32","simple_if","@33","@34","implicitly_scoped_stmt", +"@35","stmt","simple_stmt","@36","@37","@38","@39","@40","@41","@42","@43","@44", +"@45","@46","@47","@48","@49","function_try_block","@50","@51","try_block","@52", +"@53","handler_seq","handler","@54","@55","type_specifier_seq","handler_args", +"label_colon","for.init.statement","maybe_cv_qualifier","xexpr","asm_operands", +"nonnull_asm_operands","asm_operand","asm_clobbers","parmlist","complex_parmlist", +"defarg","@56","defarg1","parms","parms_comma","named_parm","full_parm","parm", +"see_typename","bad_parm","exception_specification_opt","ansi_raise_identifier", +"ansi_raise_identifiers","conversion_declarator","operator","operator_name", NULL }; #endif @@ -860,42 +859,42 @@ static const short yyr1[] = { 0, 268, 269, 270, 270, 270, 271, 271, 271, 271, 271, 272, 273, 272, 274, 272, 275, 276, 276, 277, 277, 277, 278, 278, 279, 279, 280, 280, 280, 280, 281, - 281, 281, 281, 282, 283, 284, 284, 284, 284, 285, - 286, 286, 287, 287, 287, 287, 287, 287, 287, 287, - 287, 287, 288, 288, 288, 288, 288, 288, 288, 288, - 288, 289, 289, 289, 290, 290, 290, 291, 291, 292, - 292, 293, 293, 294, 294, 294, 294, 295, 295, 296, - 296, 296, 297, 297, 298, 298, 299, 299, 299, 300, - 300, 301, 301, 302, 303, 304, 304, 304, 304, 305, - 305, 305, 305, 305, 305, 306, 306, 307, 307, 307, - 308, 309, 309, 309, 309, 309, 309, 310, 310, 311, - 311, 311, 311, 311, 311, 312, 312, 312, 312, 312, - 312, 313, 313, 313, 313, 313, 313, 314, 314, 315, - 315, 316, 316, 317, 317, 317, 318, 318, 318, 319, - 319, 319, 320, 320, 320, 320, 321, 321, 322, 322, - 322, 322, 323, 323, 323, 323, 324, 324, 324, 324, - 324, 324, 325, 326, 326, 326, 327, 327, 328, 329, - 329, 329, 329, 329, 329, 329, 330, 330, 331, 331, + 281, 281, 281, 282, 283, 283, 283, 283, 284, 285, + 285, 286, 286, 286, 286, 286, 286, 286, 286, 286, + 286, 287, 287, 287, 287, 287, 287, 287, 287, 287, + 288, 288, 288, 289, 289, 289, 290, 290, 291, 291, + 292, 292, 293, 293, 293, 293, 294, 294, 295, 295, + 295, 296, 296, 297, 297, 298, 298, 298, 299, 299, + 300, 300, 301, 302, 303, 303, 303, 303, 304, 304, + 304, 304, 304, 304, 305, 305, 306, 306, 306, 307, + 308, 308, 308, 308, 308, 308, 309, 309, 310, 310, + 310, 310, 310, 310, 311, 311, 311, 311, 311, 311, + 312, 312, 312, 312, 312, 312, 313, 313, 314, 314, + 315, 315, 316, 316, 316, 317, 317, 317, 318, 318, + 318, 319, 319, 319, 319, 320, 320, 321, 321, 321, + 321, 322, 322, 322, 322, 323, 323, 323, 323, 323, + 323, 324, 325, 325, 325, 326, 326, 327, 328, 328, + 328, 328, 328, 328, 328, 329, 329, 330, 330, 330, + 330, 330, 330, 330, 330, 330, 330, 330, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 333, 333, 333, 333, 334, 335, 335, 336, 336, 337, - 338, 338, 340, 339, 342, 343, 341, 344, 345, 344, - 346, 346, 347, 347, 348, 347, 347, 349, 350, 347, - 351, 352, 347, 353, 354, 355, 356, 347, 357, 358, - 347, 359, 347, 360, 347, 361, 347, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 347, 347, 363, 364, 362, 366, 367, 365, - 368, 368, 370, 371, 369, 372, 372, 373, 373, 374, - 374, 374, 374, 375, 375, 375, 376, 376, 377, 377, - 377, 378, 378, 379, 379, 380, 381, 381, 382, 382, - 382, 383, 383, 383, 383, 383, 383, 383, 385, 384, - 386, 386, 387, 387, 387, 387, 387, 388, 388, 389, - 389, 389, 389, 389, 389, 390, 390, 391, 391, 392, - 393, 393, 394, 394, 394, 395, 396, 396, 397, 397, - 397, 397, 398, 399, 399, 399, 399, 399, 399, 399, - 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, - 399, 399, 399, 399, 399, 399, 399, 399, 399, 399, - 399, 399, 399, 399, 399, 399, 399, 399 + 332, 332, 332, 333, 334, 334, 335, 335, 336, 337, + 337, 339, 338, 341, 342, 340, 343, 344, 343, 345, + 345, 346, 346, 347, 346, 346, 348, 349, 346, 350, + 351, 346, 352, 353, 354, 355, 346, 356, 357, 346, + 358, 346, 359, 346, 360, 346, 346, 346, 346, 346, + 346, 346, 346, 346, 346, 346, 346, 346, 346, 346, + 346, 346, 346, 362, 363, 361, 365, 366, 364, 367, + 367, 369, 370, 368, 371, 371, 372, 372, 373, 373, + 373, 373, 374, 374, 374, 375, 375, 376, 376, 376, + 377, 377, 378, 378, 379, 380, 380, 381, 381, 381, + 382, 382, 382, 382, 382, 382, 382, 384, 383, 385, + 385, 386, 386, 386, 386, 386, 387, 387, 388, 388, + 388, 388, 388, 388, 389, 389, 390, 390, 391, 392, + 392, 393, 393, 393, 394, 395, 395, 396, 396, 396, + 396, 397, 398, 398, 398, 398, 398, 398, 398, 398, + 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, + 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, + 398, 398, 398, 398, 398, 398, 398 }; static const short yyr2[] = { 0, @@ -951,1382 +950,1429 @@ static const short yyr2[] = { 0, 2, 2, 2, 2, 2, 3, 4, 3, 2, 3, 1, 0, 3, 0, 3, 2, 1, 1, 0, 2, 3, 1, 4, 1, 3, 1, 1, 4, 4, 2, - 2, 3, 3, 1, 0, 1, 2, 3, 2, 2, - 1, 2, 2, 2, 2, 2, 2, 2, 1, 2, - 2, 3, 2, 2, 4, 4, 2, 1, 5, 4, - 1, 0, 1, 3, 0, 1, 3, 1, 1, 1, - 1, 4, 4, 4, 4, 4, 3, 4, 4, 4, - 4, 3, 1, 3, 1, 3, 2, 1, 7, 0, - 2, 1, 2, 0, 2, 4, 4, 2, 4, 3, - 3, 2, 2, 3, 1, 1, 2, 1, 1, 2, - 2, 4, 4, 3, 3, 2, 1, 1, 2, 3, - 3, 2, 2, 3, 1, 3, 3, 2, 2, 3, - 1, 4, 3, 4, 3, 1, 2, 2, 2, 2, - 2, 1, 2, 4, 4, 2, 1, 1, 1, 1, - 2, 4, 2, 2, 2, 2, 1, 2, 2, 2, - 2, 3, 1, 2, 3, 4, 2, 2, 2, 2, - 2, 2, 4, 2, 1, 2, 2, 3, 1, 3, - 2, 3, 2, 2, 3, 1, 3, 4, 3, 2, - 2, 1, 3, 2, 2, 1, 2, 3, 1, 3, - 1, 6, 4, 4, 3, 5, 3, 3, 3, 2, - 1, 1, 2, 2, 2, 0, 1, 1, 2, 3, - 1, 2, 0, 3, 0, 0, 5, 1, 0, 2, - 1, 1, 1, 2, 0, 4, 1, 0, 0, 5, - 0, 0, 7, 0, 0, 0, 0, 12, 0, 0, - 7, 0, 5, 0, 7, 0, 4, 2, 2, 2, - 3, 6, 8, 10, 12, 4, 3, 2, 2, 1, - 1, 1, 1, 1, 0, 0, 6, 0, 0, 5, - 1, 2, 0, 0, 5, 1, 1, 3, 3, 2, - 2, 2, 2, 2, 1, 2, 0, 1, 0, 1, - 1, 0, 1, 1, 3, 4, 1, 3, 0, 1, - 1, 1, 2, 2, 2, 1, 2, 2, 0, 3, - 1, 1, 1, 2, 2, 2, 4, 2, 2, 2, - 2, 2, 2, 1, 2, 1, 2, 1, 1, 0, - 0, 1, 0, 4, 2, 1, 1, 3, 0, 3, - 3, 3, 1, 2, 2, 2, 2, 2, 2, 2, + 2, 3, 3, 1, 0, 1, 3, 2, 2, 1, + 2, 2, 2, 2, 2, 2, 2, 1, 2, 2, + 3, 2, 2, 4, 4, 2, 1, 5, 4, 1, + 0, 1, 3, 0, 1, 3, 1, 1, 1, 1, + 4, 4, 4, 4, 4, 3, 4, 4, 4, 4, + 3, 1, 3, 1, 3, 2, 1, 7, 0, 2, + 1, 2, 0, 2, 4, 4, 2, 4, 3, 3, + 2, 2, 3, 1, 1, 2, 1, 1, 2, 2, + 4, 4, 3, 3, 2, 1, 1, 2, 3, 3, + 2, 2, 3, 1, 3, 3, 2, 2, 3, 1, + 4, 3, 4, 3, 1, 2, 2, 2, 2, 2, + 1, 2, 4, 4, 2, 1, 1, 1, 1, 2, + 4, 2, 2, 2, 2, 1, 2, 2, 2, 2, + 3, 1, 2, 3, 4, 2, 2, 2, 2, 2, + 2, 4, 2, 1, 2, 2, 3, 1, 3, 2, + 3, 2, 2, 3, 1, 3, 4, 3, 2, 2, + 1, 3, 2, 2, 1, 2, 3, 1, 3, 1, + 6, 4, 4, 3, 5, 3, 3, 3, 2, 1, + 1, 2, 2, 2, 0, 1, 1, 2, 3, 1, + 2, 0, 3, 0, 0, 5, 1, 0, 2, 1, + 1, 1, 2, 0, 4, 1, 0, 0, 5, 0, + 0, 7, 0, 0, 0, 0, 12, 0, 0, 7, + 0, 5, 0, 7, 0, 4, 2, 2, 2, 3, + 6, 8, 10, 12, 4, 3, 2, 2, 1, 1, + 1, 1, 1, 0, 0, 6, 0, 0, 5, 1, + 2, 0, 0, 5, 1, 1, 3, 3, 2, 2, + 2, 2, 2, 1, 2, 0, 1, 0, 1, 1, + 0, 1, 1, 3, 4, 1, 3, 0, 1, 1, + 1, 2, 2, 2, 1, 2, 2, 0, 3, 1, + 1, 1, 2, 2, 2, 4, 2, 2, 2, 2, + 2, 2, 1, 2, 1, 2, 1, 1, 0, 0, + 1, 0, 4, 2, 1, 1, 3, 0, 3, 3, + 3, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 3, 2, 2, 2, - 2, 3, 2, 2, 4, 4, 3, 2 + 2, 2, 2, 2, 2, 3, 2, 2, 2, 2, + 3, 2, 2, 4, 4, 3, 2 }; static const short yydefact[] = { 3, - 12, 12, 5, 0, 4, 0, 281, 637, 638, 0, - 388, 400, 582, 0, 11, 0, 0, 0, 10, 486, - 843, 0, 0, 0, 167, 669, 282, 283, 83, 0, - 0, 830, 0, 45, 0, 0, 13, 25, 0, 27, - 8, 0, 16, 15, 89, 110, 86, 0, 639, 171, - 302, 279, 303, 615, 0, 375, 0, 374, 393, 0, + 12, 12, 5, 0, 4, 0, 281, 636, 637, 0, + 388, 400, 581, 0, 11, 0, 0, 0, 10, 486, + 842, 0, 0, 0, 167, 668, 282, 283, 83, 0, + 0, 829, 0, 45, 0, 0, 13, 25, 0, 27, + 8, 0, 16, 15, 89, 110, 86, 0, 638, 171, + 302, 279, 303, 614, 0, 375, 0, 374, 393, 0, 413, 392, 430, 399, 0, 501, 502, 504, 508, 507, - 481, 387, 598, 401, 599, 108, 301, 626, 596, 0, - 640, 580, 0, 0, 280, 81, 82, 178, 643, 178, - 644, 178, 284, 167, 140, 141, 142, 143, 144, 472, - 475, 0, 665, 0, 476, 0, 0, 0, 0, 141, + 481, 387, 597, 401, 598, 108, 301, 625, 595, 0, + 639, 579, 0, 0, 280, 81, 82, 178, 642, 178, + 643, 178, 284, 167, 140, 141, 142, 143, 144, 472, + 475, 0, 664, 0, 476, 0, 0, 0, 0, 141, 142, 143, 144, 23, 0, 0, 0, 0, 0, 0, - 0, 477, 647, 0, 653, 0, 0, 0, 37, 0, - 0, 31, 0, 0, 47, 0, 178, 645, 0, 0, - 0, 613, 608, 0, 0, 0, 612, 0, 0, 0, - 0, 302, 0, 293, 584, 0, 0, 301, 580, 28, + 0, 477, 646, 0, 652, 0, 0, 0, 37, 0, + 0, 31, 0, 0, 47, 0, 178, 644, 0, 0, + 0, 612, 607, 0, 0, 0, 611, 0, 0, 0, + 0, 302, 0, 293, 583, 0, 0, 301, 579, 28, 0, 26, 3, 46, 0, 64, 388, 0, 0, 8, 67, 63, 66, 89, 0, 0, 0, 399, 90, 14, - 0, 428, 0, 0, 446, 87, 79, 646, 584, 0, - 580, 80, 0, 0, 0, 106, 0, 409, 365, 595, - 366, 607, 0, 580, 390, 389, 78, 109, 376, 0, + 0, 428, 0, 0, 446, 87, 79, 645, 583, 0, + 579, 80, 0, 0, 0, 106, 0, 409, 365, 594, + 366, 606, 0, 579, 390, 389, 78, 109, 376, 0, 411, 391, 107, 382, 406, 407, 377, 395, 397, 386, 408, 0, 75, 431, 487, 488, 489, 490, 506, 149, 148, 150, 492, 493, 172, 499, 491, 0, 0, 494, - 495, 509, 509, 524, 525, 583, 394, 0, 425, 638, - 0, 667, 171, 630, 631, 627, 601, 641, 0, 600, - 597, 0, 878, 874, 873, 871, 853, 858, 859, 0, - 865, 864, 850, 851, 849, 868, 857, 854, 855, 856, - 860, 861, 847, 848, 844, 845, 846, 870, 862, 863, - 852, 869, 0, 866, 776, 393, 777, 839, 284, 281, - 582, 306, 354, 0, 0, 0, 0, 350, 348, 321, + 495, 509, 509, 524, 0, 582, 394, 0, 425, 637, + 0, 666, 171, 629, 630, 626, 600, 640, 0, 599, + 596, 0, 877, 873, 872, 870, 852, 857, 858, 0, + 864, 863, 849, 850, 848, 867, 856, 853, 854, 855, + 859, 860, 846, 847, 843, 844, 845, 869, 861, 862, + 851, 868, 0, 865, 775, 393, 776, 838, 284, 281, + 581, 306, 354, 0, 0, 0, 0, 350, 348, 321, 352, 353, 0, 0, 0, 0, 0, 282, 283, 275, 0, 0, 186, 185, 0, 187, 188, 0, 0, 189, 0, 0, 179, 180, 0, 249, 0, 252, 184, 305, 215, 0, 0, 307, 308, 0, 182, 372, 393, 373, - 632, 333, 323, 0, 0, 0, 0, 178, 0, 474, - 0, 469, 0, 666, 664, 0, 190, 191, 0, 0, - 0, 435, 3, 21, 29, 661, 657, 658, 660, 662, - 659, 140, 141, 142, 0, 143, 144, 649, 650, 654, - 651, 648, 0, 291, 292, 290, 629, 628, 33, 32, - 49, 0, 157, 0, 0, 393, 155, 0, 0, 609, - 611, 0, 610, 141, 142, 277, 278, 297, 0, 619, - 296, 0, 618, 0, 304, 282, 283, 0, 0, 0, - 295, 294, 623, 0, 0, 12, 0, 167, 9, 9, + 631, 333, 323, 0, 0, 0, 0, 178, 0, 474, + 0, 469, 0, 665, 663, 0, 190, 191, 0, 0, + 0, 435, 3, 21, 29, 660, 656, 657, 659, 661, + 658, 140, 141, 142, 0, 143, 144, 648, 649, 653, + 650, 647, 0, 291, 292, 290, 628, 627, 33, 32, + 49, 0, 157, 0, 0, 393, 155, 0, 0, 608, + 610, 0, 609, 141, 142, 277, 278, 297, 0, 618, + 296, 0, 617, 0, 304, 282, 283, 0, 0, 0, + 295, 294, 622, 0, 0, 12, 0, 167, 9, 9, 70, 0, 65, 0, 0, 71, 74, 0, 427, 429, - 122, 93, 127, 765, 0, 85, 84, 92, 125, 0, - 0, 123, 88, 625, 0, 0, 588, 0, 833, 0, - 593, 0, 592, 0, 0, 0, 0, 580, 428, 0, - 77, 584, 580, 606, 0, 379, 380, 0, 76, 428, + 122, 93, 127, 764, 0, 85, 84, 92, 125, 0, + 0, 123, 88, 624, 0, 0, 587, 0, 832, 0, + 592, 0, 591, 0, 0, 0, 0, 579, 428, 0, + 77, 583, 579, 605, 0, 379, 380, 0, 76, 428, 384, 383, 385, 378, 398, 415, 414, 178, 496, 500, - 498, 0, 830, 503, 505, 0, 0, 396, 428, 580, - 94, 0, 0, 0, 0, 580, 100, 581, 614, 638, - 668, 171, 0, 0, 867, 872, 395, 580, 580, 0, - 580, 877, 178, 0, 0, 0, 222, 0, 0, 224, - 237, 238, 0, 0, 0, 0, 0, 276, 221, 218, - 217, 219, 0, 0, 0, 0, 0, 305, 0, 0, - 0, 216, 176, 177, 299, 0, 220, 0, 0, 250, + 498, 0, 829, 503, 505, 547, 637, 0, 538, 0, + 0, 550, 0, 121, 116, 0, 171, 551, 554, 0, + 0, 530, 0, 119, 396, 428, 579, 94, 0, 0, + 0, 0, 579, 100, 580, 613, 637, 667, 171, 0, + 0, 866, 871, 395, 579, 579, 0, 579, 876, 178, + 0, 0, 0, 222, 0, 0, 224, 237, 238, 0, + 0, 0, 0, 0, 276, 221, 218, 217, 219, 0, + 0, 0, 0, 0, 305, 0, 0, 0, 216, 176, + 177, 299, 0, 220, 0, 0, 250, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 315, 0, 317, 319, 320, 358, 357, 0, - 0, 240, 240, 0, 226, 578, 0, 234, 355, 347, - 0, 0, 830, 336, 339, 340, 0, 0, 367, 686, - 682, 691, 0, 584, 580, 580, 580, 369, 689, 0, - 636, 371, 0, 0, 370, 335, 0, 330, 349, 331, - 351, 633, 0, 332, 175, 175, 0, 165, 0, 393, - 163, 575, 484, 573, 471, 0, 0, 402, 0, 0, - 403, 404, 405, 441, 442, 443, 440, 0, 433, 436, - 0, 3, 0, 652, 178, 655, 0, 41, 42, 0, - 53, 0, 0, 57, 61, 50, 829, 824, 0, 372, - 393, 53, 373, 828, 59, 168, 153, 151, 168, 175, - 300, 617, 616, 304, 0, 620, 0, 18, 20, 89, - 9, 9, 73, 72, 0, 128, 356, 0, 713, 91, - 711, 452, 0, 448, 447, 214, 0, 213, 585, 624, - 0, 806, 0, 801, 393, 0, 800, 802, 831, 813, - 0, 0, 622, 591, 590, 0, 0, 605, 0, 423, - 422, 410, 604, 0, 833, 594, 381, 412, 424, 428, - 0, 497, 510, 548, 638, 0, 539, 0, 0, 551, - 0, 121, 116, 0, 171, 552, 555, 0, 531, 0, - 119, 0, 428, 0, 426, 833, 799, 178, 178, 642, - 178, 833, 799, 580, 97, 580, 103, 876, 875, 839, - 839, 839, 0, 0, 0, 0, 636, 0, 0, 0, - 0, 393, 0, 0, 0, 311, 0, 309, 310, 0, - 247, 181, 281, 637, 638, 282, 283, 0, 0, 453, - 482, 0, 274, 273, 791, 790, 0, 271, 270, 268, - 269, 267, 266, 265, 262, 263, 264, 260, 261, 255, - 256, 257, 258, 259, 253, 254, 0, 0, 0, 0, - 0, 240, 228, 244, 0, 0, 227, 580, 580, 0, - 580, 577, 676, 0, 0, 0, 0, 0, 338, 0, - 342, 0, 344, 0, 685, 684, 681, 680, 829, 0, - 0, 700, 0, 0, 833, 368, 833, 687, 580, 799, - 584, 686, 682, 0, 0, 580, 0, 392, 0, 0, - 0, 0, 170, 174, 285, 168, 161, 159, 168, 0, - 485, 0, 484, 212, 211, 210, 209, 435, 0, 0, - 24, 0, 0, 656, 0, 38, 44, 43, 55, 52, - 53, 0, 48, 0, 0, 686, 682, 0, 820, 580, - 823, 825, 0, 821, 822, 54, 492, 0, 158, 168, - 168, 156, 169, 298, 17, 19, 69, 89, 416, 145, - 637, 638, 133, 146, 147, 0, 126, 129, 0, 639, - 0, 0, 0, 0, 712, 706, 449, 0, 124, 589, - 586, 805, 819, 808, 0, 587, 804, 818, 807, 803, - 832, 815, 826, 816, 809, 814, 835, 0, 420, 603, - 602, 419, 175, 830, 0, 830, 511, 512, 514, 830, - 517, 516, 580, 799, 547, 540, 552, 541, 428, 428, - 537, 538, 535, 536, 580, 799, 281, 637, 0, 415, - 117, 543, 553, 558, 559, 415, 415, 0, 0, 415, - 115, 544, 556, 415, 532, 533, 534, 428, 530, 478, - 0, 96, 0, 0, 0, 0, 102, 0, 833, 799, - 833, 799, 841, 840, 842, 286, 322, 223, 225, 328, - 329, 0, 0, 0, 0, 310, 313, 0, 0, 0, - 0, 248, 0, 314, 316, 318, 0, 0, 0, 0, - 229, 246, 0, 0, 673, 671, 0, 674, 584, 235, - 0, 0, 178, 345, 0, 0, 0, 683, 679, 690, - 580, 699, 697, 698, 688, 833, 0, 695, 0, 634, - 635, 0, 334, 166, 168, 168, 164, 576, 574, 473, - 0, 434, 432, 281, 0, 22, 30, 663, 56, 51, - 58, 62, 685, 681, 686, 682, 0, 596, 0, 580, - 687, 60, 154, 152, 68, 0, 131, 0, 135, 0, - 137, 0, 139, 0, 766, 0, 202, 714, 0, 707, - 708, 0, 450, 686, 682, 0, 305, 0, 632, 827, - 0, 0, 836, 837, 0, 0, 417, 173, 521, 0, - 520, 830, 830, 830, 0, 833, 0, 542, 446, 446, - 833, 0, 0, 0, 428, 428, 0, 428, 428, 0, - 428, 0, 446, 466, 580, 288, 287, 289, 580, 99, - 0, 105, 0, 0, 0, 0, 0, 0, 456, 0, - 454, 251, 272, 242, 241, 239, 230, 0, 243, 245, - 672, 670, 677, 675, 0, 236, 0, 0, 337, 341, - 343, 833, 693, 580, 694, 162, 160, 470, 0, 437, - 439, 685, 681, 601, 687, 132, 130, 0, 0, 0, - 0, 444, 0, 0, 281, 637, 638, 715, 728, 731, - 734, 739, 0, 0, 0, 0, 0, 0, 0, 0, - 282, 760, 768, 0, 787, 764, 763, 762, 0, 723, - 0, 0, 393, 0, 702, 721, 727, 701, 722, 761, - 0, 709, 451, 0, 635, 817, 811, 812, 810, 0, - 834, 421, 0, 0, 0, 0, 523, 522, 515, 112, - 580, 546, 550, 114, 580, 428, 428, 567, 446, 281, - 637, 0, 554, 560, 561, 415, 415, 446, 446, 0, - 446, 557, 545, 0, 833, 833, 580, 580, 0, 0, - 0, 0, 455, 0, 0, 231, 232, 678, 346, 287, - 696, 833, 0, 134, 136, 138, 773, 767, 771, 0, - 710, 705, 205, 780, 782, 783, 0, 0, 719, 0, - 0, 0, 746, 748, 749, 750, 0, 0, 0, 0, - 0, 0, 0, 781, 0, 364, 788, 0, 724, 362, - 415, 0, 363, 0, 415, 0, 0, 0, 203, 704, - 703, 725, 759, 758, 310, 838, 418, 518, 519, 513, - 833, 833, 566, 563, 565, 0, 0, 428, 428, 428, - 562, 564, 549, 468, 0, 467, 462, 95, 101, 833, - 833, 324, 325, 326, 327, 457, 0, 233, 692, 438, - 0, 772, 445, 194, 0, 716, 729, 718, 0, 0, - 0, 0, 0, 742, 0, 751, 0, 757, 39, 144, - 34, 144, 0, 35, 769, 0, 360, 361, 0, 0, - 0, 359, 204, 719, 111, 113, 428, 428, 572, 446, - 446, 0, 0, 480, 98, 104, 579, 0, 774, 201, - 0, 393, 0, 719, 0, 732, 720, 706, 785, 735, - 0, 0, 0, 0, 747, 756, 40, 36, 0, 0, - 726, 571, 569, 568, 570, 465, 464, 458, 86, 89, - 0, 0, 0, 195, 415, 717, 206, 730, 208, 0, - 786, 0, 784, 740, 744, 743, 770, 792, 0, 0, - 463, 778, 779, 775, 428, 706, 192, 0, 0, 198, - 0, 197, 719, 0, 0, 0, 793, 794, 752, 461, - 0, 460, 0, 207, 0, 733, 736, 741, 745, 0, - 792, 0, 0, 459, 199, 193, 0, 0, 0, 753, - 795, 0, 0, 796, 0, 0, 200, 737, 797, 0, - 754, 0, 0, 0, 738, 798, 755, 0, 0, 0 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 315, + 0, 317, 319, 320, 358, 357, 0, 0, 240, 240, + 0, 226, 577, 0, 234, 355, 347, 0, 0, 829, + 336, 339, 340, 0, 0, 367, 685, 681, 690, 0, + 583, 579, 579, 579, 369, 688, 0, 635, 371, 0, + 0, 370, 335, 0, 330, 349, 331, 351, 632, 0, + 332, 175, 175, 0, 165, 0, 393, 163, 574, 484, + 572, 471, 0, 0, 402, 0, 0, 403, 404, 405, + 441, 442, 443, 440, 0, 433, 436, 0, 3, 0, + 651, 178, 654, 0, 41, 42, 0, 53, 0, 0, + 57, 61, 50, 828, 823, 0, 372, 393, 53, 373, + 827, 59, 168, 153, 151, 168, 175, 300, 616, 615, + 304, 0, 619, 0, 18, 20, 89, 9, 9, 73, + 72, 0, 128, 356, 0, 712, 91, 710, 452, 0, + 448, 447, 214, 0, 213, 584, 623, 0, 805, 0, + 800, 393, 0, 799, 801, 830, 812, 0, 0, 621, + 590, 589, 0, 0, 604, 0, 423, 422, 410, 603, + 0, 832, 593, 381, 412, 424, 428, 0, 497, 510, + 579, 798, 546, 539, 551, 540, 428, 428, 536, 537, + 534, 535, 579, 798, 281, 636, 0, 415, 117, 542, + 552, 557, 558, 415, 415, 0, 0, 415, 115, 543, + 555, 415, 0, 428, 0, 531, 532, 533, 428, 426, + 832, 798, 178, 178, 641, 178, 832, 798, 579, 97, + 579, 103, 875, 874, 838, 838, 838, 0, 0, 0, + 0, 635, 0, 0, 0, 0, 393, 0, 0, 0, + 311, 0, 309, 310, 0, 247, 181, 281, 636, 637, + 282, 283, 0, 0, 453, 482, 0, 274, 273, 790, + 789, 0, 271, 270, 268, 269, 267, 266, 265, 262, + 263, 264, 260, 261, 255, 256, 257, 258, 259, 253, + 254, 0, 0, 0, 0, 0, 240, 228, 244, 0, + 0, 227, 579, 579, 0, 579, 576, 675, 0, 0, + 0, 0, 0, 338, 0, 342, 0, 344, 0, 684, + 683, 680, 679, 828, 0, 0, 699, 0, 0, 832, + 368, 832, 686, 579, 798, 583, 685, 681, 0, 0, + 579, 0, 392, 0, 0, 0, 0, 170, 174, 285, + 168, 161, 159, 168, 0, 485, 0, 484, 212, 211, + 210, 209, 435, 0, 0, 24, 0, 0, 655, 0, + 38, 44, 43, 55, 52, 53, 0, 48, 0, 0, + 685, 681, 0, 819, 579, 822, 824, 0, 820, 821, + 54, 492, 0, 158, 168, 168, 156, 169, 298, 17, + 19, 69, 89, 416, 145, 636, 637, 133, 146, 147, + 0, 126, 129, 0, 638, 0, 0, 0, 0, 711, + 705, 449, 0, 124, 588, 585, 804, 818, 807, 0, + 586, 803, 817, 806, 802, 831, 814, 825, 815, 808, + 813, 834, 0, 420, 602, 601, 419, 175, 829, 0, + 829, 511, 512, 514, 829, 517, 516, 832, 0, 541, + 446, 446, 832, 0, 0, 0, 428, 428, 0, 428, + 428, 0, 428, 0, 529, 478, 0, 446, 96, 0, + 0, 0, 0, 102, 0, 832, 798, 832, 798, 840, + 839, 841, 286, 322, 223, 225, 328, 329, 0, 0, + 0, 0, 310, 313, 0, 0, 0, 0, 248, 0, + 314, 316, 318, 0, 0, 0, 0, 229, 246, 0, + 0, 672, 670, 0, 673, 583, 235, 0, 0, 178, + 345, 0, 0, 0, 682, 678, 689, 579, 698, 696, + 697, 687, 832, 0, 694, 0, 633, 634, 0, 334, + 166, 168, 168, 164, 575, 573, 473, 0, 434, 432, + 281, 0, 22, 30, 662, 56, 51, 58, 62, 684, + 680, 685, 681, 0, 595, 0, 579, 686, 60, 154, + 152, 68, 0, 131, 0, 135, 0, 137, 0, 139, + 0, 765, 0, 202, 713, 0, 706, 707, 0, 450, + 685, 681, 0, 305, 0, 631, 826, 0, 0, 835, + 836, 0, 0, 417, 173, 521, 0, 520, 829, 829, + 829, 0, 112, 579, 545, 549, 114, 579, 428, 428, + 566, 446, 281, 636, 0, 553, 559, 560, 415, 415, + 446, 446, 0, 446, 556, 466, 544, 579, 288, 287, + 289, 579, 99, 0, 105, 0, 0, 0, 0, 0, + 0, 456, 0, 454, 251, 272, 242, 241, 239, 230, + 0, 243, 245, 671, 669, 676, 674, 0, 236, 0, + 0, 337, 341, 343, 832, 692, 579, 693, 162, 160, + 470, 0, 437, 439, 684, 680, 600, 686, 132, 130, + 0, 0, 0, 0, 444, 0, 0, 281, 636, 637, + 714, 727, 730, 733, 738, 0, 0, 0, 0, 0, + 0, 0, 0, 282, 759, 767, 0, 786, 763, 762, + 761, 0, 722, 0, 0, 393, 0, 701, 720, 726, + 700, 721, 760, 0, 708, 451, 0, 634, 816, 810, + 811, 809, 0, 833, 421, 0, 0, 0, 0, 523, + 522, 515, 832, 832, 565, 562, 564, 0, 0, 428, + 428, 428, 561, 563, 548, 0, 832, 832, 579, 579, + 0, 0, 0, 0, 455, 0, 0, 231, 232, 677, + 346, 287, 695, 832, 0, 134, 136, 138, 772, 766, + 770, 0, 709, 704, 205, 779, 781, 782, 0, 0, + 718, 0, 0, 0, 745, 747, 748, 749, 0, 0, + 0, 0, 0, 0, 0, 780, 0, 364, 787, 0, + 723, 362, 415, 0, 363, 0, 415, 0, 0, 0, + 203, 703, 702, 724, 758, 757, 310, 837, 418, 518, + 519, 513, 111, 113, 428, 428, 571, 446, 446, 468, + 0, 467, 462, 95, 101, 832, 832, 324, 325, 326, + 327, 457, 0, 233, 691, 438, 0, 771, 445, 194, + 0, 715, 728, 717, 0, 0, 0, 0, 0, 741, + 0, 750, 0, 756, 39, 144, 34, 144, 0, 35, + 768, 0, 360, 361, 0, 0, 0, 359, 204, 718, + 570, 568, 567, 569, 0, 0, 480, 98, 104, 578, + 0, 773, 201, 0, 393, 0, 718, 0, 731, 719, + 705, 784, 734, 0, 0, 0, 0, 746, 755, 40, + 36, 0, 0, 725, 465, 464, 458, 86, 89, 0, + 0, 0, 195, 415, 716, 206, 729, 208, 0, 785, + 0, 783, 739, 743, 742, 769, 791, 0, 0, 463, + 777, 778, 774, 428, 705, 192, 0, 0, 198, 0, + 197, 718, 0, 0, 0, 792, 793, 751, 461, 0, + 460, 0, 207, 0, 732, 735, 740, 744, 0, 791, + 0, 0, 459, 199, 193, 0, 0, 0, 752, 794, + 0, 0, 795, 0, 0, 200, 736, 796, 0, 753, + 0, 0, 0, 737, 797, 754, 0, 0, 0 }; -static const short yydefgoto[] = { 1628, - 436, 2, 437, 165, 709, 331, 181, 3, 4, 37, - 672, 373, 1306, 673, 770, 1307, 1308, 393, 1412, 677, - 41, 771, 402, 683, 939, 684, 685, 686, 43, 172, - 173, 44, 455, 184, 180, 45, 46, 787, 1070, 793, - 1072, 47, 773, 774, 185, 186, 456, 716, 977, 978, - 652, 979, 234, 48, 961, 960, 699, 696, 1136, 1135, - 919, 916, 136, 959, 49, 236, 50, 913, 565, 332, - 333, 334, 335, 1309, 1579, 1476, 1581, 1521, 1612, 1178, - 1558, 1576, 367, 905, 336, 1247, 860, 604, 867, 337, - 338, 368, 340, 358, 52, 255, 678, 418, 154, 53, - 54, 341, 560, 342, 343, 344, 345, 457, 346, 1310, - 496, 626, 347, 1311, 56, 217, 689, 348, 218, 538, - 219, 197, 210, 60, 479, 497, 1333, 750, 1196, 198, - 211, 61, 509, 751, 62, 63, 668, 669, 670, 1283, - 462, 830, 831, 1549, 1550, 1514, 1456, 1364, 64, 656, - 361, 1224, 1457, 1091, 922, 65, 66, 67, 68, 69, - 242, 243, 70, 71, 504, 1017, 1018, 1019, 1020, 245, - 506, 507, 784, 778, 779, 780, 1042, 1052, 1043, 1353, - 1044, 1045, 1354, 1355, 653, 654, 605, 895, 350, 465, - 466, 191, 199, 73, 74, 75, 200, 142, 143, 157, - 77, 132, 351, 352, 353, 79, 354, 81, 1022, 123, - 124, 125, 514, 105, 82, 355, 872, 873, 890, 629, - 1314, 1315, 1179, 1180, 1181, 720, 1316, 986, 1317, 1397, - 1524, 1479, 1480, 1318, 1319, 1504, 1398, 1525, 1399, 1560, - 1400, 1562, 1607, 1622, 1401, 1583, 1534, 1584, 1485, 458, - 717, 1281, 1320, 1415, 1539, 1388, 1389, 1471, 1553, 1523, - 1519, 1321, 1530, 1418, 837, 1586, 1587, 1588, 1620, 736, - 737, 1006, 1192, 1329, 738, 739, 740, 1002, 741, 148, - 1004, 743, 1194, 1195, 532, 84, 85 +static const short yydefgoto[] = { 1627, + 436, 2, 437, 165, 726, 331, 181, 3, 4, 37, + 689, 373, 1329, 690, 512, 1330, 1331, 393, 1424, 694, + 41, 513, 402, 700, 974, 701, 702, 703, 43, 172, + 173, 44, 455, 184, 180, 45, 46, 822, 1087, 828, + 1089, 47, 515, 516, 185, 186, 456, 733, 1012, 1013, + 669, 1014, 234, 48, 996, 995, 716, 713, 1153, 1152, + 954, 951, 136, 994, 49, 236, 50, 948, 582, 332, + 333, 334, 335, 1332, 1578, 1482, 1580, 1524, 1611, 1195, + 1557, 1575, 367, 940, 336, 1270, 895, 621, 902, 337, + 338, 368, 340, 358, 52, 255, 695, 418, 154, 53, + 54, 341, 577, 342, 343, 344, 345, 457, 346, 1333, + 496, 643, 347, 1334, 56, 217, 706, 348, 218, 555, + 219, 197, 210, 60, 479, 497, 1356, 767, 1213, 198, + 211, 61, 526, 768, 62, 63, 685, 686, 687, 1306, + 462, 865, 866, 1548, 1549, 1517, 1462, 1376, 64, 673, + 361, 1246, 1463, 1108, 957, 65, 66, 67, 68, 69, + 242, 243, 70, 71, 504, 1052, 1053, 1054, 1055, 245, + 520, 815, 521, 522, 523, 800, 810, 801, 1236, 802, + 803, 1237, 1238, 670, 671, 622, 930, 350, 465, 466, + 191, 199, 73, 74, 75, 200, 142, 143, 157, 77, + 132, 351, 352, 353, 79, 354, 81, 1057, 123, 124, + 125, 531, 105, 82, 355, 907, 908, 925, 646, 1337, + 1338, 1196, 1197, 1198, 737, 1339, 1021, 1340, 1409, 1527, + 1485, 1486, 1341, 1342, 1510, 1410, 1528, 1411, 1559, 1412, + 1561, 1606, 1621, 1413, 1582, 1537, 1583, 1491, 458, 734, + 1304, 1343, 1427, 1542, 1400, 1401, 1477, 1552, 1526, 1522, + 1344, 1533, 1430, 872, 1585, 1586, 1587, 1619, 753, 754, + 1041, 1209, 1352, 755, 756, 757, 1037, 758, 148, 1039, + 760, 1211, 1212, 549, 84, 85 }; -static const short yypact[] = { 113, - 134,-32768,-32768, 10501,-32768, 45, 86, 454, 528, 151, - 179,-32768,-32768, 625,-32768, 162, 167, 199,-32768,-32768, --32768, 1379, 744, 462, 231,-32768, 246, 543,-32768, 1936, - 1936,-32768, 2838,-32768, 10501, 281,-32768,-32768, 332,-32768, - 250, 10579,-32768,-32768, 270, 939, 377, 391, 420,-32768, --32768,-32768,-32768, 406, 3929,-32768, 10820,-32768, 1921, 529, --32768, 460,-32768,-32768, 1389, 411,-32768,-32768,-32768,-32768, - 440, 2961,-32768,-32768,-32768, 921,-32768,-32768,-32768, 617, --32768,-32768, 362, 8032, 431,-32768,-32768, 9567,-32768, 9567, --32768, 9567,-32768,-32768,-32768, 454, 528, 246, 470, 452, - 469, 420,-32768, 366,-32768, 362, 9653, 9653, 517,-32768, --32768,-32768,-32768,-32768, 675, 570, 544, 557, 585, 587, - 618,-32768,-32768, 1050,-32768, 1205, 454, 528,-32768, 246, - 470,-32768, 1385, 1043, 611, 11006, 9567,-32768, 9567, 3466, - 2560,-32768,-32768, 688, 874, 2560,-32768, 1242, 3626, 3626, - 2838, 554, 601,-32768, 533, 930, 630, 632,-32768,-32768, - 747,-32768, 586,-32768, 10706,-32768,-32768, 231, 5117, 666, --32768,-32768,-32768, 270, 4845, 11061, 776, 715,-32768,-32768, - 716, 460, 778, 156, 344, 753,-32768,-32768, 706, 65, --32768,-32768, 4597, 4597, 4660, 921, 832,-32768,-32768, 501, --32768,-32768, 1098,-32768,-32768,-32768,-32768,-32768, 1921, 865, --32768, 460, 921,-32768,-32768,-32768, 2025, 1921,-32768, 460, --32768, 4845,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, --32768,-32768, 768,-32768, 420,-32768, 460, 1592, 1265,-32768, --32768, 785, 785,-32768,-32768,-32768, 541, 362,-32768, 339, - 898,-32768, 201,-32768,-32768,-32768,-32768,-32768, 5823,-32768, --32768, 722,-32768, 760, 774,-32768,-32768,-32768,-32768, 808, +static const short yypact[] = { 136, + 169,-32768,-32768, 5066,-32768, 203, 163, 73, 77, 190, + 291,-32768,-32768, 1458,-32768, 259, 264, 279,-32768,-32768, +-32768, 871, 2044, 1374, 330,-32768, 336, 320,-32768, 1976, + 1976,-32768, 2798,-32768, 5066, 351,-32768,-32768, 355,-32768, + 51, 3166,-32768,-32768, 344, 824, 443, 463, 483,-32768, +-32768,-32768,-32768, 324, 5213,-32768, 5421,-32768, 2205, 804, +-32768, 456,-32768,-32768, 1137, 623,-32768,-32768,-32768,-32768, + 435, 3747,-32768,-32768,-32768, 198,-32768,-32768,-32768, 906, +-32768,-32768, 1174, 8340, 481,-32768,-32768, 10037,-32768, 10037, +-32768, 10037,-32768,-32768,-32768, 73, 77, 336, 510, 472, + 539, 483,-32768, 1000,-32768, 1174, 10123, 10123, 509,-32768, +-32768,-32768,-32768,-32768, 234, 550, 474, 541, 767, 554, + 564,-32768,-32768, 1006,-32768, 305, 73, 77,-32768, 336, + 510,-32768, 2508, 1031, 545, 5547, 10037,-32768, 10037, 4171, + 2952,-32768,-32768, 1311, 1265, 2952,-32768, 664, 3604, 3604, + 2798, 517, 538,-32768, 559, 876, 562, 592,-32768,-32768, + 700,-32768, 630,-32768, 3999,-32768,-32768, 330, 3843, 643, +-32768,-32768,-32768, 344, 6652, 6133, 836, 690,-32768,-32768, + 684, 456, 778, 176, 458, 728,-32768,-32768, 691, 69, +-32768,-32768, 3940, 3940, 6529, 198, 864,-32768,-32768, 546, +-32768,-32768, 1679,-32768,-32768,-32768,-32768,-32768, 2205, 883, +-32768, 456, 198,-32768,-32768,-32768, 2251, 2205,-32768, 456, +-32768, 6652,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, +-32768,-32768, 749,-32768, 483,-32768, 456, 2169, 910,-32768, +-32768, 766, 766,-32768, 4696,-32768, 715, 1174,-32768, 784, + 1757,-32768, 366,-32768,-32768,-32768,-32768,-32768, 4100,-32768, +-32768, 769,-32768, 740, 758,-32768,-32768,-32768,-32768, 781, -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, --32768,-32768, 770,-32768,-32768, 541, 2961, 889,-32768,-32768, - 781,-32768,-32768, 10261, 10347, 10433, 10433,-32768,-32768,-32768, --32768,-32768, 791, 824, 834, 836, 839, 984, 470, 9739, - 1344, 10433,-32768,-32768, 10433,-32768,-32768, 10433, 7140,-32768, - 10433, 783, 847,-32768, 10433,-32768, 9825,-32768, 11306, 207, - 735, 2906, 9911,-32768, 909, 1677,-32768, 1035, 2216, 2707, --32768, 341,-32768, 1619, 1893, 783, 783, 9567, 11006,-32768, - 1344, 820, 1344,-32768,-32768, 829, 873, 11239, 845, 850, - 857, 1404, 586,-32768,-32768,-32768,-32768,-32768,-32768,-32768, --32768, 570, 544, 557, 1344, 585, 587, 868, 618,-32768, - 920,-32768, 2238, 454, 528,-32768,-32768,-32768,-32768,-32768, --32768, 4577,-32768, 4845, 4782, 1152,-32768, 783, 437,-32768, --32768, 807,-32768, 908, 914,-32768,-32768,-32768, 2560,-32768, --32768, 2560,-32768, 882,-32768,-32768,-32768, 930, 930, 930, --32768,-32768,-32768, 5823, 91, 883, 894,-32768,-32768,-32768, --32768, 11006,-32768, 962, 1003,-32768,-32768, 747,-32768, 460, --32768,-32768,-32768,-32768, 140,-32768,-32768,-32768,-32768, 7692, - 9739,-32768,-32768,-32768, 9739, 901,-32768, 6828, 142, 10560, --32768, 10560,-32768, 11078, 11078, 4660, 897,-32768, 460, 4845, --32768, 906,-32768,-32768, 11119, 2025, 1921, 4845,-32768, 460, --32768,-32768, 460, 2025,-32768, 997,-32768, 9567, 768,-32768, --32768, 1592,-32768,-32768,-32768, 3869, 85, 541, 460,-32768, --32768, 954, 982, 1006, 990,-32768,-32768,-32768,-32768, 610, --32768, 463, 925, 956,-32768,-32768, 541,-32768,-32768, 819, --32768,-32768, 9567, 9739, 781, 7140,-32768, 479, 7140,-32768, --32768,-32768, 9653, 3641, 3641, 3641, 3641, 11284,-32768,-32768, --32768,-32768, 969, 10003, 10003, 7140, 971, 164, 985, 1032, - 987,-32768,-32768,-32768,-32768, 9567,-32768, 7231, 7140,-32768, - 9739, 9739, 7783, 9739, 9739, 9739, 9739, 9739, 9739, 9739, - 9739, 9739, 9739, 9739, 9739, 9739, 9739, 9739, 9739, 9739, - 9739, 9739,-32768, 9739,-32768,-32768,-32768,-32768,-32768, 9739, - 9739,-32768,-32768, 2543, 443, 205, 8392,-32768,-32768,-32768, - 1059, 898, 1108, 519, 559, 567, 2402, 874,-32768, 1955, - 1955,-32768, 3205, 1007, 1031, 1080,-32768,-32768, 511, 8942, - 1749,-32768, 1030, 362,-32768,-32768, 9739,-32768,-32768,-32768, --32768,-32768, 441, 431,-32768,-32768, 783,-32768, 4845, 2724, --32768, 1077, 1078,-32768,-32768, 1344, 868,-32768, 8124, 8215, --32768,-32768,-32768,-32768,-32768,-32768,-32768, 120,-32768, 1055, - 1034, 586, 2238, 1097, 9567,-32768, 1096,-32768,-32768, 1043, - 1697, 1128, 471, 1101, 1103,-32768,-32768, 3099, 11061, 3099, - 3303, 1389, 10765,-32768, 1105,-32768,-32768,-32768,-32768,-32768, --32768,-32768,-32768, 1068, 1071,-32768, 1111,-32768,-32768, 270, --32768,-32768,-32768,-32768, 97, 400, 1118, 1032,-32768,-32768, --32768,-32768, 7030, 11284,-32768, 873, 1079, 11239,-32768,-32768, - 1081,-32768, 1082, 573, 4360, 1083,-32768, 112, 4465, 1117, - 1131, 568,-32768,-32768,-32768, 10560, 10560,-32768, 11119,-32768, - 1136,-32768,-32768, 1090, 142,-32768, 2025,-32768,-32768, 460, - 1130,-32768, 2297,-32768, 660, 789,-32768, 9739, 10638,-32768, - 10638, 408, 408, 211, 603, 3889, 10879, 5499,-32768, 210, - 408, 1144, 460, 6090,-32768, 142, 5204, 9567, 9567,-32768, - 9567, 142, 5204,-32768,-32768,-32768,-32768,-32768,-32768, 477, - 477, 477, 783, 1084, 1099, 9218, 1080, 1109, 1114, 1116, - 1141, 4282, 1150, 1153, 1154,-32768, 1122,-32768,-32768, 1126, --32768,-32768, 1157, 74, 325, 311, 172, 9739, 1174,-32768, - 1180, 1146, 11284, 11284,-32768,-32768, 1190, 11324, 11341, 6304, - 11356, 2756, 3410, 3759, 2096, 2096, 2096, 1693, 1693, 992, - 992, 968, 968, 968,-32768,-32768, 1147, 1156, 1162, 9739, - 9653,-32768, 443,-32768, 7692, 9739,-32768,-32768,-32768, 9739, --32768,-32768, 1181, 10433, 1163, 1188, 1206, 1235,-32768, 9739, --32768, 9739,-32768, 9739, 3331,-32768, 3331,-32768, 105, 1175, - 1176,-32768, 1178, 3641, 142,-32768, 142, 4214,-32768, 5204, - 1182, 3040, 3040, 6640, 1179, 9825, 1187, 930, 1845, 1893, - 1210, 1193,-32768,-32768,-32768,-32768,-32768,-32768,-32768, 9739, - 1344, 1177, 1078,-32768, 11284,-32768, 11284, 1404, 1196, 10089, --32768, 1197, 1245,-32768, 783,-32768,-32768,-32768,-32768,-32768, - 2817, 4577,-32768, 3641, 9567, 3526, 3526, 5669,-32768,-32768, --32768,-32768, 1098,-32768,-32768,-32768, 903, 9739,-32768,-32768, --32768,-32768,-32768,-32768,-32768,-32768,-32768, 270,-32768, 570, - 544, 557,-32768, 585, 587, 9739, 1250,-32768, 606, 618, - 608, 653, 1545, 1032,-32768, 78,-32768, 59,-32768,-32768, --32768,-32768,-32768,-32768, 9034,-32768,-32768,-32768,-32768,-32768, --32768,-32768, 1131, 1247,-32768,-32768,-32768, 3641,-32768,-32768, --32768, 1251,-32768,-32768, 1223,-32768, 1259,-32768,-32768, 108, --32768,-32768,-32768, 5204, 11284,-32768, 2448,-32768, 460, 460, --32768,-32768,-32768,-32768,-32768, 5204, 604, 843, 9739, 997, --32768, 1266,-32768,-32768,-32768, 277, 353, 617, 874, 418, - 408, 1272,-32768, 425,-32768,-32768,-32768, 460,-32768,-32768, - 8460,-32768, 1216, 783, 783, 783,-32768, 1224, 142, 5204, - 142, 5204,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, --32768, 1241, 1244, 1249, 1252, 1068,-32768, 11172, 7692, 7325, - 1253,-32768, 9739,-32768,-32768,-32768, 1254, 1236, 1248, 3641, --32768,-32768, 1256, 190, 750, 750, 1239, 750,-32768,-32768, - 10433, 1352, 9567,-32768, 1258, 1261, 1262,-32768,-32768,-32768, --32768,-32768,-32768,-32768,-32768, 142, 1263,-32768, 1264,-32768, --32768, 2147,-32768,-32768,-32768,-32768,-32768, 11284,-32768,-32768, - 1267,-32768,-32768, 255, 1273,-32768,-32768,-32768,-32768,-32768, --32768,-32768, 4152, 4152, 4986, 4986, 5669,-32768, 1098,-32768, - 5377, 11306,-32768,-32768,-32768, 1295,-32768, 400,-32768, 9739, --32768, 9739,-32768, 9739,-32768, 1344,-32768,-32768, 6527, 1339, --32768, 7416,-32768, 9126, 9126, 6734, 62, 1297, 96,-32768, - 7692, 7507,-32768,-32768, 286, 7692,-32768,-32768,-32768, 9653, --32768,-32768,-32768,-32768, 1654, 142, 1302,-32768, 1310, 1310, - 142, 1306, 9739, 9739, 11150, 460, 4944, 460, 460, 1298, - 460, 5233, 1310,-32768,-32768,-32768, 1325,-32768,-32768,-32768, - 1307,-32768, 1309, 9739, 9739, 9739, 9739, 7692,-32768, 1356, --32768,-32768, 11284,-32768,-32768,-32768, 552, 1248,-32768,-32768, --32768,-32768,-32768,-32768, 1311,-32768, 1372, 783,-32768,-32768, --32768, 142,-32768,-32768,-32768,-32768,-32768,-32768, 9739,-32768, --32768, 4152, 4152,-32768, 5377,-32768,-32768, 1313, 1316, 1319, - 1334,-32768, 1010, 298, 1376, 861, 910,-32768,-32768,-32768, --32768,-32768, 9739, 1377, 1380, 1384, 9304, 273, 1344, 828, - 614,-32768,-32768, 9395, 1439,-32768,-32768,-32768, 1390,-32768, - 4718, 10947, 5938, 6261,-32768,-32768, 1435,-32768,-32768,-32768, - 8553,-32768,-32768, 1345, 369,-32768,-32768,-32768,-32768, 3641, --32768,-32768, 7692, 1347, 1348, 2297,-32768,-32768,-32768,-32768, --32768,-32768,-32768,-32768,-32768, 11150, 11150,-32768, 1310, 628, - 953, 9739,-32768,-32768,-32768, 997, 997, 1310, 1310, 610, - 1310,-32768,-32768, 6395, 142, 142,-32768,-32768, 1354, 1355, - 1359, 1360,-32768, 7692, 9739,-32768, 552,-32768,-32768,-32768, --32768, 142, 1362,-32768,-32768,-32768,-32768, 1334,-32768, 1344, --32768,-32768,-32768,-32768,-32768,-32768, 657, 657, 1032, 1381, - 1386, 5708,-32768,-32768,-32768,-32768, 1392, 9739, 1412, 1418, - 1426, 1692, 1763,-32768, 1032,-32768,-32768, 1394,-32768,-32768, - 997, 1063,-32768, 1073, 997, 9481, 1075, 315,-32768,-32768, --32768,-32768,-32768,-32768, 188,-32768,-32768,-32768,-32768,-32768, - 142, 142,-32768,-32768,-32768, 9739, 9739, 11150, 460, 460, --32768,-32768,-32768,-32768, 8306,-32768,-32768,-32768,-32768, 142, - 142,-32768,-32768,-32768,-32768,-32768, 1374,-32768,-32768,-32768, - 1396,-32768,-32768,-32768, 9653,-32768,-32768,-32768, 1466, 8849, - 6936, 9653, 9739,-32768, 8661,-32768, 1436,-32768,-32768, 1441, --32768, 1426, 1692,-32768,-32768, 747,-32768,-32768, 10175, 10175, - 7601,-32768,-32768, 1032,-32768,-32768, 11150, 11150,-32768, 1310, - 1310, 1391, 11194, 1408,-32768,-32768,-32768, 6188,-32768,-32768, - 1399, 763, 4845, 1032, 8755,-32768,-32768, 78,-32768,-32768, - 1450, 1405, 11262, 8661,-32768,-32768,-32768,-32768, 1334, 87, --32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, 377, 270, - 1407, 1410, 1032,-32768, 997,-32768,-32768,-32768,-32768, 663, --32768, 7874,-32768,-32768,-32768,-32768, 1334, 1501, 1456, 161, --32768,-32768,-32768,-32768, 460, 78,-32768, 9739, 1463,-32768, - 1464,-32768, 1032, 8661, 1443, 158, 1478,-32768,-32768,-32768, - 140,-32768, 1474,-32768, 1431,-32768,-32768,-32768,-32768, 9739, - 1501, 1481, 1501,-32768,-32768,-32768, 7965, 1437, 649,-32768, --32768, 7692, 1444,-32768, 1532, 1491,-32768,-32768,-32768, 317, --32768, 8755, 1544, 1496,-32768,-32768,-32768, 1557, 1563,-32768 +-32768,-32768, 755,-32768,-32768, 715, 3747, 1632,-32768,-32768, + 776,-32768,-32768, 10731, 10817, 10903, 10903,-32768,-32768,-32768, +-32768,-32768, 780, 786, 797, 825, 832, 1025, 510, 10209, + 1357, 10903,-32768,-32768, 10903,-32768,-32768, 10903, 7539,-32768, + 10903, 65, 849,-32768, 10903,-32768, 10295,-32768, 11119, 426, + 1563, 3740, 10381,-32768, 919, 2567,-32768, 1700, 2285, 3286, +-32768, 431,-32768, 3387, 1998, 65, 65, 10037, 5547,-32768, + 1357, 827, 1357,-32768,-32768, 826, 879, 11052, 837, 842, + 857, 1966, 630,-32768,-32768,-32768,-32768,-32768,-32768,-32768, +-32768, 550, 474, 541, 1357, 767, 554, 881, 564,-32768, + 914,-32768, 270, 73, 77,-32768,-32768,-32768,-32768,-32768, +-32768, 6834,-32768, 6652, 6645, 723,-32768, 65, 301,-32768, +-32768, 811,-32768, 897, 903,-32768,-32768,-32768, 2952,-32768, +-32768, 2952,-32768, 873,-32768,-32768,-32768, 876, 876, 876, +-32768,-32768,-32768, 4100, 103, 875, 884,-32768,-32768,-32768, +-32768, 5547,-32768, 900, 963,-32768,-32768, 700,-32768, 456, +-32768,-32768,-32768,-32768, 165,-32768,-32768,-32768,-32768, 8091, + 10209,-32768,-32768,-32768, 10209, 877,-32768, 5311, 240, 4742, +-32768, 4742,-32768, 5059, 5059, 6529, 882,-32768, 456, 6652, +-32768, 891,-32768,-32768, 5849, 2251, 2205, 6652,-32768, 456, +-32768,-32768, 456, 2251,-32768, 981,-32768, 10037, 749,-32768, +-32768, 2169,-32768,-32768,-32768,-32768, 807, 385,-32768, 10209, + 1836,-32768, 1836, 219, 219, 220, 433, 3033, 4527, 108, + 4879,-32768, 274, 219, 715, 456,-32768,-32768, 941, 944, + 971, 955,-32768,-32768,-32768,-32768, 847,-32768, 439, 921, + 927,-32768,-32768, 715,-32768,-32768, 1100,-32768,-32768, 10037, + 10209, 776, 7539,-32768, 451, 7539,-32768,-32768,-32768, 10123, + 4970, 4970, 4970, 4970, 11097,-32768,-32768,-32768,-32768, 934, + 10473, 10473, 7539, 937, 437, 939, 991, 947,-32768,-32768, +-32768,-32768, 10037,-32768, 7630, 7539,-32768, 10209, 10209, 5654, + 10209, 10209, 10209, 10209, 10209, 10209, 10209, 10209, 10209, 10209, + 10209, 10209, 10209, 10209, 10209, 10209, 10209, 10209, 10209,-32768, + 10209,-32768,-32768,-32768,-32768,-32768, 10209, 10209,-32768,-32768, + 339, 651, 1120, 8700,-32768,-32768,-32768, 998, 1757, 1053, + 469, 482, 581, 3585, 1265,-32768, 1659, 1659,-32768, 3502, + 960, 982, 1043,-32768,-32768, 590, 9320, 1173,-32768, 1103, + 1174,-32768,-32768, 10209,-32768,-32768,-32768,-32768,-32768, 90, + 481,-32768,-32768, 65,-32768, 6652, 1444,-32768, 1014, 1034, +-32768,-32768, 1357, 881,-32768, 8432, 8523,-32768,-32768,-32768, +-32768,-32768,-32768,-32768, 278,-32768, 1016, 1020, 630, 270, + 1062, 10037,-32768, 1073,-32768,-32768, 1031, 2198, 1102, 71, + 1079, 1083,-32768,-32768, 2306, 6133, 2306, 2152, 1137, 4350, +-32768, 1094,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, + 1046, 1054,-32768, 1107,-32768,-32768, 344,-32768,-32768,-32768, +-32768, 104, 1493, 1101, 991,-32768,-32768,-32768,-32768, 7429, + 11097,-32768, 879, 1064, 11052,-32768,-32768, 1067,-32768, 1089, + 93, 3406, 1095,-32768, 571, 5919, 1140, 1145, 649,-32768, +-32768,-32768, 4742, 4742,-32768, 5849,-32768, 1157,-32768,-32768, + 1111, 240,-32768, 2251,-32768,-32768, 456, 1109,-32768, 2385, +-32768, 7162, 11097,-32768, 5202,-32768, 456, 456,-32768,-32768, +-32768,-32768,-32768, 7162, 174, 966, 10209, 981,-32768, 1166, +-32768,-32768,-32768, 485, 580, 906, 1265, 587, 219, 1177, +-32768, 676, 1161, 456, 8768,-32768,-32768,-32768, 456,-32768, + 240, 7162, 10037, 10037,-32768, 10037, 240, 7162,-32768,-32768, +-32768,-32768,-32768,-32768, 1688, 1688, 1688, 65, 1136, 1143, + 9688, 1043, 1147, 1149, 1152, 1170, 2853, 1186, 1189, 1190, +-32768, 1167,-32768,-32768, 1168,-32768,-32768, 1211, 996, 1060, + 557, 601, 10209, 1217,-32768, 1232, 1191, 11097, 11097,-32768, +-32768, 1235, 5746, 6217, 6158, 4780, 2387, 5364, 4442, 2354, + 2354, 2354, 1205, 1205, 1512, 1512, 1028, 1028, 1028,-32768, +-32768, 1192, 1194, 1183, 10209, 10123,-32768, 651,-32768, 8091, + 10209,-32768,-32768,-32768, 10209,-32768,-32768, 1204, 10903, 1199, + 1215, 1231, 1264,-32768, 10209,-32768, 10209,-32768, 10209, 2925, +-32768, 2925,-32768, 228, 1216, 1218,-32768, 1214, 4970, 240, +-32768, 240, 3053,-32768, 7162, 1219, 9504, 9504, 6451, 1220, + 10295, 1221, 876, 2159, 1998, 1368, 1224,-32768,-32768,-32768, +-32768,-32768,-32768,-32768, 10209, 1357, 1225, 1034,-32768, 11097, +-32768, 11097, 1966, 1227, 10559,-32768, 1233, 1253,-32768, 65, +-32768,-32768,-32768,-32768,-32768, 1852, 6834,-32768, 4970, 10037, + 1202, 1202, 4282,-32768,-32768,-32768,-32768, 1679,-32768,-32768, +-32768, 1188, 10209,-32768,-32768,-32768,-32768,-32768,-32768,-32768, +-32768,-32768, 344,-32768, 550, 474, 541,-32768, 767, 554, + 10209, 1285,-32768, 672, 564, 702, 706, 1806, 991,-32768, + 96,-32768, 171,-32768,-32768,-32768,-32768,-32768,-32768, 9412, +-32768,-32768,-32768,-32768,-32768,-32768,-32768, 1145, 1283,-32768, +-32768,-32768, 4970,-32768,-32768,-32768, 1284,-32768,-32768, 1257, +-32768, 1294,-32768,-32768, 298,-32768,-32768, 240, 1249,-32768, + 1305, 1305, 240, 1262, 10209, 10209, 7076, 456, 4960, 456, + 456, 1524, 456, 6356,-32768,-32768, 8838, 1305,-32768, 1266, + 65, 65, 65,-32768, 1267, 240, 7162, 240, 7162,-32768, +-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, 1289, 1290, + 1291, 1293, 1046,-32768, 10985, 8091, 7724, 1280,-32768, 10209, +-32768,-32768,-32768, 1281, 1287, 1295, 4970,-32768,-32768, 1298, + 569, 1012, 1012, 1296, 1012,-32768,-32768, 10903, 1384, 10037, +-32768, 1309, 1313, 1319,-32768,-32768,-32768,-32768,-32768,-32768, +-32768,-32768, 240, 1326,-32768, 1325,-32768,-32768, 2768,-32768, +-32768,-32768,-32768,-32768, 11097,-32768,-32768, 1292,-32768,-32768, + 292, 1330,-32768,-32768,-32768,-32768,-32768,-32768,-32768, 2497, + 2497, 2557, 2557, 4282,-32768, 1679,-32768, 3088, 11119,-32768, +-32768,-32768, 1331,-32768, 1493,-32768, 10209,-32768, 10209,-32768, + 10209,-32768, 1357,-32768,-32768, 7026, 1413,-32768, 7815,-32768, + 9596, 9596, 7226, 173, 1339, 209,-32768, 8091, 7906,-32768, +-32768, 311, 8091,-32768,-32768,-32768, 10123,-32768,-32768,-32768, +-32768, 1848,-32768,-32768,-32768,-32768,-32768,-32768, 7076, 7076, +-32768, 1305, 585, 1127, 10209,-32768,-32768,-32768, 981, 981, + 1305, 1305, 847, 1305,-32768,-32768,-32768,-32768,-32768, 1395, +-32768,-32768,-32768, 1342,-32768, 1346, 10209, 10209, 10209, 10209, + 8091,-32768, 1393,-32768,-32768, 11097,-32768,-32768,-32768, 60, + 1295,-32768,-32768,-32768,-32768,-32768,-32768, 1348,-32768, 1421, + 65,-32768,-32768,-32768, 240,-32768,-32768,-32768,-32768,-32768, +-32768, 10209,-32768,-32768, 2497, 2497,-32768, 3088,-32768,-32768, + 1352, 1362, 1363, 1380,-32768, 1036, 321, 1407, 1164, 1165, +-32768,-32768,-32768,-32768,-32768, 10209, 1416, 1419, 1425, 9774, + 653, 1357, 496, 693,-32768,-32768, 9865, 1477,-32768,-32768, +-32768, 1430,-32768, 6551, 6039, 4418, 6895,-32768,-32768, 1475, +-32768,-32768,-32768, 8931,-32768,-32768, 1386, 1373,-32768,-32768, +-32768,-32768, 4970,-32768,-32768, 8091, 1391, 1399, 2385,-32768, +-32768,-32768, 240, 240,-32768,-32768,-32768, 10209, 10209, 7076, + 456, 456,-32768,-32768,-32768, 6712, 240, 240,-32768,-32768, + 1400, 1401, 1405, 1410,-32768, 8091, 10209,-32768, 60,-32768, +-32768,-32768,-32768, 240, 1415,-32768,-32768,-32768,-32768, 1380, +-32768, 1357,-32768,-32768,-32768,-32768,-32768,-32768, 711, 711, + 991, 1432, 1433, 6200,-32768,-32768,-32768,-32768, 1467, 10209, + 1472, 1428, 1480, 1927, 1987,-32768, 991,-32768,-32768, 1451, +-32768,-32768, 981, 1061,-32768, 1076, 981, 9951, 1090, 322, +-32768,-32768,-32768,-32768,-32768,-32768, 364,-32768,-32768,-32768, +-32768,-32768,-32768,-32768, 7076, 7076,-32768, 1305, 1305,-32768, + 8614,-32768,-32768,-32768,-32768, 240, 240,-32768,-32768,-32768, +-32768,-32768, 1434,-32768,-32768,-32768, 1459,-32768,-32768,-32768, + 10123,-32768,-32768,-32768, 1538, 9227, 7336, 10123, 10209,-32768, + 9039,-32768, 1496,-32768,-32768, 1504,-32768, 1480, 1927,-32768, +-32768, 700,-32768,-32768, 10645, 10645, 8000,-32768,-32768, 991, +-32768,-32768,-32768,-32768, 1452, 11007, 1463,-32768,-32768,-32768, + 10990,-32768,-32768, 1455, 398, 6652, 991, 9133,-32768,-32768, + 96,-32768,-32768, 1507, 1460, 11075, 9039,-32768,-32768,-32768, +-32768, 1380, 76,-32768,-32768,-32768,-32768, 443, 344, 1462, + 1466, 991,-32768, 981,-32768,-32768,-32768,-32768, 714,-32768, + 8182,-32768,-32768,-32768,-32768, 1380, 1566, 1522, 177,-32768, +-32768,-32768,-32768, 456, 96,-32768, 10209, 1523,-32768, 1529, +-32768, 991, 9039, 1491, 63, 1531,-32768,-32768,-32768, 165, +-32768, 1534,-32768, 1494,-32768,-32768,-32768,-32768, 10209, 1566, + 1539, 1566,-32768,-32768,-32768, 8273, 1500, 572,-32768,-32768, + 8091, 1501,-32768, 1577, 1553,-32768,-32768,-32768, 332,-32768, + 9133, 1603, 1559,-32768,-32768,-32768, 1621, 1622,-32768 }; static const short yypgoto[] = {-32768, - 1564,-32768, -331, 1400, -350, 19, 6, 1571,-32768, 1539, --32768,-32768, 228,-32768, 229,-32768, 249,-32768, 163, 902, - 39, 15,-32768,-32768, -629,-32768,-32768, 636, 55, 1420, - 1137, 1433, -704, 42, -173, -6, 150,-32768,-32768,-32768, --32768,-32768, 823,-32768,-32768,-32768,-32768,-32768,-32768, 436, - 1148,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, --32768,-32768, 1511, -651, 5827, 1369, -47, -586, -227, -68, - 1469, -536,-32768, 684,-32768, 212,-32768, -1387,-32768, -1289, - -11,-32768, 1519, 1510, -270, 364, -544,-32768, -826, 2320, - 9, 1554, 3609, 1314, -327, -57, -88, 682, -139, -65, - 93,-32768,-32768,-32768, -326,-32768, -153,-32768,-32768, -1252, - -48, -338, 4854, 138, 912, -118, 81, 102, -203, -4, - -144, -166, -172, 16, -21, 145,-32768, -370,-32768,-32768, --32768,-32768,-32768, 213, 1308, 10,-32768, 686,-32768,-32768, - -768, -377, 893,-32768,-32768,-32768,-32768,-32768, -16,-32768, --32768,-32768,-32768,-32768, 694, -346,-32768,-32768,-32768,-32768, --32768,-32768,-32768,-32768, 1378,-32768, 283, 421,-32768,-32768, --32768,-32768,-32768, 848, -677,-32768,-32768,-32768,-32768,-32768, --32768, 852,-32768, 412, 977, 714, 1039, 4229, 47, 21, - -455, 1438, 1271, -667,-32768, 4,-32768, 822, 4045, -147, - 173, -102, 4533, 1293,-32768, 4890, 2554, 1748, -18, -114, --32768, 1521, -53,-32768, 4714, 3375, -257,-32768, 1983,-32768, --32768, 333,-32768,-32768, 472, 63, -439,-32768,-32768,-32768, --32768, -1405,-32768, -1174, -1373,-32768,-32768,-32768,-32768,-32768, --32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, 83, --32768,-32768,-32768,-32768,-32768, 116, -1322,-32768,-32768, -45, --32768,-32768,-32768,-32768, -1416, 67,-32768, 53,-32768, -723, - -583, 667,-32768,-32768,-32768,-32768, -388,-32768, -382, -441, --32768, 1416, 336,-32768, -84,-32768, -230 + 1624,-32768, -304, 1456, -364, 75, 2, 1623,-32768, 1593, +-32768,-32768, 315,-32768, 373,-32768, 507,-32768, 206, 942, + 58, 24,-32768,-32768, -669,-32768,-32768, 657, 59, 1469, + 1197, 1478, -719, 111, -173, 29, 55,-32768,-32768,-32768, +-32768,-32768, 1125,-32768,-32768,-32768,-32768,-32768,-32768, 466, + 1903,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, +-32768,-32768, 1568, -526, 6178, 1422, -58, -599, -235, -44, + 1533, -547,-32768, 388,-32768, 260,-32768, -1362,-32768, -1307, + 52,-32768, 1442, 1361, -254, 403, -557,-32768, -868, 3479, + -125, 1528, 4472, 1379, -332, -52, -76, 427, -140, -66, + 135,-32768,-32768,-32768, -344,-32768, -159,-32768,-32768, -1236, + -16, -329, 1934, 530, -150, -166, 78, 50, -206, -4, + -145, -165, -171, 32, -11, 357,-32768, -257,-32768,-32768, +-32768,-32768,-32768, 734, 1247, -45,-32768, 716,-32768,-32768, + -765, -399, 940,-32768,-32768,-32768,-32768,-32768, 218,-32768, +-32768,-32768,-32768,-32768, 729, -377,-32768,-32768,-32768,-32768, +-32768,-32768,-32768,-32768, 1447,-32768, 335, 473,-32768,-32768, +-32768,-32768, 885, -479,-32768,-32768,-32768,-32768,-32768,-32768, + 1172,-32768, 624, 1030, 745, 1086, 2837, 14, 54, -461, + 1510, 2756, -686,-32768, 13,-32768, 645, 20, -142, 271, + -105, 5046, 1365,-32768, 5682, 2642, 1651, -19, -113,-32768, + 1590, -54,-32768, 5135, 3513, -359,-32768, 1597,-32768,-32768, + 381,-32768,-32768, 527, 138, -429,-32768,-32768,-32768,-32768, + -1369,-32768, -1238, -1389,-32768,-32768,-32768,-32768,-32768,-32768, +-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, 156,-32768, +-32768,-32768,-32768,-32768, 188, -1311,-32768,-32768, -51,-32768, +-32768,-32768,-32768, -1385, 140,-32768, 144,-32768, -606, -580, + 710,-32768,-32768,-32768,-32768, -393,-32768, -390, -333,-32768, + 1007, 397,-32768, 83,-32768, -232 }; -#define YYLAST 11440 +#define YYLAST 11203 static const short yytable[] = { 59, - 443, 420, 423, 445, 122, 487, 196, 435, 444, 36, - 631, 392, 984, 694, 256, 721, 432, 103, 42, 695, - 515, 356, 35, 357, 182, 178, 754, 640, 641, 822, - 59, 400, 253, 537, 540, 174, 1101, 59, 298, 891, - 36, 671, 221, 508, 398, 399, 891, 962, 981, 42, - 72, 1416, 209, 35, 249, 692, 42, 177, 861, 914, - 169, 763, 956, 1063, 1531, 1472, 570, 247, 408, 1068, - 391, 224, 492, 495, 190, 397, 141, 146, 256, 296, - 170, 72, 725, 349, 57, 349, 260, 349, 72, 710, - 486, 1026, 527, 1028, 1532, 1021, 171, 609, 1541, 494, - 1055, 609, 349, 349, 86, 58, 1527, 609, -302, 364, - 1176, 467, -1, 963, 1203, 57, 992, 1182, 1556, 759, - 820, 782, 176, 997, 644, 155, 196, 89, 645, 646, - 297, 406, 349, -2, 349, -141, 58, 256, 785, 1431, - 718, 55, -626, 58, 1204, 527, 1434, 90, 1568, 224, - 518, 1559, 178, 87, -302, -302, 452, 468, 440, 88, - 59, 1590, 174, 993, 59, 224, 994, 1183, 893, -295, - 998, 209, 55, 999, 1582, 190, 1127, 1598, 928, 175, - 700, 701, 72, 42, 177, 295, 1177, 169, -626, -626, - 1613, 490, 221, 783, 1569, 419, 422, 719, 707, 807, - 221, 221, 742, -626, 969, 158, 208, 170, 127, 128, - 593, 72, 821, -356, 522, 72, 405, 453, -356, 1601, - 190, 224, 453, 171, 93, 138, 94, 929, 1529, 224, - 221, 38, 39, -144, -304, 1031, 619, 58, 1561, 470, - 472, 155, 155, 155, 1472, 57, 224, 516, 1559, 176, - 454, 260, 40, 593, 107, 454, 594, 615, 26, 108, - 130, 131, 38, 39, 1134, 1602, 58, 1137, 1032, 1056, - 58, -295, 1033, 404, 868, 95, 110, 111, 985, 221, - -304, -304, 806, 40, 869, 403, 1594, 155, 614, 647, - 679, 109, 247, 517, 715, -298, 606, 1250, 870, 594, - 1207, -365, 55, 15, 135, 1034, 175, 163, 1163, 1164, - 1535, 1149, 1212, 1269, 541, 542, 641, 1100, 1057, 137, - 891, 158, 158, 158, 349, 208, 420, 423, 112, 113, - 550, 674, 221, 551, -365, 941, 552, 296, -365, 562, - 932, 492, 495, 567, 1330, 247, 1231, 164, 1233, 492, - 694, 608, 1408, 349, 650, 697, 1003, 1392, 260, 1566, - 967, 968, 1270, 495, 891, 8, 9, 158, 757, 8, - 9, -365, -143, 161, 1392, 1623, 179, -366, 91, 15, - -304, 515, 495, 1055, 137, 510, -142, 636, 297, 221, - 459, 162, 91, 1331, 449, -304, 631, 691, 92, -304, - 209, 183, 970, 971, 972, 72, 1393, 460, 1152, 1599, - -366, 891, 92, 363, -366, -304, 682, 130, 131, 915, - 1376, 130, 131, 1503, 1624, 178, 1198, -304, -304, 761, - -304, 511, -304, 637, 15, 712, 461, 59, -415, 405, - 1342, 1343, -120, 295, 15, 1129, 973, -366, 693, -118, - 187, 15, -584, 26, 1363, 974, 975, 177, 775, 224, - 58, -304, -304, 735, 803, 127, 128, -415, 240, 221, - 221, -415, 241, 188, 760, -120, -304, 221, 308, -120, - 127, 128, -118, 1266, 1267, 518, -118, 1102, 72, 864, - 18, 221, 976, 349, 26, 566, 649, 244, -584, 189, - 981, 59, 224, 690, 299, 129, 865, 89, 648, 796, - 221, 563, -120, 564, 693, 26, -415, 130, 131, -118, - 746, 747, 176, 138, 769, 619, 362, 90, 349, 942, - 26, 349, 130, 131, 349, 866, 966, 1021, 349, 812, - 812, 812, 812, 58, 1175, 943, 528, -584, 215, 216, - 1468, 349, 72, 694, 14, 797, 529, 899, 606, 695, - 360, 349, 550, 551, 349, 879, 155, 155, 155, 690, - 679, 806, 1199, 891, 1201, 1076, 20, 938, 1205, 175, - 1445, 91, 640, 641, 992, 23, 777, 222, 223, 1451, - 1452, 937, 1453, -584, 482, 692, 138, 377, 864, 296, - 917, 92, 891, 900, 901, 881, 935, 58, 527, 372, - 378, 880, 492, 883, 1007, 865, 139, 90, 691, 7, - 8, 250, 10, 376, 752, 735, 189, 95, 96, 97, - 92, 993, 758, 221, 994, 570, -829, 260, 379, 949, - 380, 954, 955, 776, 866, 1375, 158, 158, 158, 1035, - 297, 882, 1169, 1255, 1171, 772, 794, 21, 137, 884, - 1008, -295, 122, 91, 251, 1213, 885, 887, 1021, 693, - 349, 381, 27, 28, 221, 1414, 693, 88, 26, 644, - 98, 99, 100, 92, 209, 401, 955, 137, 247, 1446, - 7, 127, 128, 10, -7, 1036, 252, 982, 1170, 1173, - 1172, 88, 795, 1474, 32, 295, 1023, 1148, 425, 1577, - 1615, 1239, 1241, 91, 153, 1073, 1074, 1075, 221, 1064, - 1065, 775, 1066, 775, 690, 8, 520, 1041, 21, 775, - 775, 690, 374, 92, 691, 251, 775, 433, 375, -621, - 221, 1544, 1545, 27, 28, 1174, 116, 117, 118, 1475, - 1029, 1030, 1024, 127, 128, 1578, 1616, 303, 518, 1058, - 1336, 1337, 1338, 164, 59, 807, 59, 252, 432, 363, - 215, 216, 209, 59, 447, 32, 14, 130, 131, 59, - 451, 595, 691, 349, 349, 693, 349, 769, 691, 769, - 366, 370, 127, 128, 1165, 221, 769, 26, 20, 119, - 120, 521, 769, 26, 1241, 130, 131, 23, 448, 619, - 127, 128, 463, 1326, 1328, 72, 464, 72, 1332, 868, - 596, 597, 127, 128, 72, 598, 599, 600, 601, 869, - 72, 421, 424, 693, 222, 446, 1226, 1227, 1228, 693, - 690, 498, 26, 870, 130, 131, 503, 1251, 1252, 777, - 1254, 777, 147, 523, 363, 806, 349, 563, 777, 564, - 1373, 1104, 130, 131, 777, 1591, 363, 524, 392, 525, - 58, 129, 58, 534, 130, 131, 153, 127, 128, 58, - 526, 26, 1110, 543, 1411, 58, 521, 256, 690, 812, - 480, 481, 127, 128, 690, 691, 89, 544, 252, 735, - 95, 110, 111, 512, 1214, 566, 776, 545, 1027, 546, - 550, 551, 547, 260, 89, 776, 90, 224, 772, 609, - 772, 776, 1395, 488, 489, 1040, 1050, 772, 655, 130, - 131, 659, 300, 772, 90, 10, 658, 691, 21, 812, - 349, 675, 26, 691, 130, 131, 693, 15, 885, 887, - 693, -415, 661, 112, 113, 1437, 682, 662, 528, 1478, - 18, -52, 411, 91, 663, 15, -52, 413, 529, -415, - 21, 1396, 1012, 676, 807, 1495, 498, -52, 1041, -415, - -415, 90, 256, 92, -415, 426, 427, 92, 693, 704, - 735, -6, 1153, 1154, 693, 1060, 1466, -415, -415, 428, - 253, 690, 708, 812, 748, 690, 89, 420, 423, 429, - 559, 730, 557, 775, 1447, 147, 753, 32, 1216, 691, - 480, 713, 430, 15, 1218, 1219, 90, 788, 1216, 1221, - 1380, 691, 1219, 8, 9, 798, 420, 423, 127, 128, - 155, 693, -183, 690, 1258, 300, 394, 395, 10, 690, - 591, 592, 382, 383, 384, 789, 59, 137, -183, 790, - -183, 488, 714, 791, 1478, 691, 799, 691, 1390, 1391, - 693, 588, 589, 590, 591, 592, 816, 363, 818, 769, - 519, 619, 693, 21, 1478, 130, 131, 155, 26, 719, - 130, 131, 819, 256, 821, 812, 690, 385, 27, 319, - 7, 8, 9, 10, 620, 386, 387, 72, 349, 252, - 421, 705, 876, 1574, 621, 878, 693, 892, 693, 1256, - 158, 480, 1497, 894, 622, 690, 896, 623, 624, 694, - 32, 488, 1498, 480, 1502, 1552, 921, 690, 21, 1424, - 920, 777, 931, 1478, 1422, 251, 1427, 930, 729, 982, - 934, 721, 691, 27, 28, 936, 421, 424, 214, 215, - 216, 101, 58, 20, 944, 14, 945, 158, 958, 115, - 965, 690, 522, 690, 1313, -298, 1040, 252, 964, 453, - -828, 735, 18, 807, 1305, 32, 989, 20, 990, 991, - 996, 1077, 550, 551, 1005, 349, 23, 1304, 776, 1009, - 1010, 1272, 1273, 693, 1013, 1059, 1078, 116, 117, 118, - 772, 698, 233, 8, 9, 1082, 1079, 559, -140, 557, - 559, 1080, 557, 1081, 1083, 72, 809, 1084, 1085, 1086, - 1272, 1273, 693, 1087, 1617, 1089, 421, 817, 1090, 557, - 702, 1209, 1210, 703, 95, 414, 415, 155, 155, 155, - 559, 1093, 557, 1092, 1094, 706, 836, 363, 690, 1312, - 119, 120, 1421, 1095, 1421, 130, 131, 95, 96, 97, - 1223, 388, 1096, 1111, 1109, 1112, 155, 155, 155, 1113, - 58, 1114, 1120, 1121, 859, 1140, 1130, 690, 1122, 521, - 875, 411, 1128, 413, 1131, 416, 221, 98, 113, 1313, - 1133, 127, 1360, 1143, 1147, 1146, 519, 209, 1168, 1313, - 1191, 907, 562, 688, 1197, 1200, 1313, 1202, 527, 1305, - 98, 99, 1304, 1225, 1217, 812, 1305, 158, 158, 158, - 1222, 1229, 1304, 1234, 1449, 1450, 1235, 140, 140, 1304, - 156, 1236, 1540, 1245, 1237, 363, 95, 110, 111, 1253, - 72, 420, 423, 130, 131, 1246, 158, 158, 158, 1257, - 72, 1242, 1244, 1249, 212, 1259, 220, 72, 1260, 1261, - 1264, 1176, 237, 460, 1265, 1268, 1571, 521, -663, 688, - 1271, 95, 110, 111, 1312, 499, 501, 300, 394, 395, - 10, 95, 96, 97, 1312, 225, 226, 227, 513, 112, - 113, 1312, 1276, 490, 1325, 58, 95, 110, 111, 1341, - 664, 665, 666, 1345, 1367, 58, 1368, 1374, 1379, 18, - 1384, 1378, 58, 1385, 228, 21, 1386, 1348, 1349, 1387, - 1358, 1359, 251, 1361, 112, 113, 114, 1394, 1403, 1404, - 27, 319, 26, 1405, 98, 99, 229, 1417, 140, 1419, - 1432, 1486, 1435, 140, 1438, 1439, 156, 156, 156, 112, - 113, 1462, 1463, 471, 473, 477, 1464, 1465, 549, 1470, - 1522, 1488, 32, 1481, 1555, 1313, 1313, 1522, 1482, 1489, - 1313, 375, 1526, 212, 1517, 1305, 1496, 907, 1518, 450, - 1305, 230, 231, 232, 1537, 1536, 349, 1546, 1304, 1304, - 140, 140, 156, 1304, 1548, 221, 1554, 550, 551, 1563, - 657, 1585, 1564, 691, 1572, 1589, 220, 1573, 155, 667, - 1313, 297, 1596, 1597, 493, 220, 72, 72, 297, 1313, - 1305, 72, 657, 1575, 688, 1600, 1603, 1605, 1606, 1305, - 1610, 688, 1619, 1304, 1614, 746, 747, 116, 971, 972, - 1621, 1618, 1304, 1107, 1626, 1627, 1629, 1522, 1443, 1444, - 1312, 1312, 1630, 1, 693, 1312, 140, 702, 703, 442, - 706, 72, 5, 160, 933, 1493, 295, 1150, 711, 1313, - 72, 58, 58, 295, 421, 817, 58, 557, 441, 1305, - 1570, 155, 155, 155, 95, 96, 97, 439, 158, 1051, - 119, 120, 1304, 1277, 359, 1312, 500, 409, 297, 1477, - 1625, 1377, 533, 1142, 1312, 988, 1141, 1313, 1440, 690, - 505, 300, 8, 9, 10, 1339, 58, 1305, 1053, 153, - 72, 1061, 923, 1362, 1139, 58, 156, 483, 616, 363, - 1304, 339, 863, 339, 390, 339, 1430, 98, 99, 762, - 688, 1322, 1592, 1604, 1567, 1611, 116, 971, 972, 21, - 1509, 1510, 1511, 295, 1312, 1436, 251, 1609, 72, 1190, - 0, 158, 158, 158, 27, 319, 1188, 610, 0, 300, - 394, 395, 10, 1015, 611, 58, 0, 0, 0, 0, - 339, 0, 339, 0, 95, 110, 111, 0, 688, 382, - 383, 384, 1312, 0, 688, 0, 32, 26, 0, 119, - 120, 0, 212, 220, 0, 829, 0, 21, 0, 1542, - 1543, 0, 0, 58, 612, 0, 140, 0, 0, 140, - 26, 0, 27, 319, 0, 156, 156, 156, 0, 0, - 744, 140, 745, 0, 471, 473, 477, 112, 1490, 0, - 26, 0, 386, 387, 0, 756, 0, -580, 0, 877, - -580, 0, 0, 0, 613, 95, 110, 111, 147, 0, - 586, 587, 588, 589, 590, 591, 592, 140, 0, 140, - 0, 156, 156, 156, 0, 0, 450, 1593, 0, 0, - 0, 0, 140, 493, 220, 896, 0, 450, 0, 0, - 0, 493, 0, 0, 0, 0, 0, -580, 0, -580, - -580, 688, -580, 0, 0, 688, 450, 0, 112, 1492, - 0, 0, 0, -580, 0, -580, 0, 258, 940, 0, - 0, 0, 0, 0, 0, 0, 0, 421, 424, 957, - 0, -580, -580, 156, 0, 0, 156, 300, 8, 9, - 10, 258, 0, 688, 0, 0, -580, 0, 0, 688, - 0, 156, 156, 156, 0, 0, 421, 1324, 0, 557, - 829, 0, 0, 548, 0, 0, 156, 0, 0, 0, - 258, 0, 0, 1334, 0, 21, 0, 0, 0, 0, - 0, 258, 251, 0, 0, 638, 8, 9, 10, 0, - 27, 319, 0, 0, 0, 0, 688, 0, 0, 0, - 0, 339, 0, 0, 0, 0, 0, 1369, 1370, 1371, - 1372, 0, 0, 0, 252, 0, 0, 214, 215, 216, - 308, 639, 32, 21, 14, 688, 0, 908, 7, 127, - 128, 10, 0, 0, 13, 0, 26, 688, 130, 131, - 258, 18, 0, 0, 0, 0, 20, 220, 127, 128, - 0, 0, 0, 13, 0, 23, 18, 0, 0, 0, - 727, 0, 0, 0, 411, 413, 21, 733, 0, 726, - 1407, 688, 519, 688, 0, 258, 726, 0, 0, 26, - 0, 27, 28, 0, 0, 0, 212, 0, 220, 237, - 0, 619, 0, 0, 0, 30, 0, 0, 26, 258, - 130, 131, 0, 724, 728, 31, 744, 745, 0, 756, - 0, 728, 0, 32, 620, 0, 0, 0, 33, 0, - 0, 491, 215, 216, 621, 0, 0, 0, 14, 0, - 0, 0, 220, 804, 622, 0, 1046, 623, 624, 0, - 0, 339, 726, 140, 140, 18, 140, 0, 1467, 0, - 20, 0, 0, 0, 493, 0, 0, 450, 688, 23, - 0, 0, 0, 0, 0, 667, 0, 0, 0, 0, - 0, 0, 0, 0, 212, 0, 339, 728, 940, 0, - 450, 1487, 0, 702, 703, 0, 706, 688, 0, 0, - 0, 258, 0, 857, 0, 0, 0, 1188, 0, 858, - 0, 0, 726, 156, 0, 0, 0, 0, 726, 339, - 0, 724, 0, 0, 833, 834, 0, 838, 839, 840, - 841, 842, 843, 844, 845, 846, 847, 848, 849, 850, - 851, 852, 853, 854, 855, 856, 912, 728, 726, 300, - 8, 9, 10, 728, 0, 726, 0, 0, 1520, 258, - 0, 0, 0, 0, 836, 1520, 0, 0, 0, 0, - 1011, 584, 585, 586, 587, 588, 589, 590, 591, 592, - 0, 421, 1324, 728, 557, 0, 0, 21, 0, 0, - 728, 0, 0, 0, 251, 0, 0, 0, 0, 0, - 0, 1062, 27, 319, 0, 0, 0, 1067, 0, 156, - 156, 908, 925, 927, 0, 0, 471, 473, 477, 127, - 128, 0, 0, 215, 216, 0, 521, 0, 339, 14, - 0, 0, 0, 0, 32, 0, 0, 1240, 0, 0, - 300, 394, 395, 10, 0, 1520, 0, 0, 237, 258, - 0, 20, 0, 140, 140, 908, 0, 0, 0, 0, - 23, 1595, 619, 0, 0, 477, 0, 0, 0, 26, - 0, 130, 131, 0, 0, 0, 724, 258, 21, 0, - 0, 0, 0, 1608, 0, 620, 0, 0, 0, 0, - 836, 26, 0, 27, 319, 621, 0, 1046, 0, 116, - 971, 972, 908, 1014, 0, 622, 0, 0, 630, 624, - 1123, 0, 1124, 0, 0, 0, 0, 0, 0, 0, - 0, 1025, 0, 1282, 726, 32, 1015, 0, 0, 1240, - 628, 632, 635, 1016, 0, 0, 450, 450, 0, 0, - 0, 339, 339, 0, 339, 0, 0, 0, 0, 0, - 26, 0, 119, 120, 0, 0, 0, 0, 0, 728, - 0, 0, 0, 0, 258, 450, 0, 0, 0, 1097, - 1098, 0, 0, 0, 0, 1103, 0, 0, 726, 726, - 258, 1088, 0, 0, 726, 0, 0, 0, 0, 1115, - 0, 1116, 0, 1117, 0, 0, 0, 0, 726, 0, - 726, 0, 726, 0, 300, 127, 128, 10, 0, 0, - 0, 0, 0, 728, 728, 0, 0, 0, 724, 728, - 0, 0, 0, 744, 745, 471, 473, 477, 0, 688, - 0, 756, 0, 728, 0, 728, 0, 728, 0, 1145, - 0, 0, 21, 0, 0, 1409, 1410, 0, 726, 251, - 1037, 1038, 9, 10, 471, 473, 477, 27, 319, 0, - 140, 140, 156, 156, 908, 0, 0, 0, 140, 0, - 0, 0, 0, 1138, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 728, 1230, 1166, 1232, 1356, 21, 32, - 0, 156, 156, 908, 726, 0, 0, 0, 339, 0, - 0, 26, 0, 27, 28, 0, 0, 1208, 0, 1039, - 0, 1162, 0, 726, 0, 0, 0, 193, 0, 0, - 0, 0, 450, 450, 0, 450, 450, 194, 450, 728, - 0, 0, 0, 0, 0, 32, 0, 1473, 0, 0, - 195, 1263, 744, 745, 0, 756, 8, 9, 728, 0, - 12, 13, 0, 0, 0, 0, 14, 80, 0, 1491, - 1494, 0, 7, 127, 128, 10, 0, 104, 246, 0, - 16, 0, 17, 0, 0, 0, 0, 133, 20, 140, - 140, 0, 140, 144, 144, 0, 144, 23, 80, 0, - 18, 0, 1215, 0, 0, 80, 26, 0, 130, 131, - 21, 0, 886, 888, 0, 0, 0, 0, 203, 0, - 80, 0, 0, 26, 0, 27, 28, 0, 238, 212, - 220, 1340, 0, 0, 0, 104, 1344, 0, 0, 30, - 0, 0, 0, 0, 0, 862, 262, 104, 0, 31, - 1538, 0, 724, 724, 0, 0, 1243, 32, 0, 0, - 0, 0, 33, 450, 450, 0, 258, 0, 258, 104, - 0, 0, 0, 0, 0, 0, 339, 625, 625, 625, - 951, 0, 628, 632, 0, 635, 0, 1381, 0, 1278, - 0, 1279, 0, 1280, 0, 0, 0, 133, 726, 80, - 726, 0, 726, 144, 144, 0, 477, 0, 412, 144, - 258, 0, 144, 144, 144, 0, 0, 0, 0, 0, - 8, 9, 0, 0, 12, 246, 0, 632, 80, 0, - 14, 0, 80, 728, 0, 728, 0, 728, 203, 80, - 214, 215, 216, 156, 16, 724, 17, 14, 0, 0, - 0, 0, 20, 0, 724, 724, 203, 203, 203, 724, - 0, 23, 0, 619, 18, 450, 450, 450, 0, 20, - 26, 0, 130, 131, 0, 0, 1346, 1347, 23, 471, - 473, 477, 0, 0, 0, 203, 620, 0, 1383, 0, - 1458, 1459, 0, 918, 0, 0, 621, 726, 0, 0, - 0, 724, 502, 0, 632, 258, 622, 1469, 0, 623, - 624, 104, 0, 0, 0, 0, 156, 156, 156, 0, - 0, 0, 144, 0, 450, 450, 0, 0, 0, 95, - 110, 111, 728, 225, 226, 227, 579, 580, 581, 582, - 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, - 7, 127, 128, 10, 0, 0, 1402, 18, 0, 0, - 104, 530, 228, 0, 0, 0, 1505, 1506, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1118, 18, 1119, - 0, 0, 112, 113, 0, 1515, 1516, 0, 21, 258, - 1125, 0, 450, 0, 886, 888, 724, 0, 0, 0, - 0, 26, 0, 27, 28, 104, 0, 0, 0, 617, - 0, 530, 530, 633, 0, 1448, 258, 149, 0, 8, - 9, 0, 80, 12, 13, 0, 0, 150, 0, 14, - 0, 0, 0, 0, 0, 32, 0, 724, 886, 888, - 151, 0, 0, 16, 0, 17, 0, 0, 0, 625, - 625, 20, 625, 0, 726, 0, 133, 0, 0, 906, - 23, 0, 0, 0, 0, 104, 0, 203, 104, 26, - 0, 130, 131, 602, 8, 9, 0, 258, 12, 246, - 0, 0, 144, 0, 14, 144, 0, 0, 0, 728, - 0, 0, 0, 0, 0, 0, 0, 144, 16, 0, - 17, 0, 0, 0, 0, 80, 20, 0, 603, 1507, - 1508, 0, 0, 0, 0, 23, 0, 625, 1513, 625, - 625, 0, 625, 0, 26, 0, 130, 131, 0, 0, - 0, 0, 0, 203, 0, 203, 0, 203, 203, 203, - 0, 0, 0, 203, 0, 0, 1533, 0, 203, 0, - 0, 203, 300, 8, 9, 10, 0, 12, 301, 302, - 303, 0, 304, 14, 625, 0, 0, 0, 0, 80, - 0, 0, 0, 0, 0, 0, 0, 16, 305, 17, - 18, 19, 0, 306, 307, 20, 0, 308, 309, 310, - 21, 311, 312, 0, 23, 0, 619, 0, 313, 314, - 315, 316, 317, 26, 0, 27, 319, 104, 104, 104, - 104, 7, 8, 9, 10, 0, 321, 0, 0, 902, - 0, 0, 0, 0, 0, 0, 0, 323, 324, 903, - 0, 0, 0, 0, 0, 326, 327, 328, 0, 622, - 0, 625, 904, 624, 0, 1118, 1119, 886, 888, 21, - 0, 0, 0, 1125, 0, 619, 0, 0, 0, 330, - 0, 0, 26, 0, 27, 28, 0, 104, 0, 530, - 0, 0, 0, 0, 0, 724, 886, 888, 946, 0, - 0, 617, 0, 530, 530, 0, 633, 0, 947, 0, - 0, 0, 0, 909, 0, 0, 32, 911, 622, 0, - 0, 948, 624, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 203, 0, 625, 0, 625, 0, 8, 9, - 0, 167, 12, 13, 0, 0, 732, 625, 14, 0, - 0, 906, 906, 906, 0, 0, 133, 0, 0, 0, - 0, 0, 16, 133, 17, 18, 0, 0, 0, 0, - 20, 203, 953, 203, 203, 238, 633, 0, 0, 23, - 0, 619, 0, 0, 1118, 1119, 0, 1125, 26, 0, - 130, 131, 0, 0, 0, 625, 625, 625, 0, 0, - 0, 0, 0, 0, 620, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 621, 0, 0, 0, 203, 0, - 0, 0, 953, 0, 622, 0, 0, 623, 624, 203, - 203, 0, 203, 0, 0, 7, 8, 9, 10, 214, - 215, 216, 0, 0, 906, 0, 14, 0, 0, 133, - 0, 0, 80, 0, 80, 0, 0, 0, 0, 1048, - 80, 80, 0, 18, 127, 128, 0, 80, 20, 246, - 104, 0, 0, 21, 0, 0, 104, 23, 0, 619, - 0, 0, 0, 530, 530, 530, 26, 0, 27, 28, - 0, 0, 0, 0, 0, 530, 0, 0, 0, 0, - 0, 0, 946, 0, 0, 0, 0, 619, 83, 0, - 0, 0, 947, 0, 26, 0, 130, 131, 106, 0, - 32, 0, 622, 0, 0, 948, 624, 126, 134, 0, - 620, 0, 0, 0, 145, 145, 0, 145, 0, 83, - 621, 0, 0, 0, 0, 0, 83, 0, 0, 0, - 622, 0, 0, 623, 624, 0, 0, 0, 0, 145, - 0, 83, 0, 0, 0, 0, 0, 0, 530, 239, - 530, 0, 0, 0, 0, 0, 248, 104, 0, 0, - 0, 530, 0, 104, 0, 909, 909, 909, 248, 0, - 0, 0, 0, 1132, 0, 0, 0, 0, 7, 127, - 128, 10, 625, 625, 625, 625, 625, 0, 0, 0, - 625, 580, 581, 582, 583, 584, 585, 586, 587, 588, - 589, 590, 591, 592, 0, 104, 18, 104, 0, 203, - 203, 1159, 0, 906, 906, 906, 21, 0, 0, 0, - 83, 0, 0, 0, 145, 145, 0, 0, 0, 26, - 145, 27, 28, 145, 145, 145, 0, 0, 7, 8, - 9, 10, 0, 0, 13, 30, 0, 0, 0, 83, - 0, 0, 0, 83, 0, 31, 0, 0, 1159, 145, - 83, 0, 0, 32, 0, 0, 18, 0, 33, 0, - 0, 104, 0, 0, 0, 0, 21, 145, 145, 145, - 0, 0, 619, 0, 0, 0, 0, 104, 0, 26, - 1048, 27, 28, 0, 0, 0, 0, 0, 0, 104, - 0, 625, 625, 0, 625, 946, 145, 0, 0, 0, - 0, 0, 1220, 0, 0, 947, 0, 0, 0, 0, - 0, 0, 51, 32, 80, 622, 0, 0, 948, 624, - 0, 0, 0, 104, 0, 104, 0, 0, 7, 127, - 128, 10, 0, 145, 13, 0, 0, 0, 51, 51, - 0, 152, 0, 51, 8, 9, 0, 0, 12, 13, - 51, 0, 0, 104, 14, 0, 18, 0, 530, 530, - 0, 530, 0, 51, 0, 51, 21, 0, 16, 0, - 17, 248, 145, 0, 0, 0, 20, 0, 0, 26, - 0, 27, 28, 0, 0, 23, 0, 0, 254, 0, - 0, 0, 0, 0, 26, 149, 130, 131, 0, 0, - 0, 0, 0, 0, 0, 150, 203, 203, 203, 203, - 1159, 0, 0, 32, 203, 0, 248, 0, 151, 0, - 618, 0, 145, 145, 634, 0, 0, 0, 0, 643, - 0, 0, 0, 83, 0, 0, 0, 1159, 1159, 1159, - 0, 396, 396, 0, 51, 0, 0, 0, 51, 51, - 0, 0, 254, 0, 51, 0, 0, 152, 152, 152, - 0, 0, 0, 0, 431, 0, 0, 680, 0, 0, - 203, 0, 0, 51, 0, 144, 248, 51, 145, 248, - 0, 0, 0, 51, 51, 0, 0, 0, 0, 0, - 0, 0, 0, 145, 0, 0, 145, 0, 0, 0, - 0, 51, 51, 152, 0, 0, 0, 0, 145, 0, - 0, 254, 0, 0, 0, 0, 83, 0, 0, 0, - 0, 0, 0, 0, 0, 203, 203, 0, 203, 0, - 51, 581, 582, 583, 584, 585, 586, 587, 588, 589, - 590, 591, 592, 0, 145, 0, 145, 0, 145, 145, - 145, 0, 0, 0, 145, 0, 0, 0, 0, 145, - 0, 0, 145, 0, 203, 953, 203, 51, 0, 764, - 0, 7, 8, 765, 10, 167, 12, 13, 0, 0, - 83, 0, 14, 104, 0, 0, 0, 0, 0, 0, - 0, 1037, 1038, 9, 10, 0, 16, 0, 17, 18, - 19, 0, 0, 0, 20, -526, 0, 0, 0, 21, - 0, 0, 0, 23, 766, 0, 168, 0, 248, 248, - 248, 248, 26, 0, 27, 28, 0, 0, 767, 21, - 768, 7, 8, 9, 10, 0, 0, 558, 30, 0, - 0, 0, 26, 0, 27, 28, 0, 0, 31, 0, - 1039, 0, 0, 0, 396, 0, 32, 0, 193, 0, - 0, 33, 254, 0, 0, 0, 0, 51, 194, 21, - 0, 0, 0, 0, 0, 0, 32, -526, 248, 1159, - 145, 195, 26, 0, 27, 28, 0, 0, 192, 0, - 0, 0, 0, 0, 145, 145, 0, 634, 193, 0, - 0, 396, 0, 0, 910, 0, 0, 0, 194, 0, - 0, 0, 51, 0, 0, 0, 32, 643, 0, 0, - 0, 195, 0, 145, 0, 0, 0, 51, 0, 0, - 51, 0, 0, 0, 0, 0, 431, 431, 431, 0, - 0, 0, 51, 0, 0, 0, 0, 680, 76, 0, - 51, 0, 1159, 1159, 1159, 126, 0, 0, 0, 0, - 0, 0, 145, 634, 145, 145, 239, 634, 0, 0, - 0, 104, 0, 0, 0, 0, 203, 0, 51, 76, - 51, 0, 152, 152, 152, 0, 76, 0, 51, 0, - 983, 0, 0, 51, 0, 0, 51, 0, 0, 201, - 0, 213, 0, 0, 0, 0, 0, 0, 0, 145, - 0, 0, 0, 634, 51, 0, 0, 0, 0, 0, - 145, 145, 0, 145, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 983, 0, 0, - 134, 0, 0, 83, 558, 83, 0, 558, 0, 0, - 1049, 83, 83, 0, 7, 8, 9, 10, 83, 0, - 246, 248, 558, 558, 558, 0, 0, 248, 0, 0, - 0, 0, 0, 0, 145, 145, 145, 558, 0, 0, - 407, 0, 18, 0, 410, 0, 145, 0, 0, 0, - 0, 0, 21, 0, 0, 0, 0, 0, 619, 0, - 0, 0, 0, 0, 0, 26, 0, 27, 28, 76, - 0, 0, 0, 76, 0, 0, 0, 127, 128, 201, - 213, 946, 518, 0, 0, 254, 0, 0, 0, 0, - 0, 947, 0, 0, 0, 0, 0, 0, 558, 32, - 0, 622, 0, 0, 948, 624, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 51, 0, 145, - 619, 145, 0, 0, 0, 0, 201, 26, 248, 130, - 131, 0, 145, 0, 248, 0, 910, 910, 910, 0, - 0, 396, 0, 620, 643, 127, 128, 0, 396, 215, - 216, 0, 0, 621, 0, 14, 51, 51, 51, 51, - 0, 0, 0, 622, 0, 0, 623, 624, 0, 0, - 259, 0, 0, 0, 0, 0, 248, 20, 248, 0, - 145, 145, 634, 0, 0, 0, 23, 0, 619, 0, - 0, 0, 0, 0, 0, 26, 0, 130, 131, 0, - 0, 0, 0, 51, 0, 0, 0, 51, 0, 0, - 0, 620, 0, 0, 51, 51, 0, 51, 0, 0, - 0, 621, 7, 8, 9, 10, 214, 215, 216, 910, - 0, 622, 0, 14, 623, 624, 0, 51, 0, 51, - 0, 0, 248, 0, 51, 51, 51, 434, 0, 0, - 18, 0, 51, 0, 0, 20, 0, 0, 248, 0, - 21, 1049, 0, 651, 23, 0, 619, 0, 0, 0, - 248, 0, 0, 26, 558, 27, 28, 0, 0, 469, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 946, - 0, 0, 485, 0, 0, 83, 0, 0, 0, 947, - 0, 0, 0, 0, 248, 0, 248, 32, 201, 622, - 0, 0, 995, 624, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 7, 8, 9, - 10, 167, 12, 13, 248, 0, 1000, 0, 14, 145, - 145, 0, 145, 0, 0, 0, 76, 0, 0, 0, - 0, 0, 16, 0, 17, 18, 0, 0, 0, 0, - 20, 0, 0, 0, 0, 21, 0, 0, 0, 23, - 558, 558, 558, 0, 0, 0, 431, 254, 26, 0, - 27, 28, 0, 0, 201, 0, 0, 145, 145, 145, - 145, 634, 201, 0, 30, 145, 78, 0, 0, 0, - 0, 0, 983, 0, 31, 0, 0, 0, 0, 0, - 781, 0, 32, 0, 51, 51, 152, 33, 910, 910, - 910, 254, 78, 78, 0, 78, 0, 78, 0, 0, - 0, 0, 0, 0, 78, 0, 0, 0, 0, 983, - 8, 9, 0, 167, 12, 13, 0, 78, 0, 78, - 14, 145, 0, 0, 0, 0, 145, 0, 0, 7, - 8, 9, 10, 1187, 16, 13, 17, 18, 0, 0, - 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, - 0, 681, 0, 0, 168, 0, 0, 18, 0, 0, - 26, 0, 130, 131, 0, 51, 0, 21, 0, 0, - 0, 0, 0, 0, 0, 0, 145, 145, 0, 145, - 26, 0, 27, 28, 0, 0, 254, 0, 0, 0, - 0, 0, 7, 8, 9, 10, 193, 0, 78, 51, - 0, 0, 78, 78, 1413, 0, 194, 0, 78, 0, - 0, 78, 78, 78, 32, 145, 634, 145, 0, 195, - 18, 0, 0, 201, 0, 0, 0, 78, 0, 0, - 21, 78, 0, 0, 248, 0, 749, 78, 78, 0, - 983, 755, 0, 26, 0, 27, 28, 0, 0, 0, - 7, 8, 9, 10, 0, 78, 78, 78, 0, 474, - 0, 0, 201, 952, 201, 201, 0, 0, 786, 475, - 254, 0, 0, 0, 792, 0, 159, 32, 0, 0, - 0, 0, 476, 0, 78, 0, 800, 801, 21, 802, - 0, 51, 51, 152, 152, 152, 0, 254, 204, 51, - 0, 26, 0, 27, 28, 0, 0, 1420, 0, 201, - 0, 0, 0, 1001, 0, 8, 9, 193, 205, 12, - 206, 78, 1187, 1187, 1187, 14, 0, 194, 0, 0, - 910, 0, 0, 0, 0, 32, 0, 0, 0, 16, - 195, 17, 18, 781, 0, 781, 0, 20, 0, 0, - 1047, 1054, 781, 0, 0, 51, 23, 0, 781, 0, - 51, 0, 0, 0, 0, 26, 0, 130, 131, 0, - 0, 0, 0, 0, 0, 0, 0, 7, 8, 9, - 10, 0, 0, 0, 897, 898, 0, 0, 0, 897, - 0, 0, 159, 159, 159, 0, 0, 0, 0, 0, - 0, 0, 0, 910, 910, 910, 0, 0, 0, 0, - 51, 51, 0, 51, 0, 21, 0, 642, 204, 0, - 0, 78, 248, 0, 0, 0, 0, 145, 26, 0, - 27, 28, 0, 0, 0, 0, 204, 204, 478, 0, - 0, 0, 0, 0, 193, 0, 0, 0, 0, 51, - 51, 51, 0, 0, 194, 0, 0, 0, 0, 0, - 0, 0, 32, 0, 0, 204, 78, 195, 0, 0, - 0, 0, 0, 0, 202, 0, 1350, 1351, 9, 10, - 0, 78, 0, 0, 78, 0, 0, 0, 0, 0, - 369, 371, 0, 0, 0, 0, 78, 0, 0, 257, - 0, 0, 261, 0, 78, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 21, 0, 0, 0, 7, 8, - 9, 10, 0, 257, 13, 365, 0, 26, 0, 27, - 28, 0, 78, 0, 78, 1352, 78, 78, 78, 0, - 0, 531, 78, 193, 0, 0, 18, 78, 0, 0, - 78, 0, 1069, 194, 1071, 0, 21, 0, 0, 0, - 0, 32, 619, 0, 1187, 0, 195, 0, 78, 26, - 0, 27, 28, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1155, 0, 0, 0, 0, - 0, 627, 627, 627, 202, 1156, 0, 0, 0, 0, - 0, 1047, 0, 32, 0, 622, 0, 0, 1157, 624, - 0, 0, 202, 202, 202, 0, 0, 0, 0, 0, - 0, 0, 484, 0, 0, 0, 1105, 1106, 0, 1108, - 0, 0, 0, 0, 0, 781, 0, 1187, 1187, 1187, - 0, 202, 0, 0, 0, 0, 0, 204, 0, 7, - 8, 9, 10, 167, 12, 13, 0, 1126, 0, 0, - 14, 51, 0, 0, 0, 0, 0, 261, 0, 0, - 0, 0, 0, 0, 16, 0, 17, 18, 19, 0, - 642, 257, 20, 0, 0, 0, 0, 21, 0, 0, - 0, 23, 0, 0, 168, 0, 0, 0, 0, 0, - 26, 0, 27, 28, 0, 0, 0, 0, 1161, 0, - 0, 78, 561, 204, 0, 204, 30, 478, 478, 478, - 0, 0, 0, 204, 0, 0, 31, 0, 204, 0, - 0, 204, 0, 0, 32, 0, 0, 8, 9, 33, - 167, 12, 13, 0, 34, 732, 0, 14, 0, 0, - 78, 78, 78, 78, 0, 0, 0, 0, 0, 0, - 0, 16, 0, 17, 18, 1350, 127, 128, 10, 20, - 0, 0, 0, 257, 261, 0, 0, 0, 23, 0, - 0, 1206, 0, 0, 0, 687, 0, 26, 0, 130, - 131, 1357, 0, 1211, 0, 0, 1357, 78, 0, 0, - 0, 78, 0, 21, 0, 0, 0, 0, 78, 78, - 0, 78, 0, 0, 0, 0, 26, 0, 27, 28, - 0, 0, 0, 202, 1352, 0, 0, 0, 0, 0, - 0, 78, 30, 78, 0, 0, 0, 0, 78, 78, - 78, 0, 31, 0, 0, 0, 78, 0, 0, 871, - 32, 734, 0, 0, 0, 33, 0, 0, 0, 0, - 0, 0, 0, 627, 627, 0, 627, 0, 0, 0, - 0, 0, 0, 627, 0, 0, 0, 0, 0, 1262, - 0, 0, 0, 0, 0, 201, 1425, 201, 0, 202, - 0, 202, 204, 202, 202, 202, 0, 0, 0, 202, - 0, 0, 0, 0, 202, 0, 0, 202, 0, 7, - 8, 9, 10, 0, 0, 518, 0, 0, 1275, 805, - 0, 0, 808, 0, 0, 0, 810, 811, 813, 814, - 815, 950, 0, 950, 950, 0, 627, 18, 0, 561, - 0, 0, 0, 0, 0, 0, 0, 21, 0, 0, - 0, 0, 832, 619, 0, 0, 0, 0, 0, 0, - 26, 0, 27, 28, 0, 0, 0, 0, 0, 0, - 0, 0, 642, 0, 0, 0, 946, 0, 950, 0, - 0, 0, 0, 1365, 0, 0, 947, 1366, 0, 204, - 204, 0, 204, 0, 32, 0, 622, 0, 0, 948, - 624, 0, 0, 0, 0, 0, 889, 0, 78, 78, - 78, 0, 0, 889, 0, 0, 0, 0, 0, 204, - 0, 0, 1382, 0, 0, 0, 0, 0, 0, 764, - 0, 7, 8, 765, 10, 167, 12, 13, 0, 0, - 0, 0, 14, 531, 531, 531, 0, 0, 0, 0, - 0, 0, 257, 261, 0, 627, 16, 1189, 17, 18, - 19, 0, 0, 0, 20, -527, 0, 0, 202, 21, - 0, 0, 0, 23, 766, 0, 168, 0, 0, 0, - 0, 0, 26, 0, 27, 28, 0, 0, 767, 78, - 768, 0, 0, 0, 0, 0, 0, 201, 30, 1441, - 0, 0, 0, 1442, 0, 0, 0, 202, 31, 202, - 202, 0, 0, 0, 0, 0, 32, 0, 0, 0, - 0, 33, 687, 78, 0, 1460, 1461, 0, 627, 0, - 627, 0, 0, 0, 0, 0, 0, -527, 0, 0, - 0, 627, 0, 0, 0, 627, 627, 627, 0, 0, - 0, 0, 0, 0, 202, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 202, 202, 0, 202, 0, - 734, 0, 0, 0, 0, 0, 734, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 950, - 950, 1160, 0, 0, 0, 202, 0, 0, 0, 0, - 0, 7, 8, 9, 10, 167, 12, 13, 0, 0, - 732, 0, 14, 0, 0, 78, 78, 78, 78, 78, - 0, 0, 0, 78, 0, 0, 16, 0, 17, 18, - 0, 0, 0, 0, 20, 0, 0, 0, 1160, 21, - 0, 0, 0, 23, 1099, 619, 1189, 1189, 1189, 1483, - 0, 0, 26, 0, 27, 28, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1155, 0, - 204, 0, 0, 0, 0, 0, 0, 832, 1156, 78, - 0, 0, 0, 734, 78, 0, 32, 889, 622, 0, - 0, 1157, 624, 0, 0, 0, 0, 0, 0, 1484, - 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, - 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, - 591, 592, 0, 0, 0, 687, 0, 1151, 257, 261, - 257, 889, 0, 0, 78, 78, 0, 78, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 871, 871, - 0, 871, 0, 0, 0, 7, 127, 128, 10, 0, - 0, 518, 0, 0, 0, 202, 202, 1158, 0, 0, - 102, 0, 257, 78, 78, 78, 0, 0, 889, 121, - 102, 0, 0, 18, 0, 0, 102, 102, 0, 102, - 0, 1193, 0, 21, 0, 0, 950, 950, 1160, 1160, - 1160, 0, 261, 0, 950, 0, 26, 734, 27, 28, - 0, 0, 0, 0, 1158, 0, 0, 0, 0, 734, - 0, 235, 30, 0, 0, 0, 0, 1160, 1160, 1160, - 0, 0, 31, 0, 0, 0, 0, 0, 0, 0, - 32, 0, 0, 0, 0, 33, 202, 0, 0, 0, - 0, 0, 0, 734, 0, 734, 0, 0, 0, 0, - 204, 0, 0, 0, 0, 0, 0, 484, 0, 0, - 7, 8, 9, 10, 214, 215, 216, 0, 0, 0, - 389, 14, 121, 1248, 0, 0, 0, 0, 1189, 102, - 102, 0, 0, 0, 0, 0, 102, 102, 18, 0, - 102, 102, 102, 20, 417, 102, 102, 102, 21, 0, - 0, 0, 23, 0, 619, 950, 950, 0, 950, 0, - 0, 26, 0, 27, 28, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 193, 0, 0, - 889, 0, 0, 0, 0, 0, 0, 194, 0, 0, - 0, 257, 0, 0, 204, 32, 204, 0, 0, 0, - 1426, 1189, 1189, 1189, 0, 0, 0, 0, 0, 889, - 0, 0, 202, 202, 202, 202, 1158, 0, 1274, 0, - 202, 0, 0, 1335, 0, 78, 0, 0, 0, 0, - 0, 0, 0, 0, 235, 102, 0, 0, 0, 0, - 0, 0, 0, 1158, 1158, 1158, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 102, 0, 0, 0, 0, - 764, 0, 7, 8, 765, 10, 167, 12, 13, 0, - 0, 0, 0, 14, 0, 0, 202, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 16, 0, 17, - 18, 19, 0, 0, 102, 20, -529, 0, 0, 0, - 21, 0, 0, 0, 23, 766, 0, 168, 0, 478, - 0, 0, 0, 26, 0, 27, 28, 0, 0, 767, - 0, 768, 0, 0, 0, 0, 0, 0, 0, 30, - 0, 202, 202, 0, 202, 0, 0, 0, 0, 31, - 0, 0, 102, 0, 102, 102, 0, 32, 0, 0, - 0, 0, 33, 1193, 0, 0, 0, 0, 0, 0, - 0, 8, 9, 0, 167, 12, 13, 0, -529, 1551, - 202, 14, 202, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 478, 478, 478, 16, 0, 17, 18, 102, - 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, - 0, 0, 23, 0, 0, 0, 204, 0, 102, 0, - 0, 26, 0, 130, 131, 102, 0, 0, 102, 0, + 443, 435, 487, 122, 445, 36, 420, 423, 711, 444, + 658, 712, 392, 256, 1019, 432, 224, 72, 532, 648, + 771, 253, 657, 76, 709, 738, 103, 42, 400, 1118, + 59, 784, 298, 786, 182, 857, 36, 59, 196, 991, + 525, 816, 486, 141, 146, 356, 1016, 357, 72, 554, + 557, 494, 209, 58, 76, 72, 398, 399, 42, 926, + 742, 76, 896, 949, 249, 42, 926, 247, 688, 391, + 174, 492, 495, 177, 201, 727, 213, 256, 35, 296, + 397, 57, 587, 349, 58, 349, 626, 349, 1478, 544, + 1428, 58, 408, 1056, 224, 260, 1530, 297, 1443, 170, + 171, 1534, 349, 349, 1027, 1446, 899, 190, 163, 35, + 224, 208, 57, 626, 626, 467, 169, 998, 364, 176, + 662, 663, 661, 900, 1600, 1535, 89, 308, 1193, 977, + 91, 406, 349, 295, 349, -1, 256, 1567, 1558, 580, + 1544, 581, 544, 26, 813, 978, 90, 855, 164, 72, + 92, 1028, 901, 1387, 1029, 407, -828, 1555, 196, 410, + 59, 468, 419, 422, 59, 735, 224, 155, -2, 780, + 1601, 209, 717, 718, 224, 1059, 452, 1589, 72, 928, + 558, 559, 72, 1568, 76, 58, 517, 1064, 76, 997, + 403, 224, 42, 440, 201, 213, 567, 174, 1581, 568, + 177, 490, 569, 539, 1194, 579, 470, 472, 190, 584, + 724, 1004, 1597, 405, 58, 1080, 814, 625, 58, -302, + 1612, 1085, 736, 1560, 15, 842, 170, 171, -415, 1199, + 208, 1558, 776, -356, -356, 1065, 88, 453, 453, 1027, + 59, 201, 57, 169, 789, 15, 176, 88, 535, -415, + 1532, 705, 1538, 190, 1478, -625, -415, -415, 72, 178, + 260, -415, 86, 93, 524, -302, -302, 1593, 820, 632, + 454, 454, 300, 394, 395, 10, 221, 790, -415, 1200, + -295, 791, -415, 155, 155, 155, 1028, 696, 732, 1029, + 623, 374, 247, 631, 58, 1225, 1226, 375, 1565, 514, + 759, -625, -625, 158, 1220, 1020, 1166, 116, 117, 118, + 21, 87, 1247, 664, 792, 658, -625, 705, 38, 511, + 774, 976, 519, 26, 349, 27, 319, -415, 1144, 155, + 691, 420, 423, 817, 1221, 856, 963, 296, 94, 1117, + 492, 495, 8, 9, 1598, 247, 12, 13, 492, 38, + 1292, 107, 14, 349, 667, 297, 108, 32, 926, 583, + 119, 120, 711, 1002, 1003, 1038, 16, 260, 17, 1353, + -583, 109, 72, 138, 20, 580, 39, 581, 668, 495, + 1404, 1404, 818, 23, 967, 964, 178, 714, 127, 128, + 1622, 295, 26, 139, 130, 131, 532, 708, 495, 1293, + 209, 1388, 926, 135, 224, 215, 216, 39, 58, 137, + -304, 14, 533, 665, 162, 710, -583, 189, 1354, 158, + 158, 158, 648, 201, 1151, 699, 221, 1154, 950, 1405, + 1509, 897, 1169, 20, 221, 221, 405, 59, 26, 1623, + 130, 131, 23, 161, 636, 567, 568, 224, 1215, 926, + 179, 707, 517, 778, 517, 72, -304, -304, 534, 153, + 517, 76, 517, 752, 221, 158, 1367, 183, 1180, 1181, + 729, -298, 610, 177, 1146, 1373, 1374, 653, 1375, 793, + 1254, 710, 1256, 610, 777, 831, 18, 763, 764, 705, + 841, 58, 244, 349, 366, 370, 705, 636, 1016, 201, + 1119, 799, 787, 788, 459, 838, 59, 201, 59, -365, + 40, 15, 819, 221, 209, 914, 59, 707, 611, 176, + 1474, 460, 187, 654, 72, 794, 72, 377, 916, 611, + 524, 832, 524, 55, 72, 1056, 188, 805, 812, 129, + 524, 40, -365, 841, -295, 349, -365, 90, 349, 26, + 461, 349, 1423, 1001, 299, 349, 847, 847, 847, 847, + 58, 915, 58, 138, 55, 514, 221, 514, 349, 623, + 58, 175, 798, 808, 917, 514, 421, 424, 349, -365, + 360, 349, 1032, 711, 696, 511, 712, 511, 519, 1192, + 519, 973, -583, 926, 378, 511, 362, 816, 519, 709, + 658, 372, 1093, 376, -366, 705, 15, 380, 155, 155, + 155, -120, 657, 15, 92, 636, 296, 381, -143, 401, + 972, 153, 926, 221, -295, 1289, 1290, 918, 492, 1033, + 137, 705, 1034, 1614, 297, 708, 934, -366, -583, 482, + 544, -366, 752, 705, -120, 425, 1368, 970, -120, 952, + 920, 922, 189, 710, 138, 95, 110, 111, 88, 178, + 710, 841, -144, 260, 1278, 404, 95, 414, 415, 433, + 295, 705, 1056, 919, -366, 147, 1273, 705, 122, 1615, + 240, -120, 935, 936, 241, 201, 587, 349, 984, 707, + 989, 990, 1513, 1514, 55, 1042, 707, 899, 175, -620, + -118, 209, 15, 221, 221, 247, 1262, 1264, 112, 113, + 303, 221, 661, 1017, 900, 1216, 574, 1218, 1186, 98, + 113, 1222, 215, 216, 201, 987, 201, 201, 14, 214, + 215, 216, 1420, -118, 1165, 990, 14, -118, -7, 256, + 164, 1043, 221, 901, 158, 158, 158, 253, 1188, 447, + 20, 708, 1190, 18, 1426, 576, 517, 1480, 20, 23, + 1576, 221, 1274, 1275, 1187, 1277, 137, 23, 799, 710, + -118, 201, 8, 537, 518, 1036, 448, 708, 1081, 1082, + 451, 1083, 715, 1127, 705, 411, 1068, 463, 705, 708, + 413, 842, 1070, 1071, 1189, 710, 1068, 1073, 1191, 1264, + 1071, 464, 432, 1481, 805, 707, 1577, 710, 1349, 1351, + 59, 567, 568, 1355, 127, 128, 363, 708, 349, 349, + 379, 349, 498, 708, 130, 131, 705, 503, 72, 1182, + 527, 707, 705, 540, 524, 710, 769, 91, 147, 798, + 137, 710, 542, 707, 775, 1249, 1250, 1251, 538, 1590, + 15, 541, 746, 781, -415, 421, 722, 92, 363, 561, + 91, 1385, 222, 223, 58, 543, 130, 131, 551, 514, + 562, 707, 560, 95, 110, 111, 528, 707, 300, 705, + 92, 10, -415, -415, 221, 1359, 1360, 1361, 666, 511, + 538, 349, 519, 829, 222, 446, 1121, 224, 563, 782, + 91, 421, 424, 536, 392, 564, 18, 583, 7, 8, + 250, 10, 95, 96, 97, 449, 21, 1090, 1091, 1092, + 92, 256, 480, 481, 847, 221, 112, 113, 114, 626, + 708, 426, 427, 675, 752, 672, 705, 676, 705, 830, + 574, 488, 489, 574, 678, 428, 21, 844, 710, 679, + 920, 922, 710, 251, 692, 429, 1449, 260, 480, 730, + 574, 27, 28, 32, 680, 98, 99, 693, 430, 221, + 90, 175, 708, 574, 847, 349, 92, 871, 708, 576, + 721, 1484, 576, -6, 707, 252, 1472, 747, 707, 765, + 710, 221, 725, 32, 1170, 1171, 710, 1501, 421, 852, + 699, 770, 1279, 8, 9, 894, 842, 15, 382, 383, + 384, 910, 576, 539, 823, 127, 128, 824, 517, 89, + 535, 488, 731, 705, 825, 752, 707, 1066, 826, 420, + 423, 833, 707, 300, 394, 395, 10, 834, 847, 90, + 518, 851, 785, 710, 853, 1392, 854, 363, 736, 89, + 518, 911, 705, 385, 856, 130, 131, -141, 420, 423, + 913, 386, 387, 719, 221, 26, 720, 130, 131, 90, + 927, 21, 59, 942, 929, 567, 568, 955, 723, 707, + 1484, 903, 708, -183, 708, 1281, 27, 319, 1240, 931, + 72, 904, 956, 1240, 1402, 1403, 524, 1484, 137, -183, + 710, -183, 710, 127, 128, 905, 8, 9, 965, 256, + 608, 609, 847, 91, 411, 969, 413, 155, 32, 480, + 1503, -142, 1573, 127, 128, 349, 58, 711, 966, 536, + 1551, 514, 971, 92, 488, 1504, 707, 20, 707, 95, + 96, 97, 979, 225, 226, 227, 980, 363, 480, 1508, + 363, 511, 1484, -298, 519, 130, 131, 993, 130, 131, + 738, 999, 453, 1436, 155, 1017, 1000, 18, 1434, 708, + 1439, 1024, 228, 26, 1025, 130, 131, 8, 9, 252, + 89, -579, 252, 1048, -579, 1295, 1296, 710, 1369, 903, + 26, 1336, 98, 99, 229, 842, 1026, 1328, 752, 904, + 90, 579, 1031, -827, 7, 8, 9, 10, 1040, 72, + 13, 1616, 349, 905, 1295, 1296, 710, 89, 91, 931, + 1044, 1045, 1075, 707, 1069, 1407, 1408, 1371, 1372, 130, + 131, -579, 18, -579, -579, 1074, -579, 90, 92, 230, + 231, 232, 21, 1094, 1099, 58, -52, -579, 636, -579, + 1095, -52, 707, 158, 1096, 26, 1097, 27, 28, 1098, + 1100, 498, -52, 1101, 1102, -579, -579, 942, 127, 128, + 1327, 981, -140, 1335, 1103, 1104, 140, 140, 1106, 156, + -579, 982, 603, 604, 605, 606, 607, 608, 609, 32, + 1107, 639, 1124, 1113, 983, 641, 1110, 1126, 1109, 1111, + 158, 1112, 1129, 212, 1130, 220, 155, 155, 155, 1128, + 1131, 237, 1164, 7, 127, 128, 10, 1433, 544, 1433, + 130, 131, 1336, 1137, 1139, 1138, 574, 1147, 1148, 1145, + 209, 1150, 1336, 1157, 1160, 155, 155, 155, 1328, 1336, + 72, 1163, 1543, 1185, 518, 1328, 1208, 1214, 847, 1217, + 72, 21, 1219, 201, 1437, 201, 1224, 72, 251, 95, + 110, 111, 420, 423, 421, 852, 27, 28, 460, 1228, + 705, 8, 9, 1248, 1252, 1570, 58, 127, 128, 567, + 568, 1257, 1258, 1259, -304, 1260, 58, 140, 1265, 1267, + 252, 1280, 140, 58, 1268, 156, 156, 156, 32, -304, + 1291, 1327, 1269, -304, 1335, 1272, 1276, 719, 720, 153, + 723, 1327, 112, 113, 1335, 363, 1282, 129, 1327, -304, + 1283, 1335, 212, 130, 131, 490, 1284, 26, 450, 130, + 131, -304, -304, 1287, -304, 1288, -304, 1294, 1299, 140, + 140, 156, 158, 158, 158, 1193, 1348, 538, -662, 1379, + 214, 215, 216, 1380, 1386, 220, 1205, 14, 1390, 1396, + 95, 96, 97, 493, 220, -304, -304, 1391, 1406, 1397, + 1398, 158, 158, 158, 18, 1399, 1525, 1415, 1416, 20, + -304, 1336, 1336, 1525, 1417, 1429, 1336, 1328, 23, 1431, + 1444, 375, 1328, 1447, 297, 1005, 1006, 1007, 1450, 72, + 72, 297, 349, 953, 72, 140, 1451, 1468, 1469, 1554, + 1047, 26, 1470, 98, 99, 100, 708, 1471, 763, 764, + 1061, 1062, 1476, 1336, 1487, 1488, 1492, 127, 1243, 1328, + 295, 1494, 1336, 1495, 710, 58, 58, 295, 1328, 1008, + 58, 72, 1574, 1502, 1520, 201, 26, 1076, 1009, 1010, + 72, 1521, 1078, 221, 1529, 1539, 1525, 1540, 1545, 1547, + 1327, 1327, 1553, 1335, 1335, 1327, 1562, 1563, 1335, 1571, + 707, 363, 155, 1572, 297, 156, 1584, 58, 1336, 130, + 131, 1588, 1595, 1599, 1328, 1011, 58, 1618, 1596, 1602, + 574, 605, 606, 607, 608, 609, 72, 1604, 1609, 421, + 424, 1605, 1327, 538, 1357, 1335, 518, 1613, 1617, 612, + 295, 1327, 1620, 1625, 1335, 339, 1336, 339, 1626, 339, + 1628, 1629, 1328, 1, 5, 442, 147, 160, 421, 1347, + 1499, 968, 58, 1167, 72, 127, 128, 441, 728, 155, + 155, 155, 439, 809, 1381, 1382, 1383, 1384, 613, 614, + 1300, 212, 220, 615, 616, 617, 618, 1327, 1569, 500, + 1335, 359, 127, 128, 339, 140, 339, 13, 140, 1483, + 58, 409, 1624, 1389, 156, 156, 156, 550, 1159, 1023, + 140, 7, 8, 9, 10, 26, 1158, 130, 131, 505, + 811, 127, 128, 1452, 1362, 1327, 535, 1245, 1335, 1077, + 1156, 545, 958, 127, 128, 636, 898, 1419, 158, 483, + 633, 546, 26, 390, 130, 131, 140, 1442, 140, 21, + 156, 156, 156, 1345, 1591, 450, 251, 1603, 637, 1566, + 258, 140, 493, 220, 27, 28, 450, 0, 638, 1608, + 493, 26, 221, 130, 131, 1610, 636, 1207, 639, 1448, + 0, 640, 641, 26, 258, 130, 131, 545, 252, 95, + 110, 111, 529, 0, 0, 212, 32, 546, 0, 637, + 0, 0, 450, 0, 1473, 158, 158, 158, 1046, 638, + 0, 0, 0, 258, 0, 0, 0, 0, 0, 639, + 0, 0, 640, 641, 258, 0, 0, 21, 0, 156, + 1231, 1232, 156, 1241, 1242, 0, 1244, 1493, 116, 1006, + 1007, 0, 112, 113, 411, 413, 0, 156, 156, 156, + 0, 744, 536, 0, 0, 0, 0, 1079, 750, 0, + 0, 0, 156, 1084, 0, 0, 506, 0, 7, 8, + 507, 10, 167, 12, 13, 0, 0, 565, 0, 14, + 116, 1006, 1007, 258, 95, 110, 111, 0, 225, 226, + 227, 119, 120, 16, 1205, 17, 18, 19, 1523, 0, + 0, 20, 0, 0, 871, 1523, 21, 1050, 0, 0, + 23, 508, 18, 168, 0, 339, 0, 228, 258, 26, + 0, 27, 28, 943, 574, 509, 0, 510, 0, 0, + 0, 26, 743, 119, 120, 30, 0, 112, 113, 743, + 0, 839, 258, 220, 0, 31, 101, 0, 0, 0, + 0, 0, 0, 32, 115, 0, 0, 0, 33, 95, + 110, 111, 421, 1347, 0, 0, 1140, 0, 1141, 719, + 720, 0, 723, 0, 645, 649, 652, 0, 1523, 0, + 0, 0, 212, 0, 220, 237, 0, 0, 0, 0, + 0, 0, 1365, 1366, 1594, 0, 0, 233, 95, 110, + 111, 892, 681, 682, 683, 0, 0, 893, 7, 127, + 128, 10, 112, 1496, 13, 0, 1607, 741, 745, 95, + 110, 111, 743, 871, 0, 745, 0, 0, 220, 0, + 655, 8, 9, 10, 258, 0, 18, 0, 0, 140, + 140, 0, 140, 0, 947, 0, 21, 0, 0, 0, + 493, 112, 113, 450, 0, 339, 388, 0, 0, 26, + 0, 27, 28, 450, 450, 308, 656, 783, 21, 0, + 369, 371, 112, 1498, 0, 30, 116, 117, 118, 0, + 416, 26, 743, 130, 131, 31, 0, 0, 743, 0, + 450, 0, 258, 32, 1223, 450, 0, 0, 33, 1227, + 0, 0, 0, 0, 0, 0, 0, 339, 745, 0, + 0, 0, 0, 0, 0, 0, 0, 156, 743, 0, + 0, 0, 1253, 0, 1255, 743, 0, 26, 0, 119, + 120, 0, 0, 1457, 1458, 1459, 0, 0, 0, 0, + 339, 0, 741, 0, 0, 868, 869, 0, 873, 874, + 875, 876, 877, 878, 879, 880, 881, 882, 883, 884, + 885, 886, 887, 888, 889, 890, 891, 0, 745, 0, + 499, 501, 0, 0, 745, 0, 0, 0, 0, 1286, + 0, 0, 258, 530, 7, 8, 9, 10, 214, 215, + 216, 300, 8, 9, 10, 14, 0, 0, 0, 0, + 0, 95, 96, 97, 745, 0, 0, 0, 0, 0, + 0, 745, 18, 156, 156, 943, 0, 20, 1511, 1512, + 0, 0, 21, 0, 0, 0, 23, 258, 636, 21, + 382, 383, 384, 960, 962, 26, 251, 27, 28, 0, + 0, 214, 215, 216, 27, 319, 363, 0, 14, 339, + 0, 981, 237, 566, 98, 99, 0, 140, 140, 943, + 0, 982, 0, 921, 923, 18, 0, 0, 252, 32, + 20, 639, 0, 0, 983, 641, 32, 0, 0, 23, + 0, 26, 0, 386, 387, 1114, 1115, 491, 215, 216, + 0, 1120, 578, 0, 14, 674, 0, 741, 0, 0, + 0, 0, 0, 0, 684, 1132, 943, 1133, 0, 1134, + 0, 18, 743, 0, 258, 0, 20, 674, 127, 128, + 0, 1393, 215, 216, 0, 23, 0, 0, 14, 0, + 258, 986, 0, 645, 649, 0, 652, 1592, 7, 8, + 9, 10, 0, 450, 450, 0, 450, 450, 0, 450, + 20, 0, 0, 0, 1067, 1162, 0, 0, 0, 23, + 0, 636, 0, 0, 0, 704, 743, 743, 26, 0, + 130, 131, 743, 0, 0, 0, 21, 0, 649, 0, + 339, 339, 636, 339, 637, 0, 743, 0, 743, 26, + 743, 27, 28, 0, 638, 0, 0, 0, 745, 1453, + 1454, 1183, 0, 0, 639, 981, 0, 647, 641, 0, + 0, 0, 0, 1464, 1465, 982, 0, 116, 1006, 1007, + 1105, 1049, 0, 32, 0, 639, 0, 0, 983, 641, + 1475, 751, 0, 0, 779, 0, 743, 0, 0, 0, + 0, 0, 0, 0, 1050, 0, 140, 140, 156, 156, + 943, 1051, 745, 745, 140, 0, 0, 741, 745, 601, + 602, 603, 604, 605, 606, 607, 608, 609, 26, 0, + 119, 120, 745, 649, 745, 0, 745, 156, 156, 943, + 0, 0, 743, 0, 0, 0, 258, 596, 597, 598, + 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, + 609, 743, 1518, 1519, 0, 450, 450, 0, 0, 0, + 0, 0, 1155, 0, 0, 0, 840, 864, 0, 843, + 0, 0, 745, 845, 846, 848, 849, 850, 0, 7, + 8, 9, 10, 0, 0, 246, 578, 339, 0, 0, + 300, 394, 395, 10, 0, 0, 1135, 0, 1136, 867, + 1179, 0, 0, 0, 0, 0, 0, 18, 0, 1142, + 0, 912, 0, 921, 923, 0, 0, 21, 745, 0, + 0, 140, 140, 636, 140, 0, 0, 1301, 21, 1302, + 26, 1303, 27, 28, 0, 251, 0, 745, 0, 7, + 8, 9, 10, 27, 319, 13, 981, 627, 0, 300, + 394, 395, 10, 924, 628, 0, 982, 921, 923, 0, + 924, 212, 220, 0, 32, 0, 639, 18, 0, 983, + 641, 0, 1229, 1230, 258, 32, 258, 21, 0, 0, + 975, 0, 0, 636, 0, 0, 0, 21, 0, 0, + 26, 992, 27, 28, 629, 0, 450, 450, 450, 0, + 26, 0, 27, 319, 0, 0, 1172, 0, 743, 0, + 743, 0, 743, 741, 741, 0, 1173, 1266, 258, 0, + 0, 0, 864, 0, 32, 80, 639, 0, 0, 1174, + 641, 0, 1395, 0, 630, 104, 0, 339, 0, 0, + 0, 0, 0, 0, 0, 133, 0, 0, 0, 0, + 0, 144, 144, 0, 144, 0, 80, 0, 0, 0, + 0, 0, 0, 80, 156, 0, 0, 0, 0, 704, + 0, 0, 0, 0, 0, 0, 203, 0, 80, 0, + 0, 450, 450, 0, 0, 0, 238, 0, 0, 0, + 0, 0, 0, 104, 745, 751, 745, 0, 745, 0, + 0, 0, 258, 0, 262, 104, 741, 751, 0, 0, + 0, 0, 0, 743, 0, 741, 741, 0, 0, 0, + 741, 0, 0, 0, 0, 0, 0, 104, 0, 0, + 0, 156, 156, 156, 0, 751, 0, 0, 0, 0, + 0, 751, 1370, 0, 0, 0, 1135, 1136, 921, 923, + 300, 8, 9, 10, 1142, 133, 0, 80, 0, 0, + 0, 144, 144, 0, 0, 0, 412, 144, 741, 0, + 144, 144, 144, 0, 0, 0, 0, 921, 923, 258, + 7, 127, 128, 10, 0, 0, 80, 0, 21, 0, + 80, 0, 0, 0, 0, 251, 203, 80, 0, 745, + 450, 0, 0, 27, 319, 0, 258, 0, 18, 1116, + 0, 0, 0, 0, 203, 203, 203, 0, 21, 0, + 0, 0, 0, 1414, 0, 0, 0, 538, 0, 0, + 0, 26, 0, 27, 28, 32, 127, 128, 0, 0, + 215, 216, 867, 203, 0, 684, 14, 149, 751, 0, + 0, 0, 924, 0, 0, 0, 0, 150, 975, 743, + 502, 0, 0, 741, 0, 32, 80, 0, 20, 104, + 151, 1135, 1136, 0, 1142, 1455, 1456, 23, 0, 636, + 144, 0, 0, 0, 0, 0, 26, 0, 130, 131, + 704, 0, 1168, 741, 0, 0, 924, 0, 259, 0, + 0, 0, 637, 0, 0, 0, 0, 0, 127, 128, + 0, 0, 638, 246, 0, 0, 0, 0, 104, 547, + 0, 0, 639, 0, 0, 640, 641, 0, 471, 473, + 477, 0, 0, 0, 7, 127, 128, 10, 0, 0, + 246, 0, 0, 924, 0, 745, 0, 0, 0, 0, + 0, 636, 0, 0, 0, 0, 1210, 0, 26, 0, + 130, 131, 18, 104, 0, 0, 0, 634, 1516, 547, + 547, 650, 21, 0, 637, 434, 0, 0, 0, 0, + 80, 0, 0, 0, 638, 26, 0, 27, 28, 1263, + 0, 0, 0, 0, 639, 0, 1536, 640, 641, 0, + 751, 30, 751, 0, 0, 0, 0, 469, 0, 0, + 0, 31, 0, 0, 133, 795, 796, 9, 10, 32, + 485, 0, 0, 104, 33, 203, 104, 0, 0, 0, + 1271, 0, 0, 0, 0, 0, 127, 128, 0, 0, + 144, 535, 0, 144, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 21, 0, 144, 0, 0, 0, 0, + 0, 0, 0, 80, 0, 0, 26, 0, 27, 28, + 7, 8, 9, 10, 797, 1305, 535, 0, 0, 636, + 0, 1263, 193, 0, 0, 0, 26, 924, 130, 131, + 0, 203, 194, 203, 0, 203, 203, 203, 18, 0, + 32, 203, 637, 0, 0, 195, 203, 0, 21, 203, + 0, 0, 638, 0, 636, 0, 924, 0, 741, 0, + 0, 26, 639, 27, 28, 640, 641, 0, 0, 133, + 1358, 0, 80, 0, 80, 0, 0, 981, 0, 806, + 80, 0, 80, 0, 0, 0, 166, 982, 7, 8, + 9, 10, 167, 12, 13, 32, 0, 639, 0, 14, + 983, 641, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 16, 0, 17, 18, 19, 0, 0, + 0, 20, 104, 104, 104, 104, 21, 0, 0, 0, + 23, 0, 0, 168, 0, 0, 0, 0, 0, 26, + 0, 27, 28, 1421, 1422, 761, 0, 762, 0, 471, + 473, 477, 0, 0, 0, 30, 0, 0, 0, 0, + 773, 0, 0, 0, 0, 31, 0, 0, 0, 0, + 0, 0, 0, 32, 0, 0, 0, 0, 33, 0, + 0, 0, 104, 34, 547, 0, 0, 0, 0, 0, + 0, 0, 0, 804, 0, 0, 634, 0, 547, 547, + 0, 650, 0, 0, 0, 0, 1210, 0, 944, 8, + 9, 0, 946, 12, 246, 0, 0, 0, 0, 14, + 0, 0, 0, 0, 1479, 0, 0, 203, 0, 0, + 0, 0, 0, 16, 766, 17, 0, 0, 0, 772, + 0, 20, 0, 0, 0, 0, 1497, 1500, 0, 0, + 23, 133, 636, 0, 0, 0, 0, 0, 133, 26, + 0, 130, 131, 0, 0, 0, 203, 988, 203, 203, + 238, 650, 0, 0, 0, 637, 0, 0, 0, 0, + 0, 0, 0, 821, 0, 638, 0, 0, 0, 827, + 0, 0, 0, 0, 0, 639, 0, 0, 640, 641, + 0, 835, 836, 0, 837, 0, 0, 0, 0, 300, + 8, 9, 10, 203, 0, 0, 0, 988, 0, 0, + 0, 1541, 0, 0, 203, 203, 0, 203, 7, 8, + 9, 10, 214, 215, 216, 0, 0, 0, 0, 14, + 0, 0, 0, 104, 0, 0, 806, 21, 0, 0, + 0, 0, 0, 0, 251, 104, 18, 0, 0, 0, + 578, 20, 27, 319, 0, 0, 21, 0, 1072, 0, + 23, 0, 636, 0, 704, 0, 80, 0, 0, 26, + 0, 27, 28, 104, 0, 0, 0, 0, 0, 104, + 0, 0, 0, 0, 32, 981, 547, 547, 547, 932, + 933, 0, 0, 0, 932, 982, 0, 0, 547, 0, + 0, 0, 0, 32, 0, 639, 0, 0, 1030, 641, + 0, 0, 0, 0, 0, 8, 9, 0, 167, 12, + 13, 0, 0, 749, 0, 14, 83, 0, 761, 762, + 0, 773, 0, 0, 0, 0, 106, 0, 0, 16, + 0, 17, 18, 0, 0, 126, 134, 20, 0, 0, + 804, 0, 145, 145, 0, 145, 23, 83, 636, 0, + 0, 0, 0, 0, 83, 26, 0, 130, 131, 0, + 0, 547, 0, 547, 0, 0, 0, 145, 0, 83, + 104, 637, 0, 0, 547, 0, 104, 239, 944, 944, + 944, 638, 0, 0, 248, 0, 1149, 300, 127, 128, + 10, 639, 0, 0, 640, 641, 248, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 7, 127, 128, 10, + 0, 0, 13, 0, 0, 0, 0, 1058, 104, 0, + 104, 0, 203, 203, 1176, 21, 0, 0, 0, 1063, + 0, 0, 251, 0, 18, 0, 0, 0, 0, 0, + 27, 319, 0, 0, 21, 0, 0, 0, 83, 0, + 0, 0, 145, 145, 0, 0, 0, 26, 145, 27, + 28, 145, 145, 145, 0, 1086, 0, 1088, 0, 0, + 0, 1176, 32, 149, 0, 0, 0, 83, 0, 0, + 0, 83, 0, 150, 104, 0, 0, 145, 83, 0, + 0, 32, 0, 0, 0, 0, 151, 0, 0, 0, + 0, 0, 0, 0, 0, 145, 145, 145, 0, 0, + 203, 0, 0, 0, 0, 144, 0, 0, 80, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 104, 0, + 104, 0, 0, 0, 145, 0, 471, 473, 477, 1122, + 1123, 0, 1125, 8, 9, 0, 0, 12, 13, 0, + 8, 9, 0, 14, 12, 246, 0, 83, 104, 0, + 14, 0, 0, 547, 547, 0, 547, 16, 0, 17, + 1143, 145, 0, 0, 16, 20, 17, 0, 0, 0, + 0, 0, 20, 0, 23, 477, 0, 0, 0, 0, + 0, 23, 0, 26, 0, 130, 131, 619, 0, 0, + 26, 0, 130, 131, 0, 0, 0, 0, 0, 248, + 145, 203, 203, 203, 203, 1176, 0, 0, 0, 203, + 0, 1178, 0, 0, 1239, 0, 642, 642, 642, 0, + 0, 0, 620, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1176, 1176, 1176, 7, 8, 9, 10, 167, + 12, 13, 0, 0, 248, 0, 14, 0, 635, 0, + 145, 145, 651, 0, 0, 0, 0, 660, 0, 0, + 16, 83, 17, 18, 19, 0, 0, 0, 20, 0, + 0, 0, 0, 21, 0, 0, 0, 23, 0, 0, + 168, 0, 0, 0, 0, 0, 26, 0, 27, 28, + 0, 0, 0, 0, 0, 697, 0, 0, 0, 0, + 0, 0, 30, 0, 248, 0, 145, 248, 0, 0, + 0, 0, 31, 0, 0, 761, 762, 471, 473, 477, + 32, 145, 0, 773, 145, 33, 203, 203, 0, 203, + 34, 0, 7, 8, 9, 10, 145, 0, 13, 0, + 0, 0, 0, 0, 83, 0, 471, 473, 477, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 102, 1428, 0, 1285, 1286, 1287, 10, 167, 12, 301, - 302, 303, 0, 304, 14, 1288, 0, 1289, 1290, 1291, - 1292, 1293, 1294, 1295, 1296, 1297, 1298, 15, 16, 305, + 18, 0, 0, 0, 1285, 203, 988, 203, 0, 0, + 21, 0, 145, 0, 145, 0, 145, 145, 145, 0, + 0, 0, 145, 26, 104, 27, 28, 145, 0, 6, + 145, 7, 8, 9, 10, 11, 12, 13, 0, 193, + 0, 0, 14, 1298, 0, 0, 0, 0, 0, 194, + 134, 0, 0, 83, 0, 83, 16, 32, 17, 18, + 807, 83, 195, 83, 20, 0, 0, 0, 0, 21, + 0, 0, 0, 23, 0, 0, 438, 0, 0, 0, + 761, 762, 26, 773, 27, 28, 0, 0, 29, 0, + 1363, 0, 0, 0, 1364, 0, 0, 0, 30, 0, + 0, 0, 0, 248, 248, 248, 248, 0, 31, 1176, + 0, 0, 0, 0, 1377, 0, 32, 0, 1378, 0, + 0, 33, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 7, 127, 128, 10, 0, 0, 535, 0, + 0, 0, 0, 0, 0, 642, 642, 0, 642, 0, + 0, 0, 0, 1394, 0, 941, 0, 0, 0, 0, + 18, 0, 0, 248, 0, 145, 0, 0, 0, 0, + 21, 0, 0, 0, 0, 0, 1176, 1176, 1176, 145, + 145, 0, 651, 26, 0, 27, 28, 0, 0, 945, + 0, 0, 104, 0, 0, 0, 0, 203, 0, 30, + 0, 0, 660, 7, 127, 128, 10, 0, 145, 31, + 0, 0, 0, 642, 0, 642, 642, 32, 642, 0, + 0, 0, 33, 477, 0, 0, 0, 0, 0, 0, + 0, 18, 697, 0, 0, 0, 0, 0, 0, 0, + 126, 21, 0, 0, 0, 1466, 1467, 145, 651, 145, + 145, 239, 651, 0, 26, 0, 27, 28, 0, 0, + 642, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 30, 0, 0, 0, 0, 1018, 0, 0, 0, 0, + 31, 0, 0, 0, 0, 0, 0, 0, 32, 0, + 471, 473, 477, 33, 145, 0, 0, 0, 651, 0, + 0, 0, 0, 0, 0, 145, 145, 0, 145, 0, + 0, 0, 0, 0, 7, 8, 9, 10, 167, 12, + 13, 0, 1018, 749, 248, 14, 0, 807, 0, 0, + 0, 0, 0, 0, 0, 0, 248, 0, 0, 16, + 0, 17, 18, 0, 0, 0, 0, 20, 0, 0, + 0, 0, 21, 0, 0, 642, 23, 83, 636, 0, + 0, 0, 0, 0, 248, 26, 0, 27, 28, 0, + 248, 0, 0, 0, 0, 0, 0, 145, 145, 145, + 0, 1172, -387, 8, 9, -387, -387, 12, 246, 145, + 0, 1173, 0, 14, 0, 0, 0, 0, 0, 32, + 0, 639, 0, 0, 1174, 641, 0, 16, 0, 17, + -387, 0, 0, 0, 0, 20, 0, 0, 0, 0, + -387, 0, 0, 0, 23, 0, 636, 0, 642, 0, + 642, 0, 0, 26, 0, 130, 131, 0, 0, 0, + 0, 642, 0, 0, 0, 941, 941, 941, 0, 637, + 7, 8, 9, 10, 214, 215, 216, 0, 0, 638, + 0, 14, 145, 0, 145, 0, 0, -387, 0, 639, + 0, 248, 640, 641, 0, 145, 0, 248, 18, 945, + 945, 945, 0, 20, 0, 0, 0, 660, 21, 642, + 642, 642, 23, 0, 636, 0, 0, 0, 0, 0, + 0, 26, 0, 27, 28, 51, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 193, 0, 248, + 0, 248, 0, 145, 145, 651, 0, 194, 0, 0, + 0, 51, 51, 0, 152, 32, 51, 0, 941, 0, + 1438, 0, 0, 51, 598, 599, 600, 601, 602, 603, + 604, 605, 606, 607, 608, 609, 51, 0, 51, 795, + 8, 507, 10, 205, 12, 206, 0, 0, 0, 0, + 14, 0, 945, 0, 0, 0, 0, 0, 0, 0, + 0, 254, 0, 0, 16, 248, 17, 18, 0, 0, + 0, 0, 20, 0, 0, 0, 0, 21, 0, 0, + 0, 23, 0, 0, 0, 0, 0, 0, 0, 0, + 26, 145, 27, 28, 0, 0, 145, 0, 797, 83, + 0, 0, 0, 0, 0, 0, 30, 0, 0, 248, + 0, 248, 0, 0, 396, 396, 31, 51, 0, 0, + 0, 51, 51, 0, 32, 254, 0, 51, 0, 33, + 152, 152, 152, 0, 0, 0, 0, 431, 0, 248, + 0, 0, 0, 0, 145, 145, 51, 145, 0, 0, + 51, 0, 0, 0, 0, 0, 51, 51, 642, 642, + 642, 642, 642, 0, 0, 0, 642, 0, 0, 0, + 0, 0, 0, 0, 51, 51, 152, 0, 0, 0, + 0, 0, 0, 0, 254, 0, 0, 0, 0, 941, + 941, 941, 145, 145, 145, 145, 651, 0, 0, 0, + 145, 0, 0, 51, 0, 0, 506, 1018, 7, 8, + 507, 10, 167, 12, 13, 0, 0, 0, 0, 14, + 0, 0, 0, 945, 945, 945, 51, 0, 0, 0, + 0, 0, 0, 16, 0, 17, 18, 19, 0, 0, + 51, 20, -525, 0, 1018, 0, 21, 0, 0, 0, + 23, 508, 0, 168, 7, 8, 9, 10, 0, 26, + 246, 27, 28, 0, 0, 509, 0, 510, 0, 0, + 0, 0, 0, 0, 0, 30, 0, 0, 0, 0, + 0, 0, 18, 642, 642, 31, 642, 0, 0, 0, + 0, 0, 21, 32, 0, 0, 0, 0, 33, 0, + 0, 0, 0, 0, 0, 26, 0, 27, 28, 0, + 575, 0, 0, 0, -525, 0, 0, 145, 145, 0, + 145, 193, 0, 0, 0, 0, 0, 396, 0, 0, + 0, 194, 0, 0, 0, 254, 0, 0, 0, 32, + 51, 0, 0, 0, 195, 1425, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 145, 651, 145, 595, + 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, + 606, 607, 608, 609, 396, 248, 0, 0, 0, 0, + 0, 1018, 0, 0, 0, 51, 0, 0, 0, 506, + 0, 7, 8, 507, 10, 167, 12, 13, 0, 0, + 51, 0, 14, 51, 0, 0, 0, 0, 0, 431, + 431, 431, 0, 0, 0, 51, 16, 0, 17, 18, + 19, 0, 0, 51, 20, -526, 0, 0, 0, 21, + 0, 0, 0, 23, 508, 0, 168, 0, 0, 0, + 0, 0, 26, 0, 27, 28, 0, 0, 509, 0, + 510, 51, 0, 51, 0, 152, 152, 152, 30, 0, + 945, 51, 0, 0, 0, 0, 51, 0, 31, 51, + 0, 0, 1233, 1234, 9, 10, 32, 0, 0, 0, + 0, 33, 0, 8, 9, 0, 0, 12, 13, 0, + 0, 0, 51, 14, 51, 0, 0, -526, 0, 51, + 51, 0, 51, 0, 0, 0, 0, 16, 0, 17, + 21, 0, 0, 0, 0, 20, 0, 0, 0, 0, + 0, 0, 0, 26, 23, 27, 28, 945, 945, 945, + 0, 1235, 0, 26, 575, 130, 131, 575, 0, 193, + 0, 0, 0, 248, 0, 0, 0, 0, 145, 194, + 0, 0, 575, 575, 575, 0, 0, 32, 0, 78, + 0, 0, 195, 0, 0, 0, 0, 575, 0, 0, + 0, 7, 8, 9, 10, 0, 6, 13, 7, 8, + 9, 10, 11, 12, 13, 78, 78, 0, 78, 14, + 78, 0, 0, 0, 0, 0, 0, 78, 0, 18, + 0, 0, 15, 16, 0, 17, 18, 19, 0, 21, + 78, 20, 78, 0, 0, 254, 21, 0, 0, 22, + 23, 24, 26, 25, 27, 28, 0, 0, 575, 26, + 0, 27, 28, 0, 0, 29, 0, 0, 474, 0, + 0, 0, 0, 0, 0, 30, 0, 51, 475, 0, + 0, 0, 0, 0, 0, 31, 32, 0, 0, 0, + 0, 476, 0, 32, 0, 0, 0, 0, 33, 0, + 0, 396, 0, 34, 0, 0, 0, 159, 396, 0, + 0, 0, 0, 0, 0, 0, 51, 51, 51, 51, + 0, 78, 0, 0, 0, 78, 78, 0, 0, 204, + 0, 78, 0, 0, 78, 78, 78, 0, 0, 0, + 0, 0, 0, 0, 795, 796, 9, 10, 0, 0, + 78, 0, 0, 0, 78, 7, 8, 9, 10, 0, + 78, 78, 0, 51, 0, 0, 0, 51, 0, 0, + 0, 0, 0, 0, 51, 51, 0, 51, 78, 78, + 78, 0, 21, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 21, 0, 26, 51, 27, 28, 0, + 0, 1060, 0, 797, 0, 0, 26, 78, 27, 28, + 0, 193, 192, 0, 0, 0, 0, 254, 0, 0, + 0, 194, 193, 159, 159, 159, 51, 0, 0, 32, + 78, 0, 194, 0, 195, 0, 0, 0, 0, 0, + 32, 0, 0, 0, 78, 195, 0, 0, 0, 204, + 0, 748, 575, 300, 8, 9, 10, 167, 12, 301, + 302, 303, 749, 304, 14, 0, 0, 204, 204, 478, + 0, 0, 0, 0, 0, 0, 0, 0, 16, 305, 17, 18, 19, 0, 306, 307, 20, 0, 308, 309, - 310, 21, 311, 312, 1299, 23, 1300, 0, 0, 313, - 314, 315, 316, 317, 26, 1158, 1301, 319, 719, 0, - 1302, 320, 0, 0, 0, 0, 0, 321, 102, 0, + 310, 21, 311, 312, 0, 23, 204, 0, 0, 313, + 314, 315, 316, 317, 26, 0, 27, 319, 0, 0, + 0, 320, 0, 0, 0, 0, 0, 321, 0, 0, 322, 0, 0, 0, 0, 0, 0, 0, 323, 324, 325, 0, 0, 0, 0, 0, 326, 327, 328, 0, - 0, 0, 0, 329, 561, 1303, 102, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1429, - 330, 687, 577, 578, 579, 580, 581, 582, 583, 584, - 585, 586, 587, 588, 589, 590, 591, 592, 1158, 1158, - 1158, 0, 0, 0, 0, 1454, 0, -479, -479, -479, - -479, -479, -479, -479, 0, 0, -479, 0, -479, 0, - 0, 0, 202, 0, 0, 0, 0, 0, 0, -479, - 0, -479, 0, 0, 0, -479, 0, 0, 0, 0, - -479, 0, 102, 0, 0, -479, 0, 0, 0, -479, - 0, -479, 0, 102, 102, 0, 102, 102, -479, 0, - -479, -479, -479, -479, -479, 0, -479, -479, -479, -479, + 659, 0, 0, 329, 78, 0, 0, 0, 575, 575, + 575, 0, 0, 0, 431, 254, 0, 0, -798, 0, + 330, 0, 0, 7, 8, 9, 10, 205, 12, 206, + 0, 0, 548, 0, 14, 597, 598, 599, 600, 601, + 602, 603, 604, 605, 606, 607, 608, 609, 16, 78, + 17, 18, 51, 51, 152, 0, 20, 0, 0, 254, + 0, 21, 0, 0, 78, 23, 0, 78, 0, 0, + 0, 0, 0, 0, 26, 0, 27, 28, 0, 78, + 207, 0, 644, 644, 644, 0, 0, 78, 0, 0, + 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 31, 1204, 0, 0, 0, 0, 0, 0, 32, 0, + 0, 0, 0, 33, 0, 78, 0, 78, 0, 78, + 78, 78, 0, 0, 0, 78, 0, 0, 0, 0, + 78, 0, 0, 78, 0, 0, 0, 0, 204, 0, + 51, 0, 0, 0, 0, 51, 0, 0, 51, 7, + 8, 9, 10, 167, 12, 13, 78, 0, 78, 0, + 14, 0, 0, 78, 78, 0, 78, 0, 0, 0, + 0, 0, 0, 0, 16, 0, 17, 18, 0, 0, + 0, 0, 20, 0, 0, 0, 0, 21, 0, 0, + 0, 23, 0, 0, 0, 0, 0, 0, 0, 0, + 26, 0, 27, 28, 204, 0, 204, 0, 478, 478, + 478, 0, 0, 0, 204, 0, 30, 0, 0, 204, + 254, 0, 204, 0, 0, 0, 31, 0, 0, 0, + 0, 0, 0, 0, 32, 0, 0, 0, 0, 33, + 0, 51, 51, 152, 152, 152, 0, 254, 0, 51, + 0, 0, 204, 0, 870, 0, 300, 8, 9, 10, + 0, 12, 552, 302, 303, 0, 304, 14, 0, 0, + 0, 0, 1204, 1204, 1204, 0, 0, 0, 0, 0, + 659, 16, 305, 17, 0, 19, 0, 306, 307, 20, + 0, 308, 309, 310, 21, 311, 312, 0, 23, 0, + 0, 0, 313, 314, 315, 316, 317, 26, 0, 27, + 319, 78, 0, 0, 320, -788, 0, 0, 0, 0, + 321, 0, 0, 322, 0, 0, 0, 0, 0, 0, + 0, 323, 324, 325, 0, 0, 202, 0, 0, 326, + 327, 328, 0, 0, 0, 0, 329, 0, 0, 0, + 78, 78, 78, 78, 0, 0, 0, 906, 0, 0, + 0, 257, 0, 330, 261, 0, 51, 51, 0, 51, + 0, 644, 644, 0, 644, 0, 0, 0, 0, 0, + 0, 644, 0, 0, 0, 257, 0, 365, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 78, 0, 0, + 204, 78, 0, 0, 0, 51, 51, 51, 78, 78, + 0, 78, 592, 593, 594, 595, 596, 597, 598, 599, + 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, + 78, 0, 0, 0, 0, 0, 0, 0, 0, 985, + 0, 985, 985, 0, 644, 0, 0, 0, 0, 0, + 0, 7, 8, 9, 10, 0, 202, 535, 0, 0, + 78, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 202, 202, 202, 0, 0, 18, + 0, 0, 0, 0, 484, 0, 985, 0, 0, 21, + 0, 0, 0, 0, 0, 0, 0, 204, 204, 0, + 204, 0, 26, 202, 27, 28, 0, 0, 0, 1204, + 0, 0, 0, 0, 0, 0, 0, 0, 193, 204, + 0, 7, 8, 9, 10, 167, 12, 13, 194, 261, + 1035, 0, 14, 0, 0, 0, 32, 0, 0, 0, + 0, 195, 0, 257, 0, 0, 16, 0, 17, 18, + 0, 0, 0, 0, 20, 0, 0, 0, 0, 21, + 0, 0, 0, 23, 0, 0, 0, 0, 0, 548, + 548, 548, 26, 0, 27, 28, 1204, 1204, 1204, 0, + 0, 644, 0, 0, 0, 0, 0, 0, 30, 0, + 659, 0, 0, 0, 0, 0, 0, 51, 31, 0, + 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, + 0, 33, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 78, 78, 78, 0, + 0, 0, 0, 0, 0, 257, 261, 0, 0, 0, + 0, 7, 8, 9, 10, 205, 12, 206, 0, 0, + 0, 0, 14, 0, 644, 0, 644, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 16, 644, 17, 18, + 0, 644, 644, 644, 20, 1206, 0, 0, 0, 21, + 0, 0, 0, 23, 0, 202, 0, 0, 0, 0, + 0, 0, 26, 0, 27, 28, 0, 0, 1435, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 30, 0, + 0, 0, 0, 0, 78, 985, 985, 1177, 31, 78, + 0, 0, 78, 0, 0, 0, 32, 0, 0, 0, + 0, 33, 0, 0, 0, 7, 8, 9, 10, 205, + 12, 206, 0, 0, 0, 0, 14, 0, 0, 0, + 0, 202, 0, 202, 0, 202, 202, 202, 0, 0, + 16, 202, 17, 18, 1177, 0, 202, 0, 20, 202, + 0, 0, 0, 21, 0, 0, 0, 23, 0, 0, + 0, 0, 0, 0, 0, 0, 26, 0, 27, 28, + 0, 102, 0, 0, 0, 0, 0, 0, 0, 202, + 121, 102, 30, 204, 0, 0, 0, 102, 102, 0, + 102, 1489, 31, 0, 0, 78, 78, 78, 78, 78, + 32, 0, 0, 78, 0, 33, 594, 595, 596, 597, + 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, + 608, 609, 235, 0, 0, 0, 1206, 1206, 1206, 0, + 0, 0, 0, 0, 0, 0, 906, 906, 0, 906, + 0, 1490, 588, 589, 590, 591, 592, 593, 594, 595, + 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, + 606, 607, 608, 609, 593, 594, 595, 596, 597, 598, + 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, + 609, 389, 0, 121, 985, 985, 1177, 1177, 1177, 0, + 102, 102, 985, 0, 0, 0, 0, 102, 102, 0, + 0, 102, 102, 102, 0, 417, 102, 102, 102, 0, + 0, 257, 261, 0, 0, 1177, 1177, 1177, 0, 0, + 78, 78, 0, 78, 0, 0, 0, 202, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1233, 127, + 128, 10, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 78, + 78, 78, 0, 0, 0, 0, 202, 0, 202, 202, + 0, 0, 0, 0, 0, 0, 21, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, + 0, 27, 28, 0, 0, 235, 102, 1235, 0, 0, + 0, 0, 0, 0, 0, 30, 0, 0, 0, 985, + 985, 0, 985, 202, 0, 31, 102, 0, 0, 0, + 0, 0, 0, 32, 202, 202, 0, 202, 33, 0, + 0, 570, 0, 300, 8, 9, 10, 167, 12, 301, + 302, 303, 749, 304, 14, 0, 202, 0, 204, 0, + 204, 0, 0, 0, 0, 102, 0, 0, 16, 305, + 17, 18, 19, 1206, 306, 307, 20, 484, 308, 309, + 310, 21, 311, 312, 0, 23, 0, 636, 0, 313, + 314, 315, 316, 317, 26, 0, 27, 319, -312, 0, + 0, 320, 0, 0, 0, 0, 0, 321, 0, 0, + 937, 0, 0, 102, 0, 102, 102, 0, 323, 324, + 938, 7, 8, 9, 10, 0, 326, 327, 328, 0, + 639, 0, 0, 939, 641, 0, 0, 0, 0, 0, + 1206, 1206, 1206, 7, 8, 9, 10, 0, 0, 18, + 330, 0, 0, 0, 0, 0, 0, 0, 0, 21, + 102, 78, 478, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 26, 0, 27, 28, 0, 0, 0, 102, + 0, 21, 0, 0, 0, 0, 102, 0, 474, 102, + 0, 0, 0, 0, 26, 0, 27, 28, 475, 0, + 1432, 102, 0, 0, 0, 0, 32, 0, 0, 0, + 193, 476, 0, 0, 0, 257, 261, 257, 0, 0, + 194, 0, 0, 0, 0, 0, 0, 0, 32, 478, + 478, 478, 0, 195, 0, 0, 0, 0, 8, 9, + 0, 205, 12, 206, 7, 8, 9, 10, 14, 0, + 204, 0, 202, 202, 1175, 0, 0, 0, 0, 257, + 0, 0, 16, 0, 17, 18, 0, 0, 0, 102, + 20, 0, 0, 0, 0, 102, 0, 0, 0, 23, + 0, 0, 21, 0, 0, 0, 0, 0, 26, 261, + 130, 131, 0, 0, 0, 26, 0, 27, 28, 0, + 0, 1175, 1460, 0, -479, -479, -479, -479, -479, -479, + -479, 193, 0, -479, 102, -479, 0, 0, 0, 0, + 0, 194, 0, 0, 0, 0, -479, 0, -479, 32, + 0, 0, -479, 0, 195, 0, 0, -479, 0, 0, + 202, 0, -479, 0, 0, 0, -479, 0, -479, 0, + 0, 0, 0, 0, 0, -479, 0, -479, -479, -479, + -479, -479, 0, -479, -479, -479, -479, -479, -479, -479, -479, -479, -479, -479, -479, -479, -479, -479, -479, -479, - -479, -479, -479, -479, -479, -479, -479, -479, -479, 0, - -479, -479, -479, 0, -479, -479, -479, -479, -479, -479, - 0, -479, 0, 0, 0, 0, 1455, 0, 0, 102, - 0, -479, -479, -479, 0, -479, 102, 121, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 235, 0, - 0, 0, 0, 0, 0, 0, 0, 1284, 0, 1285, - 1286, 1287, 10, 167, 12, 301, 302, 303, 0, 304, - 14, 1288, 980, 1289, 1290, 1291, 1292, 1293, 1294, 1295, - 1296, 1297, 1298, 15, 16, 305, 17, 18, 19, 0, - 306, 307, 20, 0, 308, 309, 310, 21, 311, 312, - 1299, 23, 1300, 0, 0, 313, 314, 315, 316, 317, - 26, 0, 1301, 319, 719, 0, 1302, 320, 0, 980, - 0, 0, 102, 321, 0, 0, 322, 0, 0, 0, - 0, 0, 0, 0, 323, 324, 325, 0, 0, 0, - 0, 0, 326, 327, 328, 0, 0, 0, 0, 329, - 0, 1303, 0, 0, 0, 0, 102, 102, 102, 0, - 0, 0, 0, 0, 0, 0, 330, 0, 102, 0, - 553, 0, 300, 8, 9, 10, 167, 12, 301, 302, - 303, 732, 304, 14, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 16, 305, 17, - 18, 19, 0, 306, 307, 20, 0, 308, 309, 310, - 21, 311, 312, 0, 23, 0, 619, 0, 313, 314, - 315, 316, 317, 26, 0, 27, 319, -312, 0, 0, - 320, 0, 0, 0, 0, 0, 321, 0, 0, 902, - 0, 102, 0, 102, 0, 0, 0, 323, 324, 903, - 0, 0, 0, 0, 102, 326, 327, 328, 0, 622, - 0, 0, 904, 624, 553, 0, 7, 8, 9, 10, - 167, 12, 301, 302, 303, 732, 304, 14, 0, 330, + -479, -479, -479, -479, -479, -479, 0, -479, -479, -479, + 102, -479, -479, -479, -479, -479, -479, 0, -479, 0, + 0, 102, 102, 1461, 102, 102, 0, 0, -479, -479, + -479, 0, -479, 0, 0, 0, 0, 0, 0, 0, + 257, 0, 0, 0, 0, 0, 0, 8, 9, 0, + 167, 12, 13, 0, 0, 0, 0, 14, 0, 0, + 0, 202, 202, 202, 202, 1175, 0, 1297, 0, 202, + 0, 16, 0, 17, 18, 0, 0, 102, 0, 20, + 0, 0, 0, 0, 102, 121, 0, 0, 698, 0, + 0, 168, 1175, 1175, 1175, 0, 235, 26, 0, 130, + 131, 0, 0, 0, 0, 1440, 0, 1308, 1309, 1310, + 10, 167, 12, 301, 302, 303, 0, 304, 14, 1311, + 1015, 1312, 1313, 1314, 1315, 1316, 1317, 1318, 1319, 1320, + 1321, 15, 16, 305, 17, 18, 19, 0, 306, 307, + 20, 0, 308, 309, 310, 21, 311, 312, 1322, 23, + 1323, 0, 0, 313, 314, 315, 316, 317, 26, 0, + 1324, 319, 736, 0, 1325, 320, 0, 1015, 0, 0, + 0, 321, 0, 0, 322, 0, 0, 0, 0, 0, + 0, 0, 323, 324, 325, 0, 202, 202, 0, 202, + 326, 327, 328, 0, 102, 0, 0, 329, 0, 1326, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 16, 305, 17, 18, 19, 0, 306, 307, 20, - 0, 308, 309, 310, 21, 311, 312, 0, 23, 0, - 619, 0, 313, 314, 315, 316, 317, 26, 0, 27, - 28, -312, 0, 0, 320, 0, 0, 0, 0, 0, - 321, 0, 0, 1184, 0, 0, 0, 0, 0, 980, - 0, 323, 324, 1185, 0, 0, 0, 0, 0, 326, - 327, 328, 0, 622, 0, 0, 1186, 624, 731, 0, - 300, 8, 9, 10, 167, 12, 301, 302, 303, 732, - 304, 14, 0, 330, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 16, 305, 17, 18, 19, - 0, 306, 307, 20, 0, 308, 309, 310, 21, 311, - 312, 0, 23, 0, 0, 102, 313, 314, 315, 316, - 317, 26, 0, 27, 319, 0, 0, 0, 320, 0, - 0, 0, 0, 0, 321, 0, 0, 322, 0, 0, - 0, 0, 0, 0, 0, 323, 324, 325, 0, 0, - 0, 0, 0, 326, 327, 328, 0, 0, 0, 0, - 329, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 102, 102, 0, 102, -799, 835, 330, 300, 8, + 0, 0, 0, 1441, 330, 0, 0, 0, 0, 0, + 0, 0, 102, 102, 102, 202, 0, 202, 0, 0, + 0, 0, 0, 0, 102, 0, 1307, 0, 1308, 1309, + 1310, 10, 167, 12, 301, 302, 303, 0, 304, 14, + 1311, 0, 1312, 1313, 1314, 1315, 1316, 1317, 1318, 1319, + 1320, 1321, 15, 16, 305, 17, 18, 19, 0, 306, + 307, 20, 0, 308, 309, 310, 21, 311, 312, 1322, + 23, 1323, 0, 0, 313, 314, 315, 316, 317, 26, + 0, 1324, 319, 736, 0, 1325, 320, 0, 0, 0, + 0, 0, 321, 0, 0, 322, 0, 102, 0, 102, + 0, 0, 0, 323, 324, 325, 18, 0, 0, 0, + 102, 326, 327, 328, 0, 0, 0, 0, 329, 1175, + 1326, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 330, 0, 0, 588, 589, + 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, + 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, + 0, 0, 0, 0, 0, 8, 9, 0, 167, 12, + 13, 0, 0, 749, 0, 14, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1175, 1175, 1175, 16, + 0, 17, 18, 0, 0, 1015, 0, 20, 0, 0, + 0, 0, 0, 0, 0, 0, 23, 202, 0, 0, + 0, 0, 0, 0, 0, 26, 0, 130, 131, 0, + 0, 0, 0, 0, 0, 0, 570, 0, 7, 8, + 9, 10, 167, 12, 301, 302, 303, 749, 304, 14, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 102, + 0, 102, 0, 16, 305, 17, 18, 19, 0, 306, + 307, 20, 0, 308, 309, 310, 21, 311, 312, 0, + 23, 0, 636, 0, 313, 314, 315, 316, 317, 26, + 0, 27, 28, -312, 0, 0, 320, 0, 0, 0, + 0, 0, 321, 0, 0, 1201, 0, 0, 0, 102, + 102, 0, 102, 323, 324, 1202, 0, 0, 0, 0, + 0, 326, 327, 328, 0, 639, 0, 0, 1203, 641, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 330, 870, 0, 300, 8, 9, 10, 167, 12, 301, 302, 303, 0, 304, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 16, 305, 17, 18, 19, 0, 306, + 0, 0, 1015, 16, 305, 17, 18, 19, 0, 306, 307, 20, 0, 308, 309, 310, 21, 311, 312, 0, 23, 0, 0, 0, 313, 314, 315, 316, 317, 26, - 0, 27, 319, 1528, 980, -789, 320, 0, 0, 0, + 0, 27, 319, 1531, 0, -788, 320, 0, 0, 1015, 0, 0, 321, 0, 0, 322, 0, 0, 0, 0, 0, 0, 0, 323, 324, 325, 0, 0, 0, 0, - 0, 326, 327, 328, 0, 0, 0, 0, 329, 0, - 722, 980, 823, 824, 825, 10, 0, 12, 535, 302, - 303, 0, 304, 14, 0, 330, 102, 0, 102, 0, + 0, 326, 327, 328, 0, 0, 0, 0, 329, 739, + 0, 858, 859, 860, 10, 0, 12, 552, 302, 303, + 0, 304, 14, 0, 0, 330, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 16, 305, 17, 0, + 19, 0, 306, 307, 20, 0, 308, 309, 310, 21, + 311, 312, 0, 23, 0, 0, 0, 313, 314, 315, + 316, 317, 26, 0, 861, 862, 740, 0, 0, 320, + 0, 0, 0, 0, 0, 321, 0, 0, 322, 0, + 0, 0, 0, 0, 0, 0, 323, 324, 325, 0, + 0, 0, 0, 0, 326, 327, 328, 0, 0, 0, + 0, 329, 863, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1015, 1022, 330, 570, + 0, 300, 8, 9, 10, 0, 12, 301, 302, 303, + 0, 304, 14, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 16, 305, 17, 18, + 19, 0, 306, 307, 20, 0, 308, 309, 310, 21, + 311, 312, 0, 23, 0, 0, 0, 313, 314, 315, + 316, 317, 26, 0, 27, 319, -312, 0, 0, 320, + 0, 0, 0, 0, 0, 321, 0, 0, 571, 0, + 0, 0, 0, 0, 0, 0, 323, 324, 572, 0, + 0, 0, 0, 0, 326, 327, 328, 0, 0, 0, + 739, 573, 858, 859, 860, 10, 0, 12, 552, 302, + 303, 0, 304, 14, 0, 0, 0, 0, 330, 0, 0, 0, 0, 0, 0, 0, 0, 16, 305, 17, 0, 19, 0, 306, 307, 20, 0, 308, 309, 310, 21, 311, 312, 0, 23, 0, 0, 0, 313, 314, - 315, 316, 317, 26, 0, 826, 827, 723, 0, 0, + 315, 316, 317, 26, 0, 861, 862, 740, 0, 0, 320, 0, 0, 0, 0, 0, 321, 0, 0, 322, 0, 0, 0, 0, 0, 0, 0, 323, 324, 325, 0, 0, 0, 0, 0, 326, 327, 328, 0, 0, - 0, 0, 329, 828, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 987, 330, - 553, 0, 300, 8, 9, 10, 0, 12, 301, 302, - 303, 0, 304, 14, 0, 0, 0, 0, 0, 0, - 0, 0, 980, 0, 0, 0, 0, 16, 305, 17, - 18, 19, 0, 306, 307, 20, 0, 308, 309, 310, - 21, 311, 312, 0, 23, 0, 0, 0, 313, 314, - 315, 316, 317, 26, 0, 27, 319, -312, 0, 0, - 320, 0, 0, 0, 0, 0, 321, 0, 0, 554, - 0, 0, 0, 0, 0, 0, 0, 323, 324, 555, - 0, 0, 0, 0, 0, 326, 327, 328, 0, 0, - 0, 722, 556, 823, 824, 825, 10, 0, 12, 535, - 302, 303, 0, 304, 14, 0, 0, 0, 0, 330, - 0, 0, 0, 0, 0, 0, 0, 0, 16, 305, - 17, 0, 19, 0, 306, 307, 20, 0, 308, 309, - 310, 21, 311, 312, 0, 23, 0, 0, 0, 313, - 314, 315, 316, 317, 26, 0, 826, 827, 723, 0, - 0, 320, 0, 0, 0, 0, 0, 321, 0, 0, - 322, 0, 0, 0, 0, 0, 0, 0, 323, 324, - 325, 0, 0, 0, 0, 0, 326, 327, 328, 0, - 0, 0, 0, 329, 828, 722, 0, 823, 824, 825, - 10, 0, 12, 535, 302, 303, 0, 304, 14, 0, - 330, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 329, 863, 739, 0, 858, 859, 860, 10, + 0, 12, 552, 302, 303, 0, 304, 14, 0, 330, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 16, 305, 17, 0, 19, 0, 306, 307, 20, + 0, 308, 309, 310, 21, 311, 312, 0, 23, 0, + 0, 0, 313, 314, 315, 316, 317, 26, 0, 861, + 862, 740, 0, 0, 320, 0, 0, 0, 0, 0, + 321, 0, 0, 322, 0, 0, 0, 0, 0, 0, + 0, 323, 324, 325, 0, 0, 0, 0, 0, 326, + 327, 328, 0, 0, 0, 739, 329, 858, 859, 860, + 10, 0, 12, 552, 302, 303, 0, 304, 14, 0, + 0, 0, -483, 330, 0, 0, 0, 0, 0, 0, 0, 0, 16, 305, 17, 0, 19, 0, 306, 307, 20, 0, 308, 309, 310, 21, 311, 312, 0, 23, 0, 0, 0, 313, 314, 315, 316, 317, 26, 0, - 826, 827, 723, 0, 0, 320, 0, 0, 0, 0, + 861, 862, 740, 0, 0, 320, 0, 0, 0, 0, 0, 321, 0, 0, 322, 0, 0, 0, 0, 0, 0, 0, 323, 324, 325, 0, 0, 0, 0, 0, - 326, 327, 328, 0, 0, 0, 722, 329, 823, 824, - 825, 10, 0, 12, 535, 302, 303, 0, 304, 14, - 0, 0, 0, -483, 330, 0, 0, 0, 0, 0, + 326, 327, 328, 0, 0, 0, 739, 329, 300, 8, + 9, 10, 0, 12, 552, 302, 303, 0, 304, 14, + 0, 0, 0, 1346, 330, 0, 0, 0, 0, 0, 0, 0, 0, 16, 305, 17, 0, 19, 0, 306, 307, 20, 0, 308, 309, 310, 21, 311, 312, 0, 23, 0, 0, 0, 313, 314, 315, 316, 317, 26, - 0, 826, 827, 723, 0, 0, 320, 0, 0, 0, + 0, 27, 319, 740, 0, 0, 320, 0, 0, 0, 0, 0, 321, 0, 0, 322, 0, 0, 0, 0, 0, 0, 0, 323, 324, 325, 0, 0, 0, 0, - 0, 326, 327, 328, 0, 0, 0, 722, 329, 300, - 8, 9, 10, 0, 12, 535, 302, 303, 0, 304, - 14, 0, 0, 0, 1323, 330, 0, 0, 0, 0, - 0, 0, 0, 0, 16, 305, 17, 0, 19, 0, - 306, 307, 20, 0, 308, 309, 310, 21, 311, 312, - 0, 23, 0, 0, 0, 313, 314, 315, 316, 317, - 26, 0, 27, 319, 723, 0, 0, 320, 0, 0, - 0, 0, 0, 321, 0, 0, 322, 0, 0, 0, - 0, 0, 0, 0, 323, 324, 325, 0, 0, 0, - 0, 0, 326, 327, 328, 0, 0, 0, 0, 329, - 0, 553, 0, 7, 8, 9, 10, 1327, 12, 301, - 302, 303, 0, 304, 14, 0, 330, 0, 0, 0, + 0, 326, 327, 328, 0, 0, 0, 0, 329, 0, + 570, 0, 7, 8, 9, 10, 1350, 12, 301, 302, + 303, 0, 304, 14, 0, 330, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 16, 305, 17, + 18, 19, 0, 306, 307, 20, 0, 308, 309, 310, + 21, 311, 312, 0, 23, 0, 0, 0, 313, 314, + 315, 316, 317, 26, 0, 27, 28, -312, 0, 0, + 320, 0, 0, 0, 0, 0, 321, 0, 0, 1505, + 0, 0, 0, 0, 0, 0, 0, 323, 324, 1506, + 0, 0, 0, 0, 0, 326, 327, 328, 0, 0, + 0, 739, 1507, 300, 8, 9, 10, 0, 12, 552, + 302, 303, 0, 304, 14, 0, 0, 0, 0, 330, 0, 0, 0, 0, 0, 0, 0, 0, 16, 305, - 17, 18, 19, 0, 306, 307, 20, 0, 308, 309, + 17, 0, 19, 0, 306, 307, 20, 0, 308, 309, 310, 21, 311, 312, 0, 23, 0, 0, 0, 313, - 314, 315, 316, 317, 26, 0, 27, 28, -312, 0, + 314, 315, 316, 317, 26, 0, 27, 319, 740, 0, 0, 320, 0, 0, 0, 0, 0, 321, 0, 0, - 1499, 0, 0, 0, 0, 0, 0, 0, 323, 324, - 1500, 0, 0, 0, 0, 0, 326, 327, 328, 0, - 0, 0, 722, 1501, 300, 8, 9, 10, 0, 12, - 535, 302, 303, 0, 304, 14, 0, 0, 0, 0, + 322, 0, 0, 0, 0, 0, 0, 0, 323, 324, + 325, 0, 0, 0, 0, 0, 326, 327, 328, 0, + 0, 0, 1579, 329, 300, 8, 9, 10, 0, 12, + 301, 302, 303, 0, 304, 14, 0, 0, 0, 0, 330, 0, 0, 0, 0, 0, 0, 0, 0, 16, 305, 17, 0, 19, 0, 306, 307, 20, 0, 308, 309, 310, 21, 311, 312, 0, 23, 0, 0, 0, - 313, 314, 315, 316, 317, 26, 0, 27, 319, 723, + 313, 314, 315, 316, 317, 26, 0, 27, 319, 0, + 0, -196, 320, 0, 0, 0, 0, 0, 321, 0, + 0, 322, 0, 0, 0, 0, 0, 0, 0, 323, + 324, 325, 0, 0, 0, 0, 0, 326, 327, 328, + 0, 0, 0, 870, 329, 300, 8, 9, 10, 0, + 12, 552, 302, 303, 0, 304, 14, 0, 0, 0, + 0, 330, 0, 0, 0, 0, 0, 0, 0, 0, + 16, 305, 17, 0, 19, 0, 306, 307, 20, 0, + 308, 309, 310, 21, 311, 312, 0, 23, 0, 0, + 0, 313, 314, 315, 316, 317, 26, 0, 27, 319, + 0, 0, 0, 320, 0, 0, 0, 0, 0, 321, + 263, 0, 322, 8, 9, 0, 0, 12, 13, 0, + 323, 324, 325, 14, 0, 0, 0, 0, 326, 327, + 328, 0, 0, 0, 0, 329, 0, 16, 0, 17, + 0, 0, 0, 0, 0, 20, 0, 264, 265, 0, + -788, 0, 330, 0, 23, 0, 266, 0, 0, 0, + 0, 0, 0, 26, 0, 130, 131, 0, 267, 0, + 0, 0, 268, 269, 270, 271, 272, 273, 274, 275, + 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, + 286, 287, 288, 0, 0, 289, 290, 291, 0, 0, + 292, 0, 959, 293, 300, 8, 9, 10, 0, 12, + 552, 302, 303, 0, 304, 14, 0, 0, 0, 294, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, + 305, 17, 0, 19, 0, 306, 307, 20, 0, 308, + 309, 310, 21, 311, 312, 0, 23, 0, 0, 0, + 313, 314, 315, 316, 317, 26, 0, 27, 319, 0, 0, 0, 320, 0, 0, 0, 0, 0, 321, 0, 0, 322, 0, 0, 0, 0, 0, 0, 0, 323, 324, 325, 0, 0, 0, 0, 0, 326, 327, 328, - 0, 0, 0, 835, 329, 300, 8, 9, 10, 0, - 12, 535, 302, 303, 0, 304, 14, 0, 0, 0, + 0, 0, 0, 961, 329, 300, 8, 9, 10, 0, + 12, 552, 302, 303, 0, 304, 14, 0, 0, 0, 0, 330, 0, 0, 0, 0, 0, 0, 0, 0, 16, 305, 17, 0, 19, 0, 306, 307, 20, 0, 308, 309, 310, 21, 311, 312, 0, 23, 0, 0, 0, 313, 314, 315, 316, 317, 26, 0, 27, 319, - 0, 0, 0, 320, -789, 0, 0, 0, 0, 321, + 0, 0, 0, 320, 0, 0, 0, 0, 0, 321, 0, 0, 322, 0, 0, 0, 0, 0, 0, 0, 323, 324, 325, 0, 0, 0, 0, 0, 326, 327, - 328, 0, 0, 0, 1580, 329, 300, 8, 9, 10, - 0, 12, 301, 302, 303, 0, 304, 14, 0, 0, + 328, 0, 0, 0, 1515, 329, 300, 8, 9, 10, + 0, 12, 552, 302, 303, 0, 304, 14, 0, 0, 0, 0, 330, 0, 0, 0, 0, 0, 0, 0, 0, 16, 305, 17, 0, 19, 0, 306, 307, 20, 0, 308, 309, 310, 21, 311, 312, 0, 23, 0, 0, 0, 313, 314, 315, 316, 317, 26, 0, 27, - 319, 0, 0, -196, 320, 0, 0, 0, 0, 0, - 321, 0, 0, 322, 0, 0, 0, 0, 0, 0, - 0, 323, 324, 325, 0, 0, 0, 0, 0, 326, - 327, 328, 0, 0, 0, 835, 329, 300, 8, 9, - 10, 0, 12, 535, 302, 303, 0, 304, 14, 0, - 0, 0, 0, 330, 0, 0, 0, 0, 0, 0, - 0, 0, 16, 305, 17, 0, 19, 0, 306, 307, - 20, 0, 308, 309, 310, 21, 311, 312, 0, 23, - 0, 0, 0, 313, 314, 315, 316, 317, 26, 0, - 27, 319, 0, 0, 0, 320, 0, 0, 0, 0, - 0, 321, 263, 0, 322, 8, 9, 0, 0, 12, - 13, 0, 323, 324, 325, 14, 0, 0, 0, 0, - 326, 327, 328, 0, 0, 0, 0, 329, 0, 16, - 0, 17, 0, 0, 0, 0, 0, 20, 0, 264, - 265, 0, -789, 0, 330, 0, 23, 0, 266, 0, - 0, 0, 0, 0, 0, 26, 0, 130, 131, 0, - 267, 0, 0, 0, 268, 269, 270, 271, 272, 273, - 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, - 284, 285, 286, 287, 288, 0, 0, 289, 290, 291, - 0, 0, 292, 0, 924, 293, 300, 8, 9, 10, - 0, 12, 535, 302, 303, 0, 304, 14, 0, 0, - 0, 294, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 16, 305, 17, 0, 19, 0, 306, 307, 20, - 0, 308, 309, 310, 21, 311, 312, 0, 23, 0, - 0, 0, 313, 314, 315, 316, 317, 26, 0, 27, 319, 0, 0, 0, 320, 0, 0, 0, 0, 0, 321, 0, 0, 322, 0, 0, 0, 0, 0, 0, 0, 323, 324, 325, 0, 0, 0, 0, 0, 326, - 327, 328, 0, 0, 0, 926, 329, 300, 8, 9, - 10, 0, 12, 535, 302, 303, 0, 304, 14, 0, - 0, 0, 0, 330, 0, 0, 0, 0, 0, 0, - 0, 0, 16, 305, 17, 0, 19, 0, 306, 307, - 20, 0, 308, 309, 310, 21, 311, 312, 0, 23, - 0, 0, 0, 313, 314, 315, 316, 317, 26, 0, - 27, 319, 0, 0, 0, 320, 0, 0, 0, 0, - 0, 321, 0, 0, 322, 0, 0, 0, 0, 0, - 0, 0, 323, 324, 325, 0, 0, 0, 0, 0, - 326, 327, 328, 0, 0, 0, 1512, 329, 300, 8, - 9, 10, 0, 12, 535, 302, 303, 0, 304, 14, - 0, 0, 0, 0, 330, 0, 0, 0, 0, 0, - 0, 0, 0, 16, 305, 17, 0, 19, 0, 306, - 307, 20, 0, 308, 309, 310, 21, 311, 312, 0, - 23, 0, 0, 0, 313, 314, 315, 316, 317, 26, - 0, 27, 319, 0, 0, 0, 320, 0, 0, 0, - 0, 0, 321, 0, 0, 322, 0, 0, 0, 0, - 0, 0, 0, 323, 324, 325, 0, 0, 0, 0, - 0, 326, 327, 328, 300, 8, 9, 10, 329, 12, - 535, 302, 303, 0, 304, 14, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 330, 0, 0, 0, 16, - 305, 17, 0, 19, 0, 306, 307, 20, 0, 308, - 309, 310, 21, 311, 312, 0, 23, 0, 0, 0, - 313, 314, 315, 316, 317, 26, 0, 27, 319, 0, - 0, 0, 320, 0, 0, 0, 0, 0, 321, 0, - 764, 322, 7, 8, 765, 10, 167, 12, 13, 323, - 324, 325, 0, 14, 0, 0, 0, 326, 327, 328, - 0, 0, 0, 0, 329, 0, 0, 16, 0, 17, - 18, 19, 0, 0, 0, 20, -528, 0, 0, 0, - 21, 330, 874, 0, 23, 766, 0, 168, 0, 0, - 0, 0, 0, 26, 0, 27, 28, 0, 0, 767, - 0, 768, 0, 0, 0, 0, 0, 0, 0, 30, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, - 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, - 0, 0, 33, 0, 0, 1285, 1286, 1287, 10, 167, - 12, 301, 302, 303, 0, 304, 14, 1288, -528, 1289, - 1290, 1291, 1292, 1293, 1294, 1295, 1296, 1297, 1298, 15, - 16, 305, 17, 18, 19, 0, 306, 307, 20, 0, - 308, 309, 310, 21, 311, 312, 1299, 23, 1300, 0, - 0, 313, 314, 315, 316, 317, 26, 0, 1301, 319, - 719, 0, 1302, 320, 0, 0, 0, 0, 0, 321, - 0, 0, 322, 0, 0, 0, 0, 0, 0, 0, - 323, 324, 325, 0, 0, 0, 0, 0, 326, 327, - 328, 0, 0, 0, 0, 329, 0, 1303, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1433, 330, 1285, 1286, 1287, 10, 167, 12, 301, - 302, 303, 0, 304, 14, 1288, 0, 1289, 1290, 1291, - 1292, 1293, 1294, 1295, 1296, 1297, 1298, 15, 16, 305, + 327, 328, 300, 8, 9, 10, 329, 12, 552, 302, + 303, 0, 304, 14, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 330, 0, 0, 0, 16, 305, 17, + 0, 19, 0, 306, 307, 20, 0, 308, 309, 310, + 21, 311, 312, 0, 23, 0, 0, 0, 313, 314, + 315, 316, 317, 26, 0, 27, 319, 0, 0, 0, + 320, 0, 0, 0, 0, 0, 321, 0, 506, 322, + 7, 8, 507, 10, 167, 12, 13, 323, 324, 325, + 0, 14, 0, 0, 0, 326, 327, 328, 0, 0, + 0, 0, 329, 0, 0, 16, 0, 17, 18, 19, + 0, 0, 0, 20, -528, 0, 0, 0, 21, 330, + 909, 0, 23, 508, 0, 168, 0, 0, 0, 0, + 0, 26, 0, 27, 28, 0, 0, 509, 0, 510, + 0, 0, 0, 0, 0, 0, 0, 30, 506, 0, + 7, 8, 507, 10, 167, 12, 13, 31, 0, 0, + 0, 14, 0, 0, 0, 32, 0, 0, 0, 0, + 33, 0, 0, 0, 0, 16, 0, 17, 18, 19, + 0, 0, 0, 20, -527, 0, -528, 0, 21, 0, + 0, 0, 23, 508, 0, 168, 0, 0, 0, 0, + 0, 26, 0, 27, 28, 0, 0, 509, 0, 510, + 0, 0, 0, 0, 0, 0, 0, 30, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 31, 0, 0, + 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, + 33, 0, 0, 1308, 1309, 1310, 10, 167, 12, 301, + 302, 303, 0, 304, 14, 1311, -527, 1312, 1313, 1314, + 1315, 1316, 1317, 1318, 1319, 1320, 1321, 15, 16, 305, 17, 18, 19, 0, 306, 307, 20, 0, 308, 309, - 310, 21, 311, 312, 1299, 23, 1300, 0, 0, 313, - 314, 315, 316, 317, 26, 0, 1301, 319, 719, 0, - 1302, 320, 0, 0, 0, 0, 0, 321, 0, 0, + 310, 21, 311, 312, 1322, 23, 1323, 0, 0, 313, + 314, 315, 316, 317, 26, 0, 1324, 319, 736, 0, + 1325, 320, 0, 0, 0, 0, 0, 321, 0, 0, 322, 0, 0, 0, 0, 0, 0, 0, 323, 324, 325, 0, 0, 0, 0, 0, 326, 327, 328, 0, - 0, 0, 0, 329, 0, 1303, 0, 1285, 1286, 1287, - 10, 167, 12, 301, 302, 303, 0, 304, 14, 1288, - 330, 1289, 1290, 1291, 1292, 1293, 1294, 1295, 1296, 1297, - 1298, 15, 16, 305, 17, 18, 19, 0, 306, 307, - 20, 0, 308, 309, 310, 21, 311, 312, 1299, 23, - 1300, 0, 0, 313, 314, 315, 316, 317, 26, 0, - 1301, 319, 1557, 0, 1302, 320, 0, 0, 0, 0, - 0, 321, 0, 0, 322, 0, 0, 0, 0, 0, - 0, 0, 323, 324, 325, 0, 0, 0, 0, 0, - 326, 327, 328, 0, 0, 0, 0, 329, 0, 1303, - 0, 1285, 1286, 1287, 10, 167, 12, 301, 302, 303, - 0, 304, 14, 1288, 330, 1289, 1290, 1291, 1292, 1293, - 1294, 1295, 1296, 1297, 1298, 15, 16, 305, 17, 18, + 0, 0, 0, 329, 0, 1326, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1445, + 330, 1308, 1309, 1310, 10, 167, 12, 301, 302, 303, + 0, 304, 14, 1311, 0, 1312, 1313, 1314, 1315, 1316, + 1317, 1318, 1319, 1320, 1321, 15, 16, 305, 17, 18, 19, 0, 306, 307, 20, 0, 308, 309, 310, 21, - 311, 312, 1299, 23, 1300, 0, 0, 313, 314, 315, - 316, 317, 26, 0, 1301, 319, 0, 0, 1302, 320, + 311, 312, 1322, 23, 1323, 0, 0, 313, 314, 315, + 316, 317, 26, 0, 1324, 319, 736, 0, 1325, 320, 0, 0, 0, 0, 0, 321, 0, 0, 322, 0, 0, 0, 0, 0, 0, 0, 323, 324, 325, 0, 0, 0, 0, 0, 326, 327, 328, 0, 0, 0, - 0, 329, 0, 1303, 300, 8, 9, 10, 167, 12, - 301, 302, 303, 732, 304, 14, 0, 0, 330, 0, + 0, 329, 0, 1326, 0, 1308, 1309, 1310, 10, 167, + 12, 301, 302, 303, 0, 304, 14, 1311, 330, 1312, + 1313, 1314, 1315, 1316, 1317, 1318, 1319, 1320, 1321, 15, + 16, 305, 17, 18, 19, 0, 306, 307, 20, 0, + 308, 309, 310, 21, 311, 312, 1322, 23, 1323, 0, + 0, 313, 314, 315, 316, 317, 26, 0, 1324, 319, + 1556, 0, 1325, 320, 0, 0, 0, 0, 0, 321, + 0, 0, 322, 0, 0, 0, 0, 0, 0, 0, + 323, 324, 325, 0, 0, 0, 0, 0, 326, 327, + 328, 0, 0, 0, 0, 329, 0, 1326, 0, 1308, + 1309, 1310, 10, 167, 12, 301, 302, 303, 0, 304, + 14, 1311, 330, 1312, 1313, 1314, 1315, 1316, 1317, 1318, + 1319, 1320, 1321, 15, 16, 305, 17, 18, 19, 0, + 306, 307, 20, 0, 308, 309, 310, 21, 311, 312, + 1322, 23, 1323, 0, 0, 313, 314, 315, 316, 317, + 26, 0, 1324, 319, 0, 0, 1325, 320, 0, 0, + 0, 0, 0, 321, 0, 0, 322, 0, 0, 0, + 0, 0, 0, 0, 323, 324, 325, 0, 0, 0, + 0, 0, 326, 327, 328, 0, 0, 0, 0, 329, + 0, 1326, 300, 8, 9, 10, 167, 12, 301, 302, + 303, 749, 304, 14, 0, 0, 330, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 16, 305, 17, + 18, 19, 0, 306, 307, 20, 0, 308, 309, 310, + 21, 311, 312, 0, 23, 0, 636, 0, 313, 314, + 315, 316, 317, 26, 0, 27, 319, 0, 0, 0, + 320, 0, 0, 0, 0, 0, 321, 0, 0, 937, + 0, 0, 0, 0, 0, 0, 0, 323, 324, 938, + 0, 0, 0, 0, 0, 326, 327, 328, 0, 639, + 0, 0, 939, 641, 7, 8, 9, 10, 167, 12, + 301, 302, 303, 749, 304, 14, 0, 0, 0, 330, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 305, 17, 18, 19, 0, 306, 307, 20, 0, 308, - 309, 310, 21, 311, 312, 0, 23, 0, 619, 0, - 313, 314, 315, 316, 317, 26, 0, 27, 319, 0, + 309, 310, 21, 311, 312, 0, 23, 0, 636, 0, + 313, 314, 315, 316, 317, 26, 0, 27, 28, 0, 0, 0, 320, 0, 0, 0, 0, 0, 321, 0, - 0, 902, 0, 0, 0, 0, 0, 0, 0, 323, - 324, 903, 0, 0, 0, 0, 0, 326, 327, 328, - 0, 622, 0, 0, 904, 624, 7, 8, 9, 10, - 167, 12, 301, 302, 303, 732, 304, 14, 0, 0, + 0, 1201, 0, 0, 0, 0, 0, 0, 0, 323, + 324, 1202, 0, 0, 0, 0, 0, 326, 327, 328, + 0, 639, 0, 0, 1203, 641, 300, 8, 9, 10, + 0, 12, 301, 302, 303, 0, 304, 14, 0, 0, 0, 330, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 305, 17, 18, 19, 0, 306, 307, 20, 0, 308, 309, 310, 21, 311, 312, 0, 23, 0, - 619, 0, 313, 314, 315, 316, 317, 26, 0, 27, - 28, 0, 0, 0, 320, 0, 0, 0, 0, 0, - 321, 0, 0, 1184, 0, 0, 0, 0, 0, 0, - 0, 323, 324, 1185, 0, 0, 0, 0, 0, 326, - 327, 328, 0, 622, 0, 0, 1186, 624, 7, 8, + 636, 0, 313, 314, 315, 316, 317, 26, 0, 27, + 319, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 321, 0, 0, 937, 0, 0, 0, 0, 0, 0, + 0, 323, 324, 938, 0, 0, 0, 0, 0, 326, + 327, 328, 0, 639, 0, 0, 939, 641, 7, 8, 9, 10, 0, 12, 301, 302, 303, 0, 304, 14, 0, 0, 0, 330, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 305, 17, 18, 19, 0, 306, 307, 20, 0, 308, 309, 310, 21, 311, 312, 0, - 23, 0, 619, 0, 313, 314, 315, 316, 317, 26, + 23, 0, 636, 0, 313, 314, 315, 316, 317, 26, 0, 27, 28, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 321, 0, 0, 1184, 0, 0, 0, 0, - 0, 0, 0, 323, 324, 1185, 0, 0, 0, 0, - 0, 326, 327, 328, 0, 622, 0, 0, 1186, 624, - 300, 8, 9, 10, 0, 12, 535, 302, 303, 0, + 0, 0, 321, 0, 0, 1201, 0, 0, 0, 0, + 0, 0, 0, 323, 324, 1202, 0, 0, 0, 0, + 0, 326, 327, 328, 0, 639, 0, 0, 1203, 641, + 300, 8, 9, 10, 0, 12, 552, 302, 303, 0, 304, 14, 0, 0, 0, 330, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 305, 17, 18, 19, 0, 306, 307, 20, 0, 308, 309, 310, 21, 311, 312, 0, 23, 0, 0, 0, 313, 314, 315, 316, 317, 26, 0, 27, 319, 0, 0, 0, 320, 0, - 0, 0, 0, 0, 321, 0, 0, 554, 0, 0, - 0, 0, 0, 0, 0, 323, 324, 555, 0, 0, + 0, 0, 0, 0, 321, 0, 0, 571, 0, 0, + 0, 0, 0, 0, 0, 323, 324, 572, 0, 0, 0, 0, 0, 326, 327, 328, 300, 8, 9, 10, - 556, 12, 535, 302, 303, 0, 304, 14, 0, 0, + 573, 12, 552, 302, 303, 0, 304, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 330, 0, 0, 0, 16, 305, 17, 0, 19, 0, 306, 307, 20, 0, 308, 309, 310, 21, 311, 312, 0, 23, 0, 0, 0, 313, 314, 315, 316, 317, 26, 0, 27, - 319, 0, 0, 1406, 320, 0, 0, 0, 0, 0, + 319, 0, 0, 1418, 320, 0, 0, 0, 0, 0, 321, 0, 0, 322, 0, 0, 0, 0, 0, 0, 0, 323, 324, 325, 0, 0, 0, 0, 0, 326, 327, 328, 0, 0, 0, 0, 329, 300, 8, 9, @@ -2338,16 +2384,16 @@ static const short yytable[] = { 59, 27, 319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 321, 0, 0, 322, 0, 0, 0, 0, 0, 0, 0, 323, 324, 325, 0, 0, 0, 0, 0, - 326, 327, 328, 7, 8, 9, 10, 329, 12, 535, + 326, 327, 328, 7, 8, 9, 10, 329, 12, 552, 302, 303, 0, 304, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 330, 0, 0, 0, 16, 305, 17, 18, 19, 0, 306, 307, 20, 0, 308, 309, 310, 21, 311, 312, 0, 23, 0, 0, 0, 313, 314, 315, 316, 317, 26, 0, 27, 28, 0, 0, 0, 320, 0, 0, 0, 0, 0, 321, 0, 0, - 1499, 0, 0, 0, 0, 0, 0, 0, 323, 324, - 1500, 0, 0, 0, 0, 0, 326, 327, 328, 300, - 8, 9, 10, 1501, 12, 301, 302, 303, 0, 304, + 1505, 0, 0, 0, 0, 0, 0, 0, 323, 324, + 1506, 0, 0, 0, 0, 0, 326, 327, 328, 300, + 8, 9, 10, 1507, 12, 301, 302, 303, 0, 304, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 330, 0, 0, 0, 16, 305, 17, 0, 19, 0, 306, 307, 20, 0, 308, 309, 310, 21, 311, 312, @@ -2364,7 +2410,7 @@ static const short yytable[] = { 59, 0, 0, 0, 320, 0, 0, 0, 0, 0, 321, 0, 0, 322, 0, 0, 0, 0, 0, 0, 0, 323, 324, 325, 0, 0, 0, 0, 0, 326, 327, - 328, 300, 8, 9, 10, 329, 12, 535, 302, 303, + 328, 300, 8, 9, 10, 329, 12, 552, 302, 303, 0, 304, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 330, 0, 0, 0, 16, 305, 17, 0, 19, 0, 306, 307, 20, 0, 308, 309, 310, 21, @@ -2373,15 +2419,15 @@ static const short yytable[] = { 59, 0, 0, 0, 0, 0, 321, 0, 0, 322, 0, 0, 0, 0, 0, 0, 0, 323, 324, 325, 0, 0, 0, 0, 0, 326, 327, 328, 300, 8, 9, - 10, 329, 12, 535, 302, 303, 0, 304, 14, 0, + 10, 329, 12, 552, 302, 303, 0, 304, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 330, 0, 0, 0, 16, 305, 17, 0, 19, 0, 306, 307, 20, 0, 308, 309, 310, 21, 311, 312, 0, 23, 0, 0, 0, 313, 314, 315, 316, 317, 26, 0, - 27, 319, 568, 0, 0, 0, 0, 0, 0, 0, + 27, 319, 585, 0, 0, 0, 0, 0, 0, 0, 0, 321, 0, 0, 322, 0, 0, 0, 0, 0, 0, 0, 323, 324, 325, 0, 0, 0, 0, 0, - 326, 327, 328, 300, 8, 9, 10, 569, 12, 535, + 326, 327, 328, 300, 8, 9, 10, 586, 12, 552, 302, 303, 0, 304, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 330, 0, 0, 0, 16, 305, 17, 0, 19, 0, 306, 307, 20, 0, 308, 309, @@ -2390,16 +2436,16 @@ static const short yytable[] = { 59, 0, 0, 0, 0, 0, 0, 0, 321, 0, 0, 322, 0, 0, 0, 0, 0, 0, 0, 323, 324, 325, 0, 0, 0, 0, 0, 326, 327, 328, 0, - 0, 0, 0, 329, 607, 300, 8, 9, 10, 0, - 12, 535, 302, 303, 0, 304, 14, 0, 0, 0, + 0, 0, 0, 329, 624, 300, 8, 9, 10, 0, + 12, 552, 302, 303, 0, 304, 14, 0, 0, 0, 330, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 305, 17, 18, 19, 0, 306, 307, 20, 0, 308, 309, 310, 21, 311, 312, 0, 23, 0, 0, 0, 313, 314, 315, 316, 317, 26, 0, 27, 319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 321, - 0, 0, 554, 0, 0, 0, 0, 0, 0, 0, - 323, 324, 555, 0, 0, 0, 0, 0, 326, 327, - 328, 1144, 8, 9, 10, 556, 12, 535, 302, 303, + 0, 0, 571, 0, 0, 0, 0, 0, 0, 0, + 323, 324, 572, 0, 0, 0, 0, 0, 326, 327, + 328, 1161, 8, 9, 10, 573, 12, 552, 302, 303, 0, 304, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 330, 0, 0, 0, 16, 305, 17, 0, 19, 0, 306, 307, 20, 0, 308, 309, 310, 21, @@ -2414,9 +2460,9 @@ static const short yytable[] = { 59, 20, 0, 308, 309, 310, 21, 311, 312, 0, 23, 0, 0, 0, 313, 314, 315, 316, 317, 26, 0, 27, 28, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 321, 0, 0, 1499, 0, 0, 0, 0, 0, - 0, 0, 323, 324, 1500, 0, 0, 0, 0, 0, - 326, 327, 328, 300, 8, 9, 10, 1501, 12, 535, + 0, 321, 0, 0, 1505, 0, 0, 0, 0, 0, + 0, 0, 323, 324, 1506, 0, 0, 0, 0, 0, + 326, 327, 328, 300, 8, 9, 10, 1507, 12, 552, 302, 303, 0, 304, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 330, 0, 0, 0, 16, 305, 17, 0, 19, 0, 306, 307, 20, 0, 308, 309, @@ -2425,7 +2471,7 @@ static const short yytable[] = { 59, 0, 0, 0, 0, 0, 0, 0, 321, 0, 0, 322, 0, 0, 0, 0, 0, 0, 0, 323, 324, 325, 0, 0, 0, 0, 0, 326, 327, 328, 300, - 8, 9, 10, 536, 12, 535, 302, 303, 0, 304, + 8, 9, 10, 553, 12, 552, 302, 303, 0, 304, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 330, 0, 0, 0, 16, 305, 17, 0, 19, 0, 306, 307, 20, 0, 308, 309, 310, 21, 311, 312, @@ -2433,815 +2479,805 @@ static const short yytable[] = { 59, 26, 0, 27, 319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 321, 0, 0, 322, 0, 0, 0, 0, 0, 0, 0, 323, 324, 325, 0, 0, 0, - 0, 0, 326, 327, 328, 300, 8, 9, 10, 539, - 12, 535, 302, 303, 0, 304, 14, 0, 0, 0, + 0, 0, 326, 327, 328, 300, 8, 9, 10, 556, + 12, 552, 302, 303, 0, 304, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 330, 0, 0, 0, 16, 305, 17, 0, 19, 0, 306, 307, 20, 0, 308, 309, 310, 21, 311, 312, 0, 23, 0, 0, 0, 313, 314, 315, 316, 317, 26, 0, 27, 319, 0, 0, 0, 0, 0, 0, 0, 0, 0, 321, - 0, 6, 322, 7, 8, 9, 10, 11, 12, 13, - 323, 324, 325, 0, 14, 0, 0, 0, 326, 327, - 328, 0, 0, 0, 0, 329, 0, 15, 16, 0, - 17, 18, 19, 0, 0, 0, 20, 0, 0, 0, - 0, 21, 330, 0, 22, 23, 24, 0, 25, 0, - 0, 0, 0, 0, 26, 0, 27, 28, 0, 0, - 29, 0, 7, 8, 9, 10, 0, 0, 246, 0, - 30, 0, 0, 0, 0, 0, 0, 0, 0, 166, - 31, 7, 8, 9, 10, 167, 12, 13, 32, 0, - 18, 0, 14, 33, 0, 0, 0, 0, 34, 0, - 21, 0, 0, 0, 0, 0, 16, 0, 17, 18, - 19, 0, 0, 26, 20, 27, 28, 0, 0, 21, - 0, 0, 0, 23, 0, 0, 168, 0, 0, 193, - 0, 0, 26, 0, 27, 28, 0, 0, 764, 194, - 7, 8, 765, 10, 167, 12, 13, 32, 30, 0, - 0, 14, 195, 0, 0, 0, 0, 0, 31, 0, - 0, 0, 0, 0, 0, 16, 32, 17, 18, 19, - 0, 33, 0, 20, 0, 0, 34, 0, 21, 0, - 0, 0, 23, 766, 0, 168, 0, 0, 0, 0, - 0, 26, 0, 27, 28, 0, 0, 767, 0, 768, - 0, 0, 0, 0, 0, 0, 6, 30, 7, 8, - 9, 10, 11, 12, 13, 0, 0, 31, 0, 14, - 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, - 33, 0, 0, 16, 0, 17, 18, 0, 0, 0, - 0, 20, 0, 0, 0, 0, 21, 0, 0, 0, - 23, 0, 0, 438, 0, 0, 0, 0, 0, 26, - 0, 27, 28, 0, 0, 29, 0, -387, 8, 9, - -387, -387, 12, 246, 0, 30, 0, 0, 14, 0, - 0, 0, 0, 0, 0, 31, 0, 0, 0, 0, - 0, 0, 16, 32, 17, -387, 0, 0, 33, 0, - 20, 0, 0, 0, 0, -387, 0, 0, 0, 23, - 0, 619, 0, 0, 0, 0, 0, 0, 26, 0, - 130, 131, 7, 8, 9, 10, 205, 12, 206, 0, - 0, 0, 0, 14, 620, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 621, 0, 0, 16, 0, 17, - 18, 0, -387, 0, 622, 20, 0, 623, 624, 0, - 21, 0, 0, 0, 23, 0, 0, 0, 0, 0, - 0, 0, 0, 26, 0, 27, 28, 0, 0, 207, - 0, 1037, 8, 765, 10, 205, 12, 206, 0, 30, - 0, 0, 14, 0, 0, 0, 0, 0, 0, 31, - 0, 0, 0, 0, 0, 0, 16, 32, 17, 18, - 0, 0, 33, 0, 20, 0, 0, 0, 0, 21, - 0, 0, 0, 23, 0, 0, 0, 0, 0, 0, - 0, 0, 26, 0, 27, 28, 0, 0, 0, 0, - 1039, 0, 0, 0, 0, 0, 0, 0, 30, 7, - 8, 9, 10, 205, 12, 206, 0, 0, 31, 0, - 14, 0, 0, 0, 0, 0, 32, 0, 0, 0, - 0, 33, 0, 0, 16, 0, 17, 18, 0, 0, - 0, 0, 20, 0, 0, 0, 0, 21, 0, 0, - 0, 23, 0, 0, 0, 0, 0, 0, 0, 0, - 26, 0, 27, 28, 0, 0, 1423, 0, 7, 8, - 9, 10, 167, 12, 13, 0, 30, 0, 0, 14, - 0, 0, 0, 0, 0, 0, 31, 0, 0, 0, - 0, 0, 0, 16, 32, 17, 18, 0, 0, 33, - 0, 20, 0, 0, 0, 0, 21, 0, 0, 0, - 23, 0, 0, 0, 0, 0, 0, 0, 0, 26, - 0, 27, 28, 7, 8, 9, 10, 205, 12, 206, - 0, 0, 0, 0, 14, 30, 0, 0, 0, 0, - 7, 8, 9, 10, 0, 31, 13, 0, 16, 0, - 17, 18, 0, 32, 0, 0, 20, 0, 33, 0, - 0, 21, 0, 0, 0, 23, 0, 0, 18, 0, - 0, 0, 0, 0, 26, 0, 27, 28, 21, 0, - 0, 7, 8, 9, 10, 0, 0, 518, 0, 0, - 30, 26, 0, 27, 28, 0, 0, 0, 0, 0, - 31, 0, 0, 0, 0, 0, 0, 474, 32, 18, - 0, 0, 0, 33, 0, 0, 0, 475, 0, 21, - 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, - 476, 0, 26, 0, 27, 28, 0, 0, 0, 0, - 18, 0, 0, 0, 0, 0, 0, 0, 193, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 194, 0, - 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, - 0, 195, 571, 572, 573, 574, 575, 576, 577, 578, - 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, - 589, 590, 591, 592, 571, 572, 573, 574, 575, 576, - 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, - 587, 588, 589, 590, 591, 592, 571, 572, 573, 574, - 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, - 585, 586, 587, 588, 589, 590, 591, 592, 0, 0, - 0, 0, 1238, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 660, 0, 0, - 1547, 571, 572, 573, 574, 575, 576, 577, 578, 579, - 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, - 590, 591, 592, 1565, 571, 572, 573, 574, 575, 576, - 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, - 587, 588, 589, 590, 591, 592, 571, 572, 573, 574, - 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, - 585, 586, 587, 588, 589, 590, 591, 592, 571, 572, - 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, - 0, 584, 585, 586, 587, 588, 589, 590, 591, 592, - 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, - 585, 586, 587, 588, 589, 590, 591, 592, 576, 577, - 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, - 588, 589, 590, 591, 592, 578, 579, 580, 581, 582, - 583, 584, 585, 586, 587, 588, 589, 590, 591, 592 + 0, 0, 322, 0, 0, 0, 0, 0, 0, 0, + 323, 324, 325, 0, 0, 0, 0, 0, 326, 327, + 328, 0, 0, 8, 9, 329, 167, 12, 13, 0, + 0, 1550, 0, 14, 0, 0, 0, 0, 0, 0, + 0, 0, 330, 0, 0, 0, 0, 16, 0, 17, + 18, 0, 0, 0, 0, 20, 0, 0, 0, 0, + 0, 0, 0, 0, 23, 0, 0, 0, 0, 0, + 0, 0, 0, 26, 0, 130, 131, 588, 589, 590, + 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, + 601, 602, 603, 604, 605, 606, 607, 608, 609, 588, + 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, + 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, + 609, 0, 0, 0, 0, 1261, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 677, 0, 0, 1546, 588, 589, 590, 591, 592, 593, + 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, + 604, 605, 606, 607, 608, 609, 1564, 588, 589, 590, + 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, + 601, 602, 603, 604, 605, 606, 607, 608, 609, 588, + 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, + 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, + 609, 588, 589, 590, 591, 592, 593, 594, 595, 596, + 597, 598, 599, 0, 601, 602, 603, 604, 605, 606, + 607, 608, 609 }; static const short yycheck[] = { 4, - 174, 149, 150, 176, 23, 209, 55, 161, 175, 4, - 349, 126, 717, 402, 80, 455, 156, 14, 4, 402, - 251, 90, 4, 92, 46, 42, 482, 355, 355, 566, - 35, 134, 80, 304, 305, 42, 863, 42, 84, 623, - 35, 373, 59, 247, 133, 134, 630, 699, 716, 35, - 4, 1304, 57, 35, 76, 402, 42, 42, 603, 646, - 42, 503, 692, 787, 1481, 1388, 337, 72, 137, 793, - 124, 62, 217, 218, 54, 133, 30, 31, 144, 84, - 42, 35, 460, 88, 4, 90, 83, 92, 42, 440, - 209, 769, 296, 771, 1482, 763, 42, 11, 1504, 218, - 778, 11, 107, 108, 60, 4, 1480, 11, 47, 106, - 33, 47, 0, 700, 7, 35, 12, 59, 1524, 490, - 560, 37, 42, 12, 355, 33, 175, 54, 356, 357, - 84, 136, 137, 0, 139, 62, 35, 203, 509, 1314, - 1, 4, 47, 42, 37, 349, 1321, 74, 62, 140, - 9, 1525, 169, 109, 93, 94, 1, 93, 165, 74, - 165, 1, 169, 59, 169, 156, 62, 109, 624, 108, - 59, 176, 35, 62, 1562, 155, 900, 1583, 59, 42, - 408, 409, 136, 169, 169, 84, 109, 169, 93, 94, - 1607, 213, 209, 109, 108, 149, 150, 58, 108, 538, - 217, 218, 61, 108, 108, 33, 57, 169, 4, 5, - 47, 165, 108, 58, 262, 169, 136, 62, 58, 62, - 200, 212, 62, 169, 74, 54, 48, 108, 1481, 220, - 247, 4, 4, 62, 47, 25, 47, 136, 1528, 193, - 194, 149, 150, 151, 1567, 165, 237, 47, 1622, 169, - 95, 248, 4, 47, 93, 95, 93, 346, 54, 93, - 56, 57, 35, 35, 916, 108, 165, 919, 58, 60, - 169, 108, 62, 136, 70, 3, 4, 5, 718, 296, - 93, 94, 93, 35, 80, 136, 1576, 195, 346, 358, - 393, 93, 297, 93, 448, 108, 342, 108, 94, 93, - 1024, 25, 165, 27, 74, 95, 169, 58, 960, 961, - 1485, 941, 1036, 59, 306, 307, 643, 862, 109, 74, - 904, 149, 150, 151, 329, 176, 474, 475, 56, 57, - 322, 385, 349, 325, 58, 682, 328, 342, 62, 331, - 672, 486, 487, 335, 59, 350, 1070, 98, 1072, 494, - 739, 343, 80, 358, 359, 404, 739, 60, 355, 1534, - 711, 712, 108, 508, 948, 4, 5, 195, 487, 4, - 5, 95, 62, 93, 60, 59, 107, 25, 54, 27, - 12, 612, 527, 1061, 74, 47, 62, 47, 342, 406, - 47, 60, 54, 108, 182, 27, 735, 402, 74, 31, - 405, 25, 3, 4, 5, 359, 109, 64, 945, 1584, - 58, 995, 74, 48, 62, 47, 402, 56, 57, 647, - 1247, 56, 57, 109, 108, 442, 1013, 59, 60, 498, - 62, 93, 64, 93, 27, 442, 93, 442, 31, 359, - 1209, 1210, 25, 342, 27, 901, 47, 95, 402, 25, - 60, 27, 47, 54, 1223, 56, 57, 442, 506, 450, - 359, 93, 94, 468, 533, 4, 5, 60, 58, 486, - 487, 64, 62, 54, 496, 58, 108, 494, 38, 62, - 4, 5, 58, 1135, 1136, 9, 62, 865, 442, 47, - 31, 508, 93, 498, 54, 59, 359, 58, 93, 94, - 1168, 506, 493, 402, 74, 44, 64, 54, 359, 47, - 527, 75, 95, 77, 468, 54, 109, 56, 57, 95, - 474, 475, 442, 54, 506, 47, 58, 74, 533, 59, - 54, 536, 56, 57, 539, 93, 710, 1205, 543, 544, - 545, 546, 547, 442, 984, 75, 70, 47, 8, 9, - 1377, 556, 506, 942, 14, 93, 80, 47, 604, 942, - 109, 566, 554, 555, 569, 47, 474, 475, 476, 468, - 673, 93, 1014, 1157, 1016, 803, 36, 680, 1020, 442, - 1349, 54, 910, 910, 12, 45, 506, 59, 60, 1358, - 1359, 680, 1361, 93, 94, 942, 54, 54, 47, 604, - 649, 74, 1186, 93, 94, 47, 675, 506, 812, 93, - 54, 93, 757, 47, 47, 64, 74, 74, 623, 3, - 4, 5, 6, 54, 480, 630, 94, 3, 4, 5, - 74, 59, 488, 650, 62, 906, 64, 634, 54, 688, - 54, 690, 691, 506, 93, 94, 474, 475, 476, 47, - 604, 93, 47, 1109, 47, 506, 47, 41, 74, 93, - 93, 108, 681, 54, 48, 62, 620, 621, 1336, 623, - 675, 54, 56, 57, 691, 62, 630, 74, 54, 910, - 56, 57, 58, 74, 689, 75, 735, 74, 693, 62, - 3, 4, 5, 6, 109, 93, 80, 716, 93, 47, - 93, 74, 93, 47, 88, 604, 47, 935, 108, 47, - 62, 1089, 1090, 54, 33, 800, 801, 802, 735, 788, - 789, 769, 791, 771, 623, 4, 5, 776, 41, 777, - 778, 630, 58, 74, 739, 48, 784, 108, 64, 108, - 757, 1510, 1511, 56, 57, 93, 3, 4, 5, 93, - 772, 773, 93, 4, 5, 93, 108, 11, 9, 781, - 1202, 1203, 1204, 98, 769, 1104, 771, 80, 908, 48, - 8, 9, 777, 778, 60, 88, 14, 56, 57, 784, - 3, 47, 787, 788, 789, 739, 791, 769, 793, 771, - 107, 108, 4, 5, 968, 812, 778, 54, 36, 56, - 57, 80, 784, 54, 1182, 56, 57, 45, 93, 47, - 4, 5, 60, 1191, 1192, 769, 111, 771, 1196, 70, - 86, 87, 4, 5, 778, 91, 92, 93, 94, 80, - 784, 150, 151, 787, 59, 60, 1064, 1065, 1066, 793, - 739, 74, 54, 94, 56, 57, 62, 1105, 1106, 769, - 1108, 771, 31, 94, 48, 93, 861, 75, 778, 77, - 1238, 866, 56, 57, 784, 1570, 48, 94, 983, 62, - 769, 44, 771, 93, 56, 57, 195, 4, 5, 778, - 111, 54, 874, 93, 57, 784, 80, 953, 787, 894, - 59, 60, 4, 5, 793, 900, 54, 74, 80, 904, - 3, 4, 5, 6, 62, 59, 769, 74, 771, 74, - 902, 903, 74, 910, 54, 778, 74, 908, 769, 11, - 771, 784, 62, 59, 60, 776, 777, 778, 109, 56, - 57, 59, 3, 784, 74, 6, 108, 942, 41, 944, - 945, 74, 54, 948, 56, 57, 900, 27, 902, 903, - 904, 31, 108, 56, 57, 1333, 942, 108, 70, 1399, - 31, 59, 141, 54, 108, 27, 64, 146, 80, 31, - 41, 62, 760, 54, 1313, 1415, 74, 75, 1027, 59, - 60, 74, 1048, 74, 64, 56, 57, 74, 942, 108, - 995, 109, 946, 947, 948, 783, 1374, 59, 60, 70, - 1048, 900, 109, 1008, 108, 904, 54, 1155, 1156, 80, - 329, 111, 329, 1061, 62, 194, 111, 88, 1040, 1024, - 59, 60, 93, 27, 1046, 1047, 74, 74, 1050, 1051, - 1258, 1036, 1054, 4, 5, 111, 1184, 1185, 4, 5, - 948, 995, 59, 942, 1113, 3, 4, 5, 6, 948, - 83, 84, 3, 4, 5, 74, 1061, 74, 75, 54, - 77, 59, 60, 74, 1504, 1070, 111, 1072, 59, 60, - 1024, 80, 81, 82, 83, 84, 108, 48, 108, 1061, - 259, 47, 1036, 41, 1524, 56, 57, 995, 54, 58, - 56, 57, 108, 1159, 108, 1100, 995, 48, 56, 57, - 3, 4, 5, 6, 70, 56, 57, 1061, 1113, 80, - 429, 430, 54, 1553, 80, 8, 1070, 111, 1072, 1111, - 948, 59, 60, 93, 90, 1024, 47, 93, 94, 1518, - 88, 59, 60, 59, 60, 1518, 59, 1036, 41, 1312, - 64, 1061, 109, 1583, 1311, 48, 1313, 93, 465, 1168, - 54, 1591, 1157, 56, 57, 60, 475, 476, 7, 8, - 9, 14, 1061, 36, 64, 14, 64, 995, 64, 22, - 60, 1070, 1220, 1072, 1179, 108, 1027, 80, 108, 62, - 64, 1186, 31, 1522, 1179, 88, 108, 36, 108, 108, - 108, 108, 1184, 1185, 64, 1200, 45, 1179, 1061, 64, - 111, 1155, 1156, 1157, 75, 62, 108, 3, 4, 5, - 1061, 60, 65, 4, 5, 75, 108, 536, 62, 536, - 539, 108, 539, 108, 75, 1179, 543, 75, 75, 108, - 1184, 1185, 1186, 108, 1612, 62, 555, 556, 59, 556, - 419, 1029, 1030, 422, 3, 4, 5, 1155, 1156, 1157, - 569, 62, 569, 108, 108, 434, 573, 48, 1157, 1179, - 56, 57, 1311, 108, 1313, 56, 57, 3, 4, 5, - 1058, 124, 111, 111, 94, 88, 1184, 1185, 1186, 74, - 1179, 47, 108, 108, 601, 109, 108, 1186, 111, 80, - 607, 470, 111, 472, 108, 148, 1313, 56, 57, 1304, - 108, 4, 5, 108, 60, 109, 485, 1312, 59, 1314, - 64, 630, 1304, 402, 64, 93, 1321, 59, 1522, 1314, - 56, 57, 1304, 108, 59, 1330, 1321, 1155, 1156, 1157, - 59, 108, 1314, 93, 1356, 1357, 93, 30, 31, 1321, - 33, 93, 1496, 108, 93, 48, 3, 4, 5, 111, - 1304, 1499, 1500, 56, 57, 108, 1184, 1185, 1186, 8, - 1314, 109, 109, 108, 57, 108, 59, 1321, 108, 108, - 108, 33, 65, 64, 111, 109, 1550, 80, 54, 468, - 108, 3, 4, 5, 1304, 238, 239, 3, 4, 5, - 6, 3, 4, 5, 1314, 7, 8, 9, 251, 56, - 57, 1321, 108, 1425, 108, 1304, 3, 4, 5, 108, - 7, 8, 9, 108, 108, 1314, 108, 62, 47, 31, - 108, 111, 1321, 108, 36, 41, 108, 1215, 1216, 96, - 1218, 1219, 48, 1221, 56, 57, 58, 62, 62, 60, - 56, 57, 54, 60, 56, 57, 58, 9, 141, 60, - 16, 60, 108, 146, 108, 108, 149, 150, 151, 56, - 57, 108, 108, 193, 194, 195, 108, 108, 321, 108, - 1475, 60, 88, 93, 1523, 1480, 1481, 1482, 93, 54, - 1485, 64, 17, 176, 111, 1480, 93, 806, 93, 182, - 1485, 103, 104, 105, 54, 60, 1501, 107, 1480, 1481, - 193, 194, 195, 1485, 97, 1522, 108, 1499, 1500, 60, - 363, 11, 108, 1518, 108, 60, 209, 108, 1426, 372, - 1525, 1475, 60, 60, 217, 218, 1480, 1481, 1482, 1534, - 1525, 1485, 385, 1555, 623, 93, 59, 64, 108, 1534, - 60, 630, 11, 1525, 108, 1499, 1500, 3, 4, 5, - 60, 108, 1534, 870, 11, 60, 0, 1562, 1346, 1347, - 1480, 1481, 0, 0, 1518, 1485, 259, 746, 747, 170, - 749, 1525, 2, 35, 673, 1413, 1475, 942, 442, 1584, - 1534, 1480, 1481, 1482, 903, 904, 1485, 904, 169, 1584, - 1549, 1499, 1500, 1501, 3, 4, 5, 165, 1426, 777, - 56, 57, 1584, 1168, 94, 1525, 238, 139, 1562, 1398, - 1622, 1248, 299, 928, 1534, 723, 923, 1622, 1336, 1518, - 243, 3, 4, 5, 6, 1205, 1525, 1622, 777, 948, - 1584, 784, 656, 1222, 921, 1534, 329, 200, 346, 48, - 1622, 88, 604, 90, 124, 92, 1314, 56, 57, 502, - 739, 1180, 1570, 1591, 1539, 1603, 3, 4, 5, 41, - 1448, 1449, 1450, 1562, 1584, 1330, 48, 1601, 1622, 1003, - -1, 1499, 1500, 1501, 56, 57, 995, 1, -1, 3, - 4, 5, 6, 30, 8, 1584, -1, -1, -1, -1, - 137, -1, 139, -1, 3, 4, 5, -1, 787, 3, - 4, 5, 1622, -1, 793, -1, 88, 54, -1, 56, - 57, -1, 405, 406, -1, 568, -1, 41, -1, 1507, - 1508, -1, -1, 1622, 48, -1, 419, -1, -1, 422, - 54, -1, 56, 57, -1, 428, 429, 430, -1, -1, - 470, 434, 472, -1, 474, 475, 476, 56, 57, -1, - 54, -1, 56, 57, -1, 485, -1, 9, -1, 612, - 12, -1, -1, -1, 88, 3, 4, 5, 947, -1, - 78, 79, 80, 81, 82, 83, 84, 470, -1, 472, - -1, 474, 475, 476, -1, -1, 479, 1575, -1, -1, - -1, -1, 485, 486, 487, 47, -1, 490, -1, -1, - -1, 494, -1, -1, -1, -1, -1, 59, -1, 61, - 62, 900, 64, -1, -1, 904, 509, -1, 56, 57, - -1, -1, -1, 75, -1, 77, -1, 80, 681, -1, - -1, -1, -1, -1, -1, -1, -1, 1156, 1157, 692, - -1, 93, 94, 536, -1, -1, 539, 3, 4, 5, - 6, 104, -1, 942, -1, -1, 108, -1, -1, 948, - -1, 554, 555, 556, -1, -1, 1185, 1186, -1, 1186, - 723, -1, -1, 320, -1, -1, 569, -1, -1, -1, - 133, -1, -1, 1200, -1, 41, -1, -1, -1, -1, - -1, 144, 48, -1, -1, 3, 4, 5, 6, -1, - 56, 57, -1, -1, -1, -1, 995, -1, -1, -1, - -1, 358, -1, -1, -1, -1, -1, 1234, 1235, 1236, - 1237, -1, -1, -1, 80, -1, -1, 7, 8, 9, - 38, 39, 88, 41, 14, 1024, -1, 630, 3, 4, - 5, 6, -1, -1, 9, -1, 54, 1036, 56, 57, - 203, 31, -1, -1, -1, -1, 36, 650, 4, 5, - -1, -1, -1, 9, -1, 45, 31, -1, -1, -1, - 461, -1, -1, -1, 1153, 1154, 41, 468, -1, 461, - 1297, 1070, 1161, 1072, -1, 238, 468, -1, -1, 54, - -1, 56, 57, -1, -1, -1, 689, -1, 691, 692, - -1, 47, -1, -1, -1, 70, -1, -1, 54, 262, - 56, 57, -1, 460, 461, 80, 746, 747, -1, 749, - -1, 468, -1, 88, 70, -1, -1, -1, 93, -1, - -1, 7, 8, 9, 80, -1, -1, -1, 14, -1, - -1, -1, 735, 534, 90, -1, 776, 93, 94, -1, - -1, 498, 534, 746, 747, 31, 749, -1, 1375, -1, - 36, -1, -1, -1, 757, -1, -1, 760, 1157, 45, - -1, -1, -1, -1, -1, 928, -1, -1, -1, -1, - -1, -1, -1, -1, 777, -1, 533, 534, 941, -1, - 783, 1408, -1, 1272, 1273, -1, 1275, 1186, -1, -1, - -1, 354, -1, 594, -1, -1, -1, 1426, -1, 600, - -1, -1, 594, 806, -1, -1, -1, -1, 600, 566, - -1, 568, -1, -1, 571, 572, -1, 574, 575, 576, - 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, - 587, 588, 589, 590, 591, 592, 637, 594, 630, 3, - 4, 5, 6, 600, -1, 637, -1, -1, 1475, 412, - -1, -1, -1, -1, 1481, 1482, -1, -1, -1, -1, - 755, 76, 77, 78, 79, 80, 81, 82, 83, 84, - -1, 1500, 1501, 630, 1501, -1, -1, 41, -1, -1, - 637, -1, -1, -1, 48, -1, -1, -1, -1, -1, - -1, 786, 56, 57, -1, -1, -1, 792, -1, 902, - 903, 904, 659, 660, -1, -1, 946, 947, 948, 4, - 5, -1, -1, 8, 9, -1, 80, -1, 675, 14, - -1, -1, -1, -1, 88, -1, -1, 1090, -1, -1, - 3, 4, 5, 6, -1, 1562, -1, -1, 941, 502, - -1, 36, -1, 946, 947, 948, -1, -1, -1, -1, - 45, 1578, 47, -1, -1, 995, -1, -1, -1, 54, - -1, 56, 57, -1, -1, -1, 723, 530, 41, -1, - -1, -1, -1, 1600, -1, 70, -1, -1, -1, -1, - 1607, 54, -1, 56, 57, 80, -1, 1027, -1, 3, - 4, 5, 995, 7, -1, 90, -1, -1, 93, 94, - 895, -1, 897, -1, -1, -1, -1, -1, -1, -1, - -1, 768, -1, 1176, 806, 88, 30, -1, -1, 1182, - 348, 349, 350, 37, -1, -1, 1029, 1030, -1, -1, - -1, 788, 789, -1, 791, -1, -1, -1, -1, -1, - 54, -1, 56, 57, -1, -1, -1, -1, -1, 806, - -1, -1, -1, -1, 617, 1058, -1, -1, -1, 860, - 861, -1, -1, -1, -1, 866, -1, -1, 860, 861, - 633, 828, -1, -1, 866, -1, -1, -1, -1, 880, - -1, 882, -1, 884, -1, -1, -1, -1, 880, -1, - 882, -1, 884, -1, 3, 4, 5, 6, -1, -1, - -1, -1, -1, 860, 861, -1, -1, -1, 865, 866, - -1, -1, -1, 1153, 1154, 1155, 1156, 1157, -1, 1518, - -1, 1161, -1, 880, -1, 882, -1, 884, -1, 930, - -1, -1, 41, -1, -1, 1298, 1299, -1, 930, 48, - 3, 4, 5, 6, 1184, 1185, 1186, 56, 57, -1, - 1153, 1154, 1155, 1156, 1157, -1, -1, -1, 1161, -1, - -1, -1, -1, 920, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 930, 1069, 976, 1071, 1217, 41, 88, - -1, 1184, 1185, 1186, 976, -1, -1, -1, 945, -1, - -1, 54, -1, 56, 57, -1, -1, 60, -1, 62, - -1, 958, -1, 995, -1, -1, -1, 70, -1, -1, - -1, -1, 1215, 1216, -1, 1218, 1219, 80, 1221, 976, - -1, -1, -1, -1, -1, 88, -1, 1390, -1, -1, - 93, 1126, 1272, 1273, -1, 1275, 4, 5, 995, -1, - 8, 9, -1, -1, -1, -1, 14, 4, -1, 1412, - 1413, -1, 3, 4, 5, 6, -1, 14, 9, -1, - 28, -1, 30, -1, -1, -1, -1, 24, 36, 1272, - 1273, -1, 1275, 30, 31, -1, 33, 45, 35, -1, - 31, -1, 1039, -1, -1, 42, 54, -1, 56, 57, - 41, -1, 620, 621, -1, -1, -1, -1, 55, -1, - 57, -1, -1, 54, -1, 56, 57, -1, 65, 1312, - 1313, 1206, -1, -1, -1, 72, 1211, -1, -1, 70, - -1, -1, -1, -1, -1, 93, 83, 84, -1, 80, - 1493, -1, 1089, 1090, -1, -1, 1093, 88, -1, -1, - -1, -1, 93, 1346, 1347, -1, 909, -1, 911, 106, - -1, -1, -1, -1, -1, -1, 1113, 348, 349, 350, - 688, -1, 690, 691, -1, 693, -1, 1262, -1, 1170, - -1, 1172, -1, 1174, -1, -1, -1, 134, 1170, 136, - 1172, -1, 1174, 140, 141, -1, 1426, -1, 145, 146, - 953, -1, 149, 150, 151, -1, -1, -1, -1, -1, - 4, 5, -1, -1, 8, 9, -1, 735, 165, -1, - 14, -1, 169, 1170, -1, 1172, -1, 1174, 175, 176, - 7, 8, 9, 1426, 28, 1182, 30, 14, -1, -1, - -1, -1, 36, -1, 1191, 1192, 193, 194, 195, 1196, - -1, 45, -1, 47, 31, 1448, 1449, 1450, -1, 36, - 54, -1, 56, 57, -1, -1, 1213, 1214, 45, 1499, - 1500, 1501, -1, -1, -1, 222, 70, -1, 1269, -1, - 1365, 1366, -1, 60, -1, -1, 80, 1269, -1, -1, - -1, 1238, 239, -1, 812, 1048, 90, 1382, -1, 93, - 94, 248, -1, -1, -1, -1, 1499, 1500, 1501, -1, - -1, -1, 259, -1, 1507, 1508, -1, -1, -1, 3, - 4, 5, 1269, 7, 8, 9, 71, 72, 73, 74, - 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, - 3, 4, 5, 6, -1, -1, 1293, 31, -1, -1, - 297, 298, 36, -1, -1, -1, 1441, 1442, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 885, 31, 887, - -1, -1, 56, 57, -1, 1460, 1461, -1, 41, 1132, - 898, -1, 1575, -1, 902, 903, 1333, -1, -1, -1, - -1, 54, -1, 56, 57, 342, -1, -1, -1, 346, - -1, 348, 349, 350, -1, 1352, 1159, 70, -1, 4, - 5, -1, 359, 8, 9, -1, -1, 80, -1, 14, - -1, -1, -1, -1, -1, 88, -1, 1374, 946, 947, - 93, -1, -1, 28, -1, 30, -1, -1, -1, 620, - 621, 36, 623, -1, 1426, -1, 393, -1, -1, 630, - 45, -1, -1, -1, -1, 402, -1, 404, 405, 54, - -1, 56, 57, 58, 4, 5, -1, 1220, 8, 9, - -1, -1, 419, -1, 14, 422, -1, -1, -1, 1426, - -1, -1, -1, -1, -1, -1, -1, 434, 28, -1, - 30, -1, -1, -1, -1, 442, 36, -1, 93, 1446, - 1447, -1, -1, -1, -1, 45, -1, 688, 1455, 690, - 691, -1, 693, -1, 54, -1, 56, 57, -1, -1, - -1, -1, -1, 470, -1, 472, -1, 474, 475, 476, - -1, -1, -1, 480, -1, -1, 1483, -1, 485, -1, - -1, 488, 3, 4, 5, 6, -1, 8, 9, 10, - 11, -1, 13, 14, 735, -1, -1, -1, -1, 506, - -1, -1, -1, -1, -1, -1, -1, 28, 29, 30, - 31, 32, -1, 34, 35, 36, -1, 38, 39, 40, - 41, 42, 43, -1, 45, -1, 47, -1, 49, 50, - 51, 52, 53, 54, -1, 56, 57, 544, 545, 546, - 547, 3, 4, 5, 6, -1, 67, -1, -1, 70, - -1, -1, -1, -1, -1, -1, -1, 78, 79, 80, - -1, -1, -1, -1, -1, 86, 87, 88, -1, 90, - -1, 812, 93, 94, -1, 1153, 1154, 1155, 1156, 41, - -1, -1, -1, 1161, -1, 47, -1, -1, -1, 110, - -1, -1, 54, -1, 56, 57, -1, 604, -1, 606, - -1, -1, -1, -1, -1, 1612, 1184, 1185, 70, -1, - -1, 618, -1, 620, 621, -1, 623, -1, 80, -1, - -1, -1, -1, 630, -1, -1, 88, 634, 90, -1, - -1, 93, 94, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 649, -1, 885, -1, 887, -1, 4, 5, - -1, 7, 8, 9, -1, -1, 12, 898, 14, -1, - -1, 902, 903, 904, -1, -1, 673, -1, -1, -1, - -1, -1, 28, 680, 30, 31, -1, -1, -1, -1, - 36, 688, 689, 690, 691, 692, 693, -1, -1, 45, - -1, 47, -1, -1, 1272, 1273, -1, 1275, 54, -1, - 56, 57, -1, -1, -1, 946, 947, 948, -1, -1, - -1, -1, -1, -1, 70, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 80, -1, -1, -1, 735, -1, - -1, -1, 739, -1, 90, -1, -1, 93, 94, 746, - 747, -1, 749, -1, -1, 3, 4, 5, 6, 7, - 8, 9, -1, -1, 995, -1, 14, -1, -1, 766, - -1, -1, 769, -1, 771, -1, -1, -1, -1, 776, - 777, 778, -1, 31, 4, 5, -1, 784, 36, 9, - 787, -1, -1, 41, -1, -1, 793, 45, -1, 47, - -1, -1, -1, 800, 801, 802, 54, -1, 56, 57, - -1, -1, -1, -1, -1, 812, -1, -1, -1, -1, - -1, -1, 70, -1, -1, -1, -1, 47, 4, -1, - -1, -1, 80, -1, 54, -1, 56, 57, 14, -1, - 88, -1, 90, -1, -1, 93, 94, 23, 24, -1, - 70, -1, -1, -1, 30, 31, -1, 33, -1, 35, - 80, -1, -1, -1, -1, -1, 42, -1, -1, -1, - 90, -1, -1, 93, 94, -1, -1, -1, -1, 55, - -1, 57, -1, -1, -1, -1, -1, -1, 885, 65, - 887, -1, -1, -1, -1, -1, 72, 894, -1, -1, - -1, 898, -1, 900, -1, 902, 903, 904, 84, -1, - -1, -1, -1, 910, -1, -1, -1, -1, 3, 4, - 5, 6, 1153, 1154, 1155, 1156, 1157, -1, -1, -1, - 1161, 72, 73, 74, 75, 76, 77, 78, 79, 80, - 81, 82, 83, 84, -1, 942, 31, 944, -1, 946, - 947, 948, -1, 1184, 1185, 1186, 41, -1, -1, -1, - 136, -1, -1, -1, 140, 141, -1, -1, -1, 54, - 146, 56, 57, 149, 150, 151, -1, -1, 3, 4, - 5, 6, -1, -1, 9, 70, -1, -1, -1, 165, - -1, -1, -1, 169, -1, 80, -1, -1, 995, 175, - 176, -1, -1, 88, -1, -1, 31, -1, 93, -1, - -1, 1008, -1, -1, -1, -1, 41, 193, 194, 195, - -1, -1, 47, -1, -1, -1, -1, 1024, -1, 54, - 1027, 56, 57, -1, -1, -1, -1, -1, -1, 1036, - -1, 1272, 1273, -1, 1275, 70, 222, -1, -1, -1, - -1, -1, 1049, -1, -1, 80, -1, -1, -1, -1, - -1, -1, 4, 88, 1061, 90, -1, -1, 93, 94, - -1, -1, -1, 1070, -1, 1072, -1, -1, 3, 4, - 5, 6, -1, 259, 9, -1, -1, -1, 30, 31, - -1, 33, -1, 35, 4, 5, -1, -1, 8, 9, - 42, -1, -1, 1100, 14, -1, 31, -1, 1105, 1106, - -1, 1108, -1, 55, -1, 57, 41, -1, 28, -1, - 30, 297, 298, -1, -1, -1, 36, -1, -1, 54, - -1, 56, 57, -1, -1, 45, -1, -1, 80, -1, - -1, -1, -1, -1, 54, 70, 56, 57, -1, -1, - -1, -1, -1, -1, -1, 80, 1153, 1154, 1155, 1156, - 1157, -1, -1, 88, 1161, -1, 342, -1, 93, -1, - 346, -1, 348, 349, 350, -1, -1, -1, -1, 355, - -1, -1, -1, 359, -1, -1, -1, 1184, 1185, 1186, - -1, 133, 134, -1, 136, -1, -1, -1, 140, 141, - -1, -1, 144, -1, 146, -1, -1, 149, 150, 151, - -1, -1, -1, -1, 156, -1, -1, 393, -1, -1, - 1217, -1, -1, 165, -1, 1222, 402, 169, 404, 405, - -1, -1, -1, 175, 176, -1, -1, -1, -1, -1, - -1, -1, -1, 419, -1, -1, 422, -1, -1, -1, - -1, 193, 194, 195, -1, -1, -1, -1, 434, -1, - -1, 203, -1, -1, -1, -1, 442, -1, -1, -1, - -1, -1, -1, -1, -1, 1272, 1273, -1, 1275, -1, - 222, 73, 74, 75, 76, 77, 78, 79, 80, 81, - 82, 83, 84, -1, 470, -1, 472, -1, 474, 475, - 476, -1, -1, -1, 480, -1, -1, -1, -1, 485, - -1, -1, 488, -1, 1311, 1312, 1313, 259, -1, 1, - -1, 3, 4, 5, 6, 7, 8, 9, -1, -1, - 506, -1, 14, 1330, -1, -1, -1, -1, -1, -1, - -1, 3, 4, 5, 6, -1, 28, -1, 30, 31, - 32, -1, -1, -1, 36, 37, -1, -1, -1, 41, - -1, -1, -1, 45, 46, -1, 48, -1, 544, 545, - 546, 547, 54, -1, 56, 57, -1, -1, 60, 41, - 62, 3, 4, 5, 6, -1, -1, 329, 70, -1, - -1, -1, 54, -1, 56, 57, -1, -1, 80, -1, - 62, -1, -1, -1, 346, -1, 88, -1, 70, -1, - -1, 93, 354, -1, -1, -1, -1, 359, 80, 41, - -1, -1, -1, -1, -1, -1, 88, 109, 604, 1426, - 606, 93, 54, -1, 56, 57, -1, -1, 60, -1, - -1, -1, -1, -1, 620, 621, -1, 623, 70, -1, - -1, 393, -1, -1, 630, -1, -1, -1, 80, -1, - -1, -1, 404, -1, -1, -1, 88, 643, -1, -1, - -1, 93, -1, 649, -1, -1, -1, 419, -1, -1, - 422, -1, -1, -1, -1, -1, 428, 429, 430, -1, - -1, -1, 434, -1, -1, -1, -1, 673, 4, -1, - 442, -1, 1499, 1500, 1501, 681, -1, -1, -1, -1, - -1, -1, 688, 689, 690, 691, 692, 693, -1, -1, - -1, 1518, -1, -1, -1, -1, 1523, -1, 470, 35, - 472, -1, 474, 475, 476, -1, 42, -1, 480, -1, - 716, -1, -1, 485, -1, -1, 488, -1, -1, 55, - -1, 57, -1, -1, -1, -1, -1, -1, -1, 735, - -1, -1, -1, 739, 506, -1, -1, -1, -1, -1, - 746, 747, -1, 749, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 763, -1, -1, - 766, -1, -1, 769, 536, 771, -1, 539, -1, -1, - 776, 777, 778, -1, 3, 4, 5, 6, 784, -1, - 9, 787, 554, 555, 556, -1, -1, 793, -1, -1, - -1, -1, -1, -1, 800, 801, 802, 569, -1, -1, - 136, -1, 31, -1, 140, -1, 812, -1, -1, -1, - -1, -1, 41, -1, -1, -1, -1, -1, 47, -1, - -1, -1, -1, -1, -1, 54, -1, 56, 57, 165, - -1, -1, -1, 169, -1, -1, -1, 4, 5, 175, - 176, 70, 9, -1, -1, 617, -1, -1, -1, -1, - -1, 80, -1, -1, -1, -1, -1, -1, 630, 88, - -1, 90, -1, -1, 93, 94, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 649, -1, 885, - 47, 887, -1, -1, -1, -1, 222, 54, 894, 56, - 57, -1, 898, -1, 900, -1, 902, 903, 904, -1, - -1, 673, -1, 70, 910, 4, 5, -1, 680, 8, - 9, -1, -1, 80, -1, 14, 688, 689, 690, 691, - -1, -1, -1, 90, -1, -1, 93, 94, -1, -1, - 82, -1, -1, -1, -1, -1, 942, 36, 944, -1, - 946, 947, 948, -1, -1, -1, 45, -1, 47, -1, - -1, -1, -1, -1, -1, 54, -1, 56, 57, -1, - -1, -1, -1, 735, -1, -1, -1, 739, -1, -1, - -1, 70, -1, -1, 746, 747, -1, 749, -1, -1, - -1, 80, 3, 4, 5, 6, 7, 8, 9, 995, - -1, 90, -1, 14, 93, 94, -1, 769, -1, 771, - -1, -1, 1008, -1, 776, 777, 778, 159, -1, -1, - 31, -1, 784, -1, -1, 36, -1, -1, 1024, -1, - 41, 1027, -1, 359, 45, -1, 47, -1, -1, -1, - 1036, -1, -1, 54, 806, 56, 57, -1, -1, 191, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 70, - -1, -1, 204, -1, -1, 1061, -1, -1, -1, 80, - -1, -1, -1, -1, 1070, -1, 1072, 88, 404, 90, - -1, -1, 93, 94, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 3, 4, 5, - 6, 7, 8, 9, 1100, -1, 12, -1, 14, 1105, - 1106, -1, 1108, -1, -1, -1, 442, -1, -1, -1, - -1, -1, 28, -1, 30, 31, -1, -1, -1, -1, - 36, -1, -1, -1, -1, 41, -1, -1, -1, 45, - 902, 903, 904, -1, -1, -1, 908, 909, 54, -1, - 56, 57, -1, -1, 480, -1, -1, 1153, 1154, 1155, - 1156, 1157, 488, -1, 70, 1161, 4, -1, -1, -1, - -1, -1, 1168, -1, 80, -1, -1, -1, -1, -1, - 506, -1, 88, -1, 946, 947, 948, 93, 1184, 1185, - 1186, 953, 30, 31, -1, 33, -1, 35, -1, -1, - -1, -1, -1, -1, 42, -1, -1, -1, -1, 1205, - 4, 5, -1, 7, 8, 9, -1, 55, -1, 57, - 14, 1217, -1, -1, -1, -1, 1222, -1, -1, 3, - 4, 5, 6, 995, 28, 9, 30, 31, -1, -1, - -1, -1, 36, -1, -1, -1, -1, -1, -1, -1, - -1, 45, -1, -1, 48, -1, -1, 31, -1, -1, - 54, -1, 56, 57, -1, 1027, -1, 41, -1, -1, - -1, -1, -1, -1, -1, -1, 1272, 1273, -1, 1275, - 54, -1, 56, 57, -1, -1, 1048, -1, -1, -1, - -1, -1, 3, 4, 5, 6, 70, -1, 136, 1061, - -1, -1, 140, 141, 1300, -1, 80, -1, 146, -1, - -1, 149, 150, 151, 88, 1311, 1312, 1313, -1, 93, - 31, -1, -1, 649, -1, -1, -1, 165, -1, -1, - 41, 169, -1, -1, 1330, -1, 478, 175, 176, -1, - 1336, 483, -1, 54, -1, 56, 57, -1, -1, -1, - 3, 4, 5, 6, -1, 193, 194, 195, -1, 70, - -1, -1, 688, 689, 690, 691, -1, -1, 510, 80, - 1132, -1, -1, -1, 516, -1, 33, 88, -1, -1, - -1, -1, 93, -1, 222, -1, 528, 529, 41, 531, - -1, 1153, 1154, 1155, 1156, 1157, -1, 1159, 55, 1161, - -1, 54, -1, 56, 57, -1, -1, 60, -1, 735, - -1, -1, -1, 739, -1, 4, 5, 70, 7, 8, - 9, 259, 1184, 1185, 1186, 14, -1, 80, -1, -1, - 1426, -1, -1, -1, -1, 88, -1, -1, -1, 28, - 93, 30, 31, 769, -1, 771, -1, 36, -1, -1, - 776, 777, 778, -1, -1, 1217, 45, -1, 784, -1, - 1222, -1, -1, -1, -1, 54, -1, 56, 57, -1, - -1, -1, -1, -1, -1, -1, -1, 3, 4, 5, - 6, -1, -1, -1, 626, 627, -1, -1, -1, 631, - -1, -1, 149, 150, 151, -1, -1, -1, -1, -1, - -1, -1, -1, 1499, 1500, 1501, -1, -1, -1, -1, - 1272, 1273, -1, 1275, -1, 41, -1, 355, 175, -1, - -1, 359, 1518, -1, -1, -1, -1, 1523, 54, -1, - 56, 57, -1, -1, -1, -1, 193, 194, 195, -1, - -1, -1, -1, -1, 70, -1, -1, -1, -1, 1311, - 1312, 1313, -1, -1, 80, -1, -1, -1, -1, -1, - -1, -1, 88, -1, -1, 222, 404, 93, -1, -1, - -1, -1, -1, -1, 55, -1, 3, 4, 5, 6, - -1, 419, -1, -1, 422, -1, -1, -1, -1, -1, - 107, 108, -1, -1, -1, -1, 434, -1, -1, 80, - -1, -1, 83, -1, 442, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 41, -1, -1, -1, 3, 4, - 5, 6, -1, 104, 9, 106, -1, 54, -1, 56, - 57, -1, 470, -1, 472, 62, 474, 475, 476, -1, - -1, 298, 480, 70, -1, -1, 31, 485, -1, -1, - 488, -1, 794, 80, 796, -1, 41, -1, -1, -1, - -1, 88, 47, -1, 1426, -1, 93, -1, 506, 54, - -1, 56, 57, -1, -1, -1, -1, -1, -1, -1, + 174, 161, 209, 23, 176, 4, 149, 150, 402, 175, + 355, 402, 126, 80, 734, 156, 62, 4, 251, 349, + 482, 80, 355, 4, 402, 455, 14, 4, 134, 898, + 35, 511, 84, 513, 46, 583, 35, 42, 55, 709, + 247, 521, 209, 30, 31, 90, 733, 92, 35, 304, + 305, 218, 57, 4, 35, 42, 133, 134, 35, 640, + 460, 42, 620, 663, 76, 42, 647, 72, 373, 124, + 42, 217, 218, 42, 55, 440, 57, 144, 4, 84, + 133, 4, 337, 88, 35, 90, 11, 92, 1400, 296, + 1327, 42, 137, 780, 140, 83, 1486, 84, 1337, 42, + 42, 1487, 107, 108, 12, 1344, 47, 54, 58, 35, + 156, 57, 35, 11, 11, 47, 42, 717, 106, 42, + 356, 357, 355, 64, 62, 1488, 54, 38, 33, 59, + 54, 136, 137, 84, 139, 0, 203, 62, 1528, 75, + 1510, 77, 349, 54, 37, 75, 74, 577, 98, 136, + 74, 59, 93, 94, 62, 136, 64, 1527, 175, 140, + 165, 93, 149, 150, 169, 1, 212, 33, 0, 503, + 108, 176, 408, 409, 220, 782, 1, 1, 165, 641, + 306, 307, 169, 108, 165, 136, 245, 794, 169, 716, + 136, 237, 169, 165, 175, 176, 322, 169, 1561, 325, + 169, 213, 328, 262, 109, 331, 193, 194, 155, 335, + 108, 108, 1582, 136, 165, 822, 109, 343, 169, 47, + 1606, 828, 58, 1531, 27, 555, 169, 169, 31, 59, + 176, 1621, 490, 58, 58, 62, 74, 62, 62, 12, + 245, 222, 165, 169, 25, 27, 169, 74, 9, 31, + 1487, 402, 1491, 200, 1566, 47, 59, 60, 245, 42, + 248, 64, 60, 74, 245, 93, 94, 1575, 526, 346, + 95, 95, 3, 4, 5, 6, 59, 58, 60, 109, + 108, 62, 64, 149, 150, 151, 59, 393, 448, 62, + 342, 58, 297, 346, 245, 1061, 1062, 64, 1537, 245, + 61, 93, 94, 33, 7, 735, 976, 3, 4, 5, + 41, 109, 1078, 358, 95, 660, 108, 468, 4, 245, + 487, 699, 245, 54, 329, 56, 57, 109, 935, 195, + 385, 474, 475, 60, 37, 108, 59, 342, 48, 897, + 486, 487, 4, 5, 1583, 350, 8, 9, 494, 35, + 59, 93, 14, 358, 359, 342, 93, 88, 939, 59, + 56, 57, 756, 728, 729, 756, 28, 355, 30, 59, + 47, 93, 359, 54, 36, 75, 4, 77, 359, 525, + 60, 60, 109, 45, 689, 108, 169, 404, 4, 5, + 59, 342, 54, 74, 56, 57, 629, 402, 544, 108, + 405, 1270, 983, 74, 450, 8, 9, 35, 359, 74, + 47, 14, 47, 359, 60, 402, 93, 94, 108, 149, + 150, 151, 752, 404, 951, 402, 209, 954, 664, 109, + 109, 93, 980, 36, 217, 218, 359, 442, 54, 108, + 56, 57, 45, 93, 47, 571, 572, 493, 1048, 1030, + 107, 402, 511, 498, 513, 442, 93, 94, 93, 33, + 519, 442, 521, 468, 247, 195, 1232, 25, 995, 996, + 442, 108, 47, 442, 936, 1241, 1242, 47, 1244, 47, + 1087, 468, 1089, 47, 496, 47, 31, 474, 475, 640, + 93, 442, 58, 498, 107, 108, 647, 47, 1185, 480, + 900, 518, 514, 515, 47, 550, 511, 488, 513, 25, + 4, 27, 524, 296, 519, 47, 521, 468, 93, 442, + 1389, 64, 60, 93, 511, 93, 513, 54, 47, 93, + 511, 93, 513, 4, 521, 1222, 54, 518, 519, 44, + 521, 35, 58, 93, 108, 550, 62, 74, 553, 54, + 93, 556, 57, 727, 74, 560, 561, 562, 563, 564, + 511, 93, 513, 54, 35, 511, 349, 513, 573, 621, + 521, 42, 518, 519, 93, 521, 150, 151, 583, 95, + 109, 586, 12, 977, 690, 511, 977, 513, 511, 1019, + 513, 697, 47, 1174, 54, 521, 58, 1077, 521, 977, + 945, 93, 838, 54, 25, 756, 27, 54, 474, 475, + 476, 25, 945, 27, 74, 47, 621, 54, 62, 75, + 697, 195, 1203, 406, 108, 1152, 1153, 47, 774, 59, + 74, 782, 62, 62, 621, 640, 47, 58, 93, 94, + 847, 62, 647, 794, 58, 108, 62, 692, 62, 666, + 637, 638, 94, 640, 54, 3, 4, 5, 74, 442, + 647, 93, 62, 651, 1126, 136, 3, 4, 5, 108, + 621, 822, 1359, 93, 95, 31, 108, 828, 698, 108, + 58, 95, 93, 94, 62, 666, 941, 692, 705, 640, + 707, 708, 1458, 1459, 165, 47, 647, 47, 169, 108, + 25, 706, 27, 486, 487, 710, 1106, 1107, 56, 57, + 11, 494, 945, 733, 64, 1049, 329, 1051, 47, 56, + 57, 1055, 8, 9, 705, 706, 707, 708, 14, 7, + 8, 9, 80, 58, 970, 752, 14, 62, 109, 806, + 98, 93, 525, 93, 474, 475, 476, 806, 47, 60, + 36, 756, 47, 31, 62, 329, 815, 47, 36, 45, + 47, 544, 1122, 1123, 93, 1125, 74, 45, 785, 756, + 95, 752, 4, 5, 245, 756, 93, 782, 823, 824, + 3, 826, 60, 909, 935, 141, 798, 60, 939, 794, + 146, 1121, 804, 805, 93, 782, 808, 809, 93, 1199, + 812, 111, 943, 93, 785, 756, 93, 794, 1208, 1209, + 815, 937, 938, 1213, 4, 5, 48, 822, 823, 824, + 54, 826, 74, 828, 56, 57, 977, 62, 815, 1003, + 47, 782, 983, 94, 815, 822, 480, 54, 194, 785, + 74, 828, 62, 794, 488, 1081, 1082, 1083, 80, 1569, + 27, 94, 465, 47, 31, 429, 430, 74, 48, 74, + 54, 1261, 59, 60, 815, 111, 56, 57, 93, 815, + 74, 822, 93, 3, 4, 5, 93, 828, 3, 1030, + 74, 6, 59, 60, 667, 1219, 1220, 1221, 359, 815, + 80, 896, 815, 47, 59, 60, 901, 943, 74, 93, + 54, 475, 476, 259, 1018, 74, 31, 59, 3, 4, + 5, 6, 3, 4, 5, 182, 41, 835, 836, 837, + 74, 988, 59, 60, 929, 708, 56, 57, 58, 11, + 935, 56, 57, 108, 939, 109, 1087, 59, 1089, 93, + 553, 59, 60, 556, 108, 70, 41, 560, 935, 108, + 937, 938, 939, 48, 74, 80, 1356, 945, 59, 60, + 573, 56, 57, 88, 108, 56, 57, 54, 93, 752, + 74, 442, 977, 586, 979, 980, 74, 590, 983, 553, + 108, 1411, 556, 109, 935, 80, 1386, 111, 939, 108, + 977, 774, 109, 88, 981, 982, 983, 1427, 572, 573, + 977, 111, 1128, 4, 5, 618, 1336, 27, 3, 4, + 5, 624, 586, 1072, 74, 4, 5, 74, 1077, 54, + 9, 59, 60, 1174, 54, 1030, 977, 62, 74, 1172, + 1173, 111, 983, 3, 4, 5, 6, 111, 1043, 74, + 511, 108, 513, 1030, 108, 1281, 108, 48, 58, 54, + 521, 54, 1203, 48, 108, 56, 57, 62, 1201, 1202, + 8, 56, 57, 419, 847, 54, 422, 56, 57, 74, + 111, 41, 1077, 647, 93, 1201, 1202, 64, 434, 1030, + 1510, 70, 1087, 59, 1089, 1130, 56, 57, 1069, 47, + 1077, 80, 59, 1074, 59, 60, 1077, 1527, 74, 75, + 1087, 77, 1089, 4, 5, 94, 4, 5, 93, 1176, + 83, 84, 1117, 54, 470, 54, 472, 983, 88, 59, + 60, 62, 1552, 4, 5, 1130, 1077, 1521, 109, 485, + 1521, 1077, 60, 74, 59, 60, 1087, 36, 1089, 3, + 4, 5, 64, 7, 8, 9, 64, 48, 59, 60, + 48, 1077, 1582, 108, 1077, 56, 57, 64, 56, 57, + 1590, 108, 62, 1335, 1030, 1185, 60, 31, 1334, 1174, + 1336, 108, 36, 54, 108, 56, 57, 4, 5, 80, + 54, 9, 80, 75, 12, 1172, 1173, 1174, 62, 70, + 54, 1196, 56, 57, 58, 1525, 108, 1196, 1203, 80, + 74, 1327, 108, 64, 3, 4, 5, 6, 64, 1196, + 9, 1611, 1217, 94, 1201, 1202, 1203, 54, 54, 47, + 64, 111, 62, 1174, 59, 62, 62, 1239, 1240, 56, + 57, 59, 31, 61, 62, 59, 64, 74, 74, 103, + 104, 105, 41, 108, 75, 1196, 59, 75, 47, 77, + 108, 64, 1203, 983, 108, 54, 108, 56, 57, 108, + 75, 74, 75, 75, 75, 93, 94, 841, 4, 5, + 1196, 70, 62, 1196, 108, 108, 30, 31, 62, 33, + 108, 80, 78, 79, 80, 81, 82, 83, 84, 88, + 59, 90, 905, 111, 93, 94, 62, 94, 108, 108, + 1030, 108, 88, 57, 74, 59, 1172, 1173, 1174, 111, + 47, 65, 60, 3, 4, 5, 6, 1334, 1525, 1336, + 56, 57, 1327, 108, 111, 108, 939, 108, 108, 111, + 1335, 108, 1337, 109, 108, 1201, 1202, 1203, 1337, 1344, + 1327, 109, 1502, 59, 815, 1344, 64, 64, 1353, 93, + 1337, 41, 59, 1334, 1335, 1336, 108, 1344, 48, 3, + 4, 5, 1505, 1506, 938, 939, 56, 57, 64, 108, + 1521, 4, 5, 108, 108, 1549, 1327, 4, 5, 1505, + 1506, 93, 93, 93, 12, 93, 1337, 141, 109, 109, + 80, 8, 146, 1344, 108, 149, 150, 151, 88, 27, + 109, 1327, 108, 31, 1327, 108, 111, 763, 764, 983, + 766, 1337, 56, 57, 1337, 48, 108, 44, 1344, 47, + 108, 1344, 176, 56, 57, 1437, 108, 54, 182, 56, + 57, 59, 60, 108, 62, 111, 64, 108, 108, 193, + 194, 195, 1172, 1173, 1174, 33, 108, 80, 54, 108, + 7, 8, 9, 108, 62, 209, 1030, 14, 111, 108, + 3, 4, 5, 217, 218, 93, 94, 47, 62, 108, + 108, 1201, 1202, 1203, 31, 96, 1481, 62, 60, 36, + 108, 1486, 1487, 1488, 60, 9, 1491, 1486, 45, 60, + 16, 64, 1491, 108, 1481, 3, 4, 5, 108, 1486, + 1487, 1488, 1507, 60, 1491, 259, 108, 108, 108, 1526, + 777, 54, 108, 56, 57, 58, 1521, 108, 1505, 1506, + 787, 788, 108, 1528, 93, 93, 60, 4, 5, 1528, + 1481, 60, 1537, 54, 1521, 1486, 1487, 1488, 1537, 47, + 1491, 1528, 1554, 93, 111, 1526, 54, 814, 56, 57, + 1537, 93, 819, 1336, 17, 60, 1561, 54, 107, 97, + 1486, 1487, 108, 1486, 1487, 1491, 60, 108, 1491, 108, + 1521, 48, 1438, 108, 1561, 329, 11, 1528, 1583, 56, + 57, 60, 60, 93, 1583, 93, 1537, 11, 60, 59, + 1203, 80, 81, 82, 83, 84, 1583, 64, 60, 1173, + 1174, 108, 1528, 80, 1217, 1528, 1077, 108, 108, 47, + 1561, 1537, 60, 11, 1537, 88, 1621, 90, 60, 92, + 0, 0, 1621, 0, 2, 170, 982, 35, 1202, 1203, + 1425, 690, 1583, 977, 1621, 4, 5, 169, 442, 1505, + 1506, 1507, 165, 519, 1257, 1258, 1259, 1260, 86, 87, + 1185, 405, 406, 91, 92, 93, 94, 1583, 1548, 238, + 1583, 94, 4, 5, 137, 419, 139, 9, 422, 1410, + 1621, 139, 1621, 1271, 428, 429, 430, 299, 963, 740, + 434, 3, 4, 5, 6, 54, 958, 56, 57, 243, + 519, 4, 5, 1359, 1222, 1621, 9, 1074, 1621, 815, + 956, 70, 673, 4, 5, 47, 621, 1320, 1438, 200, + 346, 80, 54, 124, 56, 57, 470, 1337, 472, 41, + 474, 475, 476, 1197, 1569, 479, 48, 1590, 70, 1542, + 80, 485, 486, 487, 56, 57, 490, -1, 80, 1600, + 494, 54, 1525, 56, 57, 1602, 47, 1038, 90, 1353, + -1, 93, 94, 54, 104, 56, 57, 70, 80, 3, + 4, 5, 6, -1, -1, 519, 88, 80, -1, 70, + -1, -1, 526, -1, 1387, 1505, 1506, 1507, 772, 80, + -1, -1, -1, 133, -1, -1, -1, -1, -1, 90, + -1, -1, 93, 94, 144, -1, -1, 41, -1, 553, + 1067, 1068, 556, 1070, 1071, -1, 1073, 1420, 3, 4, + 5, -1, 56, 57, 1170, 1171, -1, 571, 572, 573, + -1, 461, 1178, -1, -1, -1, -1, 821, 468, -1, + -1, -1, 586, 827, -1, -1, 1, -1, 3, 4, + 5, 6, 7, 8, 9, -1, -1, 320, -1, 14, + 3, 4, 5, 203, 3, 4, 5, -1, 7, 8, + 9, 56, 57, 28, 1438, 30, 31, 32, 1481, -1, + -1, 36, -1, -1, 1487, 1488, 41, 30, -1, -1, + 45, 46, 31, 48, -1, 358, -1, 36, 238, 54, + -1, 56, 57, 647, 1507, 60, -1, 62, -1, -1, + -1, 54, 461, 56, 57, 70, -1, 56, 57, 468, + -1, 551, 262, 667, -1, 80, 14, -1, -1, -1, + -1, -1, -1, 88, 22, -1, -1, -1, 93, 3, + 4, 5, 1506, 1507, -1, -1, 930, -1, 932, 1295, + 1296, -1, 1298, -1, 348, 349, 350, -1, 1561, -1, + -1, -1, 706, -1, 708, 709, -1, -1, -1, -1, + -1, -1, 1229, 1230, 1577, -1, -1, 65, 3, 4, + 5, 611, 7, 8, 9, -1, -1, 617, 3, 4, + 5, 6, 56, 57, 9, -1, 1599, 460, 461, 3, + 4, 5, 551, 1606, -1, 468, -1, -1, 752, -1, + 3, 4, 5, 6, 354, -1, 31, -1, -1, 763, + 764, -1, 766, -1, 654, -1, 41, -1, -1, -1, + 774, 56, 57, 777, -1, 498, 124, -1, -1, 54, + -1, 56, 57, 787, 788, 38, 39, 510, 41, -1, + 107, 108, 56, 57, -1, 70, 3, 4, 5, -1, + 148, 54, 611, 56, 57, 80, -1, -1, 617, -1, + 814, -1, 412, 88, 1058, 819, -1, -1, 93, 1063, + -1, -1, -1, -1, -1, -1, -1, 550, 551, -1, + -1, -1, -1, -1, -1, -1, -1, 841, 647, -1, + -1, -1, 1086, -1, 1088, 654, -1, 54, -1, 56, + 57, -1, -1, 1370, 1371, 1372, -1, -1, -1, -1, + 583, -1, 585, -1, -1, 588, 589, -1, 591, 592, + 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, + 603, 604, 605, 606, 607, 608, 609, -1, 611, -1, + 238, 239, -1, -1, 617, -1, -1, -1, -1, 1143, + -1, -1, 502, 251, 3, 4, 5, 6, 7, 8, + 9, 3, 4, 5, 6, 14, -1, -1, -1, -1, + -1, 3, 4, 5, 647, -1, -1, -1, -1, -1, + -1, 654, 31, 937, 938, 939, -1, 36, 1455, 1456, + -1, -1, 41, -1, -1, -1, 45, 547, 47, 41, + 3, 4, 5, 676, 677, 54, 48, 56, 57, -1, + -1, 7, 8, 9, 56, 57, 48, -1, 14, 692, + -1, 70, 976, 321, 56, 57, -1, 981, 982, 983, + -1, 80, -1, 637, 638, 31, -1, -1, 80, 88, + 36, 90, -1, -1, 93, 94, 88, -1, -1, 45, + -1, 54, -1, 56, 57, 895, 896, 7, 8, 9, + -1, 901, 329, -1, 14, 363, -1, 740, -1, -1, + -1, -1, -1, -1, 372, 915, 1030, 917, -1, 919, + -1, 31, 841, -1, 634, -1, 36, 385, 4, 5, + -1, 1285, 8, 9, -1, 45, -1, -1, 14, -1, + 650, 705, -1, 707, 708, -1, 710, 1574, 3, 4, + 5, 6, -1, 1067, 1068, -1, 1070, 1071, -1, 1073, + 36, -1, -1, -1, 797, 965, -1, -1, -1, 45, + -1, 47, -1, -1, -1, 402, 895, 896, 54, -1, + 56, 57, 901, -1, -1, -1, 41, -1, 752, -1, + 823, 824, 47, 826, 70, -1, 915, -1, 917, 54, + 919, 56, 57, -1, 80, -1, -1, -1, 841, 1363, + 1364, 1011, -1, -1, 90, 70, -1, 93, 94, -1, + -1, -1, -1, 1377, 1378, 80, -1, 3, 4, 5, + 863, 7, -1, 88, -1, 90, -1, -1, 93, 94, + 1394, 468, -1, -1, 502, -1, 965, -1, -1, -1, + -1, -1, -1, -1, 30, -1, 1170, 1171, 1172, 1173, + 1174, 37, 895, 896, 1178, -1, -1, 900, 901, 76, + 77, 78, 79, 80, 81, 82, 83, 84, 54, -1, + 56, 57, 915, 847, 917, -1, 919, 1201, 1202, 1203, + -1, -1, 1011, -1, -1, -1, 806, 71, 72, 73, + 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, + 84, 1030, 1466, 1467, -1, 1229, 1230, -1, -1, -1, + -1, -1, 955, -1, -1, -1, 553, 585, -1, 556, + -1, -1, 965, 560, 561, 562, 563, 564, -1, 3, + 4, 5, 6, -1, -1, 9, 573, 980, -1, -1, + 3, 4, 5, 6, -1, -1, 920, -1, 922, 586, + 993, -1, -1, -1, -1, -1, -1, 31, -1, 933, + -1, 629, -1, 937, 938, -1, -1, 41, 1011, -1, + -1, 1295, 1296, 47, 1298, -1, -1, 1187, 41, 1189, + 54, 1191, 56, 57, -1, 48, -1, 1030, -1, 3, + 4, 5, 6, 56, 57, 9, 70, 1, -1, 3, + 4, 5, 6, 640, 8, -1, 80, 981, 982, -1, + 647, 1335, 1336, -1, 88, -1, 90, 31, -1, 93, + 94, -1, 1065, 1066, 944, 88, 946, 41, -1, -1, + 698, -1, -1, 47, -1, -1, -1, 41, -1, -1, + 54, 709, 56, 57, 48, -1, 1370, 1371, 1372, -1, + 54, -1, 56, 57, -1, -1, 70, -1, 1187, -1, + 1189, -1, 1191, 1106, 1107, -1, 80, 1110, 988, -1, + -1, -1, 740, -1, 88, 4, 90, -1, -1, 93, + 94, -1, 1292, -1, 88, 14, -1, 1130, -1, -1, + -1, -1, -1, -1, -1, 24, -1, -1, -1, -1, + -1, 30, 31, -1, 33, -1, 35, -1, -1, -1, + -1, -1, -1, 42, 1438, -1, -1, -1, -1, 756, + -1, -1, -1, -1, -1, -1, 55, -1, 57, -1, + -1, 1455, 1456, -1, -1, -1, 65, -1, -1, -1, + -1, -1, -1, 72, 1187, 782, 1189, -1, 1191, -1, + -1, -1, 1072, -1, 83, 84, 1199, 794, -1, -1, + -1, -1, -1, 1292, -1, 1208, 1209, -1, -1, -1, + 1213, -1, -1, -1, -1, -1, -1, 106, -1, -1, + -1, 1505, 1506, 1507, -1, 822, -1, -1, -1, -1, + -1, 828, 1235, -1, -1, -1, 1170, 1171, 1172, 1173, + 3, 4, 5, 6, 1178, 134, -1, 136, -1, -1, + -1, 140, 141, -1, -1, -1, 145, 146, 1261, -1, + 149, 150, 151, -1, -1, -1, -1, 1201, 1202, 1149, + 3, 4, 5, 6, -1, -1, 165, -1, 41, -1, + 169, -1, -1, -1, -1, 48, 175, 176, -1, 1292, + 1574, -1, -1, 56, 57, -1, 1176, -1, 31, 896, + -1, -1, -1, -1, 193, 194, 195, -1, 41, -1, + -1, -1, -1, 1316, -1, -1, -1, 80, -1, -1, + -1, 54, -1, 56, 57, 88, 4, 5, -1, -1, + 8, 9, 929, 222, -1, 963, 14, 70, 935, -1, + -1, -1, 939, -1, -1, -1, -1, 80, 976, 1438, + 239, -1, -1, 1356, -1, 88, 245, -1, 36, 248, + 93, 1295, 1296, -1, 1298, 1368, 1369, 45, -1, 47, + 259, -1, -1, -1, -1, -1, 54, -1, 56, 57, + 977, -1, 979, 1386, -1, -1, 983, -1, 82, -1, + -1, -1, 70, -1, -1, -1, -1, -1, 4, 5, + -1, -1, 80, 9, -1, -1, -1, -1, 297, 298, + -1, -1, 90, -1, -1, 93, 94, -1, 193, 194, + 195, -1, -1, -1, 3, 4, 5, 6, -1, -1, + 9, -1, -1, 1030, -1, 1438, -1, -1, -1, -1, + -1, 47, -1, -1, -1, -1, 1043, -1, 54, -1, + 56, 57, 31, 342, -1, -1, -1, 346, 1461, 348, + 349, 350, 41, -1, 70, 159, -1, -1, -1, -1, + 359, -1, -1, -1, 80, 54, -1, 56, 57, 1107, + -1, -1, -1, -1, 90, -1, 1489, 93, 94, -1, + 1087, 70, 1089, -1, -1, -1, -1, 191, -1, -1, + -1, 80, -1, -1, 393, 3, 4, 5, 6, 88, + 204, -1, -1, 402, 93, 404, 405, -1, -1, -1, + 1117, -1, -1, -1, -1, -1, 4, 5, -1, -1, + 419, 9, -1, 422, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 41, -1, 434, -1, -1, -1, -1, + -1, -1, -1, 442, -1, -1, 54, -1, 56, 57, + 3, 4, 5, 6, 62, 1193, 9, -1, -1, 47, + -1, 1199, 70, -1, -1, -1, 54, 1174, 56, 57, + -1, 470, 80, 472, -1, 474, 475, 476, 31, -1, + 88, 480, 70, -1, -1, 93, 485, -1, 41, 488, + -1, -1, 80, -1, 47, -1, 1203, -1, 1611, -1, + -1, 54, 90, 56, 57, 93, 94, -1, -1, 508, + 1217, -1, 511, -1, 513, -1, -1, 70, -1, 518, + 519, -1, 521, -1, -1, -1, 1, 80, 3, 4, + 5, 6, 7, 8, 9, 88, -1, 90, -1, 14, + 93, 94, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 28, -1, 30, 31, 32, -1, -1, + -1, 36, 561, 562, 563, 564, 41, -1, -1, -1, + 45, -1, -1, 48, -1, -1, -1, -1, -1, 54, + -1, 56, 57, 1321, 1322, 470, -1, 472, -1, 474, + 475, 476, -1, -1, -1, 70, -1, -1, -1, -1, + 485, -1, -1, -1, -1, 80, -1, -1, -1, -1, + -1, -1, -1, 88, -1, -1, -1, -1, 93, -1, + -1, -1, 621, 98, 623, -1, -1, -1, -1, -1, + -1, -1, -1, 518, -1, -1, 635, -1, 637, 638, + -1, 640, -1, -1, -1, -1, 1353, -1, 647, 4, + 5, -1, 651, 8, 9, -1, -1, -1, -1, 14, + -1, -1, -1, -1, 1402, -1, -1, 666, -1, -1, + -1, -1, -1, 28, 478, 30, -1, -1, -1, 483, + -1, 36, -1, -1, -1, -1, 1424, 1425, -1, -1, + 45, 690, 47, -1, -1, -1, -1, -1, 697, 54, + -1, 56, 57, -1, -1, -1, 705, 706, 707, 708, + 709, 710, -1, -1, -1, 70, -1, -1, -1, -1, + -1, -1, -1, 527, -1, 80, -1, -1, -1, 533, + -1, -1, -1, -1, -1, 90, -1, -1, 93, 94, + -1, 545, 546, -1, 548, -1, -1, -1, -1, 3, + 4, 5, 6, 752, -1, -1, -1, 756, -1, -1, + -1, 1499, -1, -1, 763, 764, -1, 766, 3, 4, + 5, 6, 7, 8, 9, -1, -1, -1, -1, 14, + -1, -1, -1, 782, -1, -1, 785, 41, -1, -1, + -1, -1, -1, -1, 48, 794, 31, -1, -1, -1, + 1507, 36, 56, 57, -1, -1, 41, -1, 807, -1, + 45, -1, 47, -1, 1521, -1, 815, -1, -1, 54, + -1, 56, 57, 822, -1, -1, -1, -1, -1, 828, + -1, -1, -1, -1, 88, 70, 835, 836, 837, 643, + 644, -1, -1, -1, 648, 80, -1, -1, 847, -1, + -1, -1, -1, 88, -1, 90, -1, -1, 93, 94, + -1, -1, -1, -1, -1, 4, 5, -1, 7, 8, + 9, -1, -1, 12, -1, 14, 4, -1, 763, 764, + -1, 766, -1, -1, -1, -1, 14, -1, -1, 28, + -1, 30, 31, -1, -1, 23, 24, 36, -1, -1, + 785, -1, 30, 31, -1, 33, 45, 35, 47, -1, + -1, -1, -1, -1, 42, 54, -1, 56, 57, -1, + -1, 920, -1, 922, -1, -1, -1, 55, -1, 57, + 929, 70, -1, -1, 933, -1, 935, 65, 937, 938, + 939, 80, -1, -1, 72, -1, 945, 3, 4, 5, + 6, 90, -1, -1, 93, 94, 84, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 3, 4, 5, 6, + -1, -1, 9, -1, -1, -1, -1, 781, 977, -1, + 979, -1, 981, 982, 983, 41, -1, -1, -1, 793, + -1, -1, 48, -1, 31, -1, -1, -1, -1, -1, + 56, 57, -1, -1, 41, -1, -1, -1, 136, -1, + -1, -1, 140, 141, -1, -1, -1, 54, 146, 56, + 57, 149, 150, 151, -1, 829, -1, 831, -1, -1, + -1, 1030, 88, 70, -1, -1, -1, 165, -1, -1, + -1, 169, -1, 80, 1043, -1, -1, 175, 176, -1, + -1, 88, -1, -1, -1, -1, 93, -1, -1, -1, + -1, -1, -1, -1, -1, 193, 194, 195, -1, -1, + 1069, -1, -1, -1, -1, 1074, -1, -1, 1077, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 1087, -1, + 1089, -1, -1, -1, 222, -1, 981, 982, 983, 903, + 904, -1, 906, 4, 5, -1, -1, 8, 9, -1, + 4, 5, -1, 14, 8, 9, -1, 245, 1117, -1, + 14, -1, -1, 1122, 1123, -1, 1125, 28, -1, 30, + 934, 259, -1, -1, 28, 36, 30, -1, -1, -1, + -1, -1, 36, -1, 45, 1030, -1, -1, -1, -1, + -1, 45, -1, 54, -1, 56, 57, 58, -1, -1, + 54, -1, 56, 57, -1, -1, -1, -1, -1, 297, + 298, 1170, 1171, 1172, 1173, 1174, -1, -1, -1, 1178, + -1, 985, -1, -1, 1069, -1, 348, 349, 350, -1, + -1, -1, 93, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 1201, 1202, 1203, 3, 4, 5, 6, 7, + 8, 9, -1, -1, 342, -1, 14, -1, 346, -1, + 348, 349, 350, -1, -1, -1, -1, 355, -1, -1, + 28, 359, 30, 31, 32, -1, -1, -1, 36, -1, + -1, -1, -1, 41, -1, -1, -1, 45, -1, -1, + 48, -1, -1, -1, -1, -1, 54, -1, 56, 57, + -1, -1, -1, -1, -1, 393, -1, -1, -1, -1, + -1, -1, 70, -1, 402, -1, 404, 405, -1, -1, + -1, -1, 80, -1, -1, 1170, 1171, 1172, 1173, 1174, + 88, 419, -1, 1178, 422, 93, 1295, 1296, -1, 1298, + 98, -1, 3, 4, 5, 6, 434, -1, 9, -1, + -1, -1, -1, -1, 442, -1, 1201, 1202, 1203, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 31, -1, -1, -1, 1138, 1334, 1335, 1336, -1, -1, + 41, -1, 470, -1, 472, -1, 474, 475, 476, -1, + -1, -1, 480, 54, 1353, 56, 57, 485, -1, 1, + 488, 3, 4, 5, 6, 7, 8, 9, -1, 70, + -1, -1, 14, 1177, -1, -1, -1, -1, -1, 80, + 508, -1, -1, 511, -1, 513, 28, 88, 30, 31, + 518, 519, 93, 521, 36, -1, -1, -1, -1, 41, + -1, -1, -1, 45, -1, -1, 48, -1, -1, -1, + 1295, 1296, 54, 1298, 56, 57, -1, -1, 60, -1, + 1224, -1, -1, -1, 1228, -1, -1, -1, 70, -1, + -1, -1, -1, 561, 562, 563, 564, -1, 80, 1438, + -1, -1, -1, -1, 1248, -1, 88, -1, 1252, -1, + -1, 93, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 3, 4, 5, 6, -1, -1, 9, -1, + -1, -1, -1, -1, -1, 637, 638, -1, 640, -1, + -1, -1, -1, 1287, -1, 647, -1, -1, -1, -1, + 31, -1, -1, 621, -1, 623, -1, -1, -1, -1, + 41, -1, -1, -1, -1, -1, 1505, 1506, 1507, 637, + 638, -1, 640, 54, -1, 56, 57, -1, -1, 647, + -1, -1, 1521, -1, -1, -1, -1, 1526, -1, 70, + -1, -1, 660, 3, 4, 5, 6, -1, 666, 80, + -1, -1, -1, 705, -1, 707, 708, 88, 710, -1, + -1, -1, 93, 1438, -1, -1, -1, -1, -1, -1, + -1, 31, 690, -1, -1, -1, -1, -1, -1, -1, + 698, 41, -1, -1, -1, 1379, 1380, 705, 706, 707, + 708, 709, 710, -1, 54, -1, 56, 57, -1, -1, + 752, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 70, -1, -1, -1, -1, 733, -1, -1, -1, -1, + 80, -1, -1, -1, -1, -1, -1, -1, 88, -1, + 1505, 1506, 1507, 93, 752, -1, -1, -1, 756, -1, + -1, -1, -1, -1, -1, 763, 764, -1, 766, -1, + -1, -1, -1, -1, 3, 4, 5, 6, 7, 8, + 9, -1, 780, 12, 782, 14, -1, 785, -1, -1, + -1, -1, -1, -1, -1, -1, 794, -1, -1, 28, + -1, 30, 31, -1, -1, -1, -1, 36, -1, -1, + -1, -1, 41, -1, -1, 847, 45, 815, 47, -1, + -1, -1, -1, -1, 822, 54, -1, 56, 57, -1, + 828, -1, -1, -1, -1, -1, -1, 835, 836, 837, + -1, 70, 3, 4, 5, 6, 7, 8, 9, 847, + -1, 80, -1, 14, -1, -1, -1, -1, -1, 88, + -1, 90, -1, -1, 93, 94, -1, 28, -1, 30, + 31, -1, -1, -1, -1, 36, -1, -1, -1, -1, + 41, -1, -1, -1, 45, -1, 47, -1, 920, -1, + 922, -1, -1, 54, -1, 56, 57, -1, -1, -1, + -1, 933, -1, -1, -1, 937, 938, 939, -1, 70, + 3, 4, 5, 6, 7, 8, 9, -1, -1, 80, + -1, 14, 920, -1, 922, -1, -1, 88, -1, 90, + -1, 929, 93, 94, -1, 933, -1, 935, 31, 937, + 938, 939, -1, 36, -1, -1, -1, 945, 41, 981, + 982, 983, 45, -1, 47, -1, -1, -1, -1, -1, + -1, 54, -1, 56, 57, 4, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 70, -1, 977, + -1, 979, -1, 981, 982, 983, -1, 80, -1, -1, + -1, 30, 31, -1, 33, 88, 35, -1, 1030, -1, + 93, -1, -1, 42, 73, 74, 75, 76, 77, 78, + 79, 80, 81, 82, 83, 84, 55, -1, 57, 3, + 4, 5, 6, 7, 8, 9, -1, -1, -1, -1, + 14, -1, 1030, -1, -1, -1, -1, -1, -1, -1, + -1, 80, -1, -1, 28, 1043, 30, 31, -1, -1, + -1, -1, 36, -1, -1, -1, -1, 41, -1, -1, + -1, 45, -1, -1, -1, -1, -1, -1, -1, -1, + 54, 1069, 56, 57, -1, -1, 1074, -1, 62, 1077, + -1, -1, -1, -1, -1, -1, 70, -1, -1, 1087, + -1, 1089, -1, -1, 133, 134, 80, 136, -1, -1, + -1, 140, 141, -1, 88, 144, -1, 146, -1, 93, + 149, 150, 151, -1, -1, -1, -1, 156, -1, 1117, + -1, -1, -1, -1, 1122, 1123, 165, 1125, -1, -1, + 169, -1, -1, -1, -1, -1, 175, 176, 1170, 1171, + 1172, 1173, 1174, -1, -1, -1, 1178, -1, -1, -1, + -1, -1, -1, -1, 193, 194, 195, -1, -1, -1, + -1, -1, -1, -1, 203, -1, -1, -1, -1, 1201, + 1202, 1203, 1170, 1171, 1172, 1173, 1174, -1, -1, -1, + 1178, -1, -1, 222, -1, -1, 1, 1185, 3, 4, + 5, 6, 7, 8, 9, -1, -1, -1, -1, 14, + -1, -1, -1, 1201, 1202, 1203, 245, -1, -1, -1, + -1, -1, -1, 28, -1, 30, 31, 32, -1, -1, + 259, 36, 37, -1, 1222, -1, 41, -1, -1, -1, + 45, 46, -1, 48, 3, 4, 5, 6, -1, 54, + 9, 56, 57, -1, -1, 60, -1, 62, -1, -1, -1, -1, -1, -1, -1, 70, -1, -1, -1, -1, - -1, 348, 349, 350, 175, 80, -1, -1, -1, -1, - -1, 1027, -1, 88, -1, 90, -1, -1, 93, 94, - -1, -1, 193, 194, 195, -1, -1, -1, -1, -1, - -1, -1, 203, -1, -1, -1, 868, 869, -1, 871, - -1, -1, -1, -1, -1, 1061, -1, 1499, 1500, 1501, - -1, 222, -1, -1, -1, -1, -1, 404, -1, 3, - 4, 5, 6, 7, 8, 9, -1, 899, -1, -1, - 14, 1523, -1, -1, -1, -1, -1, 248, -1, -1, - -1, -1, -1, -1, 28, -1, 30, 31, 32, -1, - 618, 262, 36, -1, -1, -1, -1, 41, -1, -1, - -1, 45, -1, -1, 48, -1, -1, -1, -1, -1, - 54, -1, 56, 57, -1, -1, -1, -1, 950, -1, - -1, 649, 329, 470, -1, 472, 70, 474, 475, 476, - -1, -1, -1, 480, -1, -1, 80, -1, 485, -1, - -1, 488, -1, -1, 88, -1, -1, 4, 5, 93, - 7, 8, 9, -1, 98, 12, -1, 14, -1, -1, - 688, 689, 690, 691, -1, -1, -1, -1, -1, -1, - -1, 28, -1, 30, 31, 3, 4, 5, 6, 36, - -1, -1, -1, 354, 355, -1, -1, -1, 45, -1, - -1, 1023, -1, -1, -1, 402, -1, 54, -1, 56, - 57, 1217, -1, 1035, -1, -1, 1222, 735, -1, -1, - -1, 739, -1, 41, -1, -1, -1, -1, 746, 747, - -1, 749, -1, -1, -1, -1, 54, -1, 56, 57, - -1, -1, -1, 404, 62, -1, -1, -1, -1, -1, - -1, 769, 70, 771, -1, -1, -1, -1, 776, 777, - 778, -1, 80, -1, -1, -1, 784, -1, -1, 606, - 88, 468, -1, -1, -1, 93, -1, -1, -1, -1, - -1, -1, -1, 620, 621, -1, 623, -1, -1, -1, - -1, -1, -1, 630, -1, -1, -1, -1, -1, 1121, - -1, -1, -1, -1, -1, 1311, 1312, 1313, -1, 470, - -1, 472, 649, 474, 475, 476, -1, -1, -1, 480, - -1, -1, -1, -1, 485, -1, -1, 488, -1, 3, - 4, 5, 6, -1, -1, 9, -1, -1, 1160, 536, - -1, -1, 539, -1, -1, -1, 543, 544, 545, 546, - 547, 688, -1, 690, 691, -1, 693, 31, -1, 556, - -1, -1, -1, -1, -1, -1, -1, 41, -1, -1, - -1, -1, 569, 47, -1, -1, -1, -1, -1, -1, - 54, -1, 56, 57, -1, -1, -1, -1, -1, -1, - -1, -1, 910, -1, -1, -1, 70, -1, 735, -1, - -1, -1, -1, 1225, -1, -1, 80, 1229, -1, 746, - 747, -1, 749, -1, 88, -1, 90, -1, -1, 93, - 94, -1, -1, -1, -1, -1, 623, -1, 946, 947, - 948, -1, -1, 630, -1, -1, -1, -1, -1, 776, - -1, -1, 1264, -1, -1, -1, -1, -1, -1, 1, + -1, -1, 31, 1295, 1296, 80, 1298, -1, -1, -1, + -1, -1, 41, 88, -1, -1, -1, -1, 93, -1, + -1, -1, -1, -1, -1, 54, -1, 56, 57, -1, + 329, -1, -1, -1, 109, -1, -1, 1295, 1296, -1, + 1298, 70, -1, -1, -1, -1, -1, 346, -1, -1, + -1, 80, -1, -1, -1, 354, -1, -1, -1, 88, + 359, -1, -1, -1, 93, 1323, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 1334, 1335, 1336, 70, + 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, + 81, 82, 83, 84, 393, 1353, -1, -1, -1, -1, + -1, 1359, -1, -1, -1, 404, -1, -1, -1, 1, -1, 3, 4, 5, 6, 7, 8, 9, -1, -1, - -1, -1, 14, 800, 801, 802, -1, -1, -1, -1, - -1, -1, 633, 634, -1, 812, 28, 995, 30, 31, - 32, -1, -1, -1, 36, 37, -1, -1, 649, 41, + 419, -1, 14, 422, -1, -1, -1, -1, -1, 428, + 429, 430, -1, -1, -1, 434, 28, -1, 30, 31, + 32, -1, -1, 442, 36, 37, -1, -1, -1, 41, -1, -1, -1, 45, 46, -1, 48, -1, -1, -1, - -1, -1, 54, -1, 56, 57, -1, -1, 60, 1027, - 62, -1, -1, -1, -1, -1, -1, 1523, 70, 1341, - -1, -1, -1, 1345, -1, -1, -1, 688, 80, 690, - 691, -1, -1, -1, -1, -1, 88, -1, -1, -1, - -1, 93, 739, 1061, -1, 1367, 1368, -1, 885, -1, - 887, -1, -1, -1, -1, -1, -1, 109, -1, -1, - -1, 898, -1, -1, -1, 902, 903, 904, -1, -1, - -1, -1, -1, -1, 735, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 746, 747, -1, 749, -1, - 787, -1, -1, -1, -1, -1, 793, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 946, - 947, 948, -1, -1, -1, 776, -1, -1, -1, -1, + -1, -1, 54, -1, 56, 57, -1, -1, 60, -1, + 62, 470, -1, 472, -1, 474, 475, 476, 70, -1, + 1438, 480, -1, -1, -1, -1, 485, -1, 80, 488, + -1, -1, 3, 4, 5, 6, 88, -1, -1, -1, + -1, 93, -1, 4, 5, -1, -1, 8, 9, -1, + -1, -1, 511, 14, 513, -1, -1, 109, -1, 518, + 519, -1, 521, -1, -1, -1, -1, 28, -1, 30, + 41, -1, -1, -1, -1, 36, -1, -1, -1, -1, + -1, -1, -1, 54, 45, 56, 57, 1505, 1506, 1507, + -1, 62, -1, 54, 553, 56, 57, 556, -1, 70, + -1, -1, -1, 1521, -1, -1, -1, -1, 1526, 80, + -1, -1, 571, 572, 573, -1, -1, 88, -1, 4, + -1, -1, 93, -1, -1, -1, -1, 586, -1, -1, + -1, 3, 4, 5, 6, -1, 1, 9, 3, 4, + 5, 6, 7, 8, 9, 30, 31, -1, 33, 14, + 35, -1, -1, -1, -1, -1, -1, 42, -1, 31, + -1, -1, 27, 28, -1, 30, 31, 32, -1, 41, + 55, 36, 57, -1, -1, 634, 41, -1, -1, 44, + 45, 46, 54, 48, 56, 57, -1, -1, 647, 54, + -1, 56, 57, -1, -1, 60, -1, -1, 70, -1, + -1, -1, -1, -1, -1, 70, -1, 666, 80, -1, + -1, -1, -1, -1, -1, 80, 88, -1, -1, -1, + -1, 93, -1, 88, -1, -1, -1, -1, 93, -1, + -1, 690, -1, 98, -1, -1, -1, 33, 697, -1, + -1, -1, -1, -1, -1, -1, 705, 706, 707, 708, + -1, 136, -1, -1, -1, 140, 141, -1, -1, 55, + -1, 146, -1, -1, 149, 150, 151, -1, -1, -1, + -1, -1, -1, -1, 3, 4, 5, 6, -1, -1, + 165, -1, -1, -1, 169, 3, 4, 5, 6, -1, + 175, 176, -1, 752, -1, -1, -1, 756, -1, -1, + -1, -1, -1, -1, 763, 764, -1, 766, 193, 194, + 195, -1, 41, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 41, -1, 54, 785, 56, 57, -1, + -1, 60, -1, 62, -1, -1, 54, 222, 56, 57, + -1, 70, 60, -1, -1, -1, -1, 806, -1, -1, + -1, 80, 70, 149, 150, 151, 815, -1, -1, 88, + 245, -1, 80, -1, 93, -1, -1, -1, -1, -1, + 88, -1, -1, -1, 259, 93, -1, -1, -1, 175, + -1, 1, 841, 3, 4, 5, 6, 7, 8, 9, + 10, 11, 12, 13, 14, -1, -1, 193, 194, 195, + -1, -1, -1, -1, -1, -1, -1, -1, 28, 29, + 30, 31, 32, -1, 34, 35, 36, -1, 38, 39, + 40, 41, 42, 43, -1, 45, 222, -1, -1, 49, + 50, 51, 52, 53, 54, -1, 56, 57, -1, -1, + -1, 61, -1, -1, -1, -1, -1, 67, -1, -1, + 70, -1, -1, -1, -1, -1, -1, -1, 78, 79, + 80, -1, -1, -1, -1, -1, 86, 87, 88, -1, + 355, -1, -1, 93, 359, -1, -1, -1, 937, 938, + 939, -1, -1, -1, 943, 944, -1, -1, 108, -1, + 110, -1, -1, 3, 4, 5, 6, 7, 8, 9, + -1, -1, 298, -1, 14, 72, 73, 74, 75, 76, + 77, 78, 79, 80, 81, 82, 83, 84, 28, 404, + 30, 31, 981, 982, 983, -1, 36, -1, -1, 988, + -1, 41, -1, -1, 419, 45, -1, 422, -1, -1, + -1, -1, -1, -1, 54, -1, 56, 57, -1, 434, + 60, -1, 348, 349, 350, -1, -1, 442, -1, -1, + 70, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 80, 1030, -1, -1, -1, -1, -1, -1, 88, -1, + -1, -1, -1, 93, -1, 470, -1, 472, -1, 474, + 475, 476, -1, -1, -1, 480, -1, -1, -1, -1, + 485, -1, -1, 488, -1, -1, -1, -1, 404, -1, + 1069, -1, -1, -1, -1, 1074, -1, -1, 1077, 3, + 4, 5, 6, 7, 8, 9, 511, -1, 513, -1, + 14, -1, -1, 518, 519, -1, 521, -1, -1, -1, + -1, -1, -1, -1, 28, -1, 30, 31, -1, -1, + -1, -1, 36, -1, -1, -1, -1, 41, -1, -1, + -1, 45, -1, -1, -1, -1, -1, -1, -1, -1, + 54, -1, 56, 57, 470, -1, 472, -1, 474, 475, + 476, -1, -1, -1, 480, -1, 70, -1, -1, 485, + 1149, -1, 488, -1, -1, -1, 80, -1, -1, -1, + -1, -1, -1, -1, 88, -1, -1, -1, -1, 93, + -1, 1170, 1171, 1172, 1173, 1174, -1, 1176, -1, 1178, + -1, -1, 518, -1, 1, -1, 3, 4, 5, 6, + -1, 8, 9, 10, 11, -1, 13, 14, -1, -1, + -1, -1, 1201, 1202, 1203, -1, -1, -1, -1, -1, + 635, 28, 29, 30, -1, 32, -1, 34, 35, 36, + -1, 38, 39, 40, 41, 42, 43, -1, 45, -1, + -1, -1, 49, 50, 51, 52, 53, 54, -1, 56, + 57, 666, -1, -1, 61, 62, -1, -1, -1, -1, + 67, -1, -1, 70, -1, -1, -1, -1, -1, -1, + -1, 78, 79, 80, -1, -1, 55, -1, -1, 86, + 87, 88, -1, -1, -1, -1, 93, -1, -1, -1, + 705, 706, 707, 708, -1, -1, -1, 623, -1, -1, + -1, 80, -1, 110, 83, -1, 1295, 1296, -1, 1298, + -1, 637, 638, -1, 640, -1, -1, -1, -1, -1, + -1, 647, -1, -1, -1, 104, -1, 106, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 752, -1, -1, + 666, 756, -1, -1, -1, 1334, 1335, 1336, 763, 764, + -1, 766, 67, 68, 69, 70, 71, 72, 73, 74, + 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, + 785, -1, -1, -1, -1, -1, -1, -1, -1, 705, + -1, 707, 708, -1, 710, -1, -1, -1, -1, -1, + -1, 3, 4, 5, 6, -1, 175, 9, -1, -1, + 815, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 193, 194, 195, -1, -1, 31, + -1, -1, -1, -1, 203, -1, 752, -1, -1, 41, + -1, -1, -1, -1, -1, -1, -1, 763, 764, -1, + 766, -1, 54, 222, 56, 57, -1, -1, -1, 1438, + -1, -1, -1, -1, -1, -1, -1, -1, 70, 785, + -1, 3, 4, 5, 6, 7, 8, 9, 80, 248, + 12, -1, 14, -1, -1, -1, 88, -1, -1, -1, + -1, 93, -1, 262, -1, -1, 28, -1, 30, 31, + -1, -1, -1, -1, 36, -1, -1, -1, -1, 41, + -1, -1, -1, 45, -1, -1, -1, -1, -1, 835, + 836, 837, 54, -1, 56, 57, 1505, 1506, 1507, -1, + -1, 847, -1, -1, -1, -1, -1, -1, 70, -1, + 945, -1, -1, -1, -1, -1, -1, 1526, 80, -1, + -1, -1, -1, -1, -1, -1, 88, -1, -1, -1, + -1, 93, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 981, 982, 983, -1, + -1, -1, -1, -1, -1, 354, 355, -1, -1, -1, -1, 3, 4, 5, 6, 7, 8, 9, -1, -1, - 12, -1, 14, -1, -1, 1153, 1154, 1155, 1156, 1157, - -1, -1, -1, 1161, -1, -1, 28, -1, 30, 31, - -1, -1, -1, -1, 36, -1, -1, -1, 995, 41, - -1, -1, -1, 45, 861, 47, 1184, 1185, 1186, 12, - -1, -1, 54, -1, 56, 57, -1, -1, -1, -1, + -1, -1, 14, -1, 920, -1, 922, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 28, 933, 30, 31, + -1, 937, 938, 939, 36, 1030, -1, -1, -1, 41, + -1, -1, -1, 45, -1, 404, -1, -1, -1, -1, + -1, -1, 54, -1, 56, 57, -1, -1, 60, -1, -1, -1, -1, -1, -1, -1, -1, -1, 70, -1, - 1027, -1, -1, -1, -1, -1, -1, 894, 80, 1217, - -1, -1, -1, 900, 1222, -1, 88, 904, 90, -1, - -1, 93, 94, -1, -1, -1, -1, -1, -1, 62, - 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, + -1, -1, -1, -1, 1069, 981, 982, 983, 80, 1074, + -1, -1, 1077, -1, -1, -1, 88, -1, -1, -1, + -1, 93, -1, -1, -1, 3, 4, 5, 6, 7, + 8, 9, -1, -1, -1, -1, 14, -1, -1, -1, + -1, 470, -1, 472, -1, 474, 475, 476, -1, -1, + 28, 480, 30, 31, 1030, -1, 485, -1, 36, 488, + -1, -1, -1, 41, -1, -1, -1, 45, -1, -1, + -1, -1, -1, -1, -1, -1, 54, -1, 56, 57, + -1, 14, -1, -1, -1, -1, -1, -1, -1, 518, + 23, 24, 70, 1069, -1, -1, -1, 30, 31, -1, + 33, 12, 80, -1, -1, 1170, 1171, 1172, 1173, 1174, + 88, -1, -1, 1178, -1, 93, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, - 83, 84, -1, -1, -1, 942, -1, 944, 909, 910, - 911, 948, -1, -1, 1272, 1273, -1, 1275, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 1105, 1106, - -1, 1108, -1, -1, -1, 3, 4, 5, 6, -1, - -1, 9, -1, -1, -1, 946, 947, 948, -1, -1, - 14, -1, 953, 1311, 1312, 1313, -1, -1, 995, 23, - 24, -1, -1, 31, -1, -1, 30, 31, -1, 33, - -1, 1008, -1, 41, -1, -1, 1153, 1154, 1155, 1156, - 1157, -1, 983, -1, 1161, -1, 54, 1024, 56, 57, - -1, -1, -1, -1, 995, -1, -1, -1, -1, 1036, - -1, 65, 70, -1, -1, -1, -1, 1184, 1185, 1186, - -1, -1, 80, -1, -1, -1, -1, -1, -1, -1, - 88, -1, -1, -1, -1, 93, 1027, -1, -1, -1, - -1, -1, -1, 1070, -1, 1072, -1, -1, -1, -1, - 1217, -1, -1, -1, -1, -1, -1, 1048, -1, -1, - 3, 4, 5, 6, 7, 8, 9, -1, -1, -1, - 124, 14, 126, 1100, -1, -1, -1, -1, 1426, 133, - 134, -1, -1, -1, -1, -1, 140, 141, 31, -1, - 144, 145, 146, 36, 148, 149, 150, 151, 41, -1, - -1, -1, 45, -1, 47, 1272, 1273, -1, 1275, -1, - -1, 54, -1, 56, 57, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 70, -1, -1, - 1157, -1, -1, -1, -1, -1, -1, 80, -1, -1, - -1, 1132, -1, -1, 1311, 88, 1313, -1, -1, -1, - 93, 1499, 1500, 1501, -1, -1, -1, -1, -1, 1186, - -1, -1, 1153, 1154, 1155, 1156, 1157, -1, 1159, -1, - 1161, -1, -1, 1200, -1, 1523, -1, -1, -1, -1, - -1, -1, -1, -1, 238, 239, -1, -1, -1, -1, - -1, -1, -1, 1184, 1185, 1186, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 259, -1, -1, -1, -1, - 1, -1, 3, 4, 5, 6, 7, 8, 9, -1, - -1, -1, -1, 14, -1, -1, 1217, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 28, -1, 30, - 31, 32, -1, -1, 298, 36, 37, -1, -1, -1, - 41, -1, -1, -1, 45, 46, -1, 48, -1, 1426, - -1, -1, -1, 54, -1, 56, 57, -1, -1, 60, - -1, 62, -1, -1, -1, -1, -1, -1, -1, 70, - -1, 1272, 1273, -1, 1275, -1, -1, -1, -1, 80, - -1, -1, 346, -1, 348, 349, -1, 88, -1, -1, - -1, -1, 93, 1330, -1, -1, -1, -1, -1, -1, - -1, 4, 5, -1, 7, 8, 9, -1, 109, 12, - 1311, 14, 1313, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 1499, 1500, 1501, 28, -1, 30, 31, 393, - -1, -1, -1, 36, -1, -1, -1, -1, -1, -1, - -1, -1, 45, -1, -1, -1, 1523, -1, 412, -1, - -1, 54, -1, 56, 57, 419, -1, -1, 422, -1, + 83, 84, 65, -1, -1, -1, 1201, 1202, 1203, -1, + -1, -1, -1, -1, -1, -1, 1122, 1123, -1, 1125, + -1, 62, 63, 64, 65, 66, 67, 68, 69, 70, + 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, + 81, 82, 83, 84, 68, 69, 70, 71, 72, 73, + 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, + 84, 124, -1, 126, 1170, 1171, 1172, 1173, 1174, -1, + 133, 134, 1178, -1, -1, -1, -1, 140, 141, -1, + -1, 144, 145, 146, -1, 148, 149, 150, 151, -1, + -1, 650, 651, -1, -1, 1201, 1202, 1203, -1, -1, + 1295, 1296, -1, 1298, -1, -1, -1, 666, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 3, 4, + 5, 6, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 1334, + 1335, 1336, -1, -1, -1, -1, 705, -1, 707, 708, + -1, -1, -1, -1, -1, -1, 41, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 54, + -1, 56, 57, -1, -1, 238, 239, 62, -1, -1, + -1, -1, -1, -1, -1, 70, -1, -1, -1, 1295, + 1296, -1, 1298, 752, -1, 80, 259, -1, -1, -1, + -1, -1, -1, 88, 763, 764, -1, 766, 93, -1, + -1, 1, -1, 3, 4, 5, 6, 7, 8, 9, + 10, 11, 12, 13, 14, -1, 785, -1, 1334, -1, + 1336, -1, -1, -1, -1, 298, -1, -1, 28, 29, + 30, 31, 32, 1438, 34, 35, 36, 806, 38, 39, + 40, 41, 42, 43, -1, 45, -1, 47, -1, 49, + 50, 51, 52, 53, 54, -1, 56, 57, 58, -1, + -1, 61, -1, -1, -1, -1, -1, 67, -1, -1, + 70, -1, -1, 346, -1, 348, 349, -1, 78, 79, + 80, 3, 4, 5, 6, -1, 86, 87, 88, -1, + 90, -1, -1, 93, 94, -1, -1, -1, -1, -1, + 1505, 1506, 1507, 3, 4, 5, 6, -1, -1, 31, + 110, -1, -1, -1, -1, -1, -1, -1, -1, 41, + 393, 1526, 1438, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 54, -1, 56, 57, -1, -1, -1, 412, + -1, 41, -1, -1, -1, -1, 419, -1, 70, 422, + -1, -1, -1, -1, 54, -1, 56, 57, 80, -1, + 60, 434, -1, -1, -1, -1, 88, -1, -1, -1, + 70, 93, -1, -1, -1, 944, 945, 946, -1, -1, + 80, -1, -1, -1, -1, -1, -1, -1, 88, 1505, + 1506, 1507, -1, 93, -1, -1, -1, -1, 4, 5, + -1, 7, 8, 9, 3, 4, 5, 6, 14, -1, + 1526, -1, 981, 982, 983, -1, -1, -1, -1, 988, + -1, -1, 28, -1, 30, 31, -1, -1, -1, 502, + 36, -1, -1, -1, -1, 508, -1, -1, -1, 45, + -1, -1, 41, -1, -1, -1, -1, -1, 54, 1018, + 56, 57, -1, -1, -1, 54, -1, 56, 57, -1, + -1, 1030, 1, -1, 3, 4, 5, 6, 7, 8, + 9, 70, -1, 12, 547, 14, -1, -1, -1, -1, + -1, 80, -1, -1, -1, -1, 25, -1, 27, 88, + -1, -1, 31, -1, 93, -1, -1, 36, -1, -1, + 1069, -1, 41, -1, -1, -1, 45, -1, 47, -1, + -1, -1, -1, -1, -1, 54, -1, 56, 57, 58, + 59, 60, -1, 62, 63, 64, 65, 66, 67, 68, + 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, + 79, 80, 81, 82, 83, 84, -1, 86, 87, 88, + 623, 90, 91, 92, 93, 94, 95, -1, 97, -1, + -1, 634, 635, 102, 637, 638, -1, -1, 107, 108, + 109, -1, 111, -1, -1, -1, -1, -1, -1, -1, + 1149, -1, -1, -1, -1, -1, -1, 4, 5, -1, + 7, 8, 9, -1, -1, -1, -1, 14, -1, -1, + -1, 1170, 1171, 1172, 1173, 1174, -1, 1176, -1, 1178, + -1, 28, -1, 30, 31, -1, -1, 690, -1, 36, + -1, -1, -1, -1, 697, 698, -1, -1, 45, -1, + -1, 48, 1201, 1202, 1203, -1, 709, 54, -1, 56, + 57, -1, -1, -1, -1, 1, -1, 3, 4, 5, + 6, 7, 8, 9, 10, 11, -1, 13, 14, 15, + 733, 17, 18, 19, 20, 21, 22, 23, 24, 25, + 26, 27, 28, 29, 30, 31, 32, -1, 34, 35, + 36, -1, 38, 39, 40, 41, 42, 43, 44, 45, + 46, -1, -1, 49, 50, 51, 52, 53, 54, -1, + 56, 57, 58, -1, 60, 61, -1, 780, -1, -1, + -1, 67, -1, -1, 70, -1, -1, -1, -1, -1, + -1, -1, 78, 79, 80, -1, 1295, 1296, -1, 1298, + 86, 87, 88, -1, 807, -1, -1, 93, -1, 95, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 434, 1, -1, 3, 4, 5, 6, 7, 8, 9, - 10, 11, -1, 13, 14, 15, -1, 17, 18, 19, - 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, - 30, 31, 32, -1, 34, 35, 36, -1, 38, 39, - 40, 41, 42, 43, 44, 45, 46, -1, -1, 49, - 50, 51, 52, 53, 54, 1426, 56, 57, 58, -1, - 60, 61, -1, -1, -1, -1, -1, 67, 502, -1, - 70, -1, -1, -1, -1, -1, -1, -1, 78, 79, - 80, -1, -1, -1, -1, -1, 86, 87, 88, -1, - -1, -1, -1, 93, 1501, 95, 530, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 109, - 110, 1518, 69, 70, 71, 72, 73, 74, 75, 76, - 77, 78, 79, 80, 81, 82, 83, 84, 1499, 1500, - 1501, -1, -1, -1, -1, 1, -1, 3, 4, 5, - 6, 7, 8, 9, -1, -1, 12, -1, 14, -1, - -1, -1, 1523, -1, -1, -1, -1, -1, -1, 25, - -1, 27, -1, -1, -1, 31, -1, -1, -1, -1, - 36, -1, 606, -1, -1, 41, -1, -1, -1, 45, - -1, 47, -1, 617, 618, -1, 620, 621, 54, -1, - 56, 57, 58, 59, 60, -1, 62, 63, 64, 65, - 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, - 76, 77, 78, 79, 80, 81, 82, 83, 84, -1, - 86, 87, 88, -1, 90, 91, 92, 93, 94, 95, - -1, 97, -1, -1, -1, -1, 102, -1, -1, 673, - -1, 107, 108, 109, -1, 111, 680, 681, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 692, -1, - -1, -1, -1, -1, -1, -1, -1, 1, -1, 3, - 4, 5, 6, 7, 8, 9, 10, 11, -1, 13, - 14, 15, 716, 17, 18, 19, 20, 21, 22, 23, - 24, 25, 26, 27, 28, 29, 30, 31, 32, -1, - 34, 35, 36, -1, 38, 39, 40, 41, 42, 43, - 44, 45, 46, -1, -1, 49, 50, 51, 52, 53, - 54, -1, 56, 57, 58, -1, 60, 61, -1, 763, - -1, -1, 766, 67, -1, -1, 70, -1, -1, -1, - -1, -1, -1, -1, 78, 79, 80, -1, -1, -1, - -1, -1, 86, 87, 88, -1, -1, -1, -1, 93, - -1, 95, -1, -1, -1, -1, 800, 801, 802, -1, - -1, -1, -1, -1, -1, -1, 110, -1, 812, -1, - 1, -1, 3, 4, 5, 6, 7, 8, 9, 10, - 11, 12, 13, 14, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 28, 29, 30, - 31, 32, -1, 34, 35, 36, -1, 38, 39, 40, - 41, 42, 43, -1, 45, -1, 47, -1, 49, 50, - 51, 52, 53, 54, -1, 56, 57, 58, -1, -1, - 61, -1, -1, -1, -1, -1, 67, -1, -1, 70, - -1, 885, -1, 887, -1, -1, -1, 78, 79, 80, - -1, -1, -1, -1, 898, 86, 87, 88, -1, 90, - -1, -1, 93, 94, 1, -1, 3, 4, 5, 6, - 7, 8, 9, 10, 11, 12, 13, 14, -1, 110, + -1, -1, -1, 109, 110, -1, -1, -1, -1, -1, + -1, -1, 835, 836, 837, 1334, -1, 1336, -1, -1, + -1, -1, -1, -1, 847, -1, 1, -1, 3, 4, + 5, 6, 7, 8, 9, 10, 11, -1, 13, 14, + 15, -1, 17, 18, 19, 20, 21, 22, 23, 24, + 25, 26, 27, 28, 29, 30, 31, 32, -1, 34, + 35, 36, -1, 38, 39, 40, 41, 42, 43, 44, + 45, 46, -1, -1, 49, 50, 51, 52, 53, 54, + -1, 56, 57, 58, -1, 60, 61, -1, -1, -1, + -1, -1, 67, -1, -1, 70, -1, 920, -1, 922, + -1, -1, -1, 78, 79, 80, 31, -1, -1, -1, + 933, 86, 87, 88, -1, -1, -1, -1, 93, 1438, + 95, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 110, -1, -1, 63, 64, + 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, + 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, + -1, -1, -1, -1, -1, 4, 5, -1, 7, 8, + 9, -1, -1, 12, -1, 14, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 1505, 1506, 1507, 28, + -1, 30, 31, -1, -1, 1018, -1, 36, -1, -1, + -1, -1, -1, -1, -1, -1, 45, 1526, -1, -1, + -1, -1, -1, -1, -1, 54, -1, 56, 57, -1, + -1, -1, -1, -1, -1, -1, 1, -1, 3, 4, + 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 1072, + -1, 1074, -1, 28, 29, 30, 31, 32, -1, 34, + 35, 36, -1, 38, 39, 40, 41, 42, 43, -1, + 45, -1, 47, -1, 49, 50, 51, 52, 53, 54, + -1, 56, 57, 58, -1, -1, 61, -1, -1, -1, + -1, -1, 67, -1, -1, 70, -1, -1, -1, 1122, + 1123, -1, 1125, 78, 79, 80, -1, -1, -1, -1, + -1, 86, 87, 88, -1, 90, -1, -1, 93, 94, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 28, 29, 30, 31, 32, -1, 34, 35, 36, - -1, 38, 39, 40, 41, 42, 43, -1, 45, -1, - 47, -1, 49, 50, 51, 52, 53, 54, -1, 56, - 57, 58, -1, -1, 61, -1, -1, -1, -1, -1, - 67, -1, -1, 70, -1, -1, -1, -1, -1, 983, - -1, 78, 79, 80, -1, -1, -1, -1, -1, 86, - 87, 88, -1, 90, -1, -1, 93, 94, 1, -1, - 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, - 13, 14, -1, 110, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 28, 29, 30, 31, 32, - -1, 34, 35, 36, -1, 38, 39, 40, 41, 42, - 43, -1, 45, -1, -1, 1049, 49, 50, 51, 52, - 53, 54, -1, 56, 57, -1, -1, -1, 61, -1, - -1, -1, -1, -1, 67, -1, -1, 70, -1, -1, - -1, -1, -1, -1, -1, 78, 79, 80, -1, -1, - -1, -1, -1, 86, 87, 88, -1, -1, -1, -1, - 93, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 1105, 1106, -1, 1108, 108, 1, 110, 3, 4, + -1, -1, -1, -1, -1, 110, 1, -1, 3, 4, 5, 6, 7, 8, 9, 10, 11, -1, 13, 14, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 28, 29, 30, 31, 32, -1, 34, + -1, -1, 1185, 28, 29, 30, 31, 32, -1, 34, 35, 36, -1, 38, 39, 40, 41, 42, 43, -1, 45, -1, -1, -1, 49, 50, 51, 52, 53, 54, - -1, 56, 57, 58, 1168, 60, 61, -1, -1, -1, + -1, 56, 57, 58, -1, 60, 61, -1, -1, 1222, -1, -1, 67, -1, -1, 70, -1, -1, -1, -1, -1, -1, -1, 78, 79, 80, -1, -1, -1, -1, - -1, 86, 87, 88, -1, -1, -1, -1, 93, -1, - 1, 1205, 3, 4, 5, 6, -1, 8, 9, 10, - 11, -1, 13, 14, -1, 110, 1220, -1, 1222, -1, + -1, 86, 87, 88, -1, -1, -1, -1, 93, 1, + -1, 3, 4, 5, 6, -1, 8, 9, 10, 11, + -1, 13, 14, -1, -1, 110, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 28, 29, 30, -1, + 32, -1, 34, 35, 36, -1, 38, 39, 40, 41, + 42, 43, -1, 45, -1, -1, -1, 49, 50, 51, + 52, 53, 54, -1, 56, 57, 58, -1, -1, 61, + -1, -1, -1, -1, -1, 67, -1, -1, 70, -1, + -1, -1, -1, -1, -1, -1, 78, 79, 80, -1, + -1, -1, -1, -1, 86, 87, 88, -1, -1, -1, + -1, 93, 94, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 1359, 109, 110, 1, + -1, 3, 4, 5, 6, -1, 8, 9, 10, 11, + -1, 13, 14, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 28, 29, 30, 31, + 32, -1, 34, 35, 36, -1, 38, 39, 40, 41, + 42, 43, -1, 45, -1, -1, -1, 49, 50, 51, + 52, 53, 54, -1, 56, 57, 58, -1, -1, 61, + -1, -1, -1, -1, -1, 67, -1, -1, 70, -1, + -1, -1, -1, -1, -1, -1, 78, 79, 80, -1, + -1, -1, -1, -1, 86, 87, 88, -1, -1, -1, + 1, 93, 3, 4, 5, 6, -1, 8, 9, 10, + 11, -1, 13, 14, -1, -1, -1, -1, 110, -1, -1, -1, -1, -1, -1, -1, -1, 28, 29, 30, -1, 32, -1, 34, 35, 36, -1, 38, 39, 40, 41, 42, 43, -1, 45, -1, -1, -1, 49, 50, @@ -3249,29 +3285,18 @@ static const short yycheck[] = { 4, 61, -1, -1, -1, -1, -1, 67, -1, -1, 70, -1, -1, -1, -1, -1, -1, -1, 78, 79, 80, -1, -1, -1, -1, -1, 86, 87, 88, -1, -1, - -1, -1, 93, 94, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 109, 110, - 1, -1, 3, 4, 5, 6, -1, 8, 9, 10, - 11, -1, 13, 14, -1, -1, -1, -1, -1, -1, - -1, -1, 1336, -1, -1, -1, -1, 28, 29, 30, - 31, 32, -1, 34, 35, 36, -1, 38, 39, 40, - 41, 42, 43, -1, 45, -1, -1, -1, 49, 50, - 51, 52, 53, 54, -1, 56, 57, 58, -1, -1, - 61, -1, -1, -1, -1, -1, 67, -1, -1, 70, - -1, -1, -1, -1, -1, -1, -1, 78, 79, 80, - -1, -1, -1, -1, -1, 86, 87, 88, -1, -1, - -1, 1, 93, 3, 4, 5, 6, -1, 8, 9, - 10, 11, -1, 13, 14, -1, -1, -1, -1, 110, - -1, -1, -1, -1, -1, -1, -1, -1, 28, 29, - 30, -1, 32, -1, 34, 35, 36, -1, 38, 39, - 40, 41, 42, 43, -1, 45, -1, -1, -1, 49, - 50, 51, 52, 53, 54, -1, 56, 57, 58, -1, - -1, 61, -1, -1, -1, -1, -1, 67, -1, -1, - 70, -1, -1, -1, -1, -1, -1, -1, 78, 79, - 80, -1, -1, -1, -1, -1, 86, 87, 88, -1, - -1, -1, -1, 93, 94, 1, -1, 3, 4, 5, + -1, -1, 93, 94, 1, -1, 3, 4, 5, 6, + -1, 8, 9, 10, 11, -1, 13, 14, -1, 110, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 28, 29, 30, -1, 32, -1, 34, 35, 36, + -1, 38, 39, 40, 41, 42, 43, -1, 45, -1, + -1, -1, 49, 50, 51, 52, 53, 54, -1, 56, + 57, 58, -1, -1, 61, -1, -1, -1, -1, -1, + 67, -1, -1, 70, -1, -1, -1, -1, -1, -1, + -1, 78, 79, 80, -1, -1, -1, -1, -1, 86, + 87, 88, -1, -1, -1, 1, 93, 3, 4, 5, 6, -1, 8, 9, 10, 11, -1, 13, 14, -1, - 110, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 109, 110, -1, -1, -1, -1, -1, -1, -1, -1, 28, 29, 30, -1, 32, -1, 34, 35, 36, -1, 38, 39, 40, 41, 42, 43, -1, 45, -1, -1, -1, 49, 50, 51, 52, 53, 54, -1, @@ -3287,20 +3312,20 @@ static const short yycheck[] = { 4, -1, 56, 57, 58, -1, -1, 61, -1, -1, -1, -1, -1, 67, -1, -1, 70, -1, -1, -1, -1, -1, -1, -1, 78, 79, 80, -1, -1, -1, -1, - -1, 86, 87, 88, -1, -1, -1, 1, 93, 3, - 4, 5, 6, -1, 8, 9, 10, 11, -1, 13, - 14, -1, -1, -1, 109, 110, -1, -1, -1, -1, - -1, -1, -1, -1, 28, 29, 30, -1, 32, -1, - 34, 35, 36, -1, 38, 39, 40, 41, 42, 43, - -1, 45, -1, -1, -1, 49, 50, 51, 52, 53, - 54, -1, 56, 57, 58, -1, -1, 61, -1, -1, - -1, -1, -1, 67, -1, -1, 70, -1, -1, -1, - -1, -1, -1, -1, 78, 79, 80, -1, -1, -1, - -1, -1, 86, 87, 88, -1, -1, -1, -1, 93, - -1, 1, -1, 3, 4, 5, 6, 101, 8, 9, - 10, 11, -1, 13, 14, -1, 110, -1, -1, -1, + -1, 86, 87, 88, -1, -1, -1, -1, 93, -1, + 1, -1, 3, 4, 5, 6, 101, 8, 9, 10, + 11, -1, 13, 14, -1, 110, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 28, 29, 30, + 31, 32, -1, 34, 35, 36, -1, 38, 39, 40, + 41, 42, 43, -1, 45, -1, -1, -1, 49, 50, + 51, 52, 53, 54, -1, 56, 57, 58, -1, -1, + 61, -1, -1, -1, -1, -1, 67, -1, -1, 70, + -1, -1, -1, -1, -1, -1, -1, 78, 79, 80, + -1, -1, -1, -1, -1, 86, 87, 88, -1, -1, + -1, 1, 93, 3, 4, 5, 6, -1, 8, 9, + 10, 11, -1, 13, 14, -1, -1, -1, -1, 110, -1, -1, -1, -1, -1, -1, -1, -1, 28, 29, - 30, 31, 32, -1, 34, 35, 36, -1, 38, 39, + 30, -1, 32, -1, 34, 35, 36, -1, 38, 39, 40, 41, 42, 43, -1, 45, -1, -1, -1, 49, 50, 51, 52, 53, 54, -1, 56, 57, 58, -1, -1, 61, -1, -1, -1, -1, -1, 67, -1, -1, @@ -3311,8 +3336,8 @@ static const short yycheck[] = { 4, 110, -1, -1, -1, -1, -1, -1, -1, -1, 28, 29, 30, -1, 32, -1, 34, 35, 36, -1, 38, 39, 40, 41, 42, 43, -1, 45, -1, -1, -1, - 49, 50, 51, 52, 53, 54, -1, 56, 57, 58, - -1, -1, 61, -1, -1, -1, -1, -1, 67, -1, + 49, 50, 51, 52, 53, 54, -1, 56, 57, -1, + -1, 60, 61, -1, -1, -1, -1, -1, 67, -1, -1, 70, -1, -1, -1, -1, -1, -1, -1, 78, 79, 80, -1, -1, -1, -1, -1, 86, 87, 88, -1, -1, -1, 1, 93, 3, 4, 5, 6, -1, @@ -3321,90 +3346,68 @@ static const short yycheck[] = { 4, 28, 29, 30, -1, 32, -1, 34, 35, 36, -1, 38, 39, 40, 41, 42, 43, -1, 45, -1, -1, -1, 49, 50, 51, 52, 53, 54, -1, 56, 57, - -1, -1, -1, 61, 62, -1, -1, -1, -1, 67, - -1, -1, 70, -1, -1, -1, -1, -1, -1, -1, - 78, 79, 80, -1, -1, -1, -1, -1, 86, 87, - 88, -1, -1, -1, 1, 93, 3, 4, 5, 6, - -1, 8, 9, 10, 11, -1, 13, 14, -1, -1, - -1, -1, 110, -1, -1, -1, -1, -1, -1, -1, - -1, 28, 29, 30, -1, 32, -1, 34, 35, 36, - -1, 38, 39, 40, 41, 42, 43, -1, 45, -1, - -1, -1, 49, 50, 51, 52, 53, 54, -1, 56, - 57, -1, -1, 60, 61, -1, -1, -1, -1, -1, - 67, -1, -1, 70, -1, -1, -1, -1, -1, -1, - -1, 78, 79, 80, -1, -1, -1, -1, -1, 86, - 87, 88, -1, -1, -1, 1, 93, 3, 4, 5, - 6, -1, 8, 9, 10, 11, -1, 13, 14, -1, - -1, -1, -1, 110, -1, -1, -1, -1, -1, -1, - -1, -1, 28, 29, 30, -1, 32, -1, 34, 35, - 36, -1, 38, 39, 40, 41, 42, 43, -1, 45, - -1, -1, -1, 49, 50, 51, 52, 53, 54, -1, - 56, 57, -1, -1, -1, 61, -1, -1, -1, -1, - -1, 67, 1, -1, 70, 4, 5, -1, -1, 8, - 9, -1, 78, 79, 80, 14, -1, -1, -1, -1, - 86, 87, 88, -1, -1, -1, -1, 93, -1, 28, - -1, 30, -1, -1, -1, -1, -1, 36, -1, 38, - 39, -1, 108, -1, 110, -1, 45, -1, 47, -1, - -1, -1, -1, -1, -1, 54, -1, 56, 57, -1, - 59, -1, -1, -1, 63, 64, 65, 66, 67, 68, - 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, - 79, 80, 81, 82, 83, -1, -1, 86, 87, 88, - -1, -1, 91, -1, 1, 94, 3, 4, 5, 6, - -1, 8, 9, 10, 11, -1, 13, 14, -1, -1, - -1, 110, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 28, 29, 30, -1, 32, -1, 34, 35, 36, - -1, 38, 39, 40, 41, 42, 43, -1, 45, -1, - -1, -1, 49, 50, 51, 52, 53, 54, -1, 56, - 57, -1, -1, -1, 61, -1, -1, -1, -1, -1, - 67, -1, -1, 70, -1, -1, -1, -1, -1, -1, - -1, 78, 79, 80, -1, -1, -1, -1, -1, 86, - 87, 88, -1, -1, -1, 1, 93, 3, 4, 5, - 6, -1, 8, 9, 10, 11, -1, 13, 14, -1, - -1, -1, -1, 110, -1, -1, -1, -1, -1, -1, - -1, -1, 28, 29, 30, -1, 32, -1, 34, 35, - 36, -1, 38, 39, 40, 41, 42, 43, -1, 45, - -1, -1, -1, 49, 50, 51, 52, 53, 54, -1, - 56, 57, -1, -1, -1, 61, -1, -1, -1, -1, - -1, 67, -1, -1, 70, -1, -1, -1, -1, -1, - -1, -1, 78, 79, 80, -1, -1, -1, -1, -1, - 86, 87, 88, -1, -1, -1, 1, 93, 3, 4, - 5, 6, -1, 8, 9, 10, 11, -1, 13, 14, - -1, -1, -1, -1, 110, -1, -1, -1, -1, -1, - -1, -1, -1, 28, 29, 30, -1, 32, -1, 34, - 35, 36, -1, 38, 39, 40, 41, 42, 43, -1, - 45, -1, -1, -1, 49, 50, 51, 52, 53, 54, - -1, 56, 57, -1, -1, -1, 61, -1, -1, -1, - -1, -1, 67, -1, -1, 70, -1, -1, -1, -1, - -1, -1, -1, 78, 79, 80, -1, -1, -1, -1, - -1, 86, 87, 88, 3, 4, 5, 6, 93, 8, - 9, 10, 11, -1, 13, 14, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 110, -1, -1, -1, 28, + -1, -1, -1, 61, -1, -1, -1, -1, -1, 67, + 1, -1, 70, 4, 5, -1, -1, 8, 9, -1, + 78, 79, 80, 14, -1, -1, -1, -1, 86, 87, + 88, -1, -1, -1, -1, 93, -1, 28, -1, 30, + -1, -1, -1, -1, -1, 36, -1, 38, 39, -1, + 108, -1, 110, -1, 45, -1, 47, -1, -1, -1, + -1, -1, -1, 54, -1, 56, 57, -1, 59, -1, + -1, -1, 63, 64, 65, 66, 67, 68, 69, 70, + 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, + 81, 82, 83, -1, -1, 86, 87, 88, -1, -1, + 91, -1, 1, 94, 3, 4, 5, 6, -1, 8, + 9, 10, 11, -1, 13, 14, -1, -1, -1, 110, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 28, 29, 30, -1, 32, -1, 34, 35, 36, -1, 38, 39, 40, 41, 42, 43, -1, 45, -1, -1, -1, 49, 50, 51, 52, 53, 54, -1, 56, 57, -1, -1, -1, 61, -1, -1, -1, -1, -1, 67, -1, - 1, 70, 3, 4, 5, 6, 7, 8, 9, 78, - 79, 80, -1, 14, -1, -1, -1, 86, 87, 88, - -1, -1, -1, -1, 93, -1, -1, 28, -1, 30, - 31, 32, -1, -1, -1, 36, 37, -1, -1, -1, - 41, 110, 111, -1, 45, 46, -1, 48, -1, -1, - -1, -1, -1, 54, -1, 56, 57, -1, -1, 60, - -1, 62, -1, -1, -1, -1, -1, -1, -1, 70, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 80, - -1, -1, -1, -1, -1, -1, -1, 88, -1, -1, - -1, -1, 93, -1, -1, 3, 4, 5, 6, 7, - 8, 9, 10, 11, -1, 13, 14, 15, 109, 17, - 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, - 28, 29, 30, 31, 32, -1, 34, 35, 36, -1, - 38, 39, 40, 41, 42, 43, 44, 45, 46, -1, + -1, 70, -1, -1, -1, -1, -1, -1, -1, 78, + 79, 80, -1, -1, -1, -1, -1, 86, 87, 88, + -1, -1, -1, 1, 93, 3, 4, 5, 6, -1, + 8, 9, 10, 11, -1, 13, 14, -1, -1, -1, + -1, 110, -1, -1, -1, -1, -1, -1, -1, -1, + 28, 29, 30, -1, 32, -1, 34, 35, 36, -1, + 38, 39, 40, 41, 42, 43, -1, 45, -1, -1, -1, 49, 50, 51, 52, 53, 54, -1, 56, 57, - 58, -1, 60, 61, -1, -1, -1, -1, -1, 67, + -1, -1, -1, 61, -1, -1, -1, -1, -1, 67, -1, -1, 70, -1, -1, -1, -1, -1, -1, -1, 78, 79, 80, -1, -1, -1, -1, -1, 86, 87, - 88, -1, -1, -1, -1, 93, -1, 95, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 109, 110, 3, 4, 5, 6, 7, 8, 9, - 10, 11, -1, 13, 14, 15, -1, 17, 18, 19, + 88, -1, -1, -1, 1, 93, 3, 4, 5, 6, + -1, 8, 9, 10, 11, -1, 13, 14, -1, -1, + -1, -1, 110, -1, -1, -1, -1, -1, -1, -1, + -1, 28, 29, 30, -1, 32, -1, 34, 35, 36, + -1, 38, 39, 40, 41, 42, 43, -1, 45, -1, + -1, -1, 49, 50, 51, 52, 53, 54, -1, 56, + 57, -1, -1, -1, 61, -1, -1, -1, -1, -1, + 67, -1, -1, 70, -1, -1, -1, -1, -1, -1, + -1, 78, 79, 80, -1, -1, -1, -1, -1, 86, + 87, 88, 3, 4, 5, 6, 93, 8, 9, 10, + 11, -1, 13, 14, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 110, -1, -1, -1, 28, 29, 30, + -1, 32, -1, 34, 35, 36, -1, 38, 39, 40, + 41, 42, 43, -1, 45, -1, -1, -1, 49, 50, + 51, 52, 53, 54, -1, 56, 57, -1, -1, -1, + 61, -1, -1, -1, -1, -1, 67, -1, 1, 70, + 3, 4, 5, 6, 7, 8, 9, 78, 79, 80, + -1, 14, -1, -1, -1, 86, 87, 88, -1, -1, + -1, -1, 93, -1, -1, 28, -1, 30, 31, 32, + -1, -1, -1, 36, 37, -1, -1, -1, 41, 110, + 111, -1, 45, 46, -1, 48, -1, -1, -1, -1, + -1, 54, -1, 56, 57, -1, -1, 60, -1, 62, + -1, -1, -1, -1, -1, -1, -1, 70, 1, -1, + 3, 4, 5, 6, 7, 8, 9, 80, -1, -1, + -1, 14, -1, -1, -1, 88, -1, -1, -1, -1, + 93, -1, -1, -1, -1, 28, -1, 30, 31, 32, + -1, -1, -1, 36, 37, -1, 109, -1, 41, -1, + -1, -1, 45, 46, -1, 48, -1, -1, -1, -1, + -1, 54, -1, 56, 57, -1, -1, 60, -1, 62, + -1, -1, -1, -1, -1, -1, -1, 70, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 80, -1, -1, + -1, -1, -1, -1, -1, 88, -1, -1, -1, -1, + 93, -1, -1, 3, 4, 5, 6, 7, 8, 9, + 10, 11, -1, 13, 14, 15, 109, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, -1, 34, 35, 36, -1, 38, 39, 40, 41, 42, 43, 44, 45, 46, -1, -1, 49, @@ -3412,27 +3415,47 @@ static const short yycheck[] = { 4, 60, 61, -1, -1, -1, -1, -1, 67, -1, -1, 70, -1, -1, -1, -1, -1, -1, -1, 78, 79, 80, -1, -1, -1, -1, -1, 86, 87, 88, -1, - -1, -1, -1, 93, -1, 95, -1, 3, 4, 5, - 6, 7, 8, 9, 10, 11, -1, 13, 14, 15, - 110, 17, 18, 19, 20, 21, 22, 23, 24, 25, - 26, 27, 28, 29, 30, 31, 32, -1, 34, 35, - 36, -1, 38, 39, 40, 41, 42, 43, 44, 45, - 46, -1, -1, 49, 50, 51, 52, 53, 54, -1, - 56, 57, 58, -1, 60, 61, -1, -1, -1, -1, - -1, 67, -1, -1, 70, -1, -1, -1, -1, -1, - -1, -1, 78, 79, 80, -1, -1, -1, -1, -1, - 86, 87, 88, -1, -1, -1, -1, 93, -1, 95, - -1, 3, 4, 5, 6, 7, 8, 9, 10, 11, - -1, 13, 14, 15, 110, 17, 18, 19, 20, 21, + -1, -1, -1, 93, -1, 95, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 109, + 110, 3, 4, 5, 6, 7, 8, 9, 10, 11, + -1, 13, 14, 15, -1, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, -1, 34, 35, 36, -1, 38, 39, 40, 41, 42, 43, 44, 45, 46, -1, -1, 49, 50, 51, - 52, 53, 54, -1, 56, 57, -1, -1, 60, 61, + 52, 53, 54, -1, 56, 57, 58, -1, 60, 61, -1, -1, -1, -1, -1, 67, -1, -1, 70, -1, -1, -1, -1, -1, -1, -1, 78, 79, 80, -1, -1, -1, -1, -1, 86, 87, 88, -1, -1, -1, - -1, 93, -1, 95, 3, 4, 5, 6, 7, 8, - 9, 10, 11, 12, 13, 14, -1, -1, 110, -1, + -1, 93, -1, 95, -1, 3, 4, 5, 6, 7, + 8, 9, 10, 11, -1, 13, 14, 15, 110, 17, + 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, + 28, 29, 30, 31, 32, -1, 34, 35, 36, -1, + 38, 39, 40, 41, 42, 43, 44, 45, 46, -1, + -1, 49, 50, 51, 52, 53, 54, -1, 56, 57, + 58, -1, 60, 61, -1, -1, -1, -1, -1, 67, + -1, -1, 70, -1, -1, -1, -1, -1, -1, -1, + 78, 79, 80, -1, -1, -1, -1, -1, 86, 87, + 88, -1, -1, -1, -1, 93, -1, 95, -1, 3, + 4, 5, 6, 7, 8, 9, 10, 11, -1, 13, + 14, 15, 110, 17, 18, 19, 20, 21, 22, 23, + 24, 25, 26, 27, 28, 29, 30, 31, 32, -1, + 34, 35, 36, -1, 38, 39, 40, 41, 42, 43, + 44, 45, 46, -1, -1, 49, 50, 51, 52, 53, + 54, -1, 56, 57, -1, -1, 60, 61, -1, -1, + -1, -1, -1, 67, -1, -1, 70, -1, -1, -1, + -1, -1, -1, -1, 78, 79, 80, -1, -1, -1, + -1, -1, 86, 87, 88, -1, -1, -1, -1, 93, + -1, 95, 3, 4, 5, 6, 7, 8, 9, 10, + 11, 12, 13, 14, -1, -1, 110, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 28, 29, 30, + 31, 32, -1, 34, 35, 36, -1, 38, 39, 40, + 41, 42, 43, -1, 45, -1, 47, -1, 49, 50, + 51, 52, 53, 54, -1, 56, 57, -1, -1, -1, + 61, -1, -1, -1, -1, -1, 67, -1, -1, 70, + -1, -1, -1, -1, -1, -1, -1, 78, 79, 80, + -1, -1, -1, -1, -1, 86, 87, 88, -1, 90, + -1, -1, 93, 94, 3, 4, 5, 6, 7, 8, + 9, 10, 11, 12, 13, 14, -1, -1, -1, 110, -1, -1, -1, -1, -1, -1, -1, -1, -1, 28, 29, 30, 31, 32, -1, 34, 35, 36, -1, 38, 39, 40, 41, 42, 43, -1, 45, -1, 47, -1, @@ -3441,12 +3464,12 @@ static const short yycheck[] = { 4, -1, 70, -1, -1, -1, -1, -1, -1, -1, 78, 79, 80, -1, -1, -1, -1, -1, 86, 87, 88, -1, 90, -1, -1, 93, 94, 3, 4, 5, 6, - 7, 8, 9, 10, 11, 12, 13, 14, -1, -1, + -1, 8, 9, 10, 11, -1, 13, 14, -1, -1, -1, 110, -1, -1, -1, -1, -1, -1, -1, -1, -1, 28, 29, 30, 31, 32, -1, 34, 35, 36, -1, 38, 39, 40, 41, 42, 43, -1, 45, -1, 47, -1, 49, 50, 51, 52, 53, 54, -1, 56, - 57, -1, -1, -1, 61, -1, -1, -1, -1, -1, + 57, -1, -1, -1, -1, -1, -1, -1, -1, -1, 67, -1, -1, 70, -1, -1, -1, -1, -1, -1, -1, 78, 79, 80, -1, -1, -1, -1, -1, 86, 87, 88, -1, 90, -1, -1, 93, 94, 3, 4, @@ -3587,103 +3610,33 @@ static const short yycheck[] = { 4, 38, 39, 40, 41, 42, 43, -1, 45, -1, -1, -1, 49, 50, 51, 52, 53, 54, -1, 56, 57, -1, -1, -1, -1, -1, -1, -1, -1, -1, 67, - -1, 1, 70, 3, 4, 5, 6, 7, 8, 9, - 78, 79, 80, -1, 14, -1, -1, -1, 86, 87, - 88, -1, -1, -1, -1, 93, -1, 27, 28, -1, - 30, 31, 32, -1, -1, -1, 36, -1, -1, -1, - -1, 41, 110, -1, 44, 45, 46, -1, 48, -1, - -1, -1, -1, -1, 54, -1, 56, 57, -1, -1, - 60, -1, 3, 4, 5, 6, -1, -1, 9, -1, - 70, -1, -1, -1, -1, -1, -1, -1, -1, 1, - 80, 3, 4, 5, 6, 7, 8, 9, 88, -1, - 31, -1, 14, 93, -1, -1, -1, -1, 98, -1, - 41, -1, -1, -1, -1, -1, 28, -1, 30, 31, - 32, -1, -1, 54, 36, 56, 57, -1, -1, 41, - -1, -1, -1, 45, -1, -1, 48, -1, -1, 70, - -1, -1, 54, -1, 56, 57, -1, -1, 1, 80, - 3, 4, 5, 6, 7, 8, 9, 88, 70, -1, - -1, 14, 93, -1, -1, -1, -1, -1, 80, -1, - -1, -1, -1, -1, -1, 28, 88, 30, 31, 32, - -1, 93, -1, 36, -1, -1, 98, -1, 41, -1, - -1, -1, 45, 46, -1, 48, -1, -1, -1, -1, - -1, 54, -1, 56, 57, -1, -1, 60, -1, 62, - -1, -1, -1, -1, -1, -1, 1, 70, 3, 4, - 5, 6, 7, 8, 9, -1, -1, 80, -1, 14, - -1, -1, -1, -1, -1, 88, -1, -1, -1, -1, - 93, -1, -1, 28, -1, 30, 31, -1, -1, -1, - -1, 36, -1, -1, -1, -1, 41, -1, -1, -1, - 45, -1, -1, 48, -1, -1, -1, -1, -1, 54, - -1, 56, 57, -1, -1, 60, -1, 3, 4, 5, - 6, 7, 8, 9, -1, 70, -1, -1, 14, -1, - -1, -1, -1, -1, -1, 80, -1, -1, -1, -1, - -1, -1, 28, 88, 30, 31, -1, -1, 93, -1, - 36, -1, -1, -1, -1, 41, -1, -1, -1, 45, - -1, 47, -1, -1, -1, -1, -1, -1, 54, -1, - 56, 57, 3, 4, 5, 6, 7, 8, 9, -1, - -1, -1, -1, 14, 70, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 80, -1, -1, 28, -1, 30, - 31, -1, 88, -1, 90, 36, -1, 93, 94, -1, - 41, -1, -1, -1, 45, -1, -1, -1, -1, -1, - -1, -1, -1, 54, -1, 56, 57, -1, -1, 60, - -1, 3, 4, 5, 6, 7, 8, 9, -1, 70, - -1, -1, 14, -1, -1, -1, -1, -1, -1, 80, - -1, -1, -1, -1, -1, -1, 28, 88, 30, 31, - -1, -1, 93, -1, 36, -1, -1, -1, -1, 41, - -1, -1, -1, 45, -1, -1, -1, -1, -1, -1, - -1, -1, 54, -1, 56, 57, -1, -1, -1, -1, - 62, -1, -1, -1, -1, -1, -1, -1, 70, 3, - 4, 5, 6, 7, 8, 9, -1, -1, 80, -1, - 14, -1, -1, -1, -1, -1, 88, -1, -1, -1, - -1, 93, -1, -1, 28, -1, 30, 31, -1, -1, - -1, -1, 36, -1, -1, -1, -1, 41, -1, -1, - -1, 45, -1, -1, -1, -1, -1, -1, -1, -1, - 54, -1, 56, 57, -1, -1, 60, -1, 3, 4, - 5, 6, 7, 8, 9, -1, 70, -1, -1, 14, - -1, -1, -1, -1, -1, -1, 80, -1, -1, -1, - -1, -1, -1, 28, 88, 30, 31, -1, -1, 93, - -1, 36, -1, -1, -1, -1, 41, -1, -1, -1, - 45, -1, -1, -1, -1, -1, -1, -1, -1, 54, - -1, 56, 57, 3, 4, 5, 6, 7, 8, 9, - -1, -1, -1, -1, 14, 70, -1, -1, -1, -1, - 3, 4, 5, 6, -1, 80, 9, -1, 28, -1, - 30, 31, -1, 88, -1, -1, 36, -1, 93, -1, - -1, 41, -1, -1, -1, 45, -1, -1, 31, -1, - -1, -1, -1, -1, 54, -1, 56, 57, 41, -1, - -1, 3, 4, 5, 6, -1, -1, 9, -1, -1, - 70, 54, -1, 56, 57, -1, -1, -1, -1, -1, - 80, -1, -1, -1, -1, -1, -1, 70, 88, 31, - -1, -1, -1, 93, -1, -1, -1, 80, -1, 41, - -1, -1, -1, -1, -1, 88, -1, -1, -1, -1, - 93, -1, 54, -1, 56, 57, -1, -1, -1, -1, - 31, -1, -1, -1, -1, -1, -1, -1, 70, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 80, -1, - -1, -1, -1, -1, -1, -1, 88, -1, -1, -1, - -1, 93, 63, 64, 65, 66, 67, 68, 69, 70, - 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, - 81, 82, 83, 84, 63, 64, 65, 66, 67, 68, - 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, - 79, 80, 81, 82, 83, 84, 63, 64, 65, 66, - 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, - 77, 78, 79, 80, 81, 82, 83, 84, -1, -1, - -1, -1, 111, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 59, -1, -1, - 107, 63, 64, 65, 66, 67, 68, 69, 70, 71, - 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, - 82, 83, 84, 62, 63, 64, 65, 66, 67, 68, + -1, -1, 70, -1, -1, -1, -1, -1, -1, -1, + 78, 79, 80, -1, -1, -1, -1, -1, 86, 87, + 88, -1, -1, 4, 5, 93, 7, 8, 9, -1, + -1, 12, -1, 14, -1, -1, -1, -1, -1, -1, + -1, -1, 110, -1, -1, -1, -1, 28, -1, 30, + 31, -1, -1, -1, -1, 36, -1, -1, -1, -1, + -1, -1, -1, -1, 45, -1, -1, -1, -1, -1, + -1, -1, -1, 54, -1, 56, 57, 63, 64, 65, + 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, + 76, 77, 78, 79, 80, 81, 82, 83, 84, 63, + 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, + 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, + 84, -1, -1, -1, -1, 111, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 59, -1, -1, 107, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, - 79, 80, 81, 82, 83, 84, 63, 64, 65, 66, - 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, - 77, 78, 79, 80, 81, 82, 83, 84, 63, 64, - 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, - -1, 76, 77, 78, 79, 80, 81, 82, 83, 84, - 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, - 77, 78, 79, 80, 81, 82, 83, 84, 68, 69, - 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, - 80, 81, 82, 83, 84, 70, 71, 72, 73, 74, - 75, 76, 77, 78, 79, 80, 81, 82, 83, 84 + 79, 80, 81, 82, 83, 84, 62, 63, 64, 65, + 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, + 76, 77, 78, 79, 80, 81, 82, 83, 84, 63, + 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, + 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, + 84, 63, 64, 65, 66, 67, 68, 69, 70, 71, + 72, 73, 74, -1, 76, 77, 78, 79, 80, 81, + 82, 83, 84 }; /* -*-C-*- Note some compilers choke on comments on `#line' lines. */ -#line 3 "/usr/cygnus/gnupro-98r1/share/bison.simple" +#line 3 "/usr/lib/bison.simple" /* Skeleton output parser for bison, Copyright (C) 1984, 1989, 1990 Free Software Foundation, Inc. @@ -3700,8 +3653,7 @@ static const short yycheck[] = { 4, You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software - Foundation, 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ /* As a special exception, when this file is copied by Bison into a Bison output file, you may use that output file without restriction. @@ -3877,7 +3829,7 @@ __yy_memcpy (char *to, char *from, int count) #endif #endif -#line 196 "/usr/cygnus/gnupro-98r1/share/bison.simple" +#line 196 "/usr/lib/bison.simple" /* The user can define YYPARSE_PARAM as the name of an argument to be passed into yyparse. The argument should have type void *. @@ -6423,14 +6375,8 @@ case 524: #line 2388 "parse.y" { yyvsp[-1].ttype = begin_class_definition (yyvsp[-1].ttype); ; break;} -case 525: -#line 2393 "parse.y" -{ - finish_member_declaration (build_self_reference ()); - ; - break;} -case 530: -#line 2407 "parse.y" +case 529: +#line 2399 "parse.y" { if (current_aggr == signature_type_node) { @@ -6441,50 +6387,50 @@ case 530: current_access_specifier = yyvsp[-1].ttype; ; break;} -case 531: -#line 2422 "parse.y" +case 530: +#line 2414 "parse.y" { finish_member_declaration (yyvsp[0].ttype); ; break;} -case 532: -#line 2426 "parse.y" +case 531: +#line 2418 "parse.y" { finish_member_declaration (yyvsp[0].ttype); ; break;} -case 534: -#line 2434 "parse.y" +case 533: +#line 2426 "parse.y" { error ("missing ';' before right brace"); yyungetc ('}', 0); ; break;} +case 534: +#line 2431 "parse.y" +{ yyval.ttype = finish_method (yyval.ttype); ; + break;} case 535: -#line 2439 "parse.y" +#line 2433 "parse.y" { yyval.ttype = finish_method (yyval.ttype); ; break;} case 536: -#line 2441 "parse.y" +#line 2435 "parse.y" { yyval.ttype = finish_method (yyval.ttype); ; break;} case 537: -#line 2443 "parse.y" +#line 2437 "parse.y" { yyval.ttype = finish_method (yyval.ttype); ; break;} case 538: -#line 2445 "parse.y" -{ yyval.ttype = finish_method (yyval.ttype); ; - break;} -case 539: -#line 2447 "parse.y" +#line 2439 "parse.y" { yyval.ttype = NULL_TREE; ; break;} -case 540: -#line 2449 "parse.y" +case 539: +#line 2441 "parse.y" { yyval.ttype = yyvsp[0].ttype; pedantic = yyvsp[-1].itype; ; break;} -case 541: -#line 2452 "parse.y" +case 540: +#line 2444 "parse.y" { if (yyvsp[0].ttype) yyval.ttype = finish_member_template_decl (yyvsp[0].ttype); @@ -6495,15 +6441,15 @@ case 541: finish_template_decl (yyvsp[-1].ttype); ; break;} -case 542: -#line 2462 "parse.y" +case 541: +#line 2454 "parse.y" { yyval.ttype = finish_member_class_template (yyvsp[-1].ftype.t); finish_template_decl (yyvsp[-2].ttype); ; break;} -case 543: -#line 2473 "parse.y" +case 542: +#line 2465 "parse.y" { /* Most of the productions for component_decl only allow the creation of one new member, so we call @@ -6525,54 +6471,54 @@ case 543: yyval.ttype = NULL_TREE; ; break;} -case 544: -#line 2494 "parse.y" +case 543: +#line 2486 "parse.y" { if (!yyvsp[0].itype) grok_x_components (yyvsp[-1].ttype); yyval.ttype = NULL_TREE; ; break;} -case 545: -#line 2500 "parse.y" +case 544: +#line 2492 "parse.y" { yyval.ttype = grokfield (yyval.ttype, NULL_TREE, yyvsp[0].ttype, yyvsp[-2].ttype, build_tree_list (yyvsp[-1].ttype, NULL_TREE)); ; break;} -case 546: -#line 2503 "parse.y" +case 545: +#line 2495 "parse.y" { yyval.ttype = grokfield (yyval.ttype, NULL_TREE, yyvsp[0].ttype, yyvsp[-2].ttype, build_tree_list (yyvsp[-1].ttype, NULL_TREE)); ; break;} -case 547: -#line 2506 "parse.y" +case 546: +#line 2498 "parse.y" { yyval.ttype = grokbitfield (NULL_TREE, NULL_TREE, yyvsp[0].ttype); ; break;} -case 548: -#line 2508 "parse.y" +case 547: +#line 2500 "parse.y" { yyval.ttype = NULL_TREE; ; break;} -case 549: -#line 2519 "parse.y" +case 548: +#line 2511 "parse.y" { tree specs, attrs; split_specs_attrs (yyvsp[-4].ttype, &specs, &attrs); yyval.ttype = grokfield (yyvsp[-3].ttype, specs, yyvsp[0].ttype, yyvsp[-2].ttype, build_tree_list (yyvsp[-1].ttype, attrs)); ; break;} -case 550: -#line 2524 "parse.y" +case 549: +#line 2516 "parse.y" { yyval.ttype = grokfield (yyval.ttype, NULL_TREE, yyvsp[0].ttype, yyvsp[-2].ttype, build_tree_list (yyvsp[-1].ttype, NULL_TREE)); ; break;} -case 551: -#line 2527 "parse.y" +case 550: +#line 2519 "parse.y" { yyval.ttype = do_class_using_decl (yyvsp[0].ttype); ; break;} -case 552: -#line 2533 "parse.y" +case 551: +#line 2525 "parse.y" { yyval.itype = 0; ; break;} -case 553: -#line 2535 "parse.y" +case 552: +#line 2527 "parse.y" { if (PROCESSING_REAL_TEMPLATE_DECL_P ()) yyvsp[0].ttype = finish_member_template_decl (yyvsp[0].ttype); @@ -6580,8 +6526,8 @@ case 553: yyval.itype = 1; ; break;} -case 554: -#line 2542 "parse.y" +case 553: +#line 2534 "parse.y" { check_multiple_declarators (); if (PROCESSING_REAL_TEMPLATE_DECL_P ()) @@ -6590,12 +6536,12 @@ case 554: yyval.itype = 2; ; break;} -case 555: -#line 2553 "parse.y" +case 554: +#line 2545 "parse.y" { yyval.itype = 0; ; break;} -case 556: -#line 2555 "parse.y" +case 555: +#line 2547 "parse.y" { if (PROCESSING_REAL_TEMPLATE_DECL_P ()) yyvsp[0].ttype = finish_member_template_decl (yyvsp[0].ttype); @@ -6603,8 +6549,8 @@ case 556: yyval.itype = 1; ; break;} -case 557: -#line 2562 "parse.y" +case 556: +#line 2554 "parse.y" { check_multiple_declarators (); if (PROCESSING_REAL_TEMPLATE_DECL_P ()) @@ -6613,103 +6559,103 @@ case 557: yyval.itype = 2; ; break;} -case 562: -#line 2583 "parse.y" +case 561: +#line 2575 "parse.y" { split_specs_attrs (yyvsp[-4].ttype, ¤t_declspecs, &prefix_attributes); yyvsp[-4].ttype = current_declspecs; yyval.ttype = grokfield (yyval.ttype, current_declspecs, yyvsp[0].ttype, yyvsp[-2].ttype, build_tree_list (yyvsp[-1].ttype, prefix_attributes)); ; break;} -case 563: -#line 2589 "parse.y" +case 562: +#line 2581 "parse.y" { split_specs_attrs (yyvsp[-4].ttype, ¤t_declspecs, &prefix_attributes); yyvsp[-4].ttype = current_declspecs; yyval.ttype = grokbitfield (yyval.ttype, current_declspecs, yyvsp[-1].ttype); cplus_decl_attributes (yyval.ttype, yyvsp[0].ttype, prefix_attributes); ; break;} -case 564: -#line 2598 "parse.y" +case 563: +#line 2590 "parse.y" { split_specs_attrs (yyvsp[-4].ttype, ¤t_declspecs, &prefix_attributes); yyvsp[-4].ttype = current_declspecs; yyval.ttype = grokfield (yyval.ttype, current_declspecs, yyvsp[0].ttype, yyvsp[-2].ttype, build_tree_list (yyvsp[-1].ttype, prefix_attributes)); ; break;} -case 565: -#line 2604 "parse.y" +case 564: +#line 2596 "parse.y" { split_specs_attrs (yyvsp[-4].ttype, ¤t_declspecs, &prefix_attributes); yyvsp[-4].ttype = current_declspecs; yyval.ttype = grokfield (yyval.ttype, current_declspecs, yyvsp[0].ttype, yyvsp[-2].ttype, build_tree_list (yyvsp[-1].ttype, prefix_attributes)); ; break;} -case 566: -#line 2610 "parse.y" +case 565: +#line 2602 "parse.y" { split_specs_attrs (yyvsp[-4].ttype, ¤t_declspecs, &prefix_attributes); yyvsp[-4].ttype = current_declspecs; yyval.ttype = grokbitfield (yyval.ttype, current_declspecs, yyvsp[-1].ttype); cplus_decl_attributes (yyval.ttype, yyvsp[0].ttype, prefix_attributes); ; break;} -case 567: -#line 2616 "parse.y" +case 566: +#line 2608 "parse.y" { split_specs_attrs (yyvsp[-3].ttype, ¤t_declspecs, &prefix_attributes); yyvsp[-3].ttype = current_declspecs; yyval.ttype = grokbitfield (NULL_TREE, current_declspecs, yyvsp[-1].ttype); cplus_decl_attributes (yyval.ttype, yyvsp[0].ttype, prefix_attributes); ; break;} -case 568: -#line 2625 "parse.y" +case 567: +#line 2617 "parse.y" { yyval.ttype = grokfield (yyval.ttype, current_declspecs, yyvsp[0].ttype, yyvsp[-2].ttype, build_tree_list (yyvsp[-1].ttype, prefix_attributes)); ; break;} -case 569: -#line 2628 "parse.y" +case 568: +#line 2620 "parse.y" { yyval.ttype = grokbitfield (yyval.ttype, current_declspecs, yyvsp[-1].ttype); cplus_decl_attributes (yyval.ttype, yyvsp[0].ttype, prefix_attributes); ; break;} -case 570: -#line 2634 "parse.y" +case 569: +#line 2626 "parse.y" { yyval.ttype = grokfield (yyval.ttype, current_declspecs, yyvsp[0].ttype, yyvsp[-2].ttype, build_tree_list (yyvsp[-1].ttype, prefix_attributes)); ; break;} -case 571: -#line 2637 "parse.y" +case 570: +#line 2629 "parse.y" { yyval.ttype = grokbitfield (yyval.ttype, current_declspecs, yyvsp[-1].ttype); cplus_decl_attributes (yyval.ttype, yyvsp[0].ttype, prefix_attributes); ; break;} -case 572: -#line 2640 "parse.y" +case 571: +#line 2632 "parse.y" { yyval.ttype = grokbitfield (NULL_TREE, current_declspecs, yyvsp[-1].ttype); cplus_decl_attributes (yyval.ttype, yyvsp[0].ttype, prefix_attributes); ; break;} -case 574: -#line 2651 "parse.y" +case 573: +#line 2643 "parse.y" { TREE_CHAIN (yyvsp[0].ttype) = yyval.ttype; yyval.ttype = yyvsp[0].ttype; ; break;} -case 575: -#line 2656 "parse.y" +case 574: +#line 2648 "parse.y" { yyval.ttype = build_enumerator (yyval.ttype, NULL_TREE, current_enum_type); ; break;} -case 576: -#line 2658 "parse.y" +case 575: +#line 2650 "parse.y" { yyval.ttype = build_enumerator (yyval.ttype, yyvsp[0].ttype, current_enum_type); ; break;} -case 577: -#line 2664 "parse.y" +case 576: +#line 2656 "parse.y" { yyval.ftype.t = build_decl_list (yyvsp[-1].ftype.t, yyvsp[0].ttype); yyval.ftype.new_type_flag = yyvsp[-1].ftype.new_type_flag; ; break;} -case 578: -#line 2667 "parse.y" +case 577: +#line 2659 "parse.y" { yyval.ftype.t = build_decl_list (yyvsp[0].ftype.t, NULL_TREE); yyval.ftype.new_type_flag = yyvsp[0].ftype.new_type_flag; ; break;} -case 579: -#line 2674 "parse.y" +case 578: +#line 2666 "parse.y" { if (pedantic) pedwarn ("ANSI C++ forbids array dimensions with parenthesized type in new"); @@ -6718,72 +6664,72 @@ case 579: yyval.ftype.new_type_flag = yyvsp[-4].ftype.new_type_flag; ; break;} -case 580: -#line 2685 "parse.y" +case 579: +#line 2677 "parse.y" { yyval.ttype = NULL_TREE; ; break;} -case 581: -#line 2687 "parse.y" +case 580: +#line 2679 "parse.y" { yyval.ttype = decl_tree_cons (NULL_TREE, yyvsp[0].ttype, yyval.ttype); ; break;} -case 582: -#line 2692 "parse.y" +case 581: +#line 2684 "parse.y" { yyval.ftype.t = IDENTIFIER_AS_LIST (yyvsp[0].ttype); yyval.ftype.new_type_flag = 0; ; break;} -case 583: -#line 2695 "parse.y" +case 582: +#line 2687 "parse.y" { yyval.ftype.t = decl_tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ftype.t); yyval.ftype.new_type_flag = yyvsp[-1].ftype.new_type_flag; ; break;} -case 584: -#line 2704 "parse.y" +case 583: +#line 2696 "parse.y" { yyval.itype = suspend_momentary (); ; break;} -case 585: -#line 2709 "parse.y" +case 584: +#line 2701 "parse.y" { resume_momentary ((int) yyvsp[-1].itype); yyval.ttype = yyvsp[0].ttype; ; break;} -case 586: -#line 2715 "parse.y" +case 585: +#line 2707 "parse.y" { resume_momentary ((int) yyvsp[-3].itype); yyval.ttype = yyvsp[-1].ttype; ; break;} -case 587: -#line 2717 "parse.y" +case 586: +#line 2709 "parse.y" { resume_momentary ((int) yyvsp[-3].itype); yyval.ttype = yyvsp[-1].ttype; ; break;} -case 588: -#line 2719 "parse.y" +case 587: +#line 2711 "parse.y" { resume_momentary ((int) yyvsp[-1].itype); yyval.ttype = empty_parms (); ; break;} -case 589: -#line 2721 "parse.y" +case 588: +#line 2713 "parse.y" { resume_momentary ((int) yyvsp[-3].itype); yyval.ttype = NULL_TREE; ; break;} -case 590: -#line 2728 "parse.y" +case 589: +#line 2720 "parse.y" { yyval.ttype = make_pointer_declarator (yyvsp[-1].ftype.t, yyvsp[0].ttype); ; break;} -case 591: -#line 2730 "parse.y" +case 590: +#line 2722 "parse.y" { yyval.ttype = make_reference_declarator (yyvsp[-1].ftype.t, yyvsp[0].ttype); ; break;} -case 592: -#line 2732 "parse.y" +case 591: +#line 2724 "parse.y" { yyval.ttype = make_pointer_declarator (NULL_TREE, yyvsp[0].ttype); ; break;} -case 593: -#line 2734 "parse.y" +case 592: +#line 2726 "parse.y" { yyval.ttype = make_reference_declarator (NULL_TREE, yyvsp[0].ttype); ; break;} -case 594: -#line 2736 "parse.y" +case 593: +#line 2728 "parse.y" { tree arg = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); yyval.ttype = build_parse_node (SCOPE_REF, yyvsp[-2].ttype, arg); ; break;} -case 596: -#line 2744 "parse.y" +case 595: +#line 2736 "parse.y" { if (TREE_CODE (yyvsp[0].ttype) == IDENTIFIER_NODE) { @@ -6801,8 +6747,8 @@ case 596: yyval.ttype = yyvsp[0].ttype; ; break;} -case 597: -#line 2761 "parse.y" +case 596: +#line 2753 "parse.y" { if (TREE_CODE (yyvsp[0].ttype) == IDENTIFIER_NODE) yyval.ttype = IDENTIFIER_GLOBAL_VALUE (yyvsp[0].ttype); @@ -6811,161 +6757,161 @@ case 597: got_scope = NULL_TREE; ; break;} -case 600: -#line 2774 "parse.y" +case 599: +#line 2766 "parse.y" { yyval.ttype = yyvsp[0].ttype; ; break;} -case 601: -#line 2779 "parse.y" +case 600: +#line 2771 "parse.y" { yyval.ttype = get_type_decl (yyvsp[0].ttype); ; break;} -case 602: -#line 2784 "parse.y" +case 601: +#line 2776 "parse.y" { yyval.ttype = make_call_declarator (yyval.ttype, yyvsp[-2].ttype, yyvsp[-1].ttype, yyvsp[0].ttype); ; break;} -case 603: -#line 2786 "parse.y" +case 602: +#line 2778 "parse.y" { yyval.ttype = build_parse_node (ARRAY_REF, yyval.ttype, yyvsp[-1].ttype); ; break;} -case 604: -#line 2788 "parse.y" +case 603: +#line 2780 "parse.y" { yyval.ttype = build_parse_node (ARRAY_REF, yyval.ttype, NULL_TREE); ; break;} -case 605: -#line 2790 "parse.y" +case 604: +#line 2782 "parse.y" { yyval.ttype = yyvsp[-1].ttype; ; break;} -case 606: -#line 2792 "parse.y" +case 605: +#line 2784 "parse.y" { push_nested_class (yyvsp[-1].ttype, 3); yyval.ttype = build_parse_node (SCOPE_REF, yyval.ttype, yyvsp[0].ttype); TREE_COMPLEXITY (yyval.ttype) = current_class_depth; ; break;} -case 609: -#line 2804 "parse.y" +case 608: +#line 2796 "parse.y" { /* Provide support for '(' attributes '*' declarator ')' etc */ yyval.ttype = decl_tree_cons (yyvsp[-1].ttype, yyvsp[0].ttype, NULL_TREE); ; break;} -case 610: -#line 2813 "parse.y" +case 609: +#line 2805 "parse.y" { yyval.ttype = make_pointer_declarator (yyvsp[-1].ftype.t, yyvsp[0].ttype); ; break;} -case 611: -#line 2815 "parse.y" +case 610: +#line 2807 "parse.y" { yyval.ttype = make_reference_declarator (yyvsp[-1].ftype.t, yyvsp[0].ttype); ; break;} -case 612: -#line 2817 "parse.y" +case 611: +#line 2809 "parse.y" { yyval.ttype = make_pointer_declarator (NULL_TREE, yyvsp[0].ttype); ; break;} -case 613: -#line 2819 "parse.y" +case 612: +#line 2811 "parse.y" { yyval.ttype = make_reference_declarator (NULL_TREE, yyvsp[0].ttype); ; break;} -case 614: -#line 2821 "parse.y" +case 613: +#line 2813 "parse.y" { tree arg = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); yyval.ttype = build_parse_node (SCOPE_REF, yyvsp[-2].ttype, arg); ; break;} -case 616: -#line 2829 "parse.y" +case 615: +#line 2821 "parse.y" { yyval.ttype = make_pointer_declarator (yyvsp[-1].ftype.t, yyvsp[0].ttype); ; break;} -case 617: -#line 2831 "parse.y" +case 616: +#line 2823 "parse.y" { yyval.ttype = make_reference_declarator (yyvsp[-1].ftype.t, yyvsp[0].ttype); ; break;} -case 618: -#line 2833 "parse.y" +case 617: +#line 2825 "parse.y" { yyval.ttype = make_pointer_declarator (NULL_TREE, yyvsp[0].ttype); ; break;} -case 619: -#line 2835 "parse.y" +case 618: +#line 2827 "parse.y" { yyval.ttype = make_reference_declarator (NULL_TREE, yyvsp[0].ttype); ; break;} -case 620: -#line 2837 "parse.y" +case 619: +#line 2829 "parse.y" { tree arg = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); yyval.ttype = build_parse_node (SCOPE_REF, yyvsp[-2].ttype, arg); ; break;} -case 622: -#line 2845 "parse.y" +case 621: +#line 2837 "parse.y" { yyval.ttype = make_call_declarator (yyval.ttype, yyvsp[-2].ttype, yyvsp[-1].ttype, yyvsp[0].ttype); ; break;} -case 623: -#line 2847 "parse.y" +case 622: +#line 2839 "parse.y" { yyval.ttype = yyvsp[-1].ttype; ; break;} -case 624: -#line 2849 "parse.y" +case 623: +#line 2841 "parse.y" { yyval.ttype = build_parse_node (ARRAY_REF, yyval.ttype, yyvsp[-1].ttype); ; break;} -case 625: -#line 2851 "parse.y" +case 624: +#line 2843 "parse.y" { yyval.ttype = build_parse_node (ARRAY_REF, yyval.ttype, NULL_TREE); ; break;} -case 626: -#line 2853 "parse.y" +case 625: +#line 2845 "parse.y" { enter_scope_of (yyvsp[0].ttype); ; break;} -case 627: -#line 2855 "parse.y" +case 626: +#line 2847 "parse.y" { got_scope = NULL_TREE; yyval.ttype = build_parse_node (SCOPE_REF, yyvsp[-1].ttype, yyvsp[0].ttype); enter_scope_of (yyval.ttype); ; break;} -case 628: -#line 2863 "parse.y" +case 627: +#line 2855 "parse.y" { got_scope = NULL_TREE; yyval.ttype = build_parse_node (SCOPE_REF, yyval.ttype, yyvsp[0].ttype); ; break;} -case 629: -#line 2866 "parse.y" +case 628: +#line 2858 "parse.y" { got_scope = NULL_TREE; yyval.ttype = build_parse_node (SCOPE_REF, yyvsp[-1].ttype, yyvsp[0].ttype); ; break;} -case 630: -#line 2872 "parse.y" +case 629: +#line 2864 "parse.y" { got_scope = NULL_TREE; yyval.ttype = build_parse_node (SCOPE_REF, yyval.ttype, yyvsp[0].ttype); ; break;} -case 631: -#line 2875 "parse.y" +case 630: +#line 2867 "parse.y" { got_scope = NULL_TREE; yyval.ttype = build_parse_node (SCOPE_REF, yyvsp[-1].ttype, yyvsp[0].ttype); ; break;} -case 633: -#line 2882 "parse.y" +case 632: +#line 2874 "parse.y" { yyval.ttype = yyvsp[0].ttype; ; break;} -case 634: -#line 2887 "parse.y" +case 633: +#line 2879 "parse.y" { yyval.ttype = build_functional_cast (yyvsp[-3].ftype.t, yyvsp[-1].ttype); ; break;} -case 635: -#line 2889 "parse.y" +case 634: +#line 2881 "parse.y" { yyval.ttype = reparse_decl_as_expr (yyvsp[-3].ftype.t, yyvsp[-1].ttype); ; break;} -case 636: -#line 2891 "parse.y" +case 635: +#line 2883 "parse.y" { yyval.ttype = reparse_absdcl_as_expr (yyvsp[-1].ftype.t, yyvsp[0].ttype); ; break;} -case 641: -#line 2902 "parse.y" +case 640: +#line 2894 "parse.y" { yyval.ttype = yyvsp[0].ttype; ; break;} -case 642: -#line 2904 "parse.y" +case 641: +#line 2896 "parse.y" { got_scope = yyval.ttype = make_typename_type (yyvsp[-3].ttype, yyvsp[-1].ttype); ; break;} -case 643: -#line 2911 "parse.y" +case 642: +#line 2903 "parse.y" { if (TREE_CODE (yyvsp[-1].ttype) == IDENTIFIER_NODE) { @@ -6980,32 +6926,32 @@ case 643: got_scope = yyval.ttype = TYPE_MAIN_VARIANT (TREE_TYPE (yyval.ttype)); ; break;} -case 644: -#line 2925 "parse.y" +case 643: +#line 2917 "parse.y" { if (TREE_CODE (yyvsp[-1].ttype) == IDENTIFIER_NODE) yyval.ttype = lastiddecl; got_scope = yyval.ttype = TREE_TYPE (yyval.ttype); ; break;} -case 645: -#line 2931 "parse.y" +case 644: +#line 2923 "parse.y" { if (TREE_CODE (yyval.ttype) == IDENTIFIER_NODE) yyval.ttype = lastiddecl; got_scope = yyval.ttype; ; break;} -case 646: -#line 2937 "parse.y" +case 645: +#line 2929 "parse.y" { got_scope = yyval.ttype = complete_type (TREE_TYPE (yyvsp[-1].ttype)); ; break;} -case 648: -#line 2953 "parse.y" +case 647: +#line 2945 "parse.y" { yyval.ttype = yyvsp[0].ttype; ; break;} -case 649: -#line 2958 "parse.y" +case 648: +#line 2950 "parse.y" { if (TREE_CODE_CLASS (TREE_CODE (yyvsp[-1].ttype)) == 't') yyval.ttype = make_typename_type (yyvsp[-1].ttype, yyvsp[0].ttype); @@ -7019,27 +6965,27 @@ case 649: } ; break;} -case 650: -#line 2971 "parse.y" +case 649: +#line 2963 "parse.y" { yyval.ttype = TREE_TYPE (yyvsp[0].ttype); ; break;} -case 651: -#line 2973 "parse.y" +case 650: +#line 2965 "parse.y" { yyval.ttype = make_typename_type (yyvsp[-1].ttype, yyvsp[0].ttype); ; break;} -case 652: -#line 2975 "parse.y" +case 651: +#line 2967 "parse.y" { yyval.ttype = make_typename_type (yyvsp[-2].ttype, yyvsp[0].ttype); ; break;} -case 653: -#line 2980 "parse.y" +case 652: +#line 2972 "parse.y" { if (TREE_CODE (yyvsp[0].ttype) == IDENTIFIER_NODE) cp_error ("`%T' is not a class or namespace", yyvsp[0].ttype); ; break;} -case 654: -#line 2985 "parse.y" +case 653: +#line 2977 "parse.y" { if (TREE_CODE_CLASS (TREE_CODE (yyvsp[-1].ttype)) == 't') yyval.ttype = make_typename_type (yyvsp[-1].ttype, yyvsp[0].ttype); @@ -7053,16 +6999,16 @@ case 654: } ; break;} -case 655: -#line 2998 "parse.y" +case 654: +#line 2990 "parse.y" { got_scope = yyval.ttype = make_typename_type (yyvsp[-2].ttype, yyvsp[-1].ttype); ; break;} -case 656: -#line 3000 "parse.y" +case 655: +#line 2992 "parse.y" { got_scope = yyval.ttype = make_typename_type (yyvsp[-3].ttype, yyvsp[-1].ttype); ; break;} -case 657: -#line 3005 "parse.y" +case 656: +#line 2997 "parse.y" { if (TREE_CODE (yyvsp[-1].ttype) != IDENTIFIER_NODE) yyvsp[-1].ttype = lastiddecl; @@ -7075,32 +7021,32 @@ case 657: cp_error ("`%T' is not a class or namespace", yyvsp[-1].ttype); ; break;} -case 658: -#line 3017 "parse.y" +case 657: +#line 3009 "parse.y" { if (TREE_CODE (yyvsp[-1].ttype) != IDENTIFIER_NODE) yyval.ttype = lastiddecl; got_scope = yyval.ttype = complete_type (TREE_TYPE (yyval.ttype)); ; break;} -case 659: -#line 3023 "parse.y" +case 658: +#line 3015 "parse.y" { got_scope = yyval.ttype = complete_type (TREE_TYPE (yyval.ttype)); ; break;} -case 662: -#line 3027 "parse.y" +case 661: +#line 3019 "parse.y" { if (TREE_CODE (yyval.ttype) == IDENTIFIER_NODE) yyval.ttype = lastiddecl; got_scope = yyval.ttype; ; break;} -case 663: -#line 3036 "parse.y" +case 662: +#line 3028 "parse.y" { yyval.ttype = build_min_nt (TEMPLATE_ID_EXPR, yyvsp[-3].ttype, yyvsp[-1].ttype); ; break;} -case 664: -#line 3041 "parse.y" +case 663: +#line 3033 "parse.y" { if (TREE_CODE (yyvsp[0].ttype) == IDENTIFIER_NODE) yyval.ttype = IDENTIFIER_GLOBAL_VALUE (yyvsp[0].ttype); @@ -7109,149 +7055,149 @@ case 664: got_scope = NULL_TREE; ; break;} -case 666: -#line 3050 "parse.y" +case 665: +#line 3042 "parse.y" { yyval.ttype = yyvsp[0].ttype; ; break;} -case 667: -#line 3055 "parse.y" +case 666: +#line 3047 "parse.y" { got_scope = NULL_TREE; ; break;} -case 668: -#line 3057 "parse.y" +case 667: +#line 3049 "parse.y" { yyval.ttype = yyvsp[-1].ttype; got_scope = NULL_TREE; ; break;} -case 669: -#line 3064 "parse.y" +case 668: +#line 3056 "parse.y" { got_scope = void_type_node; ; break;} -case 670: -#line 3070 "parse.y" +case 669: +#line 3062 "parse.y" { yyval.ttype = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); ; break;} -case 671: -#line 3072 "parse.y" +case 670: +#line 3064 "parse.y" { yyval.ttype = make_pointer_declarator (yyvsp[0].ttype, NULL_TREE); ; break;} -case 672: -#line 3074 "parse.y" +case 671: +#line 3066 "parse.y" { yyval.ttype = make_reference_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); ; break;} -case 673: -#line 3076 "parse.y" +case 672: +#line 3068 "parse.y" { yyval.ttype = make_reference_declarator (yyvsp[0].ttype, NULL_TREE); ; break;} -case 674: -#line 3078 "parse.y" +case 673: +#line 3070 "parse.y" { tree arg = make_pointer_declarator (yyvsp[0].ttype, NULL_TREE); yyval.ttype = build_parse_node (SCOPE_REF, yyvsp[-1].ttype, arg); ; break;} -case 675: -#line 3082 "parse.y" +case 674: +#line 3074 "parse.y" { tree arg = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); yyval.ttype = build_parse_node (SCOPE_REF, yyvsp[-2].ttype, arg); ; break;} -case 677: -#line 3091 "parse.y" +case 676: +#line 3083 "parse.y" { yyval.ttype = build_parse_node (ARRAY_REF, NULL_TREE, yyvsp[-1].ttype); ; break;} -case 678: -#line 3093 "parse.y" +case 677: +#line 3085 "parse.y" { yyval.ttype = build_parse_node (ARRAY_REF, yyval.ttype, yyvsp[-1].ttype); ; break;} -case 679: -#line 3099 "parse.y" +case 678: +#line 3091 "parse.y" { yyval.ttype = make_pointer_declarator (yyvsp[-1].ftype.t, yyvsp[0].ttype); ; break;} -case 680: -#line 3101 "parse.y" +case 679: +#line 3093 "parse.y" { yyval.ttype = make_pointer_declarator (NULL_TREE, yyvsp[0].ttype); ; break;} -case 681: -#line 3103 "parse.y" +case 680: +#line 3095 "parse.y" { yyval.ttype = make_pointer_declarator (yyvsp[0].ftype.t, NULL_TREE); ; break;} -case 682: -#line 3105 "parse.y" +case 681: +#line 3097 "parse.y" { yyval.ttype = make_pointer_declarator (NULL_TREE, NULL_TREE); ; break;} -case 683: -#line 3107 "parse.y" +case 682: +#line 3099 "parse.y" { yyval.ttype = make_reference_declarator (yyvsp[-1].ftype.t, yyvsp[0].ttype); ; break;} -case 684: -#line 3109 "parse.y" +case 683: +#line 3101 "parse.y" { yyval.ttype = make_reference_declarator (NULL_TREE, yyvsp[0].ttype); ; break;} -case 685: -#line 3111 "parse.y" +case 684: +#line 3103 "parse.y" { yyval.ttype = make_reference_declarator (yyvsp[0].ftype.t, NULL_TREE); ; break;} -case 686: -#line 3113 "parse.y" +case 685: +#line 3105 "parse.y" { yyval.ttype = make_reference_declarator (NULL_TREE, NULL_TREE); ; break;} -case 687: -#line 3115 "parse.y" +case 686: +#line 3107 "parse.y" { tree arg = make_pointer_declarator (yyvsp[0].ttype, NULL_TREE); yyval.ttype = build_parse_node (SCOPE_REF, yyvsp[-1].ttype, arg); ; break;} -case 688: -#line 3119 "parse.y" +case 687: +#line 3111 "parse.y" { tree arg = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); yyval.ttype = build_parse_node (SCOPE_REF, yyvsp[-2].ttype, arg); ; break;} -case 690: -#line 3128 "parse.y" +case 689: +#line 3120 "parse.y" { yyval.ttype = yyvsp[-1].ttype; ; break;} -case 692: -#line 3132 "parse.y" +case 691: +#line 3124 "parse.y" { yyval.ttype = make_call_declarator (yyval.ttype, yyvsp[-3].ttype, yyvsp[-1].ttype, yyvsp[0].ttype); ; break;} -case 693: -#line 3134 "parse.y" +case 692: +#line 3126 "parse.y" { yyval.ttype = make_call_declarator (yyval.ttype, empty_parms (), yyvsp[-1].ttype, yyvsp[0].ttype); ; break;} -case 694: -#line 3136 "parse.y" +case 693: +#line 3128 "parse.y" { yyval.ttype = build_parse_node (ARRAY_REF, yyval.ttype, yyvsp[-1].ttype); ; break;} -case 695: -#line 3138 "parse.y" +case 694: +#line 3130 "parse.y" { yyval.ttype = build_parse_node (ARRAY_REF, yyval.ttype, NULL_TREE); ; break;} -case 696: -#line 3140 "parse.y" +case 695: +#line 3132 "parse.y" { yyval.ttype = make_call_declarator (NULL_TREE, yyvsp[-3].ttype, yyvsp[-1].ttype, yyvsp[0].ttype); ; break;} -case 697: -#line 3142 "parse.y" +case 696: +#line 3134 "parse.y" { set_quals_and_spec (yyval.ttype, yyvsp[-1].ttype, yyvsp[0].ttype); ; break;} -case 698: -#line 3144 "parse.y" +case 697: +#line 3136 "parse.y" { set_quals_and_spec (yyval.ttype, yyvsp[-1].ttype, yyvsp[0].ttype); ; break;} -case 699: -#line 3146 "parse.y" +case 698: +#line 3138 "parse.y" { yyval.ttype = build_parse_node (ARRAY_REF, NULL_TREE, yyvsp[-1].ttype); ; break;} -case 700: -#line 3148 "parse.y" +case 699: +#line 3140 "parse.y" { yyval.ttype = build_parse_node (ARRAY_REF, NULL_TREE, NULL_TREE); ; break;} -case 707: -#line 3171 "parse.y" +case 706: +#line 3163 "parse.y" { if (pedantic) pedwarn ("ANSI C++ forbids label declarations"); ; break;} -case 710: -#line 3182 "parse.y" +case 709: +#line 3174 "parse.y" { tree link; for (link = yyvsp[-1].ttype; link; link = TREE_CHAIN (link)) { @@ -7261,267 +7207,267 @@ case 710: } ; break;} -case 711: -#line 3196 "parse.y" +case 710: +#line 3188 "parse.y" {; break;} -case 713: -#line 3202 "parse.y" +case 712: +#line 3194 "parse.y" { yyval.ttype = begin_compound_stmt (0); ; break;} -case 714: -#line 3204 "parse.y" +case 713: +#line 3196 "parse.y" { yyval.ttype = finish_compound_stmt (0, yyvsp[-1].ttype); ; break;} -case 715: -#line 3209 "parse.y" +case 714: +#line 3201 "parse.y" { yyval.ttype = begin_if_stmt (); cond_stmt_keyword = "if"; ; break;} -case 716: -#line 3214 "parse.y" +case 715: +#line 3206 "parse.y" { finish_if_stmt_cond (yyvsp[0].ttype, yyvsp[-1].ttype); ; break;} -case 717: -#line 3216 "parse.y" +case 716: +#line 3208 "parse.y" { yyval.ttype = finish_then_clause (yyvsp[-3].ttype); ; break;} -case 719: -#line 3221 "parse.y" +case 718: +#line 3213 "parse.y" { yyval.ttype = begin_compound_stmt (0); ; break;} -case 720: -#line 3223 "parse.y" +case 719: +#line 3215 "parse.y" { yyval.ttype = finish_compound_stmt (0, yyvsp[-1].ttype); ; break;} -case 721: -#line 3228 "parse.y" +case 720: +#line 3220 "parse.y" {; break;} -case 723: -#line 3234 "parse.y" +case 722: +#line 3226 "parse.y" { finish_stmt (); ; break;} -case 724: -#line 3236 "parse.y" +case 723: +#line 3228 "parse.y" { finish_expr_stmt (yyvsp[-1].ttype); ; break;} -case 725: -#line 3238 "parse.y" +case 724: +#line 3230 "parse.y" { begin_else_clause (); ; break;} -case 726: -#line 3240 "parse.y" +case 725: +#line 3232 "parse.y" { finish_else_clause (yyvsp[-3].ttype); finish_if_stmt (); ; break;} -case 727: -#line 3245 "parse.y" +case 726: +#line 3237 "parse.y" { finish_if_stmt (); ; break;} -case 728: -#line 3247 "parse.y" +case 727: +#line 3239 "parse.y" { yyval.ttype = begin_while_stmt (); cond_stmt_keyword = "while"; ; break;} -case 729: -#line 3252 "parse.y" +case 728: +#line 3244 "parse.y" { finish_while_stmt_cond (yyvsp[0].ttype, yyvsp[-1].ttype); ; break;} -case 730: -#line 3254 "parse.y" +case 729: +#line 3246 "parse.y" { finish_while_stmt (yyvsp[-3].ttype); ; break;} -case 731: -#line 3256 "parse.y" +case 730: +#line 3248 "parse.y" { yyval.ttype = begin_do_stmt (); ; break;} -case 732: -#line 3258 "parse.y" +case 731: +#line 3250 "parse.y" { finish_do_body (yyvsp[-2].ttype); cond_stmt_keyword = "do"; ; break;} -case 733: -#line 3263 "parse.y" +case 732: +#line 3255 "parse.y" { finish_do_stmt (yyvsp[-1].ttype, yyvsp[-5].ttype); ; break;} -case 734: -#line 3265 "parse.y" +case 733: +#line 3257 "parse.y" { yyval.ttype = begin_for_stmt (); ; break;} -case 735: -#line 3267 "parse.y" +case 734: +#line 3259 "parse.y" { finish_for_init_stmt (yyvsp[-2].ttype); ; break;} -case 736: -#line 3269 "parse.y" +case 735: +#line 3261 "parse.y" { finish_for_cond (yyvsp[-1].ttype, yyvsp[-5].ttype); ; break;} -case 737: -#line 3271 "parse.y" +case 736: +#line 3263 "parse.y" { finish_for_expr (yyvsp[-1].ttype, yyvsp[-8].ttype); ; break;} -case 738: -#line 3273 "parse.y" +case 737: +#line 3265 "parse.y" { finish_for_stmt (yyvsp[-3].ttype, yyvsp[-10].ttype); ; break;} -case 739: -#line 3275 "parse.y" +case 738: +#line 3267 "parse.y" { begin_switch_stmt (); ; break;} -case 740: -#line 3277 "parse.y" +case 739: +#line 3269 "parse.y" { yyval.ttype = finish_switch_cond (yyvsp[-1].ttype); ; break;} -case 741: -#line 3279 "parse.y" +case 740: +#line 3271 "parse.y" { finish_switch_stmt (yyvsp[-3].ttype, yyvsp[-1].ttype); ; break;} -case 742: -#line 3281 "parse.y" +case 741: +#line 3273 "parse.y" { finish_case_label (yyvsp[-1].ttype, NULL_TREE); ; break;} -case 744: -#line 3284 "parse.y" +case 743: +#line 3276 "parse.y" { finish_case_label (yyvsp[-3].ttype, yyvsp[-1].ttype); ; break;} -case 746: -#line 3287 "parse.y" +case 745: +#line 3279 "parse.y" { finish_case_label (NULL_TREE, NULL_TREE); ; break;} -case 748: -#line 3290 "parse.y" +case 747: +#line 3282 "parse.y" { finish_break_stmt (); ; break;} -case 749: -#line 3292 "parse.y" +case 748: +#line 3284 "parse.y" { finish_continue_stmt (); ; break;} -case 750: -#line 3294 "parse.y" +case 749: +#line 3286 "parse.y" { finish_return_stmt (NULL_TREE); ; break;} -case 751: -#line 3296 "parse.y" +case 750: +#line 3288 "parse.y" { finish_return_stmt (yyvsp[-1].ttype); ; break;} -case 752: -#line 3298 "parse.y" +case 751: +#line 3290 "parse.y" { finish_asm_stmt (yyvsp[-4].ttype, yyvsp[-2].ttype, NULL_TREE, NULL_TREE, NULL_TREE); ; break;} -case 753: -#line 3304 "parse.y" +case 752: +#line 3296 "parse.y" { finish_asm_stmt (yyvsp[-6].ttype, yyvsp[-4].ttype, yyvsp[-2].ttype, NULL_TREE, NULL_TREE); ; break;} -case 754: -#line 3310 "parse.y" +case 753: +#line 3302 "parse.y" { finish_asm_stmt (yyvsp[-8].ttype, yyvsp[-6].ttype, yyvsp[-4].ttype, yyvsp[-2].ttype, NULL_TREE); ; break;} -case 755: -#line 3314 "parse.y" +case 754: +#line 3306 "parse.y" { finish_asm_stmt (yyvsp[-10].ttype, yyvsp[-8].ttype, yyvsp[-6].ttype, yyvsp[-4].ttype, yyvsp[-2].ttype); ; break;} -case 756: -#line 3316 "parse.y" +case 755: +#line 3308 "parse.y" { if (pedantic) pedwarn ("ANSI C++ forbids computed gotos"); finish_goto_stmt (yyvsp[-1].ttype); ; break;} -case 757: -#line 3322 "parse.y" +case 756: +#line 3314 "parse.y" { finish_goto_stmt (yyvsp[-1].ttype); ; break;} -case 758: -#line 3324 "parse.y" +case 757: +#line 3316 "parse.y" { finish_stmt (); ; break;} -case 759: -#line 3326 "parse.y" +case 758: +#line 3318 "parse.y" { error ("label must be followed by statement"); yyungetc ('}', 0); finish_stmt (); ; break;} -case 760: -#line 3330 "parse.y" +case 759: +#line 3322 "parse.y" { finish_stmt (); ; break;} -case 763: -#line 3334 "parse.y" +case 762: +#line 3326 "parse.y" { do_local_using_decl (yyvsp[0].ttype); ; break;} -case 765: -#line 3340 "parse.y" +case 764: +#line 3332 "parse.y" { if (! current_function_parms_stored) store_parm_decls (); expand_start_early_try_stmts (); ; break;} -case 766: -#line 3346 "parse.y" +case 765: +#line 3338 "parse.y" { expand_start_all_catch (); ; break;} -case 767: -#line 3350 "parse.y" +case 766: +#line 3342 "parse.y" { expand_end_all_catch (); yyval.itype = yyvsp[-3].itype; ; break;} -case 768: -#line 3358 "parse.y" +case 767: +#line 3350 "parse.y" { yyval.ttype = begin_try_block (); ; break;} -case 769: -#line 3360 "parse.y" +case 768: +#line 3352 "parse.y" { finish_try_block (yyvsp[-1].ttype); ; break;} -case 770: -#line 3362 "parse.y" +case 769: +#line 3354 "parse.y" { finish_handler_sequence (yyvsp[-3].ttype); ; break;} -case 773: -#line 3372 "parse.y" +case 772: +#line 3364 "parse.y" { yyval.ttype = begin_handler(); ; break;} -case 774: -#line 3374 "parse.y" +case 773: +#line 3366 "parse.y" { finish_handler_parms (yyvsp[-1].ttype); ; break;} -case 775: -#line 3376 "parse.y" +case 774: +#line 3368 "parse.y" { finish_handler (yyvsp[-3].ttype); ; break;} -case 778: -#line 3386 "parse.y" +case 777: +#line 3378 "parse.y" { expand_start_catch_block (NULL_TREE, NULL_TREE); ; break;} -case 779: -#line 3402 "parse.y" +case 778: +#line 3394 "parse.y" { check_for_new_type ("inside exception declarations", yyvsp[-1].ftype); expand_start_catch_block (TREE_PURPOSE (yyvsp[-1].ftype.t), TREE_VALUE (yyvsp[-1].ftype.t)); ; break;} -case 780: -#line 3409 "parse.y" +case 779: +#line 3401 "parse.y" { tree label; do_label: label = define_label (input_filename, lineno, yyvsp[-1].ttype); @@ -7529,99 +7475,99 @@ case 780: expand_label (label); ; break;} +case 780: +#line 3408 "parse.y" +{ goto do_label; ; + break;} case 781: -#line 3416 "parse.y" +#line 3410 "parse.y" { goto do_label; ; break;} case 782: -#line 3418 "parse.y" +#line 3412 "parse.y" { goto do_label; ; break;} case 783: -#line 3420 "parse.y" -{ goto do_label; ; - break;} -case 784: -#line 3425 "parse.y" +#line 3417 "parse.y" { if (yyvsp[-1].ttype) cplus_expand_expr_stmt (yyvsp[-1].ttype); ; break;} -case 786: -#line 3428 "parse.y" +case 785: +#line 3420 "parse.y" { if (pedantic) pedwarn ("ANSI C++ forbids compound statements inside for initializations"); ; break;} -case 787: -#line 3437 "parse.y" +case 786: +#line 3429 "parse.y" { emit_line_note (input_filename, lineno); yyval.ttype = NULL_TREE; ; break;} -case 788: -#line 3440 "parse.y" +case 787: +#line 3432 "parse.y" { emit_line_note (input_filename, lineno); ; break;} -case 789: -#line 3445 "parse.y" +case 788: +#line 3437 "parse.y" { yyval.ttype = NULL_TREE; ; break;} -case 791: -#line 3448 "parse.y" +case 790: +#line 3440 "parse.y" { yyval.ttype = NULL_TREE; ; break;} -case 792: -#line 3455 "parse.y" +case 791: +#line 3447 "parse.y" { yyval.ttype = NULL_TREE; ; break;} -case 795: -#line 3462 "parse.y" +case 794: +#line 3454 "parse.y" { yyval.ttype = chainon (yyval.ttype, yyvsp[0].ttype); ; break;} -case 796: -#line 3467 "parse.y" +case 795: +#line 3459 "parse.y" { yyval.ttype = build_tree_list (yyval.ttype, yyvsp[-1].ttype); ; break;} -case 797: -#line 3472 "parse.y" +case 796: +#line 3464 "parse.y" { yyval.ttype = tree_cons (NULL_TREE, yyval.ttype, NULL_TREE); ; break;} -case 798: -#line 3474 "parse.y" +case 797: +#line 3466 "parse.y" { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyval.ttype); ; break;} -case 799: -#line 3485 "parse.y" +case 798: +#line 3477 "parse.y" { yyval.ttype = empty_parms(); ; break;} -case 801: -#line 3490 "parse.y" +case 800: +#line 3482 "parse.y" { yyval.ttype = finish_parmlist (build_tree_list (NULL_TREE, yyvsp[0].ftype.t), 0); check_for_new_type ("inside parameter list", yyvsp[0].ftype); ; break;} -case 802: -#line 3498 "parse.y" +case 801: +#line 3490 "parse.y" { yyval.ttype = finish_parmlist (yyval.ttype, 0); ; break;} -case 803: -#line 3500 "parse.y" +case 802: +#line 3492 "parse.y" { yyval.ttype = finish_parmlist (yyvsp[-1].ttype, 1); ; break;} -case 804: -#line 3503 "parse.y" +case 803: +#line 3495 "parse.y" { yyval.ttype = finish_parmlist (yyvsp[-1].ttype, 1); ; break;} -case 805: -#line 3505 "parse.y" +case 804: +#line 3497 "parse.y" { yyval.ttype = finish_parmlist (build_tree_list (NULL_TREE, yyvsp[-1].ftype.t), 1); ; break;} -case 806: -#line 3508 "parse.y" +case 805: +#line 3500 "parse.y" { yyval.ttype = finish_parmlist (NULL_TREE, 1); ; break;} -case 807: -#line 3510 "parse.y" +case 806: +#line 3502 "parse.y" { /* This helps us recover from really nasty parse errors, for example, a missing right @@ -7632,8 +7578,8 @@ case 807: yychar = ')'; ; break;} -case 808: -#line 3520 "parse.y" +case 807: +#line 3512 "parse.y" { /* This helps us recover from really nasty parse errors, for example, a missing right @@ -7645,99 +7591,99 @@ case 808: yychar = ')'; ; break;} -case 809: -#line 3535 "parse.y" +case 808: +#line 3527 "parse.y" { maybe_snarf_defarg (); ; break;} -case 810: -#line 3537 "parse.y" +case 809: +#line 3529 "parse.y" { yyval.ttype = yyvsp[0].ttype; ; break;} -case 813: -#line 3548 "parse.y" +case 812: +#line 3540 "parse.y" { check_for_new_type ("in a parameter list", yyvsp[0].ftype); yyval.ttype = build_tree_list (NULL_TREE, yyvsp[0].ftype.t); ; break;} -case 814: -#line 3551 "parse.y" +case 813: +#line 3543 "parse.y" { check_for_new_type ("in a parameter list", yyvsp[-1].ftype); yyval.ttype = build_tree_list (yyvsp[0].ttype, yyvsp[-1].ftype.t); ; break;} -case 815: -#line 3554 "parse.y" +case 814: +#line 3546 "parse.y" { check_for_new_type ("in a parameter list", yyvsp[0].ftype); yyval.ttype = chainon (yyval.ttype, yyvsp[0].ftype.t); ; break;} -case 816: -#line 3557 "parse.y" +case 815: +#line 3549 "parse.y" { yyval.ttype = chainon (yyval.ttype, build_tree_list (NULL_TREE, yyvsp[0].ttype)); ; break;} -case 817: -#line 3559 "parse.y" +case 816: +#line 3551 "parse.y" { yyval.ttype = chainon (yyval.ttype, build_tree_list (yyvsp[0].ttype, yyvsp[-2].ttype)); ; break;} -case 819: -#line 3565 "parse.y" +case 818: +#line 3557 "parse.y" { check_for_new_type ("in a parameter list", yyvsp[-1].ftype); yyval.ttype = build_tree_list (NULL_TREE, yyvsp[-1].ftype.t); ; break;} -case 820: -#line 3575 "parse.y" +case 819: +#line 3567 "parse.y" { tree specs = strip_attrs (yyvsp[-1].ftype.t); yyval.ftype.new_type_flag = yyvsp[-1].ftype.new_type_flag; yyval.ftype.t = build_tree_list (specs, yyvsp[0].ttype); ; break;} -case 821: -#line 3579 "parse.y" +case 820: +#line 3571 "parse.y" { yyval.ftype.t = build_tree_list (yyvsp[-1].ftype.t, yyvsp[0].ttype); yyval.ftype.new_type_flag = yyvsp[-1].ftype.new_type_flag; ; break;} -case 822: -#line 3582 "parse.y" +case 821: +#line 3574 "parse.y" { yyval.ftype.t = build_tree_list (get_decl_list (yyvsp[-1].ftype.t), yyvsp[0].ttype); yyval.ftype.new_type_flag = yyvsp[-1].ftype.new_type_flag; ; break;} -case 823: -#line 3585 "parse.y" +case 822: +#line 3577 "parse.y" { tree specs = strip_attrs (yyvsp[-1].ftype.t); yyval.ftype.t = build_tree_list (specs, yyvsp[0].ttype); yyval.ftype.new_type_flag = yyvsp[-1].ftype.new_type_flag; ; break;} -case 824: -#line 3589 "parse.y" +case 823: +#line 3581 "parse.y" { tree specs = strip_attrs (yyvsp[0].ftype.t); yyval.ftype.t = build_tree_list (specs, NULL_TREE); yyval.ftype.new_type_flag = yyvsp[0].ftype.new_type_flag; ; break;} -case 825: -#line 3593 "parse.y" +case 824: +#line 3585 "parse.y" { tree specs = strip_attrs (yyvsp[-1].ttype); yyval.ftype.t = build_tree_list (specs, yyvsp[0].ttype); yyval.ftype.new_type_flag = 0; ; break;} -case 826: -#line 3600 "parse.y" +case 825: +#line 3592 "parse.y" { yyval.ftype.t = build_tree_list (NULL_TREE, yyvsp[0].ftype.t); yyval.ftype.new_type_flag = yyvsp[0].ftype.new_type_flag; ; break;} -case 827: -#line 3603 "parse.y" +case 826: +#line 3595 "parse.y" { yyval.ftype.t = build_tree_list (yyvsp[0].ttype, yyvsp[-1].ftype.t); yyval.ftype.new_type_flag = yyvsp[-1].ftype.new_type_flag; ; break;} -case 830: -#line 3614 "parse.y" +case 829: +#line 3606 "parse.y" { see_typename (); ; break;} -case 831: -#line 3619 "parse.y" +case 830: +#line 3611 "parse.y" { error ("type specifier omitted for parameter"); yyval.ttype = build_tree_list (integer_type_node, NULL_TREE); ; break;} -case 832: -#line 3624 "parse.y" +case 831: +#line 3616 "parse.y" { error ("type specifier omitted for parameter"); if (TREE_CODE (yyval.ttype) == SCOPE_REF @@ -7747,194 +7693,194 @@ case 832: yyval.ttype = build_tree_list (integer_type_node, yyval.ttype); ; break;} -case 833: -#line 3636 "parse.y" +case 832: +#line 3628 "parse.y" { yyval.ttype = NULL_TREE; ; break;} -case 834: -#line 3638 "parse.y" +case 833: +#line 3630 "parse.y" { yyval.ttype = yyvsp[-1].ttype; ; break;} -case 835: -#line 3640 "parse.y" +case 834: +#line 3632 "parse.y" { yyval.ttype = build_decl_list (NULL_TREE, NULL_TREE); ; break;} -case 836: -#line 3645 "parse.y" +case 835: +#line 3637 "parse.y" { yyval.ttype = build_decl_list (NULL_TREE, groktypename(yyvsp[0].ftype.t)); ; break;} -case 838: -#line 3651 "parse.y" +case 837: +#line 3643 "parse.y" { TREE_CHAIN (yyvsp[0].ttype) = yyval.ttype; yyval.ttype = yyvsp[0].ttype; ; break;} -case 839: -#line 3659 "parse.y" +case 838: +#line 3651 "parse.y" { yyval.ttype = NULL_TREE; ; break;} -case 840: -#line 3661 "parse.y" +case 839: +#line 3653 "parse.y" { yyval.ttype = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); ; break;} -case 841: -#line 3663 "parse.y" +case 840: +#line 3655 "parse.y" { yyval.ttype = make_reference_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); ; break;} -case 842: -#line 3665 "parse.y" +case 841: +#line 3657 "parse.y" { tree arg = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); yyval.ttype = build_parse_node (SCOPE_REF, yyvsp[-2].ttype, arg); ; break;} -case 843: -#line 3672 "parse.y" +case 842: +#line 3664 "parse.y" { got_scope = NULL_TREE; ; break;} -case 844: -#line 3677 "parse.y" +case 843: +#line 3669 "parse.y" { yyval.ttype = ansi_opname[MULT_EXPR]; ; break;} -case 845: -#line 3679 "parse.y" +case 844: +#line 3671 "parse.y" { yyval.ttype = ansi_opname[TRUNC_DIV_EXPR]; ; break;} -case 846: -#line 3681 "parse.y" +case 845: +#line 3673 "parse.y" { yyval.ttype = ansi_opname[TRUNC_MOD_EXPR]; ; break;} -case 847: -#line 3683 "parse.y" +case 846: +#line 3675 "parse.y" { yyval.ttype = ansi_opname[PLUS_EXPR]; ; break;} -case 848: -#line 3685 "parse.y" +case 847: +#line 3677 "parse.y" { yyval.ttype = ansi_opname[MINUS_EXPR]; ; break;} -case 849: -#line 3687 "parse.y" +case 848: +#line 3679 "parse.y" { yyval.ttype = ansi_opname[BIT_AND_EXPR]; ; break;} -case 850: -#line 3689 "parse.y" +case 849: +#line 3681 "parse.y" { yyval.ttype = ansi_opname[BIT_IOR_EXPR]; ; break;} -case 851: -#line 3691 "parse.y" +case 850: +#line 3683 "parse.y" { yyval.ttype = ansi_opname[BIT_XOR_EXPR]; ; break;} -case 852: -#line 3693 "parse.y" +case 851: +#line 3685 "parse.y" { yyval.ttype = ansi_opname[BIT_NOT_EXPR]; ; break;} -case 853: -#line 3695 "parse.y" +case 852: +#line 3687 "parse.y" { yyval.ttype = ansi_opname[COMPOUND_EXPR]; ; break;} -case 854: -#line 3697 "parse.y" +case 853: +#line 3689 "parse.y" { yyval.ttype = ansi_opname[yyvsp[0].code]; ; break;} -case 855: -#line 3699 "parse.y" +case 854: +#line 3691 "parse.y" { yyval.ttype = ansi_opname[LT_EXPR]; ; break;} -case 856: -#line 3701 "parse.y" +case 855: +#line 3693 "parse.y" { yyval.ttype = ansi_opname[GT_EXPR]; ; break;} -case 857: -#line 3703 "parse.y" +case 856: +#line 3695 "parse.y" { yyval.ttype = ansi_opname[yyvsp[0].code]; ; break;} -case 858: -#line 3705 "parse.y" +case 857: +#line 3697 "parse.y" { yyval.ttype = ansi_assopname[yyvsp[0].code]; ; break;} -case 859: -#line 3707 "parse.y" +case 858: +#line 3699 "parse.y" { yyval.ttype = ansi_opname [MODIFY_EXPR]; ; break;} -case 860: -#line 3709 "parse.y" +case 859: +#line 3701 "parse.y" { yyval.ttype = ansi_opname[yyvsp[0].code]; ; break;} -case 861: -#line 3711 "parse.y" +case 860: +#line 3703 "parse.y" { yyval.ttype = ansi_opname[yyvsp[0].code]; ; break;} -case 862: -#line 3713 "parse.y" +case 861: +#line 3705 "parse.y" { yyval.ttype = ansi_opname[POSTINCREMENT_EXPR]; ; break;} -case 863: -#line 3715 "parse.y" +case 862: +#line 3707 "parse.y" { yyval.ttype = ansi_opname[PREDECREMENT_EXPR]; ; break;} -case 864: -#line 3717 "parse.y" +case 863: +#line 3709 "parse.y" { yyval.ttype = ansi_opname[TRUTH_ANDIF_EXPR]; ; break;} -case 865: -#line 3719 "parse.y" +case 864: +#line 3711 "parse.y" { yyval.ttype = ansi_opname[TRUTH_ORIF_EXPR]; ; break;} -case 866: -#line 3721 "parse.y" +case 865: +#line 3713 "parse.y" { yyval.ttype = ansi_opname[TRUTH_NOT_EXPR]; ; break;} -case 867: -#line 3723 "parse.y" +case 866: +#line 3715 "parse.y" { yyval.ttype = ansi_opname[COND_EXPR]; ; break;} -case 868: -#line 3725 "parse.y" +case 867: +#line 3717 "parse.y" { yyval.ttype = ansi_opname[yyvsp[0].code]; ; break;} -case 869: -#line 3727 "parse.y" +case 868: +#line 3719 "parse.y" { yyval.ttype = ansi_opname[COMPONENT_REF]; ; break;} -case 870: -#line 3729 "parse.y" +case 869: +#line 3721 "parse.y" { yyval.ttype = ansi_opname[MEMBER_REF]; ; break;} -case 871: -#line 3731 "parse.y" +case 870: +#line 3723 "parse.y" { yyval.ttype = ansi_opname[CALL_EXPR]; ; break;} -case 872: -#line 3733 "parse.y" +case 871: +#line 3725 "parse.y" { yyval.ttype = ansi_opname[ARRAY_REF]; ; break;} -case 873: -#line 3735 "parse.y" +case 872: +#line 3727 "parse.y" { yyval.ttype = ansi_opname[NEW_EXPR]; ; break;} -case 874: -#line 3737 "parse.y" +case 873: +#line 3729 "parse.y" { yyval.ttype = ansi_opname[DELETE_EXPR]; ; break;} -case 875: -#line 3739 "parse.y" +case 874: +#line 3731 "parse.y" { yyval.ttype = ansi_opname[VEC_NEW_EXPR]; ; break;} -case 876: -#line 3741 "parse.y" +case 875: +#line 3733 "parse.y" { yyval.ttype = ansi_opname[VEC_DELETE_EXPR]; ; break;} -case 877: -#line 3744 "parse.y" +case 876: +#line 3736 "parse.y" { yyval.ttype = grokoptypename (yyvsp[-1].ftype.t, yyvsp[0].ttype); ; break;} -case 878: -#line 3746 "parse.y" +case 877: +#line 3738 "parse.y" { yyval.ttype = ansi_opname[ERROR_MARK]; ; break;} } /* the action file gets copied in in place of this dollarsign */ -#line 498 "/usr/cygnus/gnupro-98r1/share/bison.simple" +#line 498 "/usr/lib/bison.simple" yyvsp -= yylen; yyssp -= yylen; @@ -8130,7 +8076,7 @@ yyerrhandle: yystate = yyn; goto yynewstate; } -#line 3749 "parse.y" +#line 3741 "parse.y" #ifdef SPEW_DEBUG diff --git a/gcc/cp/parse.y b/gcc/cp/parse.y index 4d4827c95e0..31b31b18b5a 100644 --- a/gcc/cp/parse.y +++ b/gcc/cp/parse.y @@ -2388,16 +2388,8 @@ left_curly: { $0 = begin_class_definition ($0); } ; -self_reference: - /* empty */ - { - finish_member_declaration (build_self_reference ()); - } - ; - opt.component_decl_list: - self_reference - | self_reference component_decl_list + | component_decl_list | opt.component_decl_list access_specifier component_decl_list | opt.component_decl_list access_specifier ; diff --git a/gcc/cp/pt.c b/gcc/cp/pt.c index 8463e5df4b0..4e9c52fc588 100644 --- a/gcc/cp/pt.c +++ b/gcc/cp/pt.c @@ -900,7 +900,10 @@ print_candidates (fns) for (fn = fns; fn != NULL_TREE; fn = TREE_CHAIN (fn)) { - cp_error_at ("%s %+#D", str, TREE_VALUE (fn)); + tree f; + + for (f = TREE_VALUE (fn); f; f = OVL_NEXT (f)) + cp_error_at ("%s %+#D", str, OVL_CURRENT (f)); str = " "; } } @@ -4807,7 +4810,7 @@ instantiate_class_template (type) access = access_public_virtual_node; else if (TREE_VIA_PROTECTED (pbase)) access = access_protected_virtual_node; - else if (TREE_VIA_PRIVATE (pbase)) + else access = access_private_virtual_node; } else @@ -4816,7 +4819,7 @@ instantiate_class_template (type) access = access_public_node; else if (TREE_VIA_PROTECTED (pbase)) access = access_protected_node; - else if (TREE_VIA_PRIVATE (pbase)) + else access = access_private_node; } @@ -7840,7 +7843,7 @@ get_template_base (tparms, targs, parm, arg) /* Since get_template_base_recursive marks the bases classes, we must unmark them here. */ - dfs_walk (arg_binfo, dfs_unmark, markedp); + dfs_walk (arg_binfo, dfs_unmark, markedp, 0); return rval; } diff --git a/gcc/cp/search.c b/gcc/cp/search.c index 369a06f84b5..42678f150f7 100644 --- a/gcc/cp/search.c +++ b/gcc/cp/search.c @@ -31,6 +31,7 @@ Boston, MA 02111-1307, USA. */ #include "rtl.h" #include "output.h" #include "toplev.h" +#include "varray.h" #define obstack_chunk_alloc xmalloc #define obstack_chunk_free free @@ -85,8 +86,8 @@ static int lookup_fnfields_here PROTO((tree, tree)); static int is_subobject_of_p PROTO((tree, tree)); static int hides PROTO((tree, tree)); static tree virtual_context PROTO((tree, tree, tree)); -static void dfs_check_overlap PROTO((tree)); -static int dfs_no_overlap_yet PROTO((tree)); +static tree dfs_check_overlap PROTO((tree, void *)); +static tree dfs_no_overlap_yet PROTO((tree, void *)); static void envelope_add_decl PROTO((tree, tree, tree *)); static int get_base_distance_recursive PROTO((tree, int, int, int, int *, tree *, tree, @@ -96,39 +97,53 @@ static void expand_upcast_fixups static void fixup_virtual_upcast_offsets PROTO((tree, tree, int, int, tree, tree, tree, tree, tree *)); -static int unmarkedp PROTO((tree)); -static int marked_vtable_pathp PROTO((tree)); -static int unmarked_vtable_pathp PROTO((tree)); -static int marked_new_vtablep PROTO((tree)); -static int unmarked_new_vtablep PROTO((tree)); -static int dfs_debug_unmarkedp PROTO((tree)); -static void dfs_debug_mark PROTO((tree)); -static void dfs_find_vbases PROTO((tree)); -static void dfs_clear_vbase_slots PROTO((tree)); -static void dfs_init_vbase_pointers PROTO((tree)); -static void dfs_get_vbase_types PROTO((tree)); -static void dfs_pushdecls PROTO((tree)); -static void dfs_compress_decls PROTO((tree)); -static void dfs_unuse_fields PROTO((tree)); +static tree unmarkedp PROTO((tree, void *)); +static tree marked_vtable_pathp PROTO((tree, void *)); +static tree unmarked_vtable_pathp PROTO((tree, void *)); +static tree marked_new_vtablep PROTO((tree, void *)); +static tree unmarked_new_vtablep PROTO((tree, void *)); +static tree marked_pushdecls_p PROTO((tree, void *)); +static tree unmarked_pushdecls_p PROTO((tree, void *)); +static tree dfs_debug_unmarkedp PROTO((tree, void *)); +static tree dfs_debug_mark PROTO((tree, void *)); +static tree dfs_find_vbases PROTO((tree, void *)); +static tree dfs_clear_vbase_slots PROTO((tree, void *)); +static tree dfs_init_vbase_pointers PROTO((tree, void *)); +static tree dfs_get_vbase_types PROTO((tree, void *)); +static tree dfs_pushdecls PROTO((tree, void *)); +static tree dfs_compress_decls PROTO((tree, void *)); +static tree dfs_unuse_fields PROTO((tree, void *)); static tree add_conversions PROTO((tree, void *)); -static tree get_virtuals_named_this PROTO((tree)); +static tree get_virtuals_named_this PROTO((tree, tree)); static tree get_virtual_destructor PROTO((tree, void *)); -static int tree_has_any_destructor_p PROTO((tree, void *)); +static tree tree_has_any_destructor_p PROTO((tree, void *)); static int covariant_return_p PROTO((tree, tree)); static struct search_level *push_search_level PROTO((struct stack_level *, struct obstack *)); static struct search_level *pop_search_level PROTO((struct stack_level *)); -static tree breadth_first_search - PROTO((tree, tree (*) (tree, void *), int (*) (tree, void *), - void (*) (tree *, tree *, void *), void *)); -static int lookup_field_queue_p PROTO((tree, void *)); +static tree bfs_walk + PROTO((tree, tree (*) (tree, void *), tree (*) (tree, void *), + void *)); +static tree lookup_field_queue_p PROTO((tree, void *)); static tree lookup_field_r PROTO((tree, void *)); -static void lookup_field_post PROTO((tree *, tree *, void *)); - -static tree vbase_types; -static tree vbase_decl_ptr_intermediate, vbase_decl_ptr; -static tree vbase_init_result; +static tree dfs_walk_real PROTO ((tree, + tree (*) (tree, void *), + tree (*) (tree, void *), + tree (*) (tree, void *), + void *)); +static tree dfs_bfv_queue_p PROTO ((tree, void *)); +static tree dfs_bfv_helper PROTO ((tree, void *)); +static tree get_virtuals_named_this_r PROTO ((tree, void *)); +static tree context_for_name_lookup PROTO ((tree)); +static tree canonical_binfo PROTO ((tree)); +static tree shared_marked_p PROTO ((tree, void *)); +static tree shared_unmarked_p PROTO ((tree, void *)); +static int dependent_base_p PROTO ((tree)); +static tree dfs_accessible_queue_p PROTO ((tree, void *)); +static tree dfs_accessible_p PROTO ((tree, void *)); +static tree dfs_access_in_type PROTO ((tree, void *)); +static tree access_in_type PROTO ((tree, tree)); /* Allocate a level of searching. */ @@ -166,9 +181,6 @@ static int n_outer_fields_searched; static int n_contexts_saved; #endif /* GATHER_STATISTICS */ -/* This list is used by push_class_decls to know what decls need to - be pushed into class scope. */ -static tree closed_envelopes = NULL_TREE; /* Get a virtual binfo that is found inside BINFO's hierarchy that is the same type as the type given in PARENT. To be optimal, we want @@ -577,214 +589,348 @@ current_scope () return current_class_type; } -/* Compute the access of FIELD. This is done by computing - the access available to each type in BASETYPES (which comes - as a list of [via_public/basetype] in reverse order, namely base - class before derived class). The first one which defines a - access defines the access for the field. Otherwise, the - access of the field is that which occurs normally. +/* Return the scope of DECL, as appropriate when doing name-lookup. */ - Uses global variables CURRENT_CLASS_TYPE and - CURRENT_FUNCTION_DECL to use friend relationships - if necessary. +static tree +context_for_name_lookup (decl) + tree decl; +{ + /* [class.union] + + For the purposes of name lookup, after the anonymous union + definition, the members of the anonymous union are considered to + have been defined in the scope in which teh anonymous union is + declared. */ + tree context = DECL_REAL_CONTEXT (decl); + + while (TYPE_P (context) && ANON_UNION_TYPE_P (context)) + context = TYPE_CONTEXT (context); + if (!context) + context = global_namespace; - This will be static when lookup_fnfield comes into this file. + return context; +} - access_public_node means that the field can be accessed by the current lexical - scope. +/* Return a canonical BINFO if BINFO is a virtual base, or just BINFO + otherwise. */ - access_protected_node means that the field cannot be accessed by the current - lexical scope because it is protected. +static tree +canonical_binfo (binfo) + tree binfo; +{ + return (TREE_VIA_VIRTUAL (binfo) + ? TYPE_BINFO (BINFO_TYPE (binfo)) : binfo); +} - access_private_node means that the field cannot be accessed by the current - lexical scope because it is private. */ +/* If BINFO is marked, return a canonical version of BINFO. + Otherwise, return NULL_TREE. */ -#if 0 -#define PUBLIC_RETURN return (DECL_PUBLIC (field) = 1), access_public_node -#define PROTECTED_RETURN return (DECL_PROTECTED (field) = 1), access_protected_node -#define PRIVATE_RETURN return (DECL_PRIVATE (field) = 1), access_private_node -#else -#define PUBLIC_RETURN return access_public_node -#define PROTECTED_RETURN return access_protected_node -#define PRIVATE_RETURN return access_private_node -#endif +static tree +shared_marked_p (binfo, data) + tree binfo; + void *data; +{ + binfo = canonical_binfo (binfo); + return markedp (binfo, data) ? binfo : NULL_TREE; +} -#if 0 -/* Disabled with DECL_PUBLIC &c. */ -static tree previous_scope = NULL_TREE; -#endif +/* If BINFO is not marked, return a canonical version of BINFO. + Otherwise, return NULL_TREE. */ -tree -compute_access (basetype_path, field) - tree basetype_path, field; +static tree +shared_unmarked_p (binfo, data) + tree binfo; + void *data; { - tree access; - tree types; - tree context; - int protected_ok, via_protected; - extern int flag_access_control; -#if 1 - /* Replaces static decl above. */ - tree previous_scope; -#endif - int static_mem - = ((TREE_CODE (field) == FUNCTION_DECL && DECL_STATIC_FUNCTION_P (field)) - || (TREE_CODE (field) != FUNCTION_DECL && TREE_STATIC (field))); + binfo = canonical_binfo (binfo); + return unmarkedp (binfo, data) ? binfo : NULL_TREE; +} - if (! flag_access_control) - return access_public_node; +/* Called from access_in_type via dfs_walk. Calculate the access to + DATA (which is really a DECL) in BINFO. */ - /* The field lives in the current class. */ - if (BINFO_TYPE (basetype_path) == current_class_type) - return access_public_node; +static tree +dfs_access_in_type (binfo, data) + tree binfo; + void *data; +{ + tree decl = (tree) data; + tree type = BINFO_TYPE (binfo); + tree access = NULL_TREE; -#if 0 - /* Disabled until pushing function scope clears these out. If ever. */ - /* Make these special cases fast. */ - if (current_scope () == previous_scope) + if (context_for_name_lookup (decl) == type) { - if (DECL_PUBLIC (field)) - return access_public_node; - if (DECL_PROTECTED (field)) - return access_protected_node; - if (DECL_PRIVATE (field)) - return access_private_node; + /* If we have desceneded to the scope of DECL, just note the + appropriate access. */ + if (TREE_PRIVATE (decl)) + access = access_private_node; + else if (TREE_PROTECTED (decl)) + access = access_protected_node; + else + access = access_public_node; } -#endif + else + { + /* First, check for an access-declaration that gives us more + access to the DECL. The CONST_DECL for an enumeration + constant will not have DECL_LANG_SPECIFIC, and thus no + DECL_ACCESS. */ + if (DECL_LANG_SPECIFIC (decl)) + { + access = purpose_member (type, DECL_ACCESS (decl)); + if (access) + access = TREE_VALUE (access); + } + + if (!access) + { + int i; + int n_baselinks; + tree binfos; + + /* Otherwise, scan our baseclasses, and pick the most favorable + access. */ + binfos = BINFO_BASETYPES (binfo); + n_baselinks = binfos ? TREE_VEC_LENGTH (binfos) : 0; + for (i = 0; i < n_baselinks; ++i) + { + tree base_binfo = TREE_VEC_ELT (binfos, i); + tree base_access = TREE_CHAIN (canonical_binfo (base_binfo)); + + if (!base_access || base_access == access_private_node) + /* If it was not accessible in the base, or only + accessible as a private member, we can't access it + all. */ + base_access = NULL_TREE; + else if (TREE_VIA_PROTECTED (base_binfo)) + /* Public and protected members in the base are + protected here. */ + base_access = access_protected_node; + else if (!TREE_VIA_PUBLIC (base_binfo)) + /* Public and protected members in the base are + private here. */ + base_access = access_private_node; + + /* See if the new access, via this base, gives more + access than our previous best access. */ + if (base_access && + (base_access == access_public_node + || (base_access == access_protected_node + && access != access_public_node) + || (base_access == access_private_node + && !access))) + { + access = base_access; - /* We don't currently support access control on nested types. */ - if (TREE_CODE (field) == TYPE_DECL) - return access_public_node; + /* If the new access is public, we can't do better. */ + if (access == access_public_node) + break; + } + } + } + } - previous_scope = current_scope (); + /* Note the access to DECL in TYPE. */ + TREE_CHAIN (binfo) = access; - context = DECL_REAL_CONTEXT (field); + /* Mark TYPE as visited so that if we reach it again we do not + duplicate our efforts here. */ + SET_BINFO_MARKED (binfo); - /* Fields coming from nested anonymous unions have their DECL_CLASS_CONTEXT - slot set to the union type rather than the record type containing - the anonymous union. */ - if (context && ANON_UNION_TYPE_P (context) - && TREE_CODE (field) == FIELD_DECL) - context = TYPE_CONTEXT (context); + return NULL_TREE; +} - /* If we aren't a real class member (e.g. we're from a namespace-scope - anonymous union), there's no access control. */ - if (context == NULL_TREE || ! TYPE_P (context)) - PUBLIC_RETURN; - - /* Virtual function tables are never private. But we should know that - we are looking for this, and not even try to hide it. */ - if (DECL_NAME (field) && VFIELD_NAME_P (DECL_NAME (field)) == 1) - PUBLIC_RETURN; - - /* Member found immediately within object. */ - if (BINFO_INHERITANCE_CHAIN (basetype_path) == NULL_TREE) - { - /* Are we (or an enclosing scope) friends with the class that has - FIELD? */ - if (is_friend (context, previous_scope)) - PUBLIC_RETURN; - - /* If it's private, it's private, you letch. */ - if (TREE_PRIVATE (field)) - PRIVATE_RETURN; - - /* ARM $11.5. Member functions of a derived class can access the - non-static protected members of a base class only through a - pointer to the derived class, a reference to it, or an object - of it. Also any subsequently derived classes also have - access. */ - else if (TREE_PROTECTED (field)) - { - if (current_class_type - && (static_mem || DECL_CONSTRUCTOR_P (field)) - && ACCESSIBLY_DERIVED_FROM_P (context, current_class_type)) - PUBLIC_RETURN; - else - PROTECTED_RETURN; - } - else - PUBLIC_RETURN; - } +/* Return the access to DECL in TYPE. */ - /* must reverse more than one element */ - basetype_path = reverse_path (basetype_path); - types = basetype_path; - via_protected = 0; - access = access_default_node; - protected_ok = static_mem && current_class_type - && ACCESSIBLY_DERIVED_FROM_P (BINFO_TYPE (types), current_class_type); +static tree +access_in_type (type, decl) + tree type; + tree decl; +{ + tree binfo = TYPE_BINFO (type); - while (1) - { - tree member; - tree binfo = types; - tree type = BINFO_TYPE (binfo); - int private_ok = 0; + /* We must take into account - /* Friends of a class can see protected members of its bases. - Note that classes are their own friends. */ - if (is_friend (type, previous_scope)) - { - protected_ok = 1; - private_ok = 1; - } + [class.paths] - member = purpose_member (type, DECL_ACCESS (field)); - if (member) - { - access = TREE_VALUE (member); - break; - } + If a name can be reached by several paths through a multiple + inheritance graph, the access is that of the path that gives + most access. - types = BINFO_INHERITANCE_CHAIN (types); + The algorithm we use is to make a post-order depth-first traversal + of the base-class hierarchy. As we come up the tree, we annotate + each node with the most lenient access. */ + dfs_walk_real (binfo, 0, dfs_access_in_type, shared_unmarked_p, decl); + dfs_walk (binfo, dfs_unmark, shared_marked_p, 0); - /* If the next type was VIA_PROTECTED, then fields of all remaining - classes past that one are *at least* protected. */ - if (types) - { - if (TREE_VIA_PROTECTED (types)) - via_protected = 1; - else if (! TREE_VIA_PUBLIC (types) && ! private_ok) - { - access = access_private_node; - break; - } - } - else - break; + return TREE_CHAIN (binfo); +} + +/* Called from dfs_accessible_p via dfs_walk. */ + +static tree +dfs_accessible_queue_p (binfo, data) + tree binfo; + void *data ATTRIBUTE_UNUSED; +{ + if (BINFO_MARKED (binfo)) + return NULL_TREE; + + /* If this class is inherited via private or protected inheritance, + then we can't see it, unless we are a friend of the subclass. */ + if (!TREE_VIA_PUBLIC (binfo) + && !is_friend (BINFO_TYPE (BINFO_INHERITANCE_CHAIN (binfo)), + current_scope ())) + return NULL_TREE; + + return canonical_binfo (binfo); +} + +/* Called from dfs_accessible_p via dfs_walk. */ + +static tree +dfs_accessible_p (binfo, data) + tree binfo; + void *data; +{ + int protected_ok = data != 0; + tree access; + + /* We marked the binfos while computing the access in each type. + So, we unmark as we go now. */ + SET_BINFO_MARKED (binfo); + + access = TREE_CHAIN (binfo); + if (access == access_public_node + || (access == access_protected_node && protected_ok)) + return binfo; + else if (access && is_friend (BINFO_TYPE (binfo), current_scope ())) + return binfo; + + return NULL_TREE; +} + +/* DECL is a declaration from a base class of TYPE, which was the + classs used to name DECL. Return non-zero if, in the current + context, DECL is accessible. If TYPE is actually a BINFO node, + then the most derived class along the path indicated by BINFO is + the one used to name the DECL. */ + +int +accessible_p (type, decl) + tree type; + tree decl; + +{ + tree scope; + tree binfo; + tree t; + + /* Non-zero if it's OK to access DECL if it has protected + accessibility in TYPE. */ + int protected_ok = 0; + + /* If we're not checking access, everything is accessible. */ + if (!flag_access_control) + return 1; + + /* If this declaration is in a block or namespace scope, there's no + access control. */ + if (!TYPE_P (context_for_name_lookup (decl))) + return 1; + + /* We don't do access control for types yet. */ + if (TREE_CODE (decl) == TYPE_DECL) + return 1; + + if (!TYPE_P (type)) + { + binfo = type; + type = BINFO_TYPE (type); } + else + binfo = TYPE_BINFO (type); + + /* [class.access.base] + + A member m is accessible when named in class N if + + --m as a member of N is public, or - /* No special visibilities apply. Use normal rules. */ + --m as a member of N is private, and the reference occurs in a + member or friend of class N, or - if (access == access_default_node) + --m as a member of N is protected, and the reference occurs in a + member or friend of class N, or in a member or friend of a + class P derived from N, where m as a member of P is private or + protected, or + + --there exists a base class B of N that is accessible at the point + of reference, and m is accessible when named in class B. + + We walk the base class hierarchy, checking these conditions. */ + + /* Figure out where the reference is occurring. Check to see if + DECL is private or protected in this scope, since that will + determine whether protected access in TYPE allowed. */ + if (current_class_type + && DERIVED_FROM_P (type, current_class_type)) { - if (is_friend (context, previous_scope)) - access = access_public_node; - else if (TREE_PRIVATE (field)) - access = access_private_node; - else if (TREE_PROTECTED (field)) - access = access_protected_node; - else - access = access_public_node; + tree access = access_in_type (current_class_type, decl); + if (same_type_p (current_class_type, type) + && access == access_private_node) + protected_ok = 1; + else if (access && (access == access_private_node + || access == access_protected_node)) + protected_ok = 1; } - if (access == access_public_node && via_protected) - access = access_protected_node; + /* Now, loop through the classes of which SCOPE is a friend. */ + if (!protected_ok && scope) + { + /* FIXME: Implement this. Right now, we have no way of knowing + which classes befriend a particular function or class. */ + } - if (access == access_protected_node && protected_ok) - access = access_public_node; + /* [class.protected] -#if 0 - if (access == access_public_node) - DECL_PUBLIC (field) = 1; - else if (access == access_protected_node) - DECL_PROTECTED (field) = 1; - else if (access == access_private_node) - DECL_PRIVATE (field) = 1; - else my_friendly_abort (96); -#endif - return access; + When a friend or a member function of a derived class references + a protected nonstatic member of a base class, an access check + applies in addition to those described earlier in clause + _class.access_.4) Except when forming a pointer to member + (_expr.unary.op_), the access must be through a pointer to, + reference to, or object of the derived class itself (or any class + derived from that class) (_expr.ref_). If the access is to form + a pointer to member, the nested-name-specifier shall name the + derived class (or any class derived from that class). */ + if (protected_ok && DECL_NONSTATIC_MEMBER_P (decl)) + { + /* We can tell through what the reference is occurring by + chasing BINFO up to the root. */ + t = binfo; + while (BINFO_INHERITANCE_CHAIN (t)) + t = BINFO_INHERITANCE_CHAIN (t); + + if (!DERIVED_FROM_P (current_class_type, BINFO_TYPE (t))) + protected_ok = 0; + } + + /* Standardize on the same that will access_in_type will use. We + don't need to know what path was chosen from this point onwards. */ + binfo = TYPE_BINFO (type); + + /* Compute the accessibility of DECL in the class hierarchy + dominated by type. */ + access_in_type (type, decl); + /* Walk the hierarchy again, looking for a base class that allows + access. */ + t = dfs_walk (binfo, dfs_accessible_p, + dfs_accessible_queue_p, + protected_ok ? &protected_ok : 0); + /* Clear any mark bits. */ + dfs_walk (binfo, dfs_unmark, shared_marked_p, 0); + + return t != NULL_TREE; } /* Routine to see if the sub-object denoted by the binfo PARENT can be @@ -799,15 +945,18 @@ is_subobject_of_p (parent, binfo) tree binfos = BINFO_BASETYPES (binfo); int i, n_baselinks = binfos ? TREE_VEC_LENGTH (binfos) : 0; + if (TREE_VIA_VIRTUAL (parent)) + parent = TYPE_BINFO (TREE_TYPE (parent)); + if (TREE_VIA_VIRTUAL (binfo)) + binfo = TYPE_BINFO (TREE_TYPE (binfo)); + if (parent == binfo) return 1; /* Process and/or queue base types. */ for (i = 0; i < n_baselinks; i++) { - tree base_binfo = TREE_VEC_ELT (binfos, i); - if (TREE_VIA_VIRTUAL (base_binfo)) - base_binfo = TYPE_BINFO (BINFO_TYPE (base_binfo)); + tree base_binfo = canonical_binfo (TREE_VEC_ELT (binfos, i)); if (is_subobject_of_p (parent, base_binfo)) return 1; } @@ -859,20 +1008,21 @@ lookup_fnfields_here (type, name) } struct lookup_field_info { + /* The type in which we're looking. */ + tree type; /* The name of the field for which we're looking. */ tree name; /* If non-NULL, the current result of the lookup. */ tree rval; /* The path to RVAL. */ tree rval_binfo; - /* If non-NULL, a list of the possible candidates. */ + /* If non-NULL, the lookup was ambiguous, and this is a list of the + candidates. */ tree ambiguous; - /* The access computed for RVAL. */ - tree access; - /* If non-zero, we must check access. */ - int protect; /* If non-zero, we are looking for types, not data members. */ int want_type; + /* If non-zero, RVAL was found by looking through a dependent base. */ + int from_dep_base_p; /* If something went wrong, a message indicating what. */ char *errstr; }; @@ -882,14 +1032,28 @@ struct lookup_field_info { it. DATA is really a struct lookup_field_info. Called from lookup_field via breadth_first_search. */ -static int +static tree lookup_field_queue_p (binfo, data) tree binfo; void *data; { struct lookup_field_info *lfi = (struct lookup_field_info *) data; - - return !(lfi->rval_binfo && hides (lfi->rval_binfo, binfo)); + + /* Don't look for constructors or destructors in base classes. */ + if (lfi->name == ctor_identifier || lfi->name == dtor_identifier) + return NULL_TREE; + + /* If this base class is hidden by the best-known value so far, we + don't need to look. */ + if (!lfi->from_dep_base_p && lfi->rval_binfo + && hides (lfi->rval_binfo, binfo)) + return NULL_TREE; + + if (TREE_VIA_VIRTUAL (binfo)) + return binfo_member (BINFO_TYPE (binfo), + CLASSTYPE_VBASECLASSES (lfi->type)); + else + return binfo; } /* DATA is really a struct lookup_field_info. Look for a field with @@ -906,22 +1070,54 @@ lookup_field_r (binfo, data) tree type = BINFO_TYPE (binfo); tree nval; int idx; + int from_dep_base_p; - /* See if the field is present in TYPE. */ - nval = lookup_field_1 (type, lfi->name); + /* First, look for a function. There can't be a function and a data + member with the same name, and if there's a function and a type + with the same name, the type is hidden by the function. */ + idx = lookup_fnfields_here (type, lfi->name); + if (idx >= 0) + nval = TREE_VEC_ELT (CLASSTYPE_METHOD_VEC (type), idx); + else + /* Look for a data member or type. */ + nval = lookup_field_1 (type, lfi->name); + + /* If there is no declaration with the indicated name in this type, + then there's nothing to do. */ if (!nval) - idx = lookup_fnfields_here (type, lfi->name); + return NULL_TREE; - /* If the data member wasn't present, then there's nothing further - to do for this type. */ - if (!nval && idx < 0) + from_dep_base_p = dependent_base_p (binfo); + if (lfi->from_dep_base_p && !from_dep_base_p) + { + /* If the new declaration is not found via a dependent base, and + the old one was, then we must prefer the new one. We weren't + really supposed to be able to find the old one, so we don't + want to be affected by a specialization. Consider: + + struct B { typedef int I; }; + template struct D1 : virtual public B {}; + template struct D : + public D1, virtual pubic B { I i; }; + + The `I' in `D' is unambigousuly `B::I', regardless of how + D1 is specialized. */ + lfi->from_dep_base_p = 0; + lfi->rval = NULL_TREE; + lfi->rval_binfo = NULL_TREE; + lfi->ambiguous = NULL_TREE; + lfi->errstr = 0; + } + else if (lfi->rval_binfo && !lfi->from_dep_base_p && from_dep_base_p) + /* Similarly, if the old declaration was not found via a dependent + base, and the new one is, ignore the new one. */ return NULL_TREE; /* If the lookup already found a match, and the new value doesn't hide the old one, we might have an ambiguity. */ if (lfi->rval_binfo && !hides (binfo, lfi->rval_binfo)) { - if (nval && nval == lfi->rval && SHARED_MEMBER_P (nval)) + if (nval == lfi->rval && SHARED_MEMBER_P (nval)) /* The two things are really the same. */ ; else if (hides (lfi->rval_binfo, binfo)) @@ -937,14 +1133,6 @@ lookup_field_r (binfo, data) to the list. */ lfi->ambiguous = scratch_tree_cons (NULL_TREE, lfi->rval, NULL_TREE); - /* If NVAL is NULL here, that means that we found a - function, not a data member. Pick a representative - function, from the overload set, for use in error - messages. */ - if (!nval) - nval = OVL_CURRENT (TREE_VEC_ELT (CLASSTYPE_METHOD_VEC - (type), idx)); - /* Add the new value. */ lfi->ambiguous = scratch_tree_cons (NULL_TREE, nval, lfi->ambiguous); @@ -955,174 +1143,44 @@ lookup_field_r (binfo, data) { /* The new lookup is the best we've got so far. Verify that it's the kind of thing we're looking for. */ - if (nval) + if (lfi->want_type && TREE_CODE (nval) != TYPE_DECL) { - if (lfi->want_type && TREE_CODE (nval) != TYPE_DECL) - { - nval = purpose_member (lfi->name, CLASSTYPE_TAGS (type)); - if (nval) - nval = TYPE_MAIN_DECL (TREE_VALUE (nval)); - } - else if (!lfi->want_type && TREE_CODE (nval) == TYPE_DECL - && lookup_fnfields_here (type, lfi->name) >= 0) - /* The type declaration is actually hidden by the - function declaration. */ - nval = NULL_TREE; + nval = purpose_member (lfi->name, CLASSTYPE_TAGS (type)); + if (nval) + nval = TYPE_MAIN_DECL (TREE_VALUE (nval)); } if (nval) { - /* The lookup found a data member. */ - lfi->rval = nval; - if (lfi->protect) - lfi->access = compute_access (binfo, nval); /* If the thing we're looking for is a virtual base class, then we know we've got what we want at this point; there's no way to get an ambiguity. */ if (VBASE_NAME_P (lfi->name)) - return nval; + { + lfi->rval = nval; + return nval; + } + + if (from_dep_base_p && TREE_CODE (nval) != TYPE_DECL + /* We need to return a member template class so we can + define partial specializations. Is there a better + way? */ + && !DECL_CLASS_TEMPLATE_P (nval)) + /* The thing we're looking for isn't a type, so the implicit + typename extension doesn't apply, so we just pretend we + didn't find anything. */ + return NULL_TREE; } - else - /* The lookup found a function member. This lookup hides - whatever was there before, so even though we're not - interested in this value we keep track of the way in - which we found the function. Subsequent lookups - shouldn't find a data member if it is hidden by this - function member. */ - lfi->rval = NULL_TREE; + lfi->rval = nval; + lfi->from_dep_base_p = from_dep_base_p; lfi->rval_binfo = binfo; } - return 0; -} - -/* Check to see if the result of the field lookup (as indicated by - DATA, which is really a struct field_info) has any access other - than that we previously computed. SEARCH_HEAD and SEARCH_TAIL - bound the path taken to find the result. Called from lookup_field - via breadth_first_search. */ - -static void -lookup_field_post (search_head, search_tail, data) - tree *search_head; - tree *search_tail; - void *data; -{ - struct lookup_field_info *lfi = (struct lookup_field_info *) data; - tree rval = lfi->rval; - tree own_access = access_default_node; - tree *tp; - - /* If we didn't find anything, or we found ambiguous function - declarations, but no data members, just return. */ - if (!rval) - { - lfi->errstr = 0; - return; - } - - /* If we've already hit a snag, we're done. */ - if (lfi->errstr) - return; - - /* Check accessibility. */ - if (lfi->protect) - { - /* If is possible for one of the derived types on the path to - have defined special access for this field. Look for such - declarations and report an error if a conflict is found. */ - if (DECL_LANG_SPECIFIC (rval) && DECL_ACCESS (rval)) - for (tp = search_head; tp < search_tail; ++tp) - { - tree new_v = NULL_TREE; - - if (lfi->access != access_default_node) - new_v = compute_access (*tp, lfi->rval); - if (lfi->access != access_default_node && new_v != lfi->access) - { - lfi->errstr = "conflicting access to member `%D'"; - lfi->access = access_default_node; - return; - } - own_access = new_v; - tp++; - } - - /* Check to see that access to the member is allowed. */ - if (own_access == access_private_node) - lfi->errstr = "member `%D' declared private"; - else if (own_access == access_protected_node) - lfi->errstr = "member `%D' declared protected"; - else if (lfi->access == access_private_node) - lfi->errstr = TREE_PRIVATE (lfi->rval) - ? "member `%D' is private" - : "member `%D' is from private base class"; - else if (lfi->access== access_protected_node) - lfi->errstr = TREE_PROTECTED (rval) - ? "member `%D' is protected" - : "member `%D' is from protected base class"; - } - - /* The implicit typename extension allows us to find type - declarations in dependent base clases. It also handles - out-of-class definitions where the enclosing class is a - template. For example: - - template struct S { struct I { void f(); }; }; - template void S::I::f() {} - - will come through here to handle `S::I'. The bottom line is - that while searching for the field, we will have happily - descended into dependent base classes, and we must now figure out - what to do about it. */ - - /* If we're not in a template, or the search terminated in the - current class, then there's no problem. */ - if (!processing_template_decl - || currently_open_class (BINFO_TYPE (lfi->rval_binfo))) - return; - - /* We need to return a member template class so we can define partial - specializations. Is there a better way? */ - if (DECL_CLASS_TEMPLATE_P (rval)) - return; - - /* Walk the path to the base in which the search finally suceeded, - checking for dependent bases along the way. */ - for (tp = (currently_open_class (BINFO_TYPE (*search_head))) - ? search_head + 1 : search_head; - tp < search_tail; - ++tp) - { - if (!uses_template_parms (BINFO_TYPE (*tp))) - continue; - - if (TREE_CODE (rval) != TYPE_DECL) - { - /* The thing we're looking for isn't a type, so the implicit - typename extension doesn't apply, so we just pretend we - didn't find anything. */ - lfi->rval = NULL_TREE; - return; - } - - /* We've passed a dependent base on our way to finding the - type. So, create an implicit typename type. The appropriate - context for the typename is *TP. But, there's a small catch; - the base classes for a partial instantiation are not correct, - because we don't tsubst into them when we do the partial - instantiation. So, we just use the context of the current - class type. */ - lfi->rval = TYPE_STUB_DECL (build_typename_type - (BINFO_TYPE (*search_head), - lfi->name, lfi->name, - TREE_TYPE (rval))); - return; - } + return NULL_TREE; } -/* Look for a field named NAME in an inheritance lattice dominated by +/* Look for a memer named NAME in an inheritance lattice dominated by XBASETYPE. PROTECT is zero if we can avoid computing access information, otherwise it is 1. WANT_TYPE is 1 when we should only return TYPE_DECLs, if no TYPE_DECL can be found return NULL_TREE. @@ -1132,7 +1190,7 @@ lookup_field_post (search_head, search_tail, data) the error. */ tree -lookup_field (xbasetype, name, protect, want_type) +lookup_member (xbasetype, name, protect, want_type) register tree xbasetype, name; int protect, want_type; { @@ -1156,17 +1214,6 @@ lookup_field (xbasetype, name, protect, want_type) char *errstr = 0; - bzero (&lfi, sizeof (lfi)); - -#if 0 - /* We cannot search for constructor/destructor names like this. */ - /* This can't go here, but where should it go? */ - /* If we are looking for a constructor in a templated type, use the - unspecialized name, as that is how we store it. */ - if (IDENTIFIER_TEMPLATE (name)) - name = constructor_name (name); -#endif - if (xbasetype == current_class_type && TYPE_BEING_DEFINED (xbasetype) && IDENTIFIER_CLASS_VALUE (name)) { @@ -1197,12 +1244,11 @@ lookup_field (xbasetype, name, protect, want_type) n_calls_lookup_field++; #endif /* GATHER_STATISTICS */ + bzero (&lfi, sizeof (lfi)); + lfi.type = type; lfi.name = name; - lfi.protect = protect; lfi.want_type = want_type; - lfi.access = access_default_node; - breadth_first_search (basetype_path, &lookup_field_r, - &lookup_field_queue_p, &lookup_field_post, &lfi); + bfs_walk (basetype_path, &lookup_field_r, &lookup_field_queue_p, &lfi); rval = lfi.rval; rval_binfo = lfi.rval_binfo; if (rval_binfo) @@ -1213,6 +1259,16 @@ lookup_field (xbasetype, name, protect, want_type) just return NULL_TREE. */ if (!protect && lfi.ambiguous) return NULL_TREE; + + /* [class.access] + + In the case of overloaded function names, access control is + applied to the function selected by overloaded resolution. */ + if (rval && protect && !is_overloaded_fn (rval) + && !IS_SIGNATURE_POINTER (DECL_REAL_CONTEXT (rval)) + && !IS_SIGNATURE_REFERENCE (DECL_REAL_CONTEXT (rval)) + && !enforce_access (xbasetype, rval)) + return error_mark_node; if (errstr && protect) { @@ -1222,6 +1278,50 @@ lookup_field (xbasetype, name, protect, want_type) rval = error_mark_node; } + /* If the thing we found was found via the implicit typename + extension, build the typename type. */ + if (rval && lfi.from_dep_base_p && !DECL_CLASS_TEMPLATE_P (rval)) + rval = TYPE_STUB_DECL (build_typename_type (BINFO_TYPE (basetype_path), + name, name, + TREE_TYPE (rval))); + + if (rval && is_overloaded_fn (rval)) + rval = scratch_tree_cons (basetype_path, rval, NULL_TREE); + + return rval; +} + +/* Like lookup_member, except that if we find a function member we + return NULL_TREE. */ + +tree +lookup_field (xbasetype, name, protect, want_type) + register tree xbasetype, name; + int protect, want_type; +{ + tree rval = lookup_member (xbasetype, name, protect, want_type); + + /* Ignore functions. */ + if (rval && TREE_CODE (rval) == TREE_LIST) + return NULL_TREE; + + return rval; +} + +/* Like lookup_member, except that if we find a non-function member we + return NULL_TREE. */ + +tree +lookup_fnfields (xbasetype, name, protect) + register tree xbasetype, name; + int protect; +{ + tree rval = lookup_member (xbasetype, name, protect, /*want_type=*/0); + + /* Ignore non-functions. */ + if (rval && TREE_CODE (rval) != TREE_LIST) + return NULL_TREE; + return rval; } @@ -1342,325 +1442,65 @@ lookup_fnfields_1 (type, name) /* Since all conversion operators come first, we know there is no such operator. */ methods = end; - break; - } - else if (TREE_CODE (OVL_CURRENT (*methods)) == TEMPLATE_DECL) - break; - } - } - - if (methods != end && *methods) - return methods - &TREE_VEC_ELT (method_vec, 0); - } - - return -1; -} - -/* Starting from BASETYPE, return a TREE_BASELINK-like object - which gives the following information (in a list): - - TREE_TYPE: list of basetypes needed to get to... - TREE_VALUE: list of all functions in a given type - which have name NAME. - - No access information is computed by this function, - other then to adorn the list of basetypes with - TREE_VIA_PUBLIC. - - If there are two ways to find a name (two members), if COMPLAIN is - non-zero, then error_mark_node is returned, and an error message is - printed, otherwise, just an error_mark_node is returned. - - As a special case, is COMPLAIN is -1, we don't complain, and we - don't return error_mark_node, but rather the complete list of - virtuals. This is used by get_virtuals_named_this. */ - -tree -lookup_fnfields (basetype_path, name, complain) - tree basetype_path, name; - int complain; -{ - int head = 0, tail = 0; - tree type, rval, rval_binfo = NULL_TREE, rvals = NULL_TREE; - tree rval_binfo_h = NULL_TREE, binfo, basetype_chain, binfo_h; - int idx, find_all = 0; - - /* rval_binfo is the binfo associated with the found member, note, - this can be set with useful information, even when rval is not - set, because it must deal with ALL members, not just function - members. It is used for ambiguity checking and the hidden - checks. Whereas rval is only set if a proper (not hidden) - function member is found. */ - - /* rval_binfo_h and binfo_h are binfo values used when we perform the - hiding checks, as virtual base classes may not be shared. The strategy - is we always go into the binfo hierarchy owned by TYPE_BINFO of - virtual base classes, as we cross virtual base class lines. This way - we know that binfo of a virtual base class will always == itself when - found along any line. (mrs) */ - - /* For now, don't try this. */ - int protect = complain; - - char *errstr = 0; - - if (complain == -1) - { - find_all = 1; - protect = complain = 0; - } - -#if 0 - /* We cannot search for constructor/destructor names like this. */ - /* This can't go here, but where should it go? */ - /* If we are looking for a constructor in a templated type, use the - unspecialized name, as that is how we store it. */ - if (IDENTIFIER_TEMPLATE (name)) - name = constructor_name (name); -#endif - - binfo = basetype_path; - binfo_h = binfo; - type = complete_type (BINFO_TYPE (basetype_path)); - -#ifdef GATHER_STATISTICS - n_calls_lookup_fnfields++; -#endif /* GATHER_STATISTICS */ - - idx = lookup_fnfields_here (type, name); - if (idx >= 0 || lookup_field_1 (type, name)) - { - rval_binfo = basetype_path; - rval_binfo_h = rval_binfo; - } - - if (idx >= 0) - { - rval = TREE_VEC_ELT (CLASSTYPE_METHOD_VEC (type), idx); - rvals = scratch_tree_cons (basetype_path, rval, rvals); - if (BINFO_BASETYPES (binfo) && CLASSTYPE_BASELINK_VEC (type)) - TREE_TYPE (rvals) = TREE_VEC_ELT (CLASSTYPE_BASELINK_VEC (type), idx); - - return rvals; - } - rval = NULL_TREE; - - if (name == ctor_identifier || name == dtor_identifier) - { - /* Don't allow lookups of constructors and destructors to go - deeper than the first place we look. */ - return NULL_TREE; - } - - if (basetype_path == TYPE_BINFO (type)) - { - basetype_chain = CLASSTYPE_BINFO_AS_LIST (type); - my_friendly_assert (BINFO_INHERITANCE_CHAIN (basetype_path) == NULL_TREE, - 980827); - } - else - basetype_chain = build_expr_list (NULL_TREE, basetype_path); - - /* The ambiguity check relies upon breadth first searching. */ - - search_stack = push_search_level (search_stack, &search_obstack); - binfo = basetype_path; - binfo_h = binfo; - - while (1) - { - tree binfos = BINFO_BASETYPES (binfo); - int i, n_baselinks = binfos ? TREE_VEC_LENGTH (binfos) : 0; - int idx; - - /* Process and/or queue base types. */ - for (i = 0; i < n_baselinks; i++) - { - tree base_binfo = TREE_VEC_ELT (binfos, i); - if (BINFO_FIELDS_MARKED (base_binfo) == 0) - { - tree btypes; - - SET_BINFO_FIELDS_MARKED (base_binfo); - btypes = scratch_tree_cons (NULL_TREE, base_binfo, basetype_chain); - if (TREE_VIA_VIRTUAL (base_binfo)) - btypes = scratch_tree_cons (NULL_TREE, - TYPE_BINFO (BINFO_TYPE (TREE_VEC_ELT (BINFO_BASETYPES (binfo_h), i))), - btypes); - else - btypes = scratch_tree_cons (NULL_TREE, - TREE_VEC_ELT (BINFO_BASETYPES (binfo_h), i), - btypes); - obstack_ptr_grow (&search_obstack, btypes); - tail += 1; - if (tail >= search_stack->limit) - my_friendly_abort (99); - } - } - - /* Process head of queue, if one exists. */ - if (head >= tail) - break; - - basetype_chain = search_stack->first[head++]; - binfo_h = TREE_VALUE (basetype_chain); - basetype_chain = TREE_CHAIN (basetype_chain); - basetype_path = TREE_VALUE (basetype_chain); - if (TREE_CHAIN (basetype_chain)) - my_friendly_assert - ((BINFO_INHERITANCE_CHAIN (basetype_path) - == TREE_VALUE (TREE_CHAIN (basetype_chain))) - /* We only approximate base info for partial instantiations. */ - || current_template_parms, - 980827); - else - my_friendly_assert (BINFO_INHERITANCE_CHAIN (basetype_path) - == NULL_TREE, 980827); - - binfo = basetype_path; - type = BINFO_TYPE (binfo); - - /* See if we can find NAME in TYPE. If RVAL is nonzero, - and we do find NAME in TYPE, verify that such a second - sighting is in fact valid. */ - - idx = lookup_fnfields_here (type, name); - - if (idx >= 0 || (lookup_field_1 (type, name)!=NULL_TREE && !find_all)) - { - if (rval_binfo && !find_all && hides (rval_binfo_h, binfo_h)) - { - /* This is ok, the member found is in rval_binfo, not - here (binfo). */ - } - else if (rval_binfo==NULL_TREE || find_all || hides (binfo_h, rval_binfo_h)) - { - /* This is ok, the member found is here (binfo), not in - rval_binfo. */ - if (idx >= 0) - { - rval = TREE_VEC_ELT (CLASSTYPE_METHOD_VEC (type), idx); - /* Note, rvals can only be previously set if find_all is - true. */ - rvals = scratch_tree_cons (basetype_path, rval, rvals); - if (TYPE_BINFO_BASETYPES (type) - && CLASSTYPE_BASELINK_VEC (type)) - TREE_TYPE (rvals) = TREE_VEC_ELT (CLASSTYPE_BASELINK_VEC (type), idx); - } - else - { - /* Undo finding it before, as something else hides it. */ - rval = NULL_TREE; - rvals = NULL_TREE; + break; } - rval_binfo = binfo; - rval_binfo_h = binfo_h; - } - else - { - /* This is ambiguous. */ - errstr = "request for method `%D' is ambiguous"; - rvals = error_mark_node; - break; + else if (TREE_CODE (OVL_CURRENT (*methods)) == TEMPLATE_DECL) + break; } } - } - { - tree *tp = search_stack->first; - tree *search_tail = tp + tail; - while (tp < search_tail) - { - CLEAR_BINFO_FIELDS_MARKED (TREE_VALUE (TREE_CHAIN (*tp))); - tp += 1; - } - } - search_stack = pop_search_level (search_stack); - - if (errstr && protect) - { - cp_error (errstr, name); - rvals = error_mark_node; + if (methods != end && *methods) + return methods - &TREE_VEC_ELT (method_vec, 0); } - return rvals; -} - -/* Look for a field or function named NAME in an inheritance lattice - dominated by XBASETYPE. PROTECT is zero if we can avoid computing - access information, otherwise it is 1. WANT_TYPE is 1 when we should - only return TYPE_DECLs, if no TYPE_DECL can be found return NULL_TREE. */ - -tree -lookup_member (xbasetype, name, protect, want_type) - tree xbasetype, name; - int protect, want_type; -{ - tree ret, basetype_path; - - if (TREE_CODE (xbasetype) == TREE_VEC) - basetype_path = xbasetype; - else if (IS_AGGR_TYPE_CODE (TREE_CODE (xbasetype))) - { - basetype_path = TYPE_BINFO (xbasetype); - my_friendly_assert (BINFO_INHERITANCE_CHAIN (basetype_path) - == NULL_TREE, 980827); - } - else - my_friendly_abort (97); - - ret = lookup_field (basetype_path, name, protect, want_type); - if (! ret && ! want_type) - ret = lookup_fnfields (basetype_path, name, protect); - return ret; + return -1; } -/* BREADTH-FIRST SEARCH ROUTINES. */ - -/* Search a multiple inheritance hierarchy by breadth-first search. - - BINFO is an aggregate type, possibly in a multiple-inheritance hierarchy. - TESTFN is a function, which, if true, means that our condition has - been met, and its return value should be returned. - QFN, if non-NULL, is a predicate dictating whether the type should - even be queued. - POSTFN, if non-NULL, is a function to call before returning. It is - passed an array whose first element is the most derived type in the - chain, and whose last element is the least derived type. - - All of the functions are also passed the DATA, which they may use - as they see fit. */ +/* Walk the class hierarchy dominated by TYPE. FN is called for each + type in the hierarchy, in a breadth-first preorder traversal. . + If it ever returns a non-NULL value, that value is immediately + returned and the walk is terminated. At each node FN, is passed a + BINFO indicating the path from the curently visited base-class to + TYPE. The TREE_CHAINs of the BINFOs may be used for scratch space; + they are otherwise unused. Before each base-class is walked QFN is + called. If the value returned is non-zero, the base-class is + walked; otherwise it is not. If QFN is NULL, it is treated as a + function which always returns 1. Both FN and QFN are passed the + DATA whenever they are called. */ static tree -breadth_first_search (binfo, testfn, qfn, postfn, data) +bfs_walk (binfo, fn, qfn, data) tree binfo; - tree (*testfn) PROTO((tree, void *)); - int (*qfn) PROTO((tree, void *)); - void (*postfn) PROTO((tree *, tree *, void *)); + tree (*fn) PROTO((tree, void *)); + tree (*qfn) PROTO((tree, void *)); void *data; { - int head = 0, tail = 0; + size_t head; + size_t tail; tree rval = NULL_TREE; - tree *tp; - tree *search_tail; + /* An array of the base classes of BINFO. These will be built up in + breadth-first order, except where QFN prunes the search. */ + varray_type bfs_bases; - search_stack = push_search_level (search_stack, &search_obstack); + /* Start with enough room for ten base classes. That will be enough + for most hierarchies. */ + VARRAY_TREE_INIT (bfs_bases, 10, "search_stack"); - SET_BINFO_MARKED (binfo); - obstack_ptr_grow (&search_obstack, binfo); - ++tail; + /* Put the first type into the stack. */ + VARRAY_TREE (bfs_bases, 0) = binfo; + tail = 1; - while (head < tail) + for (head = 0; head < tail; ++head) { - tree binfos; - int n_baselinks; int i; + int n_baselinks; + tree binfos; /* Pull the next type out of the queue. */ - binfo = search_stack->first[head++]; + binfo = VARRAY_TREE (bfs_bases, head); /* If this is the one we're looking for, we're done. */ - rval = (*testfn) (binfo, data); + rval = (*fn) (binfo, data); if (rval) break; @@ -1671,64 +1511,145 @@ breadth_first_search (binfo, testfn, qfn, postfn, data) { tree base_binfo = TREE_VEC_ELT (binfos, i); - if (TREE_VIA_VIRTUAL (base_binfo)) - base_binfo = TYPE_BINFO (BINFO_TYPE (base_binfo)); + if (qfn) + base_binfo = (*qfn) (base_binfo, data); - if (BINFO_MARKED (base_binfo) == 0 - && (qfn == 0 || (*qfn) (base_binfo, data))) + if (base_binfo) { - SET_BINFO_MARKED (base_binfo); - obstack_ptr_grow (&search_obstack, base_binfo); + if (tail == VARRAY_SIZE (bfs_bases)) + VARRAY_GROW (bfs_bases, 2 * VARRAY_SIZE (bfs_bases)); + VARRAY_TREE (bfs_bases, tail) = base_binfo; ++tail; - if (tail >= search_stack->limit) - my_friendly_abort (100); } } } - tp = search_stack->first; - search_tail = tp + tail; - - if (postfn) - (*postfn) (tp, search_tail, data); - - while (tp < search_tail) + /* Clean up. */ + VARRAY_FREE (bfs_bases); + + return rval; +} + +/* Exactly like bfs_walk, except that a depth-first traversal is + performed, and PREFN is called in preorder, while POSTFN is called + in postorder. */ + +static tree +dfs_walk_real (binfo, prefn, postfn, qfn, data) + tree binfo; + tree (*prefn) PROTO((tree, void *)); + tree (*postfn) PROTO((tree, void *)); + tree (*qfn) PROTO((tree, void *)); + void *data; +{ + int i; + int n_baselinks; + tree binfos; + tree rval = NULL_TREE; + + /* Call the pre-order walking function. */ + if (prefn) { - tree binfo = *tp++; - CLEAR_BINFO_MARKED (binfo); + rval = (*prefn) (binfo, data); + if (rval) + return rval; } - search_stack = pop_search_level (search_stack); + /* Process the basetypes. */ + binfos = BINFO_BASETYPES (binfo); + n_baselinks = binfos ? TREE_VEC_LENGTH (binfos): 0; + for (i = 0; i < n_baselinks; i++) + { + tree base_binfo = TREE_VEC_ELT (binfos, i); + + if (qfn) + base_binfo = (*qfn) (base_binfo, data); + + if (base_binfo) + { + rval = dfs_walk_real (base_binfo, prefn, postfn, qfn, data); + if (rval) + return rval; + } + } + + /* Call the post-order walking function. */ + if (postfn) + rval = (*postfn) (binfo, data); + return rval; } -/* Functions to use in breadth first searches. */ -typedef tree (*pfi) PROTO((tree)); +/* Exactly like bfs_walk, except that a depth-first post-order traversal is + performed. */ + +tree +dfs_walk (binfo, fn, qfn, data) + tree binfo; + tree (*fn) PROTO((tree, void *)); + tree (*qfn) PROTO((tree, void *)); + void *data; +{ + return dfs_walk_real (binfo, 0, fn, qfn, data); +} + +struct gvnt_info +{ + /* The name of the function we are looking for. */ + tree name; + /* The overloaded functions we have found. */ + tree fields; +}; + +/* Called from get_virtuals_named_this via bfs_walk. */ + +static tree +get_virtuals_named_this_r (binfo, data) + tree binfo; + void *data; +{ + struct gvnt_info *gvnti = (struct gvnt_info *) data; + tree type = BINFO_TYPE (binfo); + int idx; + + idx = lookup_fnfields_here (BINFO_TYPE (binfo), gvnti->name); + if (idx >= 0) + gvnti->fields + = scratch_tree_cons (binfo, + TREE_VEC_ELT (CLASSTYPE_METHOD_VEC (type), + idx), + gvnti->fields); + + return NULL_TREE; +} -static tree declarator; +/* Return the virtual functions with the indicated NAME in the type + indicated by BINFO. The result is a TREE_LIST whose TREE_PURPOSE + indicates the base class from which the TREE_VALUE (an OVERLOAD or + just a FUNCTION_DECL) originated. */ static tree -get_virtuals_named_this (binfo) +get_virtuals_named_this (binfo, name) tree binfo; + tree name; { + struct gvnt_info gvnti; tree fields; - fields = lookup_fnfields (binfo, declarator, -1); - /* fields cannot be error_mark_node */ + gvnti.name = name; + gvnti.fields = NULL_TREE; - if (fields == 0) - return 0; + bfs_walk (binfo, get_virtuals_named_this_r, 0, &gvnti); /* Get to the function decls, and return the first virtual function with this name, if there is one. */ - while (fields) + for (fields = gvnti.fields; fields; fields = next_baselink (fields)) { tree fndecl; for (fndecl = TREE_VALUE (fields); fndecl; fndecl = OVL_NEXT (fndecl)) if (DECL_VINDEX (OVL_CURRENT (fndecl))) return fields; - fields = next_baselink (fields); } return NULL_TREE; } @@ -1736,7 +1657,7 @@ get_virtuals_named_this (binfo) static tree get_virtual_destructor (binfo, data) tree binfo; - void *data; + void *data ATTRIBUTE_UNUSED; { tree type = BINFO_TYPE (binfo); if (TYPE_HAS_DESTRUCTOR (type) @@ -1745,13 +1666,13 @@ get_virtual_destructor (binfo, data) return 0; } -static int +static tree tree_has_any_destructor_p (binfo, data) tree binfo; - void *data; + void *data ATTRIBUTE_UNUSED; { tree type = BINFO_TYPE (binfo); - return TYPE_NEEDS_DESTRUCTOR (type); + return TYPE_NEEDS_DESTRUCTOR (type) ? binfo : NULL_TREE; } /* Returns > 0 if a function with type DRETTYPE overriding a function @@ -1834,23 +1755,19 @@ get_matching_virtual (binfo, fndecl, dtorp) /* Breadth first search routines start searching basetypes of TYPE, so we must perform first ply of search here. */ if (dtorp) - { - return breadth_first_search (binfo, - get_virtual_destructor, - tree_has_any_destructor_p, 0, 0); - } + return bfs_walk (binfo, get_virtual_destructor, + tree_has_any_destructor_p, 0); else { tree drettype, dtypes, btypes, instptr_type; tree basetype = DECL_CLASS_CONTEXT (fndecl); tree baselink, best = NULL_TREE; tree name = DECL_ASSEMBLER_NAME (fndecl); - - declarator = DECL_NAME (fndecl); + tree declarator = DECL_NAME (fndecl); if (IDENTIFIER_VIRTUAL_P (declarator) == 0) return NULL_TREE; - baselink = get_virtuals_named_this (binfo); + baselink = get_virtuals_named_this (binfo, declarator); if (baselink == NULL_TREE) return NULL_TREE; @@ -2117,76 +2034,6 @@ convert_pointer_to_single_level (to_type, expr) last, 1); } -/* The main function which implements depth first search. - - This routine has to remember the path it walked up, when - dfs_init_vbase_pointers is the work function, as otherwise there - would be no record. */ - -void -dfs_walk (binfo, fn, qfn) - tree binfo; - void (*fn) PROTO((tree)); - int (*qfn) PROTO((tree)); -{ - tree binfos = BINFO_BASETYPES (binfo); - int i, n_baselinks = binfos ? TREE_VEC_LENGTH (binfos) : 0; - - for (i = 0; i < n_baselinks; i++) - { - tree base_binfo = TREE_VEC_ELT (binfos, i); - - if (qfn == 0 || (*qfn)(base_binfo)) - { - if (TREE_CODE (BINFO_TYPE (base_binfo)) == TEMPLATE_TYPE_PARM - || TREE_CODE (BINFO_TYPE (base_binfo)) == TEMPLATE_TEMPLATE_PARM) - /* Pass */; - else if (fn == dfs_init_vbase_pointers) - { - /* When traversing an arbitrary MI hierarchy, we need to keep - a record of the path we took to get down to the final base - type, as otherwise there would be no record of it, and just - trying to blindly convert at the bottom would be ambiguous. - - The easiest way is to do the conversions one step at a time, - as we know we want the immediate base class at each step. - - The only special trick to converting one step at a time, - is that when we hit the last virtual base class, we must - use the SLOT value for it, and not use the normal convert - routine. We use the last virtual base class, as in our - implementation, we have pointers to all virtual base - classes in the base object. */ - - tree saved_vbase_decl_ptr_intermediate - = vbase_decl_ptr_intermediate; - - if (TREE_VIA_VIRTUAL (base_binfo)) - { - /* No need for the conversion here, as we know it is the - right type. */ - vbase_decl_ptr_intermediate - = CLASSTYPE_SEARCH_SLOT (BINFO_TYPE (base_binfo)); - } - else - { - vbase_decl_ptr_intermediate - = convert_pointer_to_single_level (BINFO_TYPE (base_binfo), - vbase_decl_ptr_intermediate); - } - - dfs_walk (base_binfo, fn, qfn); - - vbase_decl_ptr_intermediate = saved_vbase_decl_ptr_intermediate; - } - else - dfs_walk (base_binfo, fn, qfn); - } - } - - fn (binfo); -} - /* Like dfs_walk, but only walk until fn returns something, and return that. We also use the real vbase binfos instead of the placeholders in the normal binfo hierarchy. START is the most-derived type for this @@ -2222,46 +2069,82 @@ dfs_search (binfo, fn, start) return fn (binfo); } -int markedp (binfo) tree binfo; -{ return BINFO_MARKED (binfo); } -static int unmarkedp (binfo) tree binfo; -{ return BINFO_MARKED (binfo) == 0; } +tree markedp (binfo, data) + tree binfo; + void *data ATTRIBUTE_UNUSED; +{ + return BINFO_MARKED (binfo) ? binfo : NULL_TREE; +} + +static tree +unmarkedp (binfo, data) + tree binfo; + void *data ATTRIBUTE_UNUSED; +{ + return !BINFO_MARKED (binfo) ? binfo : NULL_TREE; +} -#if 0 -static int bfs_markedp (binfo, i) tree binfo; int i; -{ return BINFO_MARKED (BINFO_BASETYPE (binfo, i)); } -static int bfs_unmarkedp (binfo, i) tree binfo; int i; -{ return BINFO_MARKED (BINFO_BASETYPE (binfo, i)) == 0; } -static int bfs_marked_vtable_pathp (binfo, i) tree binfo; int i; -{ return BINFO_VTABLE_PATH_MARKED (BINFO_BASETYPE (binfo, i)); } -static int bfs_unmarked_vtable_pathp (binfo, i) tree binfo; int i; -{ return BINFO_VTABLE_PATH_MARKED (BINFO_BASETYPE (binfo, i)) == 0; } -static int bfs_marked_new_vtablep (binfo, i) tree binfo; int i; -{ return BINFO_NEW_VTABLE_MARKED (BINFO_BASETYPE (binfo, i)); } -static int bfs_unmarked_new_vtablep (binfo, i) tree binfo; int i; -{ return BINFO_NEW_VTABLE_MARKED (BINFO_BASETYPE (binfo, i)) == 0; } -#endif +static tree +marked_vtable_pathp (binfo, data) + tree binfo; + void *data ATTRIBUTE_UNUSED; +{ + return BINFO_VTABLE_PATH_MARKED (binfo) ? binfo : NULL_TREE; +} + +static tree +unmarked_vtable_pathp (binfo, data) + tree binfo; + void *data ATTRIBUTE_UNUSED; +{ + return !BINFO_VTABLE_PATH_MARKED (binfo) ? binfo : NULL_TREE; +} + +static tree +marked_new_vtablep (binfo, data) + tree binfo; + void *data ATTRIBUTE_UNUSED; +{ + return BINFO_NEW_VTABLE_MARKED (binfo) ? binfo : NULL_TREE; +} + +static tree +unmarked_new_vtablep (binfo, data) + tree binfo; + void *data ATTRIBUTE_UNUSED; +{ + return !BINFO_NEW_VTABLE_MARKED (binfo) ? binfo : NULL_TREE; +} + +static tree +marked_pushdecls_p (binfo, data) + tree binfo; + void *data ATTRIBUTE_UNUSED; +{ + return BINFO_PUSHDECLS_MARKED (binfo) ? binfo : NULL_TREE; +} -static int marked_vtable_pathp (binfo) tree binfo; -{ return BINFO_VTABLE_PATH_MARKED (binfo); } -static int unmarked_vtable_pathp (binfo) tree binfo; -{ return BINFO_VTABLE_PATH_MARKED (binfo) == 0; } -static int marked_new_vtablep (binfo) tree binfo; -{ return BINFO_NEW_VTABLE_MARKED (binfo); } -static int unmarked_new_vtablep (binfo) tree binfo; -{ return BINFO_NEW_VTABLE_MARKED (binfo) == 0; } -static int marked_pushdecls_p (binfo) tree binfo; -{ return BINFO_PUSHDECLS_MARKED (binfo); } -static int unmarked_pushdecls_p (binfo) tree binfo; -{ return BINFO_PUSHDECLS_MARKED (binfo) == 0; } +static tree +unmarked_pushdecls_p (binfo, data) + tree binfo; + void *data ATTRIBUTE_UNUSED; +{ + return !BINFO_PUSHDECLS_MARKED (binfo) ? binfo : NULL_TREE; +} #if 0 static int dfs_search_slot_nonempty_p (binfo) tree binfo; { return CLASSTYPE_SEARCH_SLOT (BINFO_TYPE (binfo)) != 0; } #endif -static int dfs_debug_unmarkedp (binfo) tree binfo; -{ return CLASSTYPE_DEBUG_REQUESTED (BINFO_TYPE (binfo)) == 0; } +static tree +dfs_debug_unmarkedp (binfo, data) + tree binfo; + void *data ATTRIBUTE_UNUSED; +{ + return (!CLASSTYPE_DEBUG_REQUESTED (BINFO_TYPE (binfo)) + ? binfo : NULL_TREE); +} /* The worker functions for `dfs_walk'. These do not need to test anything (vis a vis marking) if they are paired with @@ -2273,9 +2156,14 @@ dfs_mark (binfo) tree binfo; { SET_BINFO_MARKED (binfo); } #endif -void -dfs_unmark (binfo) tree binfo; -{ CLEAR_BINFO_MARKED (binfo); } +tree +dfs_unmark (binfo, data) + tree binfo; + void *data ATTRIBUTE_UNUSED; +{ + CLEAR_BINFO_MARKED (binfo); + return NULL_TREE; +} #if 0 static void @@ -2299,9 +2187,10 @@ dfs_clear_search_slot (binfo) tree binfo; { CLASSTYPE_SEARCH_SLOT (BINFO_TYPE (binfo)) = 0; } #endif -static void -dfs_debug_mark (binfo) +static tree +dfs_debug_mark (binfo, data) tree binfo; + void *data ATTRIBUTE_UNUSED; { tree t = BINFO_TYPE (binfo); @@ -2312,12 +2201,12 @@ dfs_debug_mark (binfo) CLASSTYPE_DEBUG_REQUESTED (t) = 1; if (methods == 0) - return; + return NULL_TREE; /* If interface info is known, either we've already emitted the debug info or we don't need to. */ if (CLASSTYPE_INTERFACE_KNOWN (t)) - return; + return NULL_TREE; /* If debug info is requested from this context for this type, supply it. If debug info is requested from another context for this type, @@ -2341,7 +2230,7 @@ dfs_debug_mark (binfo) /* Somebody, somewhere is going to have to define this virtual function. When they do, they will provide the debugging info. */ - return; + return NULL_TREE; } methods = TREE_CHAIN (methods); } @@ -2350,17 +2239,26 @@ dfs_debug_mark (binfo) so we must write out the debug info ourselves. */ TYPE_DECL_SUPPRESS_DEBUG (TYPE_NAME (t)) = 0; rest_of_type_compilation (t, toplevel_bindings_p ()); + + return NULL_TREE; } -/* Attach to the type of the virtual base class, the pointer to the - virtual base class, given the global pointer vbase_decl_ptr. +struct vbase_info +{ + tree decl_ptr; + tree inits; + tree vbase_types; +}; - We use the global vbase_types. ICK! */ +/* Attach to the type of the virtual base class, the pointer to the + virtual base class. */ -static void -dfs_find_vbases (binfo) +static tree +dfs_find_vbases (binfo, data) tree binfo; + void *data; { + struct vbase_info *vi = (struct vbase_info *) data; tree binfos = BINFO_BASETYPES (binfo); int i, n_baselinks = binfos ? TREE_VEC_LENGTH (binfos) : 0; @@ -2372,21 +2270,25 @@ dfs_find_vbases (binfo) && CLASSTYPE_SEARCH_SLOT (BINFO_TYPE (base_binfo)) == 0) { tree vbase = BINFO_TYPE (base_binfo); - tree binfo = binfo_member (vbase, vbase_types); + tree binfo = binfo_member (vbase, vi->vbase_types); CLASSTYPE_SEARCH_SLOT (vbase) = build (PLUS_EXPR, build_pointer_type (vbase), - vbase_decl_ptr, BINFO_OFFSET (binfo)); + vi->decl_ptr, BINFO_OFFSET (binfo)); } } SET_BINFO_VTABLE_PATH_MARKED (binfo); SET_BINFO_NEW_VTABLE_MARKED (binfo); + + return NULL_TREE; } -static void -dfs_init_vbase_pointers (binfo) +static tree +dfs_init_vbase_pointers (binfo, data) tree binfo; + void *data; { + struct vbase_info *vi = (struct vbase_info *) data; tree type = BINFO_TYPE (binfo); tree fields = TYPE_FIELDS (type); tree this_vbase_ptr; @@ -2400,42 +2302,57 @@ dfs_init_vbase_pointers (binfo) fields = TREE_CHAIN (fields); #endif + if (BINFO_INHERITANCE_CHAIN (binfo)) + { + this_vbase_ptr = TREE_CHAIN (BINFO_INHERITANCE_CHAIN (binfo)); + if (TREE_VIA_VIRTUAL (binfo)) + this_vbase_ptr = CLASSTYPE_SEARCH_SLOT (type); + else + this_vbase_ptr = convert_pointer_to_single_level (type, + this_vbase_ptr); + TREE_CHAIN (binfo) = this_vbase_ptr; + } + else + this_vbase_ptr = TREE_CHAIN (binfo); + if (fields == NULL_TREE || DECL_NAME (fields) == NULL_TREE || ! VBASE_NAME_P (DECL_NAME (fields))) - return; - - this_vbase_ptr = vbase_decl_ptr_intermediate; + return NULL_TREE; - if (build_pointer_type (type) != TYPE_MAIN_VARIANT (TREE_TYPE (this_vbase_ptr))) + if (build_pointer_type (type) + != TYPE_MAIN_VARIANT (TREE_TYPE (this_vbase_ptr))) my_friendly_abort (125); - while (fields && DECL_NAME (fields) - && VBASE_NAME_P (DECL_NAME (fields))) + while (fields && DECL_NAME (fields) && VBASE_NAME_P (DECL_NAME (fields))) { tree ref = build (COMPONENT_REF, TREE_TYPE (fields), build_indirect_ref (this_vbase_ptr, NULL_PTR), fields); tree init = CLASSTYPE_SEARCH_SLOT (TREE_TYPE (TREE_TYPE (fields))); - vbase_init_result = tree_cons (binfo_member (TREE_TYPE (TREE_TYPE (fields)), - vbase_types), - build_modify_expr (ref, NOP_EXPR, init), - vbase_init_result); + vi->inits = tree_cons (binfo_member (TREE_TYPE (TREE_TYPE (fields)), + vi->vbase_types), + build_modify_expr (ref, NOP_EXPR, init), + vi->inits); fields = TREE_CHAIN (fields); } + + return NULL_TREE; } /* Sometimes this needs to clear both VTABLE_PATH and NEW_VTABLE. Other times, just NEW_VTABLE, but optimizer should make both with equal efficiency (though it does not currently). */ -static void -dfs_clear_vbase_slots (binfo) +static tree +dfs_clear_vbase_slots (binfo, data) tree binfo; + void *data ATTRIBUTE_UNUSED; { tree type = BINFO_TYPE (binfo); CLASSTYPE_SEARCH_SLOT (type) = 0; CLEAR_BINFO_VTABLE_PATH_MARKED (binfo); CLEAR_BINFO_NEW_VTABLE_MARKED (binfo); + return NULL_TREE; } tree @@ -2445,17 +2362,29 @@ init_vbase_pointers (type, decl_ptr) { if (TYPE_USES_VIRTUAL_BASECLASSES (type)) { + struct vbase_info vi; int old_flag = flag_this_is_variable; tree binfo = TYPE_BINFO (type); flag_this_is_variable = -2; - vbase_types = CLASSTYPE_VBASECLASSES (type); - vbase_decl_ptr = vbase_decl_ptr_intermediate = decl_ptr; - vbase_init_result = NULL_TREE; - dfs_walk (binfo, dfs_find_vbases, unmarked_vtable_pathp); - dfs_walk (binfo, dfs_init_vbase_pointers, marked_vtable_pathp); - dfs_walk (binfo, dfs_clear_vbase_slots, marked_new_vtablep); + + /* Find all the virtual base classes, marking them for later + initialization. */ + vi.decl_ptr = decl_ptr; + vi.vbase_types = CLASSTYPE_VBASECLASSES (type); + vi.inits = NULL_TREE; + + dfs_walk (binfo, dfs_find_vbases, unmarked_vtable_pathp, &vi); + + /* Build up a list of the initializers. */ + TREE_CHAIN (binfo) = decl_ptr; + dfs_walk_real (binfo, + dfs_init_vbase_pointers, 0, + marked_vtable_pathp, + &vi); + + dfs_walk (binfo, dfs_clear_vbase_slots, marked_new_vtablep, 0); flag_this_is_variable = old_flag; - return vbase_init_result; + return vi.inits; } return 0; } @@ -2693,10 +2622,7 @@ fixup_virtual_upcast_offsets (real_binfo, binfo, init_self, can_elide, addr, ori When USE_COMPUTED_OFFSETS is non-zero, we can assume that the object was laid out by a top-level constructor and the computed offsets are valid to store vtables. When zero, we must store new - vtables through virtual baseclass pointers. - - We setup and use the globals: vbase_decl_ptr, vbase_types - ICK! */ + vtables through virtual baseclass pointers. */ void expand_indirect_vtbls_init (binfo, true_exp, decl_ptr) @@ -2720,17 +2646,19 @@ expand_indirect_vtbls_init (binfo, true_exp, decl_ptr) { rtx fixup_insns = NULL_RTX; tree vbases = CLASSTYPE_VBASECLASSES (type); - vbase_types = vbases; - vbase_decl_ptr = true_exp ? build_unary_op (ADDR_EXPR, true_exp, 0) : decl_ptr; + struct vbase_info vi; + vi.decl_ptr = (true_exp ? build_unary_op (ADDR_EXPR, true_exp, 0) + : decl_ptr); + vi.vbase_types = vbases; - dfs_walk (binfo, dfs_find_vbases, unmarked_new_vtablep); + dfs_walk (binfo, dfs_find_vbases, unmarked_new_vtablep, &vi); /* Initialized with vtables of type TYPE. */ for (; vbases; vbases = TREE_CHAIN (vbases)) { tree addr; - addr = convert_pointer_to_vbase (TREE_TYPE (vbases), vbase_decl_ptr); + addr = convert_pointer_to_vbase (TREE_TYPE (vbases), vi.decl_ptr); /* Do all vtables from this virtual base. */ /* This assumes that virtual bases can never serve as parent @@ -2755,7 +2683,7 @@ expand_indirect_vtbls_init (binfo, true_exp, decl_ptr) push_to_sequence (fixup_insns); fixup_virtual_upcast_offsets (vbases, TYPE_BINFO (BINFO_TYPE (vbases)), - 1, 0, addr, vbase_decl_ptr, + 1, 0, addr, vi.decl_ptr, type, vbases, &vbase_offsets); fixup_insns = get_insns (); end_sequence (); @@ -2777,7 +2705,7 @@ expand_indirect_vtbls_init (binfo, true_exp, decl_ptr) expand_end_cond (); } - dfs_walk (binfo, dfs_clear_vbase_slots, marked_new_vtablep); + dfs_walk (binfo, dfs_clear_vbase_slots, marked_new_vtablep, 0); } } @@ -2785,36 +2713,43 @@ expand_indirect_vtbls_init (binfo, true_exp, decl_ptr) This adds type to the vbase_types list in reverse dfs order. Ordering is very important, so don't change it. */ -static void -dfs_get_vbase_types (binfo) +static tree +dfs_get_vbase_types (binfo, data) tree binfo; + void *data; { + tree *vbase_types = (tree *) data; + if (TREE_VIA_VIRTUAL (binfo) && ! BINFO_VBASE_MARKED (binfo)) { tree new_vbase = make_binfo (integer_zero_node, binfo, BINFO_VTABLE (binfo), BINFO_VIRTUALS (binfo)); - TREE_CHAIN (new_vbase) = vbase_types; + TREE_CHAIN (new_vbase) = *vbase_types; TREE_VIA_VIRTUAL (new_vbase) = 1; - vbase_types = new_vbase; + *vbase_types = new_vbase; SET_BINFO_VBASE_MARKED (binfo); } SET_BINFO_MARKED (binfo); + return NULL_TREE; } -/* get a list of virtual base classes in dfs order. */ +/* Return a list of binfos for the virtual base classes for TYPE, in + depth-first search order. The list is freshly allocated, so + no modification is made to the current binfo hierarchy. */ tree get_vbase_types (type) tree type; { + tree vbase_types; tree vbases; tree binfo; binfo = TYPE_BINFO (type); vbase_types = NULL_TREE; - dfs_walk (binfo, dfs_get_vbase_types, unmarkedp); - dfs_walk (binfo, dfs_unmark, markedp); + dfs_walk (binfo, dfs_get_vbase_types, unmarkedp, &vbase_types); + dfs_walk (binfo, dfs_unmark, markedp, 0); /* Rely upon the reverse dfs ordering from dfs_get_vbase_types, and now reverse it so that we get normal dfs ordering. */ vbase_types = nreverse (vbase_types); @@ -2852,13 +2787,13 @@ note_debug_info_needed (type) if (write_symbols == DWARF_DEBUG || write_symbols == DWARF2_DEBUG) return; - dfs_walk (TYPE_BINFO (type), dfs_debug_mark, dfs_debug_unmarkedp); + dfs_walk (TYPE_BINFO (type), dfs_debug_mark, dfs_debug_unmarkedp, 0); for (field = TYPE_FIELDS (type); field; field = TREE_CHAIN (field)) { tree ttype; if (TREE_CODE (field) == FIELD_DECL && IS_AGGR_TYPE (ttype = target_type (TREE_TYPE (field))) - && dfs_debug_unmarkedp (TYPE_BINFO (ttype))) + && dfs_debug_unmarkedp (TYPE_BINFO (ttype), 0)) note_debug_info_needed (ttype); } } @@ -2975,7 +2910,7 @@ dependent_base_p (binfo) { for (; binfo; binfo = BINFO_INHERITANCE_CHAIN (binfo)) { - if (TREE_TYPE (binfo) == current_class_type) + if (currently_open_class (TREE_TYPE (binfo))) break; if (uses_template_parms (TREE_TYPE (binfo))) return 1; @@ -3002,10 +2937,12 @@ dependent_base_p (binfo) Because if it is, it could be a set of overloaded methods from an outer scope. */ -static void -dfs_pushdecls (binfo) +static tree +dfs_pushdecls (binfo, data) tree binfo; + void *data; { + tree *closed_envelopes = (tree *) data; tree type = BINFO_TYPE (binfo); tree fields; tree method_vec; @@ -3031,7 +2968,7 @@ dfs_pushdecls (binfo) if (DECL_NAME (fields) == NULL_TREE && TREE_CODE (TREE_TYPE (fields)) == UNION_TYPE) { - dfs_pushdecls (TYPE_BINFO (TREE_TYPE (fields))); + dfs_pushdecls (TYPE_BINFO (TREE_TYPE (fields)), data); continue; } @@ -3048,9 +2985,9 @@ dfs_pushdecls (binfo) || TREE_CODE (TREE_PURPOSE (class_value)) == IDENTIFIER_NODE) { /* See comment above for a description of envelopes. */ - closed_envelopes = tree_cons (NULL_TREE, class_value, - closed_envelopes); - IDENTIFIER_CLASS_VALUE (name) = closed_envelopes; + *closed_envelopes = tree_cons (NULL_TREE, class_value, + *closed_envelopes); + IDENTIFIER_CLASS_VALUE (name) = *closed_envelopes; class_value = IDENTIFIER_CLASS_VALUE (name); } @@ -3090,9 +3027,9 @@ dfs_pushdecls (binfo) || TREE_CODE (TREE_PURPOSE (class_value)) == IDENTIFIER_NODE) { /* See comment above for a description of envelopes. */ - closed_envelopes = tree_cons (NULL_TREE, class_value, - closed_envelopes); - IDENTIFIER_CLASS_VALUE (name) = closed_envelopes; + *closed_envelopes = tree_cons (NULL_TREE, class_value, + *closed_envelopes); + IDENTIFIER_CLASS_VALUE (name) = *closed_envelopes; class_value = IDENTIFIER_CLASS_VALUE (name); } @@ -3111,13 +3048,16 @@ dfs_pushdecls (binfo) /* We can't just use BINFO_MARKED because envelope_add_decl uses DERIVED_FROM_P, which calls get_base_distance. */ SET_BINFO_PUSHDECLS_MARKED (binfo); + + return NULL_TREE; } /* Consolidate unique (by name) member functions. */ -static void -dfs_compress_decls (binfo) +static tree +dfs_compress_decls (binfo, data) tree binfo; + void *data ATTRIBUTE_UNUSED; { tree type = BINFO_TYPE (binfo); tree method_vec @@ -3155,6 +3095,8 @@ dfs_compress_decls (binfo) } } CLEAR_BINFO_PUSHDECLS_MARKED (binfo); + + return NULL_TREE; } /* When entering the scope of a class, we cache all of the @@ -3169,6 +3111,7 @@ push_class_decls (type) tree type; { struct obstack *ambient_obstack = current_obstack; + tree closed_envelopes = NULL_TREE; search_stack = push_search_level (search_stack, &search_obstack); /* Build up all the relevant bindings and such on the cache @@ -3177,11 +3120,13 @@ push_class_decls (type) maybe_push_cache_obstack (); /* Push class fields into CLASS_VALUE scope, and mark. */ - dfs_walk (TYPE_BINFO (type), dfs_pushdecls, unmarked_pushdecls_p); + dfs_walk (TYPE_BINFO (type), dfs_pushdecls, unmarked_pushdecls_p, + &closed_envelopes); /* Compress fields which have only a single entry by a given name, and unmark. */ - dfs_walk (TYPE_BINFO (type), dfs_compress_decls, marked_pushdecls_p); + dfs_walk (TYPE_BINFO (type), dfs_compress_decls, marked_pushdecls_p, + 0); /* Open up all the closed envelopes and push the contained decls into class scope. */ @@ -3252,9 +3197,10 @@ push_class_decls (type) /* Here's a subroutine we need because C lacks lambdas. */ -static void -dfs_unuse_fields (binfo) +static tree +dfs_unuse_fields (binfo, data) tree binfo; + void *data ATTRIBUTE_UNUSED; { tree type = TREE_TYPE (binfo); tree fields; @@ -3269,13 +3215,15 @@ dfs_unuse_fields (binfo) && TREE_CODE (TREE_TYPE (fields)) == UNION_TYPE) unuse_fields (TREE_TYPE (fields)); } + + return NULL_TREE; } void unuse_fields (type) tree type; { - dfs_walk (TYPE_BINFO (type), dfs_unuse_fields, unmarkedp); + dfs_walk (TYPE_BINFO (type), dfs_unuse_fields, unmarkedp, 0); } void @@ -3360,8 +3308,7 @@ lookup_conversions (type) tree conversions = NULL_TREE; if (TYPE_SIZE (type)) - breadth_first_search (TYPE_BINFO (type), add_conversions, - 0, 0, &conversions); + bfs_walk (TYPE_BINFO (type), add_conversions, 0, &conversions); for (t = conversions; t; t = TREE_CHAIN (t)) IDENTIFIER_MARKED (DECL_NAME (OVL_CURRENT (TREE_VALUE (t)))) = 0; @@ -3369,35 +3316,47 @@ lookup_conversions (type) return conversions; } +struct overlap_info +{ + tree compare_type; + int found_overlap; +}; + /* Check whether the empty class indicated by EMPTY_BINFO is also present at offset 0 in COMPARE_TYPE, and set found_overlap if so. */ -static tree compare_type; -static int found_overlap; -static void -dfs_check_overlap (empty_binfo) +static tree +dfs_check_overlap (empty_binfo, data) tree empty_binfo; + void *data; { + struct overlap_info *oi = (struct overlap_info *) data; tree binfo; - for (binfo = TYPE_BINFO (compare_type); ; binfo = BINFO_BASETYPE (binfo, 0)) + for (binfo = TYPE_BINFO (oi->compare_type); + ; + binfo = BINFO_BASETYPE (binfo, 0)) { if (BINFO_TYPE (binfo) == BINFO_TYPE (empty_binfo)) { - found_overlap = 1; + oi->found_overlap = 1; break; } else if (BINFO_BASETYPES (binfo) == NULL_TREE) break; } + + return NULL_TREE; } /* Trivial function to stop base traversal when we find something. */ -static int -dfs_no_overlap_yet (t) - tree t ATTRIBUTE_UNUSED; +static tree +dfs_no_overlap_yet (binfo, data) + tree binfo; + void *data; { - return found_overlap == 0; + struct overlap_info *oi = (struct overlap_info *) data; + return !oi->found_overlap ? binfo : NULL_TREE; } /* Returns nonzero if EMPTY_TYPE or any of its bases can also be found at @@ -3407,34 +3366,63 @@ int types_overlap_p (empty_type, next_type) tree empty_type, next_type; { + struct overlap_info oi; + if (! IS_AGGR_TYPE (next_type)) return 0; - compare_type = next_type; - found_overlap = 0; - dfs_walk (TYPE_BINFO (empty_type), dfs_check_overlap, dfs_no_overlap_yet); - return found_overlap; + oi.compare_type = next_type; + oi.found_overlap = 0; + dfs_walk (TYPE_BINFO (empty_type), dfs_check_overlap, + dfs_no_overlap_yet, &oi); + return oi.found_overlap; +} + +struct bfv_info { + tree vbases; + tree var; +}; + +static tree +dfs_bfv_queue_p (binfo, data) + tree binfo; + void *data; +{ + struct bfv_info *bfvi = (struct bfv_info *) data; + + /* Use the real virtual base class objects, not the placeholders in + the usual hierarchy. */ + if (TREE_VIA_VIRTUAL (binfo)) + return binfo_member (BINFO_TYPE (binfo), bfvi->vbases); + + return binfo; } /* Passed to dfs_search by binfo_for_vtable; determine if bvtable comes from BINFO. */ -static tree bvtable; static tree -dfs_bfv_helper (binfo) +dfs_bfv_helper (binfo, data) tree binfo; + void *data; { - if (BINFO_VTABLE (binfo) == bvtable) + struct bfv_info *bfvi = (struct bfv_info *) data; + + if (BINFO_VTABLE (binfo) == bfvi->var) return binfo; return NULL_TREE; } -/* Given a vtable VARS, determine which binfo it comes from. */ +/* Given a vtable VAR, determine which binfo it comes from. */ tree -binfo_for_vtable (vars) - tree vars; +binfo_for_vtable (var) + tree var; { - bvtable = vars; - return dfs_search (TYPE_BINFO (DECL_CONTEXT (vars)), dfs_bfv_helper, - DECL_CONTEXT (vars)); + tree type; + struct bfv_info bfvi; + + type = DECL_CONTEXT (var); + bfvi.vbases = CLASSTYPE_VBASECLASSES (type); + return dfs_walk_real (TYPE_BINFO (type), + 0, dfs_bfv_helper, dfs_bfv_queue_p, &bfvi); } diff --git a/gcc/testsuite/g++.old-deja/g++.brendan/crash11.C b/gcc/testsuite/g++.old-deja/g++.brendan/crash11.C index a6c92267f5c..00c30867cf9 100644 --- a/gcc/testsuite/g++.old-deja/g++.brendan/crash11.C +++ b/gcc/testsuite/g++.old-deja/g++.brendan/crash11.C @@ -3,8 +3,8 @@ extern "C" void printf (char *, ...); class A { - int i; - int j; + int i; // ERROR - private + int j; // ERROR - private public: int h; A() { i=10; j=20; } diff --git a/gcc/testsuite/g++.old-deja/g++.brendan/crash19.C b/gcc/testsuite/g++.old-deja/g++.brendan/crash19.C index 1b8527d942c..1738c736297 100644 --- a/gcc/testsuite/g++.old-deja/g++.brendan/crash19.C +++ b/gcc/testsuite/g++.old-deja/g++.brendan/crash19.C @@ -151,8 +151,8 @@ struct __streambuf { char* _gptr; char* _egptr; char* _eback; - char* _pbase; - char* _pptr; + char* _pbase; // ERROR - inacessible + char* _pptr; // ERROR - inacessible char* _epptr; char* _base; char* _ebuf; diff --git a/gcc/testsuite/g++.old-deja/g++.brendan/enum6.C b/gcc/testsuite/g++.old-deja/g++.brendan/enum6.C index de821487b0b..8c5c9ad9299 100644 --- a/gcc/testsuite/g++.old-deja/g++.brendan/enum6.C +++ b/gcc/testsuite/g++.old-deja/g++.brendan/enum6.C @@ -2,7 +2,7 @@ // GROUPS passed enums class X { private: - enum E1 {a1, b1}; + enum E1 {a1, b1}; // ERROR - private public: enum E2 {a2, b2}; }; @@ -12,5 +12,5 @@ void h(X* p) { int x2 = X::a2; X::E1 e1; - int x1 = X::a1; // Should be rejected, and is.// ERROR - .* + int x1 = X::a1; // ERROR - within this context } diff --git a/gcc/testsuite/g++.old-deja/g++.brendan/visibility1.C b/gcc/testsuite/g++.old-deja/g++.brendan/visibility1.C index 7d11f875716..784c16772ea 100644 --- a/gcc/testsuite/g++.old-deja/g++.brendan/visibility1.C +++ b/gcc/testsuite/g++.old-deja/g++.brendan/visibility1.C @@ -2,7 +2,7 @@ // GROUPS passed visibility class foo { protected: - int i; + int i; // ERROR - protected }; class bar : public foo { diff --git a/gcc/testsuite/g++.old-deja/g++.brendan/visibility6.C b/gcc/testsuite/g++.old-deja/g++.brendan/visibility6.C index 5ca62c0c6a7..85f47b5f89d 100644 --- a/gcc/testsuite/g++.old-deja/g++.brendan/visibility6.C +++ b/gcc/testsuite/g++.old-deja/g++.brendan/visibility6.C @@ -3,7 +3,7 @@ class bottom { public: - int b; + int b; // ERROR - private }; class middle : private bottom { diff --git a/gcc/testsuite/g++.old-deja/g++.brendan/visibility8.C b/gcc/testsuite/g++.old-deja/g++.brendan/visibility8.C index a3bb856d1ad..2d69e7bcf01 100644 --- a/gcc/testsuite/g++.old-deja/g++.brendan/visibility8.C +++ b/gcc/testsuite/g++.old-deja/g++.brendan/visibility8.C @@ -5,7 +5,7 @@ class foo { public: - static int y; + static int y; // ERROR - private }; class foo1 : private foo { }; diff --git a/gcc/testsuite/g++.old-deja/g++.jason/access17.C b/gcc/testsuite/g++.old-deja/g++.jason/access17.C index 9ed7d30d2a5..676eac1bcc1 100644 --- a/gcc/testsuite/g++.old-deja/g++.jason/access17.C +++ b/gcc/testsuite/g++.old-deja/g++.jason/access17.C @@ -3,7 +3,7 @@ struct A { protected: - int i; + int i; // ERROR - private int f (); // ERROR - }; diff --git a/gcc/testsuite/g++.old-deja/g++.jason/access23.C b/gcc/testsuite/g++.old-deja/g++.jason/access23.C index 74112aab664..99e0b4565ce 100644 --- a/gcc/testsuite/g++.old-deja/g++.jason/access23.C +++ b/gcc/testsuite/g++.old-deja/g++.jason/access23.C @@ -16,24 +16,24 @@ public: int PUB_A; protected: union { - long B; - void *pY; + long B; // ERROR - protected + void *pY; // ERROR - protected } ; union Y { long B; void *pY; - } PRT; - int PRT_A; + } PRT; // ERROR - protected + int PRT_A; // ERROR - protected private: union { - long C; - void *pZ; + long C; // ERROR - private + void *pZ; // ERROR - private }; union Z { - long C; + long C; void *pZ; - } PRV; - int PRV_A; + } PRV; // ERROR - private + int PRV_A; // ERROR - private }; struct Bar : public Foo { diff --git a/gcc/testsuite/g++.old-deja/g++.law/arm14.C b/gcc/testsuite/g++.old-deja/g++.law/arm14.C index 91674288935..d50b3cdfd9b 100644 --- a/gcc/testsuite/g++.old-deja/g++.law/arm14.C +++ b/gcc/testsuite/g++.old-deja/g++.law/arm14.C @@ -9,7 +9,7 @@ class X { private: - enum E1 {a1, b1}; + enum E1 {a1, b1}; // ERROR - private public: enum E2 {a2, b2}; }; diff --git a/gcc/testsuite/g++.old-deja/g++.law/union2.C b/gcc/testsuite/g++.old-deja/g++.law/union2.C index 9f812d762e8..66c2c665cab 100644 --- a/gcc/testsuite/g++.old-deja/g++.law/union2.C +++ b/gcc/testsuite/g++.old-deja/g++.law/union2.C @@ -10,9 +10,9 @@ class A { public: int x; private: - int y; + int y; // ERROR - private union { - int z; + int z; // ERROR - private }; }; diff --git a/gcc/testsuite/g++.old-deja/g++.law/visibility12.C b/gcc/testsuite/g++.old-deja/g++.law/visibility12.C index c3a9963f994..3aa6d6b26b8 100644 --- a/gcc/testsuite/g++.old-deja/g++.law/visibility12.C +++ b/gcc/testsuite/g++.old-deja/g++.law/visibility12.C @@ -6,7 +6,7 @@ // Subject: member access rule bug // Message-ID: <9306300528.AA17185@coda.mel.dit.CSIRO.AU> struct a { - int aa; + int aa; // ERROR - private }; class b : private a { diff --git a/gcc/testsuite/g++.old-deja/g++.law/visibility13.C b/gcc/testsuite/g++.old-deja/g++.law/visibility13.C index fa5e5ddb7eb..7f634e20cd8 100644 --- a/gcc/testsuite/g++.old-deja/g++.law/visibility13.C +++ b/gcc/testsuite/g++.old-deja/g++.law/visibility13.C @@ -23,8 +23,8 @@ public: virtual Type& operator[](int ix) { return ia[ix]; } private: void init(const Type*, int); - int size; - int *ia; + int size; // ERROR - private + int *ia; // ERROR - private }; template diff --git a/gcc/testsuite/g++.old-deja/g++.law/visibility16.C b/gcc/testsuite/g++.old-deja/g++.law/visibility16.C index 32fb70695ef..5291d7c8961 100644 --- a/gcc/testsuite/g++.old-deja/g++.law/visibility16.C +++ b/gcc/testsuite/g++.old-deja/g++.law/visibility16.C @@ -7,9 +7,9 @@ // Message-ID: <9308051553.AA07639@nwd2sun1.analog.com> class A { protected: - int astuff; + int astuff; // ERROR - protected A() { - astuff = 3; + astuff = 3; } }; diff --git a/gcc/testsuite/g++.old-deja/g++.law/visibility18.C b/gcc/testsuite/g++.old-deja/g++.law/visibility18.C index a294f13edf9..a1ec468f521 100644 --- a/gcc/testsuite/g++.old-deja/g++.law/visibility18.C +++ b/gcc/testsuite/g++.old-deja/g++.law/visibility18.C @@ -7,7 +7,7 @@ // Message-ID: <9308061142.AA08533@iiserv> struct T1 { int i; }; -struct T2 { int j; }; +struct T2 { int j; }; // ERROR - private struct T3 : public T1, private T2 { } x; diff --git a/gcc/testsuite/g++.old-deja/g++.law/visibility19.C b/gcc/testsuite/g++.old-deja/g++.law/visibility19.C index 0f22d6568b7..82a1dc5b79b 100644 --- a/gcc/testsuite/g++.old-deja/g++.law/visibility19.C +++ b/gcc/testsuite/g++.old-deja/g++.law/visibility19.C @@ -7,7 +7,7 @@ // Message-ID: <9308252030.AA02352@tnt.acsys.com> class B { protected: - int i; + int i; // ERROR - protected }; class D1 : public B { diff --git a/gcc/testsuite/g++.old-deja/g++.law/visibility4.C b/gcc/testsuite/g++.old-deja/g++.law/visibility4.C index 5a92c6c0794..2d7079eed2b 100644 --- a/gcc/testsuite/g++.old-deja/g++.law/visibility4.C +++ b/gcc/testsuite/g++.old-deja/g++.law/visibility4.C @@ -8,7 +8,7 @@ class A { public: - int b; + int b; // ERROR - private }; class C : private A { // NOTE WELL. private, not public diff --git a/gcc/testsuite/g++.old-deja/g++.law/visibility8.C b/gcc/testsuite/g++.old-deja/g++.law/visibility8.C index 3e5178c6c01..8b36e804312 100644 --- a/gcc/testsuite/g++.old-deja/g++.law/visibility8.C +++ b/gcc/testsuite/g++.old-deja/g++.law/visibility8.C @@ -7,7 +7,7 @@ // Message-ID: i; +} + diff --git a/gcc/testsuite/g++.old-deja/g++.other/access6.C b/gcc/testsuite/g++.old-deja/g++.other/access6.C new file mode 100644 index 00000000000..7a7c7ff5941 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.other/access6.C @@ -0,0 +1,17 @@ +// Build don't link: + +template +struct S { + void g(); +}; + +class C { + static const int i = 3; // gets bogus error - private - XFAIL *-*-* +public: + S* f(); // gets bogus error - redeclared - XFAIL *-*-* +}; + +S* C::f() { // gets bogus error - private - XFAIL *-*-* + return 0; +} + diff --git a/gcc/testsuite/g++.old-deja/g++.other/ambig1.C b/gcc/testsuite/g++.old-deja/g++.other/ambig1.C index 04e4afa1205..d6574a2b79c 100644 --- a/gcc/testsuite/g++.old-deja/g++.other/ambig1.C +++ b/gcc/testsuite/g++.old-deja/g++.other/ambig1.C @@ -1,15 +1,15 @@ // Build don't link: struct A { - int operator ++(); - void operator ()(); - void operator delete(void*); + int operator ++(); // ERROR - candidates + void operator ()(); // ERROR - candidates + void operator delete(void*); // ERROR - candidates }; struct B { - int operator ++(int); - void operator ()(); - void operator delete(void*); + int operator ++(int); // ERROR - candidates + void operator ()(); // ERROR - candidates + void operator delete(void*); // ERROR - candidates void f(); }; diff --git a/gcc/testsuite/g++.old-deja/g++.other/crash7.C b/gcc/testsuite/g++.old-deja/g++.other/crash7.C index c924adf45d7..0f581988b1f 100644 --- a/gcc/testsuite/g++.old-deja/g++.other/crash7.C +++ b/gcc/testsuite/g++.old-deja/g++.other/crash7.C @@ -4,8 +4,8 @@ void f() { union { private: - int i; + int i; // ERROR - private } u; - u.i = 3; // ERROR - private + u.i = 3; // ERROR - within this context } diff --git a/gcc/testsuite/g++.old-deja/g++.other/friend1.C b/gcc/testsuite/g++.old-deja/g++.other/friend1.C index e00f5e6b259..ef90607eaeb 100644 --- a/gcc/testsuite/g++.old-deja/g++.other/friend1.C +++ b/gcc/testsuite/g++.old-deja/g++.other/friend1.C @@ -12,8 +12,8 @@ class B { protected: - int i; - static int j; + int i; // ERROR - in this context + static int j; // gets bogus error - XFAIL *-*-* }; class D : public B { diff --git a/gcc/testsuite/g++.old-deja/g++.other/friend4.C b/gcc/testsuite/g++.old-deja/g++.other/friend4.C index 468340f7b64..07969cd5487 100644 --- a/gcc/testsuite/g++.old-deja/g++.other/friend4.C +++ b/gcc/testsuite/g++.old-deja/g++.other/friend4.C @@ -10,7 +10,7 @@ template void foo(); template class bar { - int i; + int i; // ERROR - private template friend void foo(); // ERROR - bogus declaration }; template void foo() { diff --git a/gcc/testsuite/g++.old-deja/g++.pt/derived2.C b/gcc/testsuite/g++.old-deja/g++.pt/derived2.C new file mode 100644 index 00000000000..737792cab9f --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.pt/derived2.C @@ -0,0 +1,35 @@ +// Build don't link: +// Special g++ Options: + +template +void f(T); +template <> +void f(int) {} + +struct B { + typedef int I; +}; + +template +struct D1 : virtual public B { + typedef T I; +}; + + +template +struct D : virtual public B, public D1 +{ + void g() + { + I i; + f(i); + } +}; + +int +main() +{ + D d; + d.g(); +} + diff --git a/gcc/testsuite/g++.old-deja/g++.pt/friend11.C b/gcc/testsuite/g++.old-deja/g++.pt/friend11.C index d70fae6e0c8..1aeba3a1018 100644 --- a/gcc/testsuite/g++.old-deja/g++.pt/friend11.C +++ b/gcc/testsuite/g++.old-deja/g++.pt/friend11.C @@ -20,7 +20,7 @@ class C template friend void S::f(U); - int i; + int i; // ERROR - private }; diff --git a/gcc/testsuite/g++.old-deja/g++.pt/friend21.C b/gcc/testsuite/g++.old-deja/g++.pt/friend21.C index c89fe1dc1d2..3f690a4404a 100644 --- a/gcc/testsuite/g++.old-deja/g++.pt/friend21.C +++ b/gcc/testsuite/g++.old-deja/g++.pt/friend21.C @@ -7,7 +7,7 @@ template struct A { template class B { friend class A; - static int i; + static int i; // ERROR - private }; template class C diff --git a/gcc/testsuite/g++.old-deja/g++.pt/friend3.C b/gcc/testsuite/g++.old-deja/g++.pt/friend3.C index 77aabd3bee3..74d0e06699c 100644 --- a/gcc/testsuite/g++.old-deja/g++.pt/friend3.C +++ b/gcc/testsuite/g++.old-deja/g++.pt/friend3.C @@ -7,7 +7,7 @@ class C { friend void f<>(double); - int i; + int i; // ERROR - private };