diff --git a/.depend b/.depend index f98156f975c..3a83bf5dcf6 100644 --- a/.depend +++ b/.depend @@ -142,7 +142,6 @@ utils/language_extension_kernel.cmo : \ utils/language_extension_kernel.cmx : \ utils/language_extension_kernel.cmi utils/language_extension_kernel.cmi : -utils/language_extension_kernel_intf.cmi : utils/lazy_backtrack.cmo : \ utils/lazy_backtrack.cmi utils/lazy_backtrack.cmx : \ @@ -308,16 +307,19 @@ parsing/ast_iterator.cmo : \ parsing/parsetree.cmi \ parsing/location.cmi \ parsing/jane_syntax.cmi \ + parsing/asttypes.cmi \ parsing/ast_iterator.cmi parsing/ast_iterator.cmx : \ parsing/parsetree.cmi \ parsing/location.cmx \ parsing/jane_syntax.cmx \ + parsing/asttypes.cmi \ parsing/ast_iterator.cmi parsing/ast_iterator.cmi : \ parsing/parsetree.cmi \ parsing/location.cmi \ - parsing/jane_syntax.cmi + parsing/jane_syntax.cmi \ + parsing/asttypes.cmi parsing/ast_mapper.cmo : \ parsing/parsetree.cmi \ utils/misc.cmi \ @@ -325,6 +327,7 @@ parsing/ast_mapper.cmo : \ parsing/location.cmi \ utils/load_path.cmi \ parsing/jane_syntax.cmi \ + parsing/docstrings.cmi \ utils/config.cmi \ utils/clflags.cmi \ parsing/asttypes.cmi \ @@ -337,6 +340,7 @@ parsing/ast_mapper.cmx : \ parsing/location.cmx \ utils/load_path.cmx \ parsing/jane_syntax.cmx \ + parsing/docstrings.cmx \ utils/config.cmx \ utils/clflags.cmx \ parsing/asttypes.cmi \ @@ -345,7 +349,8 @@ parsing/ast_mapper.cmx : \ parsing/ast_mapper.cmi : \ parsing/parsetree.cmi \ parsing/location.cmi \ - parsing/jane_syntax.cmi + parsing/jane_syntax.cmi \ + parsing/asttypes.cmi parsing/asttypes.cmi : \ parsing/location.cmi parsing/attr_helper.cmo : \ @@ -438,6 +443,7 @@ parsing/docstrings.cmi : \ parsing/parsetree.cmi \ parsing/location.cmi parsing/jane_syntax.cmo : \ + parsing/printast.cmi \ parsing/parsetree.cmi \ parsing/longident.cmi \ parsing/location.cmi \ @@ -446,6 +452,7 @@ parsing/jane_syntax.cmo : \ parsing/ast_helper.cmi \ parsing/jane_syntax.cmi parsing/jane_syntax.cmx : \ + parsing/printast.cmx \ parsing/parsetree.cmi \ parsing/longident.cmx \ parsing/location.cmx \ @@ -457,6 +464,7 @@ parsing/jane_syntax.cmi : \ parsing/parsetree.cmi \ parsing/longident.cmi \ parsing/location.cmi \ + parsing/docstrings.cmi \ parsing/asttypes.cmi parsing/jane_syntax_parsing.cmo : \ parsing/parsetree.cmi \ @@ -518,7 +526,6 @@ parsing/longident.cmx : \ parsing/longident.cmi : parsing/parse.cmo : \ parsing/syntaxerr.cmi \ - parsing/pprintast.cmi \ parsing/parser.cmi \ parsing/location.cmi \ parsing/lexer.cmi \ @@ -526,7 +533,6 @@ parsing/parse.cmo : \ parsing/parse.cmi parsing/parse.cmx : \ parsing/syntaxerr.cmx \ - parsing/pprintast.cmx \ parsing/parser.cmx \ parsing/location.cmx \ parsing/lexer.cmx \ @@ -576,6 +582,7 @@ parsing/parsetree.cmi : \ parsing/location.cmi \ parsing/asttypes.cmi parsing/pprintast.cmo : \ + parsing/printast.cmi \ parsing/parsetree.cmi \ parsing/longident.cmi \ parsing/location.cmi \ @@ -584,6 +591,7 @@ parsing/pprintast.cmo : \ parsing/ast_helper.cmi \ parsing/pprintast.cmi parsing/pprintast.cmx : \ + parsing/printast.cmx \ parsing/parsetree.cmi \ parsing/longident.cmx \ parsing/location.cmx \ @@ -595,7 +603,6 @@ parsing/pprintast.cmi : \ parsing/parsetree.cmi \ parsing/longident.cmi parsing/printast.cmo : \ - parsing/pprintast.cmi \ parsing/parsetree.cmi \ parsing/longident.cmi \ parsing/location.cmi \ @@ -603,7 +610,6 @@ parsing/printast.cmo : \ parsing/asttypes.cmi \ parsing/printast.cmi parsing/printast.cmx : \ - parsing/pprintast.cmx \ parsing/parsetree.cmi \ parsing/longident.cmx \ parsing/location.cmx \ @@ -611,11 +617,14 @@ parsing/printast.cmx : \ parsing/asttypes.cmi \ parsing/printast.cmi parsing/printast.cmi : \ - parsing/parsetree.cmi + parsing/parsetree.cmi \ + parsing/asttypes.cmi parsing/syntaxerr.cmo : \ + parsing/printast.cmi \ parsing/location.cmi \ parsing/syntaxerr.cmi parsing/syntaxerr.cmx : \ + parsing/printast.cmx \ parsing/location.cmx \ parsing/syntaxerr.cmi parsing/syntaxerr.cmi : \ @@ -755,6 +764,8 @@ typing/env.cmo : \ utils/local_store.cmi \ utils/load_path.cmi \ utils/lazy_backtrack.cmi \ + typing/layouts.cmi \ + utils/language_extension.cmi \ typing/ident.cmi \ typing/datarepr.cmi \ utils/compilation_unit.cmi \ @@ -779,6 +790,8 @@ typing/env.cmx : \ utils/local_store.cmx \ utils/load_path.cmx \ utils/lazy_backtrack.cmx \ + typing/layouts.cmx \ + utils/language_extension.cmx \ typing/ident.cmx \ typing/datarepr.cmx \ utils/compilation_unit.cmx \ @@ -799,6 +812,7 @@ typing/env.cmi : \ parsing/longident.cmi \ parsing/location.cmi \ utils/load_path.cmi \ + typing/layouts.cmi \ utils/import_info.cmi \ typing/ident.cmi \ utils/compilation_unit.cmi \ @@ -1017,6 +1031,7 @@ typing/layouts.cmo : \ typing/path.cmi \ utils/misc.cmi \ parsing/location.cmi \ + utils/language_extension.cmi \ typing/ident.cmi \ parsing/builtin_attributes.cmi \ parsing/asttypes.cmi \ @@ -1025,6 +1040,7 @@ typing/layouts.cmx : \ typing/path.cmx \ utils/misc.cmx \ parsing/location.cmx \ + utils/language_extension.cmx \ typing/ident.cmx \ parsing/builtin_attributes.cmx \ parsing/asttypes.cmi \ @@ -1066,14 +1082,14 @@ typing/mtype.cmi : \ typing/ident.cmi \ typing/env.cmi typing/oprint.cmo : \ - parsing/pprintast.cmi \ + parsing/printast.cmi \ typing/outcometree.cmi \ typing/layouts.cmi \ utils/language_extension.cmi \ parsing/asttypes.cmi \ typing/oprint.cmi typing/oprint.cmx : \ - parsing/pprintast.cmx \ + parsing/printast.cmx \ typing/outcometree.cmi \ typing/layouts.cmx \ utils/language_extension.cmx \ @@ -1335,7 +1351,6 @@ typing/printtyped.cmo : \ typing/types.cmi \ typing/typedtree.cmi \ parsing/printast.cmi \ - parsing/pprintast.cmi \ typing/path.cmi \ parsing/parsetree.cmi \ parsing/longident.cmi \ @@ -1349,7 +1364,6 @@ typing/printtyped.cmx : \ typing/types.cmx \ typing/typedtree.cmx \ parsing/printast.cmx \ - parsing/pprintast.cmx \ typing/path.cmx \ parsing/parsetree.cmi \ parsing/longident.cmx \ @@ -1661,9 +1675,9 @@ typing/typedecl.cmo : \ typing/typedecl_separability.cmi \ typing/subst.cmi \ typing/printtyp.cmi \ + parsing/printast.cmi \ typing/primitive.cmi \ typing/predef.cmi \ - parsing/pprintast.cmi \ typing/path.cmi \ parsing/parsetree.cmi \ typing/oprint.cmi \ @@ -1695,9 +1709,9 @@ typing/typedecl.cmx : \ typing/typedecl_separability.cmx \ typing/subst.cmx \ typing/printtyp.cmx \ + parsing/printast.cmx \ typing/primitive.cmx \ typing/predef.cmx \ - parsing/pprintast.cmx \ typing/path.cmx \ parsing/parsetree.cmi \ typing/oprint.cmx \ @@ -1960,6 +1974,7 @@ typing/typeopt.cmo : \ utils/misc.cmi \ parsing/location.cmi \ typing/layouts.cmi \ + utils/language_extension.cmi \ lambda/lambda.cmi \ typing/ident.cmi \ typing/env.cmi \ @@ -1978,6 +1993,7 @@ typing/typeopt.cmx : \ utils/misc.cmx \ parsing/location.cmx \ typing/layouts.cmx \ + utils/language_extension.cmx \ lambda/lambda.cmx \ typing/ident.cmx \ typing/env.cmx \ @@ -2036,8 +2052,8 @@ typing/typetexp.cmo : \ typing/types.cmi \ typing/typedtree.cmi \ typing/printtyp.cmi \ + parsing/printast.cmi \ typing/predef.cmi \ - parsing/pprintast.cmi \ typing/path.cmi \ parsing/parsetree.cmi \ typing/oprint.cmi \ @@ -2060,8 +2076,8 @@ typing/typetexp.cmx : \ typing/types.cmx \ typing/typedtree.cmx \ typing/printtyp.cmx \ + parsing/printast.cmx \ typing/predef.cmx \ - parsing/pprintast.cmx \ typing/path.cmx \ parsing/parsetree.cmi \ typing/oprint.cmx \ @@ -2096,11 +2112,13 @@ typing/untypeast.cmo : \ typing/typedtree.cmi \ typing/path.cmi \ parsing/parsetree.cmi \ + utils/misc.cmi \ parsing/longident.cmi \ parsing/location.cmi \ parsing/jane_syntax.cmi \ typing/ident.cmi \ typing/env.cmi \ + parsing/docstrings.cmi \ parsing/asttypes.cmi \ parsing/ast_helper.cmi \ typing/untypeast.cmi @@ -2108,11 +2126,13 @@ typing/untypeast.cmx : \ typing/typedtree.cmx \ typing/path.cmx \ parsing/parsetree.cmi \ + utils/misc.cmx \ parsing/longident.cmx \ parsing/location.cmx \ parsing/jane_syntax.cmx \ typing/ident.cmx \ typing/env.cmx \ + parsing/docstrings.cmx \ parsing/asttypes.cmi \ parsing/ast_helper.cmx \ typing/untypeast.cmi @@ -2830,6 +2850,7 @@ asmcomp/cmmgen.cmo : \ middle_end/printclambda_primitives.cmi \ typing/primitive.cmi \ utils/misc.cmi \ + typing/layouts.cmi \ lambda/lambda.cmi \ lambda/debuginfo.cmi \ utils/config.cmi \ @@ -2850,6 +2871,7 @@ asmcomp/cmmgen.cmx : \ middle_end/printclambda_primitives.cmx \ typing/primitive.cmx \ utils/misc.cmx \ + typing/layouts.cmx \ lambda/lambda.cmx \ lambda/debuginfo.cmx \ utils/config.cmx \ @@ -3588,6 +3610,7 @@ middle_end/convert_primitives.cmo : \ lambda/printlambda.cmi \ typing/primitive.cmi \ utils/misc.cmi \ + typing/layouts.cmi \ lambda/lambda.cmi \ middle_end/clambda_primitives.cmi \ middle_end/convert_primitives.cmi @@ -3595,6 +3618,7 @@ middle_end/convert_primitives.cmx : \ lambda/printlambda.cmx \ typing/primitive.cmx \ utils/misc.cmx \ + typing/layouts.cmx \ lambda/lambda.cmx \ middle_end/clambda_primitives.cmx \ middle_end/convert_primitives.cmi @@ -3720,7 +3744,6 @@ lambda/lambda.cmo : \ utils/misc.cmi \ parsing/longident.cmi \ parsing/location.cmi \ - typing/layouts.cmi \ typing/ident.cmi \ typing/env.cmi \ lambda/debuginfo.cmi \ @@ -3736,7 +3759,6 @@ lambda/lambda.cmx : \ utils/misc.cmx \ parsing/longident.cmx \ parsing/location.cmx \ - typing/layouts.cmx \ typing/ident.cmx \ typing/env.cmx \ lambda/debuginfo.cmx \ @@ -3751,7 +3773,6 @@ lambda/lambda.cmi : \ typing/primitive.cmi \ typing/path.cmi \ parsing/location.cmi \ - typing/layouts.cmi \ typing/ident.cmi \ typing/env.cmi \ lambda/debuginfo.cmi \ diff --git a/boot/menhir/parser.ml b/boot/menhir/parser.ml index 626655ae231..8527874612d 100644 --- a/boot/menhir/parser.ml +++ b/boot/menhir/parser.ml @@ -16,7 +16,7 @@ module MenhirBasics = struct | VAL | UNDERSCORE | UIDENT of ( -# 981 "parsing/parser.mly" +# 990 "parsing/parser.mly" (string) # 22 "parsing/parser.ml" ) @@ -28,7 +28,7 @@ module MenhirBasics = struct | THEN | STRUCT | STRING of ( -# 968 "parsing/parser.mly" +# 977 "parsing/parser.mly" (string * Location.t * string option) # 34 "parsing/parser.ml" ) @@ -41,12 +41,12 @@ module MenhirBasics = struct | RBRACKET | RBRACE | QUOTED_STRING_ITEM of ( -# 972 "parsing/parser.mly" +# 981 "parsing/parser.mly" (string * Location.t * string * Location.t * string option) # 47 "parsing/parser.ml" ) | QUOTED_STRING_EXPR of ( -# 970 "parsing/parser.mly" +# 979 "parsing/parser.mly" (string * Location.t * string * Location.t * string option) # 52 "parsing/parser.ml" ) @@ -54,7 +54,7 @@ module MenhirBasics = struct | QUESTION | PRIVATE | PREFIXOP of ( -# 953 "parsing/parser.mly" +# 962 "parsing/parser.mly" (string) # 60 "parsing/parser.ml" ) @@ -64,7 +64,7 @@ module MenhirBasics = struct | PERCENT | OR | OPTLABEL of ( -# 946 "parsing/parser.mly" +# 955 "parsing/parser.mly" (string) # 70 "parsing/parser.ml" ) @@ -83,12 +83,12 @@ module MenhirBasics = struct | LPAREN | LOCAL | LIDENT of ( -# 928 "parsing/parser.mly" +# 937 "parsing/parser.mly" (string) # 89 "parsing/parser.ml" ) | LETOP of ( -# 908 "parsing/parser.mly" +# 917 "parsing/parser.mly" (string) # 94 "parsing/parser.ml" ) @@ -109,39 +109,39 @@ module MenhirBasics = struct | LBRACE | LAZY | LABEL of ( -# 914 "parsing/parser.mly" +# 923 "parsing/parser.mly" (string) # 115 "parsing/parser.ml" ) | INT of ( -# 912 "parsing/parser.mly" +# 921 "parsing/parser.mly" (string * char option) # 120 "parsing/parser.ml" ) | INITIALIZER | INHERIT | INFIXOP4 of ( -# 906 "parsing/parser.mly" +# 915 "parsing/parser.mly" (string) # 127 "parsing/parser.ml" ) | INFIXOP3 of ( -# 905 "parsing/parser.mly" +# 914 "parsing/parser.mly" (string) # 132 "parsing/parser.ml" ) | INFIXOP2 of ( -# 904 "parsing/parser.mly" +# 913 "parsing/parser.mly" (string) # 137 "parsing/parser.ml" ) | INFIXOP1 of ( -# 903 "parsing/parser.mly" +# 912 "parsing/parser.mly" (string) # 142 "parsing/parser.ml" ) | INFIXOP0 of ( -# 902 "parsing/parser.mly" +# 911 "parsing/parser.mly" (string) # 147 "parsing/parser.ml" ) @@ -150,17 +150,17 @@ module MenhirBasics = struct | IF | HASH_SUFFIX | HASH_INT of ( -# 913 "parsing/parser.mly" +# 922 "parsing/parser.mly" (string * char option) # 156 "parsing/parser.ml" ) | HASH_FLOAT of ( -# 890 "parsing/parser.mly" +# 899 "parsing/parser.mly" (string * char option) # 161 "parsing/parser.ml" ) | HASHOP of ( -# 965 "parsing/parser.mly" +# 974 "parsing/parser.mly" (string) # 166 "parsing/parser.ml" ) @@ -174,7 +174,7 @@ module MenhirBasics = struct | FUN | FOR | FLOAT of ( -# 889 "parsing/parser.mly" +# 898 "parsing/parser.mly" (string * char option) # 180 "parsing/parser.ml" ) @@ -189,7 +189,7 @@ module MenhirBasics = struct | ELSE | DOWNTO | DOTOP of ( -# 907 "parsing/parser.mly" +# 916 "parsing/parser.mly" (string) # 195 "parsing/parser.ml" ) @@ -197,14 +197,14 @@ module MenhirBasics = struct | DOT | DONE | DOCSTRING of ( -# 989 "parsing/parser.mly" +# 998 "parsing/parser.mly" (Docstrings.docstring) # 203 "parsing/parser.ml" ) | DO | CONSTRAINT | COMMENT of ( -# 988 "parsing/parser.mly" +# 997 "parsing/parser.mly" (string * Location.t) # 210 "parsing/parser.ml" ) @@ -216,7 +216,7 @@ module MenhirBasics = struct | COLON | CLASS | CHAR of ( -# 867 "parsing/parser.mly" +# 876 "parsing/parser.mly" (char) # 222 "parsing/parser.ml" ) @@ -229,7 +229,7 @@ module MenhirBasics = struct | ASSERT | AS | ANDOP of ( -# 909 "parsing/parser.mly" +# 918 "parsing/parser.mly" (string) # 235 "parsing/parser.ml" ) @@ -270,7 +270,7 @@ let ghost_loc (startpos, endpos) = { } let mktyp ~loc ?attrs d = Typ.mk ~loc:(make_loc loc) ?attrs d -let mkpat ~loc d = Pat.mk ~loc:(make_loc loc) d +let mkpat ~loc ?attrs d = Pat.mk ~loc:(make_loc loc) ?attrs d let mkexp ~loc ?attrs d = Exp.mk ~loc:(make_loc loc) ?attrs d let mkmty ~loc ?attrs d = Mty.mk ~loc:(make_loc loc) ?attrs d let mksig ~loc d = Sig.mk ~loc:(make_loc loc) d @@ -337,7 +337,7 @@ let mkpatvar ~loc name = (* See commentary about ghost locations at the declaration of Location.t *) let ghexp ~loc d = Exp.mk ~loc:(ghost_loc loc) d let ghpat ~loc d = Pat.mk ~loc:(ghost_loc loc) d -let ghtyp ~loc d = Typ.mk ~loc:(ghost_loc loc) d +let ghtyp ~loc ?attrs d = Typ.mk ~loc:(ghost_loc loc) ?attrs d let ghloc ~loc d = { txt = d; loc = ghost_loc loc } let ghstr ~loc d = Str.mk ~loc:(ghost_loc loc) d let ghsig ~loc d = Sig.mk ~loc:(ghost_loc loc) d @@ -576,8 +576,10 @@ let ppat_iarray loc elts = ~loc:(make_loc loc) ~attrs:[] (Iapat_immutable_array elts) -let expecting loc nonterm = - raise Syntaxerr.(Error(Expecting(make_loc loc, nonterm))) +let expecting_loc (loc : Location.t) (nonterm : string) = + raise Syntaxerr.(Error(Expecting(loc, nonterm))) +let expecting (loc : Lexing.position * Lexing.position) nonterm = + expecting_loc (make_loc loc) nonterm (* Using the function [not_expecting] in a semantic action means that this syntactic form is recognized by the parser but is in fact incorrect. This @@ -728,23 +730,19 @@ let lapply ~loc p1 p2 = else raise (Syntaxerr.Error( Syntaxerr.Applicative_path (make_loc loc))) -(* [loc_map] could be [Location.map]. *) -let loc_map (f : 'a -> 'b) (x : 'a Location.loc) : 'b Location.loc = - { x with txt = f x.txt } - let make_ghost x = if x.loc.loc_ghost then x (* Save an allocation *) else { x with loc = Location.ghostify x.loc } let loc_last (id : Longident.t Location.loc) : string Location.loc = - loc_map Longident.last id + Location.map Longident.last id let loc_lident (id : string Location.loc) : Longident.t Location.loc = - loc_map (fun x -> Lident x) id + Location.map (fun x -> Lident x) id let exp_of_longident lid = - let lid = loc_map (fun id -> Lident (Longident.last id)) lid in + let lid = Location.map (fun id -> Lident (Longident.last id)) lid in Exp.mk ~loc:lid.loc (Pexp_ident lid) let exp_of_label lbl = @@ -754,16 +752,26 @@ let pat_of_label lbl = Pat.mk ~loc:lbl.loc (Ppat_var (loc_last lbl)) let mk_newtypes ~loc newtypes exp = - let mkexp = mkexp ~loc in - List.fold_right (fun newtype exp -> mkexp (Pexp_newtype (newtype, exp))) - newtypes exp + let mk_one (name, layout) exp = + match layout with + | None -> mkexp ~loc (Pexp_newtype (name, exp)) + | Some layout -> + Jane_syntax.Layouts.expr_of ~loc:(make_loc loc) ~attrs:[] + (Lexp_newtype (name, layout, exp)) + in + List.fold_right mk_one newtypes exp let wrap_type_annotation ~loc newtypes core_type body = - let mkexp, ghtyp = mkexp ~loc, ghtyp ~loc in let mk_newtypes = mk_newtypes ~loc in - let exp = mkexp(Pexp_constraint(body,core_type)) in + let exp = mkexp ~loc (Pexp_constraint(body,core_type)) in let exp = mk_newtypes newtypes exp in - (exp, ghtyp(Ptyp_poly(newtypes, Typ.varify_constructors newtypes core_type))) + let inner_type = Typ.varify_constructors (List.map fst newtypes) core_type in + let ltyp = + Jane_syntax.Layouts.Ltyp_poly { bound_vars = newtypes; inner_type } + in + (exp, + Jane_syntax.Layouts.type_of + ~loc:(Location.ghostify (make_loc loc)) ~attrs:[] ltyp) let wrap_exp_attrs ~loc body (ext, attrs) = let ghexp = ghexp ~loc in @@ -773,8 +781,8 @@ let wrap_exp_attrs ~loc body (ext, attrs) = | None -> body | Some id -> ghexp(Pexp_extension (id, PStr [mkstrexp body []])) -let mkexp_attrs ~loc d attrs = - wrap_exp_attrs ~loc (mkexp ~loc d) attrs +let mkexp_attrs ~loc d ext_attrs = + wrap_exp_attrs ~loc (mkexp ~loc d) ext_attrs let wrap_typ_attrs ~loc typ (ext, attrs) = (* todo: keep exact location for the entire attribute *) @@ -977,14 +985,15 @@ let mk_directive ~loc name arg = pdir_loc = make_loc loc; } -let check_layout loc id = - begin - match id with - | ("any" | "value" | "void" | "immediate64" | "immediate" | "float64") -> () - | _ -> expecting loc "layout" - end; - let loc = make_loc loc in - Attr.mk ~loc (mkloc id loc) (PStr []) +let check_layout ~loc id : const_layout = + match id with + | "any" -> Any + | "value" -> Value + | "void" -> Void + | "immediate64" -> Immediate64 + | "immediate" -> Immediate + | "float64" -> Float64 + | _ -> expecting_loc loc "layout" (* Unboxed literals *) @@ -996,18 +1005,18 @@ let unboxed_literals_extension = Language_extension.Layouts module Constant : sig type t = private | Value of constant - | Unboxed of Jane_syntax.Unboxed_constants.t + | Unboxed of Jane_syntax.Layouts.constant type loc := Lexing.position * Lexing.position val value : Parsetree.constant -> t - val unboxed : loc:loc -> Jane_syntax.Unboxed_constants.t -> t + val unboxed : loc:loc -> Jane_syntax.Layouts.constant -> t val to_expression : loc:loc -> t -> expression val to_pattern : loc:loc -> t -> pattern end = struct type t = | Value of constant - | Unboxed of Jane_syntax.Unboxed_constants.t + | Unboxed of Jane_syntax.Layouts.constant let value x = Value x @@ -1023,15 +1032,15 @@ end = struct | Value const_value -> mkexp ~loc (Pexp_constant const_value) | Unboxed const_unboxed -> - Jane_syntax.Unboxed_constants.expr_of - ~loc:(make_loc loc) ~attrs:[] const_unboxed + Jane_syntax.Layouts.expr_of + ~loc:(make_loc loc) ~attrs:[] (Lexp_constant const_unboxed) let to_pattern ~loc : t -> pattern = function | Value const_value -> mkpat ~loc (Ppat_constant const_value) | Unboxed const_unboxed -> - Jane_syntax.Unboxed_constants.pat_of - ~loc:(make_loc loc) ~attrs:[] const_unboxed + Jane_syntax.Layouts.pat_of + ~loc:(make_loc loc) ~attrs:[] (Lpat_constant const_unboxed) end type sign = Positive | Negative @@ -1064,7 +1073,7 @@ let unboxed_float_type sloc tys = assert_unboxed_float_type ~loc:(make_loc sloc); Ptyp_constr (mkloc (Lident "float#") (make_loc sloc), tys) -# 1068 "parsing/parser.ml" +# 1077 "parsing/parser.ml" module Tables = struct @@ -1606,22 +1615,22 @@ module Tables = struct Obj.repr () and default_reduction = - (16, "\000\000\000\000\000\000\003H\003G\003F\003E\003D\003\022\003C\003B\003A\003@\003?\003>\003=\003<\003;\003:\0039\0038\0037\0036\0035\0034\0033\0032\0031\0030\003\021\003/\003.\003-\003,\003+\003*\003)\003(\003'\003&\003%\003$\003#\003\"\003!\003 \003\031\003\030\003\029\003\028\003\027\003\026\003\025\003\024\003\023\000\000\000\000\000/\000\198\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\186\001\209\001\188\001\206\001\205\001\204\001\210\001\214\000\000\003\187\001\208\001\207\001\189\001\212\001\203\001\202\001\201\001\200\001\199\001\197\001\213\001\211\000\000\000\000\000\000\000\234\000\000\000\000\001\192\000\000\000\000\000\000\001\194\000\000\000\000\000\000\001\196\001\218\001\215\001\198\001\190\001\216\001\217\000\000\003\185\003\184\003\188\000\000\000\000\000\026\001g\000\200\000\000\000\228\000\229\000\000\000\000\000\000\001\240\001\239\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\179\000\000\003\174\000\000\000\000\003\176\000\000\003\178\000\000\003\175\003\177\000\000\003\169\000\000\003\168\000\000\000\000\001\253\001\r\003\164\000\000\0012\001\252\000\000\003\167\000\000\002e\002d\000\000\000\000\000\000\000\000\000\000\000\000\000t\000\000\000\025\000\000\000\000\000r\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\194\001s\000\000\000\000\000\000\000\000\000\000\000\000\002K\000\000\000\000\000\000\000\000\000\000\000\000\003\198\000\000\000\000\000\000\000\000\000\000\003\002\000\000\002\162\002\157\002\158\002\163\000\000\002\160\002\155\002\156\002\161\000\000\000\000\000\000\000\000\000\000\001\138\001\137\000\000\003\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\237\000\017\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001q\000\000\000\000\001t\001r\001z\000G\002\198\003\133\003\132\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000q\000\000\000\246\000\000\002\165\002\164\000\000\000\000\000\000\001\222\000\000\000\000\000*\000\000\000\000\000\000\001e\000\000\000\000\001y\000\000\001x\000\000\001h\001w\000\000\001f\000h\000#\000\000\000\000\001\165\000\000\000\027\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\163\000-\000\000\000\000\000$\000\000\000\028\000\000\000\000\000\000\000\000\003Y\000\000\000\000\000\213\000\000\000\000\000\000\000%\000\000\000\029\000\000\000\018\000\000\000\133\000\000\000\000\000\000\000\019\000\000\000\000\002V\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003N\000\000\000\023\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003P\000\000\000\000\000\000\000\000\000\000\003Q\000\000\000\000\000\000\000\000\000\000\003O\000\000\003W\002r\002`\000\000\000'\000\000\002a\000\000\000\000\001\219\000\000\000\000\000\000\000\000\003\134\000\000\003\135\000\000\000\000\000&\000\000\000\000\000\000\000(\000\000\000)\000\000\000+\000\000\000\000\000,\002T\002S\000\000\000\000\000\000\000\000\000\000\000\000\003\196\000\000\003\007\003\180\003\181\000\000\003\006\003\199\000s\003\197\002\159\002\252\003\189\002\154\002\253\002\029\002\255\000\000\000\000\000\000\000\000\003\003\003\020\003\005\000\000\000\000\000\000\003\r\003\n\000\000\000\000\000\000\002\025\002\011\000\000\000\000\000\000\000\000\002\015\000\000\002\n\000\000\002\028\003\019\000\000\000\000\000\000\000\000\001\167\000\000\000\000\002\027\003\004\000{\000\000\000\000\000z\000\000\003\014\002\254\000\000\002\021\000\000\000\000\003\017\000\000\003\016\003\015\000\000\002\017\000\000\000\000\002\r\002\012\002\026\002\018\000\000\000y\000\000\003\012\003\011\000\000\003\t\000\000\002\167\002\166\000\000\000\000\002|\003\b\000\000\000\000\000\000\000\000\001\224\001M\001N\002\170\000\000\002\169\002\168\002\173\000\000\002\172\002\171\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\004\000\000\001\003\001\005\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\214\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\148\000\000\000\000\000\000\000\000\000\000\000\000\003\216\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\166\000\000\000\000\000\000\000\000\000\000\001\147\000\000\000\000\000\000\001p\001\154\001o\001\151\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002^\000\000\000\000\002_\002P\002O\000\000\001\146\001\145\000\000\000\215\000\000\000\000\001\131\000\000\000\000\001\135\000\000\001\244\001\243\000\000\000\000\001\242\001\241\001\134\001\132\000\000\001\136\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000o\002\204\001u\000p\002\208\002\206\000\000\000\000\000\000\002\220\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\241\000\000\002\240\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002(\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\001\000\000\000\000\001\000\002'\001\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\217\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\160\000\000\000\000\003\159\000\000\000\000\000\000\000\000\000\250\000\249\000\000\000\251\000\000\000\000\000\000\002\216\000\000\000\000\000\000\002\186\002\177\000\000\000\000\000\000\000\000\003\190\002\219\002\205\002\248\000\000\000\000\000\179\000\000\000\000\000\000\000\000\000\000\000\193\000\000\000\000\000\000\000\154\000\000\000\000\000\000\002\131\002\130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\007\000\000\000\000\002U\000\000\000\000\000\000\001\011\000\000\000\000\000\000\000\000\000\000\001\n\001\006\000\000\001Q\000\000\000\000\001P\001\b\001O\001S\000\000\001R\000\000\000\000\001\t\000\000\000\000\000\000\000\000\000\000\001\012\000\000\000\000\000\000\000\000\000\000\001\020\000\000\000\000\001\018\001\024\000\000\000\000\000\000\000\000\000\000\000\000\003K\000\000\000\000\000\207\000\206\000\000\003L\003M\000\000\000\000\000\000\000\000\000\000\000\000\001\021\000\000\000\000\000\000\000\000\001\019\000\000\000\000\001\017\001\016\000\000\000\000\000\000\000\000\001\023\000\000\000\000\001\022\000\000\002\024\000\000\000\000\002$\000\000\000\000\002&\000\000\000\000\002\"\002!\002\031\002 \000\000\000\000\000\000\001\014\000\000\000\000\0018\000\020\001\026\000\000\000\000\000\000\002\188\002\179\000\000\000\000\002\187\002\178\000\000\000\000\000\000\000\000\002\190\002\181\000\000\000\000\002v\000\000\000\000\002\194\002\185\000\000\000\000\002\192\002\183\002\212\000\000\000\000\000\000\000\000\000\000\002\189\000\000\000\000\000\000\000\000\000\000\002\193\000\000\000\000\000\000\000\000\000\000\002\191\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002R\002Q\000\153\000\000\002\180\000\000\000\000\002\184\000\000\000\000\002\182\000\196\000\000\000\134\000\135\000\000\000\000\000\000\000\000\000\150\000\208\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\209\000\000\000\210\000\211\000\143\000\000\000\142\000\000\000\000\001U\000\000\001V\001T\002X\000\000\000\000\002Y\002W\000\000\000\000\000\000\000\000\000\000\001#\000\000\000\000\001$\000\000\000\000\000\180\000\000\001&\001%\000\000\000\000\002\221\002\213\000\000\002\246\000\000\002\247\002\245\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000k\002]\002\\\000\000\002\236\002N\002M\000\000\002\230\000\000\002\231\002\229\000\000\000\000\002\235\000\000\002\238\000\000\002\239\002\237\000\000\000\000\002\234\000\000\000\000\002\215\002\214\000\000\000\000\000\000\002>\000\000\001\238\000\000\000\000\000\000\002\127\002=\000\000\002\225\002\224\000\000\000\000\000\000\001v\000\000\002\196\000\000\002\197\002\195\000\000\002\223\002\222\000\000\000\000\000\000\002y\002\211\000\000\002\210\002\209\000\000\002\233\002\232\000\000\000\000\002\249\002\228\000\000\002\227\002\226\000\000\000\000\002\250\000\140\000\000\000\000\000\000\000\000\000\139\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\137\000\000\001}\000\000\000\000\000\000\000u\000\000\000\000\000v\000\000\000\000\000\000\000\000\001\158\001\159\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\239\000\000\000\000\000\129\000\000\000\242\000\240\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\217\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\138\000w\000\000\000\000\002<\000\000\000\000\001\025\001\236\000\000\000\254\000\000\000\000\000\253\000\255\001!\000\000\000\195\002\244\000\000\002\243\002\242\000\000\000\000\002\251\002\207\000\000\000\000\000\000\000\000\002\199\000\000\002\201\000\000\002\200\000\000\002\175\002\174\000\000\002\176\000\000\000\000\000\000\000\000\001\251\001\245\000\000\001\250\000\000\001\248\000\000\001\249\000\000\001\246\000\000\000\000\001\247\000\000\001\185\000\000\000\000\000\000\001\184\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\152\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001.\003~\000\000\000\000\003}\000\000\000\000\000\000\000\000\000\000\002-\000\000\000\000\000\000\000\232\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\169\000\000\0023\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003J\000\000\000\000\002\132\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\187\000\000\000\000\000\000\001\186\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\153\000\000\000\000\000\000\000\000\001\140\000\000\001\139\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0010\002\146\000\000\000\000\000\000\002\144\000\000\000\000\000\000\002\143\000\000\001\127\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\202\000\000\000\000\002f\000\000\000\205\000\000\002g\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000K\000\000\000\000\000\000\000\000\001\164\000\000\001\163\000\000\000\000\000\000\000\000\000N\000\000\000\000\000\000\002:\000\000\0029\000\000\000\000\000\000\000\000\000O\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000T\000\000\000\000\000\000\000U\000S\000\000\000X\000\000\000\000\000\000\000\000\000\000\000M\000\000\000\000\000\000\000\000\000\000\000\000\000P\000\000\000W\000V\000\000\000Q\000R\000\000\001A\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001,\000g\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000d\000\000\000f\000e\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001*\002\150\002\136\000\000\002\142\002\137\002\149\002\148\002\147\002\145\001;\000\000\002\134\000\000\000\000\000\000\000\000\002\152\000\000\000\000\000\000\000\000\000\000\002K\000\000\000\000\0014\002\138\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\180\001\176\000\000\000\000\000\000\000\222\000\000\000\000\002A\002K\000\000\000\000\0016\002?\002@\000\000\000\000\000\000\000\000\000\000\001\183\001\179\001\175\000\000\000\000\000\223\000\000\000\000\001\182\001\178\001\174\001\172\002\139\002\135\002\151\001:\002*\002\133\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\156\000\000\000\000\000\000\003\193\000\000\000\000\003\195\000\000\000<\000\000\000\000\003\205\000\000\003\204\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\192\000\000\000\000\003\194\000\000\000\000\000\000\0025\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001d\000\000\000\000\001b\001`\000\000\000=\000\000\000\000\003\208\000\000\003\207\000\000\000\000\000\000\001^\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001c\000\000\000\000\001a\001_\000\000\000\000\000\000\000?\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\028\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000^\000\000\000\000\000\000\000\000\000\000\000\000\0009\000\000\000\000\000]\000\000\0007\001\029\000\000\000F\0003\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\027\000\000\000\\\000[\000\000\000\000\000a\000`\000\000\000\000\001\226\000\000\000;\000\000\000\000\000\000\000:\000\000\000\000\000\000\000>\000\000\000_\000b\000\000\000@\000A\000\000\001C\000\000\000\000\000\000\000\000\000\000\000\000\000D\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001(\003\129\003x\000\000\000\000\003|\003I\003w\003\128\003\127\001?\000\000\000\000\003u\000\000\000\000\000\000\000\000\003\131\000\000\003y\003v\003\130\002)\000\000\000\000\003s\0000\003r\000\000\000\000\000\203\000\000\000\236\000\000\000\000\001>\001=\000\000\001\129\001\128\000\000\000\000\003\018\003\001\000\000\000H\000\000\000\000\000I\000\000\000\000\002\203\002\202\000\000\000\000\000\146\000\000\000\000\0022\000\227\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\201\000\000\003{\002F\002G\002B\002D\002C\002E\000\000\000\000\000\000\000\202\000\000\000\000\002K\000\000\000\226\000\000\000\000\000\000\000\000\003z\000\000\000\199\000\000\000\000\000\000\000\000\000\000\000\000\001]\001W\000\000\000\000\001X\000\"\000\000\000!\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003R\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003T\000\000\000\000\000\000\000\000\000\000\003U\000\000\000\000\000\000\000\000\000\000\003S\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003X\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003V\000\000\000\000\001\181\001\177\000\000\001\173\003\162\000\000\002K\000\000\000\225\000\000\000\000\000\000\000\000\002\141\002J\002H\002I\000\000\000\000\000\000\002K\000\000\000\224\000\000\000\000\000\000\000\000\002\140\000\000\001\142\001\141\000\000\000\024\000\000\003\200\000\000\0001\000\000\000\000\000\000\000\000\000\149\000\000\000\230\000\001\000\000\000\000\000\235\000\002\000\000\000\000\000\000\001j\001k\000\003\000\000\000\000\000\000\000\000\001m\001n\001l\000\021\001i\000\022\000\000\001\254\000\000\000\004\000\000\001\255\000\000\000\005\000\000\002\000\000\000\000\000\002\001\000\006\000\000\000\007\000\000\002\002\000\000\000\b\000\000\002\003\000\000\000\t\000\000\002\004\000\000\000\n\000\000\002\005\000\000\000\011\000\000\002\006\000\000\000\000\002\007\000\012\000\000\000\000\002\b\000\r\000\000\000\000\000\000\000\000\000\000\003\149\003\144\003\145\003\148\003\146\000\000\000\000\000\000\003\142\003\137\003\138\003\141\003\139\000\000\003\153\000\014\000\000\003\152\000\000\001E\000\000\000\000\003\150\000\000\003\151\000\000\000\000\000\000\000\000\001I\001J\000\000\000\000\001H\001G\000\015\000\000\000\000\000\000\003\183\000\000\003\182") + (16, "\000\000\000\000\000\000\003[\003Z\003Y\003X\003W\003)\003V\003U\003T\003S\003R\003Q\003P\003O\003N\003M\003L\003K\003J\003I\003H\003G\003F\003E\003D\003C\003(\003B\003A\003@\003?\003>\003=\003<\003;\003:\0039\0038\0037\0036\0035\0034\0033\0032\0031\0030\003/\003.\003-\003,\003+\003*\000\000\000\000\0003\000\203\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\205\001\223\001\202\001\220\001\219\001\218\001\224\001\228\000\000\003\206\001\222\001\221\001\203\001\226\001\217\001\216\001\215\001\214\001\213\001\211\001\227\001\225\000\000\000\000\000\000\000\240\000\000\000\000\001\206\000\000\000\000\000\000\001\208\000\000\000\000\000\000\001\210\001\232\001\229\001\212\001\204\001\230\001\231\000\000\003\204\003\203\003\207\000\000\000\000\000\028\001p\000\205\000\000\000\234\000\235\000\000\000\000\000\000\002\000\001\255\000\000\000\000\000\000\000\000\0001\001\019\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\198\000\000\003\193\000\000\000\000\003\195\000\000\003\197\000\000\003\194\003\196\000\000\000\000\000\000\000\000\002\014\000\000\001:\000\000\000\000\000\000\000\000\002\r\002\012\000\000\003\188\000\000\002x\002w\000\000\000\000\003\185\000\000\000\000\003\184\000\000\000\000\000\000\001\020\001\021\000\000\000\000\000\000\000x\000\000\000\027\000\000\000\000\000v\000\000\000\000\000\000\000\000\0000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\199\001|\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\\\000\000\000\000\000\000\000\000\000\000\000\000\003\217\000\000\000\000\000\000\000\000\000\000\003\021\000\000\002\181\002\176\002\177\002\182\000\000\002\179\002\174\002\175\002\180\000\000\000\000\000\000\000\000\000\000\001\147\001\146\000\000\003\019\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\243\000\017\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001z\000\000\000\000\001}\001{\001\131\000K\002\217\003\153\003\152\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000u\000\000\000\252\000\000\002\184\002\183\000\000\000\000\000\000\001\236\000\000\000\000\000,\000\000\000\000\000\000\001n\000\000\000\000\001\130\000\000\001\129\000\000\001q\001\128\000\000\001o\000l\000%\000\000\000\000\001\174\000\000\000\029\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\183\000/\000\000\000\000\000&\000\000\000\030\000\000\000\000\000\000\000\000\003m\000\000\000\000\000\219\000\000\000\000\000\000\000'\000\000\000\031\000\000\000\018\000\000\000\137\000\000\000\000\000\000\000\019\000\000\000\000\000\000\000\000\000\021\000\000\000\000\000\000\000\000\000\020\000\000\000\000\002h\000\000\000\000\000\000\000\000\000\000\002i\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003b\000\000\000\025\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003d\000\000\000\000\000\000\000\000\000\000\003e\000\000\000\000\000\000\000\000\000\000\003c\000\000\003k\002\133\002s\000\000\000)\000\000\002t\000\000\000\000\001\233\000\000\000\000\000\000\000\000\003\154\000\000\003\155\000\000\000\000\000(\000\000\000\000\000\000\000*\000\000\000+\000\000\000-\000\000\000\000\000.\002e\002d\000\000\000\000\000\000\000\000\000\000\000\000\003\215\000\000\003\026\003\199\003\200\000\000\003\025\003\218\000w\003\216\002\178\003\015\003\208\002\173\003\016\002.\003\018\000\000\000\000\000\000\000\000\003\022\003'\003\024\000\000\000\000\000\000\003 \003\029\000\000\000\000\000\000\002*\002\028\000\000\000\000\000\000\000\000\002 \000\000\002\027\000\000\002-\003&\000\000\000\000\000\000\000\000\001\179\000\000\000\000\002,\003\023\000\127\000\000\000\000\000~\000\000\003!\003\017\000\000\002&\000\000\000\000\003$\000\000\003#\003\"\000\000\002\"\000\000\000\000\002\030\002\029\002+\002#\000\000\000}\000\000\003\031\003\030\000\000\003\028\000\000\002\186\002\185\000\000\000\000\002\143\003\027\000\000\000\000\000\000\000\000\001\238\001U\001V\002\189\000\000\002\188\002\187\002\192\000\000\002\191\002\190\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\n\000\000\001\t\001\011\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\220\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\157\000\000\000\000\000\000\000\000\000\000\000\000\003\235\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\187\000\000\000\000\000\000\000\000\000\000\001\156\000\000\000\000\000\000\001y\001\163\001x\001\160\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002q\000\000\000\000\002r\002a\002`\000\000\001\155\001\154\000\000\000\221\000\000\000\000\001\140\000\000\000\000\001\144\000\000\002\004\002\003\000\000\000\000\002\002\002\001\001\143\001\141\000\000\001\145\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000s\002\223\001~\000t\002\227\002\225\000\000\000\000\000\000\002\239\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\004\000\000\003\003\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0029\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\007\000\000\000\000\001\006\0028\001\b\000\000\000\000\000\000\000\000\000\000\000\000\001\176\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\236\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\180\000\000\000\000\003\179\000\000\000\000\000\000\000\000\001\000\000\255\000\000\001\001\000\000\000\000\000\000\002\235\000\000\000\000\000\000\002\205\002\196\000\000\000\000\000\000\000\000\003\209\002\238\002\224\003\011\000\000\000\000\000\182\000\000\000\000\000\000\000\000\000\000\000\198\000\000\000\000\000\000\000\157\000\000\000\000\000\000\002\150\002\149\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\r\000\000\000\000\002f\000\000\000\000\000\000\000\000\000\000\002g\000\000\000\000\000\000\001\017\000\000\000\000\000\000\000\000\000\000\001\016\001\012\000\000\003^\000\000\000\000\000\212\000\211\001\014\000\000\003_\003a\001\177\000\000\000\000\003`\000\000\001\175\001\181\000\000\000\000\001\015\000\000\000\000\000\000\000\000\000\000\001\018\001\\\000\000\000\000\000\000\001Y\000\000\000\000\001X\001W\001[\000\000\001Z\000\000\000\000\000\000\000\000\000\000\001\028\000\000\000\000\001\026\001 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\029\000\000\000\000\000\000\000\000\001\027\000\000\000\000\001\025\001\024\000\000\000\000\000\000\000\000\001\031\000\000\000\000\001\030\000\000\002)\000\000\000\000\0025\000\000\000\000\0027\000\000\000\000\0023\0022\0020\0021\000\000\000\000\000\000\001\022\000\000\000\000\001@\000\022\001\"\000\000\000\000\000\000\002\207\002\198\000\000\000\000\002\206\002\197\000\000\000\000\000\000\000\000\002\209\002\200\000\000\000\000\002\137\000\000\000\000\002\213\002\204\000\000\000\000\002\211\002\202\002\231\000\000\000\000\000\000\000\000\000\000\002\208\000\000\000\000\000\000\000\000\000\000\002\212\000\000\000\000\000\000\000\000\000\000\002\210\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002c\002b\000\156\000\000\002\199\000\000\000\000\002\203\000\000\000\000\002\201\000\201\000\000\000\138\000\139\000\000\000\000\000\000\000\000\000\153\000\213\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\214\000\000\000\215\000\217\000\000\000\000\000\216\000\197\000\000\000\000\000\196\000\000\000\146\000\000\000\000\001^\000\000\001_\001]\002k\000\000\000\000\002l\002j\000\000\000\000\000\000\000\000\000\000\001+\000\000\000\000\001,\000\000\000\000\000\183\000\000\001.\001-\000\000\000\000\002\240\002\232\000\000\003\t\000\000\003\n\003\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000o\002p\002o\000\000\002\255\002_\002^\000\000\002\249\000\000\002\250\002\248\000\000\000\000\002\254\000\000\003\001\000\000\003\002\003\000\000\000\000\000\002\253\000\000\000\000\002\234\002\233\000\000\000\000\000\000\002O\000\000\001\254\000\000\000\000\000\000\002\146\002N\000\000\002\244\002\243\000\000\000\000\000\000\001\127\000\000\002\215\000\000\002\216\002\214\000\000\002\242\002\241\000\000\000\000\000\000\002\140\002\230\000\000\002\229\002\228\000\000\002\252\002\251\000\000\000\000\003\012\002\247\000\000\002\246\002\245\000\000\000\000\003\r\000\144\000\000\000\000\000\000\000\000\000\143\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\141\000\000\001\134\000\000\000\000\000\000\000y\000\000\000\000\000z\000\000\000\000\000\000\000\000\001\167\001\168\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\245\000\000\000\000\000\133\000\000\000\248\000\246\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\223\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\142\000{\000\000\000\000\002M\000\000\000\000\001!\001\252\000\000\001\004\000\000\000\000\001\003\001\005\001)\000\000\000\200\003\007\000\000\003\006\003\005\000\000\000\000\003\014\002\226\000\000\000\000\000\000\000\000\002\218\000\000\002\220\000\000\002\219\000\000\002\194\002\193\000\000\002\195\000\000\000\000\000\000\000\000\002\011\002\005\000\000\002\n\000\000\002\b\000\000\002\t\000\000\002\006\000\000\000\000\002\007\000\000\001\199\000\000\000\000\000\000\001\198\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\161\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0016\003\146\000\000\000\000\003\145\000\000\000\000\000\000\000\000\000\000\002>\000\000\000\000\000\000\000\238\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\183\000\000\002D\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003]\000\000\000\000\002\151\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\201\000\000\000\000\000\000\001\200\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\162\000\000\000\000\000\000\000\000\001\149\000\000\001\148\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0018\002\165\000\000\000\000\000\000\002\163\000\000\000\000\000\000\002\162\000\000\001\136\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\221\000\000\000\000\002y\000\000\000\210\000\000\002z\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000O\000\000\000\000\000\000\000\000\001\173\000\000\001\172\000\000\000\000\000\000\000\000\000R\000\000\000\000\000\000\002K\000\000\002J\000\000\000\000\000\000\000\000\000S\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000X\000\000\000\000\000\000\000Y\000W\000\000\000\\\000\000\000\000\000\000\000\000\000\000\000Q\000\000\000\000\000\000\000\000\000\000\000\000\000T\000\000\000[\000Z\000\000\000U\000V\000\000\001I\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0014\000k\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000h\000\000\000j\000i\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0012\002\169\002\155\000\000\002\161\002\156\002\168\002\167\002\166\002\164\001C\000\000\002\153\000\000\000\000\000\000\000\000\002\171\000\000\000\000\000\000\000\000\000\000\000\000\002\\\000\000\000\000\001<\001\240\002\157\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\194\001\190\000\000\000\000\000\000\000\228\000\000\000\000\002R\002\\\000\000\000\000\001>\002P\002Q\000\000\000\000\000\000\000\000\000\000\001\197\001\193\001\189\000\000\000\000\000\229\000\000\000\000\001\196\001\192\001\188\001\186\002\158\002\154\002\170\001B\002;\002\152\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\165\000\000\000\000\000\000\003\212\000\000\000\000\003\214\000\000\000@\000\000\000\000\003\224\000\000\003\223\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\211\000\000\000\000\003\213\000\000\000\000\000\000\002F\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001m\000\000\000\000\001k\001i\000\000\000A\000\000\000\000\003\227\000\000\003\226\000\000\000\000\000\000\001g\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001l\000\000\000\000\001j\001h\000\000\000\000\000\000\000C\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001$\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000b\000\000\000\000\000\000\000\000\000\000\000\000\000=\000\000\000\000\000a\000\000\000;\001%\000\000\000J\0007\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001#\000\000\000`\000_\000\000\000\000\000e\000d\000\000\000\000\001\242\000\000\000?\000\000\000\000\000\000\000>\000\000\000\000\000\000\000B\000\000\000c\000f\000\000\000D\000E\000\000\001K\000\000\000\000\000\000\000\000\000\000\000\000\000H\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0010\003\149\003\140\000\000\000\000\003\144\003\\\003\139\003\148\003\147\001G\000\000\000\000\003\137\000\000\000\000\000\000\000\000\003\151\000\000\003\141\003\138\003\150\002:\000\000\000\000\003\135\0004\003\134\000\000\000\000\000\208\000\000\000\242\000\000\000\000\001F\001E\000\000\001\138\001\137\000\000\000\000\003%\003\020\000\000\000L\000\000\000\000\000M\000\000\000\000\002\222\002\221\000\000\000\000\000\149\000\000\000\000\002C\000\233\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\206\000\000\003\143\002W\002X\002S\002U\002T\002V\000\000\000\000\000\000\000\207\000\000\000\000\000\000\002\\\000\000\000\232\000\000\000\000\000\000\000\000\003\142\000\000\000\204\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003j\000\000\000\000\000\000\000\000\000\000\000\000\001f\001`\000\000\000\000\001a\000$\000\000\000#\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003f\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003h\000\000\000\000\000\000\000\000\000\000\003i\000\000\000\000\000\000\000\000\000\000\003g\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003l\000\000\000\000\000\000\001\195\001\191\000\000\001\187\003\182\000\000\002\\\000\000\000\231\000\000\000\000\000\000\000\000\002\160\002[\002Y\002Z\000\000\000\000\000\000\000\000\002\\\000\000\000\230\000\000\000\000\000\000\000\000\002\159\000\000\001\151\001\150\000\000\000\026\000\000\003\219\000\000\0005\000\000\000\000\000\000\000\000\000\152\000\000\000\236\000\001\000\000\000\000\000\241\000\002\000\000\000\000\000\000\001s\001t\000\003\000\000\000\000\000\000\000\000\001v\001w\001u\000\023\001r\000\024\000\000\002\015\000\000\000\004\000\000\002\016\000\000\000\005\000\000\002\017\000\000\000\000\002\018\000\006\000\000\000\007\000\000\002\019\000\000\000\b\000\000\002\020\000\000\000\t\000\000\002\021\000\000\000\n\000\000\002\022\000\000\000\011\000\000\002\023\000\000\000\000\002\024\000\012\000\000\000\000\002\025\000\r\000\000\000\000\000\000\000\000\000\000\003\169\003\164\003\165\003\168\003\166\000\000\000\000\000\000\003\162\003\157\003\158\003\161\003\159\000\000\003\173\000\014\000\000\003\172\000\000\001M\000\000\000\000\003\170\000\000\003\171\000\000\000\000\000\000\000\000\001Q\001R\000\000\000\000\001P\001O\000\015\000\000\000\000\000\000\003\202\000\000\003\201") and error = - (132, "'\225 \197\138\173\249\156\244\005`?\200\000\003\142\0026\016\004\\(\223\137\159@\022\003\232\000\000\024\224}\246D\b/\227h\000\019\007\000{G\022\002\131@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\n\254\182oY\186\255\153\223\242^\135\252B y\224}\246D\b/\227h\000\019\007\000{G\022\002\131@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0026\016\004X(\223\137\159@\022\003\232\000\000\024\224}\246D\b/\227h\000\019\007\000{G\022\002\131B~\018-X\170\223\153\207@V\003\252\000\000x\224\000\000\000\000@\000\160\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\n\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\160\000\000\000\000\000\000\000\000\000\b\000\b\000~\002\193 \000\015\129\016\002\b\001\002\139\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\160\000\000\000\000\000\000\000\000\000\001\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\128\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\128\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\128\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\003\000\000p\016\000\226\224\128\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\bX\011\186\000\131\"\144p0h\144\022\194*!\020\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\000\000p\016 \226\224\128\000\b\000\000\000\000\000\000\016\004\004\004\002\n\b\016\000\000\004\000\000\000\000\000\001\000@@\000 \160\129\000\000\000@\000\000\000\000\000\016\004\004\000\002\n\b\000\000\000\004\000\000\000\000\000\196\128*\128\b0\137\007\000\004\136\001l 2\000HH\002\b\000\130\000\016P\000@\000\020@\000 \000\132\128 \128\b \001\004\000\004\000\001D\000\002\000\0000\000\002L\016J\000\016\002\000\000\000\000\000\000\128\003\000\000$\129\004\160\001\000 \000\000\000\000\000\b\0000\000\002H\016J\000\000\002\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\002\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0000\000\002H\000J\000\000\002\000\000\000\000\000\000\128\002\000\000 \000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000$\128\004\000\000\000 \000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000 \128\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\016\000\000\000\000\000\b@\000\001\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\175\235\127\253\155\239\251\255\255'\233\255\204B\131\158@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\002H\000@\000\000\002\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\016\000 \000\000\002\000\016\000\000\000\000\000\b\000\000\001\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\bH\002( \130\000\016`\000@\000\022\192! \004\003 \000x\016\000\226\224\160\000\b\002\000@\000\016\bH\002(\000\194\b\144p\000H\128\020\194 a\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0002\000\007\001\000\014.\n\000\000\128 \004\000\001\000\003\000\bp\016 \226\224\128\000\b\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\000\000`\000\000\162\224\128\000\b\000\000\000\000\000\0000\000\007\001\002\014.\b\000\000\128\000\000\000\000\000\197\128\187\128\b2)\007\003\004\137\001l\002\166\017`0\000\006\000\000\014.\b\000\000\128\000\000\000\000\000\003\000\000p\016 \226\224\128\000\b\000\000\000\000\000\0000\000\006\000\000\n.\b\000\000\144\000\004\000\000\000\003\000\000p\016 \226\224\128\000\b\000\000\000\000\000\007\223d@\130\2546\128\0010p\007\180q`(4'\225\"\213\138\173\249\156\244\005`?\192\000\007\142\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0000\000\002L\016J\000\016\002\000\000\000\000\000\000\128\003\000\000$\129\004\160\001\000 \000\000\000\000\000\b\0000\000\002H\016J\000\000\002\000\000\000\000\000\000\128\003\000\000$\128\004\160\000\000 \000\000\000\000\000\b\000\016\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\132\128\"\130\b \t\006\000\004\136\001l\002\002\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\128\"\128\b \t\006\000\004\136\001L\002\002\000G\223d@\130\2546\128\0010p\007\180q`(4'\225\"\213\138\173\249\156\244\005`?\192\000\007\142\0026\016\004\\(\223\137\159@\022\003\232\000\000\024\224#a\000E\130\141\248\153\244\001`>\128\000\001\142\0026\016\004X(\223\137\143@\022\003\232\000\000\024\224\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\018\016\004@(\n\t\142@\006\000`\000\000\024\192\132\000\000\128@\002\129\005\003\000\000\000\004\002\000\000\b@\000\b\000\000(\016P0\000\000\000@ \000\000\132\000\000\128\000\002\129\004\003\000\000\000\004\002\000\000\0002\016\004\b\000J\t\139@\014\128d\000\000\016@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\006\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000`\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b2\024\132~\002\203)\139O\143\144f\b\001\146\203\128\000\b\000\000\000\000\000\004\000`\004\000\000\000\000\b0\000\000\004\000\000\000\016\000\000\000\000\000\000\000\000\003\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\0000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000@@\000 \160\128\000\000\000@\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\016 \004\000\000\b\b\016\000\000\004\000\000\000\000\000\001\002\000@\000\000\128\128\000\000\000@\000\000\000\000\n~\018\012X\170\223\153\223@V\003\252@\0008\224\167\225 \197\138\173\249\156\244\005`?\196\000\003\142\n~\018,X\170\223\153\207@V\003\252\192\0008\224\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016 \004\004\000\b\b\016\000\000\004\000\000\000\000\128\001\002\000@@\000\128\129\000\000\000@\000\000\000\000\000\016 \004\000\000\b\b\016\000\000\004\000\000\000\000\000\001\002\000@\000\000\128\128\000\000\000@\000\000\000\000\000P \004\000\000\b\b\000\000\000\004\000\000\000\000\000#a\000E\130\141\248\153\244\001`>\128\000\001\142\0026\016\004X(\223\137\143@\022\003\232\000\000\024\224\001\000\000\000@\000 \001\000\000\000\000\000\000\000\000\000\016\000\000\000\000\002\000\016\000\000\000\000\000\000\000\000\001\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\016\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0026\016\004\\(\223\137\159@\022\003\232\000\000\024\224#a\000E\130\141\248\153\244\001`>\128\000\001\142\0026\016\004X(\223\137\143@\022\003\232\000\000\024\224\163a\136G\226\173\250\152\244\249q>\160\128\025\174\184\018\016\132@(\n\t\142@\006\000`\000\000\024\192#a\000E\130\141\248\152\244\001`>\128\000A\142\0026\016\004X(\223\137\143@\022\003\232\000\000\024\224\213\189\187\215\250\190\175\159\239\254\251\015o\182\255\252\2426\016\004X(\223\137\143@\022\003\232\000\000\024\224\003!\000@\128\004\160\152\180\000\232\006\000\000\001\004\0002\016\004\b\000J\t\139@\014\128d\000\004\016@\003!\000@\128\004\160\152\180\000\232\006@\000\001D\0002\016$\b\000J\t\139@\014\128d\000\000\016@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\017\000\000\000\000\000\000\000\000\000 \000\004\000\0000\000\007\001\000\014.\b\000\000\128\000\000\000\000\000\003\000\000p\016\000\226\224\128\000\b\000\000\000\000\020\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\000\000p\016\000\226\224\128\000\b\000\000\000\000\004\0000\000'\001\000\014.\b\000\000\128\000\000\000\001@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0000\000\007\001\000\014.\b\000\000\128\000\000\000\000@\003\000\000p\016\000\226\224\128\000\b\000\000\000\000\020\000\016\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\002\000\000\000\129\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\128\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0000\000\007\001\000\014.\b\000\000\128\000\000\000\000@\001\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\197\128\187\128\b2)\007\003\006\137\001l\002\162\017`\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\196\128;\128\b2\t\007\003\004\137\001l\002\162\017`0\000\007\001\000\014.\b\000\000\128\000\000\000\000\000\003\000\000`\000\000\162\224\128\000\b\000\000\000\000\000\012H\003\184\000\131 \144p0H\144\022\192*!\022\003\000\000p\016\000\226\224\128\000\b\000\000\000\000\000\0000\000\006\000\000\n.\b\000\000\128\000\000\000\000\000\196\128;\128\b2\t\007\003\004\137\001l\002\162\017lH\011\184\000\131 \144p0H\144\022\192*!\022\003\000\000`\000\000\162\224\128\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\012X\011\184\000\131\"\144p0H\144\022\192*!\022\001\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\197\128\187\128\b2)\007\003\006\137\001l\002\162\017`\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\197\128\187\128\b2)\007\003\004\137\001l\002\162\017`0\000\006\000\000\n.\b\000\000\128\000\000\000\000\000\197\128\187\128\b2)\007\003\004\137\001l\002\162\017lH\003\184\000\131 \144p0H\144\022\192*!\022\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0000\000\006\000\000\014.\b\000\000\128\000\000\000\000\000\003\000\000p\016 \226\224\128\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\128\000\000\016\000\000\000\000\002\000\000\000\000\128\000\000\000\000\000\001\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\197\128\187\128\b2)\007\003\006\137\001l\002\162\017`\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\000\000p\016\000\226\224\128\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\001\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\196\128;\128\b2\t\007\003\004\137\001l\002\162\017@\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000 \000\000\000\016\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0000\000\007\001\000\014.\b\000\000\128\000\000\000\000\000\000\000\b\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\003\000\000p\016\000\226\224\128\000\b\000\000\000\000\000\0000\000\006\000\000\n.\b\000\000\128\000\000\000\000\000\196\128;\128\b2\t\007\003\004\137\001l\002\162\017lH\003\184\000\131 \144p0H\144\022\192*!\022\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\016\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0000\000\007\001\000\014.\b\000\000\128\000\000\000\000\000\000\000\b\000\000\000\000\001\000\000\000\000\000\000\128\000\0000\000\006\000\000\n.\b\000\000\128\000\000\000\000\000\003\000\000p\016 \226\224\128\000\b\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\002\000\000\000\003\000\000p\016\000\226\224\128\000\b\000\000\000\000\000\000\000\000\128\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\0000\000\007\001\000\014.\b\000\000\128\000\000\000\000\000\003\000\000`\000\000\162\224\128\000\b\000\000\000\000\000\012H\003\184\000\131 \144p0H\144\022\192*!\022\196\128;\128\b2\t\007\003\004\137\001l\002\162\017`\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\0000\000\007\001\000\014.\b\000\000\128\000\000\000\000\000\003\000\000`\000\000\162\224\128\000\b\000\000\000\000\000\012H\003\184\000\131 \144p0H\144\022\192*!\022\196\128;\128\b2\t\007\003\004\137\001l\002\162\017`\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\0000\000\007\001\000\014.\b\000\000\128\000\000\000\000\000\003\000\000`\000\000\162\224\128\000\b\000\000\000\000\000\012H\003\184\000\131 \144p0H\144\022\192*!\022\196\128;\128\b2\t\007\003\004\137\001l\002\162\017`\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\196\128;\128\b2\t\007\003\004\137\001l\002\162\017`\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\000\000p\016\000\226\224\128\000\b\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\004\000\000\001\000\000\001\000\000\000\000\016\0000\000\007\001\000\014.\b\000\000\128\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0000\000\007\001\000\014.\b\000\000\128\000\000\000\000\000\000\000\002\000\000\000\000\001\000\000\001\000\000\000\000\016 0\000\007\001\000\014.\b\000\000\128\000\000\000\000\000\000\000\002\000\000\000\000\001\000\000\001\000\000\000\000\017 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\001\000\000\001\000\000\000\000\017 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\001\000\000\001\000\000\000\000\016\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\003\000\000p\016\000\226\224\128\000\b\000\000\000\000\004\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\016\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\017\000\000\000\000\001\000\000\000\000 \000\000\000\b\000\001\016\000\000\000\000\000\000\000\000\002\000\000\000\000\003!\000@\128\004\160\152\180\000\232\006@\000\001\004\0002\016\004\012\000J\t\154@\014\128`\000\000\016@\003!\000@\128\004\160\153\164\000\232\006\000\000\001\004\0002\016\004\b\000J\t\138@\014\128`\000\000\016@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\t2\145\181\t\001J\t\154\192.\128b\132\014\213P\000\001\000\000\128\004\000\000\004\000\000\004\000\000\001\000\000\000\000\000\000\000\000\000\000@\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\147)\027P\144\020\160\153\188\002\232\006h \237U\000\016\000\000\000\000\b\001\138\000\000\000\000\000\000\000\000\131!\b@\128\004\160\152\180\000\232\006@\000\t\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0002\016\004\012\000J\t\155@\014\128d\000\000\016@\003!\000@\128\004\160\153\180\000\232\006@\000\001\004\0002\016\004\b\000J\t\139@\014\128d\000\000\016@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\144\000\027\000\000\016\000\001\000\002\000\000(\000\204Q\0002\016\004\b\000J\t\139@\014\128d\000\000\016@\144\000\027\000\000\016\000\001\000\002\000\000(\000\204Q\b2\016\004\b\000J\t\139@\014\128d\000\000\016@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\t\000\001\176\000\001\000\000\016\000 \000\002\128\012\197\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\t2\017\180\b\001J\t\155@.\128f\128\012\213P\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\147!\027@\128\020\160\153\180\002\232\006h\000\205U\b:\024\132~\002\203)\139O\143\144f\b\001\146\203\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\002\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\003!\000@\128\004\160\152\164\000\232\006\000\000\001\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\b\000\000\000\000\000\004\000`\004\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\128\000\000\000\000\016\000\000\000\000\000\b\193\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\131!\000@\128\004\160\152\180\000\232\006@\000\001\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\144\000\027\000\000\016\000\001\000\002\000\000(\000\204Q\b0\000\007\001\000\014.\b\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\128\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\131!\000@\128\004\160\152\180\000\232\006@\000\001\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\144\000\027\000\000\016\000\001\000\002\000\000(\000\204Q\b\000\000\000\000\000\n\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\b\000\000\000\000\001\000\000\000\000\000\000\136\017\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0002\016$\b\000J\t\139@\014\128d\000\000\016@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\018\000\000\000\000\001\000\000\000\000\000\000\200Q\b2\016$\b\000J\t\139@\014\128d\000\004\020@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\017\000\000\000\000\001\000\000\000\000\000\000\136\017\b\000\001\016\000\000\000\000\000\000\000\000\000\000\000\000\000\131\000\001\000\000\000 \000\000\000\000\000\000\000\000\000\b\000\001\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0002\144\005\t\000J\t\154\192.\128b\000\b\209X\000\000\000\000\000\000\160\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\006\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\002\000\000@\000\003\000\000p\016\000\226\224\128\000\b\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\002\000\000\000\003\000\000p\016\000\226\224\128\000\b\000\000\000\000\000\000\000\000\128\000\000\000\000\016\000\000\000\002\000\000\000\000\000\000\b\000\000\000\000\001\000\000\000\000 \000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\160\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\006\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\002\000\000\000\000#a\000E\130\141\248\152\244\001`>\128\000\001\142\0002\016D\012\130N\t\155@\014\128d\000\000\016@\001\002\000@@\000\128\129\000\000\000@\000\000\000\b\000\016 \004\004\000\b\b\016\000\000\004\000\000\000\000\000\001\002\000@\000\000\128\129\000\000\000@\000\000\000\000\000\016 \004\000\000\b\b\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\128\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\003\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\016\004\004\000\002\n\b\000\000\000\004\000\000\000\000\000\001\000@@\000 \160\128\000\000\000@\000\000\000\000\000\000\000\000\000\000\b\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\b\000\000\000\000\000\000\000\000\000\000\001\000@@\000 \160\128\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\196\128*\128\b0\t\007\000\004\136\001l\000\"\000@\b\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\003\000\000$\128\004\160\000\000 \000\000\000\000\000\b\000\016\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\016\000\0000\000\007\129\000\014.\b\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0000\000\007\001\000\014.\b\000\000\128\000\000\000\000\000\196\128*\128\b0\t\007\000\004\136\001l\000\"\001@0\000\007\001\000\014.\b\000\000\128\000\000\000\000\000\196\128*\128\b0\t\007\000\004\136\001l\002\"\001LH\002\168\000\131\000\144p\000H\128\022\192\" \004\003\000\000p\016\000\226\224\128\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\002\000\000\000\000\003\000\000p\016\000\226\224\128\000\b\000\000\000\000\000\012H\002\168\000\131\000\144p\000H\128\022\192\" \004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\024\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\001\000\000\001\000@@\000 \160\128\000\000\000@\000\000\000\000\012H\002\168\000\131\000\144p\000H\128\022\192\002 \004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\002\000\000\000\001\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\012H\002\168\000\131\b\144p\000H\128\022\194\003 \004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000@@\000 \160\128\000\000\000@\000\000\000\000\012H\002\168\000\131\000\144p\000H\128\022\192\002 \004\001\000@@\000 \160\128\000\000\000@\000\000\000\000\012H\002\168\000\131\000\144p\000H\128\022\192\002 \004\000\000\000\000\000\000\000\000\000\000\000\000 \016\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\196\128*\128\b0\137\007\000\004\136\001l \"\000@\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\012H\002\168\000\131\b\144p\000H\128\022\194\002 \004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\012H\002\168\000\131\000\144p\000H\128\022\192\002 \004\000\128\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\192\000\b\000\000\016\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\128\000\001\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\b\000\000\000\000\000\000\000\000\000\000\001\002\000@\000\000\128\128\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\196\128*\128\b0\137\007\000\006\136\001l\000&\000@P \132\000\000\b\b\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\128\000\000\b\000\016\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000@@\000 \160\128\000\000\000@\000\000\000\000\012\000\000\128\000\001\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\196\128*\128\b0\137\007\000\006\136\001l &\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\001\000\002\000\000\000\000\000\000\0026\016\004X(\223\137\143@\022\003\232\000\000\024\224#a\000E\130\141\248\152\244\001`>\128\000\001\206\0026\016$X(\223\137\143@\022\003\232\000\000\024\224\000\000\000\000\000\000 \000\000\000\002\000\000\000\000\000\b\000\001\000\000\000\000\000\000\000\000 \002\000\000\000\000#a\000E\130\141\248\152\244\001`>\128\000\001\142\000\018\016\004@(\n\t\142@\006\000`\000\000\024\192\192\000\017\000\000\000\000\000\000\000\152\000 \160$\000\0026\016\004\\(\223\137\159@\022\003\232@\000\024\224#a\000E\130\141\248\153\244\001`>\132\000\001\142\0026\016\004X(\223\137\143@\022\003\232@\000\024\224\001!\000DB\128\160\153\228\000`\006\000\000\001\140\000\018\016\004@(\n\t\158@\006\000`\000\000\024\192\001!\000D\002\128\160\152\228\000`\006\000\000\001\140\000\018\016\004@(\n\t\142@\006\000`\000\000\024\192\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\213\189\187\215\250\190\171\159\239\254\251\015o\182\255\253\240\016\000\000\000\000\n\001\142\000\000\000\000\000\000\000\000\163a\136G\226\173\250\152\244\249q>\160\128\025\174\176\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\163a\bE\130\141\248\152\244\001`>\128\000\001\142\n6\016\132X(\223\137\143@\022\003\232\000\000\024\224\129\002\000@@\000\128\129\000\000\000@\000\000\000\000\000\016 \004\000\000\b\b\016\000\000\004\000\000\000\000\000\001\002\000@\000\000\128\128\000\000\000@\000\000\000\000\000\000\000\000\000\000\b\000\016\000\000\000\000\000\000@\000\129\000@@\000 \160\128\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\b\000\000\016\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\163a\bE\130\141\248\152\244\001`>\128\000\001\142\n6\016\132X(\223\137\143@\022\003\232\000\000\024\224\131!\b@\128\004\160\152\180\000\232\006\000\000\001\004\000\000\000\000\000\000\000\000\016\000\000\000\002\000\b\193\016\003\000\000p\016\000\226\224\128\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\002\000\000\000\000#a\000E\130\141\248\152\244\001`>\128\000\001\142\0026\016\004\\(\223\137\159@\022\003\232\000\000\024\224#a\000E\130\141\248\153\244\001`>\128\000\001\142\0026\016\004X(\223\137\143@\022\003\232\000\000\024\224\003!\000@\192\004\160\153\180\000\232\006@\000\001\020\0002\016\004\b\000J\t\155@\014\128d\000\000\017@\003!\000@\128\004\160\152\180\000\232\006@\000\001\020\0002\016\004\b\000J\t\139@\014\128d\000\000\016@\016\000\000\000\000\016\000\001\000\000\000\000\000\000\136\017\0026\016\004X(\223\137\143@\022\003\232\000\000\024\224\003)\000P\208\004\160\153\172\000\232\006\000\000\001\004\0002\144\005\t\000J\t\154\192\014\128`\000\000\016@\003)\000P\144\004\160\152\172\000\232\006\000\000\001\004\000 \000\000\000\000\n\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0002\016\004\b\000N\t\139@\014\128d\000\000\016@\003!\000@\128\004\160\152\180\000\232\006@\000\001\004\000\000\000\128\000\000\000\000\016\000\000\000\002\000\b\193\016\003\000\000p\016\000\226\224\128\000\b\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\002\000\000\000\003\000\000p\016\000\226\224\128\000\b\000\000\000\000\000\000\000\000\128\000\000\000\000\016\000\000\000\002\000\000\000\000\000\000\b\000\000\000\000\001\000\000\000\000 \000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b:\024\132~\002\207)\139O\143\144f\b\001\146\203\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\003)\000P\144\020\160\152\172\000\232\006\000\000\005\004\0026\016\004X(\223\137\143@\022\003\232\000\000\024\224\003!\000@\192\004\160\153\180\000\232\006@\000\001\004\0002\016\004\b\000J\t\155@\014\128d\000\000\016@\003!\000@\128\004\160\152\180\000\232\006@\000\001\004\000\000\000\000\000\000\000\000\016\000\000\000\002\000\b\129\016#a\000E\130\141\248\152\244\001`>\128\000\001\142\0026\016\004X(\223\137\143@\022\003\232\000\000\024\224\001!\000DB\128\160\153\228\000`\006\000\000\001\140\000\018\016\004@(\n\t\158@\006\000`\000\000\024\192\001!\000D\002\128\160\152\228\000`\006\000\000\001\140\rIK\184>\131\224\176p?\233\176\150\251o\231\015\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001!\000D\002\128\160\152\228\000`\006\000\000\001\140\r[\219\189\127\171\234\185\254\255\239\176\246\251o\255\223\000\000\000\000\000\000\128\000\160\000\000\000\000\000\000\000\0026\016\004X(\223\137\143@\022\003\232\000\000\024\224#a\000E\130\141\248\152\244\001`>\128\000\001\142\r[\219\189\127\171\234\185\254\255\239\176\246\251o\255\207\000\000\000\000\000\000\160\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000$\000\b0\000\007\001\000\014.\b\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\001\144\000\000\000\000\016\000\000\000\002\000\000\000\000\131\000\000p\016\000\226\224\128\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\025\000\000\000\000\001\000\000\000\000 \000 \000\0000\000\007\001\000\014.\b\000\000\128\000\000\000\000\000\128\000\025\000\000\000\000\001\000\000\000\000 \000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001!\000D\002\128\160\152\228\000`\006\000\000\001\140\r[\219\189\127\171\234\185\254\255\239\176\246\251o\255\223\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\160\000\160\000\000\000\000\000\000\000\0026\016\004X(\223\137\143@\022\003\232\000\000\024\224\128\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\rIK\184>\131\224\176p?\232\176\150\241o\231\015#a\000E\130\141\248\152\244\001`>\128\000\001\142\r[\219\189\127\171\234\185\254\255\239\176\246\251o\255\207\212\148\187\131\232>\011\007\003\254\155\to\182\254p\240\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\004#a\000E\130\141\248\152\244\001`>\128\000\001\142\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\212\148\187\131\232>\011\007\003\254\139\to\022\254p\2426\016\004X(\223\137\143@\022\003\232\000\000\024\224\212\148\187\131\232>\011\007\003\254\139\to\022\254p\2426\016\004X(\223\137\143@\022\003\232\000\000\024\224\212\148\187\131\232>\011\007\003\254\139\to\022\254p\240\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\213\189\187\215\250\190\171\159\239\254\251\015o\182\255\252\253IK\184>\131\224\176p?\233\176\150\251o\231\015#a\000E\130\141\248\152\244\001`>\128\000\001\142\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\247\245\187\199\234\191\251\159\247\255\235?\239\022\255\254\247\223d@\130\2546\128\0010p\007\180q`(4#a\000E\130\141\248\152\244\001`>\128\000\001\142\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0026\016\004X(\223\137\143@\022\003\232\000\000\024\224\212\148\187\131\232>\011\007\003\254\139\to\022\254p\2426\016\004X(\223\137\143@\022\003\232\000\000\024\224\212\148\187\131\232>\011\007\003\254\139\to\022\254p\2426\016\004X(\223\137\143@\022\003\232\000\000\024\224\212\148\187\131\232>\011\007\003\254\139\to\022\254p\2426\016\004X(\223\137\143@\022\003\232\000\000\024\224\212\148\187\131\232>\011\007\003\254\139\to\022\254p\2426\016\004X(\223\137\143@\022\003\232\000\000\024\224\212\148\187\131\232>\011\007\003\254\139\to\022\254p\2426\016\004X(\223\137\143@\022\003\232\000\000\024\224\212\148\187\131\232>\011\007\003\254\139\to\022\254p\2426\016\004X(\223\137\143@\022\003\232\000\000\024\224\212\148\187\131\232>\011\007\003\254\139\to\022\254p\2426\016\004X(\223\137\143@\022\003\232\000\000\024\224\212\148\187\131\232>\011\007\003\254\139\to\022\254p\2426\016\004X(\223\137\143@\022\003\232\000\000\024\224\212\148\187\131\232>\011\007\003\254\139\to\022\254p\2426\016\004X(\223\137\143@\022\003\232\000\000\024\224\212\148\187\131\232>\011\007\003\254\139\to\022\254p\2426\016\004X(\223\137\143@\022\003\232\000\000\024\224\212\148\187\131\232>\011\007\003\254\139\to\022\254p\2426\016\004X(\223\137\143@\022\003\232\000\000\024\224\212\148\187\131\232>\011\007\003\254\139\to\022\254p\2426\016\004X(\223\137\143@\022\003\232\000\000\024\224\212\148\187\131\232>\011\007\003\254\139\to\022\254p\2426\016\004X(\223\137\143@\022\003\232\000\000\024\224\212\148\187\131\232>\011\007\003\254\139\to\022\254p\2426\016\004X(\223\137\143@\022\003\232\000\000\024\224\212\148\187\131\232>\011\007\003\254\139\to\022\254p\2426\016\004X(\223\137\143@\022\003\232\000\000\024\224\212\148\187\131\232>\011\007\003\254\139\to\022\254p\2426\016\004X(\223\137\143@\022\003\232\000\000\024\224\212\148\187\131\232>\011\007\003\254\139\to\022\254p\2426\016\004X(\223\137\143@\022\003\232\000\000\024\224\212\148\187\131\232>\011\007\003\254\139\to\022\254p\2426\016\004X(\223\137\143@\022\003\232\000\000\024\224\212\148\187\131\232>\011\007\003\254\139\to\022\254p\2426\016\004X(\223\137\143@\022\003\232\000\000\024\224\212\148\187\131\232>\011\007\003\254\139\to\022\254p\2402\016\004\b\000N\t\155@\014\128`\000\000\016@\003!\000@\128\004\224\152\180\000\232\006\000\000\001\004\000\000\000\000\000\000\n\000\000\000\000\000\000\000\000\000\000\003)\000P\144\004\160\152\172\000\232\006 \000%\004\b:\024\132~\002\207)\139O\143\144f\b\001\146\203\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\003)\000P\144\004\160\152\172\000\232\006 \000%\004\0002\016\004\b\000J\t\138@\014\128`\000\000\016@\131!\136G\224,\242\152\180\248\249\006`\128\025,\1762\016\004\b\000J\t\139@\014\128d\000\000\016@\000\000\b\000\000\000\000\001\000\000\000\000\000\000\140\017\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\002\000\000\000\003\000\000p\016\000\226\224\128\000\b\000\000\000\000\000\000\000\000\128\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\128\000\000\000\000\016\000\000\000\000\000\b\193\016\131\000\000p\016\000\226\224\128\000\b\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\002\000\000\000\003\000\000p\016\000\226\224\128\000\b\000\000\000\000\000\000\000\000\128\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000#a\000E\130\141\248\152\244\001`>\128\000\001\142\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\0026\016\004X(\223\137\143@\022\003\232\000\000\024\224\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003)\000P\144\004\160\152\172\000\232\006 \000%\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003!\000@\128\004\160\152\180\000\232\006@\000\001\004\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\128\000\000\000\000\016\000\000\000\000\000\b\193\016\131\000\000p\016\000\226\224\128\000\b\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\002\000\000\000\003\000\000p\016\000\226\224\128\000\b\000\000\000\000\000\000\000\000\128\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b0\000\007\001\000\014.\b\000\000\128\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000 \000\000\0000\000\007\001\000\014.\b\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000 \000\000\000\0026\016\004X(\223\137\143@\022\003\232\000\000\024\224\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000#a\000E\130\141\248\152\244\001`>\128\000\001\142\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\bz\146-\t\130J\153\250\192n\128v\192\n\241T\131\161\136G\224,\242\152\180\248\249\006`\128\025,\176\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\0002\144\005\t\000J\t\138\192\014\128b\000\002P@#a\000E\130\141\248\152\244\001`>\128\000\001\142\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\0026\016\004X(\223\137\143@\022\003\232\000\000\024\224\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003)\000P\144\004\160\152\172\000\232\006 \000%\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b8\000\007\001\000\014.\b\000\000\128\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\003\000\000p\016\000\226\224\128\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\002\000\000\000\000#a\000E\130\141\248\152\244\001`>\128\000\001\142\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000 \000\000\0000\000\007\001\000\014.\b\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000 \000\000\000\0026\016\004X(\223\137\143@\022\003\232\000\000\024\224\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000#a\000E\130\141\248\152\244\001`>\128\000\001\142\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\002\000\b\193\016\003\000\000p\016\000\226\224\128\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\002\000\000\000\000#a\000E\130\141\248\152\244\001`>\128\000\001\142\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000 \000\136\017\0026\016\004X(\223\137\143@\022\003\232\000\000\024\224\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b2\016\004\b\000J\t\139@\014\128d\000\000\016@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\002\000\b\129\016\131!\000@\128\004\160\152\180\000\232\006@\000\001\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000 \000\136\017\b2\016\004\b\000J\t\139@\014\128d\000\000\016@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\002\000\b\129\016\128\000\000\000\000\000\160\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\002\000\b\129\016\003!\000@\128\004\160\152\180\000\232\006@\000\001\004\000\000\000\000\000\000\000\000\016\000\000\000\002\000\b\129\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\bH\002(\000\130\000\144`\000h\128\020\192\000 \004\132\128\"\128\b\"\t\006\003\006\136\001L\002\002\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\212\148\187\131\232>\011\007\003\254\139\to\022\254p\2426\016\004X(\223\137\143@\022\003\232\000\000\024\224\128\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0026\016\004X(\223\137\143@\022\003\232\000\000\024\224\128\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\n\000\000\000\000\000\000\000\000\000\128\000\160\000\000\000\000\000\000\000\0026\016\004X(\223\137\143@\022\003\232\000\000\024\224\128\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\t\176>\000\192 \016\015\128\016\002\000\r\134\003\163a\011E\130\141\248\152\244\001`>\128\000A\206\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000#a\000E\130\141\248\152\244\001`>\128\000\001\142\b\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000#a\000E\130\141\248\152\244\001`>\128\000\001\142\b\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\018\016\004@(\n\t\142@\006\000`\000\000\024\192\213\189\187\215\250\190\171\159\239\254\251\015o\182\255\253\240\000\000\000\000\000\b\000\n\000\000\000\000\000\000\000\000#a\000E\130\141\248\152\244\001`>\128\000\001\142\b\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\r[\219\189\127\171\234\249\254\255\239\176\246\251o\255\207#a\000E\130\141\248\152\244\001`>\128\000\001\142\rIK\184>\131\224\176p?\232\176\150\241o\231\015#a\000E\130\141\248\152\244\001`>\128\000\001\142\b\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\r[\219\189\127\171\234\249\254\255\239\176\246\251o\255\207#a\000E\130\141\248\152\244\001`>\128\000\001\142\rIK\184>\131\224\176p?\232\176\150\241o\231\015#a\000E\130\141\248\152\244\001`>\128\000\001\142\b\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\r[\219\189\127\171\234\249\254\255\239\176\246\251o\255\207#a\000E\130\141\248\152\244\001`>\128\000\001\142\rIK\184>\131\224\176p?\232\176\150\241o\231\015\001\000\000\000\000\000\160\000\160\000\000\000\000\000\000\000\0026\016\004X(\223\137\143@\022\003\232\000\000\024\224\128\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\r[\219\189\127\171\234\249\254\255\239\176\246\251o\255\207#a\000E\130\141\248\152\244\001`>\128\000\001\142\rIK\184>\131\224\176p?\232\176\150\241o\231\015#a\000E\130\141\248\152\244\001`>\128\000\001\142\b\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\213\189\187\215\250\190\175\159\239\254\251\015o\182\255\252\2426\016\004X(\223\137\143@\022\003\232\000\000\024\224\212\148\187\131\232>\011\007\003\254\139\to\022\254p\2426\016\004X(\223\137\143@\022\003\232\000\000\024\224\128\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\r[\219\189\127\171\234\249\254\255\239\176\246\251o\255\207#a\000E\130\141\248\152\244\001`>\128\000\001\142\rIK\184>\131\224\176p?\232\176\150\241o\231\015\000\000\000\000\000\000\000\000\000\000\000\000\000\160\000\000\000\000\000\000\000\000\b\000\n\000\000\000\000\000\000\000\000#a\000E\130\141\248\152\244\001`>\128\000\001\142\b\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\213\189\187\215\250\190\175\159\239\254\251\015o\182\255\252\2426\016\004X(\223\137\143@\022\003\232\000\000\024\224\212\148\187\131\232>\011\007\003\254\139\to\022\254p\2426\016\004X(\223\137\143@\022\003\232\000\000\024\224\128\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\r[\219\189\127\171\234\249\254\255\239\176\246\251o\255\207#a\000E\130\141\248\152\244\001`>\128\000\001\142\rIK\184>\131\224\176p?\232\176\150\241o\231\015#a\000E\130\141\248\152\244\001`>\128\000\001\142\b\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\213\189\187\215\250\190\175\159\239\254\251\015o\182\255\252\2426\016\004X(\223\137\143@\022\003\232\000\000\024\224\212\148\187\131\232>\011\007\003\254\139\to\022\254p\253[\219\189\127\171\234\249\254\255\239\176\246\251o\255\207#a\000E\130\141\248\152\244\001`>\128\000\001\142\rIK\184>\131\224\176p?\232\176\150\241o\231\015\213\189\187\215\250\190\171\159\239\254\251\015o\182\255\253\253[\219\189\127\171\234\185\254\255\238\176\246\241o\255\207\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0026\016\004X(\223\137\143@\022\003\232\000\000\024\224\128\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000#a\000E\130\141\248\152\244\001`>\128\000\001\142\b\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0026\016\004X(\223\137\143@\022\003\232\000\000\024\224\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\0026\016\004X(\223\137\143@\022\003\232\000\000\024\224\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b:\024\132~\002\207)\139O\143\144f\b\001\146\203\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\003)\000P\144\020\160\152\172\000\232\006\000\000\005\004\0000\000\006\000\000\n.\b\000\000\128\000\000\000\000\000\001\000\000\000\000\016 \000\000\000\b\000\000\000\000\000\0026\016\004X(\223\137\143@\022\003\232\000\000\024\224\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0002\144\005\t\001J\t\138\192\014\128`\000\000P@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0002\144\005\t\001J\t\138\192\014\128`\000\000P@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000#a\000E\130\141\248\152\244\001`>\128\000\001\142\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000#a\000E\130\141\248\152\244\001`>\128 \001\142\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\212\148\187\131\232>\011\007\003\254\139\to\022\254p\2402\016\004\b\000J\t\139@\014\128d\000\000\016@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0026\016\004X(\223\137\143@\022\003\232\000\000\024\224\212\148\187\131\232>\011\007\003\254\139\to\022\254p\2426\016\004X(\223\137\143@\022\003\232\000\000\024\224\212\148\187\131\232>\011\007\003\254\139\to\022\254p\240\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000 \000\136\017\0026\016\004X(\223\137\143@\022\003\232\000\000\024\224\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\b#a\000E\130\141\248\152\244\001`>\128\000\001\142\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003!\000@\128\004\160\152\180\000\232\006\000\000\001\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\018\016\132@(\n\t\142@\006\000`\000\000\024\192\128\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0026\016\004X(\223\137\143@\022\003\232\000\004\024\224\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\144\000\144\003\224\012\002\001\000\248\001\b \000\216 26\016\004X(\223\137\143@\022\003\232\000\000\024\224\016\000\130\003\224\012\002\001\000\248\001\b \000\216`02\016\004\b\000N\t\155@\014\128d\000\000\016@\016\000\002\000\000\000\000\000\000\000\000\b\000\000@@@2\016\004\b\000N\t\155@\014\128d\000\000\016@\003!\000@\128\004\224\152\180\000\232\006@\000\001\004\0002\016\004\b\000J\t\139@\014\128d\000\000\016@\000\000\000\000\000\000\000\001\000\002\000\000\000\000\136\017\0026\016\004X(\223\137\143@\022\003\232\000\000\024\224\016\000\130\003\224\012\002\001\000\248\001\b \000\216`p\000\000\000\000\000\000\000\016\000 \000\002\000\b\129\016#a\000E\130\141\248\152\244\001`>\128\000\001\142\001\000\b >\000\192 \016\015\128\016\130\000\r\134\007#a\000E\130\141\248\152\244\001`>\128\000\001\142\000\001\b\000>\000\192 \016\015\128\016\002\016\t\130\003#a\000E\130\141\248\152\244\001`>\128\000\001\142\001\000\b >\000\192 \016\015\128\016\130\000\r\134\007\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\128\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0026\016\004X(\223\137\143@\022\003\232\000\000\028\224\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\144\000\144\003\224\012\002\001\000\248\001\b \000\152`1\000\000\000\000\000\000\000\000\000\000\000\128\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0026\016$X(\223\137\143@\022\003\232\000\000\024\224\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\144\000\146\003\224\012\002\001\000\248\001\b \000\152 1\000\000 \000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\018\016\004@(\n\t\142@\006\000`\000\000\024\192@\000\000\000\000\000\000\000\000\000\152\000\000\160\000\000\000\016\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\001\016\000\000\000\000\000\000\000\000\002\000\002@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\001\016\000\000\000\000\000\000\000\000\002\000\000\000\000\128\000\017\000\000\000\000\000\000\000\000\000\000\000\000\000\b\016\000\016\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\t\128\000\n\000\000\000\001\000\000\000\000\000\160\024\224\000\000\000\000\000\000\000\012\000\001\016\000\000\000\000\000\000\t\128\002\n\002@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\rIK\184>\131\224\176p?\233\176\150\251o\231\015\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\t\016>\000\192 \016\015\1280\002\000\t\130\003\128\000\016\000\000\000\000\000\000\000\002\000\000\000\000\000\b\000\000\000\000\000\002\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\144\000\146\003\224\012\002\001\000\248\001\b \000\152 1\000\000 \000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\t\000\t\000>\000\192 \016\015\128\016\130\000\t\134\003\016\000\000\000\000\000\000\000\000\000\000\b\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016 \004\000\000\b\b\016\000\000\004\000\000\000\000\000\001\002\000@\000\000\128\128\000\000\000@\000\000\000\000\000\000\000\000\000\000\b\000\016\000 \000\000\000\000\000\000#a\000E\130\141\248\152\244\001`>\128\000\001\142\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\000\000\000@\000\000\001\000\000\000\000\000\000\000\000\0000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\003\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\002\000\000@\000\001\002\000@\000\000\128\128\000\000\000@\000\000\000\000\bH\002(\000\130\b\144p\000h\128\020\192\000 \004\001\000@@\000 \160\128\000\000\000@\000\000\000\000\004\000\000\000\000\001\000\000\016\000\000\000\002\000\000\000\000\001\002\000@\000\000\128\128\000\000\000@\000\000\000\000\bH\002(\000\130\b\144p\000h\128\020\192\000 \004\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\0026\016\004X(\223\137\143@\022\003\232\000\000\024\224\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\002\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\018\000\000\004\000\b\000\024\000\000\000 \000\000\000\000\001 \000\000\000\000\128\001\128\000\000\002\000\000\000\000\000\018\000\000\000\000\b\000\b\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\000\016\000 \000\000\000\000@\000\003\000\000`\000\000\162\224\160\000\b\128\000\000\000\000\000\000\000\000\000\004\002\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\003\000\000p\016\000\226\224\128\000\b\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\002\000\000\000\003\000\000p\016\000\226\224\128\000\b\000\000\000\000\000\000\000\001\016\000\000\000\000\016\000\000\016\000\000\000\000\016\000\000\017\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\001\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000@ \001\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\017\000\000\000\000\001\000\000\001\000\000\000\000\001\000\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\004\002\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\000\000`\000\000\162\224\128\000\b\000\000\000\000\000\bX\n(\000\131\002\144p\000h\128\020\192 !\004\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\0000\000\006\000\000\n.\b\000\000\136\000\000\000\000\000\003\000\000`\000\000\162\224\128\000\b\000\000\000\000\000\bX\n(\000\131\002\144p\000h\128\020\192 !\004\133\128\162\128\b0)\007\000\006\136\001L\002\002\016@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\133\128\162\128\b )\007\000\006\136\001L\002\002\016@0\000\006\000\000\n.\n\000\000\136\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000 \000\000\0000\000\006\000\000\n.\n\000\000\136\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\0000\000\006\000\000\n.\b\000\000\128\000\000\000\000\000\133\128\"\128\b )\007\000\006\136\001L\002\002\016HX\n(\000\131\002\144p\000h\128\020\192 !\004\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\0000\000\006\000\000\n.\b\000\000\128\000\000\000\000\000\133\128\"\128\b )\007\000\006\136\001L\002\002\016HX\n(\000\131\002\144p\000h\128\020\192 !\004\000\000\000\000\000\000\000\001\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000#a\000E\130\141\248\152\244\001`>\128\000\001\142\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0002\016D\b\000N\t\155@\014\128`\000\000\016@\003!\004@\128\004\224\152\180\000\232\006\000\000\001\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003!\000@\128\004\224\152\180\000\232\006\000\000\001\004\bH\002(\000\130\000\144`\000h\128\020\192\000 \004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\rIK\184>\131\224\176p?\232\176\150\241o\231\015\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\t\000\t\000>\000\192 \016\015\128\016\130\000\r\130\003\016\000\000\000\000\000\000\000\000\000\000\b\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\016 \004\004\000\b\b\016\000\000\004\000\000\000\000\000\001\002\000@\000\000\128\129\000\000\000@\000\000\000\000\000\016 \004\000\000\b\b\000\000\000\004\000\000\000\000\000\000\000\b\000\000\000\128\001\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\129\000@@\000 \160\128\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\b\000\000\016\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\b\000\000\000\000\000\000\000\000\000\000\000$\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003!\000@\128\004\160\152\180\000\232\006@\000\001\020\rIK\184>\131\224\176p?\232\176\150\241o\231\015\128\000\136\003\224\012\002\001\000\248\001\000 \000\188 0\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\016\004\004\000\002\n\b\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\128\000\001\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\016\004\004\000\002\n\b\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\128\000\001\000\000\016\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\004\004\000\002\n\b\000\000\000\004\000\000\000\000\000@\000\b\000\000\016\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\128\"\128\b \137\007\000\004\136\001L\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\002\000@\000\000\128\129\000\000\000@\000\000\000\000\000\016 \004\000\000\b\b\000\000\000\004\000\000\000\000\000\132\128\"\128\b \137\007\000\004\136\001L\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\128\004\000@\000\000\001\000\000\000\000\000\000\000\000\000\016\000\000\004\000\002\000\016\000\000\000\000\000\000\000\000\001\000\000\000\000\000 \001\000\000\000\000\000\000\000\000\000\016\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\132\128\"\128\b \t\006\000\004\136\001l\000\002\000\000\016\004\004\000\002\n\b\000\000\000\004\000\000\000\000\000\196\128\"\128\b0\t\007\000\004\136\001L\000\002\000\bH\002(\000\130\000\144`\000H\128\020\192\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0000\000@\000\000\000\000\016\000\000\000\000\000\000\000\000\003\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\0000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000 \000\004\000\bH\002(\000\130\000\144`\000H\128\020\192\000 \004\132\128\"\128\b \t\004\000\004\136\001L\000\002\000@0\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\003\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\002\000\000@\000\132\128\"\128\b \t\006\000\004\136\001L\000\002\000HH\002(\000\130\000\144@\000H\128\020\192\000 \004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000 \000\004\000\bH\002(\000\130\000\144`\000H\128\020\192\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\007\223d@\130\2546\128\0010p\007\180q`(4'\225\"\213\138\173\249\156\244\005`?\192\000\007\142\0002\016\004\b\000J\t\139@\014\128d\000\000\016@\016\000\002\000\000\000\000\001\000\000\000\000\000\000\136\017\0026\016\004X(\223\137\143@\022\003\232\000\000\024\224\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\007\223d@\130\2546\128\0010p\007\180q`(4'\225\"\213\138\173\249\156\244\005`?\192\000\007\142\000\016$\004\004\002\n\b\016\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\n\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\160\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\n\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\0000\000\007\001\000\014.\b\000\000\128\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000 \000\000\0000\000\007\001\000\014.\b\000\000\128\000\000\000\000\000\132\128\"\128\b\"\t\007\003\004\136\001l\002\002\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\bH\018(\000\130\000\144`\000H\128\020\192\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\bH\002(\000\130\000\144`\000H\128\020\192\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\bH\002(\000\130 \144p0H\128\022\192 \000\001 \000\000@\000\128\001\128\000\000\002\000\000\000\000\000\018\000\000\000\000\b\000\024\000\000\000 \000\000\000\000\001 \000\000\000\000\128\000\128\000\000\002\000\000\000\000\bH\002(\000\194\000\144p\000H\128\022\192\000`\000\001 \000\000\000\000\128\000\128\000\000\002\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\128\000\132\128\"\128\b \t\007\000\004\136\001L \002\016\000\016\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\bH\002(\000\130\000\144p\000H\128\020\192\000 \000\132\128\"\128\b \t\006\000\004\136\001L\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\128\"\128\b \t\007\000\004\136\001L\000\002\000\bH\002(\000\130\000\144`\000H\128\020\192\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000x\002/\001\130\014>H\000@\128\020\000\000 \000\132\128\"\128\b \001\004\000\004\000\001L\000\002\000\000\016\000\000\004\000\000\000\016\000\000\000\000\000\000\000\128\001\000\000\000@\000\000\001\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\bH\002(\000\130\b\016`\000@\000\020\194\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\bH\002(\000\130\b\016`\000@\000\020\194\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0008\000@\004\000\000\000\016\000\000\000\000\000\000\000\000\001\000\000\000@\000 \001\000\000\000\000\000\000\000\000\000\016\000\000\000\000\002\000\016\000\000\000\000\000\000\000\000\001\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\bH\002(\000\130\000\016`\000@\000\022\192\001 \000\001\000@@\000 \160\128\000\000\000@\000\000\000\000\012H\002(\000\131\000\016p\000@\000\020\192\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0000\000@\000\000\000\000\016\000\000\000\000\000\000\000\000\003\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\002\000\001@\000\129\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\128\"\128\b \129\006\000\004\000\001L \002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\001\000@@\000 \160\128\000\000\000@\000\000\000\000\012H\002(\000\131\000\016p\000@\000\020\192\000 \004\132\128\"\128\b \001\004\000\004\000\001L\000\002\000@0\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\003\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\001\000@@\000 \160\128\000\000\000@\000\000\000\000\012H\002(\000\131\000\016p\000@\000\020\192\000 \004\132\128\"\128\b \001\004\000\004\000\001L\000\002\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\002\000\000@\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\bH\002(\000\130\000\016`\000@\000\020\194\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\004\004\000\002\n\b\000\000\000\004\000\000\000\000\000\196\128\"\128\b0\001\007\000\004\000\001L\000\002\000\bH\002(\000\130\000\016`\000@\000\020\192\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\018\000\000\004\000\b\000\024\000\000\000 \000\000\000\000\001 \000\000\000\000\128\001\128\000\000\002\000\000\000\000\000\018\000\000\000\000\b\000\b\000\000\000 \000\000\000\000\132\128\"\128\012 \001\007\000\004\000\001L\000\006\000\000\136\000\000\004\000\002\000\024\000\000\000\000\000\000\000\000\b\000\000\000@\000 \001\128\000\000\000\000\000\000\000\000\128\000\000\000\000\002\000\024\000\000\000\000\000\000\000\000\b\000\000\000\000\000 \000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\128\000\000\000\000\000\000\000\000 \000\002H\000@\000\000\002\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\002H\000@\000\000\002\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\016\000\004\000 \002\136\b\000\000\000\000\000\000\000\000\132\000\000\128\000\002\129\005\001\000\000\000\004\002\000\000\b@\000\b\000\000(\016@\016\000\000\000@ \000\000\003\000\000p\016\000\226\224\128\000\b\000\000\000\000\000\000\000\000\128\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b@\000\b\000\000 \016@\016\000\000\000@ \000\000\b\000\000\000\000@ \001\000\000\000\000\000\000\000\000\000\128\000\000\000\004\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\003\000\000p\016\000\226\224\128\000\b\000\000\000\000\000\b@\000\b\000\000 \016p\016\000\000\000@ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\128\000\002\000\016\000\000\000\000\000\000\000\000\b\000\000\b\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\0000\000\007\001\000\014.\b\000\000\128\000\000\000\000\000\132\000\000\128\000\002\001\006\001\000\000\000\004\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000@\002\000(\129\128\000\000\000\000\000\000\000\000\016\000\004\000 \002\136\b\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\016\000\000\000\000\000\000\000\128\001\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000 \000\000\000\016\000\004\000 \002\136\b\000\000\000\000\000\000\000\000\003\000\000p\016\000\226\224\128\000\b\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\b\000\000\001\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\000\000p\016\000\226\224\128\000\b\000\000\000\000\000\000\000\000 \000\000\000\000\016\000\000\000\000\000\b\000\000\000\000\002\000\000\000\000\001\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\bH\002\168\000\130 \144p\016H\128\022\192 \004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000 \000\000\000\016\000\004\000 \002\136\b\000\000\000\000\000\000\000\000\132\128*\128\b\"\t\007\001\004\136\001l\002\002\000H@\000\b\000\000 \016p\016\000\000\000@ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0000\000\007\001\000\014.\024\000\000\128\000\000\000\000\000\003\000\000p\016\000\226\224\128\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\002\000\000\000\000\003\000\000p\016\000\226\224\128\000\b\000\000\000\000\000\b@\000\b\000\000 \016p0\000\000\000@ \000\000\132\000\000\128\000\002\001\006\001\000\000\000\004\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b@\000\b\000\000 \016`\016\000\000\000@ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\000\000\128\000\002\001\004\001\000\000\000\004\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\128\"\128\b \t\007\000\004\136\001L\000\002\000HH\002(\000\130\000\144@\000H\128\020\192\000 \004\b\000\000\000\000\000 \001\128\000\000\000\000\000\000\000\000\128\000\000\000\000\002\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\016\000\004\000 \002\136\b\000\000\000\000\000\000\000\000\132\128\"\128\b \t\007\000\004\136\001L\000\002\000HH\002(\000\130\000\144@\000H\128\020\192\000 \004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000 \001\128\000\000\000\000\000\000\000\000\128\000\000\000\000\002\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\0000\000\007\001 \n\174\b\000\000\128\000\000\000\000\000\133\128\170\128\b0!\007\000\004\136\001l\000\006\000@0\000\006\000\000\n.\b\000\000\128\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\0000\000\007\001 \n\174\b\000\000\128\000\000\000\000\000\003\000\000p\016\000\226\224\128\000\b\000\000\000\000\020\000\000\000 \000\000\000\000\016\000\000\000\000\000\b\001\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\0000\000\007\001 \n\174\b\000\000\128\000\000\000\000\000\003\000\000`\000\000\162\224\128\000\b\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\003\000\000p\018\000\170\224\128\000\b\000\000\000\000\000\bX\n\168\000\131\002\016p\000H\128\022\192\000 \004\133\128\170\128\b0!\007\000\004\b\001l\000\002\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\128*\128\b \001\007\000\004\000\001l\000\002\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\bH\002(\000\130\000\016`\000@\000\020\192\000 \004\132\128\"\128\b \001\004\000\004\000\001L\000\002\000@\128\000\000\000\000\002\000\024\000\000\000\000\000\000\000\000\b\000\000\000\000\000 \000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\003\000\000p\018\000\170\224\128\000\b\000\000\000\000\000\bH\002(\000\130\000\016`\000@\000\020\192\000 \004\132\128\"\128\b \001\004\000\004\000\001L\000\002\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\128\"\128\b \001\004\000\004\000\001L\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\128\"\128\b \001\006\000\004\000\001L\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000@@@ \160\129\000\000\000@\000\000\000\000\000\016\004\004\000\002\n\b\016\000\000\004\000\000\000\000\000\001\000@@\000 \160\128\000\000\000@\000\000\000\000\012H\002(\000\131\000\016p\000@\000\020\192\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\bH\002(\000\130\000\016@\000@\000\020\192\000 \004\002\000\000$\128\004\160\001\000 \000\000\000\000\000\b\000 \000\002H\000J\000\000\002\000\000\000\000\000\000\128\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\bH\002(\000\130\000\144`\000H\128\022\192 \004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\bH\002(\000\130\000\144`\000H\128\020\192 \004\132\128\"\128\b \t\004\000\004\136\001L\000\002\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\bH\002(\000\130\000\016@\000@\000\020\192\000 \004\002\000\000$\128\004\160\001\000 \000\000\000\000\000\b\000 \000\002H\000J\000\000\002\000\000\000\000\000\000\128\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\003 \000x\016\000\226\224\160\000\b\002\000@\000\016\0000\000'\001\000\014.\b\000\000\128\000\000\000\001@\000\000\000\000\000@ \000\000\000\000\128\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\133\160\"\128\b \137\006\128\004\136\003L\002\002\000HH\002(\000\194\000\144p\000H\128\020\192 a\004\132\128\"\128\b \t\007\000\004\136\001L\002\002\016@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\128\"\128\b \t\006\000\004\136\001L\002\002\016@\018\000\000\000\000\b\000\b\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\128\"\128\b \001\006\000\004\000\001L\002\002\000HH\002(\000\130\000\016@\000@\000\020\192\000 \004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\bH\002(\000\130\000\144p\000H\128\022\192 \004\001 \000\b\000\000\128\000\160\000\000\002\000@\000\016\000\018\000\000\000\000\b\000\n\000\000\000 \004\000\001\000\000\000\000\000\000@ \000\000\000\000\128\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\bH\002(\000\194\000\144p\000H\128\020\192 a\004\132\128\"\128\b \t\007\000\004\136\001L\002\002\016@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@ \000\000\000\000\128\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\001\000\000\000\000\000\000\000\000\000\136\000\000\004\000\002\000\024\000\000\000\000\000\000\000\000\b\000\000\000\000\000 \001\128\000\000\000\000\000\000\000\000\128\000\000\000\000\002\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\003)\000P\144\004\160\152\172\000\232\006 \000\005\004\b2\024\132~\002\207)\139O\143\144f\b\001\146\203\001\000\000@\002\000\168\128\128\000\000\016\000\000\000\000\b@\000\b\000\000(\016P0\000\000\000@ \000\000\132\000\000\128\000\002\129\004\003\000\000\000\004\002\000\000\b@\000\b\000\000 \016@0\000\000\000@ \000\000\b\000\000\000\000@ \001\000\000\000\000\000\000\000\b\000\000\000\000\000\004\002\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000@ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\002@\000#a\000E\130\141\248\152\244\001`>\128\000\001\142\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\0026\016\004X(\223\137\143@\022\003\232\000\000\024\224\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b@\000\b\000\000 \016`0\000\000\000@ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\004\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\003\000\000p\016\000\226\224\128\000\b\000\000\000\000\000\b@\000\b\000\000 \016p0\000\000\000@ \000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\002@\000#a\000E\130\141\248\152\244\001`>\128\000\001\142\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\0026\016\004X(\223\137\143@\022\003\232\000\000\024\224\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\128\000\002\000\016\000\000\000\000\000\000\000\128\000\000\000\b\000\000 \001\000\000\000\000\000\000\000\000\000\000\000\000\128\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\003)\000P\144\004\160\152\172\000\232\006 \000\005\004\0008\000\007\001\000\014.\b\000\000\128\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\003\000\000p\016\000\226\224\128\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\002\000\000\000\000#a\000E\130\141\248\152\244\001`>\128\000\001\142\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\0026\016\004X(\223\137\143@\022\003\232\000\000\024\224\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\000\000\128\000\002\001\006\003\000\000\000\004\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\b\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\0000\000\007\001\000\014.\b\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\003)\000P\144\004\160\152\172\000\232\006 \000\005\004\0008\000\007\001\000\014.\b\000\000\128\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\003\000\000p\016\000\226\224\128\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\002\000\000\000\000#a\000E\130\141\248\152\244\001`>\128\000\001\142\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\0026\016\004X(\223\137\143@\022\003\232\000\000\024\224\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000#a\000E\130\141\248\153\244\001`>\128\000\001\142\0026\016\004X(\223\137\143@\022\003\232\000\000\024\224\132\000\000\128\000\002\001\006\003\000\000\000\004\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000@\002\000\168\129\128\000\000\016\000\000\000\b\000\016\000\004\000 \n\136\024\000\000\001\000\000\000\000\000\001\000\000@\002\000\168\128\128\000\000\016\000\000\000\000\000\016\000\004\000 \n\136\b\000\000\001\000\000\000\000\000\003!\004@\200\004\224\153\180\000\232\006\000\000\001\004\007\223d@\130\2546\128\0010p\007\180q`(4\003!\004@\128\004\224\153\180\000\232\006\000\000\001\004\0002\016D\b\000N\t\139@\014\128`\000\000\016@\003!\000@\128\004\224\152\180\000\232\006\000\000\001\004\000\000\000\000\000\000\000\000 \000 \000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\016\000\000\000\000\000\000\000\128\001\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000 \000\000\000\016\000\004\000 \n\136\b\000\000\001\000\000\000\000\000\003\000\000p\016\000\226\224\128\000\b\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\b\000\000\001\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003)\000P\144\004\160\153\172\000\232\006\000\000\001\004\0002\144\005\t\000J\t\138\192\014\128`\000\000\016@\003)\000P\144\020\160\152\172\000\232\006\000\000\001\004\000\016\000\004\000 \n\136\b\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000@\016\000\004\000 \n\136\b\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\bZ\146\173A\170*\153\254\240N\128t\192 x\212\133\169*\212\026\162\169\159\239\004\232\007L\002\007\141@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\128*\128\b\"\t\007\003\004\136\001L\002\006\001@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\bH\002\168\000\130 \144p0H\128\020\192 `\020\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\128*\128\b\"\t\007\003\004\136\001L\002\006\001@\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000 \000\000\000\016\000\004\000 \n\136\b\000\000\001\000\000\000\000\000\132\128*\128\b\"\t\007\003\004\136\001L\002\006\001@2\016D\b\000N\t\139@\014\128`\000\000\016@\003!\000@\128\004\224\152\180\000\232\006\000\000\001\004\000\000\000\000\000\000\000\000 \000 \000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\128\000\000\000\000\016\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\000\000p\018\000\170\224\128\000\b\000\000\000\000\000\b\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\000\000\128\000\002\001\007\003\000\000\000\004\002\000\001\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b@\000\b\000\000 \016`0\000\000\000@ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\004\000 \n\136\b\000\000\001\000\000\000\000\000\132\000\000\128\000\002\001\007\003\000\000\000\004\002\000\001\b@\000\b\000\000 \016`0\000\000\000@ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0000\000\007\001\000\014.\024\000\000\128\000\000\000\000\000\003\000\000p\016\000\226\224\128\000\b\000\000\000\000\000\b@\000\b\000\000 \016`0\000\000\000@ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\000\000\128\000\002\001\006\003\000\000\000\004\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b@\000\b\000\000 \016@0\000\000\000@ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\bH\002(\000\130\000\144p\000H\128\020\192\000 \004\003\000\000p\018\000\170\224\128\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\001\000\000@\002\000\168\128\128\000\000\016\000\000\000\000\bH\002(\000\130\000\144p\000H\128\020\192\000 \004\003)\000P\144\004\160\152\172\000\232\006 \000\005\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\128\"\128\b \t\006\000\004\136\001L\000\002\000HH\002(\000\130\000\144@\000H\128\020\192\000 \004\b\000\000\000\000\000 \001\128\000\000\000\000\000\000\000\000\128\000\000\000\000\002\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\003)\000P\144\004\160\152\172\000\232\006 \000\005\004\bH\002(\000\130\000\144`\000H\128\020\192\000 \004\132\128\"\128\b \t\004\000\004\136\001L\000\002\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\128\"\128\b \t\004\000\004\000\001L\000\002\000\0002\016D\012\000N\t\155@\014\128`\000\000\016@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\128\"\128\b \t\004\000\004\136\001L\000\002\000HH\002(\000\130\000\144`\000H\128\020\192\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016 \004\004\000\b\b\016\000\000\004\000\000\000\000\000\001\002\000@\000\000\128\129\000\000\000@\000\000\000\000\000\016 \004\000\000\b\b\000\000\000\004\000\000\000\000\000\132\128\"\128\b \137\007\000\004\136\001L\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\128\"\128\b \t\004\000\004\136\001L\000\002\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\bH\002(\000\130\000\144`\000@\000\020\192\000 \000\132\128\"\128\b \t\004\000\004\000\001L\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\128\"\128\b \t\004\000\006\136\001L\000\002\000@\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\bH\002(\000\130\000\144`\000@\000\020\192\000 \000\132\128\"\128\b \t\004\000\004\000\001L\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\196\128*\128\b0\137\007\000\004\136\001l\000\"\000L\000\000\128\000\001\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\001\000\000\000\000\000\000\140\017\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\000\000p\016\000\226\224\128\000\b\000\000\000\000\000\000\000\000\128\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b@\000\b\000\000 \016@0\000\000\000@ \000\000\128\000\000\000\000\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\131!\000@\128\004\160\152\180\000\232\006@\000\001\020\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\212\148\187\131\232>\011\007\003\254\139\to\022\254p\240\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\018\000\000\128\000\b\000\b\000\000\000 \000\000\001\000\001 \000\000\000\000\128\000\128\000\000\002\000\000\000\016\000\018\000\000\000\000\b\000\b\000\000\000 \000\000\000\000\132\128\"\128\012 \t\007\000\004\136\001l\000\006\016\000\018\000\000\000\000\b\000\b\000\000\000 \000\000\000\000\132\128\"\128\b \t\007\000\004\136\001L\000\002\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\128\"\128\b \t\006\000\004\136\001L\000\002\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\128\"\128\012 \t\007\000\004\136\001l\000\006\016\000\018\000\000\000\000\b\000\b\000\000\000 \000\000\000\000\132\128\"\128\b \t\007\000\004\136\001L\000\002\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\bH\002( \130\000\144`\000H\128\022\192 \004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\bH\002(\000\130\000\144`\000H\128\020\192 \004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\001 \000\b\000\000\128\000\128\000\000\002\000\000\000\016\000\018\000\000\000\000\b\000\b\000\000\000 \000\000\001\000\132\128\"\128\b \t\006\000\004\136\001L\000\002\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\016\000\000\000 \000\000\000\137\000\000\000\004\000\0000\000\007\001\000\014.\b\000\000\128\000\000\000\000\000\000\000\016\000\000\000\000\001\000\000\001\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\016\000\000\000\000\000\003\000\000`\000\000\162\225\128\000\t\000\000@\000\000\0000\000\006\000\000\n.\b\000\000\144\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\016\000\000\000 \000\000\000\t\000\000\000\000\000\0000\000\006\000\000\n.\b\000\000\144\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000 \000\000\0000\000\007\001\000\014.\b\000\000\128\000\000\000\000\000\000\000\b\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\003\000\000p\016\000\226\224\128\000\b\000\000\000\000\000\0000\000\006\000\000\n.\b\000\000\128\000\000\000\000\000\196\128;\128\b2\t\007\003\004\137\001l\002\162\017lH\003\184\000\131 \144p0H\144\022\192*!\022\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0000\000\006\000\000\n.\b\000\000\128\000\000\000\000\000\003\000\000p\016 \226\224\128\000\b\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\002\000\000\000\003\000\000p\016\000\226\224\128\000\b\000\000\000\000\000\000\000\000\128\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\0000\000\007\001\000\014.\b\000\000\128\000\000\000\000\000\003\000\000`\000\000\162\224\128\000\b\000\000\000\000\000\012H\003\184\000\131 \144p0H\144\022\192*!\022\196\128;\128\b2\t\007\003\004\137\001l\002\162\017`\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\0000\000\007\001\000\014.\b\000\000\128\000\000\000\000\000\003\000\000`\000\000\162\224\128\000\b\000\000\000\000\000\012H\003\184\000\131 \144p0H\144\022\192*!\022\196\128;\128\b2\t\007\003\004\137\001l\002\162\017`\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\0000\000\007\001\000\014.\b\000\000\128\000\000\000\000\000\003\000\000`\000\000\162\224\128\000\b\000\000\000\000\000\012H\003\184\000\131 \144p0H\144\022\192*!\022\196\128;\128\b2\t\007\003\004\137\001l\002\162\017`\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000 \000\000\0000\000\007\001\000\014.\b\000\000\128\000\000\000\000\000\000\000\b\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\003\000\000p\016\000\226\224\128\000\b\000\000\000\000\000\0000\000\006\000\000\n.\b\000\000\128\000\000\000\000\000\196\128;\128\b2\t\007\003\004\137\001l\002\162\017lH\003\184\000\131 \144p0H\144\022\192*!\022\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000 \000\000\0000\000\007\001\000\014.\b\000\000\128\000\000\000\000\000\000\000\b\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\003\000\000p\016\000\226\224\128\000\b\000\000\000\000\000\0000\000\006\000\000\n.\b\000\000\128\000\000\000\000\000\196\128;\128\b2\t\007\003\004\137\001l\002\162\017lH\003\184\000\131 \144p0H\144\022\192*!\022\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\002\000\000\000\000\b\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\bH\002(\000\130\000\144p\000H\128\020\192 \004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003 \000x\016\000\226\224\160\000\b\002\000@\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\128\"\128\b \001\006\000\004\000\001L\002\002\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\018\000\000\128\000\b\000\b\000\000\000 \000\000\001\000\001 \000\000\000\000\128\000\128\000\000\002\000\000\000\016\bH\002(\000\130\000\016`\000@\000\020\192\000!\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\bH\002( \130\000\016`\000@\000\022\192! \004\003 \000x\016\000\226\224\160\000\b\002\000@\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\128\"\128\b \001\006\000\004\000\001L\002\002\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\018\000\000\128\000\b\000\b\000\000\000 \000\000\001\000\001 \000\000\000\000\128\000\128\000\000\002\000\000\000\016\bH\002(\000\130\000\016`\000@\000\020\192\000!\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\b\000\000\016\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\128\"\128\b \t\006\000\004\136\001L\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000#a\000E\130\141\248\152\244\001`>\128\000\001\142\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\000#a\000E\130\141\248\152\244\001`>\128\000\001\142\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\128 \128\b \001\004\000\004\000\001H\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001 \000\000\000\000\160\000\128\000\000\002\000\000\000\000\b\000\b\128~\002\193 \000\015\129\016\002\b\001\130\139\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000 \000\000\000\016\000\000\000\000\n\000\000\000\000\000\000\000\000\000\000\128\000\128\007\224,\018\000\000\248\017\000 \128\024(\176\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001 \000\000\000\000\128\000\128\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\000\000p\016\000\226\224\128\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000#a\000E\130\141\248\152\244\001`>\128\000\001\142\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\b \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\002\000@\000\000\128\128\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\001\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000@@\000 \160\128\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\000\000\000\016\000\001\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003!\000@\128\004\160\152\180\000\232\006@\000\001\004\000\000\000\000\000\000\000\000\016\000\000\000\000\128\b\129\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\160\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\016\000\000\000\000\n\000\000\000\000\000\000\000\000\000\000'\225 \197\138\173\249\156\244\005\232?\200\000\003\142\000\016\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\005\161 \128\b \169\004\004\004\136\003H\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\128 \128\b \t\004\000\004\136\001H \002\000\000\016\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\005\161 \128\b \169\004\004\004\136\003H\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\128 \128\b \t\004\000\004\136\001H \002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000H\002\b\000\130\000\144@\000@\000\020\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000'\225 \197\138\173\249\156\244\005\232?\200\000\003\142\002~\018\012X\170\223\153\207@^\131\252\128\0008\224\004\128 \128\b \t\004\000\004\136\001H\000\002\000\000H\002\b\000\130\000\144@\000H\128\020\128\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\128 \128\b \t\006\000\004\136\001H\000\002\000\000H\002\b\000\130\000\144@\000H\128\020\128\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000H\002\b\000\130\000\144`\000H\128\020\128\000 \000\004\128 \128\b \t\004\000\004\136\001H\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000") + (132, "'\225 \197\138\173\249\156\244\005`?\200\000\003\142\0026\016\004\\(\223\137\159@\022\003\232\000\000\024\224}\246D\b/\227h\000\019\007\000{G\022\002\131@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\n\254\182oY\186\255\153\223\242^\135\252B y\224}\246D\b/\227h\000\019\007\000{G\022\002\131@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0026\016\004X(\223\137\159@\022\003\232\000\000\024\224}\246D\b/\227h\000\019\007\000{G\022\002\131B~\018-X\170\223\153\207@V\003\252\000\000x\224\000\000\000\000@\000\160\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\n\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\160\000\000\000\000\000\000\000\000\000\b\000\b\000~\002\193 \000\015\129\016\002\b\001\002\139\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\160\000\000\000\000\000\000\000\000\000\001\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\128\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\128\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\128\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\003\000\000p\016\000\226\224\128\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\bX\011\186\000\131*\144p0h\144\022\194\"!\020\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\000\000p\016 \226\224\128\000\b\000\000\000\000\000\000\016\b\128\000\001\002\000\016\000\000\128\000\000\b@\016\001\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\016\b\130\000\001\n\000\016\000\000\128\000\002\b@\016\001\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\133\128\187\160\b2\169\007\003\006\137\001l\"\162\017@\016\004\004\004\002\n\b\016\000\000\004\000\000\000\000\000\001\000@@\000 \160\129\000\000\000@\000\000\000\000\000\016\004\004\000\002\n\b\000\000\000\004\000\000\000\000\000\196\128*\128\b0\137\007\000\004\136\001l 2\000HH\002\b\000\130\000\016P\000@\000\020@\000 \000\132\128 \128\b \001\004\000\004\000\001D\000\002\000\0000\000\002L\016J\000\016\002\000\000\000\000\000\000\128\003\000\000$\129\004\160\001\000 \000\000\000\000\000\b\0000\000\002H\016J\000\000\002\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\002\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0000\000\002H\000J\000\000\002\000\000\000\000\000\000\128\002\000\000 \000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000$\128\004\000\000\000 \000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000 \128\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\001\000\000\000\000\000\000\132\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\b@\000\001\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\175\235\127\253\155\239\251\255\255'\233\255\204B\135\158@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\016\000\000\000\000\000\b@\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\132\000\000\016\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000$\128\004\000\000\000 \000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\002\000\000\000 \001\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\016\000 \000\000\002\000\016\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\132\128\"\130\b \001\006\000\004\000\001l\002\022\000@\016\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\128\"\128\b \001\006\000\004\000\001l\002\018\000@2\000\007\129\000\014.\n\000\000\128 \004\000\001\000\132\128\"\128\012 \137\007\000\004\136\001L\"\006\016@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003 \000p\016\000\226\224\160\000\b\002\000@\000\016\0000\000\135\001\002\014.\b\000\000\128\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\001\000\136 \000\016\160\001\000\000\b\000\000 \132\001\000\016\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\000\000`\000\000\162\224\128\000\b\000\000\000\000\000\0000\000\007\001\002\014.\b\000\000\128\000\000\000\000\000\197\128\187\128\b2)\007\003\004\137\001l\002\166\017`0\000\006\000\000\014.\b\000\000\128\000\000\000\000\000\003\000\000p\016 \226\224\128\000\b\000\000\000\000\000\0000\000\006\000\000\n.\b\000\000\144\000\004\000\000\000\003\000\000p\016 \226\224\128\000\b\000\000\000\000\000\000\016\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\001\000\136\000\000\016 \001\000\000\b\000\000\000\132\001\0000\000\007\001\002\014.\b\000\000\128\000\000\000\000\000}\246D\b/\227h\000\019\007\000{G\022\002\131B~\018-X\170\223\153\207@V\003\252\000\000x\224\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\000\000$\193\004\160\001\000 \000\000\000\000\000\b\0000\000\002H\016J\000\016\002\000\000\000\000\000\000\128\003\000\000$\129\004\160\000\000 \000\000\000\000\000\b\0000\000\002H\000J\000\000\002\000\000\000\000\000\000\128\001\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\bH\002( \130\000\144`\000H\128\022\192 `\004\132\128\"\128\b \t\006\000\004\136\001l\002\002\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\128\"\128\b \t\006\000\004\136\001L\002\002\000G\223d@\130\2546\128\0010p\007\180q`(4'\225\"\213\138\173\249\156\244\005`?\192\000\007\142\0026\016\004\\(\223\137\159@\022\003\232\000\000\024\224#a\000E\130\141\248\153\244\001`>\128\000\001\142\0026\016\004X(\223\137\143@\022\003\232\000\000\024\224\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\018\016\004@(\n\t\142@\006\000`\000\000\024\192\132\000\000\128@\002\129\005\003\000\000\000\004\002\000\000\b@\000\b\000\000(\016P0\000\000\000@ \000\000\132\000\000\128\000\002\129\004\003\000\000\000\004\002\000\000\0002\016\004\b\000J\t\139@\014\128d\000\000\016@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\006\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000`\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b2\024\132~\002\203)\139O\143\144f\b\001\146\203\128\000\b\000\000\000\000\000\004\000`\004\000\000\000\000\b0\000\000\004\000\000\000\016\000\000\000\000\000\000\000\000\003\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\0000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000@@\000 \160\128\000\000\000@\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\016 \004\000\000\b\b\016\000\000\004\000\000\000\000\000\001\002\000@\000\000\128\128\000\000\000@\000\000\000\000\n~\018\012X\170\223\153\223@V\003\252@\0008\224\167\225 \197\138\173\249\156\244\005`?\196\000\003\142\n~\018,X\170\223\153\207@V\003\252\192\0008\224\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016 \004\004\000\b\b\016\000\000\004\000\000\000\000\128\001\002\000@@\000\128\129\000\000\000@\000\000\000\000\000\016 \004\000\000\b\b\016\000\000\004\000\000\000\000\000\001\002\000@\000\000\128\128\000\000\000@\000\000\000\000\000P \004\000\000\b\b\000\000\000\004\000\000\000\000\000#a\000E\130\141\248\153\244\001`>\128\000\001\142\0026\016\004X(\223\137\143@\022\003\232\000\000\024\224\001\000\000\000@\000 \001\000\000\000\000\000\000\000\000\000\016\000\000\000\000\002\000\016\000\000\000\000\000\000\000\000\001\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\016\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0026\016\004\\(\223\137\159@\022\003\232\000\000\024\224#a\000E\130\141\248\153\244\001`>\128\000\001\142\0026\016\004X(\223\137\143@\022\003\232\000\000\024\224\163a\136G\226\173\250\152\244\249q>\160\128\025\174\184\018\016\132@(\n\t\142@\006\000`\000\000\024\192#a\000E\130\141\248\152\244\001`>\128\000A\142\0026\016\004X(\223\137\143@\022\003\232\000\000\024\224\213\189\187\215\250\190\175\159\239\254\251\015o\182\255\252\2426\016\004X(\223\137\143@\022\003\232\000\000\024\224\003!\000@\128\004\160\152\180\000\232\006\000\000\001\004\0002\016\004\b\000J\t\139@\014\128d\000\004\016@\003!\000@\128\004\160\152\180\000\232\006@\000\001D\0002\016$\b\000J\t\139@\014\128d\000\000\016@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\017\000\000\000\000\000\000\000\000\000 \000\004\000\0000\000\007\001\000\014.\b\000\000\128\000\000\000\000\000\003\000\000p\016\000\226\224\128\000\b\000\000\000\000\020\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\000\000p\016\000\226\224\128\000\b\000\000\000\000\004\0000\000'\001\000\014.\b\000\000\128\000\000\000\001@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0000\000\007\001\000\014.\b\000\000\128\000\000\000\000@\003\000\000p\016\000\226\224\128\000\b\000\000\000\000\020\000\016\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\002\000\000\000\129\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\128\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0000\000\007\001\000\014.\b\000\000\128\000\000\000\000@\001\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\197\128\187\128\b2)\007\003\006\137\001l\002\162\017`\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\196\128;\128\b2\t\007\003\004\137\001l\002\162\017`0\000\007\001\000\014.\b\000\000\128\000\000\000\000\000\003\000\000`\000\000\162\224\128\000\b\000\000\000\000\000\012H\003\184\000\131 \144p0H\144\022\192*!\022\003\000\000p\016\000\226\224\128\000\b\000\000\000\000\000\0000\000\006\000\000\n.\b\000\000\128\000\000\000\000\000\196\128;\128\b2\t\007\003\004\137\001l\002\162\017lH\011\184\000\131 \144p0H\144\022\192*!\022\003\000\000`\000\000\162\224\128\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\012X\011\184\000\131\"\144p0H\144\022\192*!\022\001\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\197\128\187\128\b2)\007\003\006\137\001l\002\162\017`\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\197\128\187\128\b2)\007\003\004\137\001l\002\162\017`0\000\006\000\000\n.\b\000\000\128\000\000\000\000\000\197\128\187\128\b2)\007\003\004\137\001l\002\162\017lH\003\184\000\131 \144p0H\144\022\192*!\022\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0000\000\006\000\000\014.\b\000\000\128\000\000\000\000\000\003\000\000p\016 \226\224\128\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\128\000\000\016\000\000\000\000\002\000\000\000\000\128\000\000\000\000\000\001\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\197\128\187\128\b2)\007\003\006\137\001l\002\162\017`\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\000\000p\016\000\226\224\128\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\001\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\196\128;\128\b2\t\007\003\004\137\001l\002\162\017@\000\000\002\000\000\b\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\001\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\016\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\128\000\000\000\000\000\000 \000\000\000\016\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\001\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0000\000\007\001\000\014.\b\000\000\128\000\000\000\000\000\000\000\b\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\003\000\000p\016\000\226\224\128\000\b\000\000\000\000\000\0000\000\006\000\000\n.\b\000\000\128\000\000\000\000\000\196\128;\128\b2\t\007\003\004\137\001l\002\162\017lH\003\184\000\131 \144p0H\144\022\192*!\022\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\016\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0000\000\007\001\000\014.\b\000\000\128\000\000\000\000\000\000\000\b\000\000\000\000\001\000\000\000\000\000\000\128\000\0000\000\006\000\000\n.\b\000\000\128\000\000\000\000\000\003\000\000p\016 \226\224\128\000\b\000\000\000\000\000\000\000\000\002\000\000\b\000\000\000\000\000\000\002\000\000\000\003\000\000p\016\000\226\224\128\000\b\000\000\000\000\000\000\000\000\128\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\0000\000\007\001\000\014.\b\000\000\128\000\000\000\000\000\003\000\000`\000\000\162\224\128\000\b\000\000\000\000\000\012H\003\184\000\131 \144p0H\144\022\192*!\022\196\128;\128\b2\t\007\003\004\137\001l\002\162\017`\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\0000\000\007\001\000\014.\b\000\000\128\000\000\000\000\000\003\000\000`\000\000\162\224\128\000\b\000\000\000\000\000\012H\003\184\000\131 \144p0H\144\022\192*!\022\196\128;\128\b2\t\007\003\004\137\001l\002\162\017`\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\0000\000\007\001\000\014.\b\000\000\128\000\000\000\000\000\003\000\000`\000\000\162\224\128\000\b\000\000\000\000\000\012H\003\184\000\131 \144p0H\144\022\192*!\022\196\128;\128\b2\t\007\003\004\137\001l\002\162\017`\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\196\128;\128\b2\t\007\003\004\137\001l\002\162\017`\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\000\000p\016\000\226\224\128\000\b\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\004\000\000\001\000\000\001\000\000\000\000\016\0000\000\007\001\000\014.\b\000\000\128\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0000\000\007\001\000\014.\b\000\000\128\000\000\000\000\000\000\000\002\000\000\000\000\001\000\000\001\000\000\000\000\016 0\000\007\001\000\014.\b\000\000\128\000\000\000\000\000\000\000\002\000\000\000\000\001\000\000\001\000\000\000\000\017 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\001\000\000\001\000\000\000\000\017 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\001\000\000\001\000\000\000\000\016\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\003\000\000p\016\000\226\224\128\000\b\000\000\000\000\004\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\016\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\017\000\000\000\000\001\000\000\000\000 \000\000\000\b\000\001\016\000\000\000\000\000\000\000\000\002\000\000\000\000\003!\000@\128\004\160\152\180\000\232\006@\000\001\004\0002\016\004\012\000J\t\154@\014\128`\000\000\016@\003!\000@\128\004\160\153\164\000\232\006\000\000\001\004\0002\016\004\b\000J\t\138@\014\128`\000\000\016@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\t2\145\181\t\001J\t\154\192.\128b\132\014\213P\000\001\000\000\128\004\000\000\004\000\000\004\000\000\001\000\000\000\000\000\000\000\000\000\000@\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\147)\027P\144\020\160\153\188\002\232\006h \237U\000\016\000\000\000\000\b\001\138\000\000\000\000\000\000\000\000\131!\b@\128\004\160\152\180\000\232\006@\000\t\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0002\016\004\012\000J\t\155@\014\128d\000\000\016@\003!\000@\128\004\160\153\180\000\232\006@\000\001\004\0002\016\004\b\000J\t\139@\014\128d\000\000\016@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\144\000\027\000\000\016\000\001\000\002\000\000(\000\204Q\0002\016\004\b\000J\t\139@\014\128d\000\000\016@\144\000\027\000\000\016\000\001\000\002\000\000(\000\204Q\b2\016\004\b\000J\t\139@\014\128d\000\000\016@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\t\000\001\176\000\001\000\000\016\000 \000\002\128\012\197\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\t2\017\180\b\001J\t\155@.\128f\128\012\213P\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\147!\027@\128\020\160\153\180\002\232\006h\000\205U\b:\024\132~\002\203)\139O\143\144f\b\001\146\203\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\003!\000@\128\004\160\152\164\000\232\006\000\000\001\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\b\000\000\000\000\000\004\000`\004\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\128\000\000\000\000\016\000\000\000\000\000\b\193\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\131!\000@\128\004\160\152\180\000\232\006@\000\001\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\144\000\027\000\000\016\000\001\000\002\000\000(\000\204Q\b0\000\007\001\000\014.\b\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\128\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\131!\000@\128\004\160\152\180\000\232\006@\000\001\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\144\000\027\000\000\016\000\001\000\002\000\000(\000\204Q\b\000\000\000\000\000\n\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\b\000\000\000\000\001\000\000\000\000\000\000\136\017\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0002\016$\b\000J\t\139@\014\128d\000\000\016@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\018\000\000\000\000\001\000\000\000\000\000\000\200Q\b2\016$\b\000J\t\139@\014\128d\000\004\020@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\017\000\000\000\000\001\000\000\000\000\000\000\136\017\b\000\001\016\000\000\000\000\000\000\000\000\000\000\000\000\000\131\000\001\000\000\000 \000\000\000\000\000\000\000\000\000\b\000\001\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0002\144\005\t\000J\t\154\192.\128b\000\b\209X\000\000\000\000\000\000\160\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\006\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\002\000\000@\000\003\000\000p\016\000\226\224\128\000\b\000\000\000\000\000\000\000\000\002\000\000\b\000\000\000\000\000\000\002\000\000\000\003\000\000p\016\000\226\224\128\000\b\000\000\000\000\000\000\000\000\128\000\000\000\000\016\000\000\000\002\000\000\000\000\000\000\b\000\000\000\000\001\000\000\000\000 \000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\160\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\006\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\002\000\000\000\000#a\000E\130\141\248\152\244\001`>\128\000\001\142\0002\016D\012\130N\t\155@\014\128d\000\000\016@\001\002\000@@\000\128\129\000\000\000@\000\000\000\b\000\016 \004\004\000\b\b\016\000\000\004\000\000\000\000\000\001\002\000@\000\000\128\129\000\000\000@\000\000\000\000\000\016 \004\000\000\b\b\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\128\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\003\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\016\004\004\000\002\n\b\000\000\000\004\000\000\000\000\000\001\000@@\000 \160\128\000\000\000@\000\000\000\000\000\000\000\000\000\000\b\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\b\000\000\000\000\000\000\000\000\000\000\001\000@@\000 \160\128\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\196\128*\128\b0\t\007\000\004\136\001l\000\"\000@\b\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\003\000\000$\128\004\160\000\000 \000\000\000\000\000\b\000\016\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\016\000\0000\000\007\129\000\014.\b\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0000\000\007\001\000\014.\b\000\000\128\000\000\000\000\000\196\128*\128\b0\t\007\000\004\136\001l\000\"\001@0\000\007\001\000\014.\b\000\000\128\000\000\000\000\000\196\128*\128\b0\t\007\000\004\136\001l\002\"\001LH\002\168\000\131\000\144p\000H\128\022\192\" \004\003\000\000p\016\000\226\224\128\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\002\000\000\000\000\003\000\000p\016\000\226\224\128\000\b\000\000\000\000\000\012H\002\168\000\131\000\144p\000H\128\022\192\" \004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\024\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\001\000\000\001\000@@\000 \160\128\000\000\000@\000\000\000\000\012H\002\168\000\131\000\144p\000H\128\022\192\002 \004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\002\000\000\000\001\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\012H\002\168\000\131\b\144p\000H\128\022\194\003 \004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000@@\000 \160\128\000\000\000@\000\000\000\000\012H\002\168\000\131\000\144p\000H\128\022\192\002 \004\001\000@@\000 \160\128\000\000\000@\000\000\000\000\012H\002\168\000\131\000\144p\000H\128\022\192\002 \004\000\000\000\000\000\000\000\000\000\000\000\000 \016\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\196\128*\128\b0\137\007\000\004\136\001l \"\000@\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\012H\002\168\000\131\b\144p\000H\128\022\194\002 \004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\012H\002\168\000\131\000\144p\000H\128\022\192\002 \004\000\128\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\192\000\b\000\000\016\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\128\000\001\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\b\000\000\000\000\000\000\000\000\000\000\001\002\000@\000\000\128\128\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\196\128*\128\b0\137\007\000\006\136\001l\000&\000@P \132\000\000\b\b\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\128\000\000\b\000\016\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000@@\000 \160\128\000\000\000@\000\000\000\000\012\000\000\128\000\001\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\196\128*\128\b0\137\007\000\006\136\001l &\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\001\000\002\000\000\000\000\000\000\0026\016\004X(\223\137\143@\022\003\232\000\000\024\224#a\000E\130\141\248\152\244\001`>\128\000\001\206\0026\016$X(\223\137\143@\022\003\232\000\000\024\224\000\000\000\000\000\000 \000\000\000\002\000\000\000\000\000\b\000\001\000\000\000\000\000\000\000\000 \002\000\000\000\000#a\000E\130\141\248\152\244\001`>\128\000\001\142\000\018\016\004@(\n\t\142@\006\000`\000\000\024\192\192\000\017\000\000\000\000\000\000\000\152\000 \160$\000\0026\016\004\\(\223\137\159@\022\003\232@\000\024\224#a\000E\130\141\248\153\244\001`>\132\000\001\142\0026\016\004X(\223\137\143@\022\003\232@\000\024\224\001!\000DB\128\160\153\228\000`\006\000\000\001\140\000\018\016\004@(\n\t\158@\006\000`\000\000\024\192\001!\000D\002\128\160\152\228\000`\006\000\000\001\140\000\018\016\004@(\n\t\142@\006\000`\000\000\024\192\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\213\189\187\215\250\190\171\159\239\254\251\015o\182\255\253\240\016\000\000\000\000\n\001\142\000\000\000\000\000\000\000\000\163a\136G\226\173\250\152\244\249q>\160\128\025\174\176\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\163a\bE\130\141\248\152\244\001`>\128\000\001\142\n6\016\132X(\223\137\143@\022\003\232\000\000\024\224\129\002\000@@\000\128\129\000\000\000@\000\000\000\000\000\016 \004\000\000\b\b\016\000\000\004\000\000\000\000\000\001\002\000@\000\000\128\128\000\000\000@\000\000\000\000\000\000\000\000\000\000\b\000\016\000\000\000\000\000\000@\000\129\000@@\000 \160\128\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\b\000\000\016\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\163a\bE\130\141\248\152\244\001`>\128\000\001\142\n6\016\132X(\223\137\143@\022\003\232\000\000\024\224\131!\b@\128\004\160\152\180\000\232\006\000\000\001\004\000\000\000\000\000\000\000\000\016\000\000\000\002\000\b\193\016\003\000\000p\016\000\226\224\128\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\002\000\000\000\000#a\000E\130\141\248\152\244\001`>\128\000\001\142\0026\016\004\\(\223\137\159@\022\003\232\000\000\024\224#a\000E\130\141\248\153\244\001`>\128\000\001\142\0026\016\004X(\223\137\143@\022\003\232\000\000\024\224\003!\000@\192\004\160\153\180\000\232\006@\000\001\020\0002\016\004\b\000J\t\155@\014\128d\000\000\017@\003!\000@\128\004\160\152\180\000\232\006@\000\001\020\0002\016\004\b\000J\t\139@\014\128d\000\000\016@\016\000\000\000\000\016\000\001\000\000\000\000\000\000\136\017\0026\016\004X(\223\137\143@\022\003\232\000\000\024\224\003)\000P\208\004\160\153\172\000\232\006\000\000\001\004\0002\144\005\t\000J\t\154\192\014\128`\000\000\016@\003)\000P\144\004\160\152\172\000\232\006\000\000\001\004\000 \000\000\000\000\n\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0002\016\004\b\000N\t\139@\014\128d\000\000\016@\003!\000@\128\004\160\152\180\000\232\006@\000\001\004\000\000\000\128\000\000\000\000\016\000\000\000\002\000\b\193\016\003\000\000p\016\000\226\224\128\000\b\000\000\000\000\000\000\000\000\002\000\000\b\000\000\000\000\000\000\002\000\000\000\003\000\000p\016\000\226\224\128\000\b\000\000\000\000\000\000\000\000\128\000\000\000\000\016\000\000\000\002\000\000\000\000\000\000\b\000\000\000\000\001\000\000\000\000 \000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b:\024\132~\002\207)\139O\143\144f\b\001\146\203\000\000\000\000\000\000\160\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\016\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\160\000\000\000\000\000\000\000\004\000\000\016\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\0002\144\005\t\001J\t\138\192\014\128`\000\000P@#a\000E\130\141\248\152\244\001`>\128\000\001\142\0002\016\004\012\000J\t\155@\014\128d\000\000\016@\003!\000@\128\004\160\153\180\000\232\006@\000\001\004\0002\016\004\b\000J\t\139@\014\128d\000\000\016@\000\000\000\000\000\000\000\001\000\000\000\000 \000\136\017\0026\016\004X(\223\137\143@\022\003\232\000\000\024\224#a\000E\130\141\248\152\244\001`>\128\000\001\142\000\018\016\004D(\n\t\158@\006\000`\000\000\024\192\001!\000D\002\128\160\153\228\000`\006\000\000\001\140\000\018\016\004@(\n\t\142@\006\000`\000\000\024\192\212\148\187\131\232>\011\007\003\254\155\to\182\254p\240\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\018\016\004@(\n\t\142@\006\000`\000\000\024\192\213\189\187\215\250\190\171\159\239\254\251\015o\182\255\253\240\000\000\000\000\000\b\000\n\000\000\000\000\000\000\000\000#a\000E\130\141\248\152\244\001`>\128\000\001\142\0026\016\004X(\223\137\143@\022\003\232\000\000\024\224\213\189\187\215\250\190\171\159\239\254\251\015o\182\255\252\240\000\000\000\000\000\n\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002@\000\131\000\000p\016\000\226\224\128\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\025\000\000\000\000\001\000\000\000\000 \000\000\000\b0\000\007\001\000\014.\b\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\001\144\000\000\000\000\016\000\000\000\002\000\002\000\000\003\000\000p\016\000\226\224\128\000\b\000\000\000\000\000\b\000\001\144\000\000\000\000\016\000\000\000\002\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\018\016\004@(\n\t\142@\006\000`\000\000\024\192\213\189\187\215\250\190\171\159\239\254\251\015o\182\255\253\240\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\n\000\n\000\000\000\000\000\000\000\000#a\000E\130\141\248\152\244\001`>\128\000\001\142\b\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\212\148\187\131\232>\011\007\003\254\139\to\022\254p\2426\016\004X(\223\137\143@\022\003\232\000\000\024\224\213\189\187\215\250\190\171\159\239\254\251\015o\182\255\252\253IK\184>\131\224\176p?\233\176\150\251o\231\015\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000B6\016\004X(\223\137\143@\022\003\232\000\000\024\224\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\rIK\184>\131\224\176p?\232\176\150\241o\231\015#a\000E\130\141\248\152\244\001`>\128\000\001\142\rIK\184>\131\224\176p?\232\176\150\241o\231\015#a\000E\130\141\248\152\244\001`>\128\000\001\142\rIK\184>\131\224\176p?\232\176\150\241o\231\015\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\r[\219\189\127\171\234\185\254\255\239\176\246\251o\255\207\212\148\187\131\232>\011\007\003\254\155\to\182\254p\2426\016\004X(\223\137\143@\022\003\232\000\000\024\224\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\015\127[\188~\171\255\185\255\127\254\179\254\241o\255\239}\246D\b/\227h\000\019\007\000{G\022\002\131B6\016\004X(\223\137\143@\022\003\232\000\000\024\224\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000#a\000E\130\141\248\152\244\001`>\128\000\001\142\rIK\184>\131\224\176p?\232\176\150\241o\231\015#a\000E\130\141\248\152\244\001`>\128\000\001\142\rIK\184>\131\224\176p?\232\176\150\241o\231\015#a\000E\130\141\248\152\244\001`>\128\000\001\142\rIK\184>\131\224\176p?\232\176\150\241o\231\015#a\000E\130\141\248\152\244\001`>\128\000\001\142\rIK\184>\131\224\176p?\232\176\150\241o\231\015#a\000E\130\141\248\152\244\001`>\128\000\001\142\rIK\184>\131\224\176p?\232\176\150\241o\231\015#a\000E\130\141\248\152\244\001`>\128\000\001\142\rIK\184>\131\224\176p?\232\176\150\241o\231\015#a\000E\130\141\248\152\244\001`>\128\000\001\142\rIK\184>\131\224\176p?\232\176\150\241o\231\015#a\000E\130\141\248\152\244\001`>\128\000\001\142\rIK\184>\131\224\176p?\232\176\150\241o\231\015#a\000E\130\141\248\152\244\001`>\128\000\001\142\rIK\184>\131\224\176p?\232\176\150\241o\231\015#a\000E\130\141\248\152\244\001`>\128\000\001\142\rIK\184>\131\224\176p?\232\176\150\241o\231\015#a\000E\130\141\248\152\244\001`>\128\000\001\142\rIK\184>\131\224\176p?\232\176\150\241o\231\015#a\000E\130\141\248\152\244\001`>\128\000\001\142\rIK\184>\131\224\176p?\232\176\150\241o\231\015#a\000E\130\141\248\152\244\001`>\128\000\001\142\rIK\184>\131\224\176p?\232\176\150\241o\231\015#a\000E\130\141\248\152\244\001`>\128\000\001\142\rIK\184>\131\224\176p?\232\176\150\241o\231\015#a\000E\130\141\248\152\244\001`>\128\000\001\142\rIK\184>\131\224\176p?\232\176\150\241o\231\015#a\000E\130\141\248\152\244\001`>\128\000\001\142\rIK\184>\131\224\176p?\232\176\150\241o\231\015#a\000E\130\141\248\152\244\001`>\128\000\001\142\rIK\184>\131\224\176p?\232\176\150\241o\231\015#a\000E\130\141\248\152\244\001`>\128\000\001\142\rIK\184>\131\224\176p?\232\176\150\241o\231\015#a\000E\130\141\248\152\244\001`>\128\000\001\142\rIK\184>\131\224\176p?\232\176\150\241o\231\015#a\000E\130\141\248\152\244\001`>\128\000\001\142\rIK\184>\131\224\176p?\232\176\150\241o\231\015\003!\000@\128\004\224\153\180\000\232\006\000\000\001\004\0002\016\004\b\000N\t\139@\014\128`\000\000\016@\000\000\000\000\000\000\160\000\000\000\000\000\000\000\000\000\0002\144\005\t\000J\t\138\192\014\128b\000\002P@\131\161\136G\224,\242\152\180\248\249\006`\128\025,\176\000\000\000\000\000\n\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\160\000\000\000\000\000\000\000\004\000\000\016\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\0002\144\005\t\000J\t\138\192\014\128b\000\002P@\131\161\136G\224,\242\152\180\248\249\006`\128\025,\176\000\000\000\000\000\n\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\160\000\000\000\000\000\000\000\004\000\000\016\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\0002\144\005\t\000J\t\138\192\014\128b\000\002P@\003!\000@\128\004\160\152\164\000\232\006\000\000\001\004\b2\024\132~\002\207)\139O\143\144f\b\001\146\203\003!\000@\128\004\160\152\180\000\232\006@\000\001\004\000\000\000\128\000\000\000\000\016\000\000\000\000\000\b\193\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\b\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\016\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\128\000\000\000\000\000\000 \000\000\0000\000\007\001\000\014.\b\000\000\128\000\000\000\000\000\000\000\b\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\b\000\000\000\000\001\000\000\000\000\000\000\140\017\b0\000\007\001\000\014.\b\000\000\128\000\000\000\000\000\000\000\000 \000\000\128\000\000\000\000\000\000 \000\000\0000\000\007\001\000\014.\b\000\000\128\000\000\000\000\000\000\000\b\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0026\016\004X(\223\137\143@\022\003\232\000\000\024\224\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000#a\000E\130\141\248\152\244\001`>\128\000\001\142\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003)\000P\144\004\160\152\172\000\232\006 \000%\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\0002\144\005\t\000J\t\138\192\014\128b\000\002P@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\n\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003!\000@\128\004\160\152\180\000\232\006@\000\001\004\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\128\000\000\000\000\016\000\000\000\000\000\b\193\016\131\000\000p\016\000\226\224\128\000\b\000\000\000\000\000\000\000\000\002\000\000\b\000\000\000\000\000\000\002\000\000\000\003\000\000p\016\000\226\224\128\000\b\000\000\000\000\000\000\000\000\128\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\0002\144\005\t\000J\t\138\192\014\128b\000\002P@#a\000E\130\141\248\152\244\001`>\128\000\001\142\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\0026\016\004X(\223\137\143@\022\003\232\000\000\024\224\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0002\144\005\t\000J\t\138\192\014\128b\000\002P@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b0\000\007\001\000\014.\b\000\000\128\000\000\000\000\000\000\000\000 \000\000\128\000\000\000\000\000\000 \000\000\0000\000\007\001\000\014.\b\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000 \000\000\000\0026\016\004X(\223\137\143@\022\003\232\000\000\024\224\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000#a\000E\130\141\248\152\244\001`>\128\000\001\142\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\bz\146-\t\130J\153\250\192n\128v\192\n\241T\131\128\000p\016\000\226\224\128\000\b\000\000\000\000\000\000\000\000\000\000\000\n\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\0000\000\007\001\000\014.\b\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000 \000\000\000\0026\016\004X(\223\137\143@\022\003\232\000\000\024\224\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\b\000\000\000\000\000\000\002\000\000\000\003\000\000p\016\000\226\224\128\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\002\000\000\000\000#a\000E\130\141\248\152\244\001`>\128\000\001\142\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\0026\016\004X(\223\137\143@\022\003\232\000\000\024\224\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000 \000\140\017\0000\000\007\001\000\014.\b\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000 \000\000\000\0026\016\004X(\223\137\143@\022\003\232\000\000\024\224\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\002\000\b\129\016#a\000E\130\141\248\152\244\001`>\128\000\001\142\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\131!\000@\128\004\160\152\180\000\232\006@\000\001\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000 \000\136\017\b2\016\004\b\000J\t\139@\014\128d\000\000\016@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\002\000\b\129\016\131!\000@\128\004\160\152\180\000\232\006@\000\001\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000 \000\136\017\b\000\000\000\000\000\n\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000 \000\136\017\0002\016\004\b\000J\t\139@\014\128d\000\000\016@\000\000\000\000\000\000\000\001\000\000\000\000 \000\136\017\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\128\"\128\b \t\006\000\006\136\001L\000\002\000HH\002(\000\130 \144`0h\128\020\192 \004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\rIK\184>\131\224\176p?\232\176\150\241o\231\015#a\000E\130\141\248\152\244\001`>\128\000\001\142\b\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000#a\000E\130\141\248\152\244\001`>\128\000\001\142\b\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\160\000\000\000\000\000\000\000\000\b\000\n\000\000\000\000\000\000\000\000#a\000E\130\141\248\152\244\001`>\128\000\001\142\b\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\155\003\224\012\002\001\000\248\001\000 \000\216`:6\016\180X(\223\137\143@\022\003\232\000\004\028\224\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0026\016\004X(\223\137\143@\022\003\232\000\000\024\224\128\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0026\016\004X(\223\137\143@\022\003\232\000\000\024\224\128\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001!\000D\002\128\160\152\228\000`\006\000\000\001\140\r[\219\189\127\171\234\185\254\255\239\176\246\251o\255\223\000\000\000\000\000\000\128\000\160\000\000\000\000\000\000\000\0026\016\004X(\223\137\143@\022\003\232\000\000\024\224\128\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\213\189\187\215\250\190\175\159\239\254\251\015o\182\255\252\2426\016\004X(\223\137\143@\022\003\232\000\000\024\224\212\148\187\131\232>\011\007\003\254\139\to\022\254p\2426\016\004X(\223\137\143@\022\003\232\000\000\024\224\128\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\213\189\187\215\250\190\175\159\239\254\251\015o\182\255\252\2426\016\004X(\223\137\143@\022\003\232\000\000\024\224\212\148\187\131\232>\011\007\003\254\139\to\022\254p\2426\016\004X(\223\137\143@\022\003\232\000\000\024\224\128\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\213\189\187\215\250\190\175\159\239\254\251\015o\182\255\252\2426\016\004X(\223\137\143@\022\003\232\000\000\024\224\212\148\187\131\232>\011\007\003\254\139\to\022\254p\240\016\000\000\000\000\n\000\n\000\000\000\000\000\000\000\000#a\000E\130\141\248\152\244\001`>\128\000\001\142\b\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\213\189\187\215\250\190\175\159\239\254\251\015o\182\255\252\2426\016\004X(\223\137\143@\022\003\232\000\000\024\224\212\148\187\131\232>\011\007\003\254\139\to\022\254p\2426\016\004X(\223\137\143@\022\003\232\000\000\024\224\128\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\r[\219\189\127\171\234\249\254\255\239\176\246\251o\255\207#a\000E\130\141\248\152\244\001`>\128\000\001\142\rIK\184>\131\224\176p?\232\176\150\241o\231\015#a\000E\130\141\248\152\244\001`>\128\000\001\142\b\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\213\189\187\215\250\190\175\159\239\254\251\015o\182\255\252\2426\016\004X(\223\137\143@\022\003\232\000\000\024\224\212\148\187\131\232>\011\007\003\254\139\to\022\254p\240\000\000\000\000\000\000\000\000\000\000\000\000\n\000\000\000\000\000\000\000\000\000\128\000\160\000\000\000\000\000\000\000\0026\016\004X(\223\137\143@\022\003\232\000\000\024\224\128\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\r[\219\189\127\171\234\249\254\255\239\176\246\251o\255\207#a\000E\130\141\248\152\244\001`>\128\000\001\142\rIK\184>\131\224\176p?\232\176\150\241o\231\015#a\000E\130\141\248\152\244\001`>\128\000\001\142\b\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\213\189\187\215\250\190\175\159\239\254\251\015o\182\255\252\2426\016\004X(\223\137\143@\022\003\232\000\000\024\224\212\148\187\131\232>\011\007\003\254\139\to\022\254p\2426\016\004X(\223\137\143@\022\003\232\000\000\024\224\128\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\r[\219\189\127\171\234\249\254\255\239\176\246\251o\255\207#a\000E\130\141\248\152\244\001`>\128\000\001\142\rIK\184>\131\224\176p?\232\176\150\241o\231\015\213\189\187\215\250\190\175\159\239\254\251\015o\182\255\252\2426\016\004X(\223\137\143@\022\003\232\000\000\024\224\212\148\187\131\232>\011\007\003\254\139\to\022\254p\253[\219\189\127\171\234\185\254\255\239\176\246\251o\255\223\213\189\187\215\250\190\171\159\239\254\235\015o\022\255\252\240\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000#a\000E\130\141\248\152\244\001`>\128\000\001\142\b\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0026\016\004X(\223\137\143@\022\003\232\000\000\024\224\128\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000#a\000E\130\141\248\152\244\001`>\128\000\001\142\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\000#a\000E\130\141\248\152\244\001`>\128\000\001\142\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\131\161\136G\224,\242\152\180\248\249\006`\128\025,\176\000\000\000\000\000\n\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\160\000\000\000\000\000\000\000\004\000\000\016\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\0002\144\005\t\001J\t\138\192\014\128`\000\000P@\003\000\000`\000\000\162\224\128\000\b\000\000\000\000\000\000\016\000\000\000\001\002\000\000\000\000\128\000\000\000\000\000#a\000E\130\141\248\152\244\001`>\128\000\001\142\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003)\000P\144\020\160\152\172\000\232\006\000\000\005\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\003)\000P\144\020\160\152\172\000\232\006\000\000\005\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\003)\000P\144\020\160\152\172\000\232\006\000\000\005\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003)\000P\144\020\160\152\172\000\232\006\000\000\005\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\0026\016\004X(\223\137\143@\022\003\232\000\000\024\224\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0026\016\004X(\223\137\143@\022\003\232\002\000\024\224\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\rIK\184>\131\224\176p?\232\176\150\241o\231\015\003!\000@\128\004\160\152\180\000\232\006@\000\001\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000#a\000E\130\141\248\152\244\001`>\128\000\001\142\rIK\184>\131\224\176p?\232\176\150\241o\231\015#a\000E\130\141\248\152\244\001`>\128\000\001\142\rIK\184>\131\224\176p?\232\176\150\241o\231\015\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\002\000\b\129\016#a\000E\130\141\248\152\244\001`>\128\000\001\142\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\1306\016\004X(\223\137\143@\022\003\232\000\000\024\224\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0002\016\004\b\000J\t\139@\014\128`\000\000\016@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\129!\bD\002\128\160\152\228\000`\006\000\000\001\140\b\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000#a\000E\130\141\248\152\244\001`>\128\000A\142\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\t\000\t\000>\000\192 \016\015\128\016\130\000\r\130\003#a\000E\130\141\248\152\244\001`>\128\000\001\142\001\000\b >\000\192 \016\015\128\016\130\000\r\134\003\003!\000@\128\004\224\153\180\000\232\006@\000\001\004\001\000\000 \000\000\000\000\000\000\000\000\128\000\004\004\004\003!\000@\128\004\224\153\180\000\232\006@\000\001\004\0002\016\004\b\000N\t\139@\014\128d\000\000\016@\003!\000@\128\004\160\152\180\000\232\006@\000\001\004\000\000\000\000\000\000\000\000\016\000 \000\000\000\b\129\016#a\000E\130\141\248\152\244\001`>\128\000\001\142\001\000\b >\000\192 \016\015\128\016\130\000\r\134\007\000\000\000\000\000\000\000\001\000\002\000\000 \000\136\017\0026\016\004X(\223\137\143@\022\003\232\000\000\024\224\016\000\130\003\224\012\002\001\000\248\001\b \000\216`r6\016\004X(\223\137\143@\022\003\232\000\000\024\224\000\016\128\003\224\012\002\001\000\248\001\000!\000\152 26\016\004X(\223\137\143@\022\003\232\000\000\024\224\016\000\130\003\224\012\002\001\000\248\001\b \000\216`p\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\b\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000#a\000E\130\141\248\152\244\001`>\128\000\001\206\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\t\000\t\000>\000\192 \016\015\128\016\130\000\t\134\003\016\000\000\000\000\000\000\000\000\000\000\b\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000#a\002E\130\141\248\152\244\001`>\128\000\001\142\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\t\000\t >\000\192 \016\015\128\016\130\000\t\130\003\016\000\002\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001!\000D\002\128\160\152\228\000`\006\000\000\001\140\004\000\000\000\000\000\000\000\000\000\t\128\000\n\000\000\000\001\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\017\000\000\000\000\000\000\000\000\000 \000$\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\017\000\000\000\000\000\000\000\000\000 \000\000\000\b\000\001\016\000\000\000\000\000\000\000\000\000\000\000\000\000\129\000\001\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\152\000\000\160\000\000\000\016\000\000\000\000\n\001\142\000\000\000\000\000\000\000\000\192\000\017\000\000\000\000\000\000\000\152\000 \160$\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\212\148\187\131\232>\011\007\003\254\155\to\182\254p\240\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\145\003\224\012\002\001\000\248\003\000 \000\152 8\000\001\000\000\000\000\000\000\000\000 \000\000\000\000\000\128\000\000\000\000\000 \000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\t\000\t >\000\192 \016\015\128\016\130\000\t\130\003\016\000\002\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\144\000\144\003\224\012\002\001\000\248\001\b \000\152`1\000\000\000\000\000\000\000\000\000\000\000\128\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\002\000@\000\000\128\129\000\000\000@\000\000\000\000\000\016 \004\000\000\b\b\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\128\001\000\002\000\000\000\000\000\000\0026\016\004X(\223\137\143@\022\003\232\000\000\024\224\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0000\000\000\004\000\000\000\016\000\000\000\000\000\000\000\000\003\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\0000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000 \000\004\000\000\016 \004\000\000\b\b\000\000\000\004\000\000\000\000\000\132\128\"\128\b \137\007\000\006\136\001L\000\002\000@\016\004\004\000\002\n\b\000\000\000\004\000\000\000\000\000@\000\000\000\000\016\000\001\000\000\000\000 \000\000\000\000\016 \004\000\000\b\b\000\000\000\004\000\000\000\000\000\132\128\"\128\b \137\007\000\006\136\001L\000\002\000@\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000#a\000E\130\141\248\152\244\001`>\128\000\001\142\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000 \000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001 \000\000@\000\128\001\128\000\000\002\000\000\000\000\000\018\000\000\000\000\b\000\024\000\000\000 \000\000\000\000\001 \000\000\000\000\128\000\128\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\001\000\002\000\000\000\000\004\000\0000\000\006\000\000\n.\n\000\000\136\000\000\000\000\000\000\000\000\000\000@ \000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\0000\000\007\001\000\014.\b\000\000\128\000\000\000\000\000\000\000\000 \000\000\128\000\000\000\000\000\000 \000\000\0000\000\007\001\000\014.\b\000\000\128\000\000\000\000\000\000\000\017\000\000\000\000\001\000\000\001\000\000\000\000\001\000\000\001\016\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\017\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\004\002\000\016\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\016\000\000\000\000\016\000\000\016\000\000\000\000\016\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000@ \000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0000\000\006\000\000\n.\b\000\000\128\000\000\000\000\000\133\128\162\128\b0)\007\000\006\136\001L\002\002\016@\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\000\000`\000\000\162\224\128\000\b\128\000\000\000\000\0000\000\006\000\000\n.\b\000\000\128\000\000\000\000\000\133\128\162\128\b0)\007\000\006\136\001L\002\002\016HX\n(\000\131\002\144p\000h\128\020\192 !\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\bX\n(\000\130\002\144p\000h\128\020\192 !\004\003\000\000`\000\000\162\224\160\000\b\128\000\000\000\000\0000\000\007\001\002\014.\b\000\000\128\000\000\000\000\000\001\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\016\b\128\000\001\002\000\016\000\000\128\000\000\b@\016\000\000\000 \000\000\128\000\000\000\000\000\000 \000\000\0000\000\006\000\000\n.\n\000\000\136\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\0000\000\006\000\000\n.\b\000\000\128\000\000\000\000\000\133\128\"\128\b )\007\000\006\136\001L\002\002\016HX\n(\000\131\002\144p\000h\128\020\192 !\004\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\0000\000\006\000\000\n.\b\000\000\128\000\000\000\000\000\133\128\"\128\b )\007\000\006\136\001L\002\002\016HX\n(\000\131\002\144p\000h\128\020\192 !\004\000\000\000\000\000\000\000\001\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000#a\000E\130\141\248\152\244\001`>\128\000\001\142\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0002\016D\b\000N\t\155@\014\128`\000\000\016@\003!\004@\128\004\224\152\180\000\232\006\000\000\001\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003!\000@\128\004\224\152\180\000\232\006\000\000\001\004\bH\002(\000\130\000\144`\000h\128\020\192\000 \004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\rIK\184>\131\224\176p?\232\176\150\241o\231\015\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\t\000\t\000>\000\192 \016\015\128\016\130\000\r\130\003\016\000\000\000\000\000\000\000\000\000\000\b\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\016 \004\004\000\b\b\016\000\000\004\000\000\000\000\000\001\002\000@\000\000\128\129\000\000\000@\000\000\000\000\000\016 \004\000\000\b\b\000\000\000\004\000\000\000\000\000\000\000\b\000\000\000\128\001\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\129\000@@\000 \160\128\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\b\000\000\016\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\b\000\000\000\000\000\000\000\000\000\000\000$\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003!\000@\128\004\160\152\180\000\232\006@\000\001\020\rIK\184>\131\224\176p?\232\176\150\241o\231\015\128\000\136\003\224\012\002\001\000\248\001\000 \000\188 0\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\016\004\004\000\002\n\b\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\128\000\001\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\016\004\004\000\002\n\b\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\128\000\001\000\000\016\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\004\004\000\002\n\b\000\000\000\004\000\000\000\000\000@\000\b\000\000\016\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\128\"\128\b \137\007\000\004\136\001L\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\002\000@\000\000\128\129\000\000\000@\000\000\000\000\000\016 \004\000\000\b\b\000\000\000\004\000\000\000\000\000\132\128\"\128\b \137\007\000\004\136\001L\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\128\004\000@\000\000\001\000\000\000\000\000\000\000\000\000\016\000\000\004\000\002\000\016\000\000\000\000\000\000\000\000\001\000\000\000\000\000 \001\000\000\000\000\000\000\000\000\000\016\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\132\128\"\128\b \t\006\000\004\136\001l\000\002\000\000\016\004\004\000\002\n\b\000\000\000\004\000\000\000\000\000\196\128\"\128\b0\t\007\000\004\136\001L\000\002\000\bH\002(\000\130\000\144`\000H\128\020\192\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0000\000@\000\000\000\000\016\000\000\000\000\000\000\000\000\003\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\0000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000 \000\004\000\bH\002(\000\130\000\144`\000H\128\020\192\000 \004\132\128\"\128\b \t\004\000\004\136\001L\000\002\000@0\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\003\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\002\000\000@\000\132\128\"\128\b \t\006\000\004\136\001L\000\002\000HH\002(\000\130\000\144@\000H\128\020\192\000 \004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000 \000\004\000\bH\002(\000\130\000\144`\000H\128\020\192\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\007\223d@\130\2546\128\0010p\007\180q`(4'\225\"\213\138\173\249\156\244\005`?\192\000\007\142\0002\016\004\b\000J\t\139@\014\128d\000\000\016@\016\000\002\000\000\000\000\001\000\000\000\000\000\000\136\017\0026\016\004X(\223\137\143@\022\003\232\000\000\024\224\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\007\223d@\130\2546\128\0010p\007\180q`(4'\225\"\213\138\173\249\156\244\005`?\192\000\007\142\000\016$\004\004\002\n\b\016\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\n\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\160\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\n\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\0000\000\007\001\000\014.\b\000\000\128\000\000\000\000\000\000\000\000 \000\000\128\000\000\000\000\000\000 \000\000\0000\000\007\001\000\014.\b\000\000\128\000\000\000\000\000\132\128\"\128\b\"\t\007\003\004\136\001l\002\002\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\bH\018(\000\130\000\144`\000H\128\020\192\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\bH\002(\000\130\000\144`\000H\128\020\192\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\bH\002(\000\130 \144p0H\128\022\192 \000\001 \000\000@\000\128\001\128\000\000\002\000\000\000\000\000\018\000\000\000\000\b\000\024\000\000\000 \000\000\000\000\001 \000\000\000\000\128\000\128\000\000\002\000\000\000\000\bH\002(\000\194\000\144p\000H\128\022\192\000`\000\001 \000\000\000\000\128\000\128\000\000\002\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\128\000\132\128\"\128\b \t\007\000\004\136\001L \002\016\000\016\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\bH\002(\000\130\000\144p\000H\128\020\192\000 \000\132\128\"\128\b \t\006\000\004\136\001L\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\128\"\128\b \t\007\000\004\136\001L\000\002\000\bH\002(\000\130\000\144`\000H\128\020\192\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000x\002/\001\130\014>H\000@\128\020\000\000 \000\132\128\"\128\b \001\004\000\004\000\001L\000\002\000\000\016\000\000\004\000\000\000\016\000\000\000\000\000\000\000\128\001\000\000\000@\000\000\001\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\bH\002(\000\130\b\016`\000@\000\020\194\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\bH\002(\000\130\b\016`\000@\000\020\194\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0008\000@\004\000\000\000\016\000\000\000\000\000\000\000\000\001\000\000\000@\000 \001\000\000\000\000\000\000\000\000\000\016\000\000\000\000\002\000\016\000\000\000\000\000\000\000\000\001\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\bH\002(\000\130\000\016`\000@\000\022\192\001 \000\001\000@@\000 \160\128\000\000\000@\000\000\000\000\012H\002(\000\131\000\016p\000@\000\020\192\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0000\000@\000\000\000\000\016\000\000\000\000\000\000\000\000\003\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\002\000\001@\000\129\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\128\"\128\b \129\006\000\004\000\001L \002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\001\000@@\000 \160\128\000\000\000@\000\000\000\000\012H\002(\000\131\000\016p\000@\000\020\192\000 \004\132\128\"\128\b \001\004\000\004\000\001L\000\002\000@0\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\003\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\001\000@@\000 \160\128\000\000\000@\000\000\000\000\012H\002(\000\131\000\016p\000@\000\020\192\000 \004\132\128\"\128\b \001\004\000\004\000\001L\000\002\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\002\000\000@\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\bH\002(\000\130\000\016`\000@\000\020\194\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\004\004\000\002\n\b\000\000\000\004\000\000\000\000\000\196\128\"\128\b0\001\007\000\004\000\001L\000\002\000\bH\002(\000\130\000\016`\000@\000\020\192\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\018\000\000\004\000\b\000\024\000\000\000 \000\000\000\000\001 \000\000\000\000\128\001\128\000\000\002\000\000\000\000\000\018\000\000\000\000\b\000\b\000\000\000 \000\000\000\000\132\128\"\128\012 \001\007\000\004\000\001L\000\006\000\000\136\000\000\004\000\002\000\024\000\000\000\000\000\000\000\000\b\000\000\000@\000 \001\128\000\000\000\000\000\000\000\000\128\000\000\000\000\002\000\024\000\000\000\000\000\000\000\000\b\000\000\000\000\000 \000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\128\000\000\000\000\000\000\000\000 \000\002H\000@\000\000\002\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\002H\000@\000\000\002\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\016\000\004\000 \002\136\b\000\000\000\000\000\000\000\000\132\000\000\128\000\002\129\005\001\000\000\000\004\002\000\000\b@\000\b\000\000(\016@\016\000\000\000@ \000\000\003\000\000p\016\000\226\224\128\000\b\000\000\000\000\000\000\000\000\128\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b@\000\b\000\000 \016@\016\000\000\000@ \000\000\b\000\000\000\000@ \001\000\000\000\000\000\000\000\000\000\128\000\000\000\004\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\003\000\000p\016\000\226\224\128\000\b\000\000\000\000\000\b@\000\b\000\000 \016p\016\000\000\000@ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\128\000\002\000\016\000\000\000\000\000\000\000\000\b\000\000\b\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\0000\000\007\001\000\014.\b\000\000\128\000\000\000\000\000\132\000\000\128\000\002\001\006\001\000\000\000\004\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000@\002\000(\129\128\000\000\000\000\000\000\000\000\016\000\004\000 \002\136\b\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\016\000\000\000\000\000\000\000\128\001\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000 \000\000\000\016\000\004\000 \002\136\b\000\000\000\000\000\000\000\000\003\000\000p\016\000\226\224\128\000\b\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\b\000\000\001\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\000\000p\016\000\226\224\128\000\b\000\000\000\000\000\000\000\000 \000\000\000\000\016\000\000\000\000\000\b\000\000\000\000\002\000\000\000\000\001\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\bH\002\168\000\130 \144p\016H\128\022\192 \004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000 \000\000\000\016\000\004\000 \002\136\b\000\000\000\000\000\000\000\000\132\128*\128\b\"\t\007\001\004\136\001l\002\002\000H@\000\b\000\000 \016p\016\000\000\000@ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0000\000\007\001\000\014.\024\000\000\128\000\000\000\000\000\003\000\000p\016\000\226\224\128\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\002\000\000\000\000\003\000\000p\016\000\226\224\128\000\b\000\000\000\000\000\b@\000\b\000\000 \016p0\000\000\000@ \000\000\132\000\000\128\000\002\001\006\001\000\000\000\004\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b@\000\b\000\000 \016`\016\000\000\000@ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\000\000\128\000\002\001\004\001\000\000\000\004\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\128\"\128\b \t\007\000\004\136\001L\000\002\000HH\002(\000\130\000\144@\000H\128\020\192\000 \004\b\000\000\000\000\000 \001\128\000\000\000\000\000\000\000\000\128\000\000\000\000\002\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\016\000\004\000 \002\136\b\000\000\000\000\000\000\000\000\132\128\"\128\b \t\007\000\004\136\001L\000\002\000HH\002(\000\130\000\144@\000H\128\020\192\000 \004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000 \001\128\000\000\000\000\000\000\000\000\128\000\000\000\000\002\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\0000\000\007\001 \n\174\b\000\000\128\000\000\000\000\000\133\128\170\128\b0!\007\000\004\136\001l\000\006\000@0\000\006\000\000\n.\b\000\000\128\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\0000\000\007\001 \n\174\b\000\000\128\000\000\000\000\000\003\000\000p\016\000\226\224\128\000\b\000\000\000\000\020\000\000\000 \000\000\000\000\016\000\000\000\000\000\b\001\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\0000\000\007\001 \n\174\b\000\000\128\000\000\000\000\000\003\000\000`\000\000\162\224\128\000\b\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\003\000\000p\018\000\170\224\128\000\b\000\000\000\000\000\bX\n\168\000\131\002\016p\000H\128\022\192\000 \004\133\128\170\128\b0!\007\000\004\b\001l\000\002\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\128*\128\b \001\007\000\004\000\001l\000\002\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\bH\002(\000\130\000\016`\000@\000\020\192\000 \004\132\128\"\128\b \001\004\000\004\000\001L\000\002\000@\128\000\000\000\000\002\000\024\000\000\000\000\000\000\000\000\b\000\000\000\000\000 \000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\003\000\000p\018\000\170\224\128\000\b\000\000\000\000\000\bH\002(\000\130\000\016`\000@\000\020\192\000 \004\132\128\"\128\b \001\004\000\004\000\001L\000\002\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\128\"\128\b \001\004\000\004\000\001L\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\128\"\128\b \001\006\000\004\000\001L\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000@@@ \160\129\000\000\000@\000\000\000\000\000\016\004\004\000\002\n\b\016\000\000\004\000\000\000\000\000\001\000@@\000 \160\128\000\000\000@\000\000\000\000\012H\002(\000\131\000\016p\000@\000\020\192\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\bH\002(\000\130\000\016@\000@\000\020\192\000 \004\002\000\000$\128\004\160\001\000 \000\000\000\000\000\b\000 \000\002H\000J\000\000\002\000\000\000\000\000\000\128\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\bH\002(\000\130\000\144`\000H\128\022\192 `\004\132\128\"\128\b \t\006\000\004\136\001l\002\002\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\128\"\128\b \t\006\000\004\136\001L\002\002\000HH\002(\000\130\000\144@\000H\128\020\192\000 \004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\bH\002(\000\130\000\016@\000@\000\020\192\000 \004\002\000\000$\128\004\160\001\000 \000\000\000\000\000\b\000 \000\002H\000J\000\000\002\000\000\000\000\000\000\128\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\0002\000\007\129\000\014.\n\000\000\128 \004\000\001\000\003\000\002p\016\000\226\224\128\000\b\000\000\000\000\020\000\000\000\000\000\004\002\000\000\000\000\b\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\bZ\002(\000\130\b\144h\000H\1284\192 \004\132\128\"\128\012 \t\007\000\004\136\001L\002\006\016HH\002(\000\130\000\144p\000H\128\020\192 !\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\bH\002(\000\130\000\144`\000H\128\020\192 !\004\001 \000\000\000\000\128\000\128\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\bH\002(\000\130\000\016`\000@\000\020\192 \004\132\128\"\128\b \001\004\000\004\000\001L\000\002\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\128\"\128\b \t\007\000\004\136\001l\002\002\000@\018\000\000\128\000\b\000\n\000\000\000 \004\000\001\000\001 \000\000\000\000\128\000\160\000\000\002\000@\000\016\000\000\000\000\000\004\002\000\000\000\000\b\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\128\"\128\012 \t\007\000\004\136\001L\002\006\016HH\002(\000\130\000\144p\000H\128\020\192 !\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\002\000\000\000\000\b\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\016\000\000\000\000\000\000\000\000\b\128\000\000@\000 \001\128\000\000\000\000\000\000\000\000\128\000\000\000\000\002\000\024\000\000\000\000\000\000\000\000\b\000\000\000\000\000 \000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\0002\144\005\t\000J\t\138\192\014\128b\000\000P@\131!\136G\224,\242\152\180\248\249\006`\128\025,\176\016\000\004\000 \n\136\b\000\000\001\000\000\000\000\000\132\000\000\128\000\002\129\005\003\000\000\000\004\002\000\000\b@\000\b\000\000(\016@0\000\000\000@ \000\000\132\000\000\128\000\002\001\004\003\000\000\000\004\002\000\000\000\128\000\000\000\004\002\000\016\000\000\000\000\000\000\000\128\000\000\000\000\000@ \001\000\000\000\000\000\000\000\000\000\000\000\000\000\004\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000$\000\0026\016\004X(\223\137\143@\022\003\232\000\000\024\224\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000#a\000E\130\141\248\152\244\001`>\128\000\001\142\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\000\000\128\000\002\001\006\003\000\000\000\004\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000@ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\0000\000\007\001\000\014.\b\000\000\128\000\000\000\000\000\132\000\000\128\000\002\001\007\003\000\000\000\004\002\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000$\000\0026\016\004X(\223\137\143@\022\003\232\000\000\024\224\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000#a\000E\130\141\248\152\244\001`>\128\000\001\142\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\b\000\000 \001\000\000\000\000\000\000\000\b\000\000\000\000\128\000\002\000\016\000\000\000\000\000\000\000\000\000\000\000\b\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\0002\144\005\t\000J\t\138\192\014\128b\000\000P@\003\128\000p\016\000\226\224\128\000\b\000\000\000\000\000\000\000\000\000\000\000\n\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\0000\000\007\001\000\014.\b\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000 \000\000\000\0026\016\004X(\223\137\143@\022\003\232\000\000\024\224\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000#a\000E\130\141\248\152\244\001`>\128\000\001\142\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b@\000\b\000\000 \016`0\000\000\000@ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\128\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\003\000\000p\016\000\226\224\128\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\0002\144\005\t\000J\t\138\192\014\128b\000\000P@\003\128\000p\016\000\226\224\128\000\b\000\000\000\000\000\000\000\000\000\000\000\n\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\0000\000\007\001\000\014.\b\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000 \000\000\000\0026\016\004X(\223\137\143@\022\003\232\000\000\024\224\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000#a\000E\130\141\248\152\244\001`>\128\000\001\142\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0026\016\004X(\223\137\159@\022\003\232\000\000\024\224#a\000E\130\141\248\152\244\001`>\128\000\001\142\b@\000\b\000\000 \016`0\000\000\000@ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\004\000 \n\136\024\000\000\001\000\000\000\000\128\001\000\000@\002\000\168\129\128\000\000\016\000\000\000\000\000\016\000\004\000 \n\136\b\000\000\001\000\000\000\000\000\001\000\000@\002\000\168\128\128\000\000\016\000\000\000\000\0002\016D\012\128N\t\155@\014\128`\000\000\016@}\246D\b/\227h\000\019\007\000{G\022\002\131@2\016D\b\000N\t\155@\014\128`\000\000\016@\003!\004@\128\004\224\152\180\000\232\006\000\000\001\004\0002\016\004\b\000N\t\139@\014\128`\000\000\016@\000\000\000\000\000\000\000\002\000\002\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\001\000\000\000\000\000\000\000\b\000\016\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\002\000\000\000\001\000\000@\002\000\168\128\128\000\000\016\000\000\000\000\0000\000\007\001\000\014.\b\000\000\128\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\128\000\000\016\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0002\144\005\t\000J\t\154\192\014\128`\000\000\016@\003)\000P\144\004\160\152\172\000\232\006\000\000\001\004\0002\144\005\t\001J\t\138\192\014\128`\000\000\016@\001\000\000@\002\000\168\128\128\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\004\001\000\000@\002\000\168\128\128\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\133\169*\212\026\162\169\159\239\004\232\007L\002\007\141HZ\146\173A\170*\153\254\240N\128t\192 x\212\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\bH\002\168\000\130 \144p0H\128\020\192 `\020\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\128*\128\b\"\t\007\003\004\136\001L\002\006\001@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\bH\002\168\000\130 \144p0H\128\020\192 `\020\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\002\000\000\000\001\000\000@\002\000\168\128\128\000\000\016\000\000\000\000\bH\002\168\000\130 \144p0H\128\020\192 `\020\003!\004@\128\004\224\152\180\000\232\006\000\000\001\004\0002\016\004\b\000N\t\139@\014\128`\000\000\016@\000\000\000\000\000\000\000\002\000\002\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\b\000\000\000\000\001\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0000\000\007\001 \n\174\b\000\000\128\000\000\000\000\000\128\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b@\000\b\000\000 \016p0\000\000\000@ \000\016\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\000\000\128\000\002\001\006\003\000\000\000\004\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000@\002\000\168\128\128\000\000\016\000\000\000\000\b@\000\b\000\000 \016p0\000\000\000@ \000\016\132\000\000\128\000\002\001\006\003\000\000\000\004\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\000\000p\016\000\226\225\128\000\b\000\000\000\000\000\0000\000\007\001\000\014.\b\000\000\128\000\000\000\000\000\132\000\000\128\000\002\001\006\003\000\000\000\004\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b@\000\b\000\000 \016`0\000\000\000@ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\000\000\128\000\002\001\004\003\000\000\000\004\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\128\"\128\b \t\007\000\004\136\001L\000\002\000@0\000\007\001 \n\174\b\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\016\000\004\000 \n\136\b\000\000\001\000\000\000\000\000\132\128\"\128\b \t\007\000\004\136\001L\000\002\000@2\144\005\t\000J\t\138\192\014\128b\000\000P@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\bH\002(\000\130\000\144`\000H\128\020\192\000 \004\132\128\"\128\b \t\004\000\004\136\001L\000\002\000@\128\000\000\000\000\002\000\024\000\000\000\000\000\000\000\000\b\000\000\000\000\000 \000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\0002\144\005\t\000J\t\138\192\014\128b\000\000P@\132\128\"\128\b \t\006\000\004\136\001L\000\002\000HH\002(\000\130\000\144@\000H\128\020\192\000 \004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\bH\002(\000\130\000\144@\000@\000\020\192\000 \000\003!\004@\192\004\224\153\180\000\232\006\000\000\001\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\bH\002(\000\130\000\144@\000H\128\020\192\000 \004\132\128\"\128\b \t\006\000\004\136\001L\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\002\000@@\000\128\129\000\000\000@\000\000\000\000\000\016 \004\000\000\b\b\016\000\000\004\000\000\000\000\000\001\002\000@\000\000\128\128\000\000\000@\000\000\000\000\bH\002(\000\130\b\144p\000H\128\020\192\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\bH\002(\000\130\000\144@\000H\128\020\192\000 \004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\128\"\128\b \t\006\000\004\000\001L\000\002\000\bH\002(\000\130\000\144@\000@\000\020\192\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\bH\002(\000\130\000\144@\000h\128\020\192\000 \004\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\128\"\128\b \t\006\000\004\000\001L\000\002\000\bH\002(\000\130\000\144@\000@\000\020\192\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\012H\002\168\000\131\b\144p\000H\128\022\192\002 \004\192\000\b\000\000\016\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\016\000\000\000\000\000\b\193\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0000\000\007\001\000\014.\b\000\000\128\000\000\000\000\000\000\000\b\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\000\000\128\000\002\001\004\003\000\000\000\004\002\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b2\016\004\b\000J\t\139@\014\128d\000\000\017@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\rIK\184>\131\224\176p?\232\176\150\241o\231\015\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\001 \000\b\000\000\128\000\128\000\000\002\000\000\000\016\000\018\000\000\000\000\b\000\b\000\000\000 \000\000\001\000\001 \000\000\000\000\128\000\128\000\000\002\000\000\000\000\bH\002(\000\194\000\144p\000H\128\022\192\000a\000\001 \000\000\000\000\128\000\128\000\000\002\000\000\000\000\bH\002(\000\130\000\144p\000H\128\020\192\000!\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\bH\002(\000\130\000\144`\000H\128\020\192\000!\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\bH\002(\000\194\000\144p\000H\128\022\192\000a\000\001 \000\000\000\000\128\000\128\000\000\002\000\000\000\000\bH\002(\000\130\000\144p\000H\128\020\192\000!\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\132\128\"\130\b \t\006\000\004\136\001l\002\006\000HH\002(\000\130\000\144`\000H\128\022\192 \004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\bH\002(\000\130\000\144`\000H\128\020\192 \004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\001 \000\b\000\000\128\000\128\000\000\002\000\000\000\016\000\018\000\000\000\000\b\000\b\000\000\000 \000\000\001\000\132\128\"\128\b \t\006\000\004\136\001L\000\002\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\128\000\000\000\000\000\000 \000\000\0000\000\007\001\000\014.\b\000\000\128\000\000\000\000\000\000\000\b\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\003\000\000p\016\000\226\224\128\000\b\000\000\000\000\000\0000\000\006\000\000\n.\b\000\000\128\000\000\000\000\000\196\128;\128\b2\t\007\003\004\137\001l\002\162\017lH\003\184\000\131 \144p0H\144\022\192*!\022\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\001\000\000\000\002\000\000\000\b\144\000\000\000@\000\003\000\000p\016\000\226\224\128\000\b\000\000\000\000\000\000\000\001\000\000\000\000\000\016\000\000\016\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\001\000\000\000\000\000\0000\000\006\000\000\n.\024\000\000\144\000\004\000\000\000\003\000\000`\000\000\162\224\128\000\t\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\001\000\000\000\002\000\000\000\000\144\000\000\000\000\000\003\000\000`\000\000\162\224\128\000\t\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\b\000\000\000\000\000\000\002\000\000\000\003\000\000p\016\000\226\224\128\000\b\000\000\000\000\000\000\000\000\128\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\0000\000\007\001\000\014.\b\000\000\128\000\000\000\000\000\003\000\000`\000\000\162\224\128\000\b\000\000\000\000\000\012H\003\184\000\131 \144p0H\144\022\192*!\022\196\128;\128\b2\t\007\003\004\137\001l\002\162\017`\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\000\000`\000\000\162\224\128\000\b\000\000\000\000\000\0000\000\007\001\002\014.\b\000\000\128\000\000\000\000\000\000\000\000 \000\000\128\000\000\000\000\000\000 \000\000\0000\000\007\001\000\014.\b\000\000\128\000\000\000\000\000\000\000\b\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\003\000\000p\016\000\226\224\128\000\b\000\000\000\000\000\0000\000\006\000\000\n.\b\000\000\128\000\000\000\000\000\196\128;\128\b2\t\007\003\004\137\001l\002\162\017lH\003\184\000\131 \144p0H\144\022\192*!\022\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\003\000\000p\016\000\226\224\128\000\b\000\000\000\000\000\0000\000\006\000\000\n.\b\000\000\128\000\000\000\000\000\196\128;\128\b2\t\007\003\004\137\001l\002\162\017lH\003\184\000\131 \144p0H\144\022\192*!\022\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\003\000\000p\016\000\226\224\128\000\b\000\000\000\000\000\0000\000\006\000\000\n.\b\000\000\128\000\000\000\000\000\196\128;\128\b2\t\007\003\004\137\001l\002\162\017lH\003\184\000\131 \144p0H\144\022\192*!\022\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\b\000\000\000\000\000\000\002\000\000\000\003\000\000p\016\000\226\224\128\000\b\000\000\000\000\000\000\000\000\128\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\0000\000\007\001\000\014.\b\000\000\128\000\000\000\000\000\003\000\000`\000\000\162\224\128\000\b\000\000\000\000\000\012H\003\184\000\131 \144p0H\144\022\192*!\022\196\128;\128\b2\t\007\003\004\137\001l\002\162\017`\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\002\000\000\000\000\b\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\bH\002(\000\130\000\144p\000H\128\020\192 \004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003 \000x\016\000\226\224\160\000\b\002\000@\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\128\"\128\b \001\006\000\004\000\001L\002\002\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\018\000\000\128\000\b\000\b\000\000\000 \000\000\001\000\001 \000\000\000\000\128\000\128\000\000\002\000\000\000\016\bH\002(\000\130\000\016`\000@\000\020\192\000!\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\bH\002( \130\000\016`\000@\000\022\192!`\004\132\128\"\128\b \001\006\000\004\000\001l\002\018\000@2\000\007\129\000\014.\n\000\000\128 \004\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\bH\002(\000\130\000\016`\000@\000\020\192 \004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\001 \000\b\000\000\128\000\128\000\000\002\000\000\000\016\000\018\000\000\000\000\b\000\b\000\000\000 \000\000\001\000\132\128\"\128\b \001\006\000\004\000\001L\000\002\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\128\000\001\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\bH\002(\000\130\000\144`\000H\128\020\192\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0026\016\004X(\223\137\143@\022\003\232\000\000\024\224\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\0026\016\004X(\223\137\143@\022\003\232\000\000\024\224\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000H\002\b\000\130\000\016@\000@\000\020\128\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\018\000\000\000\000\n\000\b\000\000\000 \000\000\000\000\128\000\136\007\224,\018\000\000\248\017\000 \128\024(\176\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\002\000\000\000\001\000\000\000\000\000\160\000\000\000\000\000\000\000\000\000\b\000\b\000~\002\193 \000\015\129\016\002\b\001\130\139\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\018\000\000\000\000\b\000\b\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0000\000\007\001\000\014.\b\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0026\016\004X(\223\137\143@\022\003\232\000\000\024\224\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016 \004\000\000\b\b\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\016\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\004\004\000\002\n\b\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\000\000\001\000\000\016\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0002\016\004\b\000J\t\139@\014\128d\000\000\016@\000\000\000\000\000\000\000\001\000\000\000\000\b\000\136\017\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\n\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\001\000\000\000\000\000\160\000\000\000\000\000\000\000\000\000\002~\018\012X\170\223\153\207@^\131\252\128\0008\224\001\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000Z\018\b\000\130\n\144@@H\1284\128\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000H\002\b\000\130\000\144@\000H\128\020\130\000 \000\001\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000Z\018\b\000\130\n\144@@H\1284\128\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000H\002\b\000\130\000\144@\000H\128\020\130\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\128 \128\b \t\004\000\004\000\001@\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002~\018\012X\170\223\153\207@^\131\252\128\0008\224'\225 \197\138\173\249\156\244\005\232?\200\000\003\142\000H\002\b\000\130\000\144@\000H\128\020\128\000 \000\004\128 \128\b \t\004\000\004\136\001H\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000H\002\b\000\130\000\144`\000H\128\020\128\000 \000\004\128 \128\b \t\004\000\004\136\001H\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\128 \128\b \t\006\000\004\136\001H\000\002\000\000H\002\b\000\130\000\144@\000H\128\020\128\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000") and start = 15 and action = - ((16, "H\nT\158R\176\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\022\168R\176\000\000\000\000\021\168R\176H\n\025j\000\172\000I\129\194\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0007\000L\000\141\000\000\000\158\001\178\000\000\000\238\001\006\003\194\000\000\002T\002\022\003\200\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\166\000\000\000\000\000\000\001\208\178\222\000\000\000\000\000\000\003\022\000\000\000\000\\\020\002\184\002\180\000\000\000\000\178\222Tx\021\168F\136}\230\021\168\128tT6\021\168R\250\000\000\020\242\000\000R\250\022H\000\000K\138\000\000\023B\000\000\000\000\005\186\000\000\003\022\000\000\020\148\003\022\000\000\000\000\000\000\021\168\000\000\000\000\002\248\000\000K\138\000\000\000\000\005\186\021D\004.\166\192\174n\144b\000\000\003\022\000\000\175\248\178\222\000\000h\212\178\222]\014g\004\178\222S\136\181\208R\176H\n\000\000\000\000T6\021\168]\206R\250\004|\166\192\000\000\172ZR\176H\nT\158\021\168\000\000\000\000\017\136Tv\021\168ELX\134\000\000\024(\000\000\000\000\000\000\000\000\024V\000\000\000\000\000\000\000\000L\192\0268\022\128\001\248\000\164\000\000\000\000\004J\000\000F\136\004\132\004t\021\168\029\214\021\168H\nH\n\000\000\000\000\000\000I\200I\200\021\168\029\214GL\021\168\000\000\025D\021D\006.\000\000\004X\007F\000\000\000\000\000\000\000\000\000\000\000\000\000\000T\158\021\168\000\000F\014\157\234H\n\000\000\001\b\000\000X\134\144\230\157R\144\230\000\000\006.\000\000\002\150\000\000\000\000\0310[\134\179.\000\000[\134\179.\000\000[\134\148\252\0056\000\000\003\"\005\142\000\000\019.\000\000\005l\000\000\000\000\tF\000\000\000\000\000\000[\134\003\022\000\000^\020\000\000e\002\183\218h\212e\234\184*h\212f\210d\026Z\166\000\000\000\000a&\0056\000\000_\026\000\000b,Z\166c2g\186\000\000g\236\178\222\000\000\003\162\0056\0056\000\000` \000\000[\134\000\000\000`\000\000{\170\0064\003\022\000\000\006\014\003\022\000\000[\134\011<\006\138\184zh\212h\162i\138\000\000\005\b\000\000[\134\006\016i\188\178\222\007<[\134\012D\b\012\184\202h\212jrkZ\000\000\bp\185\026h\212lBm*\000\000\b\200\185jh\212n\018n\250\000\000o\226\000\000\000\000\000\000\000%\000\000[\134\000\000\001\016\182 \000\000[\134\0068[\134\030\154\000\000\031\162\000\000\nX\002\150\000\000\b\134[\134\005\172\000\000\n,\000\000\002\148\000\000\000\000\006\b\000\000\000\000\000\000\003P\000\170X\134T\158\021\168X\134\000\000\0056\000\000\000\000\000\000\0056\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000S\170\022\254\001\142\005\200\000\000\000\000\000\000\002\020\0276\144\230\000\000\000\000\147\020\021\168X\134\000\000\000\000_\006X\134`\012\158|\000\000a\018\000\000X\134\000\000\000\000Y\130Q\170\t6\023\028\000\000\t\166X\134\000\000\000\000\000\000 h\t\190\000\000E\214\000\000\000\000\159&\000\000b\024\148\252\000\000\017|\000\000\000\000\159\208\000\000c\220\007\138\000\000\000\000\000\000\000\000\t\224\000\000H\180\000\000\000\000\157R\000\000\001\186\000\000\000\000]h\130\128\000\000\000\000E>\bx\023l\t\128\000\000\000\000\000\000\000\000\005\220\000\000\000\000\000\000\011\144\000\000\000\000|t\001\254\n\158\t\194\024\188\178\222\012d[\134\017\014\019\030\n:\000\000\nJ\000\000\000\000\003\006\012\174\t\194\b\140\000\000T\158L\220I\200\021\168\029\214\000\172\004t\022h\000\000\t\184F\136F\136\000\172\004t\004tF\136\000\000\150\n\006\134R\250\006.\007\142\182p\000\000[\134\145\130[\134\130\234\146\014[\134\t\144[\134\146\154\000\000\014\n\rf\b\026F\136\150\150\000\000\b2\001X~\b\000\000\000\000\000\000\000\000F\136\151\"F\136\151\174\002f\004.\131\186\006\150\004.\132d\000\000\152:\006\134\000\000\000\000\000\000\b4\000\000\000\000\012T\000\000\007\140\029\214\000\000~\178H&\000\000\022\242\000\000\000\000F\136\t<\000\000\000\000\000\000\000\000}<\000\000\012\192\000\000H\nK\234\005&\026\176\000\000\023\166j\246T\158\021\168J\240T\152\021\168\017\136\017\136\000\000\000\000\000\000\000\000\000\000\000\000\002\016\024\174G\012\000\000UbV&M\216\021\168\029\214\027\018F\136\000\000\r\\\000\000V\234W\174\160z\027P[\134\n\222\000\000T\158\021\168\000\000\147\020\021\168\130\128X\134\025\234\000\000T\158\021\168\152\250\011\170\000\000X\134X\134\025@\178\222\rl[\134\020&\027\006\b\140\n\198\000\000\b\140\n\232\000\000\000\000\000\000L\192\t6\011\000\133(\000\000\147\020\021\168X\134\028X\000\000\000\000T\152\021\168\017\136\023\166\n\202\000\000\017\136\003\024\003\234\000\000\000\000\017\136\b\144\011Z\004\014\179~\000\000 \030\181\208\000\000\027\210[\134 \212\012l\000\000\000\000\012\154\000\000\017\136\004 \r\b\000\000\023*\000\000\007\214\000\000\000\000\027\198\000\000\018\144\024\174\000\000\000\000\000\000\000\000\nh\000\000\000\000\028\206\000\000\029\214\000\000\030\222\000\000\019\152\025\182\000\000\000\000\000\000R\176\000\000\000\000\000\000\000\000\031\230\000\000 \238\000\000!\246\000\000\"\254\000\000$\006\000\000%\014\000\000&\022\000\000'\030\000\000(&\000\000).\000\000*6\000\000+>\000\000,F\000\000-N\000\000.V\000\000/^\000\0000f\000\0001n\000\0002v\000\0003~\021\168\144\230\000I\127rM\188\t6\rR\1280\169`Q\170X\134\028X\000\000\r\134\003\022\000\000\014N[\134\014P\000\000O\146\182\202\014t[\134\016\006\000\000\000\000\000\000\000\000\rB\000\000\000\000\000\000\000\000\000\000\1280\000\000X\134\r\244\000\000P\140\182\202\015V[\134\016\194\000\000\178\222\015|[\134\n\226\000\000\000\000\r\224\000\000\000\000\000\000N\186O\178\t6\014\188\128\238\000\000\000\000\0142\000\000\000\000\000\000\128\238\000\000\000\000\178\222\t6\014F[\134\011\234\000\000\000\000\016^[\134\012\242\000\000\000\000\014\168\000\000\000\000\000\000\029`[\134\r\176\000\000\000\000 x\000\000\000\000\160\216\000\000!\"\161\130\000\000!\128\162,\000\000\"*\007\232\000\000\000\000\000\000\000\000\"\136X\134#2\000\000\162\150\162\150\000\000\000\000\000\0004\134\000\000\014\146\000\000\000\000\000\000\004\208\000\000\000\000\0118\004\242\000\000\b\234\000\000\000\000\129\\J\240\000\000\000\000\015\128\000\000\000\000\000\000\007l\000\000\000\000\000\000\017\136\005(\005\250\000\000\011\246\000\000\0060\000\0005\142\000\000\015\154\000\000\0078\000\0006\150\000\000\012\002\000\000\b@\000\0007\158\026\164\000\000\014\018\tH\000\0008\166\000\000\016\136\nP\000\0009\174\000\000\012T\011X\000\000:\182\014\002\007\002\000\000\014\154\012`\000\000;\190\000\000\016\162\rh\000\000<\198\000\000\012\230\014p\000\000=\206\015x\000\000>\214\016\128\020\160\000\000\000\000\000\000\015\014\000\000\000\000\017\144\000\000\000\000\015 \000\000\000\000\b\140\000\000\000\000\000\000\015\018\000\000\015b\000\000\000\000P\174\t6\016.\133(Z\166\029f\000\000\000\000\133(\000\000\000\000\000\000\133(\000\000\016\030\000\000\000\000\000\000\000\000\000\000\000\000?\222X\134\000\000\000\000\016\184\000\000@\230\000\000A\238\000\000#\144\000\000\000\000\003\166\000\000\000\000X\134\000\000\000\000\163<\015\162\000\000\000\000ZH\000\000\016\184\000\000\000\000\129\\\000\000\147\130\021\168I\168\021\168\130\128X\134\021\238\000\000\133\150\029\002\000\000\134\020\000\000\134\168\000\000\134\168\000\000\000\000\000\000\024T\000\000\000\000\000\000K\234\000\000\012\024\000\000\000\000\129\\\024\002\000\000[ \000\000\017\148\000\000\000\000\129\\\b>\000\000\004\230\015|\000\000\000\000\023\166F0\006.\000\000I\224\000\000\004X\n\136\031R\000\000\000\000\015\254\000\000\000\000\002\014\026\190l\198\000\000\026\190\000\000\018:\000\000\000\000\017\006\000\000\000\000\133\150\tL\004\230\000\000\000\000\017*\000\000\000\000\018\152\000\000\000\000\129\\\012^\000\000\000\000\016>\000\000\000\000\129\\\026T\000\000\000\000\021\168\029\214\r\200\000\000\000\000\000(\001\248\000\164\b.\029\214\167jF\136\002p\029\214\168\020\016X\000\000\000\000\b.\000\000\025J\021\168\024B\000\000\t\202\0170\000\000\017\174\022\240e4\001\024\000\000\000\000\017\134\017$\178\222\017\018[\134\025<\r\160\017\132\021J\000\000\028T\017\248\000\000\022J\000\000\000\000Z\166\135N\018\028Z\166Z\166\136\004\136\186\000\000\148(f\028\017\030e4\017\242Z\166\153|\137p\018\nZ\166\154&\138&\002p\017\202\000\000\000\000\000\000\021\168\163\154\000\000\144\230\162\150\000\000\000\000\018\\\000\000\b\140\018\138\000\000\000\000\000\000B\246\000\000\000\000\017\252\000\000\000\000\129\\\025\026\000\000\000\000M\216\021\168\029\214\030d\000\000G\134\000\000\014d\000\000\006$\000\000\000\000\018\186\000\000\0198\130\128C\254\147\130\000\000\000\000Q(\000\000\015l\000\000R$\000\000\000\252\000\000F\136\016t\000\000\162\150\000\000\021\168\029\214\162\150\000\000\000(\025D\021D\003\022\174\184F\136\169\252\162\150\000\000\007 \t\240\000\164\b.\162\150\176z\001\248\000\164\b.\162\150\176z\000\000\000\000\b.\162\150\000\000R\176H\nX\134\029\002\000\000\000\000R\176H\nml\000\000\025j\000\172\000I\018V\178\222\018\026[\134\164H\018\158\019J\175\030\000\000\162\150\000\000\164\206\025J\021\168\024B\168z%\014\018\n\170b\006\150\018\164\021\168\162\150\000\000\021\168\162\150\000\000\148\252\181.\025D\000(\001\248\004.\178:\000\000\001\248\004.\178:\000\000\028\\\025D\021D\003\022|\214F\136\162\150\000\000\007 \015\024\004v\012\198\000\000\178:\000\000\000\164\019\016F\136\162\150\179\200\001\248\000\164\019XF\136\162\150\179\200\000\000\000\000\t6\000\000\162\150\000\000F\136\176\174\162\150\000\000\t6\000\000\025J\021\168\024B\165\166\030P\025D\021J\n\150\000\000\017\218K\138\000\000\016~\000\000K\138\000\000\019\228\019\148MN\021\168R|[\134\018\210\000\000W\242\006\220\011z\007Z\000\000\0180\000\000\020\018\019\170[\134H\218\000\000\021\148\0226\018d\000\000\018\178\000\000\020^\019\224\178\222H\218\000\000\021\168MN\020\144\020\244\001\248\000\000\015BMN[\134\017\194\0056\000\000[\134\007\024\014P\000\000\000\000\154\208\000\000\000\000\016JMN\155\\H\218\000\000\021\168[\134\018\240[\134\1418H\218\000\000\019B\000\000\000\000H\218\000\000\000\000W\242\000\000\162\150\177&\021J\n\150\017\218\020\162\020zMN\162\150\177&\000\000\000\000\021J\n\150\017\218\020\226\020`\182\236\\\254Z\166\020\250\182\236\148\252 X\021\000\182\236Z\166\021\016\182\236\156\"\165\148\000\000\175\132\000\000\000\000\162\150\180*\021J\n\150\017\218\021Z\021\020\182\236\162\150\180*\000\000\000\000\000\000\181.\000\000\000\000\000\000\000\000\000\000\000\000\000\000\162\150\000\000Tx\021\168F\136\162\150\000\000\177Z\021\168NN\021\238\166\192\000\000\172Z\177Z\000\000\000\000\180\140\021\168NN\022\026\021\156\174n\179~\001\024\022x\000\000\000\000\156\206\165\208\021\168\000\000\170\246\024B\000\000\000\000\172Z\180\140\000\000\000\000\000\000\168\224\028b\024B\001\024\022\162\000\000\000\000\000\000\165\208\021\168\000\000\001\024\022\178\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\t>\030P\021J\n\150\017\218\022\134\138\222L\192Ox\021\168ELOp%\014\006\220\011(\000\000\022\174\004\014\000\000\000\000\022`\000\000\000\000c\\\000\000\r\138\r8\000\000\019<\000\000\023\016\022\148[\134\142\b\023,\005\022\000\000\000\000\022\250\000\000\000\000$\128\000\216\019l\000\000\023d\139^\182\202\t6\023$[\134\020*\000\000\000\000\023H\000\000\000\000\000\000c\\\000\000\023N\019\130\000\000\019\186\000\000\023\182\023B\178\222\000\000\023\224\139\222\183V\t6\023\136[\134\020.\000\000\000\000\023\168\000\000\000\000\000\000\021\168\000\000c\\\000\000\021\208\021\168OxOx\140^R\176\021\168\163\154\144\230\019n\000\000\026\234\001\248\000\000\018ZOx[\134\019~\006.\000\000\021\168\138\222\138\222Ox\019\176Ox\000\000H\254I\244\000\000\140\224\000\000\000\000\141\176\000\000\000\000\142\128\000\000\019bOx\143P\163\154\144\230\019n\000\000\011L\000\000\000\000\182\236\016\"\000\000\000\000\138N\024\020\000\000c\\\000\000Ox\138Nc\\\000\000\021\168[\134c\\\000\000\019\204\000\000\000\000c\\\000\000\000\000Op\000\000\172\230\182\236\023\242Ox\173r\138\222\000\000\162\150\178\006\021J\n\150\017\218\024\\\138\222\162\150\178\006\000\000\000\000\000\000\180\248T\158\000\000\000\000\000\000\000\000\000\000\000\000\127\176\162\150\000\000I\200\021\168\029\214\162\150\000\000\177Z\000\000\000\000\000\000\000\000\162\150\180\248\000\000\000\000\000\000\127\176\024\164\000\000\024\172\000\000\162\150\180\248\000\000\000\000\020J\000\000\000\000\149~\nD\000\000\000\000\030\018\000\000[\134\020\226\000\000Op\020\212\000\000\000\000\024\228\157R\000\000E\006\024\188\000\000\000\000\024\192\031z!\250\024B\165\208%\014\021\168\000\000\172Z\000\000\000\000\000\000\000\000\000\000\000\000\000\000\166Z%\014\021\168\000\000\021F\166\192\000\000\172Z\000\000\024\196\031z!\250\172Z\000\000\024\236\000\000\026\006\178\222\003\166\012\004\021\168X\236\000\000\000\000\026b~\228\000\000\000\000\024p\000\000\021\190[\134\021\188\024\222\185\186h\212p\202q\178\000\000k\140\178\222\023 [\134\022\150\024\250\186\nh\212r\154s\130\000\000\025\n\186Zh\212tjuR\000\000\025\014\186\170h\212v:w\"\000\000\023\170[\134\023\154\025\024\186\250h\212x\nx\242\000\000\025\030\023\208[\134\023\232\025F\187Jh\212y\218z\194\000\000\001\024\025p\000\000\000\000\171\\\000\000\000\000\174n\000\000\172Z\000\000\025\152\031z#\002\172\128\000\000\000\000\000\000\000\000\024 \173\212\174n\000\000\172Z\000\000\025\156\031z#\002\172\128\000\000\024X\000\000\000\000\018\132\000\000\162\150\000\000\025\180\000\000\000\000\025\018\000\000\025\024\000\000\0258\000\000\000\000\128t\025:\000\000\000\000$V\129\194\025\238\000\000\000\000\000\000\019\150\001X\143\200\025\240\000\000\000\000\000\000\000\000\000\000\000\000\025R\000\000%\014\000\000\025T\000\000[\134\000\000\n\226\000\000\000\000\025^\000\000\000\000\004.\000\000\012^\000\000\000\000\000\000\007B\000\000\029\214\000\000\t\252\000\000F\136\000\000\003`\000\000\rf\000\000\025f\000\000X\134\025@\000\000\000\000\015v\025\140\000\000\000\000\025\132\016~J\240\003\022\132b\000\000\000\000\000\000\000\000\000\000\167h\003\022\171\248\000\000\000\000\000\000\000\000\000\000\181,\000\000\000\000\026B\000\000V\000\000\000\005\138\026H\000\000\026N\000\000K\234K\234\183j\183j\000\000\000\000\162\144\183j\000\000\000\000\000\000\162\144\183j\025\174\000\000\025\180\000\000"), (16, "\n\001\n\001\000\006\n\001\006\006\n\001\002\230\002\234\n\001\003\022\002\170\n\001\001\006\n\001\001\194\003\"\n\001\001.\n\001\n\001\n\001\001f\n\001\n\001\n\001\001\214\003\017\003\017\020\158\003&\n\001\003\174\003\178\012\022\n\001\001n\n\001\001~\003*\001\142\003\210\003\017\n\001\n\001\003\254\004\002\n\001\004\006\004\018\004\030\004\"\004*\b\134\000\n\n\001\n\001\002\222\001j\003\161\004\026\t\226\n\001\n\001\n\001\t\230\t\234\t\246\n\n\t\173\006\146\n\001\n\001\n\001\n\001\n\001\n\001\n\001\n\001\n\001\n\134\n\001\006\158\006\162\003\017\n\001\007\161\n\001\n\001\003z\003~\n\146\n\170\011\018\006\174\006\178\n\001\011&\n\001\n\001\001v\n\001\n\001\n\001\n\001\007\161\006\n\016\142\n\001\007\161\n\001\n\001\000\242\n\001\n\001\n\001\n\001\n\001\n\001\n\001\006\182\t\254\n\001\n\001\n\001\n\022\004\178\011*\b\206\n\001\n\001\n\001\n\001\014\237\014\237\004\193\014\237\004\193\014\237\001j\014\237\014\237\003\161\014\237\014\237\014\237\014\237\020r\014\237\014\237\000\242\014\237\014\237\014\237\001\134\014\237\014\237\014\237\014\237\004\193\014\237\t\173\014\237\014\237\014\237\014\237\014\237\014\237\014\237\014\237\tJ\014\237\000\242\014\237\006\022\014\237\014\237\014\237\014\237\014\237\t.\014\237\018\250\014\237\006\130\014\237\004&\014\237\014\237\014\237\000\242\006q\014\237\014\237\014\237\014\237\014\237\014\237\014\237\014\237\000\242\014\237\014\237\014\237\014\237\014\237\014\237\014\237\014\237\014\237\014\237\014\237\001\186\014\237\014\237\014\237\014\237\014\237\006\249\014\237\014\237\031\194\007\226\001\226\004\193\014\237\014\237\014\237\014\237\018\254\014\237\014\237\001\190\014\237\014\237\014\237\014\237\014\237\006\249\014\237\014\237\020v\014\237\014\237\007\230\014\237\014\237\014\237\014\237\014\237\014\237\014\237\014\237\014\237\014\237\014\237\014\237\014\237\014\237\004\193\004\193\014\237\014\237\014\237\014\237\001\221\001\221\001\221\001\221\003B\001\221\001z\001\221\001\221\001\221\001\221\001\221\001\221\001\221\001\221\001\221\001\221\001\221\001\221\001\221\001\221\001\221\001\221\001\221\001\221\001\221\001\150\001\221\003N\001\221\001\221\001\221\001\221\001\221\001\221\001\221\001\221\001\221\001\221\b>\001\221\bn\001\221\001\221\001\221\001\221\001\221\001\221\001\221\b\206\001\221\000\242\001\221\001j\001\221\001\221\001\221\003\161\001\221\001\221\001\221\001\221\001\221\001\221\001\221\001\221\001\221\004J\001\221\001\221\001\221\001\221\001\221\001\221\001\221\001\221\001\221\001\221\001\221\001\221\001\221\001\221\001\221\001\221\001\221\001\202\001\221\001\221\006b\006B\004N\tJ\001\221\001\221\001\221\001\221\001\221\001\221\001\221\001\221\001\221\001\221\001\221\001\221\001\221\017\250\n6\001\221\006\246\001\221\001\221\000\242\001\221\001\221\001\221\001\221\001\221\001\221\001\221\001\221\001\221\001\221\001\221\001\221\001\221\001\221\004\193\001\221\001\221\001\221\001\221\001\221\011e\011e\001\238\011e\002\130\011e\001\222\011e\011e\tV\011e\011e\011e\011e\018\178\011e\011e\t^\011e\011e\011e\006f\011e\011e\011e\011e\tb\011e\007\141\011e\011e\011e\011e\011e\011e\011e\011e\b\206\011e\bv\011e\019\214\011e\011e\011e\011e\011e\007\141\011e\001\226\011e\007\141\011e\004\130\011e\011e\011e\006\n\t\197\011e\011e\011e\011e\011e\011e\011e\011e\001\242\011e\011e\011e\011e\011e\011e\011e\011e\011e\011e\011e\tJ\011e\011e\011e\011e\011e\007\001\011e\011e\007\t\005&\004\193\000\242\011e\011e\011e\011e\002\134\011e\011e\000\242\011e\011e\011e\011e\011J\007\001\011\170\011e\007\t\011e\011e\004\158\011e\011e\011e\011e\011e\011e\011e\011e\011e\011e\011e\011e\011e\011e\007\141\011e\011e\011e\011e\011e\003\237\003\237\000\242\003\237 W\003\237\001\138\003\237\003\237\001\154\003\237\003\237\003\237\003\237\001\210\003\237\003\237\016\210\003\237\003\237\003\237\011N\003\237\003\237\003\237\003\237\004\193\003\237\007\145\003\237\003\237\003\237\003\237\003\237\003\237\003\237\003\237\016\006\003\237\016\018\003\237\003\134\003\237\003\237\003\237\003\237\003\237\007\145\003\237\005:\003\237\007\145\003\237\001\210\003\237\003\237\003\237\002\158\003\146\003\237\003\237\003\237\003\237\003\237\003\237\003\237\003\237\016\218\003\237\003\237\003\237\003\237\003\237\003\237\003\237\003\237\003\237\003\237\003\237\003\150\011:\003\237\003\237\011B\011\162\b\194\003\237\003\237\014\182\025\234\b\162\006!\003\237\003\237\003\237\003\237\003\002\003\237\003\237\t\221\003\237\003\237\003\237\003\237\011J\011f\011\170\003\237\011r\003\237\003\237\014\186\003\237\003\237\003\237\003\237\003\237\003\237\003\237\003\237\003\237\003\237\003\237\003\237\003\237\003\237\t\242\003\237\003\237\003\237\003\237\003\237\003\221\003\221\003\230\003\221\005\138\003\221\003\138\003\221\003\221\006!\003\221\003\221\003\221\003\221\001\210\003\221\003\221\t\238\003\221\003\221\003\221\014\198\003\221\003\221\003\221\003\221\021\250\003\221\006!\003\221\003\221\003\221\003\221\003\221\003\221\003\221\003\221\014\226\003\221\014\242\003\221\004\150\003\221\003\221\003\221\003\221\003\221\000\242\003\221\t\238\003\221\004\134\003\221\t\221\003\221\003\221\003\221\004z\001\210\003\221\003\221\003\221\003\221\003\221\003\221\003\221\003\221\004\217\003\221\003\221\003\221\003\221\003\221\003\221\003\221\003\221\003\221\003\221\003\221\002R\011:\003\221\003\221\011B\011\162\0186\003\221\003\221\006R\0262\b\030\005*\003\221\003\221\003\221\003\221\005\142\003\221\003\221\002V\003\221\003\221\003\221\003\221\011J\011f\011\170\003\221\011r\003\221\003\221\003\014\003\221\003\221\003\221\003\221\003\221\003\221\003\221\003\221\003\221\003\221\003\221\003\221\003\221\003\221\020.\003\221\003\221\003\221\003\221\003\221\n\205\n\205\006n\n\205\t\177\n\205\002\234\n\205\n\205\005^\n\205\n\205\n\205\n\205\0202\n\205\n\205\003V\n\205\n\205\n\205\015\018\n\205\n\205\n\205\n\205\004\193\n\205\005R\n\205\n\205\n\205\n\205\n\205\n\205\n\205\n\205\015*\n\205\015B\n\205\003b\n\205\n\205\n\205\n\205\n\205\000\242\n\205\003\222\n\205\b\210\n\205\015\"\n\205\n\205\n\205\006\n\003\234\n\205\n\205\n\205\n\205\n\205\n\205\n\205\n\205\000\242\n\205\n\205\n\205\n\205\n\205\n\205\n\205\n\205\n\205\n\205\n\205\b\"\n\205\n\205\n\205\n\205\n\205\t\014\n\205\n\205\005r\005f\004\193\004\193\n\205\n\205\n\205\n\205\t\177\n\205\n\205\021\130\n\205\n\205\n\205\n\205\n\205\004\178\n\205\n\205\011f\n\205\n\205\011r\n\205\n\205\n\205\n\205\n\205\n\205\n\205\n\205\n\205\n\205\n\205\n\205\n\205\n\205\004\193\004\193\n\205\n\205\n\205\n\205\n\221\n\221\006&\n\221\004\193\n\221\t\137\n\221\n\221\004\193\n\221\n\221\n\221\n\221\003\234\n\221\n\221\000\242\n\221\n\221\n\221\015\162\n\221\n\221\n\221\n\221\014\250\n\221\005^\n\221\n\221\n\221\n\221\n\221\n\221\n\221\n\221\015\182\n\221\015\202\n\221\007\178\n\221\n\221\n\221\n\221\n\221\000\242\n\221\014\254\n\221\000\242\n\221\015:\n\221\n\221\n\221\003\238\022\214\n\221\n\221\n\221\n\221\n\221\n\221\n\221\n\221\006\133\n\221\n\221\n\221\n\221\n\221\n\221\n\221\n\221\n\221\n\221\n\221\011\182\n\221\n\221\n\221\n\221\n\221\t\154\n\221\n\221\014f\001\006\b\162\001\194\n\221\n\221\n\221\n\221\t\137\n\221\n\221\011\186\n\221\n\221\n\221\n\221\n\221 7\n\221\n\221\005\162\n\221\n\221\t^\n\221\n\221\n\221\n\221\n\221\n\221\n\221\n\221\n\221\n\221\n\221\n\221\n\221\n\221\t\134\b\206\n\221\n\221\n\221\n\221\n\213\n\213\017\014\n\213\001\006\n\213\001\194\n\213\n\213\b\222\n\213\n\213\n\213\n\213\t\138\n\213\n\213\005\174\n\213\n\213\n\213\017\170\n\213\n\213\n\213\n\213\b\230\n\213\005)\n\213\n\213\n\213\n\213\n\213\n\213\n\213\n\213\tJ\n\213\b\162\n\213\004\130\n\213\n\213\n\213\n\213\n\213\b\002\n\213\016&\n\213\005)\n\213\015R\n\213\n\213\n\213\000\242\007\169\n\213\n\213\n\213\n\213\n\213\n\213\n\213\n\213\005\198\n\213\n\213\n\213\n\213\n\213\n\213\n\213\n\213\n\213\n\213\n\213\t\026\n\213\n\213\n\213\n\213\n\213\014\206\n\213\n\213\011^\018\162\011\142\017\022\n\213\n\213\n\213\n\213\tB\n\213\n\213\t*\n\213\n\213\n\213\n\213\n\213\014\210\n\213\n\213\018\170\n\213\n\213\005\222\n\213\n\213\n\213\n\213\n\213\n\213\n\213\n\213\n\213\n\213\n\213\n\213\n\213\n\213\t\194\b\206\n\213\n\213\n\213\n\213\n\193\n\193\t\217\n\193\b\130\n\193\004\150\n\193\n\193\016*\n\193\n\193\n\193\n\193\t\198\n\193\n\193\b\169\n\193\n\193\n\193\018.\n\193\n\193\n\193\n\193\006J\n\193\007y\n\193\n\193\n\193\n\193\n\193\n\193\n\193\n\193\tJ\n\193\b\162\n\193\007N\n\193\n\193\n\193\n\193\n\193\b\n\n\193\004\162\n\193\007y\n\193\015j\n\193\n\193\n\193\000\242\000\242\n\193\n\193\n\193\n\193\n\193\n\193\n\193\n\193\007Z\n\193\n\193\n\193\n\193\n\193\n\193\n\193\n\193\n\193\n\193\n\193\007r\n\193\n\193\n\193\n\193\n\193\002\190\n\193\n\193\t\217\022B\003z\003~\n\193\n\193\n\193\n\193\007\198\n\193\n\193\000\242\n\193\n\193\n\193\n\193\n\193\020\198\n\193\n\193\022N\n\193\n\193\bF\n\193\n\193\n\193\n\193\n\193\n\193\n\193\n\193\n\193\n\193\n\193\n\193\n\193\n\193\029\n\b\206\n\193\n\193\n\193\n\193\n\201\n\201\t\002\n\201\006Z\n\201\t\166\n\201\n\201\bb\n\201\n\201\n\201\n\201\029\014\n\201\n\201\bj\n\201\n\201\n\201\000\242\n\201\n\201\n\201\n\201\t\201\n\201\t\241\n\201\n\201\n\201\n\201\n\201\n\201\n\201\n\201\tJ\n\201\022\134\n\201\b\174\n\201\n\201\n\201\n\201\n\201\017\222\n\201\018\226\n\201\t\241\n\201\015~\n\201\n\201\n\201\000\242 G\n\201\n\201\n\201\n\201\n\201\n\201\n\201\n\201\000\242\n\201\n\201\n\201\n\201\n\201\n\201\n\201\n\201\n\201\n\201\n\201\n\230\n\201\n\201\n\201\n\201\n\201\015!\n\201\n\201\bB\bF\011\226\t\201\n\201\n\201\n\201\n\201\n\242\n\201\n\201\015!\n\201\n\201\n\201\n\201\n\201\006\n\n\201\n\201\011\n\n\201\n\201\011>\n\201\n\201\n\201\n\201\n\201\n\201\n\201\n\201\n\201\n\201\n\201\n\201\n\201\n\201\027\178\t\201\n\201\n\201\n\201\n\201\n\197\n\197\000\242\n\197\000\242\n\197\005n\n\197\n\197\012\198\n\197\n\197\n\197\n\197\027\182\n\197\n\197\025\222\n\197\n\197\n\197\022\210\n\197\n\197\n\197\n\197\006i\n\197\b.\n\197\n\197\n\197\n\197\n\197\n\197\n\197\n\197\n\130\n\197\r\142\n\197 \007\n\197\n\197\n\197\n\197\n\197\n\186\n\197\000\242\n\197\011b\n\197\015\146\n\197\n\197\n\197\000\242\022\218\n\197\n\197\n\197\n\197\n\197\n\197\n\197\n\197\006}\n\197\n\197\n\197\n\197\n\197\n\197\n\197\n\197\n\197\n\197\n\197\015\026\n\197\n\197\n\197\n\197\n\197\015J\n\197\n\197\014\194\n\190\003\230\n\246\n\197\n\197\n\197\n\197\017z\n\197\n\197\015\030\n\197\n\197\n\197\n\197\n\197\029\226\n\197\n\197\015N\n\197\n\197\027\186\n\197\n\197\n\197\n\197\n\197\n\197\n\197\n\197\n\197\n\197\n\197\n\197\n\197\n\197\014\182\b\206\n\197\n\197\n\197\n\197\n\209\n\209\017\014\n\209\000\242\n\209\005\170\n\209\n\209\b2\n\209\n\209\n\209\n\209\t\146\n\209\n\209\015\142\n\209\n\209\n\209\018Z\n\209\n\209\n\209\n\209\011\138\n\209\005^\n\209\n\209\n\209\n\209\n\209\n\209\n\209\n\209\tJ\n\209\r\242\n\209\005i\n\209\n\209\n\209\n\209\n\209\004\130\n\209\000\242\n\209\021\254\n\209\015\174\n\209\n\209\n\209\000\242\001\210\n\209\n\209\n\209\n\209\n\209\n\209\n\209\n\209\014\250\n\209\n\209\n\209\n\209\n\209\n\209\n\209\n\209\n\209\n\209\n\209\011\150\n\209\n\209\n\209\n\209\n\209\017~\n\209\n\209\bz\bF\015\210\017\022\n\209\n\209\n\209\n\209\t\166\n\209\n\209 '\n\209\n\209\n\209\n\209\n\209\004\146\n\209\n\209\bR\n\209\n\209\000\242\n\209\n\209\n\209\n\209\n\209\n\209\n\209\n\209\n\209\n\209\n\209\n\209\n\209\n\209\t\222\b\206\n\209\n\209\n\209\n\209\n\225\n\225\011\166\n\225\000\242\n\225\002\n\n\225\n\225\012\226\n\225\n\225\n\225\n\225\nf\n\225\n\225\026\014\n\225\n\225\n\225\026\n\n\225\n\225\n\225\n\225\015)\n\225\005^\n\225\n\225\n\225\n\225\n\225\n\225\n\225\n\225\tJ\n\225\014\006\n\225\012\254\n\225\n\225\n\225\n\225\n\225\004\193\n\225\001\226\n\225\004\193\n\225\015\194\n\225\n\225\n\225\000\242\026\018\n\225\n\225\n\225\n\225\n\225\n\225\n\225\n\225\006i\n\225\n\225\n\225\n\225\n\225\n\225\n\225\n\225\n\225\n\225\n\225\r>\n\225\n\225\n\225\n\225\n\225\011\182\n\225\n\225\002\234\t\018\rb\000\242\n\225\n\225\n\225\n\225\t\166\n\225\n\225\000\242\n\225\n\225\n\225\n\225\n\225\015f\n\225\n\225\n\210\n\225\n\225\000\242\n\225\n\225\n\225\n\225\n\225\n\225\n\225\n\225\n\225\n\225\n\225\n\225\n\225\n\225\018\138\b\206\n\225\n\225\n\225\n\225\n\217\n\217\014*\n\217\r\018\n\217\t\133\n\217\n\217\005^\n\217\n\217\n\217\n\217\020&\n\217\n\217\014\166\n\217\n\217\n\217\014\206\n\217\n\217\n\217\n\217\r\154\n\217\005^\n\217\n\217\n\217\n\217\n\217\n\217\n\217\n\217\tJ\n\217\014\170\n\217\015\170\n\217\n\217\n\217\n\217\n\217\000\242\n\217\015\158\n\217\003\230\n\217\015\214\n\217\n\217\n\217\000\242\r\182\n\217\n\217\n\217\n\217\n\217\n\217\n\217\n\217\r\198\n\217\n\217\n\217\n\217\n\217\n\217\n\217\n\217\n\217\n\217\n\217\015\026\n\217\n\217\n\217\n\217\n\217\r\234\n\217\n\217\015J\r\n\003z\021\246\n\217\n\217\n\217\n\217\t\133\n\217\n\217\016\002\n\217\n\217\n\217\n\217\n\217\022\n\n\217\n\217\r\"\n\217\n\217\016\026\n\217\n\217\n\217\n\217\n\217\n\217\n\217\n\217\n\217\n\217\n\217\n\217\n\217\n\217\014\018\b\206\n\217\n\217\n\217\n\217\011M\011M\017\182\011M\014\234\011M\002\234\011M\011M\005^\011M\011M\011M\011M\020b\011M\011M\0152\011M\011M\011M\016\238\011M\011M\011M\011M\014\238\011M\005^\011M\011M\011M\011M\011M\011M\011M\011M\tJ\011M\0156\011M\016\242\011M\011M\011M\011M\011M\001\006\011M\001\194\011M\023>\011M\015\226\011M\011M\011M\000\242\0166\011M\011M\011M\011M\011M\011M\011M\011M\017\238\011M\011M\011M\011M\011M\011M\011M\011M\011M\011M\011M\t^\011M\011M\011M\011M\011M\027\194\011M\011M\017\186\rr\017\242\r*\011M\011M\011M\011M\016>\011M\011M\018f\011M\011M\011M\011M\011M\027\198\011M\011M\r\134\011M\011M\016R\011M\011M\011M\011M\011M\011M\011M\011M\011M\011M\011M\011M\011M\011M\016\130\b\206\011M\011M\011M\011M\003\217\003\217\000\242\003\217\014\166\003\217\003\234\003\217\003\217\005^\003\217\003\217\003\217\003\217\020~\003\217\003\217\014\234\003\217\003\217\003\217\022\154\003\217\003\217\003\217\003\217\015z\003\217\017\002\003\217\003\217\003\217\003\217\003\217\003\217\003\217\003\217\tJ\003\217\015\190\003\217\016\174\003\217\003\217\003\217\003\217\003\217\001\006\003\217\001\194\003\217\023v\003\217\rz\003\217\003\217\003\217\000\242\018\190\003\217\003\217\003\217\003\217\003\217\003\217\003\217\003\217\018\030\003\217\003\217\003\217\003\217\003\217\003\217\003\217\003\217\003\217\003\217\003\217\t^\011:\003\217\003\217\011B\011\162\018>\003\217\003\217\018j\r\254\018\"\003\209\003\217\003\217\003\217\003\217\000\242\003\217\003\217\005^\003\217\003\217\003\217\003\217\011J\005^\011\170\003\217\018\230\003\217\003\217\022\158\003\217\003\217\003\217\003\217\003\217\003\217\003\217\003\217\003\217\003\217\003\217\003\217\003\217\003\217\007\154\003\217\003\217\003\217\003\217\003\217\002\029\002\029\000\242\002\029\0152\002\029\017\154\002\234\002\029\017\006\002\170\002\029\011Z\002\029\007\158\003\"\002\029\019\"\002\029\002\029\002\029\003\181\002\029\002\029\002\029\001\214\016\014\011\146\017\158\003&\002\029\002\029\002\029\002\029\002\029\011\154\002\029\003\209\003*\018B\003\210\004:\002\029\002\029\002\029\002\029\002\029\019\018\004\018\019\006\001\194\023J\002\029\019n\002\029\002\029\002\222\000\242\019\238\004\026\t\226\002\029\002\029\002\029\t\230\t\234\t\246\019\n\015\006\006\146\002\029\002\029\002\029\002\029\002\029\002\029\002\029\002\029\002\029\0192\011:\006\158\006\162\011B\011\162\002\190\002\029\002\029\022\222\018\018\019N\003-\002\029\006\174\006\178\002\029\019v\002\029\002\029\005^\002\029\002\029\002\029\002\029\015\014\022\142\015Z\002\029\019\134\002\029\002\029\019\154\002\029\002\029\002\029\002\029\002\029\002\029\002\029\006\182\t\254\002\029\002\029\002\029\n\022\004\178\019\198\b\206\002\029\002\029\002\029\002\029\0115\0115\006\129\0115\018J\0115\023\002\002\234\0115\023R\002\170\0115\0115\0115\031^\003\"\0115\019\210\0115\0115\0115\023\n\0115\0115\0115\001\214\018N\0115\b\221\003&\0115\0115\0115\0115\0115\0115\0115\tJ\003*\019\242\003\210\020:\0115\0115\0115\0115\0115\021>\004\018\007n\001\194\0276\0115\022\194\0115\0115\002\222\000\242\018\022\004\026\t\226\0115\0115\0115\t\230\t\234\t\246\b\217\0115\006\146\0115\0115\0115\0115\0115\0115\0115\0115\0115\t^\0115\006\158\006\162\0115\0115\020B\0115\0115\0216\023\166\026\022\003\205\0115\006\174\006\178\0115\000\242\0115\0115\004\142\0115\0115\0115\0115\0115\021J\0115\0115\021N\0115\0115\000\242\0115\0115\0115\0115\0115\0115\0115\006\182\t\254\0115\0115\0115\n\022\004\178\007\194\004\130\0115\0115\0115\0115\0111\0111\000\242\0111\006m\0111\026R\002\234\0111\027B\002\170\0111\0111\0111\023\146\003\"\0111\026\154\0111\0111\0111\026\162\0111\0111\0111\001\214\028\002\0111\b\205\003&\0111\0111\0111\0111\0111\0111\0111\003\205\003*\0155\003\210\003\014\0111\0111\0111\0111\0111\004\130\004\018\022\018\001\194\027\150\0111\004\146\0111\0111\002\222\004\217\023\170\004\026\t\226\0111\0111\0111\t\230\t\234\t\246\b\209\0111\006\146\0111\0111\0111\0111\0111\0111\0111\0111\0111\t^\0111\006\158\006\162\0111\0111\022*\0111\0111\022\170\028\250\027^\004}\0111\006\174\006\178\0111\022\174\0111\0111\023R\0111\0111\0111\0111\0111\031\190\0111\0111\004\217\0111\0111\022\230\0111\0111\0111\0111\0111\0111\0111\006\182\t\254\0111\0111\0111\n\022\004\178\022\234\028\006\0111\0111\0111\0111\002i\002i\000\242\002i\000\242\002i\000\242\002\234\002i\012\198\002\170\002i\011Z\002i\004\193\003\"\002i\023\018\002i\002i\002i\023\022\002i\002i\002i\001\214\029.\011\146\023.\003&\002i\002i\002i\002i\002i\011\154\002i\004}\003*\026r\003\210\026\210\002i\002i\002i\002i\002i\014\169\004\018\004\193\001\194\023\218\002i\029\"\002i\002i\002\222\000\242\028\254\004\026\t\226\002i\002i\002i\t\230\t\234\t\246\014\169\015\006\006\146\002i\002i\002i\002i\002i\002i\002i\002i\002i\023\222\002i\006\158\006\162\024\002\002i\024\006\002i\002i\024\022\004\193\001\210\024&\002i\006\174\006\178\002i\000\242\002i\002i\0242\002i\002i\002i\002i\004\193\000\242\004\193\002i\004\193\002i\002i\002b\002i\002i\002i\002i\002i\002i\002i\006\182\t\254\002i\002i\002i\n\022\004\178\004\193\0292\002i\002i\002i\002i\004\193\029\166\004\193\004\193\004\193\004\193\004\193\004\193\004\193\004\193\004\193\024f\004\193\000\242\004\193\004\193\000\242\004\193\004\193\004\193\004\193\004\193\004\193\004\193\004\193\004\193\004\193\004\193\004\193\004\193\030\022\004\193\004\193\002*\0232\004\193\004\193\005^\004\193\004\193\004\193\004\193\004\193\024j\004\193\004\193\004\193\004\193\004\193\004\193\004\193\004\193\004\193\000\242\004\193\004\193\004\193\004\193\004\193\004\193\004\193\004\193\004\193\000\242\004\193\004\193\004\193\004\193\004\193\004\193\004\193\004\193\004\193\000\242\004\193\022\254\004\193\004\193\004\193\004\193\004\193\004\193\004\193\000\242\004\193\024\206\014\173\004\193\004\193\004\193\004\193\004\193\004\193\004\193\004\193\004\193\004\193\004\193\000\242\023\006\004\193\004\193\003z\003~\003\193\004\193\014\173\024\246\001.\024\250\004\193\004\193\004\193\017.\003\017\003\017\b\166\030\014\004\193\004\193\004\193\b\213\018\250\004\193\004\193\004\193\004\193\025\n\000\181\004\193\000\181\006q\000\181\000\181\000\181\000\181\000\181\000\181\000\181\030B\000\181\000\n\000\181\000\181\026\254\000\181\000\181\007\130\025Z\000\181\000\181\007&\000\181\000\181\000\181\000\181\025z\000\181\007\162\000\181\000\181\025\186\007\174\000\181\000\181\t\178\000\181\000\181\000\181\018\254\000\181\003\017\000\181\000\181\000\181\000\181\000\181\000\181\000\181\000\181\000\181\025\230\000\242\000\181\000\181\t\182\003\"\000\181\000\181\000\181\025\246\000\181\000\181\000\181\000\181\000\181\000\181\000\181\000\181\000\181\002\234\018\242\000\181\006\222\0026\000\181\006\149\000\181\000\181\000\181\000\181\014\177\000\181\t\166\005^\026\150\006\226\000\181\000\181\000\181\000\181\000\181\000\181\000\181\000\181\000\181\005-\003]\000\242\000\181\026\030\014\177\b\006\002\234\000\226\026\"\007N\002F\000\181\026\158\006\146\011\174\003]\003\222\026.\000\181\000\181\000\181\000\181\005-\002J\000\181\000\181\000\181\000\181\002Y\002Y\014\158\002Y\014\174\002Y\b\205\002\234\002Y\006\174\002\170\002Y\026>\002Y\030\150\003\"\002Y\026Z\002Y\002Y\002Y\003\222\002Y\002Y\002Y\001\214\019f\t\186\005^\003&\002Y\002Y\002Y\002Y\002Y\006\182\002Y\006\149\003*\030:\003\210\026j\002Y\002Y\002Y\002Y\002Y\005^\004\018\017\014\t\250\026~\002Y\030\190\002Y\002Y\002\222\000\242\026\170\004\026\t\226\002Y\002Y\002Y\t\230\t\234\t\246\026\174\001\210\006\146\002Y\002Y\002Y\002Y\002Y\002Y\002Y\002Y\002Y\026\186\011:\006\158\006\162\011B\011\162\018\218\002Y\002Y\002\170\031R\017\014\026\202\002Y\006\174\006\178\002Y\000\242\002Y\002Y\026\222\002Y\002Y\002Y\002Y\011J\027\210\011\170\002Y\030\142\002Y\002Y\031&\002Y\002Y\002Y\002Y\002Y\002Y\002Y\006\182\t\254\002Y\002Y\002Y\n\022\004\178\018\222\030\182\002Y\002Y\002Y\002Y\002u\002u\003B\002u\028*\002u\017\022\003\234\002u\028R\018\234\002u\025R\002u\003F\003J\002u\028\218\002u\002u\002u\028\226\002u\002u\002u\003V\003N\003\201\029:\029J\002u\002u\002u\002u\002u\017\138\002u\003Z\003^\029V\006\178\029\186\002u\002u\002u\002u\002u\017\022\n:\003b\001\194\025^\002u\029\206\002u\002u\030\006\017\014\031V\016\246\017n\002u\002u\002u\017\142\017\174\017\190\030\026\017b\025\018\002u\002u\002u\002u\002u\002u\002u\002u\002u\003\017\011:\030F\003\017\011B\011\162\003\017\002u\002u\003\017\030^\b\193\030v\002u\004u\b\193\002u\030\154\002u\002u\004\210\002u\002u\002u\002u\011J\003\201\011\170\002u\000\n\002u\002u\000\n\002u\002u\002u\002u\002u\002u\002u\030\194\030\222\002u\002u\002u\bJ\003\017\003\017\000\n\002u\002u\002u\002u\002q\002q\b\193\002q\000\242\002q\003\017\003\017\002q\003\017\003\017\002q\003\017\002q\017\022\031\006\002q\031>\002q\002q\002q\031n\002q\002q\002q\003\017\b\193\031z\031\130\n\166\002q\002q\002q\002q\002q\019\254\002q\031\139\031\155\004u\003\017 s\002q\002q\002q\002q\002q\005\145\031\174\031\202\031\231\031\247\002q\007\130\002q\002q \019\007&\n\202\005\145 g\002q\002q\002q\007\162\007-\005N\021\170\007\174\016\138\002q\002q\002q\002q\002q\002q\002q\002q\002q \131\011: \142\017\014\011B\011\162\007-\002q\002q \227\000\242\005\145 \247\002q\001\210 \255\002q!;\002q\002q!C\002q\002q\002q\002q\011J\029\246\011\170\002q\000\000\002q\002q\000\000\002q\002q\002q\002q\002q\002q\002q\000\000\005\145\002q\002q\002q\005\145\007\145\002\234\005\145\002q\002q\002q\002q\002]\002]\003B\002]\004z\002]\007\130\003\234\002]\000\000\007&\002]\007\145\002]\003F\003J\002]\007\162\002]\002]\002]\007\174\002]\002]\002]\029\214\003N\000\000\000\000\004\193\002]\002]\002]\002]\002]\015^\002]\003\222\004\242\017\022\000\000\005m\002]\002]\002]\002]\002]\000\000\n:\000\000\017\254\015r\002]\015\134\002]\002]\004y\000\000\000\000\016\246\017n\002]\002]\002]\017\142\017\174\017\190\003\234\018v\000\000\002]\002]\002]\002]\002]\002]\002]\002]\002]\007\145\011:\000\000\000\000\011B\011\162\000\242\002]\002]\000\000\000\000\t\166\t\242\002]\000\000\000\000\002]\000\000\002]\002]\000\242\002]\002]\002]\002]\011J\000\242\011\170\002]\006\250\002]\002]\000\000\002]\002]\002]\002]\002]\002]\002]\004.\0042\002]\002]\002]\007\214\000\000\004>\000\000\002]\002]\002]\002]\002m\002m\004y\002m\ba\002m\014m\000\000\002m\000\000\000\000\002m\000\000\002m\027*\000\000\002m\000\000\002m\002m\002m\000\000\002m\002m\002m\014m\014m\nZ\000\000\014m\002m\002m\002m\002m\002m\000\000\002m\000\000\000\000\ba\000\000\000\000\002m\002m\002m\002m\002m\000\000\000\000\000\000\000\000\000\000\002m\ba\002m\002m\000\000\ba\nz\000\000\000\000\002m\002m\002m\ba\000\000\000\000\000\000\ba\000\242\002m\002m\002m\002m\002m\002m\002m\002m\002m\000\000\002m\003\017\003\017\021\210\002m\018\218\002m\002m\002\170\000\000\b\189\000\000\002m\012\246\b\189\002m\003\017\002m\002m\000\000\002m\002m\002m\002m\014m\000\000\025N\002m\000\n\002m\002m\000\000\011\194\002m\002m\002m\002m\002m\002m\000\000\011~\002m\002m\002m\000\000\000\000\018\222\000\000\002m\002m\002m\002m\t\253\t\253\b\189\t\253\000\242\t\253\003\017\000\000\t\253\000\000\018\234\t\253\025r\t\253\000\000\000\000\011\238\000\000\t\253\012\018\t\253\000\000\t\253\t\253\t\253\000\000\b\189\000\000\000\000\021\014\012&\012>\012F\012.\012N\000\000\t\253\000\000\000\000\011\"\006\178\000\000\t\253\t\253\012V\012^\t\253\000\000\b\173\000\000\000\000\025~\t\253\007\130\012f\t\253\000\000\007&\012\250\000\000\000\000\t\253\t\253\000\242\007\162\000\000\005N\000\000\007\174\025\018\t\253\t\253\011\246\0126\012n\012v\012\134\t\253\t\253\000\000\t\253\000\000\000\000\001\210\t\253\000\000\t\253\012\142\000\000\000\242\000\000\000\000\t\253\000\000\000\000\t\253\000\000\t\253\012\150\000\000\t\253\t\253\t\253\t\253\017:\000\000\000\000\t\253\000\000\t\253\t\253\000\000\012\182\t\253\t\253\012\190\012~\t\253\t\253\016^\000\000\t\253\012\158\t\253\017B\000\000\004z\000\000\t\253\t\253\012\166\012\174\002\161\002\161\000\000\002\161\011\241\002\161\007\130\002\234\002\161\000\000\007&\002\161\000\000\002\161\003\158\000\000\002\161\007\162\002\161\002\161\002\161\007\174\002\161\002\161\002\161\001\214\000\000\000\000\004\242\000\000\002\161\002\161\002\161\002\161\002\161\000\000\002\161\000\000\000\000\011\241\000\000\000\000\002\161\002\161\002\161\002\161\002\161\000\000\003\198\000\000\029\022\000\000\002\161\011\241\002\161\002\161\002\222\011\241\014\"\000\000\000\000\002\161\002\161\002\161\011\241\003\017\000\000\000\000\011\241\022z\002\161\002\161\011\246\002\161\002\161\002\161\002\161\002\161\002\161\000\000\002\161\000\000\000\000\000\000\002\161\000\000\002\161\002\161\000\000\b\154\000\000\020\022\002\161\000\242\000\n\002\161\000\000\002\161\002\161\000\000\002\161\002\161\002\161\002\161\000\000\000\000\000\000\002\161\000\000\002\161\002\161\003\017\002\161\002\161\002\161\002\161\002\161\002\161\002\161\t\166\ti\002\161\002\161\002\161\003\017\003\017\000\000\000\000\002\161\002\161\002\161\002\161\002\137\002\137\000\242\002\137\000\000\002\137\000\000\000\000\002\137\000\000\007\130\002\137\000\000\002\137\007&\029\026\002\137\000\000\002\137\002\137\002\137\007\162\002\137\002\137\002\137\007\174\000\000\000\000\000\000\ti\002\137\002\137\002\137\002\137\002\137\000\000\002\137\000\000\000\000\000\000\000\000\007\137\002\137\002\137\002\137\002\137\002\137\000\000\000\000\000\000\000\000\000\000\002\137\ti\002\137\002\137\020\026\000\000\t\245\000\000\007\137\002\137\002\137\002\137\007\137\002\234\000\000\000\000\000\000\000\000\002\137\002\137\011\246\002\137\002\137\002\137\002\137\002\137\002\137\000\000\002\137\t\245\000\000\000\000\002\137\b\205\002\137\002\137\b\205\ti\000\000\000\000\002\137\005N\000\000\002\137\ti\002\137\002\137\000\000\002\137\002\137\002\137\002\137\000\000\000\000\026R\002\137\003\222\002\137\002\137\000\000\002\137\002\137\002\137\002\137\002\137\002\137\002\137\000\000\te\002\137\002\137\002\137\000\000\000\000\b\205\000\000\002\137\002\137\002\137\002\137\002\149\002\149\000\000\002\149\000\000\002\149\000\000\007\137\002\149\000\000\b\205\002\149\000\000\002\149\000\000\000\000\011\238\000\000\002\149\002\149\002\149\000\000\002\149\002\149\002\149\000\000\004V\000\000\014u\te\002\149\002\149\002\149\012.\002\149\000\000\002\149\000\000\000\000\000\000\b\205\000\000\002\149\002\149\002\149\002\149\002\149\014u\014u\000\000\000\000\014u\002\149\te\002\149\002\149\000\000\000\000\000\000\000\000\000\000\002\149\002\149\002\149\000\000\0079\000\000\000\000\000\000\b\205\002\149\002\149\011\246\0126\002\149\002\149\002\149\002\149\002\149\t\133\002\149\000\000\000\000\000\000\002\149\0079\002\149\002\149\000\000\te\000\000\000\242\002\149\005N\000\000\002\149\te\002\149\002\149\000\000\002\149\002\149\002\149\002\149\000\000\000\000\000\000\002\149\000\000\002\149\002\149\000\000\002\149\002\149\002\149\002\149\002\149\002\149\002\149\014q\000\242\002\149\002\149\002\149\000\000\000\000\014u\000\000\002\149\002\149\002\149\002\149\002\165\002\165\003V\002\165\000\242\002\165\014q\014q\002\165\000\000\014q\002\165\000\000\002\165\003Z\003^\002\165\000\000\002\165\002\165\002\165\000\000\002\165\002\165\002\165\000\000\003b\000\000\000\000\000\000\002\165\002\165\002\165\002\165\002\165\000\000\002\165\t\133\000\000\0146\000\000\000\000\002\165\002\165\002\165\002\165\002\165\000\000\t\201\000\000\000\242\000\000\002\165\014>\002\165\002\165\000\000\014J\000\000\000\000\000\000\002\165\002\165\002\165\014V\000\000\000\000\000\000\014b\000\000\002\165\002\165\011\246\002\165\002\165\002\165\002\165\002\165\002\165\000\000\002\165\000\000\000\000\000\000\002\165\014q\002\165\002\165\000\000\000\242\000\000\000\000\002\165\000\000\000\000\002\165\000\000\002\165\002\165\000\000\002\165\002\165\002\165\002\165\000\000\000\000\000\000\002\165\000\000\002\165\002\165\000\000\002\165\002\165\002\165\002\165\002\165\002\165\002\165\000\000\000\000\002\165\002\165\002\165\bY\000\000\000\000\000\000\002\165\002\165\002\165\002\165\002\133\002\133\000\000\002\133\bu\002\133\bY\000\000\002\133\018\218\007&\002\133\002\170\002\133\000\000\000\000\002\133\bY\002\133\002\133\002\133\bY\002\133\002\133\002\133\000\000\000\000\000\000\000\000\000\000\002\133\002\133\002\133\002\133\002\133\000\000\002\133\000\000\000\000\bu\000\000\000\000\002\133\002\133\002\133\002\133\002\133\000\000\000\000\000\000\018\222\000\000\002\133\bu\002\133\002\133\000\000\007&\000\000\000\000\000\000\002\133\002\133\002\133\bu\000\000\018\234\000\000\bu\000\000\002\133\002\133\011\246\002\133\002\133\002\133\002\133\002\133\002\133\000\000\002\133\000\000\000\000\000\000\002\133\000\000\002\133\002\133\000\000\000\242\000\000\000\000\002\133\000\000\000\000\002\133\006\178\002\133\002\133\000\000\002\133\002\133\002\133\002\133\000\000\000\000\000\000\002\133\000\000\002\133\002\133\000\000\002\133\002\133\002\133\002\133\002\133\002\133\002\133\000\000\000\000\002\133\002\133\002\133\b\145\029^\000\000\000\000\002\133\002\133\002\133\002\133\002\145\002\145\000\000\002\145\b\137\002\145\007\130\000\000\002\145\018\218\007&\002\145\002\170\002\145\000\000\000\000\011\238\b\145\002\145\002\145\002\145\b\145\002\145\002\145\002\145\000\000\000\000\000\000\000\000\000\000\002\145\002\145\002\145\012.\002\145\000\000\002\145\000\000\000\000\b\137\000\000\000\000\002\145\002\145\002\145\002\145\002\145\000\000\000\000\000\000\018\222\000\000\002\145\014z\002\145\002\145\000\000\b\137\000\000\000\000\000\000\002\145\002\145\002\145\b\137\000\000\018\234\000\000\b\137\000\000\002\145\002\145\011\246\0126\002\145\002\145\002\145\002\145\002\145\000\000\002\145\000\000\000\000\000\000\002\145\000\000\002\145\002\145\000\000\000\242\000\000\000\000\002\145\000\000\000\000\002\145\006\178\002\145\002\145\000\000\002\145\002\145\002\145\002\145\000\000\000\000\000\000\002\145\000\000\002\145\002\145\000\000\002\145\002\145\002\145\002\145\002\145\002\145\002\145\000\000\000\000\002\145\002\145\002\145\bU\025&\000\000\000\000\002\145\002\145\002\145\002\145\002\141\002\141\000\000\002\141\000\242\002\141\bU\000\000\002\141\000\000\007&\002\141\000\000\002\141\000\000\000\000\011\238\bU\002\141\002\141\002\141\bU\002\141\002\141\002\141\000\000\000\000\000\000\000\000\000\000\002\141\002\141\002\141\012.\002\141\000\000\002\141\000\000\000\000\016\198\000\000\000\000\002\141\002\141\002\141\002\141\002\141\002\n\000\000\000\000\002\170\000\000\002\141\014>\002\141\002\141\000\000\014J\000\000\000\000\000\000\002\141\002\141\002\141\014V\004\193\000\000\000\000\014b\000\000\002\141\002\141\011\246\0126\002\141\002\141\002\141\002\141\002\141\000\000\002\141\000\000\000\000\000\000\002\141\000\000\002\141\002\141\031\166\004\193\001\226\000\000\002\141\000\000\000\000\002\141\000\000\002\141\002\141\000\000\002\141\002\141\002\141\002\141\018\234\000\000\000\000\002\141\000\000\002\141\002\141\004\193\002\141\002\141\002\141\002\141\002\141\002\141\002\141\000\000\000\000\002\141\002\141\002\141\000\242\000\000\000\000\000\000\002\141\002\141\002\141\002\141\002\181\002\181\006\178\002\181\004\193\002\181\000\000\002\234\002\181\000\000\002\170\002\181\000\000\002\181\000\000\000\000\011\238\000\000\002\181\002\181\002\181\000\000\002\181\002\181\002\181\000\000\000\000\000\000\000\000\000\000\012&\012>\012F\012.\012N\000\000\002\181\000\000\000\000\000\000\000\000\004\193\002\181\002\181\012V\012^\002\181\000\000\021v\000\000\004\193\000\000\002\181\026J\012f\002\181\000\000\000\000\000\000\000\000\000\000\002\181\002\181\000\242\018\234\000\000\000\000\000\000\000\000\000\000\002\181\002\181\011\246\0126\012n\012v\012\134\002\181\002\181\000\000\002\181\000\000\000\000\000\000\002\181\000\000\002\181\012\142\000\000\000\000\000\000\000\000\002\181\000\000\006\178\002\181\000\000\002\181\012\150\000\000\002\181\002\181\002\181\002\181\000\000\000\000\000\000\002\181\000\000\002\181\002\181\000\000\002\181\002\181\002\181\002\181\012~\002\181\002\181\000\000\000\000\002\181\012\158\002\181\025\214\000\000\000\000\000\000\002\181\002\181\012\166\012\174\002\157\002\157\000\000\002\157\000\000\002\157\000\000\000\000\002\157\000\000\000\000\002\157\000\000\002\157\000\000\000\000\011\238\000\000\002\157\002\157\002\157\000\000\002\157\002\157\002\157\000\000\000\000\000\000\000\000\000\000\002\157\002\157\002\157\012.\002\157\000\000\002\157\000\000\000\000\000\000\000\000\000\000\002\157\002\157\002\157\002\157\002\157\000\000\000\000\000\000\000\000\000\000\002\157\000\000\002\157\002\157\000\000\000\000\000\000\000\000\000\000\002\157\002\157\002\157\000\000\000\000\000\000\000\000\000\000\000\000\002\157\002\157\011\246\0126\002\157\002\157\002\157\002\157\002\157\000\000\002\157\000\000\000\000\000\000\002\157\000\000\002\157\002\157\000\000\000\000\000\000\000\000\002\157\000\000\000\000\002\157\000\000\002\157\002\157\000\000\002\157\002\157\002\157\002\157\000\000\000\000\000\000\002\157\000\000\002\157\002\157\000\000\002\157\002\157\002\157\002\157\002\157\002\157\002\157\000\000\000\000\002\157\002\157\002\157\000\000\000\000\000\000\000\000\002\157\002\157\002\157\002\157\002\153\002\153\000\000\002\153\000\000\002\153\000\000\000\000\002\153\000\000\000\000\002\153\000\000\002\153\000\000\000\000\011\238\000\000\002\153\002\153\002\153\000\000\002\153\002\153\002\153\000\000\000\000\000\000\000\000\000\000\002\153\002\153\002\153\012.\002\153\000\000\002\153\000\000\000\000\000\000\000\000\000\000\002\153\002\153\002\153\002\153\002\153\000\000\000\000\000\000\000\000\000\000\002\153\000\000\002\153\002\153\000\000\000\000\000\000\000\000\000\000\002\153\002\153\002\153\000\000\000\000\000\000\000\000\000\000\000\000\002\153\002\153\011\246\0126\002\153\002\153\002\153\002\153\002\153\000\000\002\153\000\000\000\000\000\000\002\153\000\000\002\153\002\153\000\000\000\000\000\000\000\000\002\153\000\000\000\000\002\153\000\000\002\153\002\153\000\000\002\153\002\153\002\153\002\153\000\000\000\000\000\000\002\153\000\000\002\153\002\153\000\000\002\153\002\153\002\153\002\153\002\153\002\153\002\153\000\000\000\000\002\153\002\153\002\153\000\000\000\000\000\000\000\000\002\153\002\153\002\153\002\153\002\173\002\173\000\000\002\173\000\000\002\173\000\000\000\000\002\173\000\000\000\000\002\173\000\000\002\173\000\000\000\000\011\238\000\000\002\173\002\173\002\173\000\000\002\173\002\173\002\173\000\000\000\000\000\000\000\000\000\000\012&\012>\012F\012.\002\173\000\000\002\173\000\000\000\000\000\000\000\000\000\000\002\173\002\173\012V\012^\002\173\000\000\000\000\000\000\000\000\000\000\002\173\000\000\002\173\002\173\000\000\000\000\000\000\000\000\000\000\002\173\002\173\000\242\000\000\000\000\000\000\000\000\000\000\000\000\002\173\002\173\011\246\0126\012n\012v\002\173\002\173\002\173\000\000\002\173\000\000\000\000\000\000\002\173\000\000\002\173\002\173\000\000\000\000\000\000\000\000\002\173\000\000\000\000\002\173\000\000\002\173\002\173\000\000\002\173\002\173\002\173\002\173\000\000\000\000\000\000\002\173\000\000\002\173\002\173\000\000\002\173\002\173\002\173\002\173\012~\002\173\002\173\000\000\000\000\002\173\002\173\002\173\000\000\000\000\000\000\000\000\002\173\002\173\002\173\002\173\002\129\002\129\000\000\002\129\000\000\002\129\000\000\000\000\002\129\000\000\000\000\002\129\000\000\002\129\000\000\000\000\011\238\000\000\002\129\002\129\002\129\000\000\002\129\002\129\002\129\000\000\000\000\000\000\000\000\000\000\002\129\002\129\002\129\012.\002\129\000\000\002\129\000\000\000\000\000\000\000\000\000\000\002\129\002\129\002\129\002\129\002\129\000\000\000\000\000\000\000\000\000\000\002\129\000\000\002\129\002\129\000\000\000\000\000\000\000\000\000\000\002\129\002\129\002\129\000\000\000\000\000\000\000\000\000\000\000\000\002\129\002\129\011\246\0126\002\129\002\129\002\129\002\129\002\129\000\000\002\129\000\000\000\000\000\000\002\129\000\000\002\129\002\129\000\000\000\000\000\000\000\000\002\129\000\000\000\000\002\129\000\000\002\129\002\129\000\000\002\129\002\129\002\129\002\129\000\000\000\000\000\000\002\129\000\000\002\129\002\129\000\000\002\129\002\129\002\129\002\129\002\129\002\129\002\129\000\000\000\000\002\129\002\129\002\129\000\000\000\000\000\000\000\000\002\129\002\129\002\129\002\129\002}\002}\000\000\002}\000\000\002}\000\000\000\000\002}\000\000\000\000\002}\000\000\002}\000\000\000\000\011\238\000\000\002}\002}\002}\000\000\002}\002}\002}\000\000\000\000\000\000\000\000\000\000\012&\012>\012F\012.\002}\000\000\002}\000\000\000\000\000\000\000\000\000\000\002}\002}\012V\012^\002}\000\000\000\000\000\000\000\000\000\000\002}\000\000\002}\002}\000\000\000\000\000\000\000\000\000\000\002}\002}\000\242\000\000\000\000\000\000\000\000\000\000\000\000\002}\002}\011\246\0126\012n\012v\002}\002}\002}\000\000\002}\000\000\000\000\000\000\002}\000\000\002}\002}\000\000\000\000\000\000\000\000\002}\000\000\000\000\002}\000\000\002}\002}\000\000\002}\002}\002}\002}\000\000\000\000\000\000\002}\000\000\002}\002}\000\000\002}\002}\002}\002}\012~\002}\002}\000\000\000\000\002}\002}\002}\000\000\000\000\000\000\000\000\002}\002}\002}\002}\002\209\002\209\000\000\002\209\000\000\002\209\000\000\000\000\002\209\000\000\000\000\002\209\000\000\002\209\000\000\000\000\011\238\000\000\002\209\002\209\002\209\000\000\002\209\002\209\002\209\000\000\000\000\000\000\000\000\000\000\012&\012>\012F\012.\002\209\000\000\002\209\000\000\000\000\000\000\000\000\000\000\002\209\002\209\012V\012^\002\209\000\000\000\000\000\000\000\000\000\000\002\209\000\000\002\209\002\209\000\000\000\000\000\000\000\000\000\000\002\209\002\209\002\209\000\000\000\000\000\000\000\000\000\000\000\000\002\209\002\209\011\246\0126\012n\002\209\002\209\002\209\002\209\000\000\002\209\000\000\000\000\000\000\002\209\000\000\002\209\002\209\000\000\000\000\000\000\000\000\002\209\000\000\000\000\002\209\000\000\002\209\002\209\000\000\002\209\002\209\002\209\002\209\000\000\000\000\000\000\002\209\000\000\002\209\002\209\000\000\002\209\002\209\002\209\002\209\012~\002\209\002\209\000\000\000\000\002\209\002\209\002\209\000\000\000\000\000\000\000\000\002\209\002\209\002\209\002\209\002y\002y\000\000\002y\000\000\002y\000\000\000\000\002y\000\000\000\000\002y\000\000\002y\000\000\000\000\011\238\000\000\002y\002y\002y\000\000\002y\002y\002y\000\000\000\000\000\000\000\000\000\000\012&\012>\012F\012.\002y\000\000\002y\000\000\000\000\000\000\000\000\000\000\002y\002y\012V\012^\002y\000\000\000\000\000\000\000\000\000\000\002y\000\000\002y\002y\000\000\000\000\000\000\000\000\000\000\002y\002y\000\242\000\000\000\000\000\000\000\000\000\000\000\000\002y\002y\011\246\0126\012n\012v\002y\002y\002y\000\000\002y\000\000\000\000\000\000\002y\000\000\002y\002y\000\000\000\000\000\000\000\000\002y\000\000\000\000\002y\000\000\002y\002y\000\000\002y\002y\002y\002y\000\000\000\000\000\000\002y\000\000\002y\002y\000\000\002y\002y\002y\002y\012~\002y\002y\000\000\000\000\002y\002y\002y\000\000\000\000\000\000\000\000\002y\002y\002y\002y\002\177\002\177\000\000\002\177\000\000\002\177\000\000\000\000\002\177\000\000\000\000\002\177\000\000\002\177\000\000\000\000\011\238\000\000\002\177\002\177\002\177\000\000\002\177\002\177\002\177\000\000\000\000\000\000\000\000\000\000\012&\012>\012F\012.\002\177\000\000\002\177\000\000\000\000\000\000\000\000\000\000\002\177\002\177\012V\012^\002\177\000\000\000\000\000\000\000\000\000\000\002\177\000\000\002\177\002\177\000\000\000\000\000\000\000\000\000\000\002\177\002\177\000\242\000\000\000\000\000\000\000\000\000\000\000\000\002\177\002\177\011\246\0126\012n\012v\002\177\002\177\002\177\000\000\002\177\000\000\000\000\000\000\002\177\000\000\002\177\002\177\000\000\000\000\000\000\000\000\002\177\000\000\000\000\002\177\000\000\002\177\002\177\000\000\002\177\002\177\002\177\002\177\000\000\000\000\000\000\002\177\000\000\002\177\002\177\000\000\002\177\002\177\002\177\002\177\012~\002\177\002\177\000\000\000\000\002\177\002\177\002\177\000\000\000\000\000\000\000\000\002\177\002\177\002\177\002\177\002\169\002\169\000\000\002\169\000\000\002\169\000\000\000\000\002\169\000\000\000\000\002\169\000\000\002\169\000\000\000\000\011\238\000\000\002\169\002\169\002\169\000\000\002\169\002\169\002\169\000\000\000\000\000\000\000\000\000\000\012&\012>\012F\012.\002\169\000\000\002\169\000\000\000\000\000\000\000\000\000\000\002\169\002\169\012V\012^\002\169\000\000\000\000\000\000\000\000\000\000\002\169\000\000\002\169\002\169\000\000\000\000\000\000\000\000\000\000\002\169\002\169\000\242\000\000\000\000\000\000\000\000\000\000\000\000\002\169\002\169\011\246\0126\012n\012v\002\169\002\169\002\169\000\000\002\169\000\000\000\000\000\000\002\169\000\000\002\169\002\169\000\000\000\000\000\000\000\000\002\169\000\000\000\000\002\169\000\000\002\169\002\169\000\000\002\169\002\169\002\169\002\169\000\000\000\000\000\000\002\169\000\000\002\169\002\169\000\000\002\169\002\169\002\169\002\169\012~\002\169\002\169\000\000\000\000\002\169\002\169\002\169\000\000\000\000\000\000\000\000\002\169\002\169\002\169\002\169\002\185\002\185\000\000\002\185\000\000\002\185\000\000\000\000\002\185\000\000\000\000\002\185\000\000\002\185\000\000\000\000\011\238\000\000\002\185\002\185\002\185\000\000\002\185\002\185\002\185\000\000\000\000\000\000\000\000\000\000\012&\012>\012F\012.\012N\000\000\002\185\000\000\000\000\000\000\000\000\000\000\002\185\002\185\012V\012^\002\185\000\000\000\000\000\000\000\000\000\000\002\185\000\000\012f\002\185\000\000\000\000\000\000\000\000\000\000\002\185\002\185\000\242\000\000\000\000\000\000\000\000\000\000\000\000\002\185\002\185\011\246\0126\012n\012v\012\134\002\185\002\185\000\000\002\185\000\000\000\000\000\000\002\185\000\000\002\185\012\142\000\000\000\000\000\000\000\000\002\185\000\000\000\000\002\185\000\000\002\185\012\150\000\000\002\185\002\185\002\185\002\185\000\000\000\000\000\000\002\185\000\000\002\185\002\185\000\000\002\185\002\185\002\185\002\185\012~\002\185\002\185\000\000\000\000\002\185\012\158\002\185\000\000\000\000\000\000\000\000\002\185\002\185\012\166\012\174\002\189\002\189\000\000\002\189\000\000\002\189\000\000\000\000\002\189\000\000\000\000\002\189\000\000\002\189\000\000\000\000\011\238\000\000\002\189\002\189\002\189\000\000\002\189\002\189\002\189\000\000\000\000\000\000\000\000\000\000\012&\012>\012F\012.\002\189\000\000\002\189\000\000\000\000\000\000\000\000\000\000\002\189\002\189\012V\012^\002\189\000\000\000\000\000\000\000\000\000\000\002\189\000\000\012f\002\189\000\000\000\000\000\000\000\000\000\000\002\189\002\189\000\242\000\000\000\000\000\000\000\000\000\000\000\000\002\189\002\189\011\246\0126\012n\012v\012\134\002\189\002\189\000\000\002\189\000\000\000\000\000\000\002\189\000\000\002\189\012\142\000\000\000\000\000\000\000\000\002\189\000\000\000\000\002\189\000\000\002\189\012\150\000\000\002\189\002\189\002\189\002\189\000\000\000\000\000\000\002\189\000\000\002\189\002\189\000\000\002\189\002\189\002\189\002\189\012~\002\189\002\189\000\000\000\000\002\189\002\189\002\189\000\000\000\000\000\000\000\000\002\189\002\189\012\166\012\174\002\193\002\193\000\000\002\193\000\000\002\193\000\000\000\000\002\193\000\000\000\000\002\193\000\000\002\193\000\000\000\000\011\238\000\000\002\193\002\193\002\193\000\000\002\193\002\193\002\193\000\000\000\000\000\000\000\000\000\000\012&\012>\012F\012.\002\193\000\000\002\193\000\000\000\000\000\000\000\000\000\000\002\193\002\193\012V\012^\002\193\000\000\000\000\000\000\000\000\000\000\002\193\000\000\012f\002\193\000\000\000\000\000\000\000\000\000\000\002\193\002\193\000\242\000\000\000\000\000\000\000\000\000\000\000\000\002\193\002\193\011\246\0126\012n\012v\012\134\002\193\002\193\000\000\002\193\000\000\000\000\000\000\002\193\000\000\002\193\012\142\000\000\000\000\000\000\000\000\002\193\000\000\000\000\002\193\000\000\002\193\012\150\000\000\002\193\002\193\002\193\002\193\000\000\000\000\000\000\002\193\000\000\002\193\002\193\000\000\002\193\002\193\002\193\002\193\012~\002\193\002\193\000\000\000\000\002\193\002\193\002\193\000\000\000\000\000\000\000\000\002\193\002\193\012\166\012\174\t\185\t\185\000\000\t\185\000\000\t\185\000\000\000\000\t\185\000\000\000\000\t\185\000\000\t\185\000\000\000\000\011\238\000\000\t\185\t\185\t\185\000\000\t\185\t\185\t\185\000\000\000\000\000\000\000\000\000\000\012&\012>\012F\012.\012N\000\000\t\185\000\000\000\000\000\000\000\000\000\000\t\185\t\185\012V\012^\t\185\000\000\000\000\000\000\000\000\000\000\t\185\000\000\012f\t\185\000\000\000\000\000\000\000\000\000\000\t\185\t\185\000\242\000\000\000\000\000\000\000\000\000\000\000\000\t\185\t\185\011\246\0126\012n\012v\012\134\t\185\t\185\000\000\t\185\000\000\000\000\000\000\t\185\000\000\t\185\012\142\000\000\000\000\000\000\000\000\t\185\000\000\000\000\t\185\000\000\t\185\012\150\000\000\t\185\t\185\t\185\t\185\000\000\000\000\000\000\t\185\000\000\t\185\t\185\000\000\t\185\t\185\t\185\t\185\012~\t\185\t\185\000\000\000\000\t\185\012\158\t\185\000\000\000\000\000\000\000\000\t\185\t\185\012\166\012\174\002\197\002\197\000\000\002\197\000\000\002\197\000\000\000\000\002\197\000\000\000\000\002\197\000\000\002\197\000\000\000\000\011\238\000\000\002\197\002\197\002\197\000\000\002\197\002\197\002\197\000\000\000\000\000\000\000\000\000\000\012&\012>\012F\012.\012N\000\000\002\197\000\000\000\000\000\000\000\000\000\000\002\197\002\197\012V\012^\002\197\000\000\000\000\000\000\000\000\000\000\002\197\000\000\012f\002\197\000\000\000\000\000\000\000\000\000\000\002\197\002\197\000\242\000\000\000\000\000\000\000\000\000\000\000\000\002\197\002\197\011\246\0126\012n\012v\012\134\002\197\002\197\000\000\002\197\000\000\000\000\000\000\002\197\000\000\002\197\012\142\000\000\000\000\000\000\000\000\002\197\000\000\000\000\002\197\000\000\002\197\012\150\000\000\002\197\002\197\002\197\002\197\000\000\000\000\000\000\002\197\000\000\002\197\002\197\000\000\012\182\002\197\002\197\012\190\012~\002\197\002\197\000\000\000\000\002\197\012\158\002\197\000\000\000\000\000\000\000\000\002\197\002\197\012\166\012\174\t\181\t\181\000\000\t\181\000\000\t\181\000\000\000\000\t\181\000\000\000\000\t\181\000\000\t\181\000\000\000\000\011\238\000\000\t\181\t\181\t\181\000\000\t\181\t\181\t\181\000\000\000\000\000\000\000\000\000\000\012&\012>\012F\012.\012N\000\000\t\181\000\000\000\000\000\000\000\000\000\000\t\181\t\181\012V\012^\t\181\000\000\000\000\000\000\000\000\000\000\t\181\000\000\012f\t\181\000\000\000\000\000\000\000\000\000\000\t\181\t\181\000\242\000\000\000\000\000\000\000\000\000\000\000\000\t\181\t\181\011\246\0126\012n\012v\012\134\t\181\t\181\000\000\t\181\000\000\000\000\000\000\t\181\000\000\t\181\012\142\000\000\000\000\000\000\000\000\t\181\000\000\000\000\t\181\000\000\t\181\012\150\000\000\t\181\t\181\t\181\t\181\000\000\000\000\000\000\t\181\000\000\t\181\t\181\000\000\t\181\t\181\t\181\t\181\012~\t\181\t\181\000\000\000\000\t\181\012\158\t\181\000\000\000\000\000\000\000\000\t\181\t\181\012\166\012\174\002\233\002\233\000\000\002\233\000\000\002\233\000\000\000\000\002\233\000\000\000\000\002\233\000\000\002\233\000\000\000\000\011\238\000\000\002\233\002\233\002\233\000\000\002\233\002\233\002\233\000\000\000\000\000\000\000\000\000\000\012&\012>\012F\012.\012N\000\000\002\233\000\000\000\000\000\000\000\000\000\000\002\233\002\233\012V\012^\002\233\000\000\000\000\000\000\000\000\000\000\002\233\000\000\012f\002\233\000\000\000\000\000\000\000\000\000\000\002\233\002\233\000\242\000\000\000\000\000\000\000\000\000\000\000\000\002\233\002\233\011\246\0126\012n\012v\012\134\002\233\002\233\000\000\002\233\000\000\000\000\000\000\002\233\000\000\002\233\012\142\000\000\000\000\000\000\000\000\002\233\000\000\000\000\002\233\000\000\002\233\012\150\000\000\002\233\002\233\002\233\002\233\000\000\000\000\000\000\002\233\000\000\002\233\002\233\000\000\012\182\002\233\002\233\012\190\012~\002\233\002\233\000\000\000\000\002\233\012\158\002\233\000\000\000\000\000\000\000\000\002\233\002\233\012\166\012\174\002\249\002\249\000\000\002\249\000\000\002\249\000\000\000\000\002\249\000\000\000\000\002\249\000\000\002\249\000\000\000\000\011\238\000\000\002\249\002\249\002\249\000\000\002\249\002\249\002\249\000\000\000\000\000\000\000\000\000\000\012&\012>\012F\012.\012N\000\000\002\249\000\000\000\000\000\000\000\000\000\000\002\249\002\249\012V\012^\002\249\000\000\000\000\000\000\000\000\000\000\002\249\000\000\012f\002\249\000\000\000\000\000\000\000\000\000\000\002\249\002\249\000\242\000\000\000\000\000\000\000\000\000\000\000\000\002\249\002\249\011\246\0126\012n\012v\012\134\002\249\002\249\000\000\002\249\000\000\000\000\000\000\002\249\000\000\002\249\012\142\000\000\000\000\000\000\000\000\002\249\000\000\000\000\002\249\000\000\002\249\012\150\000\000\002\249\002\249\002\249\002\249\000\000\000\000\000\000\002\249\000\000\002\249\002\249\000\000\012\182\002\249\002\249\012\190\012~\002\249\002\249\000\000\000\000\002\249\012\158\002\249\000\000\000\000\000\000\000\000\002\249\002\249\012\166\012\174\002\241\002\241\000\000\002\241\000\000\002\241\000\000\000\000\002\241\000\000\000\000\002\241\000\000\002\241\000\000\000\000\011\238\000\000\002\241\002\241\002\241\000\000\002\241\002\241\002\241\000\000\000\000\000\000\000\000\000\000\012&\012>\012F\012.\012N\000\000\002\241\000\000\000\000\000\000\000\000\000\000\002\241\002\241\012V\012^\002\241\000\000\000\000\000\000\000\000\000\000\002\241\000\000\012f\002\241\000\000\000\000\000\000\000\000\000\000\002\241\002\241\000\242\000\000\000\000\000\000\000\000\000\000\000\000\002\241\002\241\011\246\0126\012n\012v\012\134\002\241\002\241\000\000\002\241\000\000\000\000\000\000\002\241\000\000\002\241\012\142\000\000\000\000\000\000\000\000\002\241\000\000\000\000\002\241\000\000\002\241\012\150\000\000\002\241\002\241\002\241\002\241\000\000\000\000\000\000\002\241\000\000\002\241\002\241\000\000\012\182\002\241\002\241\012\190\012~\002\241\002\241\000\000\000\000\002\241\012\158\002\241\000\000\000\000\000\000\000\000\002\241\002\241\012\166\012\174\002\221\002\221\000\000\002\221\000\000\002\221\000\000\000\000\002\221\000\000\000\000\002\221\000\000\002\221\000\000\000\000\011\238\000\000\002\221\002\221\002\221\000\000\002\221\002\221\002\221\000\000\000\000\000\000\000\000\000\000\012&\012>\012F\012.\012N\000\000\002\221\000\000\000\000\000\000\000\000\000\000\002\221\002\221\012V\012^\002\221\000\000\000\000\000\000\000\000\000\000\002\221\000\000\012f\002\221\000\000\000\000\000\000\000\000\000\000\002\221\002\221\000\242\000\000\000\000\000\000\000\000\000\000\000\000\002\221\002\221\011\246\0126\012n\012v\012\134\002\221\002\221\000\000\002\221\000\000\000\000\000\000\002\221\000\000\002\221\012\142\000\000\000\000\000\000\000\000\002\221\000\000\000\000\002\221\000\000\002\221\012\150\000\000\002\221\002\221\002\221\002\221\000\000\000\000\000\000\002\221\000\000\002\221\002\221\000\000\012\182\002\221\002\221\012\190\012~\002\221\002\221\000\000\000\000\002\221\012\158\002\221\000\000\000\000\000\000\000\000\002\221\002\221\012\166\012\174\002\229\002\229\000\000\002\229\000\000\002\229\000\000\000\000\002\229\000\000\000\000\002\229\000\000\002\229\000\000\000\000\011\238\000\000\002\229\002\229\002\229\000\000\002\229\002\229\002\229\000\000\000\000\000\000\000\000\000\000\012&\012>\012F\012.\012N\000\000\002\229\000\000\000\000\000\000\000\000\000\000\002\229\002\229\012V\012^\002\229\000\000\000\000\000\000\000\000\000\000\002\229\000\000\012f\002\229\000\000\000\000\000\000\000\000\000\000\002\229\002\229\000\242\000\000\000\000\000\000\000\000\000\000\000\000\002\229\002\229\011\246\0126\012n\012v\012\134\002\229\002\229\000\000\002\229\000\000\000\000\000\000\002\229\000\000\002\229\012\142\000\000\000\000\000\000\000\000\002\229\000\000\000\000\002\229\000\000\002\229\012\150\000\000\002\229\002\229\002\229\002\229\000\000\000\000\000\000\002\229\000\000\002\229\002\229\000\000\012\182\002\229\002\229\012\190\012~\002\229\002\229\000\000\000\000\002\229\012\158\002\229\000\000\000\000\000\000\000\000\002\229\002\229\012\166\012\174\002\225\002\225\000\000\002\225\000\000\002\225\000\000\000\000\002\225\000\000\000\000\002\225\000\000\002\225\000\000\000\000\011\238\000\000\002\225\002\225\002\225\000\000\002\225\002\225\002\225\000\000\000\000\000\000\000\000\000\000\012&\012>\012F\012.\012N\000\000\002\225\000\000\000\000\000\000\000\000\000\000\002\225\002\225\012V\012^\002\225\000\000\000\000\000\000\000\000\000\000\002\225\000\000\012f\002\225\000\000\000\000\000\000\000\000\000\000\002\225\002\225\000\242\000\000\000\000\000\000\000\000\000\000\000\000\002\225\002\225\011\246\0126\012n\012v\012\134\002\225\002\225\000\000\002\225\000\000\000\000\000\000\002\225\000\000\002\225\012\142\000\000\000\000\000\000\000\000\002\225\000\000\000\000\002\225\000\000\002\225\012\150\000\000\002\225\002\225\002\225\002\225\000\000\000\000\000\000\002\225\000\000\002\225\002\225\000\000\012\182\002\225\002\225\012\190\012~\002\225\002\225\000\000\000\000\002\225\012\158\002\225\000\000\000\000\000\000\000\000\002\225\002\225\012\166\012\174\002\237\002\237\000\000\002\237\000\000\002\237\000\000\000\000\002\237\000\000\000\000\002\237\000\000\002\237\000\000\000\000\011\238\000\000\002\237\002\237\002\237\000\000\002\237\002\237\002\237\000\000\000\000\000\000\000\000\000\000\012&\012>\012F\012.\012N\000\000\002\237\000\000\000\000\000\000\000\000\000\000\002\237\002\237\012V\012^\002\237\000\000\000\000\000\000\000\000\000\000\002\237\000\000\012f\002\237\000\000\000\000\000\000\000\000\000\000\002\237\002\237\000\242\000\000\000\000\000\000\000\000\000\000\000\000\002\237\002\237\011\246\0126\012n\012v\012\134\002\237\002\237\000\000\002\237\000\000\000\000\000\000\002\237\000\000\002\237\012\142\000\000\000\000\000\000\000\000\002\237\000\000\000\000\002\237\000\000\002\237\012\150\000\000\002\237\002\237\002\237\002\237\000\000\000\000\000\000\002\237\000\000\002\237\002\237\000\000\012\182\002\237\002\237\012\190\012~\002\237\002\237\000\000\000\000\002\237\012\158\002\237\000\000\000\000\000\000\000\000\002\237\002\237\012\166\012\174\002\253\002\253\000\000\002\253\000\000\002\253\000\000\000\000\002\253\000\000\000\000\002\253\000\000\002\253\000\000\000\000\011\238\000\000\002\253\002\253\002\253\000\000\002\253\002\253\002\253\000\000\000\000\000\000\000\000\000\000\012&\012>\012F\012.\012N\000\000\002\253\000\000\000\000\000\000\000\000\000\000\002\253\002\253\012V\012^\002\253\000\000\000\000\000\000\000\000\000\000\002\253\000\000\012f\002\253\000\000\000\000\000\000\000\000\000\000\002\253\002\253\000\242\000\000\000\000\000\000\000\000\000\000\000\000\002\253\002\253\011\246\0126\012n\012v\012\134\002\253\002\253\000\000\002\253\000\000\000\000\000\000\002\253\000\000\002\253\012\142\000\000\000\000\000\000\000\000\002\253\000\000\000\000\002\253\000\000\002\253\012\150\000\000\002\253\002\253\002\253\002\253\000\000\000\000\000\000\002\253\000\000\002\253\002\253\000\000\012\182\002\253\002\253\012\190\012~\002\253\002\253\000\000\000\000\002\253\012\158\002\253\000\000\000\000\000\000\000\000\002\253\002\253\012\166\012\174\002\245\002\245\000\000\002\245\000\000\002\245\000\000\000\000\002\245\000\000\000\000\002\245\000\000\002\245\000\000\000\000\011\238\000\000\002\245\002\245\002\245\000\000\002\245\002\245\002\245\000\000\000\000\000\000\000\000\000\000\012&\012>\012F\012.\012N\000\000\002\245\000\000\000\000\000\000\000\000\000\000\002\245\002\245\012V\012^\002\245\000\000\000\000\000\000\000\000\000\000\002\245\000\000\012f\002\245\000\000\000\000\000\000\000\000\000\000\002\245\002\245\000\242\000\000\000\000\000\000\000\000\000\000\000\000\002\245\002\245\011\246\0126\012n\012v\012\134\002\245\002\245\000\000\002\245\000\000\000\000\000\000\002\245\000\000\002\245\012\142\000\000\000\000\000\000\000\000\002\245\000\000\000\000\002\245\000\000\002\245\012\150\000\000\002\245\002\245\002\245\002\245\000\000\000\000\000\000\002\245\000\000\002\245\002\245\000\000\012\182\002\245\002\245\012\190\012~\002\245\002\245\000\000\000\000\002\245\012\158\002\245\000\000\000\000\000\000\000\000\002\245\002\245\012\166\012\174\002\217\002\217\000\000\002\217\000\000\002\217\000\000\000\000\002\217\000\000\000\000\002\217\000\000\002\217\000\000\000\000\011\238\000\000\002\217\002\217\002\217\000\000\002\217\002\217\002\217\000\000\000\000\000\000\000\000\000\000\012&\012>\012F\012.\012N\000\000\002\217\000\000\000\000\000\000\000\000\000\000\002\217\002\217\012V\012^\002\217\000\000\000\000\000\000\000\000\000\000\002\217\000\000\012f\002\217\000\000\000\000\000\000\000\000\000\000\002\217\002\217\000\242\000\000\000\000\000\000\000\000\000\000\000\000\002\217\002\217\011\246\0126\012n\012v\012\134\002\217\002\217\000\000\002\217\000\000\000\000\000\000\002\217\000\000\002\217\012\142\000\000\000\000\000\000\000\000\002\217\000\000\000\000\002\217\000\000\002\217\012\150\000\000\002\217\002\217\002\217\002\217\000\000\000\000\000\000\002\217\000\000\002\217\002\217\000\000\012\182\002\217\002\217\012\190\012~\002\217\002\217\000\000\000\000\002\217\012\158\002\217\000\000\000\000\000\000\000\000\002\217\002\217\012\166\012\174\0021\0021\000\000\0021\000\000\0021\000\000\000\000\0021\000\000\000\000\0021\000\000\0021\000\000\000\000\0021\000\000\0021\0021\0021\000\000\0021\0021\0021\000\000\000\000\000\000\000\000\000\000\0021\0021\0021\0021\0021\000\000\0021\000\000\000\000\000\000\000\000\000\000\0021\0021\0021\0021\0021\000\000\000\000\000\000\000\000\000\000\0021\000\000\0021\0021\000\000\000\000\000\000\000\000\000\000\0021\0021\0021\000\000\000\000\000\000\000\000\000\000\000\000\0021\0021\0021\0021\0021\0021\0021\0021\0021\000\000\0021\000\000\000\000\000\000\0021\000\000\0021\0021\000\000\000\000\000\000\000\000\0021\000\000\000\000\0021\000\000\0021\0021\000\000\0021\0021\0021\0021\000\000\000\000\000\000\0021\000\000\0021\0021\000\000\0021\0021\0021\0021\0021\0021\0021\000\000\000\000\0021\0021\016\158\000\000\000\000\000\000\000\000\0021\0021\0021\0021\002M\002M\000\000\002M\000\000\002M\000\000\000\000\002M\000\000\000\000\002M\000\000\002M\000\000\000\000\011\238\000\000\002M\002M\002M\000\000\002M\002M\002M\000\000\000\000\000\000\000\000\000\000\012&\012>\012F\012.\012N\000\000\002M\000\000\000\000\000\000\000\000\000\000\002M\002M\012V\012^\002M\000\000\000\000\000\000\000\000\000\000\002M\000\000\012f\002M\000\000\000\000\000\000\000\000\000\000\002M\002M\000\242\000\000\000\000\000\000\000\000\000\000\000\000\002M\002M\011\246\0126\012n\012v\012\134\002M\002M\000\000\002M\000\000\000\000\000\000\002M\000\000\002M\012\142\000\000\000\000\000\000\000\000\002M\000\000\000\000\002M\000\000\002M\012\150\000\000\002M\002M\016\182\002M\000\000\000\000\000\000\002M\000\000\002M\002M\000\000\012\182\002M\002M\012\190\012~\002M\002M\000\000\000\000\002M\012\158\002M\000\000\000\000\000\000\000\000\002M\002M\012\166\012\174\002I\002I\000\000\002I\000\000\002I\000\000\000\000\002I\000\000\000\000\002I\000\000\002I\000\000\000\000\011\238\000\000\002I\002I\002I\000\000\002I\002I\002I\000\000\000\000\000\000\000\000\000\000\012&\012>\012F\012.\012N\000\000\002I\000\000\000\000\000\000\000\000\000\000\002I\002I\012V\012^\002I\000\000\000\000\000\000\000\000\000\000\002I\000\000\012f\002I\000\000\000\000\000\000\000\000\000\000\002I\002I\000\242\000\000\000\000\000\000\000\000\000\000\000\000\002I\002I\011\246\0126\012n\012v\012\134\002I\002I\000\000\002I\000\000\000\000\000\000\002I\000\000\002I\012\142\000\000\000\000\000\000\000\000\002I\000\000\000\000\002I\000\000\002I\012\150\000\000\002I\002I\002I\002I\000\000\000\000\000\000\002I\000\000\002I\002I\000\000\012\182\002I\002I\012\190\012~\002I\002I\000\000\000\000\002I\012\158\002I\000\000\000\000\000\000\000\000\002I\002I\012\166\012\174\002\213\002\213\000\000\002\213\000\000\002\213\000\000\000\000\002\213\000\000\000\000\002\213\000\000\002\213\000\000\000\000\011\238\000\000\002\213\002\213\002\213\000\000\002\213\002\213\002\213\000\000\000\000\000\000\000\000\000\000\012&\012>\012F\012.\012N\000\000\002\213\000\000\000\000\000\000\000\000\000\000\002\213\002\213\012V\012^\002\213\000\000\000\000\000\000\000\000\000\000\002\213\000\000\012f\002\213\000\000\000\000\000\000\000\000\000\000\002\213\002\213\000\242\000\000\000\000\000\000\000\000\000\000\000\000\002\213\002\213\011\246\0126\012n\012v\012\134\002\213\002\213\000\000\002\213\000\000\000\000\000\000\002\213\000\000\002\213\012\142\000\000\000\000\000\000\000\000\002\213\000\000\000\000\002\213\000\000\002\213\012\150\000\000\002\213\002\213\002\213\002\213\000\000\000\000\000\000\002\213\000\000\002\213\002\213\000\000\012\182\002\213\002\213\012\190\012~\002\213\002\213\000\000\000\000\002\213\012\158\002\213\000\000\000\000\000\000\000\000\002\213\002\213\012\166\012\174\002=\002=\000\000\002=\000\000\002=\000\000\000\000\002=\000\000\000\000\002=\000\000\002=\000\000\000\000\002=\000\000\002=\002=\002=\000\000\002=\002=\002=\000\000\000\000\000\000\000\000\000\000\002=\002=\002=\002=\002=\000\000\002=\000\000\000\000\000\000\000\000\000\000\002=\002=\002=\002=\002=\000\000\000\000\000\000\000\000\000\000\002=\000\000\002=\002=\000\000\000\000\000\000\000\000\000\000\002=\002=\002=\000\000\000\000\000\000\000\000\000\000\000\000\002=\002=\002=\002=\002=\002=\002=\002=\002=\000\000\002=\000\000\000\000\000\000\002=\000\000\002=\002=\000\000\000\000\000\000\000\000\002=\000\000\000\000\002=\000\000\002=\002=\000\000\002=\002=\002=\002=\000\000\000\000\000\000\002=\000\000\002=\002=\000\000\002=\002=\002=\002=\002=\002=\002=\000\000\000\000\002=\002=\016\158\000\000\000\000\000\000\000\000\002=\002=\002=\002=\002A\002A\000\000\002A\000\000\002A\000\000\000\000\002A\000\000\000\000\002A\000\000\002A\000\000\000\000\002A\000\000\002A\002A\002A\000\000\002A\002A\002A\000\000\000\000\000\000\007\165\000\000\002A\002A\002A\002A\002A\001%\002A\000\000\000\000\000\000\001%\000\000\002A\002A\002A\002A\002A\007\165\000\000\000\000\000\000\007\165\002A\000\000\002A\002A\000\000\000\000\000\000\001%\000\000\002A\002A\002A\000\000\000\000\000\000\000\000\000\000\000\000\002A\002A\002A\002A\002A\002A\002A\002A\002A\000\000\002A\001%\000\000\0036\002A\000\000\002A\002A\000\000\000\000\001%\000\242\002A\000\000\000\000\002A\001%\002A\002A\000\000\002A\002A\002A\002A\007z\001%\001%\002A\000\000\002A\002A\000\000\002A\002A\002A\002A\002A\002A\002A\000\000\000\000\002A\002A\016\158\007~\000\000\000\000\000\000\002A\002A\002A\002A\001\n\000\000\000\006\000\000\001%\000\000\002\230\002\234\007\130\003\022\002\170\000\000\007&\001%\000\000\003\"\001\014\000\000\017\198\007\162\002\190\000\000\000\000\007\174\000\000\001\214\000\000\000\000\000\000\004\022\001\022\nB\nF\001\"\001&\000\242\000\000\000\000\003*\000\000\003\210\000\000\020\006\000\000\nj\nn\000\000\004\006\004\018\004\030\004\"\nr\b\134\000\000\001>\000\000\002\222\000\000\000\000\004\026\t\226\n^\000\000\000\000\t\230\t\234\t\246\n\n\002\n\006\146\000\000\000\000\001B\001F\001J\001N\001R\000\000\002\014\n\134\000\000\006\158\006\162\001V\007\130\000\000\001\214\001Z\007&\007\142\n\146\n\170\011\018\006\174\006\178\007\162\011&\011:\001^\007\174\011B\011\162\000\000\003\142\001b\000\000\000\000\000\000\000\000\b\178\000\000\001\226\000\000\000\000\000\000\001\158\007n\002\222\000\000\006\182\t\254\011J\001\162\011\170\016\230\004\178\011*\001\n\001\170\000\006\001\174\001\178\000\000\002\230\002\234\000\000\003\022\002\170\000\000\000\000\000\000\000\000\003\"\001\014\000\000\000\000\000\000\n>\000\000\000\000\b\182\000\000\001\214\000\000\000\000\000\000\004\022\001\022\nB\nF\001\"\001&\000\000\000\000\003\202\003*\002\234\003\210\000\000\nJ\000\000\nj\nn\003\158\004\006\004\018\004\030\004\"\nr\b\134\000\000\001>\000\000\002\222\001\214\000\000\004\026\t\226\020\030\000\000\000\000\t\230\t\234\t\246\n\n\002\n\006\146\000\000\000\000\001B\001F\001J\001N\001R\000\000\002\014\n\134\003\198\006\158\006\162\001V\000\000\000\000\001\214\001Z\002\222\000\000\n\146\n\170\011\018\006\174\006\178\000\000\011&\000\000\001^\000\000\000\000\000\000\000\000\003\142\001b\000\000\000\000\000\000\000\000\b\178\000\000\001\226\000\000\000\000\000\000\001\158\007\194\002\222\000\000\006\182\t\254\b\154\001\162\000\000\016\230\004\178\011*\004\237\001\170\000\006\001\174\001\178\000\250\002\230\002\234\002\238\003\022\002\170\000\000\000\000\000\000\000\000\003\"\000\000\000\000\003\166\003\202\000\000\002\234\004\237\b\182\003\170\001\214\000\000\021\006\003\158\003&\000\000\003\174\003\178\000\000\t\170\000\000\003\182\000\000\003*\001\214\003\210\000\000\020\154\000\000\003\254\004\002\000\000\004\006\004\018\004\030\004\"\004*\b\134\000\000\000\000\020\254\002\222\000\000\000\000\004\026\t\226\021\022\003\198\000\000\t\230\t\234\t\246\n\n\000\000\006\146\002\222\000\000\000\000\000\000\000\000\000\000\000\000\021\030\000\000\n\134\000\000\006\158\006\162\000\000\000\000\007\206\000\000\000\000\000\000\000\000\n\146\n\170\011\018\006\174\006\178\021&\011&\021b\000\000\000\000\004\237\004\237\000\000\b\154\004\217\007\210\000\000\000\000\000\000\004\217\000\000\000\000\000\000\019\230\000\000\000\000\000\000\021\158\025\166\006\182\t\254\018^\000\197\000\000\n\022\004\178\011*\000\197\004\217\002\234\000\197\000\000\002\170\000\000\011Z\000\000\000\000\003\"\000\000\000\000\000\197\000\000\000\197\000\000\000\197\000\000\000\197\001\214\000\242\011\146\004\217\003&\000\000\000\000\000\000\000\000\000\000\011\154\000\197\004\217\003*\000\000\003\210\000\000\000\197\004\217\003\014\000\242\000\197\000\000\004\018\000\000\001\194\000\000\000\197\004\217\000\000\000\197\002\222\000\000\000\000\004\026\t\226\000\197\000\197\000\197\t\230\t\234\t\246\000\000\015\006\006\146\000\197\000\197\000\000\000\000\000\000\007\130\000\000\000\197\000\000\007&\000\197\006\158\006\162\004\217\000\197\000\000\007\162\000\000\001\161\000\000\007\174\000\000\004\217\006\174\006\178\000\197\000\000\000\197\000\000\000\000\000\197\000\197\000\000\000\000\000\000\000\000\000\000\001\161\003\017\000\000\000\197\000\000\000\000\007\177\000\000\003\017\000\000\000\197\000\197\006\182\t\254\000\000\000\000\000\221\n\022\004\178\003\017\000\197\000\221\000\197\002\234\000\221\007\177\002\170\000\n\011Z\007\177\000\000\003\"\000\000\000\000\000\221\000\000\000\221\000\000\000\221\000\000\000\221\001\214\003\017\011\146\000\000\003&\000\000\000\000\000\000\000\000\003\017\011\154\000\221\000\000\003*\000\000\003\210\003\017\000\221\000\000\000\000\000\000\000\221\000\000\004\018\000\000\001\194\000\000\000\221\000\000\001\161\000\221\002\222\000\000\000\000\004\026\t\226\000\221\000\221\000\221\t\230\t\234\t\246\003\017\015\006\006\146\000\221\000\221\000\000\000\000\000\000\001\161\000\000\000\221\000\000\000\000\000\221\006\158\006\162\001\161\000\221\000\000\000\000\000\000\007\177\000\000\000\000\017\030\000\000\006\174\006\178\000\221\000\000\000\221\000\000\000\000\000\221\000\221\003\186\000\000\011f\000\000\000\000\011r\000\000\000\000\000\221\000\000\000\000\000\000\000\000\000\000\000\000\000\221\000\221\006\182\t\254\000\000\000\000\000\000\n\022\004\178\t\209\000\221\000\006\000\221\000\000\000\250\002\230\002\234\002\238\003\022\002\170\000\000\000\000\000\000\000\000\003\"\000\000\000\000\005\r\000\000\t\209\000\000\t\209\t\209\003\170\001\214\000\000\000\000\000\000\003&\000\000\003\174\003\178\000\000\000\000\000\000\003\182\000\000\003*\000\000\003\210\000\000\020\154\000\000\003\254\004\002\000\000\004\006\004\018\004\030\004\"\004*\b\134\000\000\000\000\020\254\002\222\000\000\000\000\004\026\t\226\021\022\000\000\000\000\t\230\t\234\t\246\n\n\000\000\006\146\000\000\000\000\000\000\000\000\000\000\000\000\000\000\021\030\000\000\n\134 \150\006\158\006\162\014\165 \182\000\000\000\000\000\000\000\000\000\000\n\146\n\170\011\018\006\174\006\178\021&\011&\021b\000\000\000\000 \215\018\n\000\000\014\165\000\000\000\000\002\"\000\000\000\000\002&\000\000\000\000\000\000\t\209\000\000\000\000\000\000\000\000\025\166\006\182\t\254\t\209\0022\000\000\n\022\004\178\011*\000\006\000\000\000\000\000\250\002\230\002\234\002\238\003\022\002\170\000\000\000\000\000\000\000\000\003\"\000\000\000\000!\006\000\000\000\000\000\000\004:\000\000\003\170\001\214\002>\000\000\000\000\003&\000\000\003\174\003\178\000\000\000\000\000\000\003\182\000\000\003*\000\000\003\210\000\000\020\154\000\000\003\254\004\002\000\000\004\006\004\018\004\030\004\"\004*\b\134\000\000\000\000\020\254\002\222\000\000\000\000\004\026\t\226\021\022\000\000\000\000\t\230\t\234\t\246\n\n\000\000\006\146\000\000\000\000\000\000\000\000\000\000\000\000\002B\021\030\000\000\n\134 \150\006\158\006\162\000\000 \182\000\000\000\000\000\000\000\000\000\000\n\146\n\170\011\018\006\174\006\178\021&\011&\021b\000\000\000\000\005\021\000\000\000\000\000\000\000\000\000\000\000\000\001\n\000\000\000\000\000\000\000\000\000\000\003:\002\234\011\002\000\000\002\170\025\166\006\182\t\254\017r\003\"\001\014\n\022\004\178\011*\002\190\003\017\000\000\000\000\000\000\001\214\000\000\000\000\003\017\001\018\001\022\001\026\003j\001\"\001&\000\000\000\000\000\000\000\000\003\017\000\000\000\000\003n\000\000\0012\007j\000\000\000\n\003f\rZ\001\194\001:\000\000\000\000\001>\000\000\002\222\000\000\000\000\004.\0042\000\000\003\017\000\000\0046\000\000\004>\006\134\000\000\006\146\003\017\000\000\001B\001F\001J\001N\001R\003\017\001\210\000\000\006\150\006\158\006\162\001V\006\166\000\000\000\000\001Z\000\000\000\000\000\000\000\000\000\000\006\174\006\178\000\000\001\214\007\006\001^\000\000\000\000\000\000\000\000\003\017\001b\000\000\000\000\000\000\000\000\022\178\000\000\000\000\000\000\000\000\000\000\001\158\007n\000\000\000\000\006\182\000\000\004z\001\162\023*\001\166\004\178\001\n\002\222\001\170\000\000\001\174\001\178\003:\002\234\012\218\023B\002\170\000\000\b\142\000\000\001.\003\"\001\014\000\000\000\000\000\000\002\190\003\017\000\000\000\000\000\000\001\214\000\000\000\000\003\017\001\018\001\022\001\026\003j\001\"\001&\000\000\000\000\000\000\000\000\003\017\000\000\000\000\003n\000\000\0012\007j\000\000\000\n\003f\rZ\001\194\001:\000\000\000\000\001>\000\000\002\222\000\000\000\000\004.\0042\000\000\003\017\000\000\0046\000\000\004>\006\134\000\000\006\146\003\017\000\000\001B\001F\001J\001N\001R\003\017\000\000\014\165\006\150\006\158\006\162\001V\006\166\000\000\000\000\001Z\000\000\000\000\000\000\000\000\000\000\006\174\006\178\000\000\000\000\007\006\001^\014\165\000\000\000\000\002\"\003\017\001b\002&\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\158\007n\000\000\0022\006\182\000\000\002:\001\162\014\145\001\166\004\178\000\000\0049\001\170\000\000\001\174\001\178\0049\003:\002\234\0049\000\000\002\170\000\000\b:\000\000\000\000\003\"\000\000\000\000\0049\000\000\002>\000\000\0049\000\000\0049\001\214\000\000\br\000\000\000\000\000\000\000\000\003>\000\000\000\000\n\182\0049\000\000\000\000\000\000\000\000\000\000\0049\000\000\000\000\003R\000\000\000\000\r\170\000\000\001\194\000\000\0049\000\000\000\000\0049\002\222\000\000\000\000\004.\0042\0049\0049\011\237\0046\000\000\004>\000\000\012\230\006\146\002B\000\000\000\000\000\000\000\000\000\000\000\000\0049\0049\000\000\006\150\006\158\006\162\000\000\006\166\000\000\000\000\000\000\000\000\000\000\000\000\005\005\000\000\006\174\006\178\0049\025\210\0049\r\186\000\000\0049\0049\002\234\000\000\000\000\000\000\000\000\000\000\007z\000\000\000\000\000\000\011\237\000\000\011f\003\170\011\237\r\222\0049\006\182\001\214\000\000\000\000\011\237\001\n\004\178\000\000\011\237\007~\0049\003:\002\234\r\174\025\198\002\170\000\000\000\000\026F\000\000\003\"\001\014\000\000\000\000\027\006\002\190\003\222\020\254\027\n\000\000\001\214\000\000\002\222\021\022\001\018\001\022\001\026\003j\001\"\001&\027:\000\000\026\234\026\250\000\000\000\000\000\000\003n\000\000\0012\007j\000\000\000\242\003f\rZ\001\194\001:\000\000\000\000\001>\000\000\002\222\000\000\000\000\004.\0042\000\000\027J\000\000\0046\000\000\004>\006\134\005\005\006\146\000\000\000\000\001B\001F\001J\001N\001R\027\238\000\000\000\000\006\150\006\158\006\162\001V\006\166\000\000\000\000\001Z\000\000\000\000\000\000\000\000\000\000\006\174\006\178\000\000\007\130\007\006\001^\000\000\007&\r\026\000\000\000\000\001b\000\000\000\000\007\162\000\000\007z\000\000\007\174\000\000\000\000\000\000\001\158\007n\000\000\000\000\006\182\000\000\000\000\001\162\000\000\001\166\004\178\001\n\000\000\001\170\007~\001\174\001\178\003:\002\234\016J\000\000\002\170\000\000\000\000\000\000\000\000\003\"\001\014\000\000\000\000\000\000\002\190\000\000\000\000\000\000\000\000\001\214\000\000\000\000\000\000\001\018\001\022\001\026\003j\001\"\001&\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003n\000\000\0012\007j\000\242\000\000\003f\rZ\001\194\001:\000\000\000\000\001>\000\000\002\222\000\000\000\000\004.\0042\020Z\000\000\000\000\0046\000\000\004>\006\134\002\n\006\146\000\000\000\000\001B\001F\001J\001N\001R\000\000\002\014\000\000\006\150\006\158\006\162\001V\006\166\000\000\001\214\001Z\000\000\000\000\000\000\000\000\000\000\006\174\006\178\007\130\000\000\007\006\001^\007&\rj\000\000\000\000\003\142\001b\000\000\007\162\000\000\000\000\b\178\007\174\001\226\000\000\000\000\000\000\001\158\007n\002\222\000\000\006\182\000\000\000\000\001\162\000\000\001\166\004\178\001\n\000\000\001\170\000\000\001\174\001\178\003:\002\234\007J\000\000\002\170\000\000\000\000\000\000\000\000\003\"\001\014\000\000\000\000\000\000\002\190\000\000\000\000\000\000\b\182\001\214\000\000\000\000\000\000\001\018\001\022\001\026\003j\001\"\001&\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003n\000\000\0012\007j\000\000\000\000\003f\012\238\001\194\001:\000\000\000\000\001>\000\000\002\222\000\000\000\000\004.\0042\020j\000\000\000\000\0046\000\000\004>\006\134\002\n\006\146\000\000\000\000\001B\001F\001J\001N\001R\000\000\002\014\000\000\006\150\006\158\006\162\001V\006\166\000\000\001\214\001Z\000\000\000\000\000\000\000\000\000\000\006\174\006\178\000\000\000\000\007\006\001^\000\000\000\000\000\000\000\000\003\142\001b\001-\000\000\000\000\000\000\b\178\001-\001\226\000\000\000\000\000\000\001\158\007n\002\222\000\000\006\182\000\000\000\000\001\162\000\000\001\166\004\178\000\000\000\000\001\170\001-\001\174\001\178\000\014\000\018\000\022\000\026\000\030\000\000\000\"\000&\000*\000.\0002\000\000\0006\000:\000\000\000\000\000>\000\000\b\182\001-\000B\022\186\000\000\000\000\000\000\000\000\000\000\000F\001-\000\000\000\000\000\000\000\000\000J\001-\000N\000R\000V\000Z\000^\000b\000f\014\165\014\145\001-\000j\000n\000\000\000r\000v\000\000\000z\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\014\165\000\000\000\000\002\"\000~\000\000\002&\000\130\000\134\000\000\000\000\000\000\001-\002.\000\138\000\142\000\146\000\000\000\000\0022\000\000\001-\002:\000\000\014\145\000\000\000\150\000\154\000\158\000\162\000\000\000\166\000\170\000\000\000\174\000\000\000\000\000\000\000\178\000\182\000\186\000\000\000\000\000\000\000\190\000\000\000\194\000\198\002>\000\000\000\000\001\206\001\210\000\000\000\000\000\202\000\000\000\206\000\000\000\000\000\000\000\000\na\000\210\000\214\na\000\218\000\000\na\na\001\214\002\174\na\000\000\na\000\000\000\000\na\000\000\000\000\000\000\na\na\000\000\na\na\000\000\na\000\000\na\000\000\000\000\000\000\002\218\na\029\210\000\000\na\002B\002\214\000\000\002\222\004Z\004f\000\000\na\000\000\na\000\000\004r\na\000\000\na\000\000\000\000\000\000\000\000\000\000\na\000\000\000\000\na\na\000\000\000\000\na\na\000\000\na\004v\na\na\029\254\000\000\000\000\000\000\000\000\000\000\003\017\003\017\na\000\000\na\na\na\000\000\na\000\000\000\000\000\000\029\234\000\000\000\000\000\000\000\000\na\na\000\000\003\017\000\000\na\003\017\na\000\000\003\017\000\n\000\000\006\218\000\000\003\017\000\000\003\017\003\017\000\000\na\na\na\003\017\na\na\003\017\na\003\017\na\000\000\na\003\017\na\003\017\na\003\017\003\017\000\000\003\017\003\017\003\017\003\017\000\n\000\n\003\017\000\000\000\000\000\000\000\000\000\000\003\017\003\017\003\017\000\000\003\017\003\017\003\017\003\017\003\017\000\n\003\017\003\017\000\n\000\000\003\017\b\138\003\017\003\017\000\000\003\017\003\017\018\146\003\017\003\017\003\017\000\000\003\017\003\017\003\017\003\017\003\017\003\017\003\017\000\000\000\000\003\017\003\017\000\000\003\017\003\017\003\017\003\017\003\017\003\017\003\017\003\017\003\017\003\017\003\017\003\017\000\000\003\017\000\000\000\000\000\000\000\000\000\000\003\017\003\017\003\017\003\017\003\017\000\000\003\017\000\000\000\000\000\000\000\000\000\000\003\017\003\017\003\017\003\017\003\017\000\000\003\017\018\206\0071\000\000\000A\003\017\000\000\000\000\000A\000A\000\000\000A\000A\000\000\000\000\000\000\000\000\000A\000\000\000\000\003\017\003\017\0071\003\017\003\017\003\017\003\017\000A\003\017\003\017\003\017\000A\000\000\000A\000A\000\000\000\000\000\000\000\000\000\000\000A\000\000\000A\000\000\000\000\000\000\000A\000A\000\000\000A\000A\000A\000A\000A\000A\000\000\000\000\000\000\000A\000\000\000\000\000A\000A\000\000\000\000\000\000\000A\000A\000A\000A\000\000\000A\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000A\000\000\000A\000A\000\000\000\250\000\000\000\000\002\238\000\000\000\000\000A\000A\000A\000A\000A\000\000\000A\005\r\007-\000\000\000=\000\000\000\000\003\170\000=\000=\000\000\000=\000=\000\000\000\000\000\000\000\000\000=\000\000\003\182\000\000\000\000\007-\000A\000A\020\154\000\000\000=\000A\000A\000A\000=\000\000\000=\000=\028n\000\000\000\000\020\254\000\000\000=\000\000\000=\000\000\021\022\000\000\000=\000=\000\000\000=\000=\000=\000=\000=\000=\000\000\000\000\000\000\000=\000\000\021\030\000=\000=\000\000\000\000\000\000\000=\000=\000=\000=\000\000\000=\000\000\000\000\000\000\000\000\000\000\000\000\021&\000\000\021b\000=\000\000\000=\000=\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000=\000=\000=\000=\000=\000\000\000=\000\000\007=\025\166\014\017\000\000\000\000\000\000\014\017\014\017\000\000\014\017\014\017\000\000\000\000\000\000\000\000\014\017\000\000\000\000\000\000\000\000\007=\000=\000=\000\000\000\000\014\017\000=\000=\000=\014\017\000\000\014\017\014\017\000\000\000\000\000\000\000\000\000\000\014\017\000\000\014\017\000\000\000\000\000\000\014\017\014\017\000\000\014\017\014\017\014\017\014\017\014\017\014\017\000\000\000\000\000\000\014\017\000\000\000\000\014\017\014\017\000\000\000\000\000\000\014\017\014\017\014\017\014\017\000\000\014\017\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\014\017\000\000\014\017\014\017\000\000\000\000\000\000\000\000\000\000\000\000\000\000\014\017\014\017\014\017\014\017\014\017\000\000\014\017\000\000\0079\000\000\014\r\000\000\000\000\000\000\014\r\014\r\000\000\014\r\014\r\000\000\000\000\000\000\000\000\014\r\000\000\000\000\000\000\000\000\0079\014\017\014\017\000\000\000\000\014\r\014\017\014\017\014\017\014\r\000\000\014\r\014\r\000\000\004\253\000\000\000\000\000\000\014\r\022\202\014\r\000\000\000\000\000\000\014\r\014\r\000\000\014\r\014\r\014\r\014\r\014\r\014\r\000\000\000\000\000\000\014\r\000\000\003\170\014\r\014\r\000\000\000\000\000\000\014\r\014\r\014\r\014\r\000\000\014\r\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\014\r\022\246\014\r\014\r\000\000\000\000\000\000\000\000\000\000\000\000\020\254\014\r\014\r\014\r\014\r\014\r\021\022\014\r\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\023\"\000\000\000\000\012\017\000\000\000\000\012\017\000\000\000\000\003:\002\234\000\000\000\000\002\170\014\r\014\r\000\000\000\000\003\"\014\r\014\r\014\r\012\017\012\017\000\000\012\017\012\017\000\000\001\214\000\000\004\253\000\000\000\000\000\000\000\000\003>\000\000\000\000\000\000\023\134\000\000\000\000\000\000\000\000\000\000\000\000\012\017\000\000\003R\000\000\000\000\003f\n\194\001\194\000\000\000\000\000\000\000\000\000\000\002\222\001\206\001\210\004.\0042\000\000\000\000\012\017\0046\000\000\004>\006\134\000\000\006\146\000\000\000\000\000\000\000\000\000\000\000\000\001\214\002\174\012\017\000\000\006\150\006\158\006\162\000\000\006\166\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\006\174\006\178\000\000\000\000\007\006\012\017\002\218\012\017\029\210\000\000\000\000\000\000\002\214\000\000\002\222\004Z\004f\000\000\000\000\012\017\012\017\000\000\004r\012\017\012\017\000\000\006\182\000\000\012\017\000\000\012\017\000\000\004\178\012\r\012\017\000\000\012\r\000\000\000\000\003:\002\234\000\000\004v\002\170\000\000\005a\000\000\000\000\003\"\000\000\000\000\000\000\012\r\012\r\000\000\012\r\012\r\000\000\001\214\000\000\000\000\000\000\000\000\029\234\000\000\003>\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\012\r\000\000\003R\000\000\000\000\007F\000\000\001\194\000\000\000\000\000\000\000\000\000\000\002\222\000\000\000\000\004.\0042\000\000\000\000\012\r\0046\000\000\004>\006\134\000\000\006\146\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\012\r\000\000\006\150\006\158\006\162\000\000\006\166\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\006\174\006\178\000\000\000\000\007\006\012\r\000\000\012\r\000\006\000\000\000\000\000\000\002\230\002\234\000\000\003\022\002\170\000\000\000\000\012\r\012\r\003\"\000\000\012\r\012\r\000\000\006\182\000\000\012\r\000\000\012\r\001\214\004\178\000\000\012\r\003&\000\000\003\174\003\178\000\000\000\000\000\000\000\000\000\000\003*\000\000\003\210\000\000\000\000\000\000\003\254\004\002\000\000\004\006\004\018\004\030\004\"\004*\b\134\001\206\001\210\000\000\002\222\000\000\000\000\004\026\t\226\000\000\000\000\000\000\t\230\t\234\t\246\n\n\000\000\006\146\000\000\000\000\001\214\002\174\000\000\000\000\000\000\000\000\000\000\n\134\000\000\006\158\006\162\000\000\000\000\000\000\000\000\000\000\000\000\000\000\n\146\n\170\011\018\006\174\006\178\002\218\011&\004z\000\000\000\000\000\000\002\214\000\000\002\222\004Z\004f\000\000\000\000\000\000\000\000\000\006\004r\000\000\016\250\002\230\002\234\000\000\003\022\002\170\006\182\t\254\000\000\000\000\003\"\n\022\004\178\011*\000\000\000\000\000\000\017\146\004v\000\000\001\214\000\000\019R\000\000\003&\000\000\003\174\003\178\000\000\000\000\000\000\000\000\000\000\003*\000\000\003\210\000\000\000\000\000\000\003\254\004\002\000\000\004\006\004\018\004\030\004\"\004*\b\134\000\000\000\000\000\000\002\222\001\206\001\210\004\026\t\226\000\000\000\000\000\000\t\230\t\234\t\246\n\n\000\000\006\146\000\000\000\000\000\000\000\000\000\000\000\000\001\214\002\174\001\234\n\134\000\000\006\158\006\162\000\000\000\000\000\000\001\246\000\000\000\000\000\000\n\146\n\170\011\018\006\174\006\178\000\000\011&\000\000\000\000\001\250\002\194\002\202\000\000\000\000\000\000\002\214\000\000\002\222\004Z\004f\000\000\000\000\000\000\000\000\000\000\004r\000\000\000\000\000\000\006\182\t\254\000\000\000a\000\000\n\022\004\178\011*\000a\000\000\000a\000a\000\000\000\000\000\000\000\000\004v\000\000\000\000\000a\000\000\000a\000a\000a\000\000\000a\000a\000a\000\000\tQ\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000a\000\000\000\000\000\000\000\000\000\000\000a\000a\000\000\000\000\000a\000\000\000\000\000\000\000a\000\000\000a\000\000\004\178\000a\000\000\000\000\000\000\000\000\000\000\000a\000a\000a\000\000\000\000\000\000\000\000\000\000\000\000\000a\000a\000\000\000\000\000\000\000\000\000\000\000a\000a\000\000\000a\000\000\000\000\000\000\000a\000\000\000\000\000a\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000a\000\000\000a\000a\000\000\000a\000a\000\000\000\000\000\000\000\000\tQ\000\000\000\000\000\000\000a\000\000\000a\000\000\000a\000\000\000\000\005\145\000a\000\000\000\000\000\000\005\145\000a\005\145\005\145\005\145\000a\000\000\000a\005\145\000\000\005\145\005\145\000\000\005\145\000\000\005\145\000\000\005\145\000\000\005\145\000\000\005\145\005\145\005\145\000\000\005\145\005\145\005\145\000\000\000\000\000\000\005\145\000\000\000\000\000\000\000\000\000\000\005\145\005\145\005\145\000\000\000\000\000\000\000\000\000\000\005\145\005\145\000\000\t\229\005\145\005\145\000\000\000\000\005\145\000\000\005\145\005\145\005\145\005\145\000\000\000\000\000\000\000\000\000\000\005\145\005\145\005\145\007\238\000\000\000\000\t\229\000\000\005\145\005\145\005\145\005\145\000\000\000\000\000\000\005\145\005\145\000\000\000\000\005\145\000\000\000\000\000\000\005\145\000\000\000\000\005\145\000\000\005\145\005\145\000\000\005\145\005\145\000\000\005\145\000\000\005\145\005\145\000\000\005\145\005\145\014\165\014\145\000\000\000\000\000\000\000\000\000\242\024\014\005\145\000\000\005\145\000\000\005\145\000\000\000\000\002\206\005\145\000\000\000\000\005\145\014\165\005\145\000\000\002\"\000\000\005\145\002&\005\145\005\145\000u\000u\000\000\000\000\002\250\000u\000\000\000u\000u\000\000\0022\000\000\000\000\002:\000\000\014\145\000u\000\000\000u\000u\000u\000\000\000u\000u\000u\000\000\007\130\t\229\000\000\000\000\007&\000\000\000\000\000\000\000\000\t\229\000u\007\162\000\000\002>\000\000\007\174\000u\000u\000\000\000\000\000u\000\000\000\000\000\000\000u\000\000\000u\000\000\000\000\000u\000\000\000\000\000\000\000\000\000\000\000u\000u\000u\000\000\000\000\000\000\000\000\000\000\000\000\000u\000u\000\000\000\000\000\000\000\000\000\000\000u\000u\000\000\004\190\000\000\000\000\000\000\000u\000\000\000\000\000u\000\000\002B\000\000\000\000\000\000\000\000\000\000\000u\000\000\000u\000u\000\000\000u\000u\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000u\000\000\000u\000\000\000u\000\000\000\000\000\000\000u\000\000\000\000\b5\000\000\000u\b5\000\000\000\000\000u\000\000\000u\000u\000y\000y\000\000\000\000\000\000\000y\000\000\000y\000y\b5\b5\000\000\b5\b5\000\000\000\000\000y\000\000\000y\000y\000y\000\000\000y\000y\000y\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b5\000\000\000\000\000y\000\000\000\000\000\000\000\000\000\000\000y\000y\000\000\000\000\000y\000\000\000\000\000\000\000y\000\000\000y\b5\000\000\000y\000\000\000\000\000\000\000\000\000\000\000y\000y\000y\000\000\000\000\000\000\000\000\b5\000\000\000y\000y\000\000\000\000\000\000\000\000\000\000\000y\000y\000\000\004\254\000\000\000\000\000\000\000y\000\000\000\000\000y\b5\000\000\b5\000\000\000\000\000\000\000\000\000y\000\000\000y\000y\000\000\000y\000y\007\030\b5\000\000\000\000\b5\b5\000\000\000\000\000y\b5\000y\b5\000y\000\000\000\000\b5\000y\000\000\000\000\bI\000\000\000y\bI\000\000\000\000\000y\000\000\000y\000y\000}\000}\000\000\000\000\000\000\000}\000\000\000}\000}\bI\bI\000\000\bI\bI\000\000\000\000\000}\000\000\000}\000}\000}\000\000\000}\000}\000}\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\bI\000\000\000\000\000}\000\000\000\000\000\000\000\000\000\000\000}\000}\000\000\000\000\000}\000\000\000\000\000\000\000}\000\000\000}\000\242\000\000\000}\000\000\000\000\000\000\000\000\000\000\000}\000}\000}\000\000\000\000\000\000\000\000\bI\000\000\000}\000}\000\000\000\000\000\000\000\000\000\000\000}\000}\000\000\0056\000\000\000\000\000\000\000}\000\000\000\000\000}\bI\000\000\bI\000\000\000\000\000\000\000\000\000}\000\000\000}\000}\000\000\000}\000}\bI\bI\000\000\000\000\007&\bI\000\000\000\000\000}\bI\000}\bI\000}\000\000\000\000\bI\000}\000\000\000\000\b!\000\000\000}\b!\000\000\000\000\000}\000\000\000}\000}\t\189\t\189\000\000\000\000\000\000\t\189\000\000\001\210\t\189\b!\b!\000\000\b!\b!\000\000\000\000\t\189\000\000\t\189\t\189\t\189\000\000\t\189\t\189\t\189\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b!\000\000\000\000\t\189\000\000\000\000\000\000\000\000\000\000\t\189\t\189\000\000\000\000\t\189\000\000\000\000\000\000\004z\000\000\t\189\b!\000\000\t\189\000\000\000\000\000\000\000\000\000\000\t\189\t\189\t\189\000\000\000\000\000\000\000\000\b!\000\000\t\189\t\189\000\000\000\000\000\000\000\000\000\000\t\189\000\000\000\000\t\189\000\000\000\000\000\000\004\242\000\000\000\000\t\189\b!\000\000\b!\000\000\000\000\000\000\000\000\t\189\000\000\t\189\t\189\000\000\t\189\t\189\b!\b!\000\000\000\000\007&\b!\000\000\000\000\t\189\b!\t\189\b!\t\189\000\000\000\000\b!\t\189\000\000\000\000\bM\000\000\t\189\bM\000\000\000\000\t\189\000\000\t\189\t\189\014e\014e\000\000\000\000\000\000\014e\000\000\001\210\014e\bM\bM\000\000\bM\bM\000\000\000\000\005\006\000\000\014e\014e\014e\000\000\014e\014e\014e\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\bM\000\000\000\000\014e\000\000\000\000\000\000\000\000\000\000\014e\014e\000\000\000\000\014e\000\000\000\000\000\000\004z\000\000\014e\000\242\000\000\014e\000\000\000\000\000\000\000\000\000\000\014e\014e\014e\000\000\000\000\000\000\000\000\bM\000\000\014e\014e\000\000\000\000\000\000\000\000\000\000\014e\000\000\000\000\014e\000\000\000\000\000\000\004\242\000\000\000\000\014e\bM\000\000\bM\000\000\000\000\000\000\000\000\014e\000\000\014e\014e\000\000\014e\014e\bM\bM\000\000\000\000\007&\bM\000\000\000\000\014e\bM\014e\bM\014e\000\000\000\000\bM\014e\000\000\000\000\000\000\000\000\014e\000\000\000\000\000\000\014e\000\000\014e\014e\t\193\t\193\000\000\000\000\000\000\t\193\000\000\001\210\t\193\000\000\000\000\000\000\000\000\000\000\000\000\000\000\t\193\000\000\t\193\t\193\t\193\004\217\t\193\t\193\t\193\000\000\004\217\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\t\193\000\000\000\000\000\000\000\000\000\000\t\193\t\193\000\000\004\217\t\193\000\000\000\000\000\000\004z\000\000\t\193\000\000\000\000\t\193\000\000\000\000\000\000\000\000\000\000\t\193\t\193\t\193\000\000\000\000\000\000\004\217\000\000\000\000\t\193\t\193\000\000\000\000\000\000\000\000\004\217\t\193\000\000\000\000\t\193\000\000\004\217\003\014\004\242\b=\000\000\t\193\b=\000\000\000\000\004\217\004\217\000\000\000\000\t\193\000\000\t\193\t\193\000\000\t\193\t\193\000\000\000\000\b=\b=\000\000\b=\b=\000\000\t\193\000\000\t\193\000\000\t\193\000\000\014i\014i\t\193\000\000\000\000\014i\004\217\t\193\014i\000\000\000\000\t\193\b=\t\193\t\193\004\217\004\226\000\000\014i\014i\014i\000\000\014i\014i\014i\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\242\000\000\000\000\000\000\014i\000\000\000\000\000\000\000\000\000\000\014i\014i\000\000\000\000\014i\b=\000\000\000\000\000\000\000\000\014i\000\000\000\000\014i\000\000\000\000\000\000\000\000\000\000\014i\014i\014i\000\000\000\000\000\000\b=\000\000\b=\014i\014i\000\000\000\000\000\000\000\000\000\000\014i\000\000\000\000\014i\007\130\b=\000\000\014i\007&\b=\014i\000\000\000\000\b=\000\000\b=\000\000\000\000\014i\b=\014i\014i\000\000\014i\014i\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\014i\000\000\014i\000\000\014i\000\000\003M\003M\014i\000\000\000\000\003M\000\000\014i\003M\000\000\000\000\014i\000\000\014i\014i\000\000\000\000\000\000\003M\003M\003M\000\000\003M\003M\003M\000\000\000\000\000\000\000\000\000\000\000\000\001\206\001\210\000\000\000\000\000\000\003M\000\000\000\000\000\000\000\000\000\000\003M\004\198\000\000\000\000\003M\000\000\000\000\000\000\001\214\002\174\003M\000\000\000\000\003M\000\000\000\000\000\000\000\000\000\000\003M\003M\003M\000\000\000\000\000\000\000\000\000\000\000\000\003M\003M\000\000\002\218\000\000\004z\000\000\003M\000\000\002\214\003M\002\222\004Z\004f\003M\000\000\000\000\003M\000\000\004r\000\000\018\246\000\000\000\000\000\000\003M\000\000\003M\003M\000\000\003M\003M\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004v\003M\000\000\003M\019B\003M\000\000\r\177\r\177\003M\000\000\000\000\r\177\000\000\003M\r\177\000\000\000\000\003M\000\000\003M\003M\000\000\000\000\000\000\r\177\r\177\r\177\000\000\r\177\r\177\r\177\000\000\000\000\000\000\000\000\000\000\000\000\001\206\001\210\000\000\000\000\000\000\r\177\000\000\000\000\000\000\000\000\000\000\r\177\004\210\000\000\000\000\r\177\000\000\000\000\000\000\001\214\001\218\r\177\000\000\000\000\r\177\000\000\000\000\000\000\000\000\000\000\r\177\r\177\r\177\000\000\000\000\000\000\000\000\000\000\000\000\r\177\r\177\000\000\002\218\000\000\004z\000\000\r\177\000\000\002\214\r\177\002\222\004Z\004f\r\177\000\000\000\000\r\177\000\000\004r\000\000\018\246\000\000\000\000\000\000\r\177\000\000\r\177\r\177\000\000\r\177\r\177\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004v\r\177\000\000\r\177\019B\r\177\000\000\r\193\r\193\r\177\000\000\000\000\r\193\000\000\r\177\r\193\000\000\000\000\r\177\000\000\r\177\r\177\000\000\000\000\000\000\r\193\r\193\r\193\000\000\r\193\r\193\r\193\000\000\000\000\000\000\000\000\000\000\000\000\001\206\001\210\000\000\000\000\000\000\r\193\000\000\000\000\000\000\000\000\000\000\r\193\004\210\000\000\000\000\r\193\000\000\000\000\000\000\001\214\002\174\r\193\000\000\000\000\r\193\000\000\000\000\000\000\000\000\000\000\r\193\r\193\r\193\000\000\000\000\000\000\000\000\000\000\000\000\r\193\r\193\000\000\002\210\030.\004z\000\000\r\193\000\000\002\214\r\193\002\222\004Z\004f\r\193\000\000\000\000\r\193\000\000\004r\000\000\000\000\000\000\000\000\000\000\r\193\000\000\r\193\r\193\000\000\r\193\r\193\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004v\r\193\000\000\r\193\000\000\r\193\000\000\r\189\r\189\r\193\000\000\000\000\r\189\000\000\r\193\r\189\000\000\000\000\r\193\000\000\r\193\r\193\000\000\000\000\000\000\r\189\r\189\r\189\000\000\r\189\r\189\r\189\000\000\000\000\000\000\000\000\000\000\000\000\001\206\001\210\000\000\000\000\000\000\r\189\000\000\000\000\000\000\000\000\000\000\r\189\004\198\000\000\000\000\r\189\000\000\000\000\000\000\001\214\002\174\r\189\000\000\000\000\r\189\000\000\000\000\000\000\000\000\000\000\r\189\r\189\r\189\000\000\000\000\000\000\000\000\000\000\000\000\r\189\r\189\000\000\005\026\005\150\004z\000\000\r\189\000\000\002\214\r\189\002\222\004Z\004f\r\189\000\000\000\000\r\189\000\000\004r\000\000\000\000\000\000\000\000\000\000\r\189\000\000\r\189\r\189\000\000\r\189\r\189\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004v\r\189\000\000\r\189\000\000\r\189\000\000\ri\ri\r\189\000\000\000\000\ri\000\000\r\189\ri\000\000\000\000\r\189\000\000\r\189\r\189\000\000\000\000\000\000\ri\ri\ri\000\000\ri\ri\ri\000\000\000\000\000\000\000\000\000\000\000\000\001\206\001\210\000\000\000\000\000\000\ri\000\000\000\000\000\000\000\000\000\000\ri\004\210\000\000\000\000\ri\000\000\000\000\000\000\001\214\002\174\ri\000\000\000\000\ri\000\000\000\000\000\000\000\000\000\000\ri\ri\ri\000\000\000\000\000\000\000\000\000\000\000\000\ri\ri\000\000\002\198\000\000\004z\000\000\ri\000\000\002\214\ri\002\222\004Z\004f\ri\000\000\000\000\ri\000\000\004r\000\000\000\000\000\000\000\000\000\000\ri\000\000\ri\ri\000\000\ri\ri\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004v\ri\000\000\ri\000\000\ri\000\000\re\re\ri\000\000\000\000\re\000\000\ri\re\000\000\000\000\ri\000\000\ri\ri\000\000\000\000\000\000\re\re\re\000\000\re\re\re\000\000\000\000\000\000\000\000\000\000\000\000\001\206\001\210\000\000\000\000\000\000\re\000\000\000\000\000\000\000\000\000\000\re\004\198\000\000\000\000\re\000\000\000\000\000\000\001\214\002\174\re\000\000\000\000\re\000\000\000\000\000\000\000\000\000\000\re\re\re\000\000\000\000\000\000\000\000\000\000\000\000\re\re\000\000\005\154\000\000\004z\000\000\re\000\000\002\214\re\002\222\004Z\004f\re\000\000\000\000\re\000\000\004r\000\000\000\000\000\000\000\000\000\000\re\000\000\re\re\000\000\re\re\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004v\re\000\000\re\000\000\re\000\000\ry\ry\re\000\000\000\000\ry\000\000\re\ry\000\000\000\000\re\000\000\re\re\000\000\000\000\000\000\ry\ry\ry\000\000\ry\ry\ry\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ry\000\000\000\000\000\000\000\000\000\000\ry\004\210\000\000\000\000\ry\000\000\000\000\000\000\000\000\000\000\ry\000\000\000\000\ry\000\000\000\000\000\000\000\000\000\000\ry\ry\ry\000\000\000\000\005\193\014\237\000\000\000\000\ry\ry\000\000\000\000\000\000\000\000\000\000\ry\000\000\000\000\ry\000\000\000\000\000\000\ry\005\193\000\000\ry\000\000\005\193\000\000\000\000\000\000\000\000\000\000\ry\000\000\ry\ry\000\000\ry\ry\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ry\000\000\ry\000\000\ry\000\000\ru\ru\ry\000\000\000\000\ru\000\000\ry\ru\000\000\000\000\ry\000\000\ry\ry\000\000\000\000\000\000\ru\ru\ru\000\000\ru\ru\ru\000\000\000\000\000\000\000\000\000\000\014\237\001\206\001\210\014\237\014\237\000\000\ru\000\000\000\000\000\000\000\000\000\000\ru\004\198\000\000\000\000\ru\000\000\005\193\000\000\001\214\002\174\ru\000\000\014\237\ru\014\237\000\000\000\000\000\000\000\000\ru\ru\ru\005\193\000\000\000\000\005\193\000\000\000\000\ru\ru\000\000\0302\000\000\004z\000\000\ru\000\000\002\214\ru\002\222\004Z\004f\ru\000\000\000\000\ru\000\000\004r\000\000\000\000\000\000\000\000\000\000\ru\000\000\ru\ru\000\000\ru\ru\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004v\ru\000\000\ru\000\000\ru\000\000\r\129\r\129\ru\000\000\000\000\r\129\000\000\ru\r\129\000\000\000\000\ru\000\000\ru\ru\000\000\000\000\000\000\r\129\r\129\r\129\000\000\r\129\r\129\r\129\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\r\129\000\000\000\000\000\000\000\000\000\000\r\129\004\210\000\000\000\000\r\129\000\000\000\000\000\000\000\000\000\000\r\129\000\000\000\000\r\129\000\000\000\000\000\000\000\000\000\000\r\129\r\129\r\129\000\000\000\000\005\197\014\237\000\000\000\000\r\129\r\129\000\000\000\000\000\000\000\000\000\000\r\129\000\000\000\000\r\129\000\000\000\000\000\000\r\129\005\197\000\000\r\129\000\000\005\197\000\000\000\000\000\000\000\000\000\000\r\129\000\000\r\129\r\129\000\000\r\129\r\129\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\r\129\000\000\r\129\000\000\r\129\000\000\r}\r}\r\129\000\000\000\000\r}\000\000\r\129\r}\000\000\000\000\r\129\000\000\r\129\r\129\000\000\000\000\000\000\r}\r}\r}\000\000\r}\r}\r}\000\000\000\000\000\000\000\000\000\000\014\237\000\000\000\000\014\237\014\237\000\000\r}\000\000\000\000\000\000\003\153\000\000\r}\004\198\000\000\000\000\r}\003\153\005\197\000\000\003\153\000\000\r}\000\000\014\237\r}\014\237\000\000\003\153\000\000\000\000\r}\r}\r}\005\197\000\000\003\153\005\197\000\000\000\000\r}\r}\000\000\000\000\000\000\003\153\000\000\r}\000\000\000\000\r}\003\153\000\000\003\153\r}\000\000\000\000\r}\000\000\003\153\000\000\000\000\000\000\000\000\000\000\r}\003\153\r}\r}\000\000\r}\r}\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\r}\000\000\r}\000\000\r}\000\000\rq\rq\r}\000\000\000\000\rq\021\"\r}\rq\000\000\000\000\r}\000\000\r}\r}\000\000\000\000\000\000\rq\rq\rq\000\000\rq\rq\rq\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\rq\000\000\000\000\000\000\000\000\000\000\rq\004\210\000\000\000\000\rq\000\000\000\000\000\000\000\000\000\000\rq\000\000\000\000\rq\000\000\000\000\000\000\000\000\000\000\rq\rq\rq\000\000\000\000\000\000\000\000\000\000\000\000\rq\rq\000\000\000\000\000\000\000\000\000\000\rq\000\000\000\000\rq\000\000\000\000\000\000\rq\000\000\000\000\rq\000\000\000\000\000\000\000\000\000\000\000\000\000\000\rq\000\000\rq\rq\000\000\rq\rq\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\rq\000\000\rq\000\000\rq\000\000\rm\rm\rq\000\000\000\000\rm\000\000\rq\rm\000\000\000\000\rq\000\000\rq\rq\000\000\000\000\000\000\rm\rm\rm\000\000\rm\rm\rm\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\rm\000\000\000\000\000\000\000\000\000\000\rm\004\198\000\000\000\000\rm\000\000\000\000\000\000\000\000\000\000\rm\000\000\000\000\rm\000\000\000\000\000\000\000\000\000\000\rm\rm\rm\000\000\000\000\000\000\000\000\000\000\000\000\rm\rm\000\000\000\000\000\000\000\000\000\000\rm\000\000\000\000\rm\000\000\000\000\000\000\rm\000\000\000\000\rm\000\000\000\000\000\000\000\000\000\000\000\000\000\000\rm\000\000\rm\rm\000\000\rm\rm\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\rm\000\000\rm\000\000\rm\000\000\r\173\r\173\rm\000\000\000\000\r\173\000\000\rm\r\173\000\000\000\000\rm\000\000\rm\rm\000\000\000\000\000\000\r\173\r\173\r\173\000\000\r\173\r\173\r\173\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\r\173\000\000\000\000\000\000\000\000\000\000\r\173\004\198\000\000\000\000\r\173\000\000\000\000\000\000\000\000\000\000\r\173\000\000\000\000\r\173\000\000\000\000\000\000\000\000\000\000\r\173\r\173\r\173\000\000\000\000\000\000\000\000\000\000\000\000\r\173\r\173\000\000\000\000\000\000\000\000\000\000\r\173\000\000\000\000\r\173\000\000\000\000\000\000\r\173\000\000\000\000\r\173\000\000\000\000\000\000\000\000\000\000\000\000\000\000\r\173\000\000\r\173\r\173\000\000\r\173\r\173\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\r\173\000\000\r\173\000\000\r\173\000\000\r\137\r\137\r\173\000\000\000\000\r\137\000\000\r\173\r\137\000\000\000\000\r\173\000\000\r\173\r\173\000\000\000\000\000\000\r\137\r\137\r\137\000\000\r\137\r\137\r\137\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\r\137\000\000\000\000\000\000\000\000\000\000\r\137\004\210\000\000\000\000\r\137\000\000\000\000\000\000\000\000\000\000\r\137\000\000\000\000\r\137\000\000\000\000\000\000\000\000\000\000\r\137\r\137\r\137\000\000\000\000\000\000\000\000\000\000\000\000\r\137\r\137\000\000\000\000\000\000\000\000\000\000\r\137\000\000\000\000\r\137\000\000\000\000\000\000\r\137\000\000\000\000\r\137\000\000\000\000\000\000\000\000\000\000\000\000\000\000\r\137\000\000\r\137\r\137\000\000\r\137\r\137\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\r\137\000\000\r\137\000\000\r\137\000\000\r\133\r\133\r\137\000\000\000\000\r\133\000\000\r\137\r\133\000\000\000\000\r\137\000\000\r\137\r\137\000\000\000\000\000\000\r\133\r\133\r\133\000\000\r\133\r\133\r\133\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\r\133\000\000\000\000\000\000\000\000\000\000\r\133\004\198\000\000\000\000\r\133\000\000\000\000\000\000\000\000\000\000\r\133\000\000\000\000\r\133\000\000\000\000\000\000\000\000\000\000\r\133\r\133\r\133\000\000\000\000\000\000\000\000\000\000\000\000\r\133\r\133\000\000\000\000\000\000\000\000\000\000\r\133\000\000\000\000\r\133\000\000\000\000\000\000\r\133\000\000\000\000\r\133\000\000\000\000\000\000\000\000\000\000\000\000\000\000\r\133\000\000\r\133\r\133\000\000\r\133\r\133\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\r\133\000\000\r\133\000\000\r\133\000\000\r\153\r\153\r\133\000\000\000\000\r\153\000\000\r\133\r\153\000\000\000\000\r\133\000\000\r\133\r\133\000\000\000\000\000\000\r\153\r\153\r\153\000\000\r\153\r\153\r\153\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\r\153\000\000\000\000\000\000\000\000\000\000\r\153\004\210\000\000\000\000\r\153\000\000\000\000\000\000\000\000\000\000\r\153\000\000\000\000\r\153\000\000\000\000\000\000\000\000\000\000\r\153\r\153\r\153\000\000\000\000\000\000\000\000\000\000\000\000\r\153\r\153\000\000\000\000\000\000\000\000\000\000\r\153\000\000\000\000\r\153\000\000\000\000\000\000\r\153\000\000\000\000\r\153\000\000\000\000\000\000\000\000\000\000\000\000\000\000\r\153\000\000\r\153\r\153\000\000\r\153\r\153\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\r\153\000\000\r\153\000\000\r\153\000\000\r\149\r\149\r\153\000\000\000\000\r\149\000\000\r\153\r\149\000\000\000\000\r\153\000\000\r\153\r\153\000\000\000\000\000\000\r\149\r\149\r\149\000\000\r\149\r\149\r\149\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\r\149\000\000\000\000\000\000\000\000\000\000\r\149\004\198\000\000\000\000\r\149\000\000\000\000\000\000\000\000\000\000\r\149\000\000\000\000\r\149\000\000\000\000\000\000\000\000\000\000\r\149\r\149\r\149\000\000\000\000\000\000\000\000\000\000\000\000\r\149\r\149\000\000\000\000\000\000\000\000\000\000\r\149\000\000\000\000\r\149\000\000\000\000\000\000\r\149\000\000\000\000\r\149\000\000\000\000\000\000\000\000\000\000\000\000\000\000\r\149\000\000\r\149\r\149\000\000\r\149\r\149\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\r\149\000\000\r\149\000\000\r\149\000\000\r\161\r\161\r\149\000\000\000\000\r\161\000\000\r\149\r\161\000\000\000\000\r\149\000\000\r\149\r\149\000\000\000\000\000\000\r\161\r\161\r\161\000\000\r\161\r\161\r\161\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\r\161\000\000\000\000\000\000\000\000\000\000\r\161\004\210\000\000\000\000\r\161\000\000\000\000\000\000\000\000\000\000\r\161\000\000\000\000\r\161\000\000\000\000\000\000\000\000\000\000\r\161\r\161\r\161\000\000\000\000\000\000\000\000\000\000\000\000\r\161\r\161\000\000\000\000\000\000\000\000\000\000\r\161\000\000\000\000\r\161\000\000\000\000\000\000\r\161\000\000\000\000\r\161\000\000\000\000\000\000\000\000\000\000\000\000\000\000\r\161\000\000\r\161\r\161\000\000\r\161\r\161\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\r\161\000\000\r\161\000\000\r\161\000\000\r\157\r\157\r\161\000\000\000\000\r\157\000\000\r\161\r\157\000\000\000\000\r\161\000\000\r\161\r\161\000\000\000\000\000\000\r\157\r\157\r\157\000\000\r\157\r\157\r\157\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\r\157\000\000\000\000\000\000\000\000\000\000\r\157\004\198\000\000\000\000\r\157\000\000\000\000\000\000\000\000\000\000\r\157\000\000\000\000\r\157\000\000\000\000\000\000\000\000\000\000\r\157\r\157\r\157\000\000\000\000\000\000\000\000\000\000\000\000\r\157\r\157\000\000\000\000\000\000\000\000\000\000\r\157\000\000\000\000\r\157\000\000\000\000\000\000\r\157\000\000\000\000\r\157\000\000\000\000\000\000\000\000\000\000\000\000\000\000\r\157\000\000\r\157\r\157\000\000\r\157\r\157\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\r\157\000\000\r\157\000\000\r\157\000\000\r\145\r\145\r\157\000\000\000\000\r\145\000\000\r\157\r\145\000\000\000\000\r\157\000\000\r\157\r\157\000\000\000\000\000\000\r\145\r\145\r\145\000\000\r\145\r\145\r\145\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\r\145\000\000\000\000\000\000\000\000\000\000\r\145\004\210\000\000\000\000\r\145\000\000\000\000\000\000\000\000\000\000\r\145\000\000\000\000\r\145\000\000\000\000\000\000\000\000\000\000\r\145\r\145\r\145\000\000\000\000\000\000\000\000\000\000\000\000\r\145\r\145\000\000\000\000\000\000\000\000\000\000\r\145\000\000\000\000\r\145\000\000\000\000\000\000\r\145\000\000\000\000\r\145\000\000\000\000\000\000\000\000\000\000\000\000\000\000\r\145\000\000\r\145\r\145\000\000\r\145\r\145\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\r\145\000\000\r\145\000\000\r\145\000\000\r\141\r\141\r\145\000\000\000\000\r\141\000\000\r\145\r\141\000\000\000\000\r\145\000\000\r\145\r\145\000\000\000\000\000\000\r\141\r\141\r\141\000\000\r\141\r\141\r\141\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\r\141\000\000\000\000\000\000\000\000\000\000\r\141\004\198\000\000\000\000\r\141\000\000\000\000\000\000\000\000\000\000\r\141\000\000\000\000\r\141\000\000\000\000\000\000\000\000\000\000\r\141\r\141\r\141\000\000\000\000\000\000\000\000\000\000\000\000\r\141\r\141\000\000\000\000\000\000\000\000\000\000\r\141\000\000\000\000\r\141\000\000\000\000\000\000\r\141\000\000\000\000\r\141\000\000\000\000\000\000\000\000\000\000\000\000\000\000\r\141\000\000\r\141\r\141\000\000\r\141\r\141\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\r\141\000\000\r\141\000\000\r\141\000\000\r\185\r\185\r\141\000\000\000\000\r\185\000\000\r\141\r\185\000\000\000\000\r\141\000\000\r\141\r\141\000\000\000\000\000\000\r\185\r\185\r\185\000\000\r\185\r\185\r\185\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\r\185\000\000\000\000\000\000\000\000\000\000\r\185\004\210\000\000\000\000\r\185\000\000\000\000\000\000\000\000\000\000\r\185\000\000\000\000\r\185\000\000\000\000\000\000\000\000\000\000\r\185\r\185\r\185\000\000\000\000\000\000\000\000\000\000\000\000\r\185\r\185\000\000\000\000\000\000\000\000\000\000\r\185\000\000\000\000\r\185\000\000\000\000\000\000\r\185\000\000\000\000\r\185\000\000\000\000\000\000\000\000\000\000\000\000\000\000\r\185\000\000\r\185\r\185\000\000\r\185\r\185\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\r\185\000\000\r\185\000\000\r\185\000\000\r\181\r\181\r\185\000\000\000\000\r\181\000\000\r\185\r\181\000\000\000\000\r\185\000\000\r\185\r\185\000\000\000\000\000\000\r\181\r\181\r\181\000\000\r\181\r\181\r\181\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\r\181\000\000\000\000\000\000\000\000\000\000\r\181\004\198\000\000\000\000\r\181\000\000\000\000\000\000\000\000\000\000\r\181\000\000\000\000\r\181\000\000\000\000\000\000\000\000\000\000\r\181\r\181\r\181\000\000\000\000\000\000\000\000\000\000\000\000\r\181\r\181\000\000\000\000\000\000\000\000\000\000\r\181\000\000\000\000\r\181\000\000\000\000\000\000\r\181\000\000\000\000\r\181\000\000\000\000\000\000\000\000\000\000\000\000\000\000\r\181\000\000\r\181\r\181\000\000\r\181\r\181\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\r\181\000\000\r\181\000\000\r\181\000\000\r\169\r\169\r\181\000\000\000\000\r\169\000\000\r\181\r\169\000\000\000\000\r\181\000\000\r\181\r\181\000\000\000\000\000\000\r\169\r\169\r\169\000\000\r\169\r\169\r\169\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\r\169\000\000\000\000\000\000\000\000\000\000\r\169\004\210\000\000\000\000\r\169\000\000\000\000\000\000\000\000\000\000\r\169\000\000\000\000\r\169\000\000\000\000\000\000\000\000\000\000\r\169\r\169\r\169\000\000\000\000\000\000\000\000\000\000\000\000\r\169\r\169\000\000\000\000\000\000\000\000\000\000\r\169\000\000\000\000\r\169\000\000\000\000\000\000\r\169\000\000\000\000\r\169\000\000\000\000\000\000\000\000\000\000\000\000\000\000\r\169\000\000\r\169\r\169\000\000\r\169\r\169\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\r\169\000\000\r\169\000\000\r\169\000\000\r\165\r\165\r\169\000\000\000\000\r\165\000\000\r\169\r\165\000\000\000\000\r\169\000\000\r\169\r\169\000\000\000\000\000\000\r\165\r\165\r\165\000\000\r\165\r\165\r\165\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\r\165\000\000\000\000\000\000\000\000\000\000\r\165\004\198\000\000\000\000\r\165\000\000\000\000\000\000\000\000\000\000\r\165\000\000\000\000\r\165\000\000\000\000\000\000\000\000\000\000\r\165\r\165\r\165\000\000\000\000\000\000\000\000\000\000\000\000\r\165\r\165\000\000\000\000\000\000\000\000\000\000\r\165\000\000\000\000\r\165\000\000\000\000\000\000\r\165\000\000\000\000\r\165\000\000\000\000\000\000\000\000\000\000\000\000\000\000\r\165\000\000\r\165\r\165\000\000\r\165\r\165\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\r\165\000\000\r\165\000\000\r\165\000\000\002\r\002\r\r\165\000\000\000\000\002\r\000\000\r\165\002\r\000\000\000\000\r\165\000\000\r\165\r\165\000\000\000\000\000\000\002\r\002\r\002\r\000\000\002\r\002\r\002\r\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\r\000\000\000\000\000\000\000\000\000\000\002\r\002\r\000\000\000\000\002\r\000\000\000\000\000\000\000\000\000\000\002\r\000\000\000\000\002\r\000\000\000\000\000\000\000\000\000\000\002\r\002\r\002\r\000\000\000\000\000\000\000\000\000\000\000\000\002\r\002\r\000\000\000\000\000\000\000\000\000\000\002\r\000\000\000\000\002\r\000\000\000\000\000\000\002\r\000\000\000\000\002\r\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\r\000\000\002\r\002\r\000\000\002\r\002\r\000\000\000\000\000\000\000\000\000\000\003:\002\234\000\000\002\r\002\170\002\r\b:\002\r\000\000\003\"\000\000\002\r\000\000\000\000\000\000\000\000\002\r\000\000\000\000\001\214\005N\br\002\r\000\000\000\000\000\000\003>\000\000\000\000\n\182\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003R\000\000\000\000\r\170\007\153\001\194\000\000\000\000\000\000\007\153\000\000\002\222\007\153\000\000\004.\0042\000\000\000\000\011\237\0046\000\000\004>\007\153\012\230\006\146\000\000\007\153\000\000\007\153\000\000\000\000\000\000\000\000\004\133\000\000\006\150\006\158\006\162\000\000\006\166\007\153\000\000\000\000\000\000\000\000\000\000\007\153\000\000\006\174\006\178\000\000\000\000\000\000\r\186\000\000\006\017\006\017\000\000\000\000\007\153\006\017\000\000\000\000\006\017\000\000\007\153\007\153\011\237\000\000\000\000\000\000\011\237\011\237\006\017\006\182\006\017\000\000\006\017\011\237\006\017\004\178\007\153\011\237\004\133\000\000\000\000\000\000\000\000\000\000\000\000\000\000\006\017\000\000\000\000\000\000\000\000\000\000\006\017\006\017\007\153\000\000\007\153\020\174\006\017\007\153\007\153\000\000\006\017\000\000\000\000\006\017\000\000\000\000\000\000\000\000\000\000\006\017\006\017\006\017\021\226\000\000\000\000\007\153\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\006\017\006\017\000\000\006\017\000\000\000\000\000\000\006\017\003\141\003\141\000\000\000\000\000\000\003\141\000\000\000\000\003\141\000\000\006\017\000\000\006\017\006\017\000\000\006\017\006\017\003\141\003\141\000\000\003\141\t^\003\141\000\000\003\141\003\141\000\000\000\000\000\000\006\017\000\000\000\000\006\017\006\017\000\000\003\141\003\141\003\141\000\000\003\141\000\000\003\141\003\141\003\141\006\017\000\000\000\000\000\000\005\153\000\000\000\000\000\000\003\141\003\141\000\000\003\141\000\000\000\000\000\000\003\141\003\141\003\141\003\141\003\141\000\000\005\157\000\000\000\000\000\000\003\141\000\000\000\000\003\141\000\000\000\000\000\000\000\000\003\141\003\141\003\141\003\141\000\000\000\000\000\000\003\141\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\141\003\141\000\000\003\141\003\141\000\000\003\141\003\141\006\005\006\005\000\000\000\000\005\153\006\005\000\000\000\000\006\005\000\000\003\141\000\000\003\141\003\141\000\000\003\141\003\141\000\000\006\005\000\000\006\005\005\157\006\005\000\000\006\005\000\000\000\000\003\141\000\000\003\141\003\141\001\206\001\210\003\141\000\000\000\000\006\005\000\000\000\000\000\000\000\000\000\000\006\005\006\005\003\141\000\000\000\000\000\000\t\166\000\000\001\214\002\174\006\005\000\000\000\000\006\005\000\000\000\000\000\000\000\000\000\000\006\005\006\005\000\242\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\218\000\000\029\210\000\000\006\005\006\005\002\214\006\005\002\222\004Z\004f\006\005\000\000\000\000\000\000\000\000\004r\000\000\000\000\000\000\000\000\000\000\006\005\000\000\006\005\006\005\000\000\006\005\006\005\003:\002\234\000\000\000\000\002\170\000\000\b:\004v\000\000\003\"\005e\000\000\006\005\000\000\000\000\006\005\006\005\000\000\000\000\001\214\000\000\br\000\000\000\000\000\000\r\205\003>\006\005\029\234\n\182\r\205\000\000\000\000\r\205\000\000\000\000\000\000\000\000\000\000\003R\000\000\000\000\012\214\r\205\001\194\000\000\000\000\r\205\000\000\r\205\002\222\000\000\000\000\004.\0042\000\000\000\000\000\000\0046\000\000\004>\r\205\012\230\006\146\000\000\000\000\000\000\r\205\000\000\000\000\000\000\000\000\000\000\000\000\006\150\006\158\006\162\r\205\006\166\000\000\r\205\000\000\000\000\000\000\000\000\000\000\r\205\006\174\006\178\000\000\000\000\000\000\r2\000\000\000\000\003:\002\234\000\000\000\000\002\170\000\000\b:\r\205\011\226\003\"\r\205\000\000\000\000\011f\r\205\000\000\r~\000\000\006\182\001\214\000\000\br\000\000\000\000\004\178\r\205\003>\r\205\004\225\n\182\r\205\r\205\000\000\000\250\000\000\000\000\002\022\000\000\000\000\003R\000\000\000\000\012\214\000\000\001\194\000\000\021\162\000\000\r\205\000\000\002\222\000\000\003\170\004.\0042\000\000\000\000\000\000\0046\012\198\004>\000\000\012\230\006\146\021\166\000\000\000\000\000\000\000\000\000\000\021\206\000\000\000\000\000\000\006\150\006\158\006\162\000\000\006\166\000\000\000\000\000\000\000\000\020\254\000\000\000\000\000\000\006\174\006\178\021\022\000\000\000\000\r2\000\000\000\000\003:\002\234\000\000\000\000\002\170\000\000\b:\000\000\000\000\003\"\021\030\000\000\000\000\011f\000\000\000\000\011r\000\000\006\182\001\214\000\000\br\000\000\000\000\004\178\000\000\003>\000\000\021&\n\182\022f\000\000\000\000\004\225\004\225\000\000\000\000\000\000\000\000\003R\000\000\000\000\r\170\000\000\001\194\000\000\000\000\000\000\000\000\t\205\002\222\022v\017\014\004.\0042\000\000\000\000\000\000\0046\000\000\004>\000\000\012\230\006\146\000\000\011\238\000\000\000\000\014\218\t\205\000\000\t\205\t\205\000\000\006\150\006\158\006\162\000\000\006\166\012&\012>\012F\012.\012N\000\000\000\000\000\000\006\174\006\178\000\000\000\000\000\000\r\186\012V\012^\000\000\000\000\000\000\000\000\000\000\001\n\000\000\000\000\012f\000\000\000\000\000\000\000\000\011f\000\000\000\000\011r\000\242\006\182\000\000\000\000\001\014\000\000\000\000\004\178\002\190\011\246\0126\012n\012v\012\134\000\000\000\000\000\000\001\018\001\022\001\026\001\030\001\"\001&\000\000\012\142\000\000\000\000\000\000\000\000\017\022\001*\000\000\0012\0016\000\000\012\150\000\000\000\000\000\000\001:\000\000\000\000\001>\000\000\000\000\000\000\000\000\000\000\000\000\012\182\t\205\000\000\012\190\012~\000\000\000\000\000\000\000\000\t\205\012\158\001B\001F\001J\001N\001R\000\000\000\000\012\166\012\174\000\000\000\000\001V\000\000\000\000\000\000\001Z\000\000\000\000\000\000\000\000\000\000\000\000\000\000\t\233\000\000\000\000\001^\000\000\000\000\003:\002\234\000\000\001b\002\170\000\000\000\000\000\000\000\000\003\"\000\000\000\000\000\000\000\000\001\158\031\170\t\233\000\000\000\000\001\214\000\000\001\162\000\000\001\166\000\000\000\000\003>\001\170\000\000\001\174\001\178\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003R\000\000\000\000\003f\017&\001\194\000\000\000\000\t)\t)\000\000\002\222\000\000\t)\004.\0042\t)\000\000\000\000\0046\000\000\004>\006\134\000\000\006\146\000\000\t)\000\000\t)\000\000\t)\000\000\t)\000\000\000\000\006\150\006\158\006\162\000\000\006\166\000\000\000\000\000\000\000\000\t)\000\000\000\000\000\000\006\174\006\178\t)\t)\007\006\000\000\000\000\000\000\000\000\000\000\000\000\000\000\t)\000\000\000\000\t)\000\000\000\000\000\000\000\000\t\233\t)\t)\t)\000\000\000\000\006\182\000\000\t\233\000\000\n\158\000\000\004\178\000\000\000\000\000\000\000\000\t)\000\000\000\000\t)\000\000\000\000\000\000\t)\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\t)\000\000\t)\t)\000\000\t)\t)\000\000\000\000\015I\015I\000\000\000\000\000\000\015I\t)\000\000\015I\000\000\t)\000\000\000\000\000\000\t)\000\000\000\000\000\000\015I\000\000\015I\000\000\015I\005N\015I\t)\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\015I\000\000\000\000\000\000\000\000\000\000\015I\015I\000\000\000\000\000\000\000\000\004\130\000\000\000\000\000\000\015I\000\000\000\000\015I\000\000\000\000\000\000\000\000\000\000\015I\015I\015I\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\015I\000\000\000\000\015I\000\000\000\000\000\000\015I\015M\015M\000\000\000\000\0149\015M\002\234\0149\015M \158\015I\000\000\015I\015I \162\015I\015I\0149\015M\000\000\015M\004\146\015M\0149\015M\000\000\000\000\000\000\000\000\015I\000\000\000\000\000\000\015I\000\000\0149\015M\000\000\000\000\000\000\000\000\0149\015M\015M\015I\000\000\000\000\001\006\004\130\001\194\000\000\0149\015M\000\000\0149\015M\000\000\000\000\000\000\000\000\0149\015M\015M\015M\000\000\000\000\000\000\000\000 \166\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0149\015M\000\000\0149\015M\000\000\000\000\0149\015M\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \170\0149\015M\0149\015M\015M\0149\015M\015M\000\000\000\000\003:\002\234\004\146\000\000\002\170\000\000\b:\000\000\000\000\003\"\015M\000\000\000\000\0149\015M\000\000\000\000\000\000\000\000\001\214\000\000\br\000\000\000\000\000\000\015M\003>\000\000\000\000\n\182\000\000\000\000\000\000\000\000\000\000\000\000\000\000\011\014\000\000\003R\000\000\000\000\016F\000\000\001\194\000\000\000\000\000\000\000\000\007\149\002\222\000\000\001\173\004.\0042\000\000\000\000\000\000\0046\000\000\004>\000\000\012\230\006\146\000\000\011\238\000\000\000\000\007\149\000\000\000\000\001\173\007\149\000\000\006\150\006\158\006\162\000\000\006\166\012&\012>\012F\012.\012N\000\000\000\000\000\000\006\174\006\178\000\000\000\000\000\000\000\000\012V\012^\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\012f\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016V\000\242\006\182\000\000\001\181\000\000\000\000\000\000\004\178\000\000\011\246\0126\012n\012v\012\134\000\000\000\000\011\238\000\000\000\000\000\000\000\000\000\000\001\181\007\149\012\142\000\000\000\000\000\000\000\000\001\173\012&\012>\012F\012.\012N\012\150\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\012V\012^\000\000\000\000\000\000\012\182\001\173\000\000\012\190\012~\012f\000\000\000\000\000\000\001\173\012\158\000\000\000\000\000\000\000\242\000\000\000\000\001\173\012\166\012\174\000\000\000\000\000\000\011\246\0126\012n\012v\012\134\001\177\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016&\000\000\012\142\000\000\000\000\011\238\000\000\001\181\000\000\000\000\000\000\001\177\000\000\012\150\000\000\000\000\000\000\000\000\000\000\012&\012>\012F\012.\012N\000\000\000\000\000\000\012\182\001\181\000\000\012\190\012~\000\000\012V\012^\000\000\001\181\012\158\000\000\000\000\000\000\000\000\000\000\012f\001\181\012\166\012\174\000\000\000\000\000\000\000\000\000\000\000\242\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\011\246\0126\012n\012v\012\134\000\000\000\000\000\000\000\000\000\000\000\000\001\245\000\000\000\000\000\000\012\142\001\245\000\000\001\210\001\245\001\177\000\000\000\000\000\000\000\000\000\000\012\150\t\161\000\000\001\245\000\000\016*\000\000\001\245\000\000\001\245\000\000\000\000\000\000\000\000\012\182\001\177\000\000\012\190\012~\000\000\000\000\001\245\000\000\001\177\012\158\000\000\000\000\001\245\001\245\000\000\000\000\001\177\012\166\012\174\000\000\004z\000\000\001\245\000\000\000\000\001\245\000\000\000\000\000\000\000\000\000\000\001\245\001\245\001\245\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\245\001\245\000\000\001\245\000\000\000\000\000\000\004\242\000\000\000\000\000\000\000\000\000\000\000\000\001\253\000\000\000\000\000\000\001\245\001\253\001\245\001\210\001\253\001\245\001\245\000\000\000\000\000\000\000\000\000\000\t\169\000\000\001\253\001\245\000\000\000\000\001\253\000\000\001\253\000\000\000\000\001\245\000\000\000\000\000\000\000\000\001\245\000\000\000\000\000\000\001\253\000\000\001\245\000\000\000\000\000\000\001\253\001\253\000\000\000\000\000\000\000\000\000\000\000\000\004z\000\000\001\253\000\000\000\000\001\253\000\000\000\000\000\000\000\000\000\000\001\253\001\253\001\253\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\253\001\253\000\000\001\253\000\000\000\000\000\000\004\242\000\000\000\000\000\000\000\000\000\000\000\000\001\249\000\000\000\000\000\000\001\253\001\249\001\253\001\210\001\249\001\253\001\253\000\000\000\000\000\000\000\000\000\000\t\165\000\000\001\249\001\253\000\000\000\000\001\249\000\000\001\249\000\000\000\000\001\253\000\000\000\000\000\000\000\000\001\253\000\000\000\000\000\000\001\249\000\000\001\253\000\000\000\000\000\000\001\249\001\249\000\000\000\000\000\000\000\000\000\000\000\000\004z\000\000\001\249\000\000\000\000\001\249\000\000\000\000\000\000\000\000\000\000\001\249\001\249\001\249\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\249\001\249\000\000\001\249\000\000\000\000\000\000\004\242\000\000\000\000\000\000\000\000\000\000\000\000\003q\000\000\000\000\000\000\001\249\003q\001\249\001\210\003q\001\249\001\249\000\000\000\000\000\000\000\000\000\000\t\157\000\000\003q\001\249\000\000\000\000\003q\000\000\003q\000\000\000\000\001\249\000\000\000\000\000\000\000\000\001\249\000\000\000\000\000\000\003q\000\000\001\249\000\000\000\000\000\000\003q\001\241\000\000\000\000\000\000\000\000\000\000\000\000\004z\000\000\003q\000\000\000\000\003q\000\000\000\000\000\000\000\000\000\000\003q\003q\003q\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003q\003q\000\000\003q\000\000\000\000\000\000\004\242\000\000\000\000\000\000\000\000\000\000\000\000\003m\000\000\000\000\000\000\003q\003m\003q\001\210\003m\003q\003q\000\000\000\000\000\000\000\000\000\000\t\157\000\000\003m\003q\007\129\000\000\003m\000\000\003m\007\129\000\000\003q\000\000\000\000\000\000\000\000\003q\000\000\000\000\000\000\003m\000\000\003q\000\000\000\000\000\000\003m\001\241\007\129\000\000\000\000\000\000\000\000\000\000\004z\000\000\003m\000\000\000\000\003m\000\000\000\000\000\000\000\000\000\000\003m\003m\003m\000\000\000\000\007\129\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\007\129\000\000\003m\003m\000\000\003m\007\129\007\129\000\242\004\242\000\000\000\000\000\000\000\000\000\000\007\129\007\129\000\000\000\000\000\000\003m\000\000\003m\003:\002\234\003m\003m\002\170\000\000\b:\000\000\000\000\003\"\000\000\000\000\003m\000\000\000\000\000\000\000\000\000\000\000\000\001\214\003m\br\000\000\007\129\000\000\003m\003>\000\000\000\000\n\182\000\000\003m\007\129\000\000\000\000\000\000\000\000\027V\000\000\003R\000\000\000\000\025\190\000\000\001\194\000\000\000\000\000\000\000\000\027\206\002\222\000\000\000\000\004.\0042\000\000\000\000\000\000\0046\000\000\004>\000\000\012\230\006\146\003:\002\234\000\000\000\000\002\170\000\000\b:\000\000\000\000\003\"\006\150\006\158\006\162\000\000\006\166\000\000\000\000\000\000\000\000\001\214\000\000\br\000\000\006\174\006\178\000\000\003>\000\000\025\194\n\182\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003R\000\000\000\000\r\170\000\000\001\194\000\000\000\000\028\"\000\000\006\182\002\222\000\000\000\000\004.\0042\004\178\000\000\000\000\0046\000\000\004>\000\000\012\230\006\146\003:\002\234\000\000\000\000\002\170\000\000\b:\000\000\000\000\003\"\006\150\006\158\006\162\000\000\006\166\000\000\000\000\000\000\000\000\001\214\000\000\br\000\000\006\174\006\178\000\000\003>\000\000\r\186\n\182\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003R\000\000\000\000\r\170\000\000\001\194\000\000\000\000\026^\000\000\006\182\002\222\000\000\000\000\004.\0042\004\178\000\000\000\000\0046\000\000\004>\000\000\012\230\006\146\004\193\004\193\000\000\000\000\004\193\000\000\000\000\000\000\000\000\004\193\006\150\006\158\006\162\000\000\006\166\004\193\000\000\000\000\000\000\004\193\000\000\000\000\000\000\006\174\006\178\000\000\004\193\027\014\r\186\000\000\027&\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\193\000\000\000\000\004\193\004\193\004\193\000\000\000\000\026\190\000\000\006\182\004\193\000\000\000\000\004\193\004\193\004\178\000\000\000\242\004\193\000\205\004\193\004\193\000\000\004\193\000\205\000\000\000\000\000\205\000\000\000\000\000\000\000\000\000\000\000\000\004\193\004\193\004\193\000\205\004\193\000\205\000\000\000\205\000\000\000\205\000\000\000\000\000\000\004\193\004\193\000\000\000\000\000\000\000\000\000\000\000\000\000\205\000\000\000\000\000\000\000\000\000\000\000\205\000\000\001\237\000\000\000\205\000\000\000\000\001\237\000\000\000\000\000\205\000\000\004\193\000\205\000\000\000\000\000\000\000\000\004\193\000\205\000\205\000\242\000\000\000\000\000\000\000\000\001\237\000\000\000\205\000\205\000\000\000\000\000\000\000\000\000\000\000\205\000\000\000\000\000\205\000\000\000\000\000\000\000\205\000\000\000\000\000\000\000\000\000\000\001\237\000\000\000\000\000\000\000\000\000\205\000\000\000\205\000\000\001\237\000\205\000\205\000\000\000\000\001\017\001\237\001\237\000\242\000\000\001\017\000\205\000\000\001\017\000\000\001\237\001\237\000\000\000\205\000\205\000\000\000\000\000\000\001\017\000\000\001\017\000\000\001\017\000\205\001\017\000\205\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\017\000\000\000\000\000\000\000\000\001\237\001\017\000\000\014\249\000\000\001\017\000\000\000\000\014\249\001\237\000\000\001\017\000\000\000\000\001\017\000\000\000\000\000\000\000\000\000\000\001\017\001\017\000\242\000\000\000\000\000\000\000\000\014\249\000\000\001\017\001\017\000\000\000\000\000\000\000\000\000\000\001\017\000\000\000\000\001\017\000\000\000\000\000\000\001\017\000\000\000\000\000\000\000\000\000\000\014\249\000\000\000\000\000\000\000\000\001\017\000\000\001\017\000\000\014\249\001\017\001\017\000\000\000\000\000\213\014\249\014\249\000\242\000\000\000\213\001\017\000\000\000\213\000\000\014\249\014\249\000\000\001\017\001\017\000\000\000\000\000\000\000\213\000\000\000\213\000\000\000\213\001\017\000\213\001\017\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\213\000\000\000\000\000\000\000\000\014\249\000\213\000\000\000\000\000\000\000\213\000\000\000\000\000\000\014\249\000\000\000\213\000\000\000\000\000\213\000\000\000\000\000\000\000\000\000\000\000\213\000\213\000\242\000\000\000\000\000\000\000\000\000\000\000\000\000\213\000\213\000\000\000\000\000\000\000\000\000\000\000\213\000\000\000\000\000\213\000\000\000\000\000\000\000\213\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\213\000\000\000\213\000\000\000\000\000\213\000\213\000\000\000\000\000\209\000\000\000\000\000\000\000\000\000\209\000\213\000\000\000\209\000\000\000\000\000\000\000\000\000\213\000\213\000\000\000\000\000\000\000\209\000\000\000\209\000\000\000\209\000\213\000\209\000\213\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\209\000\000\000\000\000\000\000\000\000\000\000\209\000\000\000\000\000\000\000\209\000\000\000\000\000\000\000\000\000\000\000\209\000\000\000\000\000\209\000\000\000\000\000\000\000\000\001\n\000\209\000\209\000\242\000\000\000\000\000\000\000\000\000\000\000\000\000\209\000\209\000\000\000\000\000\000\000\000\001\014\000\209\000\000\000\000\000\209\000\000\000\000\000\000\000\209\000\000\000\000\000\000\000\000\001\018\001\022\001\026\001\030\001\"\001&\000\209\000\000\000\209\000\000\000\000\000\209\000\209\001*\000\000\0012\0016\000\000\000\000\000\000\000\000\000\209\001:\000\000\000\000\001>\000\000\000\000\000\209\000\209\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\209\000\000\000\209\000\000\000\000\001B\001F\001J\001N\001R\001\209\000\000\000\000\000\000\000\000\001\209\001V\000\000\001\209\000\000\001Z\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\209\000\000\000\000\001^\001\209\000\000\001\209\000\000\000\000\001b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\209\001\209\001\158\031\198\000\000\000\000\001\209\000\000\000\000\001\162\000\000\001\166\005\153\000\000\000\000\001\170\001\209\001\174\001\178\001\209\000\000\000\000\000\000\000\000\000\000\001\209\001\209\001\209\000\000\000\000\006\254\000\000\000\000\000\000\000\000\000\000\003:\002\234\000\000\000\000\002\170\001\209\000\000\000\000\001\209\003\"\000\000\000\000\001\209\000\000\007\002\000\000\004:\000\000\000\000\001\214\000\000\000\000\000\000\001\209\000\000\001\209\003>\000\000\001\209\001\209\000\000\000\000\000\000\000\000\005\153\000\000\000\000\000\000\001\209\003R\000\000\000\000\003f\012\206\001\194\001\209\001\209\000\000\000\000\000\000\002\222\001\209\000\000\004.\0042\000\000\000\000\001\209\0046\000\000\004>\006\134\000\000\006\146\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\015E\015E\006\150\006\158\006\162\015E\006\166\000\000\015E\000\000\000\000\000\000\000\000\000\000\000\000\006\174\006\178\000\000\015E\007\006\015E\000\000\015E\000\000\015E\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b&\015E\000\000\007\194\000\000\000\000\006\182\015E\015E\000\000\000\000\000\000\004\178\000\000\000\000\000\000\000\000\015E\000\000\000\000\015E\000\000\000\000\000\000\000\000\000\000\015E\015E\015E\000\000\000\000\000\000\000\000\000\000\000\000\015A\015A\000\000\000\000\000\000\015A\000\000\015E\015A\000\000\015E\000\000\000\000\000\000\015E\000\000\000\000\000\000\015A\000\000\015A\000\000\015A\000\000\015A\015E\000\000\015E\015E\000\000\015E\015E\000\000\000\000\000\000\000\000\015A\000\000\000\000\000\000\000\000\000\000\015A\015A\015E\000\000\000\000\000\000\015E\000\000\000\000\000\000\015A\000\000\000\000\015A\000\000\005N\000\000\015E\000\000\015A\015A\015A\000\000\000\000\000\000\000\000\000\000\000\000\t-\t-\000\000\000\000\000\000\t-\000\000\015A\t-\000\000\015A\000\000\000\000\000\000\015A\000\000\000\000\000\000\t-\000\000\t-\000\000\t-\000\000\t-\015A\000\000\015A\015A\000\000\015A\015A\000\000\000\000\000\000\000\000\t-\000\000\000\000\000\000\b\250\000\000\t-\t-\015A\000\000\000\000\000\000\015A\000\000\000\000\000\000\t-\000\000\000\000\t-\000\000\000\000\000\000\015A\000\000\t-\t-\000\242\000\000\000\000\000\000\003\017\003\017\000\000\000\000\003\017\000\000\000\000\000\000\000\000\003\017\t-\000\000\000\000\t-\000\000\000\000\000\000\t-\000\000\003\017\000\000\000\000\000\000\000\000\000\000\000\000\003\017\000\n\t-\000\000\t-\t-\000\000\t-\t-\000\000\000\000\000\000\000\000\003\017\000\000\000\000\003\017\t-\003\017\000\000\000\000\t-\000\000\020N\003\017\t-\001\165\003\017\003\017\000\000\000\000\003\017\003\017\000\000\003\017\003\017\t-\003\017\000\000\011\238\000\000\000\000\000\000\020R\000\000\001\165\000\000\000\000\003\017\003\017\003\017\000\000\003\017\012&\012>\012F\012.\012N\000\000\000\000\000\000\003\017\003\017\000\000\000\000\003\017\000\000\012V\012^\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\012f\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\242\003\017\000\000\000\000\000\000\003\017\000\000\003\017\000\000\011\246\0126\012n\012v\012\134\000\000\000\000\000\000\000\000\000\000\000\000\001\241\000\000\000\000\000\000\012\142\001\241\000\000\001\210\001\241\001\165\000\000\000\000\000\000\000\000\000\000\012\150\t\157\000\000\001\241\000\000\000\000\000\000\001\241\000\000\001\241\000\000\000\000\000\000\000\000\012\182\001\165\020V\012\190\012~\020f\000\000\001\241\000\000\001\165\012\158\000\000\000\000\001\241\000\000\000\000\000\000\000\000\012\166\012\174\000\000\004z\000\000\001\241\000\000\000\000\001\241\000\000\000\000\000\000\000\000\000\000\001\241\001\241\001\241\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\241\001\241\000\000\001\241\000\000\000\000\000\000\004\242\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\241\000\000\001\241\000\000\000\000\001\241\001\241\000\000\000\000\000\000\000\000\007\146\000\000\000\000\000\000\001\241\000\250\001\206\001\210\002\022\000\000\000\000\000\000\001\241\000\000\000\000\000\000\000\000\001\241\021\162\000\000\000\000\000\000\004\225\001\241\003\170\001\214\002\174\001\234\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\246\021\166\000\000\000\000\000\000\000\000\000\000\021\206\000\000\000\000\000\000\000\000\000\000\001\250\002\194\002\202\000\000\000\000\000\000\002\214\020\254\002\222\004Z\004f\000\000\000\000\021\022\000\000\000\000\004r\006=\006=\000\000\000\000\000\000\006=\000\000\000\000\006=\000\000\000\000\000\000\021\030\000\000\000\000\000\000\000\000\000\000\006=\004v\006=\000\000\006=\000\000\006=\000\000\000\000\000\000\000\000\000\000\021&\000\000\022f\000\000\000\000\000\000\006=\000\000\000\000\000\000\000\000\000\000\006=\006=\000\000\000\000\000\000\000\000\t\166\000\000\000\000\000\000\006=\022v\000\000\006=\000\000\000\000\004\174\000\000\004\178\006=\006=\000\242\000\000\000\000\000\000\000\000\000\000\000\000\0069\b\206\000\000\000\000\000\000\0069\000\000\006=\0069\000\000\006=\000\000\000\000\000\000\006=\000\000\000\000\000\000\0069\000\000\0069\000\000\0069\000\000\0069\006=\000\000\006=\006=\000\000\006=\006=\000\000\000\000\000\000\000\000\0069\000\000\000\000\000\000\000\000\000\000\0069\tJ\006=\000\000\000\000\000\000\006=\000\000\000\000\000\000\0069\000\000\000\000\0069\000\000\000\000\000\000\006=\000\000\0069\0069\000\242\000\000\000\000\000\000\000\000\000\000\000\000\015Q\015Q\000\000\000\000\000\000\015Q\000\000\0069\015Q\000\000\0069\000\000\000\000\000\000\0069\000\000\000\000\000\000\015Q\000\000\015Q\000\000\015Q\000\000\015Q\0069\000\000\0069\0069\000\000\0069\0069\000\000\000\000\000\000\000\000\015Q\000\000\000\000\000\000\000\000\000\000\015Q\015Q\0069\000\000\000\000\000\000\0069\000\000\000\000\000\000\015Q\000\000\000\000\015Q\000\000\000\000\000\000\0069\000\000\015Q\015Q\000\242\000\000\000\000\000\000\000\000\000\000\000\000\015U\015U\000\000\000\000\000\000\015U\000\000\015Q\015U\000\000\015Q\000\000\000\000\000\000\015Q\000\000\000\000\000\000\015U\000\000\015U\000\000\015U\000\000\015U\015Q\000\000\015Q\015Q\000\000\015Q\015Q\000\000\000\000\000\000\000\000\015U\000\000\000\000\000\000\000\000\000\000\015U\tJ\015Q\000\000\000\000\000\000\015Q\000\000\000\000\000\000\015U\000\000\000\000\015U\000\000\000\000\000\000\015Q\000\000\015U\015U\000\242\000\000\000\000\000\000\000\000\000\000\000\000\006Q\b\206\000\000\000\000\000\000\006Q\000\000\015U\006Q\000\000\015U\000\000\000\000\000\000\015U\000\000\000\000\000\000\006Q\000\000\006Q\000\000\006Q\000\000\006Q\015U\000\000\015U\015U\000\000\015U\015U\000\000\000\000\000\000\000\000\006Q\000\000\000\000\000\000\000\000\000\000\006Q\tJ\015U\000\000\000\000\000\000\015U\000\000\000\000\000\000\006Q\000\000\000\000\006Q\000\000\000\000\000\000\015U\000\000\006Q\006Q\000\242\000\000\000\000\000\000\000\000\000\000\000\000\006U\006U\000\000\000\000\000\000\006U\000\000\006Q\006U\000\000\006Q\000\000\000\000\000\000\006Q\000\000\000\000\000\000\006U\000\000\006U\000\000\006U\000\000\006U\006Q\000\000\006Q\006Q\000\000\006Q\006Q\000\000\000\000\000\000\000\000\006U\000\000\000\000\000\000\000\000\000\000\006U\006U\006Q\000\000\000\000\000\000\006Q\000\000\000\000\000\000\006U\000\000\000\000\006U\000\000\000\000\000\000\006Q\000\000\006U\006U\006U\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\006U\000\000\000\000\006U\000\000\000\000\000\000\006U\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\006U\000\000\006U\006U\000\000\006U\006U\003:\002\234\000\000\000\000\002\170\000\000\b:\000\000\000\000\003\"\000\000\000\000\006U\000\000\000\000\000\000\006U\000\000\000\000\001\214\000\000\br\000\000\000\000\000\000\000\000\003>\tr\000\000\n\182\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003R\000\000\000\000\n\254\000\000\001\194\000\000\000\000\000\000\000\000\000\000\002\222\000\000\000\000\004.\0042\000\000\000\000\000\000\0046\003i\004>\000\000\012\230\006\146\003i\000\000\001\210\003i\000\000\000\000\000\000\000\000\000\000\000\000\006\150\006\158\006\162\003i\006\166\000\000\000\000\003i\000\000\003i\000\000\000\000\000\000\006\174\006\178\000\000\000\000\000\000\000\000\000\000\000\000\003i\000\000\000\000\000\000\000\000\000\000\003i\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004z\000\000\003i\000\000\006\182\003i\000\000\000\000\000\000\000\000\004\178\003i\003i\003i\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003i\003i\000\000\003i\000\000\000\000\000\000\004\242\003e\000\000\000\000\000\000\000\000\003e\000\000\001\210\003e\000\000\003i\000\000\003i\000\000\000\000\003i\003i\000\000\003e\000\000\000\000\000\000\003e\000\000\003e\003i\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003i\000\000\000\000\003e\000\000\003i\000\000\000\000\000\000\003e\000\000\003i\000\000\000\000\000\000\000\000\000\000\004z\000\000\003e\000\000\000\000\003e\000\000\000\000\000\000\000\000\000\000\003e\003e\003e\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003e\003e\000\000\003e\000\000\000\000\000\000\004\242\001e\000\000\000\000\000\000\000\000\001e\000\000\000\000\001e\000\000\003e\000\000\003e\000\000\000\000\003e\003e\000\000\001e\000\000\001e\000\000\001e\000\000\001e\003e\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003e\000\000\000\000\001e\000\000\003e\000\000\000\000\000\000\001e\000\000\003e\000\000\001e\000\000\000\000\000\000\000\000\000\000\001e\000\000\000\000\001e\000\000\000\000\000\000\000\000\000\000\001e\001e\000\242\000\000\000\000\000\000\000\000\000\000\000\000\001a\001e\000\000\000\000\000\000\001a\000\000\001e\001a\000\000\001e\000\000\000\000\000\000\001e\000\000\000\000\000\000\001a\000\000\001a\000\000\001a\000\000\001a\001e\000\000\001e\001e\000\000\001e\001e\000\000\000\000\000\000\000\000\001a\000\000\000\000\000\000\001e\000\000\001a\000\000\000\000\000\000\001a\000\000\001e\000\000\000\000\000\000\001a\000\000\000\000\001a\000\000\000\000\000\000\001e\000\000\001a\001a\000\242\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001a\000\000\000\000\000\000\000\000\000\000\001a\000\000\000\000\001a\000\000\000\000\000\000\001a\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001a\000\000\001a\001a\001\157\001a\001a\000\000\000\000\001\157\000\000\014\137\001\157\000\000\000\000\001a\000\000\000\000\000\000\000\000\014\137\000\000\001\157\001a\001\157\000\000\001\157\000\000\001\157\000\000\000\000\000\000\000\000\000\000\001a\000\000\000\000\000\000\000\000\000\000\001\157\000\000\000\000\000\000\000\000\000\000\001\157\014\137\000\000\000\000\000\000\000\000\000\000\000\000\014\137\000\000\000\000\000\000\000\000\001\157\000\000\000\000\000\000\000\000\000\000\001\157\001\157\001\157\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\157\000\000\000\000\014\137\000\000\000\000\000\000\014\137\000\000\002\005\000\000\000\000\000\000\000\000\002\005\000\000\018\218\002\005\001\157\002\170\001\157\001\157\000\000\001\157\001\157\000\000\000\000\002\005\000\000\000\000\000\000\002\005\000\000\002\005\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\157\000\000\000\000\000\000\002\005\000\000\000\000\000\000\000\000\000\000\002\005\001\157\000\000\000\000\000\000\000\000\018\222\000\000\000\000\000\000\002\005\000\000\000\000\002\005\000\000\000\000\000\000\000\000\000\000\002\005\002\005\000\000\018\234\000\000\029>\000\000\000\000\000\000\000\000\000\000\003:\002\234\000\000\000\000\002\170\002\005\000\000\000\000\002\005\003\"\000\000\000\000\002\005\000\000\000\000\000\000\007\218\000\000\000\000\001\214\000\000\000\000\006\178\002\005\000\000\002\005\003>\000\000\002\005\002\005\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\005\003R\000\000\000\000\003f\000\000\001\194\000\000\002\005\000\000\000\000\000\000\002\222\000\000\000\000\004.\0042\000\000\000\000\002\005\0046\000\000\004>\006\134\000\000\006\146\000\000\000\000\000\000\000\000\000\000\000\000\006\237\000\000\000\000\000\000\006\150\006\158\006\162\002\234\006\166\000\000\002\170\000\000\000\000\000\000\000\000\003\"\000\000\006\174\006\178\000\000\006\237\007\006\000\000\000\000\000\000\001\214\000\000\000\000\000\000\003&\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003*\000\000\003\210\000\000\000\000\006\182\000\000\b\022\000\000\n\158\004\018\004\178\001\194\000\000\000\000\000\000\000\000\000\000\002\222\000\000\000\000\004\026\t\226\000\000\000\000\000\000\t\230\t\234\t\246\000\000\000\000\006\146\000\000\000\000\000\000\007*\000\000\000\000\000\000\000\000\000\000\003:\002\234\006\158\006\162\002\170\000\000\000\000\000\000\000\000\003\"\000\000\000\000\000\000\000\000\006\174\006\178\000\000\000\000\000\000\001\214\000\000\000\000\000\000\000\000\000\000\000\000\003>\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003R\006\182\t\254\003f\000\000\001\194\n\022\004\178\000\000\000\000\000\000\002\222\000\000\000\000\004.\0042\000\000\000\000\000\000\0046\000\000\004>\006\134\000\000\006\146\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\006\150\006\158\006\162\000\000\006\166\007\134\000\000\000\000\000\000\000\000\000\000\003:\002\234\006\174\006\178\002\170\000\000\007\006\000\000\000\000\003\"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\214\000\000\000\000\000\000\000\000\000\000\000\000\003>\000\000\006\182\000\000\000\000\000\000\000\000\000\000\004\178\000\000\000\000\000\000\000\000\003R\000\000\000\000\003f\000\000\001\194\000\000\000\000\000\000\000\000\000\000\002\222\000\000\000\000\004.\0042\000\000\000\000\000\000\0046\000\000\004>\006\134\000\000\006\146\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\006\150\006\158\006\162\000\000\006\166\007\166\000\000\000\000\000\000\000\000\000\000\003:\002\234\006\174\006\178\002\170\000\000\007\006\000\000\000\000\003\"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\214\000\000\000\000\000\000\000\000\000\000\000\000\003>\000\000\006\182\000\000\000\000\000\000\000\000\000\000\004\178\000\000\000\000\000\000\000\000\003R\000\000\000\000\003f\000\000\001\194\000\000\000\000\000\000\000\000\000\000\002\222\000\000\000\000\004.\0042\000\000\000\000\000\000\0046\000\000\004>\006\134\000\000\006\146\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\006\150\006\158\006\162\000\000\006\166\006\241\000\000\000\000\000\000\000\000\000\000\003:\002\234\006\174\006\178\002\170\000\000\007\006\000\000\000\000\003\"\000\000\000\000\000\000\000\000\006\241\000\000\000\000\000\000\000\000\001\214\000\000\000\000\000\000\000\000\000\000\000\000\003>\000\000\006\182\000\000\000\000\000\000\000\000\000\000\004\178\000\000\000\000\000\000\000\000\003R\000\000\014B\003f\000\000\001\194\000\000\000\000\003:\002\234\000\000\002\222\002\170\000\000\004.\0042\000\000\003\"\000\000\0046\000\000\004>\006\134\000\000\006\146\000\000\000\000\001\214\000\000\000\000\000\000\000\000\000\000\000\000\003>\006\150\006\158\006\162\000\000\006\166\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003R\006\174\006\178\003f\000\000\001\194\000\000\000\000\000\000\000\000\000\000\002\222\000\000\000\000\004.\0042\000\000\000\000\000\000\0046\000\000\004>\006\134\000\000\006\146\000\000\000\000\006\182\000\000\000\000\000\000\000\000\000\000\004\178\000\000\006\150\006\158\006\162\000\000\006\166\014N\000\000\000\000\000\000\000\000\000\000\003:\002\234\006\174\006\178\002\170\000\000\007\006\000\000\000\000\003\"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\214\000\000\000\000\000\000\000\000\000\000\000\000\003>\000\000\006\182\000\000\000\000\000\000\000\000\000\000\004\178\000\000\000\000\000\000\000\000\003R\000\000\000\000\003f\000\000\001\194\000\000\000\000\000\000\000\000\000\000\002\222\000\000\000\000\004.\0042\000\000\000\000\000\000\0046\000\000\004>\006\134\000\000\006\146\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\006\150\006\158\006\162\000\000\006\166\014Z\000\000\000\000\000\000\000\000\000\000\003:\002\234\006\174\006\178\002\170\000\000\007\006\000\000\000\000\003\"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\214\000\000\000\000\000\000\000\000\000\000\000\000\003>\000\000\006\182\000\000\000\000\000\000\000\000\000\000\004\178\000\000\000\000\000\000\000\000\003R\000\000\000\000\003f\000\000\001\194\000\000\000\000\004\217\b\206\004\217\002\222\000\000\004\217\004.\0042\004\217\000\000\000\000\0046\000\000\004>\006\134\004\217\006\146\000\000\004\217\000\000\000\000\004\217\004\217\000\000\004\217\000\000\000\000\006\150\006\158\006\162\000\000\006\166\000\000\004\217\000\000\000\000\004\217\000\000\000\000\004\217\006\174\006\178\004\217\tJ\007\006\000\000\004\217\000\000\t\166\004\217\000\000\000\000\004\217\000\000\000\000\004\217\000\000\000\000\004\217\003\014\000\000\004\217\003\014\000\242\000\000\000\000\006\182\000\000\000\000\000\000\004\217\004\217\004\178\000\000\004\217\000\000\000\000\004\217\004\217\000\000\004\217\004\217\000\000\007\021\004\217\000\000\000\000\000\000\000\000\000\000\002\234\000\000\004\217\002\170\004\217\004\217\000\000\004\217\003\"\000\000\004\217\004\217\000\000\007\021\000\000\000\000\t^\000\000\001\214\000\000\004\217\000\000\003&\000\000\000\000\004\217\000\000\000\000\004\217\000\000\000\000\003*\000\000\003\210\000\000\000\000\000\000\000\000\000\000\004\217\000\000\004\018\000\000\001\194\000\000\000\000\b\233\b\233\000\000\002\222\b\233\000\000\004\026\t\226\000\000\b\233\000\000\t\230\t\234\t\246\000\000\019\174\006\146\000\000\000\000\b\233\000\000\000\000\000\000\000\000\000\000\000\000\b\233\000\000\006\158\006\162\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\233\006\174\006\178\b\233\b\233\b\233\000\000\000\000\000\000\000\000\000\000\b\233\000\000\000\000\b\233\b\233\000\000\000\000\000\000\b\233\000\000\b\233\b\233\000\000\b\233\000\000\000\000\006\182\t\254\000\000\000\000\000\000\n\022\004\178\000\000\b\233\b\233\b\233\000\000\b\233\000\000\000\000\b\185\000\000\000\000\000\000\000\000\b\185\b\233\b\233\b\185\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\185\000\000\000\000\000\000\b\185\000\000\b\185\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\233\000\000\000\000\000\000\b\185\000\000\b\233\000\000\000\000\000\000\b\185\000\000\000\000\000\000\b\185\000\000\000\000\000\000\000\000\000\000\b\185\000\000\000\000\b\185\000\000\000\000\000\000\000\000\000\000\b\185\b\185\000\242\000\000\000\000\000\000\b\181\000\000\000\000\b\185\b\185\b\181\000\000\000\000\b\181\000\000\b\185\000\000\000\000\b\185\000\000\000\000\000\000\b\185\b\181\000\000\000\000\000\000\b\181\000\000\b\181\000\000\000\000\000\000\b\185\000\000\b\185\b\185\000\000\b\185\b\185\000\000\b\181\000\000\000\000\000\000\000\000\000\000\b\181\b\185\000\000\000\000\b\181\000\000\000\000\000\000\000\000\b\185\b\181\000\000\000\000\b\181\000\000\000\000\000\000\000\000\000\000\b\181\b\181\000\242\000\000\000\000\000\000\000\000\000\000\000\000\b\181\b\181\000\000\000\000\000\000\000\000\000\000\b\181\000\000\000\000\b\181\000\000\000\000\000\000\b\181\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\181\000\000\b\181\b\181\001Q\b\181\b\181\000\000\000\000\001Q\000\000\000\177\001Q\003]\000\000\b\181\000\000\000\000\003]\000\000\000\177\003]\001Q\b\181\001Q\000\000\001Q\000\000\001Q\000\000\000\000\003]\000\000\000\000\003]\003]\000\000\003]\000\000\003]\001Q\000\000\003]\000\000\000\000\000\000\001Q\000\177\000\000\003]\018\242\000\000\003]\000\000\000\177\003]\003]\000\000\003]\001Q\000\000\000\000\000\000\000\000\000\000\001Q\001Q\001Q\003]\000\000\003]\018\242\000\000\000\000\003]\003]\003]\000\000\000\000\000\000\000\000\001Q\000\000\000\000\000\000\000\000\003]\000\000\000\177\003]\003]\000\000\000\000\000\000\000\000\003]\003]\003]\000\000\001Q\000\000\001Q\001Q\003]\001Q\001Q\000\000\000\000\003]\000\000\003]\003]\000\000\003]\003]\000\000\000\000\000\000\003]\000\000\000\000\003]\001Q\000\000\000\000\003]\000\000\003]\000\000\003]\019f\003]\029f\001Q\003]\003]\000\000\000\000\000\000\003]\018\242\000\000\000\000\000\000\003]\003]\000\000\000\000\000\000\000\000\000\000\019f\003]\000\000\014\129\003]\000\000\003]\003]\014\129\000\000\000\000\014\129\003]\003]\003]\003]\000\000\000\000\000\000\000\000\000\000\014\129\000\000\000\000\000\000\014\129\000\000\014\129\000\000\003]\000\000\000\000\003]\005\145\000\000\000\000\003]\000\000\000\000\014\129\000\000\000\000\000\000\000\000\000\000\014\129\000\000\003]\000\000\003]\029\150\000\000\003]\003]\000\000\014\129\000\000\000\000\014\129\000\000\000\000\000\000\000\000\000\000\014\129\014\129\000\000\000\000\000\000\019f\003]\000\000\000\000\000\000\000\000\003]\000\000\000\000\000\000\000\000\014\129\000\000\000\000\014\129\000\000\000\000\000\000\014\129\005\233\000\000\000\000\000\000\014I\005\233\000\000\014I\005\233\000\000\014\129\000\000\014\129\002\162\000\000\014\129\014\129\014I\005\233\000\000\000\000\000\000\005\233\014I\005\233\014\129\000\000\000\000\000\000\000\000\030\242\000\000\000\000\014\129\000\000\014I\005\233\000\000\000\000\000\000\000\000\014I\005\233\000\000\014\129\000\000\000\000\000\000\t\166\000\000\000\000\014I\005\233\000\000\014I\005\233\000\000\000\000\000\000\000\000\014I\005\233\005\233\000\242\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\014I\005\233\005\233\014I\005\233\000\000\000\000\014I\005\233\005\237\000\000\000\000\000\000\000\000\005\237\000\000\000\000\005\237\014I\005\233\014I\005\233\000\000\014I\005\233\005\233\000\000\005\237\000\000 \142\000\000\005\237\000\000\005\237\000\000\000\000\000\000\000\000\000\000\000\000\000\000\014I\005\233\000\000\000\000\005\237\000\000\000\000\000\000\000\000\000\000\005\237\000\000\005\233\000\000\000\000\000\000\t\166\000\000\000\000\003]\005\237\000\000\000\000\005\237\003]\000\000\000\000\003]\000\000\005\237\005\237\000\242\000\000\000\000\000\000\000\000\000\000\003]\000\000\000\000\000\000\003]\000\000\003]\000\000\005\237\005\237\000\000\005\237\000\000\000\000\000\000\005\237\000\000\000\000\003]\018\242\000\000\000\000\000\000\000\000\003]\000\000\005\237\000\000\005\237\000\000\000\000\005\237\005\237\006\165\003]\000\000\000\000\003]\006\165\000\000\000\000\006\165\000\000\003]\003]\003]\000\000\000\000\000\000\005\237\000\000\006\165\000\000\000\000\000\000\006\165\000\000\006\165\000\000\003]\005\237\000\000\003]\000\000\000\000\000\000\003]\000\000\000\000\006\165\000\000\000\000\000\000\000\000\000\000\006\165\000\000\003]\000\000\003]\021r\000\000\003]\003]\000\000\006\165\000\000\000\000\006\165\000\000\000\000\000\000\000\000\000\000\006\165\006\165\000\242\000\000\000\000\019f\003]\000\000\000\000\003:\002\234\000\000\000\000\002\170\000\000\000\000\006\165\000\000\003\"\006\165\000\000\000\000\000\000\006\165\000\000\000\000\000\000\000\000\001\214\000\000\000\000\000\000\000\000\000\000\006\165\003>\006\165\025J\000\000\006\165\006\165\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003R\006\165\000\000\012\234\000\000\001\194\000\000\000\000\000\000\006\165\000\000\002\222\000\000\000\000\004.\0042\000\000\000\000\000\000\0046\006\165\004>\000\000\000\000\006\146\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\007\157\b\206\006\150\006\158\006\162\007\157\006\166\000\000\007\157\000\000\000\000\000\000\000\000\000\000\000\000\006\174\006\178\000\000\007\157\000\000\000\000\000\000\007\157\000\000\007\157\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\007\157\000\000\000\000\000\000\000\000\006\182\007\157\tJ\000\000\000\000\000\000\004\178\000\000\000\000\000\000\001\221\007\157\000\000\000\000\007\157\001\221\000\000\000\000\001\221\000\000\007\157\007\157\000\242\000\000\000\000\000\000\000\000\000\000\001\221\000\000\000\000\000\000\001\221\000\000\001\221\000\000\007\157\000\000\000\000\007\157\000\000\000\000\000\000\007\157\000\000\000\000\001\221\000\000\000\000\000\000\000\000\000\000\001\221\000\000\007\157\000\000\007\157\000\000\000\000\007\157\007\157\000\000\001\221\000\000\000\000\001\221\000\000\000\000\000\000\000\000\000\000\001\221\001\221\001\221\000\000\000\000\000\000\007\157\000\000\000\000\000\000\000\000\000\000\000\000\002\t\000\000\000\000\001\221\000\000\002\t\001\221\000\000\002\t\000\000\001\221\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\t\000\000\000\000\001\221\002\t\001\221\002\t\000\000\001\221\001\221\000\000\000\000\000\000\000\000\021~\000\000\000\000\000\000\002\t\000\000\000\000\000\000\000\000\000\000\002\t\000\000\001\221\000\000\000\000\000\000\000\000\001\221\000\000\006\169\002\t\000\000\000\000\002\t\006\169\000\000\000\000\006\169\000\000\002\t\002\t\000\000\000\000\000\000\000\000\000\000\000\000\006\169\000\000\000\000\000\000\006\169\000\000\006\169\000\000\002\t\000\000\000\000\002\t\000\000\000\000\000\000\002\t\000\000\000\000\006\169\000\000\000\000\000\000\000\000\000\000\006\169\000\000\002\t\000\000\002\t\000\000\000\000\002\t\002\t\000\000\006\169\000\000\000\000\006\169\000\000\000\000\000\000\002\t\000\000\006\169\006\169\000\242\000\000\000\000\000\000\002\t\000\000\000\000\000\000\000\000\025&\000\000\000\000\000\000\000\000\006\169\002\t\000\000\006\169\000\000\000\000\014\029\006\169\002\234\014\029\000\000 \190\000\000\000\000\000\000\000\000 \194\000\000\006\169\014\029\006\169\000\000\000\000\006\169\006\169\014\029\000\000\000\000\000\000\000\000\000\000\000\000\000\000\006\169\000\000\000\000\000\000\014\029\000\000\000\000\000\000\006\169\000\000\014\029\000\000\000\000\000\000\000\000\000\000\001\006\004\217\001\194\006\169\014\029\000\000\004\217\014\029\000\000\004\217\000\000\000\000\000\000\014\029\000\000\000\000\000\000\000\000\000\000\004\217\004\217 \198\000\000\004\217\000\000\004\217\000\000\000\000\004\217\014\029\000\000\000\000\014\029\000\000\000\000\000\000\014\029\004\217\004\217\000\000\000\000\000\000\004\217\004\217\004\217\000\000 \202\014\029\000\000\014\029\000\000\000\000\014\029\004\217\000\000\000\000\004\217\000\000\000\000\000\000\000\000\000\000\004\217\003\014\000\000\000\000\000\000\000\000\000\000\000\000\014\029\001\005\000\000\000\000\000\000\004\217\001\005\000\000\004\217\001\005\000\000\004\217\003\014\000\000\000\000\004\217\000\000\000\000\000\000\001\005\000\000\000\000\000\000\001\005\000\000\001\005\004\217\004\217\004\217\000\000\000\000\004\217\004\217\000\000\000\000\000\000\000\000\001\005\000\000\000\000\000\000\b\250\000\000\001\005\000\000\004\217\000\000\004\217\000\000\004\217\004\217\004\217\000\000\001\005\029^\000\000\001\005\000\000\000\000\000\000\004\217\000\000\001\005\001\005\000\242\000\000\000\000\000\000\004\217\000\000\000\000\001\t\000\000\025&\000\000\000\000\001\t\000\000\001\005\001\t\000\000\001\005\000\000\000\000\000\000\001\005\000\000\000\000\000\000\001\t\000\000\000\000\000\000\001\t\000\000\001\t\001\005\000\000\001\005\000\000\000\000\001\005\001\005\000\000\000\000\000\000\000\000\001\t\000\000\000\000\000\000\000\000\000\000\001\t\000\000\000\000\000\000\000\000\000\000\001\005\014\129\000\000\000\000\001\t\000\000\014\129\001\t\000\000\014\129\000\000\001\005\000\000\001\t\001\t\000\242\000\000\000\000\000\000\014\129\000\000\000\000\000\000\014\129\000\000\014\129\000\000\000\000\000\000\001\t\000\000\005\145\001\t\000\000\000\000\000\000\001\t\014\129\000\000\000\000\000\000\000\000\000\000\014\129\000\000\000\000\000\000\001\t\000\000\001\t\000\000\000\000\001\t\001\t\000\000\000\000\014\129\000\000\000\000\000\000\000\000\000\000\014\129\014\129\000\000\000\000\000\000\000\000\000\000\000\000\001\t\000\000\000\000\000\000\000\000\000\000\000\000\000\000\014\129\000\000\000\000\001\t\000\000\000\000\001\206\002\166\000\000\000\000\002\170\000\000\000\000\000\000\000\000\000\000\000\000\000\000\014\129\000\000\014\129\002\162\000\000\014\129\014\129\001\214\002\174\001\234\002\182\000\000\000\000\000\000\000\000\014\129\000\000\001\246\000\000\007\153\031*\000\000\000\000\014\129\007\153\000\000\000\000\007\153\000\000\000\000\002\186\002\194\002\202\000\000\014\129\000\000\002\214\007\153\002\222\004Z\004f\007\153\000\000\007\153\000\000\000\000\024\254\000\000\025\002\000\000\000\000\000\000\000\000\000\000\000\000\007\153\000\000\000\000\000\000\000\000\000\000\007\153\000\000\000\000\000\000\000\000\004v\000\000\000\000\000\000\006\157\007\153\000\000\000\000\007\153\006\157\006\178\000\000\006\157\000\000\007\153\007\153\000\000\000\000\000\000\021N\000\000\025\014\006\157\000\000\000\000\000\000\006\157\000\000\006\157\000\000\007\153\000\000\000\000\007\153\000\000\000\000\000\000\007\153\000\000\025\018\006\157\000\000\000\000\000\000\000\000\000\000\006\157\000\000\007\153\000\000\007\153\020\174\000\000\007\153\007\153\001\137\006\157\000\000\000\000\006\157\001\137\000\000\000\000\001\137\000\000\006\157\006\157\000\000\000\000\000\000\000\000\007\153\000\000\001\137\000\000\001\137\000\000\001\137\000\000\001\137\000\000\006\157\000\000\000\000\006\157\000\000\000\000\000\000\006\157\000\000\000\000\001\137\000\000\000\000\000\000\000\000\000\000\001\137\000\000\006\157\000\000\006\157\000\000\000\000\006\157\006\157\000\000\000\000\000\000\000\000\001\137\000\000\000\000\000\000\000\000\000\000\001\137\001\137\000\242\001\206\002\166\000\000\006\157\002\170\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\137\000\000\000\000\000\000\000\000\000\000\001\214\002\174\001\234\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\246\000\000\001\137\000\000\001\137\001\137\000\000\001\137\001\137\000\000\000\000\000\000\000\000\002\186\002\194\002\202\000\000\000\000\000\000\002\214\000\000\002\222\004Z\004f\000\000\001\137\000\000\000\000\000\000\024\254\004\177\030\214\000\000\000\000\000\000\004\177\001\137\000\000\004\177\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\177\004v\000\000\000\000\004\177\000\000\004\177\000\000\005\245\b\206\000\000\006\178\000\000\005\245\000\000\000\000\005\245\000\000\004\177\000\000\000\000\000\000\030\226\000\000\004\177\000\000\005\245\000\000\000\000\000\000\005\245\000\000\005\245\000\000\004\177\000\000\000\000\004\177\000\000\000\000\025\018\000\000\000\000\004\177\005\245\000\000\000\000\000\000\000\000\000\000\005\245\tJ\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\177\000\000\000\000\004\177\005\245\000\000\000\000\004\177\000\000\004\169\005\245\005\245\000\242\000\000\004\169\000\000\000\000\004\169\004\177\000\000\004\177\000\000\000\000\004\177\004\177\000\000\005\245\004\169\000\000\000\000\000\000\004\169\000\000\004\169\000\000\004\201\000\000\000\000\000\000\000\000\004\201\004\177\000\000\004\201\005\245\004\169\005\245\000\000\000\000\005\245\005\245\004\169\020\214\004\201\000\000\000\000\000\000\004\201\000\000\004\201\000\000\004\169\000\000\000\000\004\169\000\000\000\000\005\245\000\000\000\000\004\169\004\201\000\000\000\000\000\000\000\000\000\000\004\201\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\169\004\201\000\000\004\169\004\201\000\000\000\000\004\169\000\000\000\000\004\201\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\169\000\000\004\169\000\000\000\000\004\169\004\169\000\000\004\201\000\000\000\000\004\201\000\000\000\000\000\000\004\201\000\000\004\153\000\000\000\000\000\000\000\000\004\153\004\169\000\000\004\153\004\201\000\000\004\201\000\000\000\000\004\201\004\201\000\000\023\202\004\153\000\000\000\000\000\000\004\153\000\000\004\153\000\000\004\217\000\000\000\000\000\000\000\000\004\217\004\201\000\000\004\217\000\000\004\153\000\000\000\000\000\000\000\000\000\000\004\153\024\194\004\217\000\000\000\000\000\000\004\217\000\000\004\217\000\000\004\153\000\000\000\000\004\153\000\000\000\000\000\000\000\000\000\000\004\153\004\217\000\000\000\000\000\000\000\000\000\000\004\217\000\000\000\000\000\000\000\000\000\000\004\130\000\000\000\000\004\153\000\000\000\000\004\153\004\217\000\000\000\000\004\153\000\000\000\000\004\217\003\014\000\000\000\000\000\000\000\000\000\000\000\000\004\153\000\000\004\153\000\000\000\000\004\153\004\153\000\000\004\217\000\000\000\000\000\000\000\000\011v\000\000\000\000\000\000\000\000\000\000\001\206\001\210\r\226\000\000\004\153\000\000\000\000\004\217\000\000\004\217\000\000\000\000\004\217\004\217\002\190\028B\000\000\000\000\004\146\001\214\001\218\001\234\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\246\004\217\000\000\000\000\000\000\000\000\000\000\001\254\000\000\000\000\000\000\007q\007q\001\250\002\194\002\202\000\000\000\000\000\000\002\214\000\000\002\222\004Z\004f\000\000\000\000\000\000\004j\000\000\004r\007q\007q\007q\000\000\000\000\000\000\000\000\000\000\000\000\000\000\007q\000\000\000\000\000\000\000\000\011j\000\000\000\000\000\000\004v\000\000\001\206\001\210\007q\007q\007q\000\000\000\000\000\000\007q\000\000\007q\007q\007q\000\000\000\000\000\000\004:\000\000\007q\001\214\002\174\001\234\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\246\018\226\004\185\000\000\000\000\000\000\000\000\004\185\000\000\007q\004\185\000\000\000\000\001\250\002\194\002\202\000\000\000\000\000\000\002\214\004\185\002\222\004Z\004f\004\185\000\000\004\185\000\000\000\000\004r\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\185\000\000\000\000\000\000\000\000\000\000\004\185\000\000\000\000\000\000\004^\004v\007q\004\161\000\000\000\000\000\000\000\000\004\161\004\185\000\000\004\161\000\000\000\000\000\000\004\185\000\000\000\000\000\000\000\000\000\000\004\161\000\000\000\000\000\000\004\161\000\000\004\161\000\000\000\000\000\000\004\185\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\161\004\174\000\000\004\178\000\000\000\000\004\161\000\000\000\000\000\000\004\185\000\000\004\185\004\209\000\000\004\185\004\185\000\000\004\209\004\161\000\000\004\209\000\000\000\000\000\000\004\161\000\000\000\000\000\000\000\000\000\000\004\209\000\000\004\185\000\000\004\209\000\000\004\209\000\000\000\000\000\000\004\161\000\000\000\000\022\030\000\000\000\000\000\000\000\000\004\209\000\000\000\000\000\000\000\000\000\000\004\209\000\000\000\000\000\000\004\161\000\000\004\161\000\000\000\000\004\161\004\161\000\000\004\237\004\209\000\000\000\000\000\000\000\250\000\000\004\209\002\238\000\000\000\000\000\000\000\000\000\000\000\000\004\161\000\000\000\000\003\166\000\000\000\000\000\000\004\237\004\209\003\170\000\000\024V\004\225\000\000\000\000\000\000\014-\000\250\000\000\014-\002\022\003\182\000\000\000\000\000\000\000\000\004\209\020\154\004\209\014-\021\162\004\209\004\209\000\000\004\225\014-\003\170\028n\000\000\000\000\020\254\000\000\000\000\000\000\000\000\000\000\021\022\014-\021\166\004\209\000\000\000\000\000\000\014-\021\206\000\000\000\000\000\000\000\000\000\000\024\234\000\000\021\030\014-\000\000\000\000\014-\020\254\000\000\000\000\000\000\000\000\014-\021\022\000\000\000\000\000\000\000\000\000\000\000\000\021&\000\000\021b\000\000\000\000\004\237\004\237\000\000\014-\021\030\000\000\014-\000\000\011v\000\000\014-\000\000\000\000\000\000\001\206\001\210\000\000\000\000\025\166\000\000\000\000\014-\021&\014-\022f\000\000\014-\004\225\004\225\000\000\000\000\000\000 \142\001\214\002\174\001\234\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\246\014-\022v\000\000\000\000\000\000\000\000\001\254\000\000\000\000\000\000\007m\007m\001\250\002\194\002\202\000\000\000\000\000\000\002\214\000\000\002\222\004Z\004f\000\000\000\000\000\000\000\000\000\000\004r\007m\007m\007m\000\000\000\000\000\000\000\000\000\000\000\000\000\000\007m\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004v\000\000\015Y\015Y\007m\007m\007m\000\000\000\000\000\000\007m\000\000\007m\007m\007m\000\000\000\000\000\000\000\000\000\000\007m\015Y\015Y\015Y\b\226\000\000\000\000\000\000\000\000\000\000\000\000\015Y\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\007m\007\146\000\000\000\000\015Y\015Y\015Y\001\206\001\210\026b\015Y\000\000\015Y\015Y\015Y\000\000\000\000\000\000\000\000\000\000\015Y\000\000\000\000\000\000\001\206\001\210\001\214\001\218\001\234\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\246\000\000\000\000\000\000\015Y\000\000\000\000\001\214\002\174\001\234\006\026\000\000\000\000\001\250\002\194\002\202\000\000\001\246\000\000\002\214\022\178\002\222\004Z\004f\000\000\000\000\000\000\000\000\000\000\004r\002\218\000\000\024\n\000\000\023*\000\000\002\214\000\000\002\222\004Z\004f\001\206\001\210\026\194\000\000\000\000\024\026\000\000\000\000\004v\000\250\000\000\000\000\002\238\000\000\000\000\000\000\000\000\000\000\000\000\001\214\001\218\001\234!\006\000\000\000\000\004v\000\000\000\000\003\170\001\246\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\182\000\000\001\250\002\194\002\202\000\000\020\154\000\000\002\214\000\000\002\222\004Z\004f\000\000\000\000\000\000\028n\000\000\004r\020\254\000\000\000\000\000\000\000\000\000\000\021\022\001\206\001\210\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004v\000\000\000\000\021\030\000\000\000\000 \150\001\214\002\174\001\234 \182\000\000\000\000\000\000\000\000\000\000\000\000\001\246\000\000\000\000\000\000\021&\000\000\021b\000\000\000\000\005\021\000\000\001\206\001\210\001\250\004\202\002\202\000\000\000\000\000\000\002\214\000\000\002\222\004Z\004f\000\000\000\000\000\000\025\166\000\000\004r\001\214\002\174\001\234\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\246\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004v\000\000\001\206\001\210\001\250\004\214\002\202\000\000\000\000\000\000\002\214\000\000\002\222\004Z\004f\000\000\000\000\000\000\000\000\000\000\004r\001\214\002\174\001\234\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\246\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004v\000\000\001\206\001\210\001\250\005v\002\202\000\000\000\000\000\000\002\214\000\000\002\222\004Z\004f\000\000\000\000\000\000\000\000\000\000\004r\001\214\002\174\001\234\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\246\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004v\000\000\001\206\001\210\001\250\005\178\002\202\000\000\000\000\000\000\002\214\000\000\002\222\004Z\004f\000\000\000\000\000\000\000\000\000\000\004r\001\214\002\174\001\234\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\246\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004v\000\000\001\206\001\210\001\250\005\202\002\202\000\000\000\000\000\000\002\214\000\000\002\222\004Z\004f\000\000\000\000\000\000\000\000\000\000\004r\001\214\002\174\001\234\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\246\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004v\000\000\001\206\001\210\001\250\005\226\002\202\000\000\000\000\000\000\002\214\000\000\002\222\004Z\004f\000\000\000\000\000\000\000\000\000\000\004r\001\214\002\174\001\234\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\246\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004v\000\000\001\206\001\210\001\250\030\030\002\202\000\000\000\000\000\000\002\214\000\000\002\222\004Z\004f\000\000\000\000\000\000\000\000\000\000\004r\001\214\002\174\001\234\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\246\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004v\000\000\001\206\001\210\001\250\030J\002\202\000\000\000\000\000\000\002\214\000\000\002\222\004Z\004f\000\000\000\000\000\000\000\000\000\000\004r\001\214\002\174\001\234\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\246\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004v\000\000\001\206\001\210\001\250\030b\002\202\000\000\000\000\000\000\002\214\000\000\002\222\004Z\004f\000\000\000\000\000\000\000\000\000\000\004r\001\214\002\174\001\234\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\246\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004v\000\000\001\206\001\210\001\250\030z\002\202\000\000\000\000\000\000\002\214\000\000\002\222\004Z\004f\000\000\000\000\000\000\000\000\000\000\004r\001\214\002\174\001\234\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\246\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004v\000\000\001\206\001\210\001\250\030\158\002\202\000\000\000\000\000\000\002\214\000\000\002\222\004Z\004f\000\000\000\000\000\000\000\000\000\000\004r\001\214\002\174\001\234\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\246\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004v\000\000\000\000\000\000\001\250\030\198\002\202\000\000\000\000\000\000\002\214\000\000\002\222\004Z\004f\000\000\000\000\000\000\000\000\000\000\004r\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004v")) + ((16, "H\nT\158R\176\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\022\168R\176\000\000\000\000\021\168R\176H\n\025j\000\172\000I\130\190\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0007\000L\000\141\000\000\000\158\001\178\000\000\000\238\001\006\003\194\000\000\002T\002\022\003\200\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\166\000\000\000\000\000\000\001\208\181\148\000\000\000\000\000\000\003\022\000\000\000\000]*\005\022\005\248\000\000\000\000\183dO\230\003\022\007\150\000\000\000\000\003\022Y\024\003\022\b\158X\162Tx\021\168F\136~\226\021\168\129pT6\021\168R\250\000\000\020\242\000\000R\250\022H\000\000K\138\000\000\023B\000\000\000\000\004\190\020\148\016\186\003\022\000\000\021\168\000\000\003\022\020\148\018\202\003\022\000\000\000\000\002\248\000\000K\138\000\000\000\000\005\204\021D\000\000\003\022\021D\000\000\004|\169\244\003\022\000\000\000\000\175T\175\238\145^\000\000\003\022\000\000\177\218\180\154\000\000\003\022cf\003\022\b\216\000\000i\208\180\154^\nh\000\180\154S\136\183\180\003\022X\212\180\154R\176H\n\000\000\000\000T6\021\168^\202R\250\005&\1672\170\156\000\000\173\218R\176H\nT\158\021\168\000\000\000\000\017\136Tv\021\168ELY\156\000\000\024(\000\000\000\000\000\000\000\000\024V\000\000\000\000\000\000\000\000L\192\0268\022\128\001\248\000\164\000\000\000\000\006j\000\000F\136\t\014\t \021\168\029\214\021\168H\nH\n\000\000\000\000\000\000I\200I\200\021\168\029\214GL\021\168\000\000\025D\021D\tF\000\000\tF\nN\000\000\000\000\000\000\000\000\000\000\000\000\000\000T\158\021\168\000\000F\014\158\230H\n\000\000\001\b\000\000Y\156\145\226\158N\145\226\000\000\tF\000\000\002\150\000\000\000\000\0310X\020\180\234\000\000X\020\180\234\000\000X\020\149\248\0056\000\000\006\"\nT\000\000\019.\000\000\n\224\000\000\000\000\011V\000\000\000\000\000\000X\020\003\022\000\000_\016\000\000e\254\186\166i\208f\230\186\246i\208g\206e\022[\188\000\000\000\000b\"\0056\000\000`\022\000\000c([\188d.h\182\000\000h\232\180\154\000\000\005\158\0056\0056\000\000a\028\000\000X\020\000\000\000`\000\000|\166\001\134\003\022\000\000\006\206\n&\003\022\011\000\000\000\003\022\n\128\003\022\011R\000\000\003\150\003\022\000\000\011\252\003\022\011\136\003\022\012b\000\000X\020\012D\012\168\187Fi\208i\158j\134\000\000\005\b\000\000X\020\006\016j\184\180\154\004\158X\020\014P\r4\187\150i\208knlV\000\000\r\152\187\230i\208m>n&\000\000\r\176\1886i\208o\014o\246\000\000p\222\000\000\000\000\000\000\000%\000\000X\020\000\000\001\016\\\156\000\000X\020\0068X\020\030\154\000\000\031\162\000\000\nX\002\150\000\000\r\140X\020\006v\000\000\006\180\000\000\002\148\000\000\000\000\005\000\000\000\000\000\000\000\003P\000\170Y\156T\158\021\168Y\156\000\000\0056\000\000\000\000\000\000\0056\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000S\170\022\254\001\142\007\216\000\000\000\000\000\000\002\020\0276\145\226\000\000\000\000\148\016\021\168Y\156\000\000\000\000`\002Y\156a\b\159x\000\000b\014\000\000Y\156\000\000\000\000Z\152Q\170\004Z\004Z\000\000\014\174Y\156\000\000\000\000\000\000 h\015&\000\000E\214\000\000\000\000\160\"\000\000c\020\149\248\000\000\021J\000\000\000\000\160\204\000\000d\216\007\138\000\000\000\000\000\000\000\000\015D\000\000H\180\000\000\000\000\158N\000\000\tP\000\000\000\000_j\131|\000\000\000\000E>\bx\023l\t\128\000\000\000\000\000\000\000\000\007\236\000\000\000\000\000\000\007p\000\000\000\000}p\001\254\r\182\r\182\024\188\181\148\005\166X\020\017\014\019\030\015\196\000\000\015\238\000\000\000\000\003\006\014\190\r\182\t\148\000\000T\158L\220I\200\021\168\029\214\000\172\b.\022h\000\000\015lF\136F\136\000\172\b.\b\148F\136\000\000\151\006\006BR\250\tF\b,\184\004\000\000X\020\146~X\020\131\230\147\nX\020\n\152X\020\147\150\000\000\016\030\016\220\t\"F\136\151\146\000\000\b\250\001X\127\004\000\000\000\000\000\000\000\000F\136\152\030F\136\152\170\002f\004|\132\182\b\166\004|\133`\000\000\1536\006B\000\000\000\000\000\000\b4\000\000\000\000\012T\000\000\t\156\029\214\000\000\127\174H&\000\000\022\242\000\000\000\000F\136\t<\000\000\000\000\000\000\000\000~8\000\000\012\192\000\000H\nK\234\0076\026\176\000\000\023\166]\188T\158\021\168J\240T\152\021\168\017\136\017\136\000\000\000\000\000\000\000\000\000\000\000\000\002\016\024\174G\012\000\000UbV&M\216\021\168\029\214\027\018F\136\000\000\r\\\000\000V\234W\174\161v\027PX\020\n\226\000\000T\158\021\168\000\000\148\016\021\168\131|Y\156\025\234\000\000T\158\021\168\153\246\011\170\000\000Y\156Y\156\025@\181\148\n\206X\020\020&\028\180\t\148\016\\\000\000\t\148\016j\000\000\000\000\000\000L\192\n>\016n\016\n\003\022\0176\000\000\026\206\003\022\017\178\134$\000\000\148\016\021\168Y\156\028X\000\000\000\000T\152\021\168\017\136\023\166\017\234\000\000\017\136\003\024\007\002\000\000\000\000\017\136\n\160\017\252\006$\181:\000\000 \030\184T\000\000\027\210X\020 \212\018>\000\000\000\000\018N\000\000\017\136\004 \018d\000\000\023*\000\000\007\214\000\000\000\000\027\198\000\000\018\144\024\174\000\000\000\000\000\000\000\000\002\128\000\000\000\000\028\206\000\000\029\214\000\000\030\222\000\000\019\152\025\182\000\000\000\000\000\000R\176\000\000\000\000\000\000\000\000\031\230\000\000 \238\000\000!\246\000\000\"\254\000\000$\006\000\000%\014\000\000&\022\000\000'\030\000\000(&\000\000).\000\000*6\000\000+>\000\000,F\000\000-N\000\000.V\000\000/^\000\0000f\000\0001n\000\0002v\000\0003~\021\168\145\226\000I\128nM\188\011,\028\240\003\022\018\220\129,N\184\011\168\030\196\003\022\019:\129,\170\200Q\170Y\156\028X\000\000\0124\003\022\000\000\0194\003\022\018\162\003\022\019\146\000\000\0206X\020\017h\000\000N\150\184\164\023 X\020\017l\000\000\000\000\000\000\000\000\019\b\000\000\000\000\000\000\000\000\129,\000\000\000\000\000\000\019\194\129,\000\000\027t\000\000\000\000Y\156\019\210\000\000U\184\184\164\024DX\020\017\202\000\000\000\000\019\228\129\234\000\000\000\000\019r\000\000\000\000\000\000\000\000\129\234\000\000\181\148\025\000X\020\011\160\000\000\000\000\019~\000\000\000\000\000\000O\182\181\148\012N\019tX\020\012\168\000\000\000\000\025\186X\020\012\242\000\000\000\000\019\148\000\000\000\000\000\000\029`X\020\r\176\000\000\000\000 x\000\000\000\000\161\212\000\000!\"\162~\000\000!\128\163(\000\000\"*\007\232\000\000\000\000\000\000\000\000\"\136Y\156#2\000\000\163\146\163\146\000\000\000\000\000\0004\134\000\000\014\146\000\000\000\000\000\000\003\158\000\000\000\000\012@\028\128\000\000\n\250\000\000\000\000\130XJ\240\000\000\000\000\015\128\000\000\000\000\000\000\004\166\000\000\000\000\000\000\017\136\005(\029\"\000\000\012\002\000\000\0060\000\0005\142\000\000\015\154\000\000\0078\000\0006\150\000\000\bt\000\000\b@\000\0007\158\026\164\000\000\r\146\tH\000\0008\166\000\000\016\136\nP\000\0009\174\000\000\t\248\011X\000\000:\182\012\204\029\252\000\000\014\154\012`\000\000;\190\000\000\016\140\rh\000\000<\198\000\000\012T\014p\000\000=\206\015x\000\000>\214\016\128\020\160\000\000\000\000\000\000\015\014\000\000\000\000\016\162\000\000\000\000\014\018\000\000\000\000\014\188\000\000\000\000\000\000\019\132\000\000\019\154\000\000\000\000P\174\014D\030\238\003\022\020N\134$[\188\029f\000\000\000\000\134$\000\000\000\000\020l\134$\000\000\000\000\020\132\134$\000\000\134$\000\000\020l\000\000\000\000\000\000\000\000\000\000\000\000?\222Y\156\000\000\000\000\020\190\000\000@\230\000\000A\238\000\000#\144\000\000\000\000\007\016\000\000\000\000Y\156\000\000\000\000\1648\015\162\000\000\000\000[^\000\000\012\152\000\000\000\000\130X\000\000\148~\021\168I\168\021\168\131|Y\156\021\238\000\000\134\146\029\002\000\000\135\016\000\000\135\164\000\000\135\164\000\000\000\000\000\000\024T\000\000\000\000\000\000K\234\000\000\012\024\000\000\000\000\130X\024\002\000\000\\6\000\000\017\006\000\000\000\000\130X\b>\000\000\004\230\015|\000\000\000\000\023\166F0\tF\000\000I\224\000\000\004X\n\136 \002\000\000\000\000\015\026\000\000\000\000\002\014\026\190k\242\000\000\026\190\000\000\0170\000\000\000\000\015\176\000\000\000\000\134\146\004$\004\230\000\000\000\000\015\254\000\000\000\000\017\170\000\000\000\000\130X\tF\000\000\000\000\0168\000\000\000\000\130X\026T\000\000\000\000\021\168\029\214\r\200\000\000\000\000\000(\001\248\000\164\b.\029\214\168\024F\136\002p\029\214\168\194\020V\000\000\000\000\b.\000\000\025J\021\168\024B\000\000\016L\020\222\000\000\021\018\022\240f0\001\024\000\000\000\000\020\226\020f\181\148\026\232X\020\025<\012\152\nL\021J\000\000\028T\021(\000\000\022J\000\000\000\000[\188\136J\021@[\188[\188\137\000\137\182\000\000\149$g\024\184\244\003\022Y\024\028\024f0\021\016[\188\154x\138l\021h[\188\155\"\139\"\002p\021P\000\000\000\000\000\000\021\168\164\150\000\000\145\226\163\146\000\000\000\000\021\202\000\000\t\148\021\214\000\000\000\000\000\000B\246\000\000\000\000\017X\000\000\000\000\130X\025\026\000\000\000\000M\216\021\168\029\214\031\004\000\000G\134\000\000\014d\000\000\006$\000\000\000\000\022*\000\000\022|\131|C\254\148~\000\000\000\000O2\000\000\015l\000\000R$\000\000\000\252\000\000F\136\016t\000\000\163\146\000\000\021\168\029\214\163\146\000\000\000(\025D\021D\003\022\1768F\136\171|\163\146\000\000\007 \014\016\000\164\b.\163\146\178$\001\248\000\164\b.\163\146\178$\000\000\000\000\b.\163\146\000\000R\176H\nY\156\029\002\000\000\000\000R\176H\nm\128\000\000\025j\000\172\000I\021\152\181\148\031\bX\020\165D\021\226\022\160\176\158\000\000\163\146\000\000\165\202\025J\021\168\024B\169(%\014\017T\171\226\b\166\021\232\021\168\163\146\000\000\021\168\163\146\000\000\149\248\185R\025D\000(\001\248\004|\180\028\000\000\001\248\004|\180\028\000\000\028\\\025D\021D\003\022}\210F\136\163\146\000\000\007 \015\024\004v\r\206\000\000\180\028\000\000\000\164\021\246F\136\163\146\181\168\001\248\000\164\022\000F\136\163\146\181\168\000\000\000\000\t6\000\000\163\146\000\000F\136\178\176\163\146\000\000\t6\000\000\025J\021\168\024B\166\204\030P\025D\021J\005n\000\000\015\190K\138\000\000\005b\000\000K\138\000\000\022\174\022`MN\021\168R|X\020\018\022\000\000Z\208\006\220\005J\012\130\000\000\017\170\000\000\022\224\022\138X\020H\218\000\000\021\148\0226\018`\000\000\018\178\000\000\023\026\022\166\181\148H\218\000\000\021\168MN\023v\026\234\001\248\000\000\011\"MNX\020\017\194\0056\000\000X\020\007\024\014P\000\000\000\000\155\204\000\000\000\000\016JMN\156XH\218\000\000\021\168X\020\018\030X\020\1424H\218\000\000\019@\000\000\000\000H\218\000\000\000\000Z\208\000\000\163\146\178\234\021J\005n\015\190\023d\023,MN\163\146\178\234\000\000\000\000\021J\005n\015\190\023\148\023\026\185^]\250[\188\023\182\185^\149\248 X\023\196\185^[\188\023\214\185^\157\030\166\144\000\000\177\004\000\000\000\000\163\146\181\222\021J\005n\015\190\023\202\023Z\185^\163\146\181\222\000\000\000\000\000\000\185R\000\000\000\000\000\000\000\000\000\000\000\000\000\000\163\146\000\000Tx\021\168F\136\163\146\000\000\179P\021\168NN\023\248\1672\170\156\000\000\173\218\179P\000\000\000\000\000\000\182J\021\168NN\024\b\016\214\023\152\175\238\181:\001\024\024V\000\000\000\000\157\202\166\204\021\168\000\000\172v\024B\000\000\000\000\173\218\182J\000\000\000\000\000\000\169\142\028b\024B\001\024\024\136\000\000\000\000\000\000\166\204\021\168\000\000\001\024\024\146\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\n\152\030P\021J\005n\015\190\024l\139\218L\192S\016\021\168ELPl%\014\003\240\014\146\000\000\024t\012N\000\000\000\000\024\"\000\000\000\000dX\000\000\011z\017\212\000\000\018\214\000\000\024\132\024\018X\020\143\004\024\156\015f\000\000\000\000\024Z\000\000\000\000$\128\000\216\019\n\000\000\024\236\140Z\185\200\012N\024\144X\020\019\"\000\000\000\000\024\170\000\000\000\000\000\000dX\000\000\023N\019l\000\000\019\186\000\000\025\016\024\178\181\148\000\000\025:\140\218\186\"\012N\025\004X\020\020*\000\000\000\000\025\028\000\000\000\000\000\000\021\168\000\000dX\000\000\021\208\021\168S\016S\016\141ZR\176\021\168\164\150\145\226\003\246\000\000\027\204\001\248\000\000\018ZS\016X\020\019\210\tF\000\000\021\168\139\218\139\218S\016\005\204S\016\000\000H\254I\244\000\000\141\220\000\000\000\000\142\172\000\000\000\000\143|\000\000\020.S\016\144L\164\150\145\226\003\246\000\000\011L\000\000\000\000\185^\0182\000\000\000\000\139J\025\136\000\000dX\000\000S\016\139JdX\000\000\021\168X\020dX\000\000\020J\000\000\000\000dX\000\000\000\000Pl\000\000\174f\185^\025\189\198i\208y\006y\238\000\000!>X\020\023\154\026N\190\022i\208z\214{\190\000\000\026z\001\024\026\198\000\000\000\000\172\220\000\000\000\000\175\238\000\000\173\218\000\000\026\210\031z#\002\174\000\000\000\000\000\000\000\000\000\024\002\169\244\177@\175\238\000\000\173\218\000\000\026\228\031z#\002\174\000\000\000\024X\000\000\000\000\018\132\000\000\163\146\000\000\027\004\000\000\000\000\026\134\000\000\026\140\000\000\026\166\000\000\000\000\129p\026\168\000\000\000\000$V\130\190\027P\000\000\000\000\000\000\t:\001X\144\196\027R\000\000\000\000\000\000\000\000\000\000\000\000\026\182\000\000%\014\000\000\026\188\000\000X\020\000\000\n\226\000\000\000\000\027\002\000\000\000\000\004|\000\000\016~\000\000\000\000\000\000\007B\000\000\029\214\000\000\005\220\000\000F\136\000\000\003`\000\000\016\220\000\000\027\022\000\000Y\156\025@\000\000\000\000\rf\027\028\000\000\000\000\027\020\015vJ\240\003\022\133^\000\000\000\000\000\000\000\000\000\000\182~\003\022\173x\000\000\000\000\000\000\000\000\000\000\182\230\000\000\000\000\027\204\000\000V\000\000\000\004\024\027\218\000\000\027\232\000\000K\234K\234\1866\1866\000\000\000\000\163\140\1866\000\000\000\000\000\000\163\140\1866\027H\000\000\027J\000\000"), (16, "\nM\nM\000\006\nM\006\182\nM\003R\003V\nM\003\134\002\246\nM\001\006\nM\001\194\003\146\nM\001.\nM\nM\nM\001f\nM\nM\nM\001\214\003%\003%\021\230\003\150\nM\004\030\004\"\012\226\nM\001n\nM\001~\003\154\001\142\004B\003%\nM\nM\004n\004r\nM\004v\004\130\004\142\004\146\004\154\t6\000\n\nM\nM\003J\001j\003\185\004\138\n\146\nM\nM\nM\n\150\n\154\n\166\n\186\t\249\007B\nM\nM\nM\nM\nM\nM\nM\nM\nM\0116\nM\007N\007R\003%\nM\007\225\nM\nM\003\234\003\238\011B\011Z\011\222\007^\007b\nM\011\242\nM\nM\001v\nM\nM\nM\nM\007\225\006\186\017\202\nM\007\225\nM\nM\000\242\nM\nM\nM\nM\nM\nM\nM\007f\n\174\nM\nM\nM\n\198\005\"\011\246\t~\nM\nM\nM\nM\0159\0159\004\225\0159\004\225\0159\001j\0159\0159\003\185\0159\0159\0159\0159\021\186\0159\0159\000\242\0159\0159\0159\001\134\0159\0159\0159\0159\004\225\0159\t\249\0159\0159\0159\0159\0159\0159\0159\0159\t\250\0159\000\242\0159\006\198\0159\0159\0159\0159\0159\t\222\0159\0206\0159\0072\0159\004\150\0159\0159\0159\000\242\006\149\0159\0159\0159\0159\0159\0159\0159\0159\000\242\0159\0159\0159\0159\0159\0159\0159\0159\0159\0159\0159\001\186\0159\0159\0159\0159\0159\0071\0159\0159!\030\005\194\001\226\004\225\0159\0159\0159\0159\020:\0159\0159\001\190\0159\0159\0159\0159\0159\0071\0159\0159\021\190\0159\0159\005\202\0159\0159\0159\0159\0159\0159\0159\0159\0159\0159\0159\0159\0159\0159\004\225\004\225\0159\0159\0159\0159\001\237\001\237\001\237\001\237\003\178\001\237\001z\001\237\001\237\001\237\001\237\001\237\001\237\001\237\001\237\001\237\001\237\001\237\001\237\001\237\001\237\001\237\001\237\001\237\001\237\001\237\001\150\001\237\003\190\001\237\001\237\001\237\001\237\001\237\001\237\001\237\001\237\001\237\001\237\b\238\001\237\t\030\001\237\001\237\001\237\001\237\001\237\001\237\001\237\t~\001\237\000\242\001\237\001j\001\237\001\237\001\237\003\185\001\237\001\237\001\237\001\237\001\237\001\237\001\237\001\237\001\237\004\186\001\237\001\237\001\237\001\237\001\237\001\237\001\237\001\237\001\237\001\237\001\237\001\237\001\237\001\237\001\237\001\237\001\237\001\202\001\237\001\237\007\018\006\242\004\190\t\250\001\237\001\237\001\237\001\237\001\237\001\237\001\237\001\237\001\237\001\237\001\237\001\237\001\237\0196\n\230\001\237\007\166\001\237\001\237\000\242\001\237\001\237\001\237\001\237\001\237\001\237\001\237\001\237\001\237\001\237\001\237\001\237\001\237\001\237\004\225\001\237\001\237\001\237\001\237\001\237\011\177\011\177\012\174\011\177\002\174\011\177\001\222\011\177\011\177\n\006\011\177\011\177\011\177\011\177\019\238\011\177\011\177\n\014\011\177\011\177\011\177\007\022\011\177\011\177\011\177\011\177\n\018\011\177\007\205\011\177\011\177\011\177\011\177\011\177\011\177\011\177\011\177\t~\011\177\t&\011\177\021\030\011\177\011\177\011\177\011\177\011\177\007\205\011\177\001\226\011\177\007\205\011\177\r\146\011\177\011\177\011\177\006\186\n\017\011\177\011\177\011\177\011\177\011\177\011\177\011\177\011\177\015\210\011\177\011\177\011\177\011\177\011\177\011\177\011\177\011\177\011\177\011\177\011\177\t\250\011\177\011\177\011\177\011\177\011\177\0079\011\177\011\177\007A\005\246\015\214\000\242\011\177\011\177\011\177\011\177\002\178\011\177\011\177\000\242\011\177\011\177\011\177\011\177\012\022\0079\012v\011\177\007A\011\177\011\177\005\254\011\177\011\177\011\177\011\177\011\177\011\177\011\177\011\177\011\177\011\177\011\177\011\177\011\177\011\177\007\205\011\177\011\177\011\177\011\177\011\177\004\005\004\005\n%\004\005!\179\004\005\001\138\004\005\004\005\001\154\004\005\004\005\004\005\004\005\004\249\004\005\004\005\004\225\004\005\004\005\004\005\019j\004\005\004\005\004\005\004\005\004\225\004\005\007\209\004\005\004\005\004\005\004\005\004\005\004\005\004\005\004\005\006\022\004\005\000\242\004\005\003~\004\005\004\005\004\005\004\005\004\005\007\209\004\005\006\197\004\005\007\209\004\005\001\210\004\005\004\005\004\005\004\249\003~\004\005\004\005\004\005\004\005\004\005\004\005\004\005\004\005\016\022\004\005\004\005\004\005\004\005\004\005\004\005\004\005\004\005\004\005\004\005\004\005\007\254\012\006\004\005\004\005\012\014\012n\002z\004\005\004\005\n%\005\246\016\026\006E\004\005\004\005\004\005\004\005\002\218\004\005\004\005\n)\004\005\004\005\004\005\004\005\012\022\002\146\012v\004\005\004\249\004\005\004\005\005\254\004\005\004\005\004\005\004\005\004\005\004\005\004\005\004\005\004\005\004\005\004\005\004\005\004\005\004\005\n\162\004\005\004\005\004\005\004\005\004\005\003\245\003\245\007\030\003\245\006:\003\245\001\210\003\245\003\245\006E\003\245\003\245\003\245\003\245\001\210\003\245\003\245\n\158\003\245\003\245\003\245\024\026\003\245\003\245\003\245\003\245\023B\003\245\006E\003\245\003\245\003\245\003\245\003\245\003\245\003\245\003\245\006R\003\245\023\206\003\245\001\238\003\245\003\245\003\245\003\245\003\245\000\242\003\245\003n\003\245\023\226\003\245\n)\003\245\003\245\003\245\004\234\024\"\003\245\003\245\003\245\003\245\003\245\003\245\003\245\003\245\006\161\003\245\003\245\003\245\003\245\003\245\003\245\003\245\003\245\003\245\003\245\003\245\005\150\012\006\003\245\003\245\012\014\012n\015m\003\245\003\245\002\194\005\246\004\225\005\154\003\245\003\245\003\245\003\245\006>\003\245\003\245\015m\003\245\003\245\003\245\003\245\012\022\005\"\012v\003\245\002\202\003\245\003\245\005\254\003\245\003\245\003\245\003\245\003\245\003\245\003\245\003\245\003\245\003\245\003\245\003\245\003\245\003\245\021v\003\245\003\245\003\245\003\245\003\245\011\025\011\025\000\242\011\025\t\253\011\025\nV\011\025\011\025\023\230\011\025\011\025\011\025\011\025\021z\011\025\011\025\t\130\011\025\011\025\011\025\000\242\011\025\011\025\011\025\011\025\004\225\011\025\028\178\011\025\011\025\011\025\011\025\011\025\011\025\011\025\011\025\t\002\011\025\005\170\011\025\004\242\011\025\011\025\011\025\011\025\011\025\000\242\011\025\003\246\011\025\t\190\011\025\016>\011\025\011\025\011\025\007\002!\163\011\025\011\025\011\025\011\025\011\025\011\025\011\025\011\025\000\242\011\025\011\025\011\025\011\025\011\025\011\025\011\025\011\025\011\025\011\025\011\025\r\146\011\025\011\025\011\025\011\025\011\025\005\206\011\025\011\025\007\n\001\242\004\225\004\225\011\025\011\025\011\025\011\025\t\253\011\025\011\025\005\014\011\025\011\025\011\025\011\025\011\025\005\222\011\025\011\025\0122\011\025\011\025\012>\011\025\011\025\011\025\011\025\011\025\011\025\011\025\011\025\011\025\011\025\011\025\011\025\011\025\011\025\004\225\004\225\011\025\011\025\011\025\011\025\011)\011)\006\214\011)\004\225\011)\t\213\011)\011)\004\225\011)\011)\011)\011)\003\250\011)\011)\000\242\011)\011)\011)\012\026\011)\011)\011)\011)\006\186\011)\b\222\011)\011)\011)\011)\011)\011)\011)\011)\017\"\011)\017.\011)\bb\011)\011)\011)\011)\011)\000\242\011)\n\158\011)\000\242\011)\016V\011)\011)\011)\006\186\018\014\011)\011)\011)\011)\011)\011)\011)\011)\002\n\011)\011)\011)\011)\011)\011)\011)\011)\011)\011)\011)\012\130\011)\011)\011)\011)\011)\019r\011)\011)\015\130\001\006\b\206\001\194\011)\011)\011)\011)\t\213\011)\011)\012\134\011)\011)\011)\011)\011)!\147\011)\011)\018\022\011)\011)\n\014\011)\011)\011)\011)\011)\011)\011)\011)\011)\011)\011)\011)\011)\011)\n6\t~\011)\011)\011)\011)\011!\011!\018J\011!\001\006\011!\001\194\011!\011!\b\226\011!\011!\011!\011!\n:\011!\011!\003\198\011!\011!\011!\018\230\011!\011!\011!\011!\016f\011!\005I\011!\011!\011!\011!\011!\011!\011!\011!\t\250\011!\tR\011!\003\210\011!\011!\011!\011!\011!\b\178\011!\016j\011!\005I\011!\016n\011!\011!\011!\000\242\004Z\011!\011!\011!\011!\011!\011!\011!\011!\002\"\011!\011!\011!\011!\011!\011!\011!\011!\011!\011!\011!\b\210\011!\011!\011!\011!\011!\tr\011!\011!\t\142\019\222\tR\018R\011!\011!\011!\011!\003\030\011!\011!\022\202\011!\011!\011!\011!\011!\t\150\011!\011!\019\230\011!\011!\004\002\011!\011!\011!\011!\011!\011!\011!\011!\011!\011!\011!\011!\011!\011!\nr\t~\011!\011!\011!\011!\011\r\011\r\018J\011\r\b\146\011\r\003V\011\r\011\r\004\242\011\r\011\r\011\r\011\r\nv\011\r\011\r\004\006\011\r\011\r\011\r\019\150\011\r\011\r\011\r\011\r\b\150\011\r\007\177\011\r\011\r\011\r\011\r\011\r\011\r\011\r\011\r\t\250\011\r\tR\011\r\004\242\011\r\011\r\011\r\011\r\011\r\b\186\011\r\004N\011\r\007\177\011\r\016\134\011\r\011\r\011\r\000\242\007\233\011\r\011\r\011\r\011\r\011\r\011\r\011\r\011\r\t\218\011\r\011\r\011\r\011\r\011\r\011\r\011\r\011\r\011\r\011\r\011\r\t\202\011\r\011\r\011\r\011\r\011\r\nJ\011\r\011\r\015\210\023\138\tR\018R\011\r\011\r\011\r\011\r\t\242\011\r\011\r!\026\011\r\011\r\011\r\011\r\011\r\004V\011\r\011\r\023\150\011\r\011\r\016\170\011\r\011\r\011\r\011\r\011\r\011\r\011\r\011\r\011\r\011\r\011\r\011\r\011\r\011\r\030^\t~\011\r\011\r\011\r\011\r\011\021\011\021\004\246\011\021\t2\011\021\004Z\011\021\011\021\001\210\011\021\011\021\011\021\011\021\030b\011\021\011\021\020^\011\021\011\021\011\021\003\205\011\021\011\021\011\021\011\021\n\021\011\021\n=\011\021\011\021\011\021\011\021\011\021\011\021\011\021\011\021\t\250\011\021\011\182\011\021\011\202\011\021\011\021\011\021\011\021\011\021\019\026\011\021\004^\011\021\n=\011\021\016\154\011\021\011\021\011\021\000\242\b\237\011\021\011\021\011\021\011\021\011\021\011\021\011\021\011\021\000\242\011\021\011\021\011\021\011\021\011\021\011\021\011\021\011\021\011\021\011\021\011\021\005\006\011\021\011\021\011\021\011\021\011\021\015\234\011\021\011\021\012*\005\246\012Z\n\021\011\021\011\021\011\021\011\021\005\210\011\021\011\021\000\242\011\021\011\021\011\021\011\021\011\021\015\238\011\021\011\021\005\218\011\021\011\021\005\254\011\021\011\021\011\021\011\021\011\021\011\021\011\021\011\021\011\021\011\021\011\021\011\021\011\021\011\021\029\006\n\021\011\021\011\021\011\021\011\021\011\017\011\017\t\178\011\017\000\242\011\017\005\006\011\017\011\017\005\230\011\017\011\017\011\017\011\017\029\n\011\017\011\017\005\238\011\017\011\017\011\017\027^\011\017\011\017\011\017\011\017\011\182\011\017\r\170\011\017\011\017\011\017\011\017\011\017\011\017\011\017\011\017\011\130\011\017\0112\011\017!c\011\017\011\017\011\017\011\017\011\017\011j\011\017\005\018\011\017\024\134\011\017\016\174\011\017\011\017\011\017\000\242\027f\011\017\011\017\011\017\011\017\011\017\011\017\011\017\011\017\006\141\011\017\011\017\011\017\011\017\011\017\011\017\011\017\011\017\011\017\011\017\011\017\n\014\011\017\011\017\011\017\011\017\011\017\0166\011\017\011\017\011\182\011n\r\194\011\166\011\017\011\017\011\017\011\017\018\182\011\017\011\017\000\242\011\017\011\017\011\017\011\017\011\017\016:\011\017\011\017\006\002\011\017\011\017\029\014\011\017\011\017\011\017\011\017\011\017\011\017\011\017\011\017\011\017\011\017\011\017\011\017\011\017\011\017\016\022\t~\011\017\011\017\011\017\011\017\011\029\011\029\014\222\011\029\r\234\011\029\006\030\011\029\011\029\006\n\011\029\011\029\011\029\011\029\nB\011\029\011\029\016\238\011\029\011\029\011\029\006\018\011\029\011\029\011\029\011\029\r\242\011\029\018>\011\029\011\029\011\029\011\029\011\029\011\029\011\029\011\029\t\250\011\029\011\182\011\029\014r\011\029\011\029\011\029\011\029\011\029\004\225\011\029\000\242\011\029\004\225\011\029\016\202\011\029\011\029\011\029\000\242\024\030\011\029\011\029\011\029\011\029\011\029\011\029\011\029\011\029\006\169\011\029\011\029\011\029\011\029\011\029\011\029\011\029\011\029\011\029\011\029\011\029\006\"\011\029\011\029\011\029\011\029\011\029\018\186\011\029\011\029\015\222\027>\004V\000\242\011\029\011\029\011\029\011\029\nV\011\029\011\029\000\242\011\029\011\029\011\029\011\029\011\029\0122\011\029\011\029\012>\011\029\011\029\000\242\011\029\011\029\011\029\011\029\011\029\011\029\011\029\011\029\011\029\011\029\011\029\011\029\011\029\011\029\n\142\t~\011\029\011\029\011\029\011\029\011-\011-\015\014\011-\000\242\011-\003V\011-\011-\018B\011-\011-\011-\011-\011\022\011-\011-\006^\011-\011-\011-\012\130\011-\011-\011-\011-\016\186\011-\004V\011-\011-\011-\011-\011-\011-\011-\011-\t\250\011-\015\"\011-\016\130\011-\011-\011-\011-\011-\001\006\011-\001\194\011-\023F\011-\016\222\011-\011-\011-\000\242\001\210\011-\011-\011-\011-\011-\011-\011-\011-\006v\011-\011-\011-\011-\011-\011-\011-\011-\011-\011-\011-\006\142\011-\011-\011-\011-\011-\016f\011-\011-\b\242\b\246\003\234\003\238\011-\011-\011-\011-\nV\011-\011-\000\242\011-\011-\011-\011-\011-\022\014\011-\011-\0176\011-\011-\000\242\011-\011-\011-\011-\011-\011-\011-\011-\011-\011-\011-\011-\011-\011-\019\198\t~\011-\011-\011-\011-\011%\011%\015F\011%\006Z\011%\t\209\011%\011%\006\250\011%\011%\011%\011%\021n\011%\011%\015\194\011%\011%\011%\015\234\011%\011%\011%\011%\011\182\011%\017j\011%\011%\011%\011%\011%\011%\011%\011%\t\250\011%\015\198\011%\016\198\011%\011%\011%\011%\011%\000\242\011%\017B\011%\b\n\011%\016\242\011%\011%\011%\000\242\0272\011%\011%\011%\011%\011%\011%\011%\011%\006\141\011%\011%\011%\011%\011%\011%\011%\011%\011%\011%\011%\0166\011%\011%\011%\011%\011%\019*\011%\011%\t*\b\246\003\234\023>\011%\011%\011%\011%\t\209\011%\011%\017\030\011%\011%\011%\011%\011%\023R\011%\011%\019.\011%\011%\b\"\011%\011%\011%\011%\011%\011%\011%\011%\011%\011%\011%\011%\011%\011%\bv\t~\011%\011%\011%\011%\011\153\011\153\018\242\011\153\016\006\011\153\004Z\011\153\011\153\017F\011\153\011\153\011\153\011\153\021\170\011\153\011\153\016N\011\153\011\153\011\153\018*\011\153\011\153\011\153\011\153\016\n\011\153\019Z\011\153\011\153\011\153\011\153\011\153\011\153\011\153\011\153\t\250\011\153\016R\011\153\018.\011\153\011\153\011\153\011\153\011\153\001\006\011\153\001\194\011\153\019^\011\153\016\254\011\153\011\153\011\153\000\242\t\018\011\153\011\153\011\153\011\153\011\153\011\153\011\153\011\153\019z\011\153\011\153\011\153\011\153\011\153\011\153\011\153\011\153\011\153\011\153\011\153\t\026\011\153\011\153\011\153\011\153\011\153\003A\011\153\011\153\018\246\027\134\003V\t\194\011\153\011\153\011\153\011\153\019\162\011\153\011\153\023\214\011\153\011\153\011\153\011\153\011\153\0122\011\153\011\153\012>\011\153\011\153\t^\011\153\011\153\011\153\011\153\011\153\011\153\011\153\011\153\011\153\011\153\011\153\011\153\011\153\011\153\003\n\t~\011\153\011\153\011\153\011\153\003\241\003\241\011\150\003\241\015\194\003\241\016\006\003\241\003\241\011\162\003\241\003\241\003\241\003\241\021\198\003\241\003\241\016N\003\241\003\241\003\241\019~\003\241\003\241\003\241\003\241\016\150\003\241\016\218\003\241\003\241\003\241\003\241\003\241\003\241\003\241\003\241\t\250\003\241\017*\003\241\011\186\003\241\003\241\003\241\003\241\003\241\004\242\003\241\014\225\003\241\024\190\003\241\0022\003\241\003\241\003\241\000\242\011\190\003\241\003\241\003\241\003\241\003\241\003\241\003\241\003\241\018\214\003\241\003\241\003\241\003\241\003\241\003\241\003\241\003\241\003\241\003\241\003\241\n\014\012\006\003\241\003\241\012\014\012n\019\166\003\241\003\241\019N\018\218\020\030\003\233\003\241\003\241\003\241\003\241\001\226\003\241\003\241!\131\003\241\003\241\003\241\003\241\012\022\005\002\012v\003\241\0216\003\241\003\241\011\198\003\241\003\241\003\241\003\241\003\241\003\241\003\241\003\241\003\241\003\241\003\241\003\241\003\241\003\241\003\n\003\241\003\241\003\241\003\241\003\241\002-\002-\000\242\002-\014\022\002-\014.\003V\002-\014\225\002\246\002-\012&\002-\002\130\003\146\002-\019\134\002-\002-\002-\024&\002-\002-\002-\001\214\007\185\012^\002\222\003\150\002-\002-\002-\002-\002-\012f\002-\003\233\003\154\019\138\004B\011\214\002-\002-\002-\002-\002-\000\242\004\130\000\242\001\194\024\146\002-\014\154\002-\002-\003J\019R\031^\004\138\n\146\002-\002-\002-\n\150\n\154\n\166\006\165\016\"\007B\002-\002-\002-\002-\002-\002-\002-\002-\002-\027b\012\006\007N\007R\012\014\012n\029\022\002-\002-\015u\021:\b\030\024\n\002-\007^\007b\002-\000\242\002-\002-\012\n\002-\002-\002-\002-\016*\029\026\016v\002-\012.\002-\002-\012V\002-\002-\002-\002-\002-\002-\002-\007f\n\174\002-\002-\002-\n\198\005\"\005\141\t~\002-\002-\002-\002-\011\129\011\129\000\242\011\129\024J\011\129\000\242\003V\011\129\024\154\002\246\011\129\011\129\011\129 \186\003\146\011\129\012b\011\129\011\129\011\129\024R\011\129\011\129\011\129\001\214\t!\011\129\012r\003\150\011\129\011\129\011\129\011\129\011\129\011\129\011\129\t\250\003\154\027j\004B\024\218\011\129\011\129\011\129\011\129\011\129\030v\004\130\014\221\001\194\028\138\011\129\001\210\011\129\011\129\003J\000\242\r\182\004\138\n\146\011\129\011\129\011\129\n\150\n\154\n\166\t\029\011\129\007B\011\129\011\129\011\129\011\129\011\129\011\129\011\129\011\129\011\129\n\014\011\129\007N\007R\011\129\011\129\006\145\011\129\011\129\024\238\027\166\000\242\003\229\011\129\007^\007b\011\129\030\250\011\129\011\129\004\254\011\129\011\129\011\129\011\129\011\129\r\206\011\129\011\129\r\246\011\129\011\129\t\017\011\129\011\129\011\129\011\129\011\129\011\129\011\129\007f\n\174\011\129\011\129\011\129\n\198\005\"\r\254\004\242\011\129\011\129\011\129\011\129\011}\011}\000\242\011}\000\242\011}\027\238\003V\011}\014\221\002\246\011}\011}\011}\002\158\003\146\011}\014\006\011}\011}\011}\027\246\011}\011}\011}\001\214\014B\011}\015\129\003\150\011}\011}\011}\011}\011}\011}\011}\003\229\003\154\027\198\004B\014f\011}\011}\011}\011}\011}\0316\004\130\014\130\001\194\028\150\011}\005\002\011}\011}\003J\024\242\014\166\004\138\n\146\011}\011}\011}\n\150\n\154\n\166\t\021\011}\007B\011}\011}\011}\011}\011}\011}\011}\011}\011}\014\182\011}\007N\007R\011}\011}\014\234\011}\011}\015\006\029V\000\242\004\157\011}\007^\007b\011}\015.\011}\011}\017R\011}\011}\011}\011}\011}\005\246\011}\011}\017Z\011}\011}\017v\011}\011}\011}\011}\011}\011}\011}\007f\n\174\011}\011}\011}\n\198\005\"\017\154\005\254\011}\011}\011}\011}\002u\002u\000\242\002u\000\242\002u\017\170\003V\002u\024\154\002\246\002u\012&\002u\004\225\003\146\002u\017\190\002u\002u\002u\028\234\002u\002u\002u\001\214\030N\012^\017\234\003\150\002u\002u\002u\002u\002u\012f\002u\004\157\003\154\028&\004B\019\250\002u\002u\002u\002u\002u\014\245\004\130\n\014\001\194\020\"\002u\014\014\002u\002u\003J\000\242\029Z\004\138\n\146\002u\002u\002u\n\150\n\154\n\166\014\245\016\"\007B\002u\002u\002u\002u\002u\002u\002u\002u\002u\004\170\002u\007N\007R\020B\002u\bJ\002u\002u\020F\004\225\031\146\020n\002u\007^\007b\002u\020\138\002u\002u\020\190\002u\002u\002u\002u\004\225\bN\004\225\002u\004\225\002u\002u\004\225\002u\002u\002u\002u\002u\002u\002u\007f\n\174\002u\002u\002u\n\198\005\"\004\225\030R\002u\002u\002u\002u\004\225\000\242\004\225\004\225\004\225\004\225\004\225\004\225\004\225\004\225\004\225\020\206\004\225\000\242\004\225\004\225\000\242\004\225\004\225\004\225\004\225\004\225\004\225\004\225\004\225\004\225\004\225\004\225\004\225\004\225\031\190\004\225\004\225\002R\020\226\004\225\004\225\021\014\004\225\004\225\004\225\004\225\004\225\021\026\004\225\004\225\004\225\004\225\004\225\004\225\004\225\004\225\004\225\000\242\004\225\004\225\004\225\004\225\004\225\004\225\004\225\004\225\004\225\000\242\004\225\004\225\004\225\004\225\004\225\004\225\004\225\004\225\004\225\000\242\004\225\024F\004\225\004\225\004\225\004\225\004\225\004\225\004\225\000\242\004\225\021\130\014\249\004\225\004\225\004\225\004\225\004\225\004\225\004\225\004\225\004\225\004\225\004\225\000\242\024N\004\225\004\225\003\234\003\238\003\217\004\225\014\249\021\138\001.\022~\004\225\004\225\004\225\018j\003%\003%\tV\004\225\004\225\004\225\004\225\t\025\0206\004\225\004\225\004\225\004\225\022\146\000\197\004\225\000\197\006\149\000\197\000\197\000\197\000\197\000\197\000\197\000\197\022\150\000\197\000\n\000\197\000\197\028R\000\197\000\197\b2\br\000\197\000\197\007\214\000\197\000\197\000\197\000\197\023Z\000\197\bR\000\197\000\197\023r\b^\000\197\000\197\nb\000\197\000\197\000\197\020:\000\197\003%\000\197\000\197\000\197\000\197\000\197\000\197\000\197\000\197\000\197\023\242\030\130\000\197\000\197\nf\003\146\000\197\000\197\000\197\023\246\000\197\000\197\000\197\000\197\000\197\000\197\000\197\000\197\000\197\003V\020.\000\197\007\142\002^\000\197\024.\000\197\000\197\000\197\000\197\014\253\000\197\nV\005\246\027\234\007\146\000\197\000\197\000\197\000\197\000\197\000\197\000\197\000\197\000\197\005M\003u\000\242\000\197\0242\014\253\b\182\003V\000\226\024Z\005\254\002n\000\197\027\242\007B\012z\003u\004N\024^\000\197\000\197\000\197\000\197\005M\002r\000\197\000\197\000\197\000\197\002e\002e\015\186\002e\015\202\002e\t\017\003V\002e\007^\002\246\002e\024v\002e \018\003\146\002e\025\"\002e\002e\002e\004N\002e\002e\002e\001\214\020\162\nj\030\134\003\150\002e\002e\002e\002e\002e\007f\002e\025&\003\154\014&\004B\025J\002e\002e\002e\002e\002e\025N\004\130\018J\n\170\025^\002e\001\210\002e\002e\003J\000\242\025n\004\138\n\146\002e\002e\002e\n\150\n\154\n\166\025z\025\174\007B\002e\002e\002e\002e\002e\002e\002e\002e\002e\025\178\012\006\007N\007R\012\014\012n\020\022\002e\002e\002\246 \174\018J\026\022\002e\007^\007b\002e ~\002e\002e\026F\002e\002e\002e\002e\012\022\005\246\012v\002e\026N\002e\002e\026^\002e\002e\002e\002e\002e\002e\002e\007f\n\174\002e\002e\002e\n\198\005\"\020\026\005\254\002e\002e\002e\002e\002\129\002\129\003\178\002\129\026\174\002\129\018R\004Z\002\129\026\206\020&\002\129\026\166\002\129\003\182\003\186\002\129\027\014\002\129\002\129\002\129\027:\002\129\002\129\002\129\003\198\003\190\003\225\027J\027r\002\129\002\129\002\129\002\129\002\129\018\198\002\129\003\202\003\206\027v\007b\027\130\002\129\002\129\002\129\002\129\002\129\018R\n\234\003\210\001\194\026\178\002\129\014\146\002\129\002\129\027\146\018J \178\0182\018\170\002\129\002\129\002\129\018\202\018\234\018\250\005\246\018\158\026f\002\129\002\129\002\129\002\129\002\129\002\129\002\129\002\129\002\129\003%\012\006\027\174\003%\012\014\012n\003%\002\129\002\129\003%\005\254\t\005\027\190\002\129\004\149\t\005\002\129\027\210\002\129\002\129\027\254\002\129\002\129\002\129\002\129\012\022\003\225\012v\002\129\000\n\002\129\002\129\000\n\002\129\002\129\002\129\002\129\002\129\002\129\002\129\028\002\028\014\002\129\002\129\002\129\b\250\003%\003%\000\n\002\129\002\129\002\129\002\129\002}\002}\t\005\002}\000\242\002}\003%\003%\002}\003%\003%\002}\003%\002}\018R\014\214\002}\028\030\002}\002}\002}\0282\002}\002}\002}\003%\t\005\029&\005\246\011V\002}\002}\002}\002}\002}\021F\002}\029~\029\166\004\149\003%!\207\002}\002}\002}\002}\002}\005\181\030.\0306\005\254\030\142\002}\b2\002}\002}\030\158\007\214\011z\005\181\030\170\002}\002}\002}\bR\007e\005\190\022\242\b^\017\198\002}\002}\002}\002}\002}\002}\002}\002}\002}\031\018\012\006\031&\018J\012\014\012n\007e\002}\002}\031:\000\242\005\181\031\130\002}\001\210\031\150\002}\031\194\002}\002}\031\218\002}\002}\002}\002}\012\022\031r\012v\002}\015\026\002}\002}\031\242\002}\002}\002}\002}\002}\002}\002} \022\005\181\002}\002}\002}\005\181\007\209\003V\005\181\002}\002}\002}\002}\002i\002i\003\178\002i\004\234\002i\b2\004Z\002i\005B\007\214\002i\007\209\002i\003\182\003\186\002i\bR\002i\002i\002i\b^\002i\002i\002i\031R\003\190 6\006\185\004\225\002i\002i\002i\002i\002i\016z\002i\004N\005b\018R ^\005\145\002i\002i\002i\002i\002i\005\246\n\234 \154\019:\016\142\002i\016\162\002i\002i\006\185 \202\006\185\0182\018\170\002i\002i\002i\018\202\018\234\018\250\004Z\019\178\005\254\002i\002i\002i\002i\002i\002i\002i\002i\002i\007\209\012\006 \214 \222\012\014\012n\000\242\002i\002i \231 \247\nV\n\162\002i!\n!&\002i!C\002i\002i!S\002i\002i\002i\002i\012\022\000\242\012v\002i\007\170\002i\002i\006\205\002i\002i\002i\002i\002i\002i\002i\004\158\004\162\002i\002i\002i\b\134\011\206\004\174\020N\002i\002i\002i\002i\002y\002y!o\002y\b\165\002y\014\189\011\182\002y\014r\004\225\002y!\195\002y\024z!\223\002y!\234\002y\002y\002y\"?\002y\002y\002y\014\189\014\189\011\n\"S\014\189\002y\002y\002y\002y\002y\"[\002y\"\151\"\159\b\165\000\000\000\000\002y\002y\002y\002y\002y\000\000\000\000\000\000\000\000\000\000\002y\b\165\002y\002y\000\000\b\165\011*\000\000\000\000\002y\002y\002y\b\165\006\205\000\242\005\246\b\165\000\242\002y\002y\002y\002y\002y\002y\002y\002y\002y\000\000\002y\003%\003%\023\026\002y\020\022\002y\002y\002\246\005\254\t\001\000\000\002y\r\226\t\001\002y\003%\002y\002y\000\000\002y\002y\002y\002y\014\189\000\000\026\162\002y\000\n\002y\002y\000\000\012\142\002y\002y\002y\002y\002y\002y\000\000\012J\002y\002y\002y\000\000\000\000\020\026\028~\002y\002y\002y\002y\nI\nI\t\001\nI\000\242\nI\003%\004\153\nI\015\226\020&\nI\026\198\nI\000\000\020\182\012\186\000\000\nI\012\222\nI\000\000\nI\nI\nI\015\254\t\001\016\014\000\000\022V\012\242\r\n\r\018\012\250\r\026\000\000\nI\006\185\000\000\011\238\007b\000\000\nI\nI\r\"\r*\nI\000\000\b\241\000\000\000\242\026\210\nI\b2\r2\nI\000\000\007\214\r\230\000\000\000\000\nI\nI\000\242\bR\006\185\005\190\006\185\b^\026f\nI\nI\012\194\r\002\r:\rB\rR\nI\nI\000\000\nI\000\000\000\000\001\210\nI\004\153\nI\rZ\000\000\000\242\016.\000\000\nI\000\000\000\000\nI\000\000\nI\rb\000\000\nI\nI\nI\nI\018v\000\000\016F\nI\016^\nI\nI\000\000\r\130\nI\nI\r\138\rJ\nI\nI\017\130\000\000\nI\rj\nI\018~\000\000\004\234\000\000\nI\nI\rr\rz\002\173\002\173\r\174\002\173\012=\002\173\b2\003V\002\173\000\000\007\214\002\173\000\000\002\173\004\014\000\000\002\173\bR\002\173\002\173\002\173\b^\002\173\002\173\002\173\001\214\000\000\000\000\005b\000\000\002\173\002\173\002\173\002\173\002\173\000\000\002\173\000\000\000\000\012=\000\000\000\000\002\173\002\173\002\173\002\173\002\173\000\000\0046\000\000\030j\000\000\002\173\012=\002\173\002\173\003J\012=\015>\000\000\000\000\002\173\002\173\002\173\012=\003%\000\000\016\190\012=\023\194\002\173\002\173\012\194\002\173\002\173\002\173\002\173\002\173\002\173\000\000\002\173\000\000\000\000\016\210\002\173\016\230\002\173\002\173\000\000\tJ\000\000\000\000\002\173\000\242\000\n\002\173\000\000\002\173\002\173\000\000\002\173\002\173\002\173\002\173\000\000\000\000\000\000\002\173\000\000\002\173\002\173\003%\002\173\002\173\002\173\002\173\002\173\002\173\002\173\000\000\t\181\002\173\002\173\002\173\003%\003%\000\000\000\000\002\173\002\173\002\173\002\173\002\149\002\149\000\000\002\149\000\000\002\149\000\000\006\185\002\149\000\000\b2\002\149\000\000\002\149\007\214\030n\002\149\000\000\002\149\002\149\002\149\bR\002\149\002\149\002\149\b^\000\000\000\000\006\185\t\181\002\149\002\149\002\149\002\149\002\149\006\185\002\149\006\185\000\000\021^\000\000\007\201\002\149\002\149\002\149\002\149\002\149\005\246\000\000\000\000\000\000\000\000\002\149\t\181\002\149\002\149\006\185\000\000\006\185\000\000\007\201\002\149\002\149\002\149\007\201\000\000\000\000\nV\000\000\005\254\002\149\002\149\012\194\002\149\002\149\002\149\002\149\002\149\002\149\000\000\002\149\000\000\000\242\000\000\002\149\t\017\002\149\002\149\t\017\t\181\000\000\000\000\002\149\005\190\000\000\002\149\t\181\002\149\002\149\000\000\002\149\002\149\002\149\002\149\r\198\000\000\027\166\002\149\000\000\002\149\002\149\000\000\002\149\002\149\002\149\002\149\002\149\002\149\002\149\005\246\t\177\002\149\002\149\002\149\000\000\017n\t\017\022\134\002\149\002\149\002\149\002\149\002\161\002\161\000\000\002\161\021b\002\161\000\000\007\201\002\161\005\254\t\017\002\161\000\000\002\161\nA\000\000\012\186\000\000\002\161\002\161\002\161\003V\002\161\002\161\002\161\000\000\004\198\000\000\014\197\t\177\002\161\002\161\002\161\012\250\002\161\000\000\002\161\nA\000\000\000\000\t\017\000\000\002\161\002\161\002\161\002\161\002\161\014\197\014\197\000\000\000\000\014\197\002\161\t\177\002\161\002\161\000\000\000\000\000\000\000\000\000\000\002\161\002\161\002\161\004N\007q\000\000\031.\000\000\t\017\002\161\002\161\012\194\r\002\002\161\002\161\002\161\002\161\002\161\t\209\002\161\000\000\000\000\000\000\002\161\007q\002\161\002\161\000\000\t\177\000\000\000\242\002\161\005\190\000\000\002\161\t\177\002\161\002\161\000\000\002\161\002\161\002\161\002\161\000\000\000\000\000\000\002\161\000\000\002\161\002\161\000\000\002\161\002\161\002\161\002\161\002\161\002\161\002\161\014\193\000\242\002\161\002\161\002\161\000\000\000\000\014\197\000\000\002\161\002\161\002\161\002\161\002\177\002\177\003\198\002\177\000\242\002\177\014\193\014\193\002\177\000\000\014\193\002\177\000\000\002\177\003\202\003\206\002\177\000\000\002\177\002\177\002\177\000\000\002\177\002\177\002\177\005\246\003\210\000\000\000\000\000\000\002\177\002\177\002\177\002\177\002\177\000\000\002\177\t\209\000\000\015R\000\000\000\000\002\177\002\177\002\177\002\177\002\177\005\254\n\021\000\000\000\242\000\000\002\177\015Z\002\177\002\177\000\000\015f\000\000\005\246\000\000\002\177\002\177\002\177\015r\000\000\005\246\000\000\015~\000\000\002\177\002\177\012\194\002\177\002\177\002\177\002\177\002\177\002\177\000\000\002\177\005\254\000\000\000\000\002\177\014\193\002\177\002\177\005\254\000\242\000\000\000\000\002\177\000\000\000\000\002\177\000\000\002\177\002\177\000\000\002\177\002\177\002\177\002\177\000\000\031\138\000\000\002\177\000\000\002\177\002\177\000\000\002\177\002\177\002\177\002\177\002\177\002\177\002\177\000\000\000\000\002\177\002\177\002\177\b\157\000\000\000\000\000\000\002\177\002\177\002\177\002\177\002\145\002\145\000\000\002\145\b\185\002\145\b\157\031\182\002\145\020\022\007\214\002\145\002\246\002\145 \n\000\000\002\145\b\157\002\145\002\145\002\145\b\157\002\145\002\145\002\145\000\000\000\000\000\000\000\000\000\000\002\145\002\145\002\145\002\145\002\145\000\000\002\145\000\000\000\000\b\185\000\000\000\000\002\145\002\145\002\145\002\145\002\145\000\000\000\000\000\000\020\026\000\000\002\145\b\185\002\145\002\145\000\000\007\214\000\000\000\000\000\000\002\145\002\145\002\145\b\185\000\000\020&\000\000\b\185\000\000\002\145\002\145\012\194\002\145\002\145\002\145\002\145\002\145\002\145\000\000\002\145\000\000\000\000\000\000\002\145\000\000\002\145\002\145\000\000\000\242\000\000\000\000\002\145\000\000\000\000\002\145\007b\002\145\002\145\000\000\002\145\002\145\002\145\002\145\000\000\000\000\000\000\002\145\000\000\002\145\002\145\000\000\002\145\002\145\002\145\002\145\002\145\002\145\002\145\000\000\000\000\002\145\002\145\002\145\b\213\030\178\000\000\000\000\002\145\002\145\002\145\002\145\002\157\002\157\000\000\002\157\b\205\002\157\b2\000\000\002\157\020\022\007\214\002\157\002\246\002\157\000\000\000\000\012\186\b\213\002\157\002\157\002\157\b\213\002\157\002\157\002\157\000\000\000\000\000\000\000\000\000\000\002\157\002\157\002\157\012\250\002\157\000\000\002\157\000\000\000\000\b\205\000\000\000\000\002\157\002\157\002\157\002\157\002\157\000\000\000\000\000\000\020\026\000\000\002\157\015\150\002\157\002\157\000\000\b\205\000\000\000\000\000\000\002\157\002\157\002\157\b\205\000\000\020&\000\000\b\205\000\000\002\157\002\157\012\194\r\002\002\157\002\157\002\157\002\157\002\157\000\000\002\157\000\000\000\000\000\000\002\157\000\000\002\157\002\157\000\000\000\242\000\000\000\000\002\157\000\000\000\000\002\157\007b\002\157\002\157\000\000\002\157\002\157\002\157\002\157\000\000\000\000\000\000\002\157\000\000\002\157\002\157\000\000\002\157\002\157\002\157\002\157\002\157\002\157\002\157\000\000\000\000\002\157\002\157\002\157\b\153\026z\000\000\000\000\002\157\002\157\002\157\002\157\002\153\002\153\000\000\002\153\000\242\002\153\b\153\000\000\002\153\000\000\007\214\002\153\000\000\002\153\000\000\000\000\012\186\b\153\002\153\002\153\002\153\b\153\002\153\002\153\002\153\000\000\000\000\000\000\000\000\000\000\002\153\002\153\002\153\012\250\002\153\000\000\002\153\000\000\000\000\018\002\000\000\000\000\002\153\002\153\002\153\002\153\002\153\0022\000\000\000\000\002\246\000\000\002\153\015Z\002\153\002\153\000\000\015f\000\000\000\000\000\000\002\153\002\153\002\153\015r\004\225\000\000\000\000\015~\000\000\002\153\002\153\012\194\r\002\002\153\002\153\002\153\002\153\002\153\000\000\002\153\000\000\000\000\000\000\002\153\000\000\002\153\002\153!\002\004\225\001\226\000\000\002\153\000\000\000\000\002\153\000\000\002\153\002\153\000\000\002\153\002\153\002\153\002\153\020&\000\000\000\000\002\153\000\000\002\153\002\153\004\225\002\153\002\153\002\153\002\153\002\153\002\153\002\153\000\000\000\000\002\153\002\153\002\153\000\242\000\000\000\000\000\000\002\153\002\153\002\153\002\153\002\193\002\193\007b\002\193\004\225\002\193\000\000\003V\002\193\000\000\002\246\002\193\000\000\002\193\000\000\000\000\012\186\000\000\002\193\002\193\002\193\000\000\002\193\002\193\002\193\000\000\000\000\000\000\000\000\000\000\012\242\r\n\r\018\012\250\r\026\000\000\002\193\000\000\000\000\000\000\000\000\004\225\002\193\002\193\r\"\r*\002\193\000\000\022\190\000\000\004\225\000\000\002\193\027\158\r2\002\193\000\000\000\000\000\000\000\000\000\000\002\193\002\193\000\242\020&\000\000\000\000\000\000\000\000\000\000\002\193\002\193\012\194\r\002\r:\rB\rR\002\193\002\193\000\000\002\193\000\000\000\000\000\000\002\193\000\000\002\193\rZ\000\000\000\000\000\000\000\000\002\193\000\000\007b\002\193\000\000\002\193\rb\000\000\002\193\002\193\002\193\002\193\000\000\000\000\000\000\002\193\000\000\002\193\002\193\000\000\002\193\002\193\002\193\002\193\rJ\002\193\002\193\000\000\000\000\002\193\rj\002\193\027*\000\000\000\000\000\000\002\193\002\193\rr\rz\002\169\002\169\000\000\002\169\000\000\002\169\000\000\000\000\002\169\000\000\000\000\002\169\000\000\002\169\000\000\000\000\012\186\000\000\002\169\002\169\002\169\000\000\002\169\002\169\002\169\000\000\000\000\000\000\000\000\000\000\002\169\002\169\002\169\012\250\002\169\000\000\002\169\000\000\000\000\000\000\000\000\000\000\002\169\002\169\002\169\002\169\002\169\000\000\000\000\000\000\000\000\000\000\002\169\000\000\002\169\002\169\000\000\000\000\000\000\000\000\000\000\002\169\002\169\002\169\000\000\000\000\000\000\000\000\000\000\000\000\002\169\002\169\012\194\r\002\002\169\002\169\002\169\002\169\002\169\000\000\002\169\000\000\000\000\000\000\002\169\000\000\002\169\002\169\000\000\000\000\000\000\000\000\002\169\000\000\000\000\002\169\000\000\002\169\002\169\000\000\002\169\002\169\002\169\002\169\000\000\000\000\000\000\002\169\000\000\002\169\002\169\000\000\002\169\002\169\002\169\002\169\002\169\002\169\002\169\000\000\000\000\002\169\002\169\002\169\000\000\000\000\000\000\000\000\002\169\002\169\002\169\002\169\002\165\002\165\000\000\002\165\000\000\002\165\000\000\000\000\002\165\000\000\000\000\002\165\000\000\002\165\000\000\000\000\012\186\000\000\002\165\002\165\002\165\000\000\002\165\002\165\002\165\000\000\000\000\000\000\000\000\000\000\002\165\002\165\002\165\012\250\002\165\000\000\002\165\000\000\000\000\000\000\000\000\000\000\002\165\002\165\002\165\002\165\002\165\000\000\000\000\000\000\000\000\000\000\002\165\000\000\002\165\002\165\000\000\000\000\000\000\000\000\000\000\002\165\002\165\002\165\000\000\000\000\000\000\000\000\000\000\000\000\002\165\002\165\012\194\r\002\002\165\002\165\002\165\002\165\002\165\000\000\002\165\000\000\000\000\000\000\002\165\000\000\002\165\002\165\000\000\000\000\000\000\000\000\002\165\000\000\000\000\002\165\000\000\002\165\002\165\000\000\002\165\002\165\002\165\002\165\000\000\000\000\000\000\002\165\000\000\002\165\002\165\000\000\002\165\002\165\002\165\002\165\002\165\002\165\002\165\000\000\000\000\002\165\002\165\002\165\000\000\000\000\000\000\000\000\002\165\002\165\002\165\002\165\002\185\002\185\000\000\002\185\000\000\002\185\000\000\000\000\002\185\000\000\000\000\002\185\000\000\002\185\000\000\000\000\012\186\000\000\002\185\002\185\002\185\000\000\002\185\002\185\002\185\000\000\000\000\000\000\000\000\000\000\012\242\r\n\r\018\012\250\002\185\000\000\002\185\000\000\000\000\000\000\000\000\000\000\002\185\002\185\r\"\r*\002\185\000\000\000\000\000\000\000\000\000\000\002\185\000\000\002\185\002\185\000\000\000\000\000\000\000\000\000\000\002\185\002\185\000\242\000\000\000\000\000\000\000\000\000\000\000\000\002\185\002\185\012\194\r\002\r:\rB\002\185\002\185\002\185\000\000\002\185\000\000\000\000\000\000\002\185\000\000\002\185\002\185\000\000\000\000\000\000\000\000\002\185\000\000\000\000\002\185\000\000\002\185\002\185\000\000\002\185\002\185\002\185\002\185\000\000\000\000\000\000\002\185\000\000\002\185\002\185\000\000\002\185\002\185\002\185\002\185\rJ\002\185\002\185\000\000\000\000\002\185\002\185\002\185\000\000\000\000\000\000\000\000\002\185\002\185\002\185\002\185\002\141\002\141\000\000\002\141\000\000\002\141\000\000\000\000\002\141\000\000\000\000\002\141\000\000\002\141\000\000\000\000\012\186\000\000\002\141\002\141\002\141\000\000\002\141\002\141\002\141\000\000\000\000\000\000\000\000\000\000\002\141\002\141\002\141\012\250\002\141\000\000\002\141\000\000\000\000\000\000\000\000\000\000\002\141\002\141\002\141\002\141\002\141\000\000\000\000\000\000\000\000\000\000\002\141\000\000\002\141\002\141\000\000\000\000\000\000\000\000\000\000\002\141\002\141\002\141\000\000\000\000\000\000\000\000\000\000\000\000\002\141\002\141\012\194\r\002\002\141\002\141\002\141\002\141\002\141\000\000\002\141\000\000\000\000\000\000\002\141\000\000\002\141\002\141\000\000\000\000\000\000\000\000\002\141\000\000\000\000\002\141\000\000\002\141\002\141\000\000\002\141\002\141\002\141\002\141\000\000\000\000\000\000\002\141\000\000\002\141\002\141\000\000\002\141\002\141\002\141\002\141\002\141\002\141\002\141\000\000\000\000\002\141\002\141\002\141\000\000\000\000\000\000\000\000\002\141\002\141\002\141\002\141\002\137\002\137\000\000\002\137\000\000\002\137\000\000\000\000\002\137\000\000\000\000\002\137\000\000\002\137\000\000\000\000\012\186\000\000\002\137\002\137\002\137\000\000\002\137\002\137\002\137\000\000\000\000\000\000\000\000\000\000\012\242\r\n\r\018\012\250\002\137\000\000\002\137\000\000\000\000\000\000\000\000\000\000\002\137\002\137\r\"\r*\002\137\000\000\000\000\000\000\000\000\000\000\002\137\000\000\002\137\002\137\000\000\000\000\000\000\000\000\000\000\002\137\002\137\000\242\000\000\000\000\000\000\000\000\000\000\000\000\002\137\002\137\012\194\r\002\r:\rB\002\137\002\137\002\137\000\000\002\137\000\000\000\000\000\000\002\137\000\000\002\137\002\137\000\000\000\000\000\000\000\000\002\137\000\000\000\000\002\137\000\000\002\137\002\137\000\000\002\137\002\137\002\137\002\137\000\000\000\000\000\000\002\137\000\000\002\137\002\137\000\000\002\137\002\137\002\137\002\137\rJ\002\137\002\137\000\000\000\000\002\137\002\137\002\137\000\000\000\000\000\000\000\000\002\137\002\137\002\137\002\137\002\221\002\221\000\000\002\221\000\000\002\221\000\000\000\000\002\221\000\000\000\000\002\221\000\000\002\221\000\000\000\000\012\186\000\000\002\221\002\221\002\221\000\000\002\221\002\221\002\221\000\000\000\000\000\000\000\000\000\000\012\242\r\n\r\018\012\250\002\221\000\000\002\221\000\000\000\000\000\000\000\000\000\000\002\221\002\221\r\"\r*\002\221\000\000\000\000\000\000\000\000\000\000\002\221\000\000\002\221\002\221\000\000\000\000\000\000\000\000\000\000\002\221\002\221\002\221\000\000\000\000\000\000\000\000\000\000\000\000\002\221\002\221\012\194\r\002\r:\002\221\002\221\002\221\002\221\000\000\002\221\000\000\000\000\000\000\002\221\000\000\002\221\002\221\000\000\000\000\000\000\000\000\002\221\000\000\000\000\002\221\000\000\002\221\002\221\000\000\002\221\002\221\002\221\002\221\000\000\000\000\000\000\002\221\000\000\002\221\002\221\000\000\002\221\002\221\002\221\002\221\rJ\002\221\002\221\000\000\000\000\002\221\002\221\002\221\000\000\000\000\000\000\000\000\002\221\002\221\002\221\002\221\002\133\002\133\000\000\002\133\000\000\002\133\000\000\000\000\002\133\000\000\000\000\002\133\000\000\002\133\000\000\000\000\012\186\000\000\002\133\002\133\002\133\000\000\002\133\002\133\002\133\000\000\000\000\000\000\000\000\000\000\012\242\r\n\r\018\012\250\002\133\000\000\002\133\000\000\000\000\000\000\000\000\000\000\002\133\002\133\r\"\r*\002\133\000\000\000\000\000\000\000\000\000\000\002\133\000\000\002\133\002\133\000\000\000\000\000\000\000\000\000\000\002\133\002\133\000\242\000\000\000\000\000\000\000\000\000\000\000\000\002\133\002\133\012\194\r\002\r:\rB\002\133\002\133\002\133\000\000\002\133\000\000\000\000\000\000\002\133\000\000\002\133\002\133\000\000\000\000\000\000\000\000\002\133\000\000\000\000\002\133\000\000\002\133\002\133\000\000\002\133\002\133\002\133\002\133\000\000\000\000\000\000\002\133\000\000\002\133\002\133\000\000\002\133\002\133\002\133\002\133\rJ\002\133\002\133\000\000\000\000\002\133\002\133\002\133\000\000\000\000\000\000\000\000\002\133\002\133\002\133\002\133\002\189\002\189\000\000\002\189\000\000\002\189\000\000\000\000\002\189\000\000\000\000\002\189\000\000\002\189\000\000\000\000\012\186\000\000\002\189\002\189\002\189\000\000\002\189\002\189\002\189\000\000\000\000\000\000\000\000\000\000\012\242\r\n\r\018\012\250\002\189\000\000\002\189\000\000\000\000\000\000\000\000\000\000\002\189\002\189\r\"\r*\002\189\000\000\000\000\000\000\000\000\000\000\002\189\000\000\002\189\002\189\000\000\000\000\000\000\000\000\000\000\002\189\002\189\000\242\000\000\000\000\000\000\000\000\000\000\000\000\002\189\002\189\012\194\r\002\r:\rB\002\189\002\189\002\189\000\000\002\189\000\000\000\000\000\000\002\189\000\000\002\189\002\189\000\000\000\000\000\000\000\000\002\189\000\000\000\000\002\189\000\000\002\189\002\189\000\000\002\189\002\189\002\189\002\189\000\000\000\000\000\000\002\189\000\000\002\189\002\189\000\000\002\189\002\189\002\189\002\189\rJ\002\189\002\189\000\000\000\000\002\189\002\189\002\189\000\000\000\000\000\000\000\000\002\189\002\189\002\189\002\189\002\181\002\181\000\000\002\181\000\000\002\181\000\000\000\000\002\181\000\000\000\000\002\181\000\000\002\181\000\000\000\000\012\186\000\000\002\181\002\181\002\181\000\000\002\181\002\181\002\181\000\000\000\000\000\000\000\000\000\000\012\242\r\n\r\018\012\250\002\181\000\000\002\181\000\000\000\000\000\000\000\000\000\000\002\181\002\181\r\"\r*\002\181\000\000\000\000\000\000\000\000\000\000\002\181\000\000\002\181\002\181\000\000\000\000\000\000\000\000\000\000\002\181\002\181\000\242\000\000\000\000\000\000\000\000\000\000\000\000\002\181\002\181\012\194\r\002\r:\rB\002\181\002\181\002\181\000\000\002\181\000\000\000\000\000\000\002\181\000\000\002\181\002\181\000\000\000\000\000\000\000\000\002\181\000\000\000\000\002\181\000\000\002\181\002\181\000\000\002\181\002\181\002\181\002\181\000\000\000\000\000\000\002\181\000\000\002\181\002\181\000\000\002\181\002\181\002\181\002\181\rJ\002\181\002\181\000\000\000\000\002\181\002\181\002\181\000\000\000\000\000\000\000\000\002\181\002\181\002\181\002\181\002\197\002\197\000\000\002\197\000\000\002\197\000\000\000\000\002\197\000\000\000\000\002\197\000\000\002\197\000\000\000\000\012\186\000\000\002\197\002\197\002\197\000\000\002\197\002\197\002\197\000\000\000\000\000\000\000\000\000\000\012\242\r\n\r\018\012\250\r\026\000\000\002\197\000\000\000\000\000\000\000\000\000\000\002\197\002\197\r\"\r*\002\197\000\000\000\000\000\000\000\000\000\000\002\197\000\000\r2\002\197\000\000\000\000\000\000\000\000\000\000\002\197\002\197\000\242\000\000\000\000\000\000\000\000\000\000\000\000\002\197\002\197\012\194\r\002\r:\rB\rR\002\197\002\197\000\000\002\197\000\000\000\000\000\000\002\197\000\000\002\197\rZ\000\000\000\000\000\000\000\000\002\197\000\000\000\000\002\197\000\000\002\197\rb\000\000\002\197\002\197\002\197\002\197\000\000\000\000\000\000\002\197\000\000\002\197\002\197\000\000\002\197\002\197\002\197\002\197\rJ\002\197\002\197\000\000\000\000\002\197\rj\002\197\000\000\000\000\000\000\000\000\002\197\002\197\rr\rz\002\201\002\201\000\000\002\201\000\000\002\201\000\000\000\000\002\201\000\000\000\000\002\201\000\000\002\201\000\000\000\000\012\186\000\000\002\201\002\201\002\201\000\000\002\201\002\201\002\201\000\000\000\000\000\000\000\000\000\000\012\242\r\n\r\018\012\250\002\201\000\000\002\201\000\000\000\000\000\000\000\000\000\000\002\201\002\201\r\"\r*\002\201\000\000\000\000\000\000\000\000\000\000\002\201\000\000\r2\002\201\000\000\000\000\000\000\000\000\000\000\002\201\002\201\000\242\000\000\000\000\000\000\000\000\000\000\000\000\002\201\002\201\012\194\r\002\r:\rB\rR\002\201\002\201\000\000\002\201\000\000\000\000\000\000\002\201\000\000\002\201\rZ\000\000\000\000\000\000\000\000\002\201\000\000\000\000\002\201\000\000\002\201\rb\000\000\002\201\002\201\002\201\002\201\000\000\000\000\000\000\002\201\000\000\002\201\002\201\000\000\002\201\002\201\002\201\002\201\rJ\002\201\002\201\000\000\000\000\002\201\002\201\002\201\000\000\000\000\000\000\000\000\002\201\002\201\rr\rz\002\205\002\205\000\000\002\205\000\000\002\205\000\000\000\000\002\205\000\000\000\000\002\205\000\000\002\205\000\000\000\000\012\186\000\000\002\205\002\205\002\205\000\000\002\205\002\205\002\205\000\000\000\000\000\000\000\000\000\000\012\242\r\n\r\018\012\250\002\205\000\000\002\205\000\000\000\000\000\000\000\000\000\000\002\205\002\205\r\"\r*\002\205\000\000\000\000\000\000\000\000\000\000\002\205\000\000\r2\002\205\000\000\000\000\000\000\000\000\000\000\002\205\002\205\000\242\000\000\000\000\000\000\000\000\000\000\000\000\002\205\002\205\012\194\r\002\r:\rB\rR\002\205\002\205\000\000\002\205\000\000\000\000\000\000\002\205\000\000\002\205\rZ\000\000\000\000\000\000\000\000\002\205\000\000\000\000\002\205\000\000\002\205\rb\000\000\002\205\002\205\002\205\002\205\000\000\000\000\000\000\002\205\000\000\002\205\002\205\000\000\002\205\002\205\002\205\002\205\rJ\002\205\002\205\000\000\000\000\002\205\002\205\002\205\000\000\000\000\000\000\000\000\002\205\002\205\rr\rz\n\005\n\005\000\000\n\005\000\000\n\005\000\000\000\000\n\005\000\000\000\000\n\005\000\000\n\005\000\000\000\000\012\186\000\000\n\005\n\005\n\005\000\000\n\005\n\005\n\005\000\000\000\000\000\000\000\000\000\000\012\242\r\n\r\018\012\250\r\026\000\000\n\005\000\000\000\000\000\000\000\000\000\000\n\005\n\005\r\"\r*\n\005\000\000\000\000\000\000\000\000\000\000\n\005\000\000\r2\n\005\000\000\000\000\000\000\000\000\000\000\n\005\n\005\000\242\000\000\000\000\000\000\000\000\000\000\000\000\n\005\n\005\012\194\r\002\r:\rB\rR\n\005\n\005\000\000\n\005\000\000\000\000\000\000\n\005\000\000\n\005\rZ\000\000\000\000\000\000\000\000\n\005\000\000\000\000\n\005\000\000\n\005\rb\000\000\n\005\n\005\n\005\n\005\000\000\000\000\000\000\n\005\000\000\n\005\n\005\000\000\n\005\n\005\n\005\n\005\rJ\n\005\n\005\000\000\000\000\n\005\rj\n\005\000\000\000\000\000\000\000\000\n\005\n\005\rr\rz\002\209\002\209\000\000\002\209\000\000\002\209\000\000\000\000\002\209\000\000\000\000\002\209\000\000\002\209\000\000\000\000\012\186\000\000\002\209\002\209\002\209\000\000\002\209\002\209\002\209\000\000\000\000\000\000\000\000\000\000\012\242\r\n\r\018\012\250\r\026\000\000\002\209\000\000\000\000\000\000\000\000\000\000\002\209\002\209\r\"\r*\002\209\000\000\000\000\000\000\000\000\000\000\002\209\000\000\r2\002\209\000\000\000\000\000\000\000\000\000\000\002\209\002\209\000\242\000\000\000\000\000\000\000\000\000\000\000\000\002\209\002\209\012\194\r\002\r:\rB\rR\002\209\002\209\000\000\002\209\000\000\000\000\000\000\002\209\000\000\002\209\rZ\000\000\000\000\000\000\000\000\002\209\000\000\000\000\002\209\000\000\002\209\rb\000\000\002\209\002\209\002\209\002\209\000\000\000\000\000\000\002\209\000\000\002\209\002\209\000\000\r\130\002\209\002\209\r\138\rJ\002\209\002\209\000\000\000\000\002\209\rj\002\209\000\000\000\000\000\000\000\000\002\209\002\209\rr\rz\n\001\n\001\000\000\n\001\000\000\n\001\000\000\000\000\n\001\000\000\000\000\n\001\000\000\n\001\000\000\000\000\012\186\000\000\n\001\n\001\n\001\000\000\n\001\n\001\n\001\000\000\000\000\000\000\000\000\000\000\012\242\r\n\r\018\012\250\r\026\000\000\n\001\000\000\000\000\000\000\000\000\000\000\n\001\n\001\r\"\r*\n\001\000\000\000\000\000\000\000\000\000\000\n\001\000\000\r2\n\001\000\000\000\000\000\000\000\000\000\000\n\001\n\001\000\242\000\000\000\000\000\000\000\000\000\000\000\000\n\001\n\001\012\194\r\002\r:\rB\rR\n\001\n\001\000\000\n\001\000\000\000\000\000\000\n\001\000\000\n\001\rZ\000\000\000\000\000\000\000\000\n\001\000\000\000\000\n\001\000\000\n\001\rb\000\000\n\001\n\001\n\001\n\001\000\000\000\000\000\000\n\001\000\000\n\001\n\001\000\000\n\001\n\001\n\001\n\001\rJ\n\001\n\001\000\000\000\000\n\001\rj\n\001\000\000\000\000\000\000\000\000\n\001\n\001\rr\rz\002\245\002\245\000\000\002\245\000\000\002\245\000\000\000\000\002\245\000\000\000\000\002\245\000\000\002\245\000\000\000\000\012\186\000\000\002\245\002\245\002\245\000\000\002\245\002\245\002\245\000\000\000\000\000\000\000\000\000\000\012\242\r\n\r\018\012\250\r\026\000\000\002\245\000\000\000\000\000\000\000\000\000\000\002\245\002\245\r\"\r*\002\245\000\000\000\000\000\000\000\000\000\000\002\245\000\000\r2\002\245\000\000\000\000\000\000\000\000\000\000\002\245\002\245\000\242\000\000\000\000\000\000\000\000\000\000\000\000\002\245\002\245\012\194\r\002\r:\rB\rR\002\245\002\245\000\000\002\245\000\000\000\000\000\000\002\245\000\000\002\245\rZ\000\000\000\000\000\000\000\000\002\245\000\000\000\000\002\245\000\000\002\245\rb\000\000\002\245\002\245\002\245\002\245\000\000\000\000\000\000\002\245\000\000\002\245\002\245\000\000\r\130\002\245\002\245\r\138\rJ\002\245\002\245\000\000\000\000\002\245\rj\002\245\000\000\000\000\000\000\000\000\002\245\002\245\rr\rz\003\005\003\005\000\000\003\005\000\000\003\005\000\000\000\000\003\005\000\000\000\000\003\005\000\000\003\005\000\000\000\000\012\186\000\000\003\005\003\005\003\005\000\000\003\005\003\005\003\005\000\000\000\000\000\000\000\000\000\000\012\242\r\n\r\018\012\250\r\026\000\000\003\005\000\000\000\000\000\000\000\000\000\000\003\005\003\005\r\"\r*\003\005\000\000\000\000\000\000\000\000\000\000\003\005\000\000\r2\003\005\000\000\000\000\000\000\000\000\000\000\003\005\003\005\000\242\000\000\000\000\000\000\000\000\000\000\000\000\003\005\003\005\012\194\r\002\r:\rB\rR\003\005\003\005\000\000\003\005\000\000\000\000\000\000\003\005\000\000\003\005\rZ\000\000\000\000\000\000\000\000\003\005\000\000\000\000\003\005\000\000\003\005\rb\000\000\003\005\003\005\003\005\003\005\000\000\000\000\000\000\003\005\000\000\003\005\003\005\000\000\r\130\003\005\003\005\r\138\rJ\003\005\003\005\000\000\000\000\003\005\rj\003\005\000\000\000\000\000\000\000\000\003\005\003\005\rr\rz\002\253\002\253\000\000\002\253\000\000\002\253\000\000\000\000\002\253\000\000\000\000\002\253\000\000\002\253\000\000\000\000\012\186\000\000\002\253\002\253\002\253\000\000\002\253\002\253\002\253\000\000\000\000\000\000\000\000\000\000\012\242\r\n\r\018\012\250\r\026\000\000\002\253\000\000\000\000\000\000\000\000\000\000\002\253\002\253\r\"\r*\002\253\000\000\000\000\000\000\000\000\000\000\002\253\000\000\r2\002\253\000\000\000\000\000\000\000\000\000\000\002\253\002\253\000\242\000\000\000\000\000\000\000\000\000\000\000\000\002\253\002\253\012\194\r\002\r:\rB\rR\002\253\002\253\000\000\002\253\000\000\000\000\000\000\002\253\000\000\002\253\rZ\000\000\000\000\000\000\000\000\002\253\000\000\000\000\002\253\000\000\002\253\rb\000\000\002\253\002\253\002\253\002\253\000\000\000\000\000\000\002\253\000\000\002\253\002\253\000\000\r\130\002\253\002\253\r\138\rJ\002\253\002\253\000\000\000\000\002\253\rj\002\253\000\000\000\000\000\000\000\000\002\253\002\253\rr\rz\002\233\002\233\000\000\002\233\000\000\002\233\000\000\000\000\002\233\000\000\000\000\002\233\000\000\002\233\000\000\000\000\012\186\000\000\002\233\002\233\002\233\000\000\002\233\002\233\002\233\000\000\000\000\000\000\000\000\000\000\012\242\r\n\r\018\012\250\r\026\000\000\002\233\000\000\000\000\000\000\000\000\000\000\002\233\002\233\r\"\r*\002\233\000\000\000\000\000\000\000\000\000\000\002\233\000\000\r2\002\233\000\000\000\000\000\000\000\000\000\000\002\233\002\233\000\242\000\000\000\000\000\000\000\000\000\000\000\000\002\233\002\233\012\194\r\002\r:\rB\rR\002\233\002\233\000\000\002\233\000\000\000\000\000\000\002\233\000\000\002\233\rZ\000\000\000\000\000\000\000\000\002\233\000\000\000\000\002\233\000\000\002\233\rb\000\000\002\233\002\233\002\233\002\233\000\000\000\000\000\000\002\233\000\000\002\233\002\233\000\000\r\130\002\233\002\233\r\138\rJ\002\233\002\233\000\000\000\000\002\233\rj\002\233\000\000\000\000\000\000\000\000\002\233\002\233\rr\rz\002\241\002\241\000\000\002\241\000\000\002\241\000\000\000\000\002\241\000\000\000\000\002\241\000\000\002\241\000\000\000\000\012\186\000\000\002\241\002\241\002\241\000\000\002\241\002\241\002\241\000\000\000\000\000\000\000\000\000\000\012\242\r\n\r\018\012\250\r\026\000\000\002\241\000\000\000\000\000\000\000\000\000\000\002\241\002\241\r\"\r*\002\241\000\000\000\000\000\000\000\000\000\000\002\241\000\000\r2\002\241\000\000\000\000\000\000\000\000\000\000\002\241\002\241\000\242\000\000\000\000\000\000\000\000\000\000\000\000\002\241\002\241\012\194\r\002\r:\rB\rR\002\241\002\241\000\000\002\241\000\000\000\000\000\000\002\241\000\000\002\241\rZ\000\000\000\000\000\000\000\000\002\241\000\000\000\000\002\241\000\000\002\241\rb\000\000\002\241\002\241\002\241\002\241\000\000\000\000\000\000\002\241\000\000\002\241\002\241\000\000\r\130\002\241\002\241\r\138\rJ\002\241\002\241\000\000\000\000\002\241\rj\002\241\000\000\000\000\000\000\000\000\002\241\002\241\rr\rz\002\237\002\237\000\000\002\237\000\000\002\237\000\000\000\000\002\237\000\000\000\000\002\237\000\000\002\237\000\000\000\000\012\186\000\000\002\237\002\237\002\237\000\000\002\237\002\237\002\237\000\000\000\000\000\000\000\000\000\000\012\242\r\n\r\018\012\250\r\026\000\000\002\237\000\000\000\000\000\000\000\000\000\000\002\237\002\237\r\"\r*\002\237\000\000\000\000\000\000\000\000\000\000\002\237\000\000\r2\002\237\000\000\000\000\000\000\000\000\000\000\002\237\002\237\000\242\000\000\000\000\000\000\000\000\000\000\000\000\002\237\002\237\012\194\r\002\r:\rB\rR\002\237\002\237\000\000\002\237\000\000\000\000\000\000\002\237\000\000\002\237\rZ\000\000\000\000\000\000\000\000\002\237\000\000\000\000\002\237\000\000\002\237\rb\000\000\002\237\002\237\002\237\002\237\000\000\000\000\000\000\002\237\000\000\002\237\002\237\000\000\r\130\002\237\002\237\r\138\rJ\002\237\002\237\000\000\000\000\002\237\rj\002\237\000\000\000\000\000\000\000\000\002\237\002\237\rr\rz\002\249\002\249\000\000\002\249\000\000\002\249\000\000\000\000\002\249\000\000\000\000\002\249\000\000\002\249\000\000\000\000\012\186\000\000\002\249\002\249\002\249\000\000\002\249\002\249\002\249\000\000\000\000\000\000\000\000\000\000\012\242\r\n\r\018\012\250\r\026\000\000\002\249\000\000\000\000\000\000\000\000\000\000\002\249\002\249\r\"\r*\002\249\000\000\000\000\000\000\000\000\000\000\002\249\000\000\r2\002\249\000\000\000\000\000\000\000\000\000\000\002\249\002\249\000\242\000\000\000\000\000\000\000\000\000\000\000\000\002\249\002\249\012\194\r\002\r:\rB\rR\002\249\002\249\000\000\002\249\000\000\000\000\000\000\002\249\000\000\002\249\rZ\000\000\000\000\000\000\000\000\002\249\000\000\000\000\002\249\000\000\002\249\rb\000\000\002\249\002\249\002\249\002\249\000\000\000\000\000\000\002\249\000\000\002\249\002\249\000\000\r\130\002\249\002\249\r\138\rJ\002\249\002\249\000\000\000\000\002\249\rj\002\249\000\000\000\000\000\000\000\000\002\249\002\249\rr\rz\003\t\003\t\000\000\003\t\000\000\003\t\000\000\000\000\003\t\000\000\000\000\003\t\000\000\003\t\000\000\000\000\012\186\000\000\003\t\003\t\003\t\000\000\003\t\003\t\003\t\000\000\000\000\000\000\000\000\000\000\012\242\r\n\r\018\012\250\r\026\000\000\003\t\000\000\000\000\000\000\000\000\000\000\003\t\003\t\r\"\r*\003\t\000\000\000\000\000\000\000\000\000\000\003\t\000\000\r2\003\t\000\000\000\000\000\000\000\000\000\000\003\t\003\t\000\242\000\000\000\000\000\000\000\000\000\000\000\000\003\t\003\t\012\194\r\002\r:\rB\rR\003\t\003\t\000\000\003\t\000\000\000\000\000\000\003\t\000\000\003\t\rZ\000\000\000\000\000\000\000\000\003\t\000\000\000\000\003\t\000\000\003\t\rb\000\000\003\t\003\t\003\t\003\t\000\000\000\000\000\000\003\t\000\000\003\t\003\t\000\000\r\130\003\t\003\t\r\138\rJ\003\t\003\t\000\000\000\000\003\t\rj\003\t\000\000\000\000\000\000\000\000\003\t\003\t\rr\rz\003\001\003\001\000\000\003\001\000\000\003\001\000\000\000\000\003\001\000\000\000\000\003\001\000\000\003\001\000\000\000\000\012\186\000\000\003\001\003\001\003\001\000\000\003\001\003\001\003\001\000\000\000\000\000\000\000\000\000\000\012\242\r\n\r\018\012\250\r\026\000\000\003\001\000\000\000\000\000\000\000\000\000\000\003\001\003\001\r\"\r*\003\001\000\000\000\000\000\000\000\000\000\000\003\001\000\000\r2\003\001\000\000\000\000\000\000\000\000\000\000\003\001\003\001\000\242\000\000\000\000\000\000\000\000\000\000\000\000\003\001\003\001\012\194\r\002\r:\rB\rR\003\001\003\001\000\000\003\001\000\000\000\000\000\000\003\001\000\000\003\001\rZ\000\000\000\000\000\000\000\000\003\001\000\000\000\000\003\001\000\000\003\001\rb\000\000\003\001\003\001\003\001\003\001\000\000\000\000\000\000\003\001\000\000\003\001\003\001\000\000\r\130\003\001\003\001\r\138\rJ\003\001\003\001\000\000\000\000\003\001\rj\003\001\000\000\000\000\000\000\000\000\003\001\003\001\rr\rz\002\229\002\229\000\000\002\229\000\000\002\229\000\000\000\000\002\229\000\000\000\000\002\229\000\000\002\229\000\000\000\000\012\186\000\000\002\229\002\229\002\229\000\000\002\229\002\229\002\229\000\000\000\000\000\000\000\000\000\000\012\242\r\n\r\018\012\250\r\026\000\000\002\229\000\000\000\000\000\000\000\000\000\000\002\229\002\229\r\"\r*\002\229\000\000\000\000\000\000\000\000\000\000\002\229\000\000\r2\002\229\000\000\000\000\000\000\000\000\000\000\002\229\002\229\000\242\000\000\000\000\000\000\000\000\000\000\000\000\002\229\002\229\012\194\r\002\r:\rB\rR\002\229\002\229\000\000\002\229\000\000\000\000\000\000\002\229\000\000\002\229\rZ\000\000\000\000\000\000\000\000\002\229\000\000\000\000\002\229\000\000\002\229\rb\000\000\002\229\002\229\002\229\002\229\000\000\000\000\000\000\002\229\000\000\002\229\002\229\000\000\r\130\002\229\002\229\r\138\rJ\002\229\002\229\000\000\000\000\002\229\rj\002\229\000\000\000\000\000\000\000\000\002\229\002\229\rr\rz\002A\002A\000\000\002A\000\000\002A\000\000\000\000\002A\000\000\000\000\002A\000\000\002A\000\000\000\000\002A\000\000\002A\002A\002A\000\000\002A\002A\002A\000\000\000\000\000\000\000\000\000\000\002A\002A\002A\002A\002A\000\000\002A\000\000\000\000\000\000\000\000\000\000\002A\002A\002A\002A\002A\000\000\000\000\000\000\000\000\000\000\002A\000\000\002A\002A\000\000\000\000\000\000\000\000\000\000\002A\002A\002A\000\000\000\000\000\000\000\000\000\000\000\000\002A\002A\002A\002A\002A\002A\002A\002A\002A\000\000\002A\000\000\000\000\000\000\002A\000\000\002A\002A\000\000\000\000\000\000\000\000\002A\000\000\000\000\002A\000\000\002A\002A\000\000\002A\002A\002A\002A\000\000\000\000\000\000\002A\000\000\002A\002A\000\000\002A\002A\002A\002A\002A\002A\002A\000\000\000\000\002A\002A\017\218\000\000\000\000\000\000\000\000\002A\002A\002A\002A\002Y\002Y\000\000\002Y\000\000\002Y\000\000\000\000\002Y\000\000\000\000\002Y\000\000\002Y\000\000\000\000\012\186\000\000\002Y\002Y\002Y\000\000\002Y\002Y\002Y\000\000\000\000\000\000\000\000\000\000\012\242\r\n\r\018\012\250\r\026\000\000\002Y\000\000\000\000\000\000\000\000\000\000\002Y\002Y\r\"\r*\002Y\000\000\000\000\000\000\000\000\000\000\002Y\000\000\r2\002Y\000\000\000\000\000\000\000\000\000\000\002Y\002Y\000\242\000\000\000\000\000\000\000\000\000\000\000\000\002Y\002Y\012\194\r\002\r:\rB\rR\002Y\002Y\000\000\002Y\000\000\000\000\000\000\002Y\000\000\002Y\rZ\000\000\000\000\000\000\000\000\002Y\000\000\000\000\002Y\000\000\002Y\rb\000\000\002Y\002Y\017\242\002Y\000\000\000\000\000\000\002Y\000\000\002Y\002Y\000\000\r\130\002Y\002Y\r\138\rJ\002Y\002Y\000\000\000\000\002Y\rj\002Y\000\000\000\000\000\000\000\000\002Y\002Y\rr\rz\002U\002U\000\000\002U\000\000\002U\000\000\000\000\002U\000\000\000\000\002U\000\000\002U\000\000\000\000\012\186\000\000\002U\002U\002U\000\000\002U\002U\002U\000\000\000\000\000\000\000\000\000\000\012\242\r\n\r\018\012\250\r\026\000\000\002U\000\000\000\000\000\000\000\000\000\000\002U\002U\r\"\r*\002U\000\000\000\000\000\000\000\000\000\000\002U\000\000\r2\002U\000\000\000\000\000\000\000\000\000\000\002U\002U\000\242\000\000\000\000\000\000\000\000\000\000\000\000\002U\002U\012\194\r\002\r:\rB\rR\002U\002U\000\000\002U\000\000\000\000\000\000\002U\000\000\002U\rZ\000\000\000\000\000\000\000\000\002U\000\000\000\000\002U\000\000\002U\rb\000\000\002U\002U\002U\002U\000\000\000\000\000\000\002U\000\000\002U\002U\000\000\r\130\002U\002U\r\138\rJ\002U\002U\000\000\000\000\002U\rj\002U\000\000\000\000\000\000\000\000\002U\002U\rr\rz\002\225\002\225\000\000\002\225\000\000\002\225\000\000\000\000\002\225\000\000\000\000\002\225\000\000\002\225\000\000\000\000\012\186\000\000\002\225\002\225\002\225\000\000\002\225\002\225\002\225\000\000\000\000\000\000\000\000\000\000\012\242\r\n\r\018\012\250\r\026\000\000\002\225\000\000\000\000\000\000\000\000\000\000\002\225\002\225\r\"\r*\002\225\000\000\000\000\000\000\000\000\000\000\002\225\000\000\r2\002\225\000\000\000\000\000\000\000\000\000\000\002\225\002\225\000\242\000\000\000\000\000\000\000\000\000\000\000\000\002\225\002\225\012\194\r\002\r:\rB\rR\002\225\002\225\000\000\002\225\000\000\000\000\000\000\002\225\000\000\002\225\rZ\000\000\000\000\000\000\000\000\002\225\000\000\000\000\002\225\000\000\002\225\rb\000\000\002\225\002\225\002\225\002\225\000\000\000\000\000\000\002\225\000\000\002\225\002\225\000\000\r\130\002\225\002\225\r\138\rJ\002\225\002\225\000\000\000\000\002\225\rj\002\225\000\000\000\000\000\000\000\000\002\225\002\225\rr\rz\002I\002I\000\000\002I\000\000\002I\000\000\000\000\002I\000\000\000\000\002I\000\000\002I\000\000\000\000\002I\000\000\002I\002I\002I\000\000\002I\002I\002I\000\000\000\000\000\000\000\000\000\000\002I\002I\002I\002I\002I\000\000\002I\000\000\000\000\000\000\000\000\000\000\002I\002I\002I\002I\002I\000\000\000\000\000\000\000\000\000\000\002I\000\000\002I\002I\000\000\000\000\000\000\000\000\000\000\002I\002I\002I\000\000\000\000\000\000\000\000\000\000\000\000\002I\002I\002I\002I\002I\002I\002I\002I\002I\000\000\002I\000\000\000\000\000\000\002I\000\000\002I\002I\000\000\000\000\000\000\000\000\002I\000\000\000\000\002I\000\000\002I\002I\000\000\002I\002I\002I\002I\000\000\000\000\000\000\002I\000\000\002I\002I\000\000\002I\002I\002I\002I\002I\002I\002I\000\000\000\000\002I\002I\017\218\000\000\000\000\000\000\000\000\002I\002I\002I\002I\002M\002M\000\000\002M\000\000\002M\000\000\000\000\002M\000\000\000\000\002M\000\000\002M\000\000\000\000\002M\000\000\002M\002M\002M\000\000\002M\002M\002M\000\000\000\000\000\000\007\229\000\000\002M\002M\002M\002M\002M\0015\002M\000\000\000\000\000\000\0015\000\000\002M\002M\002M\002M\002M\007\229\000\000\000\000\000\000\007\229\002M\000\000\002M\002M\000\000\000\000\000\000\0015\000\000\002M\002M\002M\000\000\000\000\000\000\000\000\000\000\000\000\002M\002M\002M\002M\002M\002M\002M\002M\002M\000\000\002M\0015\000\000\003\166\002M\000\000\002M\002M\000\000\000\000\0015\000\242\002M\000\000\000\000\002M\0015\002M\002M\000\000\002M\002M\002M\002M\b*\0015\0015\002M\000\000\002M\002M\000\000\002M\002M\002M\002M\002M\002M\002M\000\000\000\000\002M\002M\017\218\b.\000\000\000\000\000\000\002M\002M\002M\002M\001\n\000\000\000\006\000\000\0015\000\000\003R\003V\b2\003\134\002\246\000\000\007\214\0015\000\000\003\146\001\014\000\000\019\002\bR\003\n\000\000\000\000\b^\000\000\001\214\000\000\000\000\000\000\004\134\001\022\n\242\n\246\001\"\001&\000\242\000\000\000\000\003\154\000\000\004B\000\000\021N\000\000\011\026\011\030\000\000\004v\004\130\004\142\004\146\011\"\t6\000\000\001>\000\000\003J\000\000\000\000\004\138\n\146\011\014\000\000\000\000\n\150\n\154\n\166\n\186\0022\007B\000\000\000\000\001B\001F\001J\001N\001R\000\000\0026\0116\000\000\007N\007R\001V\b2\000\000\001\214\001Z\007\214\b>\011B\011Z\011\222\007^\007b\bR\011\242\012\006\001^\b^\012\014\012n\000\000\003\254\001b\000\000\000\000\000\000\000\000\tb\000\000\001\226\000\000\000\000\000\000\001\158\b\030\003J\000\000\007f\n\174\012\022\001\162\012v\018\"\005\"\011\246\001\n\001\170\000\006\001\174\001\178\000\000\003R\003V\000\000\003\134\002\246\000\000\000\000\000\000\000\000\003\146\001\014\000\000\000\000\000\000\n\238\000\000\000\000\tf\000\000\001\214\000\000\000\000\000\000\004\134\001\022\n\242\n\246\001\"\001&\000\000\000\000\004:\003\154\003V\004B\000\000\n\250\000\000\011\026\011\030\004\014\004v\004\130\004\142\004\146\011\"\t6\000\000\001>\000\000\003J\001\214\000\000\004\138\n\146\021f\000\000\000\000\n\150\n\154\n\166\n\186\0022\007B\000\000\000\000\001B\001F\001J\001N\001R\000\000\0026\0116\0046\007N\007R\001V\000\000\000\000\001\214\001Z\003J\000\000\011B\011Z\011\222\007^\007b\000\000\011\242\000\000\001^\000\000\000\000\000\000\000\000\003\254\001b\000\000\000\000\000\000\000\000\tb\000\000\001\226\000\000\000\000\000\000\001\158\br\003J\000\000\007f\n\174\tJ\001\162\000\000\018\"\005\"\011\246\005\r\001\170\000\006\001\174\001\178\000\250\003R\003V\003Z\003\134\002\246\000\000\000\000\000\000\000\000\003\146\000\000\000\000\004\022\004:\000\000\003V\005\r\tf\004\026\001\214\000\000\022N\004\014\003\150\000\000\004\030\004\"\000\000\nZ\000\000\004&\000\000\003\154\001\214\004B\000\000\021\226\000\000\004n\004r\000\000\004v\004\130\004\142\004\146\004\154\t6\000\000\000\000\022F\003J\000\000\000\000\004\138\n\146\022^\0046\000\000\n\150\n\154\n\166\n\186\000\000\007B\003J\000\000\000\000\000\000\000\000\000\000\000\000\022f\000\000\0116\000\000\007N\007R\000\000\000\000\b~\000\000\000\000\000\000\000\000\011B\011Z\011\222\007^\007b\022n\011\242\022\170\000\000\000\000\005\r\005\r\000\000\tJ\004\249\b\130\000\000\000\000\000\000\004\249\000\000\000\000\000\000\021.\000\000\000\000\000\000\022\230\026\250\007f\n\174\019\154\000\213\000\000\n\198\005\"\011\246\000\213\004\249\003V\000\213\000\000\002\246\000\000\012&\000\000\000\000\003\146\000\000\000\000\000\213\000\000\000\213\000\000\000\213\000\000\000\213\001\214\000\242\012^\004\249\003\150\000\000\000\000\000\000\000\000\000\000\012f\000\213\004\249\003\154\000\000\004B\000\000\000\213\004\249\003~\000\242\000\213\000\000\004\130\000\000\001\194\000\000\000\213\004\249\000\000\000\213\003J\000\000\000\000\004\138\n\146\000\213\000\213\000\213\n\150\n\154\n\166\000\000\016\"\007B\000\213\000\213\000\000\000\000\000\000\b2\000\000\000\213\000\000\007\214\000\213\007N\007R\004\249\000\213\000\000\bR\000\000\001\177\000\000\b^\000\000\004\249\007^\007b\000\213\000\000\000\213\000\000\000\000\000\213\000\213\000\000\000\000\000\000\000\000\000\000\001\177\003%\000\000\000\213\000\000\000\000\007\241\000\000\003%\000\000\000\213\000\213\007f\n\174\000\000\000\000\000\237\n\198\005\"\003%\000\213\000\237\000\213\003V\000\237\007\241\002\246\000\n\012&\007\241\000\000\003\146\000\000\000\000\000\237\000\000\000\237\000\000\000\237\000\000\000\237\001\214\003%\012^\000\000\003\150\000\000\000\000\000\000\000\000\003%\012f\000\237\000\000\003\154\000\000\004B\003%\000\237\000\000\000\000\000\000\000\237\000\000\004\130\000\000\001\194\000\000\000\237\000\000\001\177\000\237\003J\000\000\000\000\004\138\n\146\000\237\000\237\000\237\n\150\n\154\n\166\003%\016\"\007B\000\237\000\237\000\000\000\000\000\000\001\177\000\000\000\237\000\000\000\000\000\237\007N\007R\001\177\000\237\000\000\000\000\000\000\007\241\000\000\000\000\018Z\000\000\007^\007b\000\237\000\000\000\237\000\000\000\000\000\237\000\237\004*\000\000\0122\000\000\000\000\012>\000\000\000\000\000\237\000\000\000\000\000\000\000\000\000\000\000\000\000\237\000\237\007f\n\174\000\000\000\000\000\000\n\198\005\"\n\029\000\237\000\006\000\237\000\000\000\250\003R\003V\003Z\003\134\002\246\000\000\000\000\000\000\000\000\003\146\000\000\000\000\005-\000\000\n\029\000\000\n\029\n\029\004\026\001\214\000\000\000\000\000\000\003\150\000\000\004\030\004\"\000\000\000\000\000\000\004&\000\000\003\154\000\000\004B\000\000\021\226\000\000\004n\004r\000\000\004v\004\130\004\142\004\146\004\154\t6\000\000\000\000\022F\003J\000\000\000\000\004\138\n\146\022^\000\000\000\000\n\150\n\154\n\166\n\186\000\000\007B\000\000\000\000\000\000\000\000\000\000\000\000\000\000\022f\000\000\0116!\242\007N\007R\014\241\"\018\000\000\000\000\000\000\000\000\000\000\011B\011Z\011\222\007^\007b\022n\011\242\022\170\000\000\000\000\"3\019F\000\000\014\241\000\000\000\000\002J\000\000\000\000\002N\000\000\000\000\000\000\n\029\000\000\000\000\000\000\000\000\026\250\007f\n\174\n\029\002Z\000\000\n\198\005\"\011\246\000\006\000\000\000\000\000\250\003R\003V\003Z\003\134\002\246\000\000\000\000\000\000\000\000\003\146\000\000\000\000\"b\000\000\000\000\000\000\004\170\000\000\004\026\001\214\002f\000\000\000\000\003\150\000\000\004\030\004\"\000\000\000\000\000\000\004&\000\000\003\154\000\000\004B\000\000\021\226\000\000\004n\004r\000\000\004v\004\130\004\142\004\146\004\154\t6\000\000\000\000\022F\003J\000\000\000\000\004\138\n\146\022^\000\000\000\000\n\150\n\154\n\166\n\186\000\000\007B\000\000\000\000\000\000\000\000\000\000\000\000\002j\022f\000\000\0116!\242\007N\007R\000\000\"\018\000\000\000\000\000\000\000\000\000\000\011B\011Z\011\222\007^\007b\022n\011\242\022\170\000\000\000\000\0055\000\000\000\000\000\000\000\000\000\000\000\000\001\n\000\000\000\000\000\000\000\000\000\000\003\170\003V\011\178\000\000\002\246\026\250\007f\n\174\018\174\003\146\001\014\n\198\005\"\011\246\003\n\003%\000\000\000\000\000\000\001\214\000\000\000\000\003%\001\018\001\022\001\026\003\218\001\"\001&\000\000\000\000\000\000\000\000\003%\000\000\000\000\003\222\000\000\0012\b\026\000\000\000\n\003\214\014z\001\194\001:\000\000\000\000\001>\000\000\003J\000\000\000\000\004\158\004\162\000\000\003%\000\000\004\166\000\000\004\174\0076\000\000\007B\003%\000\000\001B\001F\001J\001N\001R\003%\001\210\000\000\007F\007N\007R\001V\007V\000\000\000\000\001Z\000\000\000\000\000\000\000\000\000\000\007^\007b\000\000\001\214\007\182\001^\000\000\000\000\000\000\000\000\003%\001b\000\000\000\000\000\000\000\000\023\250\000\000\000\000\000\000\000\000\000\000\001\158\b\030\000\000\000\000\007f\000\000\004\234\001\162\024r\001\166\005\"\001\n\003J\001\170\000\000\001\174\001\178\003\170\003V\r\166\024\138\002\246\000\000\t>\000\000\001.\003\146\001\014\000\000\000\000\000\000\003\n\003%\000\000\000\000\000\000\001\214\000\000\000\000\003%\001\018\001\022\001\026\003\218\001\"\001&\000\000\000\000\000\000\000\000\003%\000\000\000\000\003\222\000\000\0012\b\026\000\000\000\n\003\214\014z\001\194\001:\000\000\000\000\001>\000\000\003J\000\000\000\000\004\158\004\162\000\000\003%\000\000\004\166\000\000\004\174\0076\000\000\007B\003%\000\000\001B\001F\001J\001N\001R\003%\000\000\014\241\007F\007N\007R\001V\007V\000\000\000\000\001Z\000\000\000\000\000\000\000\000\000\000\007^\007b\000\000\000\000\007\182\001^\014\241\000\000\000\000\002J\003%\001b\002N\000\000\000\000\000\000\b*\000\000\000\000\000\000\000\000\000\000\001\158\b\030\000\000\002Z\007f\000\000\002b\001\162\014\229\001\166\005\"\001\n\000\000\001\170\b.\001\174\001\178\003\170\003V\r\190\000\000\002\246\000\000\000\000\000\000\000\000\003\146\001\014\000\000\000\000\000\000\003\n\002f\000\000\000\000\000\000\001\214\000\000\000\000\000\000\001\018\001\022\001\026\003\218\001\"\001&\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\222\000\000\0012\b\026\000\242\000\000\003\214\014z\001\194\001:\000\000\000\000\001>\000\000\003J\000\000\000\000\004\158\004\162\021\162\000\000\000\000\004\166\000\000\004\174\0076\0022\007B\000\000\002j\001B\001F\001J\001N\001R\000\000\0026\000\000\007F\007N\007R\001V\007V\000\000\001\214\001Z\000\000\000\000\000\000\000\000\000\000\007^\007b\b2\000\000\007\182\001^\007\214\014\030\000\000\000\000\003\254\001b\000\000\bR\000\000\000\000\tb\b^\001\226\000\000\000\000\000\000\001\158\b\030\003J\000\000\007f\000\000\000\000\001\162\000\000\001\166\005\"\000\000\004Y\001\170\000\000\001\174\001\178\004Y\003\170\003V\004Y\000\000\002\246\000\000\b\234\000\000\000\000\003\146\000\000\000\000\004Y\000\000\000\000\000\000\004Y\tf\004Y\001\214\000\000\t\"\000\000\000\000\000\000\000m\003\174\000\000\000\000\011f\004Y\000\000\000\000\000\000\000m\000\000\004Y\000\000\000m\003\194\000\000\000\000\r\186\000\000\001\194\000\000\004Y\000\000\000\000\004Y\003J\000\000\000\000\004\158\004\162\004Y\004Y\0129\004\166\000\000\004\174\000m\r\210\007B\000\000\000\000\000\000\000\000\000m\000\000\000\000\004Y\004Y\000\000\007F\007N\007R\000\000\007V\000\000\000\000\000m\000\000\000\000\000\000\005%\000\000\007^\007b\004Y\027&\004Y\0146\000\000\004Y\004Y\000\000\000\000\000\000\000\000\000\000\000\000\000m\000\000\000\000\000\000\0129\000\000\0122\004\026\0129\014\250\004Y\007f\000\000\000\000\000\000\0129\001\n\005\"\000\000\0129\000\000\004Y\003\170\003V\017f\000\000\002\246\000\000\000m\027\154\000\000\003\146\001\014\002\002\000\000\000\000\003\n\000\000\022F\000\000\000\000\001\214\000\000\000m\022^\001\018\001\022\001\026\003\218\001\"\001&\000\000\000\000\028>\028N\000\000\000\000\000\000\003\222\000\000\0012\b\026\000\000\000\000\003\214\014z\001\194\001:\000\000\000\000\001>\000\000\003J\000\000\000\000\004\158\004\162\000\000\000\000\000\000\004\166\000\000\004\174\0076\005%\007B\000\000\000\000\001B\001F\001J\001N\001R\029B\000\000\000\000\007F\007N\007R\001V\007V\000\000\000\000\001Z\000\000\000\000\000\000\000\000\000\000\007^\007b\000\000\000\000\007\182\001^\000\000\000\000\000\000\000\000\000\000\001b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\158\b\030\000\000\000\000\007f\000\000\000\000\001\162\000\000\001\166\005\"\001\n\000\000\001\170\000\000\001\174\001\178\003\170\003V\007\250\000\000\002\246\000\000\000\000\000\000\000\000\003\146\001\014\000\000\000\000\000\000\003\n\000\000\000\000\000\000\000\000\001\214\000\000\000\000\000\000\001\018\001\022\001\026\003\218\001\"\001&\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\222\000\000\0012\b\026\000\000\000\000\003\214\r\218\001\194\001:\000\000\000\000\001>\000\000\003J\000\000\000\000\004\158\004\162\021\178\000\000\000\000\004\166\000\000\004\174\0076\0022\007B\000\000\000\000\001B\001F\001J\001N\001R\000\000\0026\000\000\007F\007N\007R\001V\007V\000\000\001\214\001Z\000\000\000\000\000\000\000\000\000\000\007^\007b\000\000\000\000\007\182\001^\000\000\000\000\000\000\000\000\003\254\001b\001=\000\000\000\000\000\000\tb\001=\001\226\000\000\000\000\000\000\001\158\b\030\003J\000\000\007f\000\000\000\000\001\162\000\000\001\166\005\"\000\000\000\000\001\170\001=\001\174\001\178\000\014\000\018\000\022\000\026\000\030\000\000\000\"\000&\000*\000.\0002\000\000\0006\000:\000\000\000\000\000>\000\000\tf\001=\000B\024\002\000\000\000\000\000\000\000\000\000\000\000F\001=\000\000\000\000\000\000\000\000\000J\001=\000N\000R\000V\000Z\000^\000b\000f\014\241\014\229\001=\000j\000n\000\000\000r\000v\000\000\000z\000\000\000\000\003V\000\000\000\000\000\000\000\000\000\000\000\000\000\000\014\241\000\000\000\000\002J\000~\000\000\002N\000\130\000\134\000\000\001\214\000\000\001=\002V\000\138\000\142\000\146\000\000\000\000\002Z\000\000\001=\002b\027\026\014\229\000\000\000\150\000\154\000\158\000\162\000\000\000\166\000\170\028Z\000\174\004N\000\000\028^\000\178\000\182\000\186\003J\000\000\000\000\000\190\000\000\000\194\000\198\002f\028\142\000\000\001\206\001\210\000\000\000\000\000\202\000\000\000\206\000\000\000\000\000\000\000\000\n\173\000\210\000\214\n\173\000\218\000\000\n\173\n\173\001\214\002\250\n\173\000\000\n\173\000\000\028\158\n\173\000\000\000\000\000\000\n\173\n\173\000\000\n\173\n\173\000\000\n\173\000\000\n\173\000\000\000\000\000\000\003:\n\173\031N\000\000\n\173\002j\0036\000\000\003J\004\202\004\214\000\000\n\173\000\000\n\173\000\000\004\226\n\173\000\000\n\173\000\000\000\000\000\000\000\000\000\000\n\173\000\000\000\000\n\173\n\173\000\000\000\000\n\173\n\173\000\000\n\173\004\230\n\173\n\173\031z\000\000\000\000\000\000\000\000\000\000\003%\003%\n\173\000\000\n\173\n\173\n\173\000\000\n\173\000\000\000\000\000\000\031f\000\000\000\000\000\000\000\000\n\173\n\173\000\000\003%\000\000\n\173\003%\n\173\000\000\003%\000\n\000\000\007\138\000\000\003%\000\000\003%\003%\000\000\n\173\n\173\n\173\003%\n\173\n\173\003%\n\173\003%\n\173\000\000\n\173\003%\n\173\003%\n\173\003%\003%\000\000\003%\003%\003%\003%\000\n\000\n\003%\000\000\000\000\000\000\000\000\000\000\003%\003%\003%\000\000\003%\003%\003%\003%\003%\000\n\003%\003%\000\n\000\000\003%\t:\003%\003%\000\000\003%\003%\019\206\003%\003%\003%\000\000\003%\003%\003%\003%\003%\003%\003%\000\000\000\000\003%\003%\000\000\003%\003%\003%\003%\003%\003%\003%\003%\003%\003%\003%\003%\000\000\003%\000\000\000\000\000\000\000\000\000\000\003%\003%\003%\003%\003%\000\000\003%\000\000\000\000\000\000\000\000\000\000\003%\003%\003%\003%\003%\000\000\003%\020\n\007i\000\000\000A\003%\000\000\000\000\000A\000A\000\000\000A\000A\000\000\000\000\000\000\000\000\000A\000\000\000\000\003%\003%\007i\003%\003%\003%\003%\000A\003%\003%\003%\000A\000\000\000A\000A\000\000\000\000\000\000\000\000\000\000\000A\000\000\000A\000\000\000\000\b*\000A\000A\000\000\000A\000A\000A\000A\000A\000A\000\000\000\000\000\000\000A\000\000\000\000\000A\000A\000\000\000\000\b.\000A\000A\000A\000A\000\000\000A\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000A\000\000\000A\000A\000\000\000\250\000\000\000\000\003Z\000\000\000\000\000A\000A\000A\000A\000A\000\000\000A\005-\007e\000\000\000=\000\000\000\000\004\026\000=\000=\000\242\000=\000=\000\000\000\000\000\000\000\000\000=\000\000\004&\000\000\000\000\007e\000A\000A\021\226\000\000\000=\000A\000A\000A\000=\000\000\000=\000=\029\194\000\000\000\000\022F\000\000\000=\000\000\000=\000\000\022^\000\000\000=\000=\000\000\000=\000=\000=\000=\000=\000=\000\000\000\000\000\000\000=\b2\022f\000=\000=\007\214\014\138\000\000\000=\000=\000=\000=\bR\000=\000\000\000\000\b^\000\000\000\000\000\000\022n\000\000\022\170\000=\000\000\000=\000=\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000=\000=\000=\000=\000=\000\000\000=\000\000\007u\026\250\014a\000\000\000\000\000\000\014a\014a\000\000\014a\014a\000\000\000\000\000\000\000\000\014a\000\000\000\000\000\000\000\000\007u\000=\000=\000\000\000\000\014a\000=\000=\000=\014a\000\000\014a\014a\000\000\000\000\000\000\000\000\000\000\014a\000\000\014a\000\000\000\000\000\000\014a\014a\000\000\014a\014a\014a\014a\014a\014a\000\000\000\000\000\000\014a\000\000\000\000\014a\014a\000\000\000\000\000\000\014a\014a\014a\014a\000\000\014a\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\014a\000\000\014a\014a\000\000\000\000\000\000\000\000\000\000\000\000\000\000\014a\014a\014a\014a\014a\000\000\014a\000\000\007q\000\000\014]\000\000\000\000\000\000\014]\014]\000\000\014]\014]\000\000\000\000\000\000\000\000\014]\000\000\000\000\000\000\000\000\007q\014a\014a\000\000\000\000\014]\014a\014a\014a\014]\000\000\014]\014]\000\000\000\000\000\000\000\000\000\000\014]\000\000\014]\000\000\000\000\000\000\014]\014]\000\000\014]\014]\014]\014]\014]\014]\000\000\000\000\000\000\014]\001\206\001\210\014]\014]\000\000\000\000\000\000\014]\014]\014]\014]\000\000\014]\000\000\000\000\000\000\000\000\000\000\000\000\001\214\002\250\001\234\014]\000\000\014]\014]\000\000\000\000\000\000\001\246\000\000\000\000\000\000\014]\014]\014]\014]\014]\000\000\014]\000\000\000\000\003F\003\"\003*\000\000\000\000\000\000\0036\000\000\003J\004\202\004\214\000\000\000\000\000\000\000\000\000\000\004\226\000\000\000\000\000\000\014]\014]\000\000\000\189\000\000\014]\014]\014]\000\189\000\000\000\189\000\189\000\000\000\000\000\000\000\000\004\230\000\000\000\000\000\189\000\000\000\189\000\189\000\189\000\000\000\189\000\189\000\189\000\000\t\153\000\000\000\000\000\000\000\000\000\000\000i\000\000\000\000\000\000\000\189\000\000\000\000\000\000\000\000\000i\000\189\000\189\000\000\000i\000\189\000\000\t\153\000\000\000\189\000\000\000\189\000\000\005\"\000\189\000\000\000\000\000\000\000\000\000\000\000\189\000\189\000\189\000\000\000\000\000i\000\000\000i\000\000\000\189\000\189\000\000\000\000\000\000\000i\000\000\000\189\000\189\000i\000\189\000\000\000\000\000\000\000\189\t\149\000\000\000\189\000i\000\000\000\000\000\000\000\000\000\000\000\000\000\189\000\000\000\189\000\189\000\000\000\189\000\189\000i\000\000\000\000\000\000\t\153\t\149\000\000\000i\000\189\000\000\000\189\000\000\000\189\000\000\000\000\000\000\000\189\000\000\000\000\000\000\000i\000\189\000\000\012]\000\000\000\189\012]\000\189\000\000\003\170\003V\000\000\000\000\002\246\000\000\000i\000\000\000\000\003\146\000\000\003\022\000i\012]\012]\000\000\012]\012]\000\000\001\214\000\000\000i\000\000\000\000\000\000\000\000\003\174\000\000\000\000\000\000\000\000\000\000\000\000\000\000\t\149\000\000\000\000\012]\000\000\003\194\000i\000\000\003\214\011r\001\194\002\026\000\000\000\000\000\000\000\000\003J\001\206\001\210\004\158\004\162\000i\000\000\012]\004\166\000\000\004\174\0076\000\000\007B\000\000\000\000\000\000\000\000\000\000\000\000\001\214\002\250\012]\000\000\007F\007N\007R\000\000\007V\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\007^\007b\000\000\000\000\007\182\012]\003:\012]\031N\000\000\000\000\000\000\0036\000\000\003J\004\202\004\214\000\000\000\000\012]\012]\000\000\004\226\012]\012]\000\000\007f\000\000\012]\000\000\012]\000\000\005\"\012Y\012]\000\000\012Y\000\000\000\000\003\170\003V\000\000\004\230\002\246\000\000\005\133\000\000\000\000\003\146\000\000\000\000\000\000\012Y\012Y\000\000\012Y\012Y\000\000\001\214\000\000\000\000\005\029\000\000\031f\000\000\003\174\024\018\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\012Y\000\000\003\194\000\000\000\000\007\246\000\000\001\194\000\000\004\026\000\000\000\000\000\000\003J\000\000\000\000\004\158\004\162\000\000\000\000\012Y\004\166\000\000\004\174\0076\000\000\007B\000\000\000\000\000\000\000\000\024>\000\000\000\000\000\000\012Y\000\000\007F\007N\007R\022F\007V\000\000\000\000\000\000\000\000\022^\000\000\000\000\000\000\007^\007b\000\000\000\000\007\182\012Y\024j\012Y\000\006\000\000\000\000\000\000\003R\003V\000\000\003\134\002\246\000\000\000\000\012Y\012Y\003\146\000\000\012Y\012Y\000\000\007f\000\000\012Y\000\000\012Y\001\214\005\"\000\000\012Y\003\150\005\029\004\030\004\"\000\000\000\000\000\000\000\000\000\000\003\154\024\206\004B\000\000\000\000\000\000\004n\004r\000\000\004v\004\130\004\142\004\146\004\154\t6\001\206\001\210\000\000\003J\000\000\000\000\004\138\n\146\000\000\000\000\000\000\n\150\n\154\n\166\n\186\000\000\007B\000\000\000\000\001\214\002\250\000\000\000\000\000\000\000\000\000\000\0116\000\000\007N\007R\000\000\000\000\000\000\000\000\000\000\000\000\000\000\011B\011Z\011\222\007^\007b\003:\011\242\004\234\000\000\000\000\000\000\0036\000\000\003J\004\202\004\214\000\000\000\000\000\000\000\000\000\006\004\226\000\000\0186\003R\003V\000\000\003\134\002\246\007f\n\174\000\000\000\000\003\146\n\198\005\"\011\246\000\000\000\000\000\000\018\206\004\230\000\000\001\214\000\000\020\142\000\000\003\150\000\000\004\030\004\"\000\000\000\000\000\000\000\000\000\000\003\154\000\000\004B\000\000\000\000\000\000\004n\004r\000\000\004v\004\130\004\142\004\146\004\154\t6\000\000\000\000\000\000\003J\007\165\007\165\004\138\n\146\000\000\000\000\000\000\n\150\n\154\n\166\n\186\000\000\007B\000\000\000\000\000\000\000\000\000\000\000\000\007\165\007\165\007\165\0116\000\000\007N\007R\000\000\000\000\000\000\007\165\000\000\000\000\000\000\011B\011Z\011\222\007^\007b\000\000\011\242\000\000\000\000\007\165\007\165\007\165\000\000\000\000\000\000\007\165\000\000\007\165\007\165\007\165\000\000\000\000\000\000\000\000\000\000\007\165\000\000\000\000\000\000\007f\n\174\000\000\000i\000\000\n\198\005\"\011\246\000i\000\000\000i\000i\000\000\000\000\000\000\000\000\007\165\000\000\000\000\000i\000\000\000i\000i\000i\000\000\000i\000i\000i\000\000\t\149\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000i\000\000\000\000\000\000\000\000\000\000\000i\000i\000\000\000\000\000i\000\000\t\149\000\000\000i\000\000\000i\000\000\000\000\000i\000\000\000\000\000\000\006\202\000\000\000i\000i\000i\000\000\000\000\000\000\000\000\000\000\000\000\000i\000i\000\000\005\229\0159\000\000\000\000\000i\000i\000\000\000i\000\000\000\000\000\000\000i\000\000\000\000\000i\000\000\000\000\000\000\000\000\005\229\000\000\000\000\000i\005\229\000i\000i\000\000\000i\000i\000\000\000\000\005\181\000\000\t\149\000\000\000\000\005\181\000i\005\181\005\181\005\181\000i\000\000\000\000\005\181\000i\005\181\005\181\000\000\005\181\000i\005\181\000\000\005\181\000i\005\181\000i\005\181\005\181\005\181\000\000\005\181\005\181\005\181\000\000\000\000\000\000\005\181\000\000\000\000\000\000\000\000\000\000\005\181\005\181\005\181\000\000\000\000\000\000\000\000\0159\005\181\005\181\0159\0159\005\181\005\181\000\000\000\000\005\181\000\000\005\181\005\181\005\181\005\181\000\000\000\000\000\000\005\229\000\000\005\181\005\181\005\181\000\000\0159\000\000\0159\000\000\005\181\005\181\005\181\005\181\000\000\000\000\005\229\005\181\005\181\005\229\000\000\005\181\000\000\000\000\000\000\005\181\000\000\000\000\005\181\000\000\005\181\005\181\000\000\005\181\005\181\000\000\005\181\000\000\005\181\005\181\000\000\005\181\005\181\014\241\014\229\000\000\000\000\000\000\000\000\000\000\025V\005\181\000\000\005\181\000\000\005\181\000\000\000\000\003.\005\181\000\000\000\000\005\181\014\241\005\181\000\000\002J\000\000\005\181\002N\005\181\005\181\000}\000}\000\000\000\000\003f\000}\000\000\000}\000}\000\000\002Z\000\000\000\000\002b\000\000\014\229\000}\000\000\000}\000}\000}\000\000\000}\000}\000}\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000}\000\000\000\000\002f\000\000\000\000\000}\000}\000\000\n1\000}\000\000\000\000\000\000\000}\000\000\000}\000\000\000\000\000}\000\000\000\000\000\000\000\000\000\000\000}\000}\000}\b\158\000\000\000\000\n1\000\000\000\000\000}\000}\000\000\000\000\000\000\000\000\000\000\000}\000}\000\000\005.\000\000\000\000\000\000\000}\000\000\000\000\000}\000\000\002j\000\000\000\000\000\000\000\000\000\000\000}\000\000\000}\000}\000\000\000}\000}\000\000\000\000\000\000\000\000\000\000\000\000\000\242\000\000\000}\000\000\000}\000\000\000}\000\000\000\000\000\000\000}\000\000\000\000\by\000\000\000}\by\000\000\000\000\000}\000\000\000}\000}\000\129\000\129\000\000\000\000\000\000\000\129\000\000\000\129\000\129\by\by\000\000\by\by\000\000\000\000\000\129\000\000\000\129\000\129\000\129\000\000\000\129\000\129\000\129\000\000\b2\n1\000\000\000\000\007\214\000\000\000\000\by\000\000\n1\000\129\bR\000\000\000\000\000\000\b^\000\129\000\129\000\000\000\000\000\129\000\000\000\000\000\000\000\129\000\000\000\129\by\000\000\000\129\000\000\000\000\000\000\000\000\000\000\000\129\000\129\000\129\000\000\000\000\000\000\000\000\by\000\000\000\129\000\129\000\000\000\000\000\000\000\000\000\000\000\129\000\129\000\000\005n\000\000\000\000\000\000\000\129\000\000\000\000\000\129\by\000\000\by\000\000\000\000\000\000\000\000\000\129\000\000\000\129\000\129\000\000\000\129\000\129\007\206\by\000\000\000\000\by\by\000\000\000\000\000\129\by\000\129\by\000\129\000\000\000\000\by\000\129\000\000\000\000\b\141\000\000\000\129\b\141\000\000\000\000\000\129\000\000\000\129\000\129\000\133\000\133\000\000\000\000\000\000\000\133\000\000\000\133\000\133\b\141\b\141\000\000\b\141\b\141\000\000\000\000\000\133\000\000\000\133\000\133\000\133\000\000\000\133\000\133\000\133\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\141\000\000\000\000\000\133\000\000\000\000\000\000\000\000\000\000\000\133\000\133\000\000\000\000\000\133\000\000\000\000\000\000\000\133\000\000\000\133\000\242\000\000\000\133\000\000\000\000\000\000\000\000\000\000\000\133\000\133\000\133\000\000\000\000\000\000\000\000\b\141\000\000\000\133\000\133\000\000\000\000\000\000\000\000\000\000\000\133\000\133\000\000\005\166\000\000\000\000\000\000\000\133\000\000\000\000\000\133\b\141\000\000\b\141\000\000\000\000\000\000\000\000\000\133\000\000\000\133\000\133\000\000\000\133\000\133\b\141\b\141\000\000\000\000\007\214\b\141\000\000\000\000\000\133\b\141\000\133\b\141\000\133\000\000\000\000\b\141\000\133\000\000\000\000\be\000\000\000\133\be\000\000\000\000\000\133\000\000\000\133\000\133\n\t\n\t\000\000\000\000\000\000\n\t\000\000\001\210\n\t\be\be\000\000\be\be\000\000\000\000\n\t\000\000\n\t\n\t\n\t\000\000\n\t\n\t\n\t\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\be\000\000\000\000\n\t\000\000\000\000\000\000\000\000\000\000\n\t\n\t\000\000\000\000\n\t\000\000\000\000\000\000\004\234\000\000\n\t\be\000\000\n\t\000\000\000\000\000\000\000\000\000\000\n\t\n\t\n\t\000\000\000\000\000\000\000\000\be\000\000\n\t\n\t\000\000\000\000\000\000\000\000\000\000\n\t\000\000\000\000\n\t\000\000\000\000\000\000\005b\000\000\000\000\n\t\be\000\000\be\000\000\000\000\000\000\000\000\n\t\000\000\n\t\n\t\000\000\n\t\n\t\be\be\000\000\000\000\007\214\be\000\000\000\000\n\t\be\n\t\be\n\t\000\000\000\000\be\n\t\000\000\000\000\b\145\000\000\n\t\b\145\000\000\000\000\n\t\000\000\n\t\n\t\014\181\014\181\000\000\000\000\000\000\014\181\000\000\001\210\014\181\b\145\b\145\000\000\b\145\b\145\000\000\000\000\005v\000\000\014\181\014\181\014\181\000\000\014\181\014\181\014\181\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\145\000\000\000\000\014\181\000\000\000i\000\000\000\000\000\000\014\181\014\181\000\000\000\000\014\181\000i\000\000\000\000\004\234\000i\014\181\000\242\000\000\014\181\000\000\t\149\000\000\000\000\000\000\014\181\014\181\014\181\000\000\000\000\000\000\000\000\b\145\000\000\014\181\014\181\000\000\000\000\000i\000\000\000\000\014\181\000\000\t\149\014\181\000i\000\000\000\000\005b\000\000\000\000\014\181\b\145\000\000\b\145\000\000\000\000\000\000\000i\014\181\000\000\014\181\014\181\000\000\014\181\014\181\b\145\b\145\000\000\000\000\007\214\b\145\000\000\000\000\014\181\b\145\014\181\b\145\014\181\000i\000\000\b\145\014\181\000\000\000\000\000\000\000\000\014\181\000\000\000\000\000\000\014\181\000\000\014\181\014\181\n\r\n\r\000\000\000\000\000\000\n\r\t\149\001\210\n\r\000\000\000\000\000\000\000i\000\000\000\000\000\000\n\r\003\022\n\r\n\r\n\r\004\249\n\r\n\r\n\r\000\000\004\249\000i\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\n\r\000\000\000\000\000\000\000\000\000\000\n\r\n\r\000\000\004\249\n\r\000\000\000\000\000\000\004\234\000\000\n\r\000\000\000\000\n\r\000\000\000\000\000\000\000\000\000\000\n\r\n\r\n\r\000\000\000\000\000\000\004\249\000\000\000\000\n\r\n\r\000\000\000\000\000\000\000\000\004\249\n\r\000\000\000\000\n\r\000\000\004\249\003~\005b\b\129\000\000\n\r\b\129\000\000\000\000\004\249\004\249\000\000\000\000\n\r\000\000\n\r\n\r\000\000\n\r\n\r\000\000\000\000\b\129\b\129\000\000\b\129\b\129\000\000\n\r\000\000\n\r\000\000\n\r\000\000\014\185\014\185\n\r\000\000\000\000\014\185\004\249\n\r\014\185\000\000\000\000\n\r\b\129\n\r\n\r\004\249\005R\000\000\014\185\014\185\014\185\000\000\014\185\014\185\014\185\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\242\000\000\000\000\000\000\014\185\000\000\000\000\000\000\000\000\000\000\014\185\014\185\000\000\000\000\014\185\b\129\000\000\000\000\000\000\000\000\014\185\000\000\000\000\014\185\000\000\000\000\000\000\000\000\000\000\014\185\014\185\014\185\000\000\000\000\000\000\b\129\000\000\b\129\014\185\014\185\000\000\000\000\000\000\000\000\000\000\014\185\000\000\000\000\014\185\b2\b\129\000\000\014\185\007\214\b\129\014\185\000\000\000\000\b\129\000\000\b\129\000\000\000\000\014\185\b\129\014\185\014\185\000\000\014\185\014\185\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\014\185\000\000\014\185\000\000\014\185\000\000\003e\003e\014\185\000\000\000\000\003e\000\000\014\185\003e\000\000\000\000\014\185\000\000\014\185\014\185\000\000\000\000\000\000\003e\003e\003e\000\000\003e\003e\003e\000\000\000\000\000\000\000\000\000\000\000\000\001\206\001\210\000\000\000\000\000\000\003e\000\000\000\000\000\000\000\000\000\000\003e\0056\000\000\000\000\003e\000\000\000\000\000\000\001\214\002\250\003e\000\000\000\000\003e\000\000\000\000\000\000\000\000\000\000\003e\003e\003e\000\000\000\000\000\000\000\000\000\000\000\000\003e\003e\000\000\003:\000\000\004\234\000\000\003e\000\000\0036\003e\003J\004\202\004\214\003e\000\000\000\000\003e\000\000\004\226\000\000\0202\000\000\000\000\000\000\003e\000\000\003e\003e\000\000\003e\003e\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\230\003e\000\000\003e\020~\003e\000\000\014\001\014\001\003e\000\000\000\000\014\001\000\000\003e\014\001\000\000\000\000\003e\000\000\003e\003e\000\000\000\000\000\000\014\001\014\001\014\001\000\000\014\001\014\001\014\001\000\000\000\000\000\000\000\000\000\000\000\000\001\206\001\210\000\000\000\000\000\000\014\001\000\000\000\000\000\000\000\000\000\000\014\001\005B\000\000\000\000\014\001\000\000\000\000\000\000\001\214\001\218\014\001\000\000\000\000\014\001\000\000\000\000\000\000\000\000\000\000\014\001\014\001\014\001\000\000\000\000\000\000\000\000\000\000\000\000\014\001\014\001\000\000\020\166\000\000\004\234\000\000\014\001\000\000\0036\014\001\003J\004\202\004\214\014\001\000\000\000\000\014\001\000\000\004\226\000\000\0202\000\000\000\000\000\000\014\001\000\000\014\001\014\001\000\000\014\001\014\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\230\014\001\000\000\014\001\020~\014\001\000\000\014\017\014\017\014\001\000\000\000\000\014\017\000\000\014\001\014\017\000\000\000\000\014\001\000\000\014\001\014\001\000\000\000\000\000\000\014\017\014\017\014\017\000\000\014\017\014\017\014\017\000\000\000\000\000\000\000\000\000\000\000\000\001\206\001\210\000\000\000\000\000\000\014\017\000\000\000\000\000\000\000\000\000\000\014\017\005B\000\000\000\000\014\017\000\000\000\000\000\000\001\214\002\250\014\017\000\000\000\000\014\017\000\000\000\000\000\000\000\000\000\000\014\017\014\017\014\017\000\000\000\000\000\000\000\000\000\000\000\000\014\017\014\017\000\000\0032\031\170\004\234\000\000\014\017\000\000\0036\014\017\003J\004\202\004\214\014\017\000\000\000\000\014\017\000\000\004\226\000\000\000\000\000\000\000\000\000\000\014\017\000\000\014\017\014\017\000\000\014\017\014\017\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\230\014\017\000\000\014\017\000\000\014\017\000\000\014\r\014\r\014\017\000\000\000\000\014\r\000\000\014\017\014\r\000\000\000\000\014\017\000\000\014\017\014\017\000\000\000\000\000\000\014\r\014\r\014\r\000\000\014\r\014\r\014\r\000\000\000\000\000\000\000\000\000\000\000\000\001\206\001\210\000\000\000\000\000\000\014\r\000\000\000\000\000\000\000\000\000\000\014\r\0056\000\000\000\000\014\r\000\000\000\000\000\000\001\214\002\250\014\r\000\000\000\000\014\r\000\000\000\000\000\000\000\000\000\000\014\r\014\r\014\r\000\000\000\000\000\000\000\000\000\000\000\000\014\r\014\r\000\000\005\138\006F\004\234\000\000\014\r\000\000\0036\014\r\003J\004\202\004\214\014\r\000\000\000\000\014\r\000\000\004\226\000\000\000\000\000\000\000\000\000\000\014\r\000\000\014\r\014\r\000\000\014\r\014\r\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\230\014\r\000\000\014\r\000\000\014\r\000\000\r\185\r\185\014\r\000\000\000\000\r\185\000\000\014\r\r\185\000\000\000\000\014\r\000\000\014\r\014\r\000\000\000\000\000\000\r\185\r\185\r\185\000\000\r\185\r\185\r\185\000\000\000\000\000\000\000\000\000\000\000\000\001\206\001\210\000\000\000\000\000\000\r\185\000\000\000\000\000\000\000\000\000\000\r\185\005B\000\000\000\000\r\185\000\000\000\000\000\000\001\214\002\250\r\185\000\000\000\000\r\185\000\000\000\000\000\000\000\000\000\000\r\185\r\185\r\185\000\000\000\000\000\000\000\000\000\000\000\000\r\185\r\185\000\000\003&\000\000\004\234\000\000\r\185\000\000\0036\r\185\003J\004\202\004\214\r\185\000\000\000\000\r\185\000\000\004\226\000\000\000\000\000\000\000\000\000\000\r\185\000\000\r\185\r\185\000\000\r\185\r\185\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\230\r\185\000\000\r\185\000\000\r\185\000\000\r\181\r\181\r\185\000\000\000\000\r\181\000\000\r\185\r\181\000\000\000\000\r\185\000\000\r\185\r\185\000\000\000\000\000\000\r\181\r\181\r\181\000\000\r\181\r\181\r\181\000\000\000\000\000\000\000\000\000\000\000\000\001\206\001\210\000\000\000\000\000\000\r\181\000\000\000\000\000\000\000\000\000\000\r\181\0056\000\000\000\000\r\181\000\000\000\000\000\000\001\214\002\250\r\181\000\000\000\000\r\181\000\000\000\000\000\000\000\000\000\000\r\181\r\181\r\181\000\000\000\000\000\000\000\000\000\000\000\000\r\181\r\181\000\000\006J\000\000\004\234\000\000\r\181\000\000\0036\r\181\003J\004\202\004\214\r\181\000\000\000\000\r\181\000\000\004\226\000\000\000\000\000\000\000\000\000\000\r\181\000\000\r\181\r\181\000\000\r\181\r\181\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\230\r\181\000\000\r\181\000\000\r\181\000\000\r\201\r\201\r\181\000\000\000\000\r\201\000\000\r\181\r\201\000\000\000\000\r\181\000\000\r\181\r\181\000\000\000\000\000\000\r\201\r\201\r\201\000\000\r\201\r\201\r\201\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\r\201\000\000\000\000\000\000\000\000\000\000\r\201\005B\000\000\000\000\r\201\000\000\000\000\000\000\000\000\000\000\r\201\000\000\000\000\r\201\000\000\000\000\000\000\000\000\000\000\r\201\r\201\r\201\000\000\000\000\005\233\0159\000\000\000\000\r\201\r\201\000\000\000\000\000\000\000\000\000\000\r\201\000\000\000\000\r\201\000\000\000\000\000\000\r\201\005\233\000\000\r\201\000\000\005\233\000\000\000\000\000\000\000\000\000\000\r\201\000\000\r\201\r\201\000\000\r\201\r\201\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\r\201\000\000\r\201\000\000\r\201\000\000\r\197\r\197\r\201\000\000\000\000\r\197\000\000\r\201\r\197\000\000\000\000\r\201\000\000\r\201\r\201\000\000\000\000\000\000\r\197\r\197\r\197\000\000\r\197\r\197\r\197\000\000\000\000\000\000\000\000\000\000\0159\001\206\001\210\0159\0159\000\000\r\197\000\000\000\000\000\000\000\000\000\000\r\197\0056\000\000\000\000\r\197\000\000\005\233\000\000\001\214\002\250\r\197\000\000\0159\r\197\0159\000\000\000\000\000\000\000\000\r\197\r\197\r\197\005\233\000\000\000\000\005\233\000\000\000\000\r\197\r\197\000\000\031\174\000\000\004\234\000\000\r\197\000\000\0036\r\197\003J\004\202\004\214\r\197\000\000\000\000\r\197\000\000\004\226\000\000\000\000\000\000\000\000\000\000\r\197\000\000\r\197\r\197\000\000\r\197\r\197\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\230\r\197\000\000\r\197\000\000\r\197\000\000\r\209\r\209\r\197\000\000\000\000\r\209\000\000\r\197\r\209\000\000\000\000\r\197\000\000\r\197\r\197\000\000\000\000\000\000\r\209\r\209\r\209\000\000\r\209\r\209\r\209\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\r\209\000\000\000\000\000\000\003\177\000\000\r\209\005B\000\000\000\000\r\209\003\177\000\000\000\000\003\177\000\000\r\209\000\000\000\000\r\209\000\000\000\000\003\177\000\000\000\000\r\209\r\209\r\209\000\000\000\000\003\177\000\000\000\000\000\000\r\209\r\209\000\000\000\000\000\000\003\177\000\000\r\209\000\000\000\000\r\209\003\177\000\000\003\177\r\209\000\000\000\000\r\209\000\000\003\177\000\000\000\000\000\000\000\000\000\000\r\209\003\177\r\209\r\209\000\000\r\209\r\209\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\r\209\000\000\r\209\000\000\r\209\000\000\r\205\r\205\r\209\000\000\000\000\r\205\022j\r\209\r\205\000\000\000\000\r\209\000\000\r\209\r\209\000\000\000\000\000\000\r\205\r\205\r\205\000\000\r\205\r\205\r\205\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\r\205\000\000\000\000\000\000\000\000\000\000\r\205\0056\000\000\000\000\r\205\000\000\000\000\000\000\000\000\000\000\r\205\000\000\000\000\r\205\000\000\000\000\000\000\000\000\000\000\r\205\r\205\r\205\000\000\000\000\000\000\000\000\000\000\000\000\r\205\r\205\000\000\000\000\000\000\000\000\000\000\r\205\000\000\000\000\r\205\000\000\000\000\000\000\r\205\000\000\000\000\r\205\000\000\000\000\000\000\000\000\000\000\000\000\000\000\r\205\000\000\r\205\r\205\000\000\r\205\r\205\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\r\205\000\000\r\205\000\000\r\205\000\000\r\193\r\193\r\205\000\000\000\000\r\193\000\000\r\205\r\193\000\000\000\000\r\205\000\000\r\205\r\205\000\000\000\000\000\000\r\193\r\193\r\193\000\000\r\193\r\193\r\193\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\r\193\000\000\000\000\000\000\000\000\000\000\r\193\005B\000\000\000\000\r\193\000\000\000\000\000\000\000\000\000\000\r\193\000\000\000\000\r\193\000\000\000\000\000\000\000\000\000\000\r\193\r\193\r\193\000\000\000\000\000\000\000\000\000\000\000\000\r\193\r\193\000\000\000\000\000\000\000\000\000\000\r\193\000\000\000\000\r\193\000\000\000\000\000\000\r\193\000\000\000\000\r\193\000\000\000\000\000\000\000\000\000\000\000\000\000\000\r\193\000\000\r\193\r\193\000\000\r\193\r\193\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\r\193\000\000\r\193\000\000\r\193\000\000\r\189\r\189\r\193\000\000\000\000\r\189\000\000\r\193\r\189\000\000\000\000\r\193\000\000\r\193\r\193\000\000\000\000\000\000\r\189\r\189\r\189\000\000\r\189\r\189\r\189\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\r\189\000\000\000\000\000\000\000\000\000\000\r\189\0056\000\000\000\000\r\189\000\000\000\000\000\000\000\000\000\000\r\189\000\000\000\000\r\189\000\000\000\000\000\000\000\000\000\000\r\189\r\189\r\189\000\000\000\000\000\000\000\000\000\000\000\000\r\189\r\189\000\000\000\000\000\000\000\000\000\000\r\189\000\000\000\000\r\189\000\000\000\000\000\000\r\189\000\000\000\000\r\189\000\000\000\000\000\000\000\000\000\000\000\000\000\000\r\189\000\000\r\189\r\189\000\000\r\189\r\189\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\r\189\000\000\r\189\000\000\r\189\000\000\r\253\r\253\r\189\000\000\000\000\r\253\000\000\r\189\r\253\000\000\000\000\r\189\000\000\r\189\r\189\000\000\000\000\000\000\r\253\r\253\r\253\000\000\r\253\r\253\r\253\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\r\253\000\000\000\000\000\000\000\000\000\000\r\253\0056\000\000\000\000\r\253\000\000\000\000\000\000\000\000\000\000\r\253\000\000\000\000\r\253\000\000\000\000\000\000\000\000\000\000\r\253\r\253\r\253\000\000\000\000\000\000\000\000\000\000\000\000\r\253\r\253\000\000\000\000\000\000\000\000\000\000\r\253\000\000\000\000\r\253\000\000\000\000\000\000\r\253\000\000\000\000\r\253\000\000\000\000\000\000\000\000\000\000\000\000\000\000\r\253\000\000\r\253\r\253\000\000\r\253\r\253\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\r\253\000\000\r\253\000\000\r\253\000\000\r\249\r\249\r\253\000\000\000\000\r\249\000\000\r\253\r\249\000\000\000\000\r\253\000\000\r\253\r\253\000\000\000\000\000\000\r\249\r\249\r\249\000\000\r\249\r\249\r\249\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\r\249\000\000\000\000\000\000\000\000\000\000\r\249\005B\000\000\000\000\r\249\000\000\000\000\000\000\000\000\000\000\r\249\000\000\000\000\r\249\000\000\000\000\000\000\000\000\000\000\r\249\r\249\r\249\000\000\000\000\000\000\000\000\000\000\000\000\r\249\r\249\000\000\000\000\000\000\000\000\000\000\r\249\000\000\000\000\r\249\000\000\000\000\000\000\r\249\000\000\000\000\r\249\000\000\000\000\000\000\000\000\000\000\000\000\000\000\r\249\000\000\r\249\r\249\000\000\r\249\r\249\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\r\249\000\000\r\249\000\000\r\249\000\000\r\245\r\245\r\249\000\000\000\000\r\245\000\000\r\249\r\245\000\000\000\000\r\249\000\000\r\249\r\249\000\000\000\000\000\000\r\245\r\245\r\245\000\000\r\245\r\245\r\245\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\r\245\000\000\000\000\000\000\000\000\000\000\r\245\0056\000\000\000\000\r\245\000\000\000\000\000\000\000\000\000\000\r\245\000\000\000\000\r\245\000\000\000\000\000\000\000\000\000\000\r\245\r\245\r\245\000\000\000\000\000\000\000\000\000\000\000\000\r\245\r\245\000\000\000\000\000\000\000\000\000\000\r\245\000\000\000\000\r\245\000\000\000\000\000\000\r\245\000\000\000\000\r\245\000\000\000\000\000\000\000\000\000\000\000\000\000\000\r\245\000\000\r\245\r\245\000\000\r\245\r\245\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\r\245\000\000\r\245\000\000\r\245\000\000\r\217\r\217\r\245\000\000\000\000\r\217\000\000\r\245\r\217\000\000\000\000\r\245\000\000\r\245\r\245\000\000\000\000\000\000\r\217\r\217\r\217\000\000\r\217\r\217\r\217\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\r\217\000\000\000\000\000\000\000\000\000\000\r\217\005B\000\000\000\000\r\217\000\000\000\000\000\000\000\000\000\000\r\217\000\000\000\000\r\217\000\000\000\000\000\000\000\000\000\000\r\217\r\217\r\217\000\000\000\000\000\000\000\000\000\000\000\000\r\217\r\217\000\000\000\000\000\000\000\000\000\000\r\217\000\000\000\000\r\217\000\000\000\000\000\000\r\217\000\000\000\000\r\217\000\000\000\000\000\000\000\000\000\000\000\000\000\000\r\217\000\000\r\217\r\217\000\000\r\217\r\217\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\r\217\000\000\r\217\000\000\r\217\000\000\r\213\r\213\r\217\000\000\000\000\r\213\000\000\r\217\r\213\000\000\000\000\r\217\000\000\r\217\r\217\000\000\000\000\000\000\r\213\r\213\r\213\000\000\r\213\r\213\r\213\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\r\213\000\000\000\000\000\000\000\000\000\000\r\213\0056\000\000\000\000\r\213\000\000\000\000\000\000\000\000\000\000\r\213\000\000\000\000\r\213\000\000\000\000\000\000\000\000\000\000\r\213\r\213\r\213\000\000\000\000\000\000\000\000\000\000\000\000\r\213\r\213\000\000\000\000\000\000\000\000\000\000\r\213\000\000\000\000\r\213\000\000\000\000\000\000\r\213\000\000\000\000\r\213\000\000\000\000\000\000\000\000\000\000\000\000\000\000\r\213\000\000\r\213\r\213\000\000\r\213\r\213\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\r\213\000\000\r\213\000\000\r\213\000\000\r\233\r\233\r\213\000\000\000\000\r\233\000\000\r\213\r\233\000\000\000\000\r\213\000\000\r\213\r\213\000\000\000\000\000\000\r\233\r\233\r\233\000\000\r\233\r\233\r\233\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\r\233\000\000\000\000\000\000\000\000\000\000\r\233\005B\000\000\000\000\r\233\000\000\000\000\000\000\000\000\000\000\r\233\000\000\000\000\r\233\000\000\000\000\000\000\000\000\000\000\r\233\r\233\r\233\000\000\000\000\000\000\000\000\000\000\000\000\r\233\r\233\000\000\000\000\000\000\000\000\000\000\r\233\000\000\000\000\r\233\000\000\000\000\000\000\r\233\000\000\000\000\r\233\000\000\000\000\000\000\000\000\000\000\000\000\000\000\r\233\000\000\r\233\r\233\000\000\r\233\r\233\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\r\233\000\000\r\233\000\000\r\233\000\000\r\229\r\229\r\233\000\000\000\000\r\229\000\000\r\233\r\229\000\000\000\000\r\233\000\000\r\233\r\233\000\000\000\000\000\000\r\229\r\229\r\229\000\000\r\229\r\229\r\229\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\r\229\000\000\000\000\000\000\000\000\000\000\r\229\0056\000\000\000\000\r\229\000\000\000\000\000\000\000\000\000\000\r\229\000\000\000\000\r\229\000\000\000\000\000\000\000\000\000\000\r\229\r\229\r\229\000\000\000\000\000\000\000\000\000\000\000\000\r\229\r\229\000\000\000\000\000\000\000\000\000\000\r\229\000\000\000\000\r\229\000\000\000\000\000\000\r\229\000\000\000\000\r\229\000\000\000\000\000\000\000\000\000\000\000\000\000\000\r\229\000\000\r\229\r\229\000\000\r\229\r\229\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\r\229\000\000\r\229\000\000\r\229\000\000\r\241\r\241\r\229\000\000\000\000\r\241\000\000\r\229\r\241\000\000\000\000\r\229\000\000\r\229\r\229\000\000\000\000\000\000\r\241\r\241\r\241\000\000\r\241\r\241\r\241\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\r\241\000\000\000\000\000\000\000\000\000\000\r\241\005B\000\000\000\000\r\241\000\000\000\000\000\000\000\000\000\000\r\241\000\000\000\000\r\241\000\000\000\000\000\000\000\000\000\000\r\241\r\241\r\241\000\000\000\000\000\000\000\000\000\000\000\000\r\241\r\241\000\000\000\000\000\000\000\000\000\000\r\241\000\000\000\000\r\241\000\000\000\000\000\000\r\241\000\000\000\000\r\241\000\000\000\000\000\000\000\000\000\000\000\000\000\000\r\241\000\000\r\241\r\241\000\000\r\241\r\241\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\r\241\000\000\r\241\000\000\r\241\000\000\r\237\r\237\r\241\000\000\000\000\r\237\000\000\r\241\r\237\000\000\000\000\r\241\000\000\r\241\r\241\000\000\000\000\000\000\r\237\r\237\r\237\000\000\r\237\r\237\r\237\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\r\237\000\000\000\000\000\000\000\000\000\000\r\237\0056\000\000\000\000\r\237\000\000\000\000\000\000\000\000\000\000\r\237\000\000\000\000\r\237\000\000\000\000\000\000\000\000\000\000\r\237\r\237\r\237\000\000\000\000\000\000\000\000\000\000\000\000\r\237\r\237\000\000\000\000\000\000\000\000\000\000\r\237\000\000\000\000\r\237\000\000\000\000\000\000\r\237\000\000\000\000\r\237\000\000\000\000\000\000\000\000\000\000\000\000\000\000\r\237\000\000\r\237\r\237\000\000\r\237\r\237\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\r\237\000\000\r\237\000\000\r\237\000\000\r\225\r\225\r\237\000\000\000\000\r\225\000\000\r\237\r\225\000\000\000\000\r\237\000\000\r\237\r\237\000\000\000\000\000\000\r\225\r\225\r\225\000\000\r\225\r\225\r\225\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\r\225\000\000\000\000\000\000\000\000\000\000\r\225\005B\000\000\000\000\r\225\000\000\000\000\000\000\000\000\000\000\r\225\000\000\000\000\r\225\000\000\000\000\000\000\000\000\000\000\r\225\r\225\r\225\000\000\000\000\000\000\000\000\000\000\000\000\r\225\r\225\000\000\000\000\000\000\000\000\000\000\r\225\000\000\000\000\r\225\000\000\000\000\000\000\r\225\000\000\000\000\r\225\000\000\000\000\000\000\000\000\000\000\000\000\000\000\r\225\000\000\r\225\r\225\000\000\r\225\r\225\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\r\225\000\000\r\225\000\000\r\225\000\000\r\221\r\221\r\225\000\000\000\000\r\221\000\000\r\225\r\221\000\000\000\000\r\225\000\000\r\225\r\225\000\000\000\000\000\000\r\221\r\221\r\221\000\000\r\221\r\221\r\221\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\r\221\000\000\000\000\000\000\000\000\000\000\r\221\0056\000\000\000\000\r\221\000\000\000\000\000\000\000\000\000\000\r\221\000\000\000\000\r\221\000\000\000\000\000\000\000\000\000\000\r\221\r\221\r\221\000\000\000\000\000\000\000\000\000\000\000\000\r\221\r\221\000\000\000\000\000\000\000\000\000\000\r\221\000\000\000\000\r\221\000\000\000\000\000\000\r\221\000\000\000\000\r\221\000\000\000\000\000\000\000\000\000\000\000\000\000\000\r\221\000\000\r\221\r\221\000\000\r\221\r\221\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\r\221\000\000\r\221\000\000\r\221\000\000\014\t\014\t\r\221\000\000\000\000\014\t\000\000\r\221\014\t\000\000\000\000\r\221\000\000\r\221\r\221\000\000\000\000\000\000\014\t\014\t\014\t\000\000\014\t\014\t\014\t\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\014\t\000\000\000\000\000\000\000\000\000\000\014\t\005B\000\000\000\000\014\t\000\000\000\000\000\000\000\000\000\000\014\t\000\000\000\000\014\t\000\000\000\000\000\000\000\000\000\000\014\t\014\t\014\t\000\000\000\000\000\000\000\000\000\000\000\000\014\t\014\t\000\000\000\000\000\000\000\000\000\000\014\t\000\000\000\000\014\t\000\000\000\000\000\000\014\t\000\000\000\000\014\t\000\000\000\000\000\000\000\000\000\000\000\000\000\000\014\t\000\000\014\t\014\t\000\000\014\t\014\t\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\014\t\000\000\014\t\000\000\014\t\000\000\014\005\014\005\014\t\000\000\000\000\014\005\000\000\014\t\014\005\000\000\000\000\014\t\000\000\014\t\014\t\000\000\000\000\000\000\014\005\014\005\014\005\000\000\014\005\014\005\014\005\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\014\005\000\000\000\000\000\000\000\000\000\000\014\005\0056\000\000\000\000\014\005\000\000\000\000\000\000\000\000\000\000\014\005\000\000\000\000\014\005\000\000\000\000\000\000\000\000\000\000\014\005\014\005\014\005\000\000\000\000\000\000\000\000\000\000\000\000\014\005\014\005\000\000\000\000\000\000\000\000\000\000\014\005\000\000\000\000\014\005\000\000\000\000\000\000\014\005\000\000\000\000\014\005\000\000\000\000\000\000\000\000\000\000\000\000\000\000\014\005\000\000\014\005\014\005\000\000\014\005\014\005\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\014\005\000\000\014\005\000\000\014\005\000\000\002\029\002\029\014\005\000\000\000\000\002\029\000\000\014\005\002\029\000\000\000\000\014\005\000\000\014\005\014\005\000\000\000\000\000\000\002\029\002\029\002\029\000\000\002\029\002\029\002\029\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\029\000\000\000\000\000\000\000\000\000\000\002\029\002\029\000\000\000\000\002\029\000\000\000\000\000\000\000\000\000\000\002\029\000\000\000\000\002\029\000\000\000\000\000\000\000\000\000\000\002\029\002\029\002\029\000\000\000\000\000\000\000\000\000\000\000\000\002\029\002\029\000\000\000\000\000\000\000\000\000\000\002\029\000\000\000\000\002\029\000\000\000\000\000\000\002\029\000\000\000\000\002\029\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\029\000\000\002\029\002\029\000\000\002\029\002\029\000\000\000\000\000\000\000\000\000\000\003\170\003V\000\000\002\029\002\246\002\029\b\234\002\029\000\000\003\146\000\000\002\029\000\000\000\000\000\000\000\000\002\029\000\000\000\000\001\214\005\190\t\"\002\029\000\000\000\000\000\000\003\174\000\000\000\000\011f\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\194\000\000\000\000\r\186\007\217\001\194\000\000\000\000\000\000\007\217\000\000\003J\007\217\000\000\004\158\004\162\000\000\000\000\0129\004\166\000\000\004\174\007\217\r\210\007B\000\000\007\217\000\000\007\217\000\000\000\000\000\000\000\000\004\165\000\000\007F\007N\007R\000\000\007V\007\217\000\000\000\000\000\000\000\000\000\000\007\217\000\000\007^\007b\000\000\000\000\000\000\0146\000\000\0065\0065\000\000\000\000\007\217\0065\000\000\000\000\0065\000\000\007\217\007\217\0129\000\000\000\000\000\000\0129\0129\0065\007f\0065\000\000\0065\0129\0065\005\"\007\217\0129\004\165\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0065\000\000\000\000\000\000\000\000\000\000\0065\0065\007\217\000\000\007\217\021\246\0065\007\217\007\217\000\000\0065\000\000\000\000\0065\000\000\000\000\000\000\000\000\000\000\0065\0065\0065\023*\000\000\000\000\007\217\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0065\0065\000\000\0065\000\000\000\000\000\000\0065\003\165\003\165\000\000\000\000\000\000\003\165\000\000\000\000\003\165\000\000\0065\000\000\0065\0065\000\000\0065\0065\003\165\003\165\000\000\003\165\n\014\003\165\000\000\003\165\003\165\000\000\000\000\000\000\0065\000\000\000\000\0065\0065\000\000\003\165\003\165\003\165\000\000\003\165\000\000\003\165\003\165\003\165\0065\000\000\000\000\000\000\005\189\000\000\000\000\000\000\003\165\003\165\000\000\003\165\000\000\000\000\000\000\003\165\003\165\003\165\003\165\003\165\000\000\005\193\000\000\000\000\000\000\003\165\000\000\000\000\003\165\000\000\000\000\000\000\000\000\003\165\003\165\003\165\003\165\000\000\000\000\000\000\003\165\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\165\003\165\000\000\003\165\003\165\000\000\003\165\003\165\006)\006)\000\000\000\000\005\189\006)\000\000\000\000\006)\000\000\003\165\000\000\003\165\003\165\000\000\003\165\003\165\000\000\006)\000\000\006)\005\193\006)\000\000\006)\000\000\000\000\003\165\000\000\003\165\003\165\001\206\001\210\003\165\000\000\000\000\006)\000\000\000\000\000\000\000\000\000\000\006)\006)\003\165\000\000\000\000\000\000\nV\000\000\001\214\002\250\006)\000\000\000\000\006)\000\000\000\000\000\000\000\000\000\000\006)\006)\000\242\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003:\000\000\031N\000\000\006)\006)\0036\006)\003J\004\202\004\214\006)\000\000\000\000\000\000\000\000\004\226\000\000\000\000\000\000\000\000\000\000\006)\000\000\006)\006)\000\000\006)\006)\003\170\003V\000\000\000\000\002\246\000\000\b\234\004\230\000\000\003\146\005\137\000\000\006)\000\000\000\000\006)\006)\000\000\000\000\001\214\000\000\t\"\000\000\000\000\000\000\014\029\003\174\006)\031f\011f\014\029\000\000\000\000\014\029\000\000\000\000\000\000\000\000\000\000\003\194\000\000\000\000\r\162\014\029\001\194\000\000\000\000\014\029\000\000\014\029\003J\000\000\000\000\004\158\004\162\000\000\000\000\000\000\004\166\000\000\004\174\014\029\r\210\007B\000\000\000\000\000\000\014\029\000\000\000\000\000\000\000\000\000\000\000\000\007F\007N\007R\014\029\007V\000\000\014\029\000\000\000\000\000\000\000\000\000\000\014\029\007^\007b\000\000\000\000\000\000\014\170\000\000\000\000\003\170\003V\000\000\000\000\002\246\000\000\b\234\014\029\012\174\003\146\014\029\000\000\000\000\0122\014\029\000\000\014\206\000\000\007f\001\214\000\000\t\"\000\000\000\000\005\"\014\029\003\174\014\029\005\001\011f\014\029\014\029\000\000\000\250\000\000\000\000\002>\000\000\000\000\003\194\000\000\000\000\r\186\000\000\001\194\000\000\022\234\000\000\014\029\000\000\003J\000\000\004\026\004\158\004\162\000\000\000\000\000\000\004\166\r\146\004\174\000\000\r\210\007B\022\238\000\000\000\000\000\000\000\000\000\000\023\022\000\000\000\000\000\000\007F\007N\007R\000\000\007V\000\000\000\000\000\000\000\000\022F\000\000\000\000\000\000\007^\007b\022^\000\000\000\000\0146\000\000\000\000\003\170\003V\000\000\000\000\002\246\000\000\b\234\000\000\000\000\003\146\022f\000\000\000\000\0122\000\000\000\000\012>\000\000\007f\001\214\000\000\t\"\000\000\000\000\005\"\000\000\003\174\000\000\022n\011f\023\174\000\000\000\000\005\001\005\001\000\000\000\000\000\000\000\000\003\194\000\000\000\000\r\162\000\000\001\194\000\000\000\000\000\000\000\000\n\025\003J\023\190\018J\004\158\004\162\000\000\000\000\000\000\004\166\000\000\004\174\000\000\r\210\007B\000\000\012\186\000\000\000\000\015\246\n\025\000\000\n\025\n\025\000\000\007F\007N\007R\000\000\007V\012\242\r\n\r\018\012\250\r\026\000\000\000\000\000\000\007^\007b\000\000\000\000\000\000\014\170\r\"\r*\000\000\000\000\000\000\000\000\000\000\001\n\000\000\000\000\r2\000\000\000\000\000\000\000\000\0122\000\000\000\000\012>\000\242\007f\000\000\000\000\001\014\000\000\000\000\005\"\003\n\012\194\r\002\r:\rB\rR\000\000\000\000\000\000\001\018\001\022\001\026\001\030\001\"\001&\000\000\rZ\000\000\000\000\000\000\000\000\018R\001*\000\000\0012\0016\000\000\rb\000\000\000\000\000\000\001:\000\000\000\000\001>\000\000\000\000\000\000\000\000\000\000\000\000\r\130\n\025\000\000\r\138\rJ\000\000\000\000\000\000\000\000\n\025\rj\001B\001F\001J\001N\001R\000\000\000\000\rr\rz\000\000\000\000\001V\000\000\000\000\000\000\001Z\000\000\000\000\000\000\000\000\000\000\000\000\000\000\n5\000\000\000\000\001^\000\000\000\000\003\170\003V\000\000\001b\002\246\000\000\000\000\000\000\000\000\003\146\000\000\000\000\000\000\000\000\001\158!\006\n5\000\000\000\000\001\214\000\000\001\162\000\000\001\166\000\000\000\000\003\174\001\170\000\000\001\174\001\178\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\194\000\000\000\000\003\214\018b\001\194\000\000\000\000\tm\tm\000\000\003J\000\000\tm\004\158\004\162\tm\000\000\000\000\004\166\000\000\004\174\0076\000\000\007B\000\000\tm\000\000\tm\000\000\tm\000\000\tm\000\000\000\000\007F\007N\007R\000\000\007V\000\000\000\000\000\000\000\000\tm\000\000\000\000\000\000\007^\007b\tm\tm\007\182\000\000\000\000\000\000\000\000\000\000\000\000\000\000\tm\000\000\000\000\tm\000\000\000\000\000\000\000\000\n5\tm\tm\tm\000\000\000\000\007f\000\000\n5\000\000\011N\000\000\005\"\000\000\000\000\000\000\000\000\tm\000\000\000\000\tm\000\000\000\000\000\000\tm\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\tm\000\000\tm\tm\000\000\tm\tm\000\000\000\000\015\149\015\149\000\000\000\000\000\000\015\149\tm\000\000\015\149\000\000\tm\000\000\000\000\000\000\tm\000\000\000\000\000\000\015\149\000\000\015\149\000\000\015\149\005\190\015\149\tm\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\015\149\000\000\000\000\000\000\000\000\000\000\015\149\015\149\000\000\000\000\000\000\000\000\004\242\000\000\000\000\000\000\015\149\000\000\000\000\015\149\000\000\000\000\000\000\000\000\000\000\015\149\015\149\015\149\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\015\149\000\000\000\000\015\149\000\000\000\000\000\000\015\149\015\153\015\153\000\000\000\000\014\137\015\153\003V\014\137\015\153!\250\015\149\000\000\015\149\015\149!\254\015\149\015\149\014\137\015\153\000\000\015\153\005\002\015\153\014\137\015\153\000\000\000\000\000\000\000\000\015\149\000\000\000\000\000\000\015\149\000\000\014\137\015\153\000\000\000\000\000\000\000\000\014\137\015\153\015\153\015\149\000\000\000\000\001\006\004\242\001\194\000\000\014\137\015\153\000\000\014\137\015\153\000\000\000\000\000\000\000\000\014\137\015\153\015\153\015\153\000\000\000\000\000\000\000\000\"\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\014\137\015\153\000\000\014\137\015\153\000\000\000\000\014\137\015\153\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\"\006\014\137\015\153\014\137\015\153\015\153\014\137\015\153\015\153\000\000\000\000\003\170\003V\005\002\000\000\002\246\000\000\b\234\000\000\000\000\003\146\015\153\000\000\000\000\014\137\015\153\000\000\000\000\000\000\000\000\001\214\000\000\t\"\000\000\000\000\000\000\015\153\003\174\000\000\000\000\011f\000\000\000\000\000\000\000\000\000\000\000\000\000\000\011\218\000\000\003\194\000\000\000\000\017b\000\000\001\194\000\000\000\000\000\000\000\000\007\213\003J\000\000\001\189\004\158\004\162\000\000\000\000\000\000\004\166\000\000\004\174\000\000\r\210\007B\000\000\012\186\000\000\000\000\007\213\000\000\000\000\001\189\007\213\000\000\007F\007N\007R\000\000\007V\012\242\r\n\r\018\012\250\r\026\000\000\000\000\000\000\007^\007b\000\000\000\000\000\000\000\000\r\"\r*\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\r2\000\000\000\000\000\000\000\000\000\000\000\000\000\000\017z\000\242\007f\000\000\001\197\000\000\000\000\000\000\005\"\000\000\012\194\r\002\r:\rB\rR\000\000\000\000\012\186\000\000\000\000\000\000\000\000\000\000\001\197\007\213\rZ\000\000\000\000\000\000\000\000\001\189\012\242\r\n\r\018\012\250\r\026\rb\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\r\"\r*\000\000\000\000\000\000\r\130\001\189\000\000\r\138\rJ\r2\000\000\000\000\000\000\001\189\rj\000\000\000\000\000\000\000\242\000\000\000\000\001\189\rr\rz\000\000\000\000\000\000\012\194\r\002\r:\rB\rR\001\193\000\000\000\000\000\000\000\000\000\000\000\000\000\000\017B\000\000\rZ\000\000\000\000\012\186\000\000\001\197\000\000\000\000\000\000\001\193\000\000\rb\000\000\000\000\000\000\000\000\000\000\012\242\r\n\r\018\012\250\r\026\000\000\000\000\000\000\r\130\001\197\000\000\r\138\rJ\000\000\r\"\r*\000\000\001\197\rj\000\000\000\000\000\000\000\000\000\000\r2\001\197\rr\rz\000\000\000\000\000\000\000\000\000\000\000\242\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\012\194\r\002\r:\rB\rR\000\000\000\000\000\000\000\000\000\000\000\000\002\005\000\000\000\000\000\000\rZ\002\005\000\000\001\210\002\005\001\193\000\000\000\000\000\000\000\000\000\000\rb\t\237\000\000\002\005\000\000\017F\000\000\002\005\000\000\002\005\000\000\000\000\000\000\000\000\r\130\001\193\000\000\r\138\rJ\000\000\000\000\002\005\000\000\001\193\rj\000\000\000\000\002\005\002\005\000\000\000\000\001\193\rr\rz\000\000\004\234\000\000\002\005\000\000\000\000\002\005\000\000\000\000\000\000\000\000\000\000\002\005\002\005\002\005\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\005\002\005\000\000\002\005\000\000\000\000\000\000\005b\000\000\000\000\000\000\000\000\000\000\000\000\002\r\000\000\000\000\000\000\002\005\002\r\002\005\001\210\002\r\002\005\002\005\000\000\000\000\000\000\000\000\000\000\t\245\000\000\002\r\002\005\000\000\000\000\002\r\000\000\002\r\000\000\000\000\002\005\000\000\000\000\000\000\000\000\002\005\000\000\000\000\000\000\002\r\000\000\002\005\000\000\000\000\000\000\002\r\002\r\000\000\000\000\000\000\000\000\000\000\000\000\004\234\000\000\002\r\000\000\000\000\002\r\000\000\000\000\000\000\000\000\000\000\002\r\002\r\002\r\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\r\002\r\000\000\002\r\000\000\000\000\000\000\005b\000\000\000\000\000\000\000\000\000\000\000\000\002\t\000\000\000\000\000\000\002\r\002\t\002\r\001\210\002\t\002\r\002\r\000\000\000\000\000\000\000\000\000\000\t\241\000\000\002\t\002\r\000\000\000\000\002\t\000\000\002\t\000\000\000\000\002\r\000\000\000\000\000\000\000\000\002\r\000\000\000\000\000\000\002\t\000\000\002\r\000\000\000\000\000\000\002\t\002\t\000\000\000\000\000\000\000\000\000\000\000\000\004\234\000\000\002\t\000\000\000\000\002\t\000\000\000\000\000\000\000\000\000\000\002\t\002\t\002\t\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\t\002\t\000\000\002\t\000\000\000\000\000\000\005b\000\000\000\000\000\000\000\000\000\000\000\000\003\137\000\000\000\000\000\000\002\t\003\137\002\t\001\210\003\137\002\t\002\t\000\000\000\000\000\000\000\000\000\000\t\233\000\000\003\137\002\t\000\000\000\000\003\137\000\000\003\137\000\000\000\000\002\t\000\000\000\000\000\000\000\000\002\t\000\000\000\000\000\000\003\137\000\000\002\t\000\000\000\000\000\000\003\137\002\001\000\000\000\000\000\000\000\000\000\000\000\000\004\234\000\000\003\137\000\000\000\000\003\137\000\000\000\000\000\000\000\000\000\000\003\137\003\137\003\137\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\137\003\137\000\000\003\137\000\000\000\000\000\000\005b\000\000\000\000\000\000\000\000\000\000\000\000\003\133\000\000\000\000\000\000\003\137\003\133\003\137\001\210\003\133\003\137\003\137\000\000\000\000\000\000\000\000\000\000\t\233\000\000\003\133\003\137\007\193\000\000\003\133\000\000\003\133\007\193\000\000\003\137\000\000\000\000\000\000\000\000\003\137\000\000\000\000\000\000\003\133\000\000\003\137\000\000\000\000\000\000\003\133\002\001\007\193\000\000\000\000\000\000\000\000\000\000\004\234\000\000\003\133\000\000\000\000\003\133\000\000\000\000\000\000\000\000\000\000\003\133\003\133\003\133\000\000\000\000\007\193\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\007\193\000\000\003\133\003\133\000\000\003\133\007\193\007\193\000\242\005b\000\000\000\000\000\000\000\000\000\000\007\193\007\193\000\000\000\000\000\000\003\133\000\000\003\133\003\170\003V\003\133\003\133\002\246\000\000\b\234\000\000\000\000\003\146\000\000\000\000\003\133\000\000\000\000\000\000\000\000\000\000\000\000\001\214\003\133\t\"\000\000\007\193\000\000\003\133\003\174\000\000\000\000\011f\000\000\003\133\007\193\000\000\000\000\000\000\000\000\028\170\000\000\003\194\000\000\000\000\027\018\000\000\001\194\000\000\000\000\000\000\000\000\029\"\003J\000\000\000\000\004\158\004\162\000\000\000\000\000\000\004\166\000\000\004\174\000\000\r\210\007B\003\170\003V\000\000\000\000\002\246\000\000\b\234\000\000\000\000\003\146\007F\007N\007R\000\000\007V\000\000\000\000\000\000\000\000\001\214\000\000\t\"\000\000\007^\007b\000\000\003\174\000\000\027\022\011f\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\194\000\000\000\000\r\186\000\000\001\194\000\000\000\000\029v\000\000\007f\003J\000\000\000\000\004\158\004\162\005\"\000\000\000\000\004\166\000\000\004\174\000\000\r\210\007B\003\170\003V\000\000\000\000\002\246\000\000\b\234\000\000\000\000\003\146\007F\007N\007R\000\000\007V\000\000\000\000\000\000\000\000\001\214\000\000\t\"\000\000\007^\007b\000\000\003\174\000\000\0146\011f\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\194\000\000\000\000\r\186\000\000\001\194\000\000\000\000\027\178\000\000\007f\003J\000\000\000\000\004\158\004\162\005\"\000\000\000\000\004\166\000\000\004\174\000\000\r\210\007B\004\225\004\225\000\000\000\000\004\225\000\000\000\000\000\000\000\000\004\225\007F\007N\007R\000\000\007V\004\225\000\000\000\000\000\000\004\225\000\000\000\000\000\000\007^\007b\000\000\004\225\028b\0146\000\000\028z\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\225\000\000\000\000\004\225\004\225\004\225\000\000\000\000\028\018\000\000\007f\004\225\000\000\000\000\004\225\004\225\005\"\000\000\000\242\004\225\000\221\004\225\004\225\000\000\004\225\000\221\000\000\000\000\000\221\000\000\000\000\000\000\000\000\000\000\000\000\004\225\004\225\004\225\000\221\004\225\000\221\000\000\000\221\000\000\000\221\000\000\000\000\000\000\004\225\004\225\000\000\000\000\000\000\000\000\000\000\000\000\000\221\000\000\000\000\000\000\000\000\000\000\000\221\000\000\001\253\000\000\000\221\000\000\000\000\001\253\000\000\000\000\000\221\000\000\004\225\000\221\000\000\000\000\000\000\000\000\004\225\000\221\000\221\000\242\000\000\000\000\000\000\000\000\001\253\000\000\000\221\000\221\000\000\000\000\000\000\000\000\000\000\000\221\000\000\000\000\000\221\000\000\000\000\000\000\000\221\000\000\000\000\000\000\000\000\000\000\001\253\000\000\000\000\000\000\000\000\000\221\000\000\000\221\000\000\001\253\000\221\000\221\000\000\000\000\001!\001\253\001\253\000\242\000\000\001!\000\221\000\000\001!\000\000\001\253\001\253\000\000\000\221\000\221\000\000\000\000\000\000\001!\000\000\001!\000\000\001!\000\221\001!\000\221\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001!\000\000\000\000\000\000\000\000\001\253\001!\000\000\015E\000\000\001!\000\000\000\000\015E\001\253\000\000\001!\000\000\000\000\001!\000\000\000\000\000\000\000\000\000\000\001!\001!\000\242\000\000\000\000\000\000\000\000\015E\000\000\001!\001!\000\000\000\000\000\000\000\000\000\000\001!\000\000\000\000\001!\000\000\000\000\000\000\001!\000\000\000\000\000\000\000\000\000\000\015E\000\000\000\000\000\000\000\000\001!\000\000\001!\000\000\015E\001!\001!\000\000\000\000\000\229\015E\015E\000\242\000\000\000\229\001!\000\000\000\229\000\000\015E\015E\000\000\001!\001!\000\000\000\000\000\000\000\229\000\000\000\229\000\000\000\229\001!\000\229\001!\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\229\000\000\000\000\000\000\000\000\015E\000\229\000\000\000\000\000\000\000\229\000\000\000\000\000\000\015E\000\000\000\229\000\000\000\000\000\229\000\000\000\000\000\000\000\000\000\000\000\229\000\229\000\242\000\000\000\000\000\000\000\000\000\000\000\000\000\229\000\229\000\000\000\000\000\000\000\000\000\000\000\229\000\000\000\000\000\229\000\000\000\000\000\000\000\229\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\229\000\000\000\229\000\000\000\000\000\229\000\229\000\000\000\000\000\225\000\000\000\000\000\000\000\000\000\225\000\229\000\000\000\225\000\000\000\000\000\000\000\000\000\229\000\229\000\000\000\000\000\000\000\225\000\000\000\225\000\000\000\225\000\229\000\225\000\229\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\225\000\000\000\000\000\000\000\000\000\000\000\225\000\000\000\000\000\000\000\225\000\000\000\000\000\000\000\000\000\000\000\225\000\000\000\000\000\225\000\000\000\000\000\000\000\000\001\n\000\225\000\225\000\242\000\000\000\000\000\000\000\000\000\000\000\000\000\225\000\225\000\000\000\000\000\000\000\000\001\014\000\225\000\000\000\000\000\225\000\000\000\000\000\000\000\225\000\000\000\000\000\000\000\000\001\018\001\022\001\026\001\030\001\"\001&\000\225\000\000\000\225\000\000\000\000\000\225\000\225\001*\000\000\0012\0016\000\000\000\000\000\000\000\000\000\225\001:\000\000\000\000\001>\000\000\000\000\000\225\000\225\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\225\000\000\000\225\000\000\000\000\001B\001F\001J\001N\001R\001\225\000\000\000\000\000\000\000\000\001\225\001V\000\000\001\225\000\000\001Z\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\225\000\000\000\000\001^\001\225\000\000\001\225\000\000\000\000\001b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\225\001\225\001\158!\"\000\000\000\000\001\225\000\000\000\000\001\162\000\000\001\166\005\189\000\000\000\000\001\170\001\225\001\174\001\178\001\225\000\000\000\000\000\000\000\000\000\000\001\225\001\225\001\225\000\000\000\000\007\174\000\000\000\000\000\000\000\000\000\000\003\170\003V\000\000\000\000\002\246\001\225\000\000\000\000\001\225\003\146\000\000\000\000\001\225\000\000\007\178\000\000\004\170\000\000\000\000\001\214\000\000\000\000\000\000\001\225\000\000\001\225\003\174\000\000\001\225\001\225\000\000\000\000\000\000\000\000\005\189\000\000\000\000\000\000\001\225\003\194\000\000\000\000\003\214\r\154\001\194\001\225\001\225\000\000\000\000\000\000\003J\001\225\000\000\004\158\004\162\000\000\000\000\001\225\004\166\000\000\004\174\0076\000\000\007B\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\015\145\015\145\007F\007N\007R\015\145\007V\000\000\015\145\000\000\000\000\000\000\000\000\000\000\000\000\007^\007b\000\000\015\145\007\182\015\145\000\000\015\145\000\000\015\145\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\214\015\145\000\000\br\000\000\000\000\007f\015\145\015\145\000\000\000\000\000\000\005\"\000\000\000\000\000\000\000\000\015\145\000\000\000\000\015\145\000\000\000\000\000\000\000\000\000\000\015\145\015\145\015\145\000\000\000\000\000\000\000\000\000\000\000\000\015\141\015\141\000\000\000\000\000\000\015\141\000\000\015\145\015\141\000\000\015\145\000\000\000\000\000\000\015\145\000\000\000\000\000\000\015\141\000\000\015\141\000\000\015\141\000\000\015\141\015\145\000\000\015\145\015\145\000\000\015\145\015\145\000\000\000\000\000\000\000\000\015\141\000\000\000\000\000\000\000\000\000\000\015\141\015\141\015\145\000\000\000\000\000\000\015\145\000\000\000\000\000\000\015\141\000\000\000\000\015\141\000\000\005\190\000\000\015\145\000\000\015\141\015\141\015\141\000\000\000\000\000\000\000\000\000\000\000\000\tq\tq\000\000\000\000\000\000\tq\000\000\015\141\tq\000\000\015\141\000\000\000\000\000\000\015\141\000\000\000\000\000\000\tq\000\000\tq\000\000\tq\000\000\tq\015\141\000\000\015\141\015\141\000\000\015\141\015\141\000\000\000\000\000\000\000\000\tq\000\000\000\000\000\000\t\170\000\000\tq\tq\015\141\000\000\000\000\000\000\015\141\000\000\000\000\000\000\tq\000\000\000\000\tq\000\000\000\000\000\000\015\141\000\000\tq\tq\000\242\000\000\000\000\000\000\003%\003%\000\000\000\000\003%\000\000\000\000\000\000\000\000\003%\tq\000\000\000\000\tq\000\000\000\000\000\000\tq\000\000\003%\000\000\000\000\000\000\000\000\000\000\000\000\003%\000\n\tq\000\000\tq\tq\000\000\tq\tq\000\000\000\000\000\000\000\000\003%\000\000\000\000\003%\tq\003%\000\000\000\000\tq\000\000\021\150\003%\tq\001\181\003%\003%\000\000\000\000\003%\003%\000\000\003%\003%\tq\003%\000\000\012\186\000\000\000\000\000\000\021\154\000\000\001\181\000\000\000\000\003%\003%\003%\000\000\003%\012\242\r\n\r\018\012\250\r\026\000\000\000\000\000\000\003%\003%\000\000\000\000\003%\000\000\r\"\r*\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\r2\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\242\003%\000\000\000\000\000\000\003%\000\000\003%\000\000\012\194\r\002\r:\rB\rR\000\000\000\000\000\000\000\000\000\000\000\000\002\001\000\000\000\000\000\000\rZ\002\001\000\000\001\210\002\001\001\181\000\000\000\000\000\000\000\000\000\000\rb\t\233\000\000\002\001\000\000\000\000\000\000\002\001\000\000\002\001\000\000\000\000\000\000\000\000\r\130\001\181\021\158\r\138\rJ\021\174\000\000\002\001\000\000\001\181\rj\000\000\000\000\002\001\000\000\000\000\000\000\000\000\rr\rz\000\000\004\234\000\000\002\001\000\000\000\000\002\001\000\000\000\000\000\000\000\000\000\000\002\001\002\001\002\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\001\002\001\000\000\002\001\000\000\000\000\000\000\005b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\001\000\000\002\001\000\000\000\000\002\001\002\001\000\000\000\000\000\000\000\000\bB\000\000\000\000\000\000\002\001\000\250\001\206\001\210\002>\000\000\000\000\000\000\002\001\000\000\000\000\000\000\000\000\002\001\022\234\000\000\000\000\000\000\005\001\002\001\004\026\001\214\002\250\001\234\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\246\022\238\000\000\000\000\000\000\000\000\000\000\023\022\000\000\000\000\000\000\000\000\000\000\003F\003\"\003*\000\000\000\000\000\000\0036\022F\003J\004\202\004\214\000\000\000\000\022^\000\000\000\000\004\226\006a\006a\000\000\000\000\000\000\006a\000\000\000\000\006a\000\000\000\000\000\000\022f\000\000\000\000\000\000\000\000\000\000\006a\004\230\006a\000\000\006a\000\000\006a\000\000\000\000\000\000\000\000\000\000\022n\000\000\023\174\000\000\000\000\000\000\006a\000\000\000\000\000\000\000\000\000\000\006a\006a\000\000\000\000\000\000\000\000\nV\000\000\000\000\000\000\006a\023\190\000\000\006a\000\000\000\000\005\030\000\000\005\"\006a\006a\000\242\000\000\000\000\000\000\000\000\000\000\000\000\006]\t~\000\000\000\000\000\000\006]\000\000\006a\006]\000\000\006a\000\000\000\000\000\000\006a\000\000\000\000\000\000\006]\000\000\006]\000\000\006]\000\000\006]\006a\000\000\006a\006a\000\000\006a\006a\000\000\000\000\000\000\000\000\006]\000\000\000\000\000\000\000\000\000\000\006]\t\250\006a\000\000\000\000\000\000\006a\000\000\000\000\000\000\006]\000\000\000\000\006]\000\000\000\000\000\000\006a\000\000\006]\006]\000\242\000\000\000\000\000\000\000\000\000\000\000\000\015\157\015\157\000\000\000\000\000\000\015\157\000\000\006]\015\157\000\000\006]\000\000\000\000\000\000\006]\000\000\000\000\000\000\015\157\000\000\015\157\000\000\015\157\000\000\015\157\006]\000\000\006]\006]\000\000\006]\006]\000\000\000\000\000\000\000\000\015\157\000\000\000\000\000\000\000\000\000\000\015\157\015\157\006]\000\000\000\000\000\000\006]\000\000\000\000\000\000\015\157\000\000\000\000\015\157\000\000\000\000\000\000\006]\000\000\015\157\015\157\000\242\000\000\000\000\000\000\000\000\000\000\000\000\015\161\015\161\000\000\000\000\000\000\015\161\000\000\015\157\015\161\000\000\015\157\000\000\000\000\000\000\015\157\000\000\000\000\000\000\015\161\000\000\015\161\000\000\015\161\000\000\015\161\015\157\000\000\015\157\015\157\000\000\015\157\015\157\000\000\000\000\000\000\000\000\015\161\000\000\000\000\000\000\000\000\000\000\015\161\t\250\015\157\000\000\000\000\000\000\015\157\000\000\000\000\000\000\015\161\000\000\000\000\015\161\000\000\000\000\000\000\015\157\000\000\015\161\015\161\000\242\000\000\000\000\000\000\000\000\000\000\000\000\006u\t~\000\000\000\000\000\000\006u\000\000\015\161\006u\000\000\015\161\000\000\000\000\000\000\015\161\000\000\000\000\000\000\006u\000\000\006u\000\000\006u\000\000\006u\015\161\000\000\015\161\015\161\000\000\015\161\015\161\000\000\000\000\000\000\000\000\006u\000\000\000\000\000\000\000\000\000\000\006u\t\250\015\161\000\000\000\000\000\000\015\161\000\000\000\000\000\000\006u\000\000\000\000\006u\000\000\000\000\000\000\015\161\000\000\006u\006u\000\242\000\000\000\000\000\000\000\000\000\000\000\000\006y\006y\000\000\000\000\000\000\006y\000\000\006u\006y\000\000\006u\000\000\000\000\000\000\006u\000\000\000\000\000\000\006y\000\000\006y\000\000\006y\000\000\006y\006u\000\000\006u\006u\000\000\006u\006u\000\000\000\000\000\000\000\000\006y\000\000\000\000\000\000\000\000\000\000\006y\006y\006u\000\000\000\000\000\000\006u\000\000\000\000\000\000\006y\000\000\000\000\006y\000\000\000\000\000\000\006u\000\000\006y\006y\006y\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\006y\000\000\000\000\006y\000\000\000\000\000\000\006y\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\006y\000\000\006y\006y\000\000\006y\006y\003\170\003V\000\000\000\000\002\246\000\000\b\234\000\000\000\000\003\146\000\000\000\000\006y\000\000\000\000\000\000\006y\000\000\000\000\001\214\000\000\t\"\000\000\000\000\000\000\000\000\003\174\n\"\000\000\011f\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\194\000\000\000\000\011\174\000\000\001\194\000\000\000\000\000\000\000\000\000\000\003J\000\000\000\000\004\158\004\162\000\000\000\000\000\000\004\166\003\129\004\174\000\000\r\210\007B\003\129\000\000\001\210\003\129\000\000\000\000\000\000\000\000\000\000\000\000\007F\007N\007R\003\129\007V\000\000\000\000\003\129\000\000\003\129\000\000\000\000\000\000\007^\007b\000\000\000\000\000\000\000\000\000\000\000\000\003\129\000\000\000\000\000\000\000\000\000\000\003\129\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\234\000\000\003\129\000\000\007f\003\129\000\000\000\000\000\000\000\000\005\"\003\129\003\129\003\129\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\129\003\129\000\000\003\129\000\000\000\000\000\000\005b\003}\000\000\000\000\000\000\000\000\003}\000\000\001\210\003}\000\000\003\129\000\000\003\129\000\000\000\000\003\129\003\129\000\000\003}\000\000\000\000\000\000\003}\000\000\003}\003\129\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\129\000\000\000\000\003}\000\000\003\129\000\000\000\000\000\000\003}\000\000\003\129\000\000\000\000\000\000\000\000\000\000\004\234\000\000\003}\000\000\000\000\003}\000\000\000\000\000\000\000\000\000\000\003}\003}\003}\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003}\003}\000\000\003}\000\000\000\000\000\000\005b\001u\000\000\000\000\000\000\000\000\001u\000\000\000\000\001u\000\000\003}\000\000\003}\000\000\000\000\003}\003}\000\000\001u\000\000\001u\000\000\001u\000\000\001u\003}\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003}\000\000\000\000\001u\000\000\003}\000\000\000\000\000\000\001u\000\000\003}\000\000\001u\000\000\000\000\000\000\000\000\000\000\001u\000\000\000\000\001u\000\000\000\000\000\000\000\000\000\000\001u\001u\000\242\000\000\000\000\000\000\000\000\000\000\000\000\001q\001u\000\000\000\000\000\000\001q\000\000\001u\001q\000\000\001u\000\000\000\000\000\000\001u\000\000\000\000\000\000\001q\000\000\001q\000\000\001q\000\000\001q\001u\000\000\001u\001u\000\000\001u\001u\000\000\000\000\000\000\000\000\001q\000\000\000\000\000\000\001u\000\000\001q\000\000\000\000\000\000\001q\000\000\001u\000\000\000\000\000\000\001q\000\000\000\000\001q\000\000\000\000\000\000\001u\000\000\001q\001q\000\242\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001q\000\000\000\000\000\000\000\000\000\000\001q\000\000\000\000\001q\000\000\000\000\000\000\001q\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001q\000\000\001q\001q\001\173\001q\001q\000\000\000\000\001\173\000\000\014\217\001\173\000\000\000\000\001q\000\000\000\000\000\000\000\000\014\217\000\000\001\173\001q\001\173\000\000\001\173\000\000\001\173\000\000\000\000\000\000\000\000\000\000\001q\000\000\000\000\000\000\000\000\000\000\001\173\000\000\000\000\000\000\000\000\000\000\001\173\014\217\000\000\000\000\000\000\000\000\000\000\000\000\014\217\000\000\000\000\000\000\000\000\001\173\000\000\000\000\000\000\000\000\000\000\001\173\001\173\001\173\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\173\000\000\000\000\014\217\000\000\000\000\000\000\014\217\000\000\002\021\000\000\000\000\000\000\000\000\002\021\000\000\020\022\002\021\001\173\002\246\001\173\001\173\000\000\001\173\001\173\000\000\000\000\002\021\000\000\000\000\000\000\002\021\000\000\002\021\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\173\000\000\000\000\000\000\002\021\000\000\000\000\000\000\000\000\000\000\002\021\001\173\000\000\000\000\000\000\000\000\020\026\000\000\000\000\000\000\002\021\000\000\000\000\002\021\000\000\000\000\000\000\000\000\000\000\002\021\002\021\000\000\020&\000\000\030\146\000\000\000\000\000\000\000\000\000\000\003\170\003V\000\000\000\000\002\246\002\021\000\000\000\000\002\021\003\146\000\000\000\000\002\021\000\000\000\000\000\000\b\138\000\000\000\000\001\214\000\000\000\000\007b\002\021\000\000\002\021\003\174\000\000\002\021\002\021\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\021\003\194\000\000\000\000\003\214\000\000\001\194\000\000\002\021\000\000\000\000\000\000\003J\000\000\000\000\004\158\004\162\000\000\000\000\002\021\004\166\000\000\004\174\0076\000\000\007B\000\000\000\000\000\000\000\000\000\000\000\000\007%\000\000\000\000\000\000\007F\007N\007R\003V\007V\000\000\002\246\000\000\000\000\000\000\000\000\003\146\000\000\007^\007b\000\000\007%\007\182\000\000\000\000\000\000\001\214\000\000\000\000\000\000\003\150\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\154\000\000\004B\000\000\000\000\007f\000\000\b\198\000\000\011N\004\130\005\"\001\194\000\000\000\000\000\000\000\000\000\000\003J\000\000\000\000\004\138\n\146\000\000\000\000\000\000\n\150\n\154\n\166\000\000\000\000\007B\000\000\000\000\000\000\007\218\000\000\000\000\000\000\000\000\000\000\003\170\003V\007N\007R\002\246\000\000\000\000\000\000\000\000\003\146\000\000\000\000\000\000\000\000\007^\007b\000\000\000\000\000\000\001\214\000\000\000\000\000\000\000\000\000\000\000\000\003\174\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\194\007f\n\174\003\214\000\000\001\194\n\198\005\"\000\000\000\000\000\000\003J\000\000\000\000\004\158\004\162\000\000\000\000\000\000\004\166\000\000\004\174\0076\000\000\007B\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\007F\007N\007R\000\000\007V\b6\000\000\000\000\000\000\000\000\000\000\003\170\003V\007^\007b\002\246\000\000\007\182\000\000\000\000\003\146\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\214\000\000\000\000\000\000\000\000\000\000\000\000\003\174\000\000\007f\000\000\000\000\000\000\000\000\000\000\005\"\000\000\000\000\000\000\000\000\003\194\000\000\000\000\003\214\000\000\001\194\000\000\000\000\000\000\000\000\000\000\003J\000\000\000\000\004\158\004\162\000\000\000\000\000\000\004\166\000\000\004\174\0076\000\000\007B\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\007F\007N\007R\000\000\007V\bV\000\000\000\000\000\000\000\000\000\000\003\170\003V\007^\007b\002\246\000\000\007\182\000\000\000\000\003\146\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\214\000\000\000\000\000\000\000\000\000\000\000\000\003\174\000\000\007f\000\000\000\000\000\000\000\000\000\000\005\"\000\000\000\000\000\000\000\000\003\194\000\000\000\000\003\214\000\000\001\194\000\000\000\000\000\000\000\000\000\000\003J\000\000\000\000\004\158\004\162\000\000\000\000\000\000\004\166\000\000\004\174\0076\000\000\007B\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\007F\007N\007R\000\000\007V\007)\000\000\000\000\000\000\000\000\000\000\003\170\003V\007^\007b\002\246\000\000\007\182\000\000\000\000\003\146\000\000\000\000\000\000\000\000\007)\000\000\000\000\000\000\000\000\001\214\000\000\000\000\000\000\000\000\000\000\000\000\003\174\000\000\007f\000\000\000\000\000\000\000\000\000\000\005\"\000\000\000\000\000\000\000\000\003\194\000\000\015^\003\214\000\000\001\194\000\000\000\000\003\170\003V\000\000\003J\002\246\000\000\004\158\004\162\000\000\003\146\000\000\004\166\000\000\004\174\0076\000\000\007B\000\000\000\000\001\214\000\000\000\000\000\000\000\000\000\000\000\000\003\174\007F\007N\007R\000\000\007V\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\194\007^\007b\003\214\000\000\001\194\000\000\000\000\000\000\000\000\000\000\003J\000\000\000\000\004\158\004\162\000\000\000\000\000\000\004\166\000\000\004\174\0076\000\000\007B\000\000\000\000\007f\000\000\000\000\000\000\000\000\000\000\005\"\000\000\007F\007N\007R\000\000\007V\015j\000\000\000\000\000\000\000\000\000\000\003\170\003V\007^\007b\002\246\000\000\007\182\000\000\000\000\003\146\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\214\000\000\000\000\000\000\000\000\000\000\000\000\003\174\000\000\007f\000\000\000\000\000\000\000\000\000\000\005\"\000\000\000\000\000\000\000\000\003\194\000\000\000\000\003\214\000\000\001\194\000\000\000\000\000\000\000\000\000\000\003J\000\000\000\000\004\158\004\162\000\000\000\000\000\000\004\166\000\000\004\174\0076\000\000\007B\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\007F\007N\007R\000\000\007V\015v\000\000\000\000\000\000\000\000\000\000\003\170\003V\007^\007b\002\246\000\000\007\182\000\000\000\000\003\146\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\214\000\000\000\000\000\000\000\000\000\000\000\000\003\174\000\000\007f\000\000\000\000\000\000\000\000\000\000\005\"\000\000\000\000\000\000\000\000\003\194\000\000\000\000\003\214\000\000\001\194\000\000\000\000\004\249\t~\004\249\003J\000\000\004\249\004\158\004\162\004\249\000\000\000\000\004\166\000\000\004\174\0076\004\249\007B\000\000\004\249\000\000\000\000\004\249\004\249\000\000\004\249\000\000\000\000\007F\007N\007R\000\000\007V\000\000\004\249\000\000\000\000\004\249\000\000\000\000\004\249\007^\007b\004\249\t\250\007\182\000\000\004\249\000\000\nV\004\249\000\000\000\000\004\249\000\000\000\000\004\249\000\000\000\000\004\249\003~\000\000\004\249\003~\000\242\000\000\000\000\007f\000\000\000\000\000\000\004\249\004\249\005\"\000\000\004\249\000\000\000\000\004\249\004\249\000\000\004\249\004\249\000\000\007M\004\249\000\000\000\000\000\000\000\000\000\000\003V\000\000\004\249\002\246\004\249\004\249\000\000\004\249\003\146\000\000\004\249\004\249\000\000\007M\000\000\000\000\n\014\000\000\001\214\000\000\004\249\000\000\003\150\000\000\000\000\004\249\000\000\000\000\004\249\000\000\000\000\003\154\000\000\004B\000\000\000\000\000\000\000\000\000\000\004\249\000\000\004\130\000\000\001\194\000\000\000\000\t-\t-\000\000\003J\t-\000\000\004\138\n\146\000\000\t-\000\000\n\150\n\154\n\166\000\000\020\246\007B\000\000\000\000\t-\000\000\000\000\000\000\000\000\000\000\000\000\t-\000\000\007N\007R\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\t-\007^\007b\t-\t-\t-\000\000\000\000\000\000\000\000\000\000\t-\000\000\000\000\t-\t-\000\000\000\000\000\000\t-\000\000\t-\t-\000\000\t-\000\000\000\000\007f\n\174\000\000\000\000\000\000\n\198\005\"\000\000\t-\t-\t-\000\000\t-\000\000\000\000\b\253\000\000\000\000\000\000\000\000\b\253\t-\t-\b\253\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\253\000\000\000\000\000\000\b\253\000\000\b\253\000\000\000\000\000\000\000\000\000\000\000\000\000\000\t-\000\000\000\000\000\000\b\253\000\000\t-\000\000\000\000\000\000\b\253\000\000\000\000\000\000\b\253\000\000\000\000\000\000\000\000\000\000\b\253\000\000\000\000\b\253\000\000\000\000\000\000\000\000\000\000\b\253\b\253\000\242\000\000\000\000\000\000\b\249\000\000\000\000\b\253\b\253\b\249\000\000\000\000\b\249\000\000\b\253\000\000\000\000\b\253\000\000\000\000\000\000\b\253\b\249\000\000\000\000\000\000\b\249\000\000\b\249\000\000\000\000\000\000\b\253\000\000\b\253\b\253\000\000\b\253\b\253\000\000\b\249\000\000\000\000\000\000\000\000\000\000\b\249\b\253\000\000\000\000\b\249\000\000\000\000\000\000\000\000\b\253\b\249\000\000\000\000\b\249\000\000\000\000\000\000\000\000\000\000\b\249\b\249\000\242\000\000\000\000\000\000\000\000\000\000\000\000\b\249\b\249\000\000\000\000\000\000\000\000\000\000\b\249\000\000\000\000\b\249\000\000\000\000\000\000\b\249\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\249\000\000\b\249\b\249\001a\b\249\b\249\000\000\000\000\001a\000\000\000\185\001a\000\000\000\000\b\249\000\000\000\000\000\000\000\000\000\185\000\000\001a\b\249\001a\000\000\001a\000\000\001a\000\000\000\000\000\000\000\000\000\000\003u\000\000\000\000\000\000\000\000\003u\001a\000\000\003u\000\000\000\000\000\000\001a\000\185\000\000\000\000\000\000\000\000\003u\000\000\000\185\000\000\003u\000\000\003u\001a\000\000\000\000\000\000\000\000\000\000\001a\001a\001a\000\000\000\000\003u\020.\000\000\000\000\000\000\000\000\003u\000\000\000\000\000\000\000\000\001a\000\000\000\000\000\000\007\185\003u\000\000\000\185\003u\007\185\000\000\000\000\007\185\000\000\003u\003u\003u\000\000\001a\000\000\001a\001a\007\185\001a\001a\000\000\007\185\000\000\007\185\000\000\003u\003u\000\000\003u\005\181\000\000\003u\003u\000\000\003u\007\185\001a\000\000\000\000\000\000\000\000\007\185\000\000\003u\003u\003u\030\186\001a\003u\003u\003u\007\185\000\000\000\000\007\185\000\000\000\000\000\000\003u\000\000\007\185\007\185\003u\020.\000\000\020\162\003u\000\000\003u\000\000\000\000\003u\000\000\000\000\000\000\000\000\007\185\003u\003u\007\185\000\000\003u\000\000\007\185\000\000\000\000\000\000\003u\003u\003u\000\000\000\000\000\000\000\000\007\185\000\000\007\185\007\185\000\000\007\185\007\185\000\000\000\000\003u\000\000\000\000\003u\000\000\000\000\007\185\003u\000\000\000\000\000\000\006\r\000\000\002\222\007\185\000\000\006\r\000\000\003u\006\r\003u\030\234\000\000\003u\003u\007\185\000\000\000\000\000\000\006\r\000\000\000\000\000\000\006\r\000\000\006\r\000\000\000\000\000\000\000\000\020\162\003u\000\000\000\000\000\000\000\000\003u\006\r\000\000\000\000\000\000\000\000\000\000\006\r\000\000\000\000\000\000\000\000\000\000\nV\000\000\000\000\000\000\006\r\000\000\000\000\006\r\000\000\000\000\000\000\000\000\000\000\006\r\006\r\000\242\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\006\r\006\r\000\000\006\r\000\000\000\000\000\000\006\r\006\017\000\000\000\000\000\000\000\000\006\017\000\000\000\000\006\017\000\000\006\r\000\000\006\r\000\000\000\000\006\r\006\r\000\000\006\017\000\000\000\000\000\000\006\017\000\000\006\017\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\006\r\000\000\000\000\006\017\000\000\000\000\000\000\000\000\000\000\006\017\000\000\006\r\000\000\000\000\000\000\nV\000\000\000\000\003u\006\017\000\000\000\000\006\017\003u\000\000\000\000\003u\000\000\006\017\006\017\000\242\000\000\000\000\000\000\000\000\000\000\003u\000\000\000\000\000\000\003u\000\000\003u\000\000\006\017\006\017\000\000\006\017\000\000\000\000\000\000\006\017\000\000\000\000\003u\020.\000\000\000\000\000\000\000\000\003u\000\000\006\017\000\000\006\017\000\000\000\000\006\017\006\017\006\221\003u\000\000\000\000\003u\006\221\000\000\000\000\006\221\000\000\003u\003u\003u\000\000\000\000\000\000\006\017\000\000\006\221\000\000\000\000\000\000\006\221\000\000\006\221\000\000\003u\006\017\000\000\003u\000\000\000\000\000\000\003u\000\000\000\000\006\221\000\000\000\000\000\000\000\000\000\000\006\221\000\000\003u\000\000\003u\022\186\000\000\003u\003u\007\185\006\221\000\000\000\000\006\221\007\185\000\000\000\000\007\185\000\000\006\221\006\221\000\242\000\000\000\000\020\162\003u\000\000\007\185\000\000\000\000\000\000\007\185\000\000\007\185\000\000\006\221\000\000\000\000\006\221\005\181\000\000\000\000\006\221\000\000\000\000\007\185\000\000\000\000\000\000\000\000\000\000\007\185\000\000\006\221\000\000\006\221\026\158\000\000\006\221\006\221\000\000\000\000\000\000\000\000\007\185\000\000\000\000\000\000\006\221\000\000\007\185\007\185\000\000\000\000\000\000\000\000\006\221\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\007\185\006\221\000\000\000\000\000\000\000\000\000\000\014\209\000\000\000\000\000\000\000\000\014\209\000\000\000\000\014\209\000\000\000\000\007\185\000\000\007\185\007\185\000\000\007\185\007\185\014\209\000\000\000\000\000\000\014\209\000\000\014\209\000\000\007\185\000\000\003\170\003V\000\000\007\185\002\246\002\222\007\185\000\000\014\209\003\146\000\000\000\000\000\000\000\000\014\209\000\000\000\000\007\185\000\000\001\214\000\000\000\000\000\000\000\000\014\209\000\000\003\174\014\209\000\000\000\000\000\000\000\000\000\000\014\209\014\209\000\000\000\000\000\000\000\000\003\194\000\000\000\000\r\214\000\000\001\194\000\000\000\000\000\000\000\000\014\209\003J\000\000\014\209\004\158\004\162\000\000\014\209\000\000\004\166\000\000\004\174\000\000\000\000\007B\000\000\000\000\000\000\014\209\000\000\014\209\002\238\000\000\014\209\014\209\007F\007N\007R\000\000\007V\000\000\000\000\000\000\014\209\000\000\007\221\t~\000\000\007^\007b\007\221\014\209\000\000\007\221\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\014\209\007\221\000\000\000\000\000\000\007\221\000\000\007\221\000\000\000\000\000\000\000\000\007f\000\000\000\000\000\000\000\000\000\000\005\"\007\221\000\000\000\000\000\000\000\000\000\000\007\221\t\250\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\237\007\221\000\000\000\000\007\221\001\237\000\000\000\000\001\237\000\000\007\221\007\221\000\242\000\000\000\000\000\000\000\000\000\000\001\237\000\000\000\000\000\000\001\237\000\000\001\237\000\000\007\221\000\000\000\000\007\221\000\000\000\000\000\000\007\221\000\000\000\000\001\237\000\000\000\000\000\000\000\000\000\000\001\237\000\000\007\221\000\000\007\221\000\000\000\000\007\221\007\221\000\000\001\237\000\000\000\000\001\237\000\000\000\000\000\000\000\000\000\000\001\237\001\237\001\237\000\000\000\000\000\000\007\221\000\000\000\000\000\000\000\000\000\000\000\000\002\025\000\000\000\000\001\237\000\000\002\025\001\237\000\000\002\025\000\000\001\237\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\025\000\000\000\000\001\237\002\025\001\237\002\025\000\000\001\237\001\237\000\000\000\000\000\000\000\000\022\198\000\000\000\000\000\000\002\025\000\000\000\000\000\000\000\000\000\000\002\025\000\000\001\237\000\000\000\000\000\000\000\000\001\237\000\000\006\225\002\025\000\000\000\000\002\025\006\225\000\000\000\000\006\225\000\000\002\025\002\025\000\000\000\000\000\000\000\000\000\000\000\000\006\225\000\000\000\000\000\000\006\225\000\000\006\225\000\000\002\025\000\000\000\000\002\025\000\000\000\000\000\000\002\025\000\000\000\000\006\225\000\000\000\000\000\000\000\000\000\000\006\225\000\000\002\025\000\000\002\025\000\000\000\000\002\025\002\025\000\000\006\225\000\000\000\000\006\225\000\000\000\000\000\000\002\025\000\000\006\225\006\225\000\242\000\000\000\000\000\000\002\025\000\000\000\000\000\000\000\000\026z\000\000\000\000\000\000\000\000\006\225\002\025\000\000\006\225\000\000\000\000\014m\006\225\003V\014m\000\000\"\026\000\000\000\000\000\000\000\000\"\030\000\000\006\225\014m\006\225\000\000\000\000\006\225\006\225\014m\000\000\000\000\000\000\000\000\000\000\000\000\000\000\006\225\000\000\000\000\000\000\014m\000\000\000\000\000\000\006\225\000\000\014m\000\000\000\000\000\000\000\000\000\000\001\006\004\249\001\194\006\225\014m\000\000\004\249\014m\000\000\004\249\000\000\000\000\000\000\014m\000\000\000\000\000\000\000\000\000\000\004\249\004\249\"\"\000\000\004\249\000\000\004\249\000\000\000\000\004\249\014m\000\000\000\000\014m\000\000\000\000\000\000\014m\004\249\004\249\000\000\000\000\000\000\004\249\004\249\004\249\000\000\"&\014m\000\000\014m\000\000\000\000\014m\004\249\000\000\000\000\004\249\000\000\000\000\000\000\000\000\000\000\004\249\003~\000\000\000\000\000\000\000\000\000\000\000\000\014m\001\021\000\000\000\000\000\000\004\249\001\021\000\000\004\249\001\021\000\000\004\249\003~\000\000\000\000\004\249\000\000\000\000\000\000\001\021\000\000\000\000\000\000\001\021\000\000\001\021\004\249\004\249\004\249\000\000\000\000\004\249\004\249\000\000\000\000\000\000\000\000\001\021\000\000\000\000\000\000\t\170\000\000\001\021\000\000\004\249\000\000\004\249\000\000\004\249\004\249\004\249\000\000\001\021\030\178\000\000\001\021\000\000\000\000\000\000\004\249\000\000\001\021\001\021\000\242\000\000\000\000\000\000\004\249\000\000\000\000\001\025\000\000\026z\000\000\000\000\001\025\000\000\001\021\001\025\000\000\001\021\000\000\000\000\000\000\001\021\000\000\000\000\000\000\001\025\000\000\000\000\000\000\001\025\000\000\001\025\001\021\000\000\001\021\000\000\000\000\001\021\001\021\000\000\000\000\000\000\000\000\001\025\000\000\000\000\000\000\000\000\000\000\001\025\000\000\000\000\000\000\000\000\000\000\001\021\014\209\000\000\000\000\001\025\000\000\014\209\001\025\000\000\014\209\000\000\001\021\000\000\001\025\001\025\000\242\000\000\000\000\000\000\014\209\000\000\000\000\000\000\014\209\000\000\014\209\000\000\000\000\000\000\001\025\000\000\000\000\001\025\000\000\000\000\000\000\001\025\014\209\000\000\000\000\000\000\000\000\000\000\014\209\000\000\000\000\000\000\001\025\000\000\001\025\000\000\000\000\001\025\001\025\000\000\000\000\014\209\000\000\000\000\000\000\000\000\000\000\014\209\014\209\000\000\000\000\000\000\000\000\000\000\000\000\001\025\000\000\000\000\000\000\000\000\000\000\000\000\000\000\014\209\000\000\000\000\001\025\000\000\000\000\001\206\002\242\000\000\000\000\002\246\000\000\000\000\000\000\000\000\000\000\000\000\000\000\014\209\000\000\014\209\002\238\000\000\014\209\014\209\001\214\002\250\001\234\003\002\000\000\000\000\000\000\000\000\014\209\000\000\001\246\000\000\007\217 J\000\000\000\000\014\209\007\217\000\000\000\000\007\217\000\000\000\000\003\006\003\"\003*\000\000\014\209\000\000\0036\007\217\003J\004\202\004\214\007\217\000\000\007\217\000\000\000\000\026R\000\000\026V\000\000\000\000\000\000\000\000\000\000\000\000\007\217\000\000\000\000\000\000\000\000\000\000\007\217\000\000\000\000\000\000\000\000\004\230\000\000\000\000\000\000\006\213\007\217\000\000\000\000\007\217\006\213\007b\000\000\006\213\000\000\007\217\007\217\000\000\000\000\000\000\022\150\000\000\026b\006\213\000\000\000\000\000\000\006\213\000\000\006\213\000\000\007\217\000\000\000\000\007\217\000\000\000\000\000\000\007\217\000\000\026f\006\213\000\000\000\000\000\000\000\000\000\000\006\213\000\000\007\217\000\000\007\217\021\246\000\000\007\217\007\217\001\153\006\213\000\000\000\000\006\213\001\153\000\000\000\000\001\153\000\000\006\213\006\213\000\000\000\000\000\000\000\000\007\217\000\000\001\153\000\000\001\153\000\000\001\153\000\000\001\153\000\000\006\213\000\000\000\000\006\213\014\209\000\000\000\000\006\213\000\000\014\209\001\153\000\000\014\209\000\000\000\000\000\000\001\153\000\000\006\213\000\000\006\213\000\000\014\209\006\213\006\213\000\000\014\209\000\000\014\209\001\153\000\000\000\000\000\000\000\000\000\000\001\153\001\153\000\242\000\000\000\000\014\209\006\213\000\000\000\000\000\000\000\000\014\209\000\000\000\000\000\000\000\000\001\153\000\000\000\000\000\000\000\000\000\000\000\000\000\000\014\209\000\000\000\000\000\000\000\000\000\000\014\209\014\209\000\000\000\000\001\153\000\000\001\153\001\153\000\000\001\153\001\153\000\000\000\000\000\000\000\000\000\000\014\209\000\000\000\000\000\000\000\000\000\000\001\206\002\242\000\000\000\000\002\246\001\153\000\000\000\000\000\000\000\000\000\000\000\000\014\209\000\000\014\209\002\238\001\153\014\209\014\209\001\214\002\250\001\234\000\000\000\000\000\000\000\000\000\000\014\209\000\000\001\246\000\000\004\209 \134\000\000\000\000\014\209\004\209\000\000\000\000\004\209\000\000\000\000\003\006\003\"\003*\000\000\014\209\000\000\0036\004\209\003J\004\202\004\214\004\209\000\000\004\209\000\000\000\000\026R\000\000 .\000\000\000\000\000\000\000\000\000\000\000\000\004\209\000\000\000\000\000\000\000\000\000\000\004\209\000\000\000\000\000\000\000\000\004\230\000\000\000\000\000\000\000\000\004\209\000\000\000\000\004\209\000\000\007b\000\000\000\000\000\000\004\209\000\000\000\000\000\000\000\000\000\000\000\000 :\000\000\006\025\t~\000\000\000\000\000\000\006\025\000\000\004\209\006\025\000\000\004\209\000\000\000\000\000\000\004\209\000\000\026f\000\000\006\025\000\000\000\000\000\000\006\025\000\000\006\025\004\209\000\000\004\209\000\000\004\201\004\209\004\209\000\000\000\000\004\201\000\000\006\025\004\201\000\000\000\000\000\000\000\000\006\025\t\250\000\000\000\000\000\000\004\201\004\209\000\000\000\000\004\201\000\000\004\201\000\000\006\025\000\000\000\000\000\000\022\030\000\000\006\025\006\025\000\242\000\000\004\201\000\000\000\000\000\000\000\000\000\000\004\201\000\000\000\000\000\000\000\000\000\000\006\025\000\000\000\000\004\233\004\201\000\000\000\000\004\201\004\233\000\000\000\000\004\233\000\000\004\201\000\000\000\000\000\000\000\000\006\025\000\000\006\025\004\233\000\000\006\025\006\025\004\233\000\000\004\233\000\000\004\201\000\000\000\000\004\201\000\000\000\000\000\000\004\201\000\000\000\000\004\233\000\000\006\025\000\000\000\000\000\000\004\233\000\000\004\201\000\000\004\201\000\000\000\000\004\201\004\201\004\185\004\233\000\000\000\000\004\233\004\185\000\000\000\000\004\185\000\000\004\233\000\000\000\000\000\000\000\000\000\000\004\201\000\000\004\185\000\000\000\000\000\000\004\185\000\000\004\185\000\000\004\233\025\018\000\000\004\233\000\000\000\000\000\000\004\233\000\000\000\000\004\185\000\000\000\000\000\000\000\000\000\000\004\185\000\000\004\233\000\000\004\233\000\000\000\000\004\233\004\233\004\249\004\185\000\000\000\000\004\185\004\249\000\000\000\000\004\249\000\000\004\185\000\000\000\000\000\000\000\000\000\000\004\233\000\000\004\249\000\000\000\000\000\000\004\249\000\000\004\249\000\000\004\185\026\n\000\000\004\185\000\000\000\000\000\000\004\185\000\000\000\000\004\249\000\000\000\000\000\000\000\000\000\000\004\249\000\000\004\185\000\000\004\185\000\000\004\242\004\185\004\185\000\000\000\000\000\000\000\000\004\249\000\000\000\000\000\000\000\000\000\000\004\249\003~\000\000\000\000\000\000\000\000\004\185\000\000\001\254\001\210\000\000\000\000\000\000\000\000\000\000\000\000\004\249\029\150\000\000\000\000\000\000\000\000\003\n\000\000\000\000\000\000\000\000\001\214\003\014\001\234\000\000\000\000\000\000\000\000\004\249\000\000\004\249\001\246\000\000\004\249\004\249\000\000\000\000\000\000\002&\005\002\000\000\000\000\007\169\007\169\001\250\003\"\003*\000\000\000\000\000\000\0036\004\249\003J\004\202\004\214\000\000\000\000\000\000\004\218\000\000\004\226\007\169\007\169\007\169\000\000\000\000\000\000\000\000\000\000\000\000\000\000\007\169\000\000\000\000\000\000\000\000\0126\000\000\000\000\000\000\004\230\000\000\001\206\001\210\007\169\007\169\007\169\000\000\000\000\000\000\007\169\000\000\007\169\007\169\007\169\000\000\000\000\000\000\004\170\000\000\007\169\001\214\002\250\001\234\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\246\020\030\000\000\000\000\000\000\000\000\000\000\000\000\000\000\007\169\012B\000\000\000\000\003F\003\"\003*\001\206\001\210\014\254\0036\004\217\003J\004\202\004\214\000\000\004\217\000\000\000\000\004\217\004\226\000\000\000\000\000\000\000\000\000\000\001\214\001\218\001\234\004\217\000\000\000\000\000\000\004\217\000\000\004\217\001\246\000\000\004\193\004\206\004\230\007\169\000\000\004\193\000\000\000\000\004\193\004\217\000\000\001\250\003\"\003*\000\000\004\217\000\000\0036\004\193\003J\004\202\004\214\004\193\000\000\004\193\000\000\000\000\004\226\004\217\000\000\000\000\000\000\000\000\000\000\004\217\000\000\004\193\000\000\000\000\000\000\000\000\005\030\004\193\005\"\000\000\000\000\000\000\004\230\000\000\000\000\004\217\000\000\000\000\000\000\004\241\004\193\000\000\000\000\000\000\004\241\000\000\004\193\004\241\000\000\000\000\000\000\000\000\000\000\004\217\000\000\004\217\000\000\004\241\004\217\004\217\000\000\004\241\004\193\004\241\000\000\000\000\005\r\000\000\000\000\000\000\014\153\000\250\000\000\014\153\003Z\004\241\004\217\000\000\000\000\000\000\004\193\004\241\004\193\014\153\004\022\004\193\004\193\023f\005\r\014\153\004\026\000\000\000\000\000\000\004\241\000\000\000\000\000\000\000\000\000\000\004\241\014\153\004&\004\193\000\000\000\000\000\000\014\153\021\226\000\000\000\000\000\000\000\000\000\000\025\158\000\000\004\241\014\153\029\194\000\000\014\153\022F\014}\000\000\000\000\014}\014\153\022^\000\000\000\000\000\000\000\000\000\000\000\000\004\241\014}\004\241\000\000\000\000\004\241\004\241\014}\014\153\022f\000\000\014\153\000\000\000\000\000\000\014\153\000\000\000\000\000\000\014}\000\000\000\000\000\000\004\241\000\000\014}\014\153\022n\014\153\022\170\000\000\014\153\005\r\005\r\026:\014}\000\000!\234\014}\000\000\000\000\000\000\000\000\000\000\014}\000\000\000\000\000\000\000\000\014\153\026\250\000\000\001\254\001\210\000\000\000\000\000\000\000\000\000\000\000\000\014}\000\000\000\000\014}\000\000\000\000\000\000\014}\000\000\000\000\000\000\001\214\002\018\001\234\000\000\000\000\000\000\000\000\014}\000\000\014}\001\246\000\000\014}\000\000\000\000\000\000\000\000\002&!\234\000\000\000\000\001\254\001\210\001\250\003\"\003*\000\000\000\000\000\000\0036\014}\003J\004\202\004\214\000\000\000\000\000\000\000\000\000\000\004\226\001\214\003>\001\234\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\246\000\000\000\000\000\000\000\000\000\000\000\000\002&\000\000\004\230\000\000\015\165\015\165\003F\003\"\003*\000\000\000\000\000\000\0036\000\000\003J\004\202\004\214\000\000\000\000\000\000\000\000\000\000\004\226\015\165\015\165\015\165\t\146\000\000\000\000\000\000\000\000\000\000\000\000\015\165\000\000\000\000\000\000\000\000\012B\000\000\000\000\000\000\004\230\000\000\001\206\001\210\015\165\015\165\015\165\000\000\000\000\000\000\015\165\000\000\015\165\015\165\015\165\000\000\000\000\000\000\000\000\000\000\015\165\001\214\002\250\001\234\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\246\000\000\000\000\000\000\000\000\bB\000\000\000\000\000\000\015\165\000\000\001\206\001\210\003F\003\"\003*\000\000\000\000\000\000\0036\000\000\003J\004\202\004\214\000\000\000\000\000\000\000\000\000\000\004\226\001\214\001\218\001\234\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\246\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\230\000\000\001\254\001\210\001\250\003\"\003*\000\000\000\000\000\000\0036\000\000\003J\004\202\004\214\000\000\000\000\000\000\000\000\000\000\004\226\001\214\020\170\001\234\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\246\000\000\000\000\000\000\000\000\000\000\000\000\002&\000\000\004\230\000\000\000\000\005\001\003F\003\"\003*\000\000\000\250\000\000\0036\002>\003J\004\202\004\214\001\206\001\210\000\000\000\000\000\000\004\226\022\234\000\000\000\000\000\000\005\001\000\000\004\026\000\000\000\000\000\000\000\000\000\000\000\000\001\214\002\250\001\234\000\000\000\000\022\238\004\230\000\000\000\000\000\000\001\246\023\022\000\000\023\250\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003:\022F\025R\000\000\024r\000\000\0036\022^\003J\004\202\004\214\001\206\001\210\027\182\000\000\000\000\025b\000\000\000\000\000\000\000\000\000\000\000\000\022f\000\000\000\000\000\000\000\000\000\000\000\000\001\214\001\218\001\234\000\000\000\000\000\000\004\230\000\000\000\000\000\000\001\246\022n\000\000\023\174\000\000\000\000\005\001\005\001\000\000\000\000\000\000\000\000\000\000\001\250\003\"\003*\001\206\001\210\028\022\0036\000\000\003J\004\202\004\214\023\190\000\250\000\000\000\000\003Z\004\226\000\000\000\000\000\000\000\000\000\000\001\214\001\218\001\234\"b\000\000\000\000\000\000\000\000\000\000\004\026\001\246\000\000\000\000\000\000\004\230\000\000\000\000\000\000\000\000\000\000\000\000\004&\000\000\001\250\003\"\003*\000\000\021\226\000\000\0036\000\000\003J\004\202\004\214\000\000\000\000\000\000\029\194\000\000\004\226\022F\000\000\000\000\000\000\000\000\000\000\022^\001\206\001\210\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\230\000\000\000\000\022f\000\000\000\000!\242\001\214\002\250\001\234\"\018\000\000\000\000\000\000\000\000\000\000\000\000\001\246\000\000\000\000\000\000\022n\000\000\022\170\000\000\000\000\0055\000\000\001\206\001\210\003F\005:\003*\000\000\000\000\000\000\0036\000\000\003J\004\202\004\214\000\000\000\000\000\000\026\250\000\000\004\226\001\214\002\250\001\234\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\246\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\230\000\000\001\206\001\210\003F\005F\003*\000\000\000\000\000\000\0036\000\000\003J\004\202\004\214\000\000\000\000\000\000\000\000\000\000\004\226\001\214\002\250\001\234\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\246\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\230\000\000\001\206\001\210\003F\006&\003*\000\000\000\000\000\000\0036\000\000\003J\004\202\004\214\000\000\000\000\000\000\000\000\000\000\004\226\001\214\002\250\001\234\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\246\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\230\000\000\001\206\001\210\003F\006b\003*\000\000\000\000\000\000\0036\000\000\003J\004\202\004\214\000\000\000\000\000\000\000\000\000\000\004\226\001\214\002\250\001\234\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\246\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\230\000\000\001\206\001\210\003F\006z\003*\000\000\000\000\000\000\0036\000\000\003J\004\202\004\214\000\000\000\000\000\000\000\000\000\000\004\226\001\214\002\250\001\234\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\246\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\230\000\000\001\206\001\210\003F\006\146\003*\000\000\000\000\000\000\0036\000\000\003J\004\202\004\214\000\000\000\000\000\000\000\000\000\000\004\226\001\214\002\250\001\234\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\246\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\230\000\000\001\206\001\210\003F\031>\003*\000\000\000\000\000\000\0036\000\000\003J\004\202\004\214\000\000\000\000\000\000\000\000\000\000\004\226\001\214\002\250\001\234\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\246\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\230\000\000\001\206\001\210\003F\031\154\003*\000\000\000\000\000\000\0036\000\000\003J\004\202\004\214\000\000\000\000\000\000\000\000\000\000\004\226\001\214\002\250\001\234\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\246\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\230\000\000\001\206\001\210\003F\031\198\003*\000\000\000\000\000\000\0036\000\000\003J\004\202\004\214\000\000\000\000\000\000\000\000\000\000\004\226\001\214\002\250\001\234\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\246\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\230\000\000\001\206\001\210\003F\031\222\003*\000\000\000\000\000\000\0036\000\000\003J\004\202\004\214\000\000\000\000\000\000\000\000\000\000\004\226\001\214\002\250\001\234\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\246\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\230\000\000\001\206\001\210\003F\031\246\003*\000\000\000\000\000\000\0036\000\000\003J\004\202\004\214\000\000\000\000\000\000\000\000\000\000\004\226\001\214\002\250\001\234\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\246\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\230\000\000\000\000\000\000\003F \026\003*\000\000\000\000\000\000\0036\000\000\003J\004\202\004\214\000\000\000\000\000\000\000\000\000\000\004\226\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\230")) and lhs = - (8, "\014\r\012\011\n\t\b\007\006\005\004\003\002\001\000\239\239\238\238\237\236\236\235\235\235\235\235\235\235\235\235\235\235\235\235\235\235\235\235\235\235\235\235\235\235\234\234\233\232\231\231\231\231\231\231\231\231\230\230\230\230\230\230\230\230\229\229\229\228\228\227\226\226\226\225\225\224\224\224\224\224\224\223\223\223\223\223\223\223\223\222\222\222\222\222\222\222\222\221\221\221\221\220\219\218\218\217\217\216\216\215\215\214\214\214\214\213\213\213\212\212\212\212\211\210\210\210\210\210\209\209\208\208\207\207\206\206\206\206\206\206\206\206\206\206\206\206\206\206\206\206\206\206\206\206\206\206\206\206\206\206\206\206\206\206\206\206\206\206\206\206\206\206\206\206\206\206\206\206\206\206\206\206\206\206\206\206\206\206\206\206\206\206\206\206\206\205\205\204\204\203\202\201\200\200\199\199\198\198\198\198\197\197\196\196\195\195\195\195\195\195\194\193\192\192\191\191\190\190\189\188\188\187\187\186\185\185\184\183\182\182\182\181\181\181\180\179\179\179\179\179\179\178\178\178\178\178\178\178\178\178\178\178\178\178\178\178\178\177\176\176\175\175\175\175\175\175\175\175\175\174\174\173\173\173\172\172\172\171\171\171\171\170\170\169\169\168\168\167\167\166\166\165\165\164\164\163\163\162\162\161\161\160\160\160\159\159\159\159\158\158\157\157\156\156\155\155\155\155\155\154\154\154\154\153\153\152\152\152\151\151\151\150\150\150\150\150\150\150\149\149\149\149\149\149\149\148\148\147\147\146\146\146\146\146\146\145\145\144\144\143\143\142\142\141\141\141\140\139\139\139\138\138\137\137\137\137\137\137\137\137\137\136\136\135\135\134\134\134\134\134\134\134\134\134\134\134\133\132\131\130\130\129\129\129\128\128\128\128\128\127~~}}||||||||||||||{{zzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyxxwwvvuuttssrrqqppoonnmmmmmmmmmmmllkjihgfedcba``````````___^^^]]]]]\\\\\\\\\\\\\\\\\\[[ZZZZZYYXXWVUUTTTTTSSRRQQQPPPPPPOOONNMMLLKKJJIIHHHGGFFEEDDCCBBAA@@@@??>>==<<;;;:::9998887777654444444444444444444333333222221111111111000000000000000000000000000000000000000000000000000000000000000000000000000000//.......................----------------------------------------------------,,+++************************************))((((((((((((((((''&&%%%%%%%%%%%%%%$$$$##\"\"\"\"\"!! \031\030\030\030\029\029\028\028\028\028\028\028\028\028\028\028\027\027\026\026\025\025\025\025\024\024\023\022\022\022\022\022\021\021\021\021\020\019\019\018\018\018\017\017\017\016\016\016\016\016\016\015\015") + (8, "\014\r\012\011\n\t\b\007\006\005\004\003\002\001\000\244\244\243\243\243\243\242\241\241\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\240\239\239\238\237\236\236\236\236\236\236\236\236\235\235\235\235\235\235\235\235\234\234\234\233\233\232\231\231\231\230\230\229\229\229\229\229\229\228\228\228\228\228\228\228\228\227\227\227\227\227\227\227\227\226\226\226\226\225\224\223\223\222\222\221\221\220\220\219\219\219\219\218\218\218\217\217\217\217\216\215\215\215\215\215\214\214\213\213\212\212\211\211\211\211\211\211\211\211\211\211\211\211\211\211\211\211\211\211\211\211\211\211\211\211\211\211\211\211\211\211\211\211\211\211\211\211\211\211\211\211\211\211\211\211\211\211\211\211\211\211\211\211\211\211\211\211\211\211\211\211\211\211\210\210\209\209\208\207\206\205\205\204\204\203\203\203\203\203\202\202\201\201\200\200\200\200\200\200\199\198\197\197\196\196\195\195\194\193\193\192\192\191\190\190\189\188\187\187\187\186\186\186\185\184\184\184\184\184\184\183\183\183\183\183\183\183\183\183\183\183\183\183\183\183\183\182\181\180\179\179\178\178\178\178\178\178\178\178\178\177\177\176\176\176\175\175\175\174\174\174\174\173\173\172\172\171\171\170\170\169\169\168\168\167\167\166\166\165\165\164\164\163\163\163\162\162\162\162\161\161\160\160\159\159\158\158\158\158\158\157\157\157\157\156\156\155\155\155\155\154\154\154\153\153\153\153\153\153\153\152\152\152\152\152\152\152\151\151\150\150\149\149\149\149\149\149\148\148\147\147\146\146\145\145\144\144\144\143\142\142\142\141\141\140\140\140\140\140\140\140\140\140\139\139\138\138\137\137\137\137\137\137\137\137\137\137\137\136\135\134\133\133\132\132\132\131\131\131\131\131\130\129\129\128\127\127~~}}||||||||||||||{{zzyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyxxwwvvuuttssrrqqppoonnmmlllllllllllkkkjihgfedcba`__________^^^]]]\\\\\\\\\\[[[[[[[[[ZZYYYYYXXWWVUTTSSSSSRRQQPPPOOOOOONNNMMLLKKJJIIHHHHGGGFFEEDDCCBBAA@@????>>==<<;;:::9998887776666543333333333333333333222222111110000000000//////////////////////////////////////////////////////////////////////////////..-----------------------,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,++****))))))))))))))))))))))))))))))))))))((''''''''''''''''&&%%$$$$$$$$$$$$$$####\"\"!!!!! \031\030\030\029\029\029\028\028\028\028\028\028\028\028\028\028\027\027\026\026\025\025\025\025\024\024\023\022\022\022\022\022\021\021\021\021\020\019\019\018\018\018\017\017\017\016\016\016\016\016\016\015\015") and goto = - ((16, "\001*\001w\000\026\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0000\000\000\000\000\001\027\000\168\000)\001I\000[\002\228\000\143\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\011\000\000\000\000\000\000\000\000\000\000\000\189\000\000\000\000\000\000\000\181\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000J^\000\000\000\000\000\000\000=\000\000\000\000\000\000\000\000\000\000\000\000\000\000K\022\000\007\000I\007&\000\000\000\r\rF\0000\0006\000Z\000\000\000\000\000\000\001\254\000\000\000\000\000\186\000\000\000\000\000\000\000\000\001\168\000\000\000\222\000\000\001L\001/\000\000\000\000\000\000\001|\000\000\000\000\000\000\000\000\0014\000\000\000\000\0022\001L\005\142\002t\t\214\000\000\000\000\001R\000\000)\130K\022\000\000\003 Kr\000\000\004\178L\000\001rK\022\002\220\002\192\000\000\000\000\001\222\001\240\004(\005\"\0068\002t\0036\000o\003\232\0000\002\144\002f\nv\000\000\000\226\002\178\002\154\002\212>\200\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\012\000\000\003\020\004,\003\214\000\000\000\000\000\000\000\000\b \000\000\000\000\004R\003\164\004n\005\228\007v\000\000\000\000\000\000\003\232\004:\004\208\003\186\004.\005\000*\132\004\228\005\016\001\003\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\250\005.\n\214\b\152\000\226\006\238\011\030\000\000*\142\012,+\022+\138,\028\000\000\001D\000\000\000\000\000\000\000\000\005\220S\002\005\224\000\000\001\222\006,\000\000\000\000\005V\007@\000\000F(\005\168\012\200\000\000\000\000\000\000\000\000\005n\000\000\000\000\000\000E\172\000\000\000\000\000\000\000\000\000\000\000\000\000f\007t\000\000\000\000\000\000\005n\007\212?.\007\128\006B\003\188\000\000\b\234\000\000\000\000\000\000\nv\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\024\000\000\000\000\000\000\000\000\000\000\000\000\b\206?<\000\000\000\000\007\166\006h?\218\000\000\000\000\000\000@H\003\216@V\000\000\003\216\000\000@l\003\216\000\000Ab\000\012\b\134\b\152\000\000\000\000\005N\000\000\000\000\000\000\000\000\000\000\000\000\003\216\000\000\000\000Ap\000\000\003\216Ox\000\000\005n\000\000\000\000A\134\000\000\003\216\003\030\000\000\000\000\003\216\003\216\000\000\000\000\003\216\000\000\000\000,\028\000\000\000\000\000\000\000\000\003\216,.\000\000\000\000\003\216\000\000\005\"\b\226\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000F\130\000\000\b\140\b\162\000\000N\230\000\000T&\005n\005n\000\000\000\000\000\000\000\000\000\000\000\000\b\180\b\246\t\174\012n\t\030\t&\t0\006\192\005L\006\216\000C\t\208\000\000\000\000\n~\n\170\007\014\001d\t\130\011\184\000\000\000~\003\202\005f\0009\011\000\000\000\000\000H\254\000\000Y\224\n\140\000\000T6\005nT\144\005n\000\000\0032\004v\000\000\014\170\000~\000\000\000\000\t\206\000\000\000\000\000\000\000\000\000\000\015\170\000~\018\206\000~\000\000\000\r\000\000\000\000\004\210\000\000\000\000\000\000\011\130\000\000\000\000\000\000\000~\000\000\000\000\000~\000\000\t\130\007\190\000\000\002(\004.\000\000\002(\000\000\000\000\019\128\000~\000\000\000\000\000\000\000\000\000\000\000\000\002(\012\194\r$\r\246\011V\011\018,\130\t:\000\000\nf\007&\r\202\n\150\007:#\1487\012\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\220\t0\000\000\000\000\000\000\n\198\007x\t\002\002(\020\172\000\000\000~\000\000\000\000\000\000\012,\000\000T\178\005n\014|\n\236\007|\014\236\n\252\bj\0142-&\003\216\015R\011\022\brJ\194\012D\000\000\022N-\140\003\216N\234\000\000T\222\005n\005n\012$\000\000\000\000\0126\000\000\000\000\000\000\000\000-\214\012@\000\000F\192\015\190\011\166\b\176A\214\003\216\016\006\016.\011\178\b\182L\214\000\000\000\000\000\000N\136\000\000\000\000\017\004.,C\232\000\000\000\000\r$U.\000\000\005nPd\000\000\005nU2\005n\000\000\000\000\000\000\000\000\000\000O\180\000\000\000\000\000\000\004\018\017\184\000\000\000\000\000\000\000\000.NO\236\000\000\000\000\000\000\000\000\000\000\011\182\017\224\000\000\000\132.\130\000\132/&\000\132\000\000P\014\000\000/`\000\132\018\012\005\170\018\146\000\000\000\000/\130\000\13208\000\1320Z\000\1320\242\000\1321R\000\1321\\\000\1321\202\000\1322\004\000\1322\232\000\1323\014\000\1323\028\000\1323V\000\1323\192\000\1324(\000\1324\222\000\1325\000\000\13254\000\1325\152\000\1325\186\000\1326R\000\132\b\246\0184\006\166B|-\214\012\152\000\000\003\202<\2306\192B\154\003\216\000\000\r4\012\146\000\000\000\000U\156\005n\000\000\003\216Ox\000\000U\250\005n\000\000\000\000\019\152\000\000\000\000\019\238\000\000\000\000\000\000\000\000\005\\\000\0007^\000\000\000\000\003\216PT\000\000V\028\005n\000\000Pd\000\000V\152\005n\020D\000\000\000\000\020N\000\000\000\000C\014-\214\r8\000\0005V\020\164\000\000\000\000\021\216\000\000\000\0007p\000\000\000\000P\192\r:\000\000V\198\005n\022\000\000\000\000\000V\242\005n\022,\000\000\000\000\022`\000\000\000\000\000\000W\012\005n\022\180\000\000\012\166\023\178\000\000C,\000\000\003\216C\146\000\000\003\216C\160\000\000\003\216\007\206\000\000\000\000\000\000\000\000\000\000D>\003\216\000\000\b\014\bb\000\000\000\000\000\000\000\132\023\250\000\000\000\000\000\000\024V\000\000\000\000\000\000\000\000\000\000\024\172\000\000\000\000\000\000\000\132\025\002\000\000\025\198\000\000\000\000\000\000\026\000\000\000\000\000\000\000\000\000P \000\000\000\000\026r\000\000\000\000\000\0007z\000\132\026\152\000\000\000\000\000\0007\194\000\132\026\210\000\000\000\000\000\0007\228\000\132\006P\027\n\000\000\000\0008|\000\132\027\182\000\000\000\0009\002\000\132\028$\000\000\000\00096\000\132\000\000\000\000\028.\000\000\000\0009X\000\132\028\144\000\000\000\0009\188\000\132\029\b\000\000\000\000:\018\000\132\000\000:v\000\132\000\000\024\190\000\000\000\000\000\132\000\000\000\000\029B\000\000\000\000\029h\000\000\000\000\000\000\012\244\000\000\000\000\030\026\000\000\030\204\000\000\000\000\000\000-\214\r\172\000\000F\254\012\000\007\214\030\244\000\000Gf\000\000\000\000\000\000G\164\000\000\000\000\031 \000\000\031\166\000\000\000\000\000\000\000\000;\026\000\000\000\000\000\000:\204\000\132;\130\000\132\000\000\012\166\031\204\000\000\000\000 \166\000\000<(\000\000\000\0007\012\000\000\000\000\000\000 \224\000\000\000\000\000\000\000\000\000\132<\134\000\132\002\n\000\000\000\174D\172D\186\003\216<\192\000\132\003\216=,\000\132=d\001n=\152\000\132\000\000\000\000\000\000\r\000\000\000\000\000\000\000!X\000\000\000\000\000\000\000\000\001n\r\000\000\000!\132\000\000\000\000\000\000\000\000\002\024\r\000\000\000\014j\000\000\000\000\000\000D\196\000\000\001\220\000\000\002\134\000\000\014\b\000\000\002\242\000\000\000\000\000\000\000\000\000\000\000\000\004\220\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\000\000\014\136\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\216\r\000\000\000\000\000\000\000\000\000\000\000\003V\r\000\000\000\000\000\t$\tR\002(!\184\000\000\rn\tJ\014\b\003\030\011\002\002(\0230\000~\014*\002(\000\000\"0\000\000\004V\000\000\r\172\tP\b\200\000\000\000\000\000\000\000\000\000\000\r\206\nB\000\201\000\000\000\000\000\000\000\000P\238\000\000Zn\000\000\tl\000\000\tr\000\000\000\000\000\000\000\000\003\"\000\000\000\000\021z\007\214\000\000\021\164\023\130\007\214\007\214\000\000\007\214\002\000\000\000\016\216\000\000\023\226\007\214\007\214\000\000\024\020\007\214\007\214\t\222\000\000\"\156\000\000\000\000\t\228\015T\000\000#B\t\192\000\000\000\000\000\000\000\000\015 \000\000\000\000\000\000\000\000\000\132\000\000\000\000\000\000\000\000\000\000\004h\r\000\000\000\000\000\014l\t\234\014~\002(\000\000\023h\000\000\000~\000\000\015\216\000\000\000\000\000\000\000\000\000\000#\182\000\000\000\132\000\000\000\000\025\208\000\000\000~\000\000\026$\000\000\000~\000\000\029\016\000~\000\000\006\154\000\000\t\236\016\130\007b\000\000\014\136\014\188\t\240\014\240\015\168\029\236\000~\t\214\000\000\t\254\015\128\015\146\b\204\nf\015Z\n\028\015\162\t4\n\206\015l\000\000\000\000\nP\0114\000\000\006\176\003XD\252\003\216#\014\000\000\b\136\001\194\000\000\000\000\015(\nz\n\224\000\000LP\000\000W\156\005n\000\000\015\212\015\254\000\000\011\128\000\000\005n\015b\n~\011*\015|\000\237\000\000\000\000\000\000\000\000\n\152\011\134\000\000\n\160\011\190\000\000\b\014\031z\015n\015p\011\b\006h\011\202\000\000\011^\n`\011\244\000\000\015x\015z\011x\015\160\015\168\030\154\000~\000\000\011\154\016\026\000\000\011\220\000\000\012\"\000\000\016.\000\000!*\001\188\015\250\011\190\0168\000\000\"\252\004\160\016\006\000\000\000\000\000\159\004&\012P\000\000$\210\000~\012\\\000\000\000\020\000\000\015\196\011\220\011\178\015|\015\198\015\206\011\254\017J\000\000\015\228\003t\000\000\000\000\000\000\007\162\000\000\000\000\000\000\000\240\012\026\015\188W\202\005n\000\000\000\224\012.\016\130\000\000\000\000\000\000\000\000\000\000\000\000W\246\005v\000\000\0122\016\220\000\000\000\000\000\000\000\000\000\000\000\000M\028\012\194\000\000\012@\002\238\000\000\012^\012z\007\212\000\000\005\004\n\220\000\000\t\210\000\000XF\005n\005n\000\000\000\000\007\184\000\000\012H\000\000\005\236\007\184\007\184\000\000\012\164Qj\005nXr\005n\012\198\000\000\000\000\000\000\000\000\012\202\000\000\000\000\006\222\000\000\b\142\0168\012\174\017b\015\252\000\000\000\000\006\162\b\174\016@\000\000\000\000\012\202\017j\016\002\000\000\000\000\005\150\000\000\028\186\000\000\012\018\b\254\005n\000\000\016\146\029\168\000\000\019,\000\000\000\000\000\000\007\184\000\000\000\000\012\238\016F\012\204\017r\016\020\000\000\000\000\025n\r\006\016V\000\000\000\000\000\000+f\000\000\000\000\000\000\000\000\000\000\000\000\000\000\r$\000\000\016\014\012\234%6\t&\000\000\016v\r\016\b\156\000\000\017|\017$\r6\016|\000\000\000\000\016\128\r:\t\154\000\000\000\000#\232I0\003p\000\000\000\000\000\000\011\210\016B\r<\000\000\016H\011\210\000\000\0172\r8\016\140\000\000\000\000\000\000\005n\003B\006<\006d\000\000\000\000\000\000\000\000\016L\rZ\000\000\007@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\005n\016:\rn\017\178\016N\000\000G\226-\214\000\255\r\134\016\028\005`\004^\r\140\016\232\000\000\000\000\017\172$\200\000\000\000\000$\234\000\000\r\222\000\000\006\200\000\000\000\000\000\000\000\000\000\000\000\000X\154\005n\000\000\017\176%\130\000\000\000\000%\164\000\000\004\158\r\142\017L\000\000\000\000HjM:\016\252\000\000X\180\005n%\236\000\000\000\000&^\000\000\000\000\014\002\000\000\014\194\000\000\000\000\000\000\000\000\000\000\000\000M\182\000\000\000\000H\136M\198\016\254\000\000X\198\005n&\166\000\000\000\000&\200\000\000\000\000\r\174'`\014,\000\000\r\220\r\228\006\150\006\228\r\234\r<\r\248\017V'\206\014z\000\000\014\006\014,\012\160\000\000\b\206Q\150\000\000\002~\000\000\014>H\198I4\014\022\016*\015&\000\000K\026\024\190\000\000\005j\000\000\000\000\005j\000\000\000\000\005j\r\232\000\000\015Z\005j\017b(8\014\182\000\000\005j\000\000\000\000$V\000\000\000\000\000\000\005j\000\000\000\000\014\188\000\000\018f\007\162\014\222\000\000\014BQ\178\0154\000\000\000\000\000\000\000\000\015H\000\000\000\000\006\236\000\000\005j&\244\000\000\019\216\005jI\132\000\000\015T\016\194\014^\017\248\016\148\000\000I\150\015b\016\214\000\000\000\000\000\000>\182\t\030\000\000\000\000\000\000\000\000\000\000\000\000\011\182\015\146\000\000\016\146\014b\016\152\b2\000\000\016\236\000\000\000\000\000\000\000\000\015\156R\014\000\000\000\000\000\000\011\182\000\000\000\000\000\000\000\000\015\158RZ\000\000\000\000\000\000\000\000\000\000\002(\000~\000\000\000\000\003\216\000\000Y\132\005n\000\000\007\198\000\000\000\000\000\000\000\000(\232\000\000\000\000\000\000\000\000\000\000\000\000\017\142\000:\012\016\016B\004\216\014~\000\000\t:\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016L\b\138\015 \000\000\n\214\018\002\017\170\015\164\000\000\000\000\017\160\005\174\n\196\000\000\000\000\000\000\000\000R\130\0156\000\000\015>\0020\000\000\000\000\007\214\003\252\000\000\000\000\000\000\000\000\000\000Y\164\005n\000\000;&\031\026\000\000\000\000\000\000! M\248\000\000Z\004\005n\000\000;\166\"h\000\000\000\000\000\000\000\000?h$^\000\000\000\000\000\000\000\000F\194$h\000\000\000\000\000\000\000\000Z.\005n\000\000H:&>\000\000\000\000\000\000\000\000\000\000ZL\005n\000\000H\244&\248\000\000\000\000\000\000\n\188\000\000\000\000\000\000\005n\000\000\000\000(\144\017\182\015\180\000\000\000\000\017\170\005\138\n\252\000\000\000\000\000\000\000\000\011\030\018\002)J\017\186\015\250\000\000\000\000\017\174\006\154\011(\000\000\000\000\000\000\000\000\000~\000\000\015\254\000\000\000\000\000\000(\242\000\000*\026\000\000\000\000\000\000\000\000\000\000\011\160\000\000\000\000\000\000\000\031\000\143\000\000\000\000\000\000\000\000\000\000\007\136\000\143\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\000\000\000\000R\162\000\000\005n\000\000\t\146\000\000\000\000\000\000\000I\000\000\000\000\000\000\001\014\000\000\000\000\000\000\n\204\000\000\002(\000\000\000y\000\000\000~\000\000\001\174\000\000\000\000\000\000>\186\003\216\000\000\000\000\000\130\000\000\000\000\000\000\000\000\004\220\004R\016\230\000\026\000\000\000\000\000\000\000\000\000\000\000\000\016\242\000J\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000R\140\000\000\016\018\000\000\000\000\000\000\000\000\004\234\006|\030&A\000\000\000\000\000\0166N>\000\000\000\000\000\000\016:Nv\000\000\000\000\000\000\000\000"), (16, "\007\026\002\135\001 \002\136\002\137\001\177\001#\002\138\001'\001*\007\237\000\249\001'\000\249\000\253\000\254\000\253\000\254\000<\002\213\007\027\007/\005_\007\221\007\029\000\253\000\154\001\175\002\214\004\193\001\176\001\177\003\163\001\178\007\030\0070\b,\002\137\001\177\000\155\b\020\000@\002\240\002f\007\026\002\135\006\215\002\136\002\137\001\177\000n\002\138\001\179\001\197\000]\001\181\001\182\001\187\0008\005\150\b4\002\137\001\177\002\213\007\027\007/\007\031\b\b\007\029\0008\0073\0022\002\214\000\165\b\021\007\201\002C\006\217\007\030\0070\001+\002J\004\204\004\206\004\208\002N\002\240\001'\b \002\137\001\177\000\157\007\238\000a\005b\006\218\001\218\000e\000\255\001\198\006\220\001\199\001\222\007 \007\b\b\t\007T\002\242\007\252\007]\007\031\001'\000\249\007!\0073\000\253\001\017\005\152\001/\000A\002\141\000\148\002\244\000\253\000\159\001\155\007\239\000n\000\130\0008\002O\007\246\001'\001\206\002\135\002W\002\136\002\137\001\177\0074\002\138\001'\005_\004X\002P\000\253\001\189\007 \005\153\000\253\003\163\002\242\0027\b-\0075\002\244\000\253\007!\000\133\000\160\000z\005\001\b\"\002`\002\141\007$\002\244\000\253\007&\007\026\002\135\007+\002\136\002\137\001\177\007\247\002\138\b5\001\158\002\244\000\253\007-\000\148\0074\002\245\000\159\002\251\000\157\002\213\007\027\007\226\000\136\003\001\007\029\001\218\002\247\000\157\002\214\0075\007\248\007.\000\164\000\129\007\030\0070\b#\005\152\002\244\000\253\007$\001\208\002\240\007&\007\219\007\253\007+\001\218\001/\001\209\003\003\001\218\007\249\007a\007b\005{\007-\000\157\001 \002\245\000\135\002\251\007c\007d\001'\001:\007\031\003\001\b\012\001\218\002\247\002\140\000\152\007e\004\233\007.\007\026\002\135\000;\002\136\002\137\001\177\004I\002\138\002\141\0020\002\244\000\253\007R\000:\000\157\004b\001 \000\163\003\003\002\213\007\027\007/\001'\001*\007\029\005\233\001/\007 \002\214\0011\b\r\002\242\001\127\000\253\007\030\0070\001H\007!\000\165\004[\000\167\002C\002\240\001/\002\141\001;\002\244\000\253\001/\004s\002I\001}\005\236\003\000\001\128\0018\000\151\000\249\001~\004V\000\253\001\017\001\152\0074\003\163\000\166\007\031\001/\005\238\b\024\0073\001\018\002\245\000>\000\157\004\211\001<\0018\0075\005\216\002\246\001 \001\218\002\247\004\219\000\156\004G\001'\001:\007$\007\129\005\239\007&\007\228\005\217\007+\001/\001\021\005\241\001D\004j\b\025\000\194\007 \001F\007-\001E\002\242\002\245\000\158\002\251\002J\004u\007!\000\173\002N\003\001\001'\001\218\002\247\002\141\001\133\002\244\000\253\007.\0018\001F\007\026\002\135\002`\002\136\002\137\001\177\000\249\002\138\001 \000\253\001\017\005\135\0074\002s\001'\001:\003\003\001;\004S\002\213\007\027\007/\000r\001\177\007\029\001 \000\157\0075\002\214\004[\001 \001'\001:\002O\007\030\0070\001'\001:\007$\0008\000\190\007&\002\240\003\000\007+\001\175\004t\001F\007}\001 \000\157\001\238\001\177\004I\007-\001'\001:\002\245\007|\002\251\001/\004y\004v\007\172\001P\003\001\007\031\001\218\002\247\004\150\007s\001;\000\189\007.\001\186\001\143\007\026\002\135\001 \002\136\002\137\001\177\002I\002\138\001'\001:\0076\000\249\001;\0018\000\253\000\254\003\003\001;\004\225\002\213\007\027\007/\000\165\000\200\007\029\005\165\001A\007 \002\214\001S\004W\002\242\000\157\001 \007\030\0070\001;\007!\004[\001'\001*\000\195\002\240\004\228\002\141\000\157\002\244\000\253\001A\000\205\006I\001\175\003\000\002[\001\176\001\177\004\157\001\178\001\175\005\166\002t\001\176\001\177\0074\001\178\001;\007\031\007}\001 \000\249\0078\003O\000\253\001\017\001'\001*\001\179\001\180\0075\001\181\001\182\001\187\004\193\001\179\003R\000\199\001\181\001\182\001\187\007$\004\175\000\157\007&\001 \001/\007+\001A\0008\006\210\001'\001:\002U\000\204\007 \000\253\007-\002\\\002\242\002\245\004t\002\251\001>\000\165\007!\007i\002C\003\001\000\157\001\218\002\247\002\141\004\193\002\244\000\253\007.\007\026\002\135\002h\002\136\002\137\001\177\005\216\002\138\006\128\004[\004\207\004\206\004\208\002h\0074\007J\b7\b8\003\003\002\213\b:\005\217\004\178\003\000\007\029\005\224\000\221\000\185\002\214\0075\007A\001;\001\188\002u\007\030\b<\000\253\006P\006Q\001\188\007$\005!\002\240\007&\002u\001\189\007+\000\253\000\253\006B\004\206\004\208\001\189\006a\000\225\000\253\007-\006Z\004\233\002\245\001/\002\251\001A\007\157\003S\003T\007\031\003\001\004\255\001\218\002\247\002h\004[\004\129\001\177\007.\007\026\002\135\001 \002\136\002\137\001\177\bK\002\138\001'\001:\003\000\007\127\003\176\0018\003U\000\253\001\017\bC\003\003\002\213\bD\002v\005\146\002l\007\029\000\253\002u\007 \002\214\000\253\003\163\002\242\002v\001\208\007\030\bL\000\165\007!\000\192\002C\001\208\001\217\002\240\001\218\002\141\004\179\002\244\000\253\001\217\000\222\001\218\001\175\003\193\002F\001\176\001\177\005#\001\178\001\175\004U\b?\001\176\001\177\002J\001\178\001;\007\031\002N\000\231\001'\000\165\003O\0026\002C\006\130\001\205\001\179\001\216\0075\001\181\001\182\001\187\000\233\001\179\003R\000\197\001\181\001\182\001\187\007$\002v\006\163\007&\001 \007\193\007+\007}\000\240\001/\001'\001:\006\t\004\178\007 \005\141\007-\006\165\002\242\002\245\002Z\002\251\005_\002O\007!\000\253\001'\003\001\000\157\001\218\002\247\002\141\0008\002\244\000\253\007.\007\026\002\135\0018\002\136\002\137\001\177\000\241\002\138\004[\001 \bP\000\157\003\163\002h\007\196\001'\001*\000\157\003\003\002\213\007\027\007>\003\000\000\249\007\029\000\157\000\253\001\017\002\214\0075\000\244\001;\001\188\007q\007\030\0070\006\246\002\005\000\247\001\188\007$\002w\002\240\007&\002u\001\189\007+\000\253\000\253\000\157\002I\006\011\001\189\001\004\007U\000\253\007-\000\246\007[\002\245\001\218\002\251\001A\001\021\003S\003V\007\031\003\001\001\003\001\218\002\247\007\000\005\216\001\142\000\157\007.\007\026\002\135\001 \002\136\002\137\001\177\001 \002\138\001'\001:\005\189\005\217\001'\006\014\003U\005\218\001\160\bC\003\003\002\213\bD\001\025\000\157\007\003\007\029\0035\001\177\007 \002\214\006I\000\157\002\242\002v\001\208\007\030\bG\006\135\007!\001\140\007\005\001\208\001\217\002\240\001\218\002\141\000\157\002\244\000\253\001\217\001 \001\218\0008\007\199\007\200\001/\001'\001*\0014\002\135\001\028\002\136\002\137\001\177\0074\002\138\000\157\007\031\001.\007\006\006\015\007a\007b\006Z\004\233\007\210\006\222\002\213\001R\0075\007c\007d\001R\003\163\0018\005\217\002\214\006\020\001 \006\017\007$\007e\004\233\007&\001'\001:\007+\004\251\004\193\003\231\002\240\001A\000\253\001\017\007 \002s\007-\000\157\002\242\002\245\003\007\002\251\005n\005\216\007!\001V\001\164\003\001\001'\001\218\002\247\002\141\001Y\002\244\000\253\007.\007\026\002\135\005\217\002\136\002\137\001\177\005\223\002\138\000\249\001\196\bJ\000\253\000\254\003\248\007\244\001 \006P\006Q\003\003\002\213\007\027\001'\001*\006\139\007\029\006V\004\206\004\208\002\214\0075\000\165\005\"\006Y\005\169\007\030\007:\006Z\004\233\001 \002\242\007$\006\215\002\240\007&\001'\001:\007+\000\249\003\155\001\177\000\253\000\254\002\141\002&\002\244\000\253\007-\003\163\000\157\002\245\001?\002\251\005\240\007\199\007\200\002(\007\031\003\001\007\007\001\218\002\247\0022\006\217\001\136\007\215\007.\006 \000\157\005\216\002s\006\215\002J\004\193\006Z\004\233\002N\002\248\001'\001/\005\236\006\218\0011\002/\005\217\003\003\006\220\007\003\005\249\001H\006\243\003\163\001;\002t\007 \002\130\005\238\001\157\002\242\006!\006g\006\"\006\217\007\005\007!\002\133\005A\002\245\0018\004\254\006\250\002\141\000\157\002\244\000\253\003\001\002h\001\218\002\247\005\239\006\218\002O\005&\001A\000\157\006\220\006^\004\206\004\208\006\236\007=\002\000\007\006\006#\003\163\002P\002\149\002\135\002\164\002\136\002\137\001\177\003\003\002\138\002i\0075\000\165\002u\0063\002C\000\253\000\157\003\163\0008\001/\002\213\007$\001F\005\207\007&\001 \000\253\007+\000\157\002\214\005\225\001'\001:\007K\006$\007\245\005\011\007-\000\157\002s\002\245\003\163\002\251\002\240\006%\006&\001\163\006'\003\001\001M\001\218\002\247\0022\001 \001\167\007B\007.\001\254\002t\001'\001:\007\003\002J\003\163\001/\001\195\002N\0011\001'\000\157\001\144\000\157\006h\003\165\001H\003\003\002v\007\005\002\135\003\163\002\136\002\137\001\177\002\135\002\138\002\136\002\137\001\177\001 \002\138\006\222\007*\001\146\0018\001'\001*\002\213\006)\001\214\005\210\006+\005\219\000n\0060\006:\002\214\007\006\001\213\002\242\001P\004q\002O\004;\006d\005_\003\164\001;\000\253\004z\002\240\006i\002\141\002\167\002\244\000\253\002P\002\173\002\135\001 \002\136\002\137\001\177\006e\002\138\001'\001:\002\004\005\242\000\165\003\163\006=\002C\001F\002h\004\135\002\213\0054\001A\000\249\003\163\001S\000\253\000\254\005\250\002\214\002\248\002\026\002\199\001 \001\133\002\205\b\004\002t\001 \001'\001:\001L\002\024\002\240\001'\001:\002\150\001/\001 \002u\0011\004\243\000\253\000n\001'\001:\006\215\001H\002h\002\242\002\245\007g\002\251\001\218\002\140\000\157\001;\0033\003\001\000\157\001\218\002\247\002\141\0059\002\244\000\253\0018\004~\004\178\002\244\000\253\001\017\005G\005\219\002 \b\006\004\162\006\217\006/\002u\004\161\003\163\000\253\004\188\004\233\003\003\006I\001C\007^\005\219\000\157\001/\003\163\000\157\001P\006\218\002\248\004\241\002\242\004\167\006\220\001;\004\182\002v\006\227\006\b\002\135\004t\002\136\002\137\001\177\002\141\002\138\002\244\000\253\001F\004\200\001\171\004\234\004\202\004\178\007_\004\160\004\211\002\213\000\157\002\245\002%\002\251\007\188\007`\002\245\001A\002\214\003\001\001S\001\218\002\247\002+\002\246\007N\001\218\002\247\002v\001 \002\248\001 \002\240\000\157\002I\001'\001*\001'\001:\002\135\004\239\002\136\002\137\001\177\002_\002\138\003\003\005M\001\177\003\163\007n\005/\000\157\001/\002<\000\157\0011\002\213\004\230\002>\002\245\004\235\002\251\001H\005\004\005$\002\214\005*\003\001\000\157\001\218\002\247\000\157\005\016\0051\002\135\002M\002\136\002\137\001\177\002\240\002\138\0018\006P\006Q\001 \007\207\001P\005\210\0057\005>\001'\001:\002\213\001;\003\003\003\163\002\242\006R\006b\005r\003\163\002\214\006Z\004\233\0022\001'\005\212\002d\004\249\002\141\001 \002\244\000\253\b\016\002J\002\240\001'\001:\002N\002^\001'\002h\0055\003\163\001A\000\157\0022\001S\000\157\002a\001F\000\157\000\157\004\193\000\157\005L\002J\005[\006 \004\143\002N\000\157\001'\002\248\002\242\003\163\004\178\001;\002h\b\017\005c\003\163\002u\004\216\005f\000\253\000\157\002\141\001 \002\244\000\253\001 \004\139\002O\001'\001:\002\129\001'\001:\007r\006!\007\230\006\"\002\245\005:\002\251\004\170\002P\004\217\002u\002\242\003\001\000\253\001\218\002\247\002O\007\183\004\206\004\208\003\163\002\132\002\248\003\163\002\141\001 \002\244\000\253\007\197\001/\002P\001'\001:\007_\000\157\006#\000\157\005m\001/\003\003\001\175\006\t\007`\002\014\001\177\002\148\001\178\002v\001P\000\157\007\211\003\163\002\245\000\157\002\251\001;\005?\003\163\002\248\005\215\003\001\007\198\001\218\002\247\002\163\001\179\002\158\0018\001\181\001\182\001\187\006$\002\166\002\135\002v\002\136\002\137\001\177\003\163\002\138\005q\006%\006&\007\198\006'\002\172\001A\003\003\002\245\001S\002\251\002\213\0022\005w\005W\0023\003\001\005d\001\218\002\247\002\214\003\163\002J\005\\\004\233\000\157\002N\004\240\001'\006h\005}\0041\003\157\003\158\002\240\002\135\006\011\002\136\002\137\001\177\005\129\002\138\002\191\003\003\003\163\005g\001'\002\185\005\137\001/\003\163\005o\0011\002\213\006)\007\232\002\188\006+\001 \001H\0060\006:\002\214\005\156\001'\001:\001\206\001 \000\157\004\159\006d\002O\005s\001'\006\014\002\194\002\240\002\198\0018\001\189\005\161\000\157\000\253\002\204\002\135\002P\002\136\002\137\001\177\006e\002\138\005\157\004\233\005\221\005\174\005\130\000\253\002\226\000\157\002\242\006 \003\163\002\213\003\163\005\180\003\163\005\191\006F\004\233\0044\0049\002\214\002\141\005\202\002\244\000\253\000\157\003\166\005\147\0038\0008\001;\004\153\003\163\005\151\002\240\001/\001F\005\220\001`\006\015\000\157\006!\007\212\006\"\003\163\001a\006\205\007Y\004\233\000\253\002\242\005\206\001\208\003B\005\217\002\248\006\019\000\157\006\017\003\163\001\209\004\023\001\218\002\141\0018\002\244\000\253\001 \003\163\003\163\001A\000\157\005\227\001'\001:\006#\002\135\005\244\002\136\002\137\001\177\000\157\002\138\000\157\005\200\002\245\005\232\002\251\005\237\003A\000\157\005\254\006\023\003\001\002\213\001\218\002\247\002\248\002\135\002\242\002\136\002\137\001\177\002\214\002\138\000\157\006\021\006-\003m\003z\004\132\006$\002\141\001F\002\244\000\253\002\213\002\240\006\029\000\157\003\003\006%\006&\001P\006'\002\214\0062\002\245\001\175\002\251\001;\001\176\001\177\006*\001\178\003\001\004\146\001\218\002\247\002\240\000\157\003\156\0067\006N\001 \000\157\002\248\006<\006H\006h\001'\001:\003\163\001\179\001\197\004\012\001\181\001\182\001\187\000\157\000\157\001A\003\003\006\\\001\139\002\135\004\020\002\136\002\137\001\177\003\163\002\138\004Z\006l\006)\000\157\002\245\006+\004\156\004'\0060\006:\002\242\002\213\003\001\006s\001\218\002\247\006w\006\148\006d\003\163\002\214\004m\000\157\002\141\006\170\002\244\000\253\0040\001\198\004w\001\199\002\169\002\242\006\188\002\240\001;\004\141\006e\006\229\003\003\002h\000\253\004\166\000\157\000\157\002\141\006\197\002\244\000\253\002\135\004\168\002\136\002\137\001\177\006\129\002\138\006\248\002\248\003\163\000\157\006\193\000\249\001\206\006\232\000\253\000\254\001A\002\213\004\174\000\157\006\198\002u\006\164\004\181\000\253\001\189\002\214\006\228\000\253\002\248\004\229\000\157\002h\004+\000\157\000\157\004*\002\245\003\163\002\251\002\240\003\163\006\174\006\190\006\215\003\001\006\204\001\218\002\247\002\242\002\135\000\157\002\136\002\137\001\177\006\212\002\138\006\253\003\163\002\245\005\005\004\149\002\141\002u\002\244\000\253\000\253\003\001\002\213\001\218\002\247\007\018\003\003\007(\000\157\006\217\0022\002\214\000\157\002H\001/\000\157\006\201\0017\004 \002v\002J\007\\\000\157\001\208\002N\002\240\001'\006\218\003\003\000\157\002\248\001\209\006\220\001\218\001/\003\163\006\224\001w\002\135\002\242\002\136\002\137\001\177\0018\002\138\003\163\006\235\004\237\000\157\006\247\004\244\003\163\002\141\005\003\002\244\000\253\002\213\000\157\003\163\000\157\002\245\002v\002\251\0018\005\014\002\214\006\251\0050\003\001\002O\001\218\002\247\004\017\000\157\002\135\000\157\002\136\002\137\001\177\002\240\002\138\000\249\003\163\002P\000\253\000\254\002\248\003\163\003\163\000\157\002\242\003\163\002\213\005)\002\135\003\003\002\136\002\137\001\177\003\163\002\138\002\214\007h\002\141\005+\002\244\000\253\000\249\004\t\006\255\000\253\000\254\002\213\007x\006\215\002\240\002\245\007z\002\251\007\004\005.\002\214\005=\001 \003\001\007\016\001\218\002\247\004\b\001'\001:\0053\007\023\005<\003\163\002\240\003\163\002\248\0022\0058\006\215\002R\005;\001 \002\242\006\217\003\163\005K\002J\001'\001:\003\003\002N\005V\001'\001/\007%\002\141\006\t\002\244\000\253\0071\007;\006\218\003\163\007m\003\163\002\245\006\220\002\251\000\157\006\217\006\221\007\192\005U\003\001\005Z\001\218\002\247\005e\002\242\000\157\005p\005l\0018\000\157\001;\005|\005v\006\218\001/\002\248\005x\002\141\006\220\002\244\000\253\002O\006\231\005\144\002\242\002\135\003\003\002\136\002\137\001\177\001;\002\138\007\206\005\132\007\218\002P\005\143\002\141\005\138\002\244\000\253\001A\005\142\002\213\b=\002\245\004\211\002\251\002h\005\155\005\253\002\248\002\214\003\001\005\160\001\218\002\247\006\011\005\163\002h\005\170\001A\bH\004\000\bM\005\178\002\240\005\185\005\196\005\252\005\245\002\248\005\246\005\251\005\255\006\000\005%\006\031\006\024\002u\003\003\002\245\000\253\002\251\006\025\006\030\006,\007)\001 \003\001\002u\001\218\002\247\000\253\001'\006\014\0069\0065\0066\0068\006c\002\245\006G\002\251\006K\006M\006O\006[\006k\003\001\006m\001\218\002\247\006n\006t\002\135\003\003\002\136\002\137\001\177\006y\002\138\006}\001 \006\143\006\150\006\154\006\178\006\199\001'\001:\002\242\006\223\002\213\006\233\002\135\003\003\002\136\002\137\001\177\007\025\002\138\002\214\002v\002\141\007\019\002\244\000\253\007\020\002\237\007\024\006\015\007'\002\213\002v\007,\002\240\002\135\007W\002\136\002\137\001\177\002\214\002\138\007k\007l\005\217\007p\006\018\002\250\006\017\007\191\007\195\007\205\007\209\002\213\002\240\001\175\002\248\b'\003j\001\177\001A\001\178\002\214\b/\001;\000\000\000\000\000\000\000\000\003\t\004\221\000\000\000\000\000\000\000\000\000\000\002\240\000\000\000\000\000\000\003\136\001\197\000\000\001\181\001\182\001\187\002\245\000\000\003\182\000\000\000\000\000\000\000\000\000\000\003\001\004\224\001\218\002\247\000\000\002\242\000\000\000\000\002\135\000\000\002\136\002\137\001\177\000\000\002\138\000\000\000\000\000\000\002\141\000\000\002\244\000\253\000\000\000\000\000\000\002\242\002\213\003\003\000\000\000\000\000\000\000\000\003\141\003\157\003\158\002\214\000\000\000\000\002\141\000\000\002\244\000\253\003\b\000\000\000\000\000\000\000\000\002\242\000\000\002\240\000\000\000\000\002\248\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\141\000\000\002\244\000\253\000\000\000\000\000\000\001\206\000\000\000\000\000\000\000\000\002\248\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\189\000\000\002\245\000\253\002\251\000\000\000\000\000\000\000\000\000\000\003\001\000\000\001\218\002\247\002\248\000\000\001/\000\000\000\000\006\t\000\000\000\000\002\245\000\000\002\251\000\249\000\000\000\000\000\253\000\254\003\001\000\000\001\218\002\247\002\242\003\161\003\162\003\003\000\000\000\000\000\000\000\000\000\000\000\000\002\245\0018\002\251\002\141\000\000\002\244\000\253\000\000\003\001\000\000\001\218\002\247\000\000\003\003\006\215\002\135\000\000\002\136\002\137\001\177\001\208\002\138\000\000\001/\0022\000\000\001_\002T\001\209\000\000\001\218\000\000\000\000\002\213\002J\003\003\000\000\002\248\002N\000\000\001'\001/\002\214\000\000\001q\006\217\000\000\000\000\000\000\003N\006\011\000\000\0018\000\000\000\000\000\000\002\240\000\000\002\135\000\000\002\136\002\137\001\177\006\218\002\138\000\000\000\000\002\245\006\220\002\251\0018\000\000\006\249\000\000\000\000\003\001\002\213\001\218\002\247\000\000\000\000\001 \000\000\002O\000\000\002\214\000\000\001'\006\014\000\000\000\000\000\000\003Q\000\000\000\000\000\000\000\000\002P\000\000\002\240\000\000\002\135\003\003\002\136\002\137\001\177\002\135\002\138\002\136\002\137\001\177\000\000\002\138\0022\000\000\000\000\002p\000\000\000\000\002\213\000\000\002\242\000\000\002J\002\213\000\000\000\000\002N\002\214\001'\000\000\000\000\001 \002\214\002\141\003e\002\244\000\253\001'\001:\003h\000\000\002\240\000\000\006\015\000\000\000\000\002\240\000\000\002\135\001 \002\136\002\137\001\177\000\000\002\138\001'\001:\000\000\005\217\000\000\006\016\000\000\006\017\002\242\000\000\000\249\002\213\002\248\000\253\000\254\000\000\002O\000\000\000\000\001A\002\214\002\141\000\000\002\244\000\253\000\000\000\000\003p\000\000\000\000\002P\000\000\000\000\000\000\002\240\000\000\000\000\000\000\000\000\001;\000\000\000\000\002\245\006\215\002\251\000\000\000\000\000\000\000\000\000\000\003\001\002\242\001\218\002\247\000\000\002\248\002\242\001;\000\000\000\000\000\000\000\000\000\000\000\000\002\141\000\000\002\244\000\253\000\000\002\141\001A\002\244\000\253\000\000\006\217\000\000\000\000\003\003\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\245\000\000\002\251\001A\000\000\000\000\000\000\006\218\003\001\000\000\001\218\002\247\006\220\002\248\002\242\000\000\007\012\000\000\002\248\000\000\000\000\000\000\0022\000\000\000\000\002\153\001/\002\141\001/\002\244\000\253\001n\002J\000\000\000\000\003\003\002N\000\000\001'\000\000\000\000\000\000\000\000\002\245\000\000\002\251\000\000\001/\002\245\000\000\002\251\003\001\000\000\001\218\002\247\000\000\003\001\0018\001\218\002\247\000\000\002\248\002\135\000\000\002\136\002\137\001\177\000\000\002\138\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001/\000\000\003\003\001t\002\213\002O\002\135\003\003\002\136\002\137\001\177\000\000\002\138\002\214\000\000\002\245\000\000\002\251\000\000\002P\003s\000\000\000\000\003\001\002\213\001\218\002\247\002\240\002\135\0018\002\136\002\137\001\177\002\214\002\138\000\000\000\000\000\000\000\000\000\000\003~\000\000\000\000\000\000\000\000\001\175\002\213\002\240\001\176\001\177\003\003\001\178\000\000\000\000\002\135\002\214\002\136\002\137\001\177\001 \002\138\001 \003\131\000\000\000\000\001'\001:\001'\001:\002\240\001\179\001\197\002\213\001\181\001\182\001\187\000\000\000\000\000\000\000\000\001 \002\214\000\000\000\000\000\000\000\000\001'\001:\003\134\000\000\000\000\000\000\002\242\000\000\000\000\002\240\002\135\000\000\002\136\002\137\001\177\000\000\002\138\000\000\000\000\002\141\000\000\002\244\000\253\001 \000\000\000\000\002\242\000\000\002\213\001'\001:\001\198\000\000\001\199\002\178\000\000\001;\002\214\001;\002\141\000\000\002\244\000\253\000\000\003\140\000\000\000\000\000\000\002\242\000\000\000\000\002\240\000\000\002\248\000\000\000\000\000\000\001;\000\000\000\000\000\000\002\141\000\000\002\244\000\253\001\206\000\000\004\210\000\000\001A\000\000\000\000\000\000\002\248\002\242\000\000\000\000\000\000\001\189\000\000\000\000\000\253\000\000\002\245\000\000\002\251\001;\002\141\004\215\002\244\000\253\003\001\000\000\001\218\002\247\002\248\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\245\000\000\002\251\000\000\000\000\000\000\000\000\002\187\003\001\000\000\001\218\002\247\000\000\002\242\001A\003\003\000\000\000\000\002\248\000\000\000\000\001/\002\245\000\000\002\251\000\000\002\141\000\000\002\244\000\253\003\001\000\000\001\218\002\247\002\135\003\003\002\136\002\137\001\177\001\208\002\138\000\000\000\000\000\000\000\000\000\000\000\000\001\209\002\245\001\218\002\251\000\000\002\213\000\000\000\000\000\000\003\001\003\003\001\218\002\247\002\248\002\214\000\000\000\000\000\000\000\000\000\000\000\000\003\143\001/\002\135\000\000\002\136\002\137\001\177\002\240\002\138\000\000\000\000\0022\000\000\000\000\004\172\003\003\000\000\000\000\000\000\000\000\002\213\002J\002\245\000\000\002\251\002N\001/\001'\000\000\002\214\003\001\000\000\001\218\002\247\000\000\000\000\003\169\000\000\000\000\0022\000\000\000\000\005\t\002\240\000\000\000\000\000\000\000\000\002\135\002J\002\136\002\137\001\177\002N\002\138\001'\000\000\003\003\000\000\000\000\000\000\000\000\001 \000\000\000\000\000\000\002\213\000\000\001'\001:\002O\000\000\002\242\000\000\000\000\002\214\000\000\000\000\000\000\000\000\000\000\000\000\003\173\000\000\002P\002\141\000\000\002\244\000\253\002\240\000\000\002\135\000\000\002\136\002\137\001\177\000\000\002\138\002O\000\000\002\135\000\000\002\136\002\137\001\177\000\000\002\138\000\000\002\242\002\213\001 \000\000\002P\000\000\000\000\000\000\001'\001:\002\214\002\248\000\000\002\141\000\000\002\244\000\253\001;\000\000\003\251\000\000\003\179\000\000\000\000\002\240\000\000\002\135\001 \002\136\002\137\001\177\000\000\002\138\001'\001:\000\000\000\000\000\000\000\000\000\000\000\000\002\245\000\000\002\251\002\213\000\000\002\242\002\248\004\214\003\001\000\000\001\218\002\247\002\214\000\000\000\000\000\000\000\000\000\000\002\141\000\000\002\244\000\253\000\000\003\184\001;\000\000\002\240\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\003\002\245\000\000\002\251\001/\000\000\000\000\001z\000\000\003\001\000\000\001\218\002\247\002\242\001;\001/\000\000\002\248\006\t\000\000\004\223\000\000\002\140\000\000\000\000\000\000\002\141\000\000\002\244\000\253\000\000\000\000\000\000\0018\000\000\002\141\003\003\002\244\000\253\000\000\000\000\000\000\000\000\000\000\0018\004\227\000\000\002\245\002\135\002\251\002\136\002\137\001\177\000\000\002\138\003\001\002\242\001\218\002\247\000\000\002\248\000\000\000\000\000\000\000\000\000\000\002\213\000\000\000\000\002\141\000\000\002\244\000\253\000\000\003\253\002\214\000\000\002\135\000\000\002\136\002\137\001\177\003\003\002\138\000\000\000\000\003\186\000\000\000\000\002\240\002\245\000\000\003\182\006\011\000\000\002\213\000\000\000\000\003\001\002\245\001\218\002\247\000\000\002\248\002\214\000\000\000\000\002\246\000\000\001\218\002\247\000\000\000\000\001 \000\000\003\190\000\000\000\000\002\240\001'\001:\000\000\000\000\000\000\001 \003\003\000\000\000\000\000\000\000\000\001'\006\014\000\000\002\245\002\135\003\182\002\136\002\137\001\177\000\000\002\138\003\001\000\000\001\218\002\247\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\213\002\135\002\242\002\136\002\137\001\177\000\000\002\138\000\000\002\214\000\000\0022\000\000\000\000\005\024\002\141\003\003\002\244\000\253\002\213\003\198\002J\000\000\002\240\001;\002N\000\000\001'\002\214\000\000\002\135\002\242\002\136\002\137\001\177\006\015\002\138\000\000\000\000\003\204\000\000\000\000\002\240\000\000\002\141\000\000\002\244\000\253\002\213\002\248\005\217\000\000\006\028\0022\006\017\001A\005\028\002\214\002\135\000\000\002\136\002\137\001\177\002J\002\138\000\000\001A\002N\003\210\001'\002O\002\240\000\000\000\000\000\000\000\000\002\213\000\000\002\248\002\245\000\000\003\182\000\000\000\000\002P\002\214\000\000\003\001\002\242\001\218\002\247\000\000\003\217\000\000\000\000\000\000\000\000\000\000\000\000\002\240\000\000\002\141\000\000\002\244\000\253\000\000\000\000\002\242\002\245\000\000\003\182\000\000\002O\000\000\003\003\000\000\003\001\000\000\001\218\002\247\002\141\000\000\002\244\000\253\000\000\000\000\002P\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\248\002\242\000\000\000\000\000\000\000\000\000\000\000\000\003\003\002\135\000\000\002\136\002\137\001\177\002\141\002\138\002\244\000\253\000\000\002\248\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\213\000\000\002\242\002\245\000\000\003\182\000\000\000\000\000\000\002\214\000\000\003\001\000\000\001\218\002\247\002\141\003\222\002\244\000\253\000\000\000\000\002\248\002\245\002\240\003\182\000\000\000\000\000\000\000\000\000\000\003\001\000\000\001\218\002\247\000\000\000\000\000\000\002\135\003\003\002\136\002\137\001\177\002\135\002\138\002\136\002\137\001\177\000\000\002\138\002\248\000\000\002\245\000\000\003\182\000\000\002\213\000\000\003\003\000\000\003\001\002\213\001\218\002\247\000\000\002\214\000\000\000\000\000\000\000\000\002\214\000\000\003\227\000\000\000\000\000\000\000\000\000\000\000\000\002\240\002\245\003\234\002\251\000\000\002\240\000\000\000\000\003\003\003\001\002\242\001\218\002\247\002\135\000\000\002\136\002\137\001\177\000\000\002\138\000\000\000\000\000\000\002\141\000\000\002\244\000\253\000\000\000\000\000\000\000\000\002\213\000\000\000\000\000\000\000\000\003\003\000\000\000\000\000\000\002\214\000\000\000\000\000\000\000\000\001/\000\000\000\000\006\005\000\000\000\000\003\239\000\000\000\000\002\240\000\000\000\000\002\248\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\242\000\000\000\000\000\000\000\000\002\242\000\000\000\000\002\135\0018\002\136\002\137\001\177\002\141\002\138\002\244\000\253\000\000\002\141\000\000\002\244\000\253\002\245\000\000\002\251\000\000\002\213\000\000\000\000\000\000\003\001\000\000\001\218\002\247\000\000\002\214\000\000\002\135\000\000\002\136\002\137\001\177\000\000\002\138\000\000\000\000\003\244\002\248\000\000\002\240\000\000\000\000\002\248\000\000\002\242\002\213\002\135\003\003\002\136\002\137\001\177\000\000\002\138\000\000\002\214\000\000\000\000\002\141\000\000\002\244\000\253\000\000\000\000\000\000\002\213\004\003\000\000\002\245\002\240\002\251\000\000\000\000\002\245\002\214\003\182\003\001\000\000\001\218\002\247\001 \003\001\000\000\001\218\002\247\004\006\001'\001:\002\240\000\000\001/\000\000\002\248\006\012\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\003\000\000\002\242\000\000\000\000\003\003\000\000\000\000\000\000\000\000\0022\000\000\000\000\005\031\000\000\002\141\0018\002\244\000\253\002\245\002J\003\182\000\000\000\000\002N\000\000\001'\003\001\000\000\001\218\002\247\002\242\000\000\002\135\000\000\002\136\002\137\001\177\007\026\002\138\001;\000\000\000\000\000\000\002\141\000\000\002\244\000\253\000\000\002\248\002\242\002\213\000\000\000\000\003\003\bC\000\000\000\000\bD\000\000\002\214\000\000\007\029\002\141\000\000\002\244\000\253\004\r\000\000\002O\000\000\001A\007\030\000\000\002\240\000\000\000\000\000\000\002\248\002\245\000\000\003\182\000\000\002P\000\000\000\000\000\000\003\001\000\000\001\218\002\247\000\000\000\000\000\000\000\000\000\000\001 \002\248\000\000\000\000\000\000\000\000\001'\001:\007\031\000\000\000\000\000\000\002\245\000\000\003\182\000\000\000\000\000\000\003\003\000\000\003\001\000\000\001\218\002\247\0022\000\000\002\135\005-\002\136\002\137\001\177\002\245\002\138\003\182\002J\000\000\000\000\000\000\002N\003\001\001'\001\218\002\247\002\242\002\213\007 \002\135\003\003\002\136\002\137\001\177\000\000\002\138\002\214\000\000\007!\002\141\000\000\002\244\000\253\004\015\000\000\000\000\001;\002\213\000\000\003\003\002\240\002\135\000\000\002\136\002\137\001\177\002\214\002\138\000\000\001/\bF\000\000\007\137\004\025\000\000\000\000\002O\000\000\000\000\002\213\002\240\000\000\000\000\002\248\000\000\000\000\000\000\001A\002\214\007#\002P\000\000\000\000\000\000\000\000\004\"\000\000\000\000\0018\000\000\007$\000\000\002\240\007&\0022\006 \007+\005z\000\000\000\000\000\000\000\000\000\000\002\245\002J\002\251\007-\000\000\002N\000\000\001'\003\001\000\000\001\218\002\247\002\242\000\000\000\000\002\135\000\000\002\136\002\137\001\177\000\000\002\138\007.\000\000\006!\002\141\006\"\002\244\000\253\000\000\000\000\000\000\002\242\002\213\002\135\003\003\002\136\002\137\001\177\000\000\002\138\000\000\002\214\000\000\000\000\002\141\000\000\002\244\000\253\004%\002O\000\000\002\213\000\000\002\242\000\000\002\240\000\000\006#\002\248\000\000\002\214\000\000\000\000\002P\001 \000\000\002\141\0043\002\244\000\253\001'\001:\001/\000\000\002\240\001o\000\000\000\000\002\248\000\000\000\000\000\000\001p\000\000\000\000\000\000\000\000\000\000\002\245\000\000\002\251\000\000\000\000\006$\000\000\000\000\003\001\000\000\001\218\002\247\002\248\0018\000\000\006%\006&\000\000\006'\000\000\002\245\000\000\002\251\000\000\000\000\000\000\000\000\000\000\003\001\000\000\001\218\002\247\002\242\000\000\000\000\003\003\000\000\000\000\000\000\001;\000\000\000\000\002\245\006f\002\251\002\141\000\000\002\244\000\253\000\000\003\001\002\242\001\218\002\247\002\135\003\003\002\136\002\137\001\177\000\000\002\138\000\000\001F\000\000\002\141\000\000\002\244\000\253\006)\000\000\001A\006+\002\213\000\000\0060\006:\000\000\003\003\000\000\002\248\000\000\002\214\000\000\002\135\006d\002\136\002\137\001\177\0046\002\138\000\000\000\000\000\000\001 \000\000\002\240\000\000\000\000\002\248\001'\001:\002\213\000\000\006e\000\000\000\000\000\000\000\000\000\000\002\245\002\214\002\251\000\000\000\000\000\000\000\000\000\000\003\001\000\000\001\218\002\247\004@\000\000\000\000\002\240\000\000\001/\000\000\002\245\007\151\002\251\000\000\000\000\000\000\000\000\000\000\003\001\000\000\001\218\002\247\000\000\000\000\000\000\002\135\003\003\002\136\002\137\001\177\000\000\002\138\000\000\000\000\000\000\000\000\000\000\0018\001;\000\000\000\000\000\000\002\242\002\213\000\000\003\003\000\000\002\135\000\000\002\136\002\137\001\177\002\214\002\138\000\000\002\141\000\000\002\244\000\253\000\000\000\000\000\000\000\000\004^\000\000\002\213\002\240\000\000\000\000\001A\000\000\002\242\000\000\002\135\002\214\002\136\002\137\001\177\000\000\002\138\000\000\000\000\000\000\000\000\002\141\004f\002\244\000\253\002\240\002\248\000\000\002\213\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\214\000\000\000\000\000\000\000\000\000\000\000\000\004\164\000\000\000\000\000\000\000\000\0022\000\000\002\240\005\134\000\000\001 \002\248\002\245\000\000\002\251\002J\001'\001:\000\000\002N\003\001\001'\001\218\002\247\002\242\000\000\002\135\000\000\002\136\002\137\001\177\000\000\002\138\000\000\000\000\000\000\000\000\002\141\000\000\002\244\000\253\002\245\000\000\004C\002\213\000\000\002\242\003\003\000\000\003\001\000\000\001\218\002\247\002\214\000\000\000\000\000\000\000\000\000\000\002\141\004\177\002\244\000\253\000\000\002O\001/\000\000\002\240\007\148\000\000\000\000\002\248\002\242\001;\000\000\000\000\003\003\000\000\002P\000\000\002\135\000\000\002\136\002\137\001\177\002\141\002\138\002\244\000\253\000\000\000\000\000\000\000\000\002\248\0018\000\000\000\000\000\000\002\213\000\000\000\000\002\245\000\000\004a\001A\000\000\000\000\002\214\000\000\003\001\000\000\001\218\002\247\000\000\004\232\000\000\000\000\000\000\000\000\002\248\000\000\002\240\000\000\002\245\000\000\004i\000\000\000\000\000\000\000\000\000\000\003\001\002\242\001\218\002\247\000\000\003\003\002\135\000\000\002\136\002\137\001\177\000\000\002\138\000\000\002\141\000\000\002\244\000\253\002\245\000\000\002\251\000\000\000\000\000\000\002\213\000\000\003\001\003\003\001\218\002\247\000\000\000\000\001\175\002\214\000\000\003j\001\177\000\000\001\178\000\000\005E\000\000\000\000\001 \000\000\000\000\000\000\002\240\002\248\001'\001:\000\000\000\000\003\003\000\000\002\242\000\000\003\136\001\197\000\000\001\181\001\182\001\187\000\000\000\000\000\000\000\000\000\000\002\141\000\000\002\244\000\253\000\000\002\135\000\000\002\136\002\137\001\177\002\245\002\138\002\251\000\000\000\000\000\000\000\000\000\000\003\001\000\000\001\218\002\247\001\175\000\000\000\000\001\176\001\177\000\000\001\178\000\000\000\000\000\000\004\130\000\000\002\248\003\141\003\157\003\158\001;\0022\000\000\000\000\005\140\000\000\002\242\003\003\000\000\001\179\001\197\002J\001\181\001\182\001\187\002N\000\000\001'\000\000\002\141\001/\002\244\000\253\0011\000\000\000\000\002\245\000\000\002\251\000\000\001H\001A\001\206\000\000\003\001\005\018\001\218\002\247\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\189\000\000\000\000\000\253\0018\000\000\000\000\000\000\002\248\000\000\000\000\001\198\000\000\001\199\002\169\002O\003\003\000\000\000\000\000\000\000\000\000\000\000\000\000\000\006I\000\000\000\000\000\000\002\140\002P\001/\000\000\000\000\006\t\001/\003\161\004\238\007\154\002\245\001/\002\251\002\141\007\160\002\244\000\253\001\206\003\001\000\000\001\218\002\247\000\000\000\000\000\000\001F\000\000\000\000\000\000\000\000\001\189\0018\000\000\000\253\000\000\0018\001\208\000\000\000\000\006L\0018\004*\000\000\000\000\001\209\003\003\001\218\000\000\002\135\000\000\002\136\002\137\001\177\000\000\002\138\000\000\001 \000\000\000\000\000\000\000\000\000\000\001'\001:\000\000\002\135\002\213\002\136\002\137\001\177\000\000\002\138\000\000\000\000\000\000\002\214\000\000\002\245\000\000\000\000\006\011\000\000\006|\002\213\000\000\002\246\000\000\001\218\002\247\002\240\000\000\000\000\002\214\000\000\001\208\000\000\000\000\000\000\000\000\006\127\000\000\000\000\001\209\000\000\001\218\000\000\002\240\000\000\006P\006Q\000\000\001 \001P\000\000\000\000\001 \000\000\001'\006\014\001;\001 \001'\001:\006R\006b\000\000\001'\001:\006Z\004\233\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\135\000\000\002\136\002\137\001\177\000\000\002\138\000\000\000\000\001A\000\000\000\000\001S\002\242\000\000\000\000\000\000\002\135\002\213\002\136\002\137\001\177\0022\002\138\000\000\005\149\002\141\002\214\002\244\000\253\002\242\000\000\002J\006\015\006\142\002\213\002N\001;\001'\000\000\000\000\002\240\001;\002\141\002\214\002\244\000\253\000\000\005\217\000\000\006\240\006\145\006\017\002\135\000\000\002\136\002\137\001\177\002\240\002\138\002\248\000\000\000\000\000\000\001A\000\000\000\000\000\000\001A\000\000\000\000\002\213\0022\001A\000\000\006.\000\000\002\248\000\000\000\000\002\214\002O\002J\000\000\000\000\000\000\002N\006\158\001'\000\000\002\245\000\000\002\251\000\000\002\240\002P\000\000\000\000\003\001\000\000\001\218\002\247\000\000\000\000\000\000\001/\002\242\002\245\007\169\002\251\002\135\000\000\002\136\002\137\001\177\003\001\002\138\001\218\002\247\002\141\000\000\002\244\000\253\002\242\000\000\003\003\000\000\000\000\002\213\000\000\000\000\002O\000\000\000\000\0018\000\000\002\141\002\214\002\244\000\253\000\000\000\000\003\003\000\000\006\161\002P\002\135\000\000\002\136\002\137\001\177\002\240\002\138\002\248\000\000\000\000\000\000\000\000\000\000\002\242\000\000\000\000\000\000\002\135\002\213\002\136\002\137\001\177\000\000\002\138\002\248\000\000\002\141\002\214\002\244\000\253\000\000\000\000\000\000\000\000\006\182\002\213\000\000\002\245\000\000\002\251\000\000\002\240\000\000\000\000\002\214\003\001\000\000\001\218\002\247\000\000\001/\006\185\001/\006\t\002\245\007\179\002\251\000\000\002\240\000\000\002\248\000\000\003\001\000\000\001\218\002\247\000\000\000\000\001 \000\000\002\242\000\000\003\003\000\000\001'\001:\000\000\000\000\000\000\0018\000\000\0018\000\000\002\141\000\000\002\244\000\253\000\000\000\000\003\003\002\245\000\000\002\251\002\135\000\000\002\136\002\137\001\177\003\001\002\138\001\218\002\247\000\000\000\000\000\000\000\000\002\242\000\000\000\000\000\000\000\000\002\213\000\000\000\000\000\000\000\000\000\000\002\248\000\000\002\141\002\214\002\244\000\253\002\242\000\000\003\003\000\000\006\189\006\011\000\000\000\000\001;\000\000\000\000\002\240\000\000\002\141\000\000\002\244\000\253\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\245\001\175\002\251\000\000\003j\001\177\002\248\001\178\003\001\000\000\001\218\002\247\001 \000\000\001 \001A\000\000\000\000\001'\006\014\001'\001:\000\000\002\248\000\000\000\000\003\136\001\197\000\000\001\181\001\182\001\187\000\000\000\000\000\000\003\003\002\245\000\000\002\251\000\000\000\000\000\000\000\000\000\000\003\001\000\000\001\218\002\247\000\000\000\000\000\000\000\000\002\242\002\245\001\175\002\251\000\000\003j\001\177\000\000\001\178\003\001\000\000\001\218\002\247\002\141\000\000\002\244\000\253\000\000\000\000\003\003\003\141\003\157\003\158\006\015\000\000\001;\000\000\003\136\001\197\000\000\001\181\001\182\001\187\000\000\000\000\000\000\003\003\000\000\005\217\000\000\007\n\000\000\006\017\000\000\000\000\000\000\000\000\002\248\000\000\000\000\000\000\000\000\000\000\000\000\001A\001\206\001A\001/\000\000\000\000\0011\000\000\000\000\000\000\000\000\000\000\000\000\001H\001\189\000\000\000\000\000\253\000\000\003\141\003\157\003\158\000\000\002\245\000\000\002\251\000\000\000\000\000\000\000\000\000\000\003\001\0018\001\218\002\247\000\000\001\175\000\000\000\000\001\176\001\177\002\135\001\178\002\136\002\137\001\177\000\000\002\138\000\000\003\161\006\200\000\000\006I\000\000\001\206\000\000\000\000\000\000\003\003\002\213\000\000\001\179\001\197\000\000\001\181\001\182\001\187\001\189\002\214\000\000\000\253\000\000\000\000\000\000\000\000\007\222\000\000\000\000\001\208\000\000\000\000\001F\002\240\000\000\000\000\000\000\001\209\007Q\001\218\000\000\000\000\000\000\000\000\000\000\000\000\007\190\001/\000\000\000\000\0011\000\000\000\000\003\161\006\234\000\000\000\000\001H\000\000\001\198\000\000\001\199\002\169\001 \000\000\000\000\000\000\000\000\000\000\001'\001:\000\000\000\000\000\000\000\000\001/\0018\000\000\0011\000\000\000\000\000\000\001\208\000\000\000\000\001H\000\000\000\000\000\000\000\000\001\209\000\000\001\218\001\206\000\000\000\000\006I\000\000\002\242\000\000\000\000\000\000\000\000\000\000\0018\000\000\001\189\000\000\000\000\000\253\000\000\002\141\000\000\002\244\000\253\006P\006Q\004*\000\000\001P\000\000\000\000\000\000\000\000\006I\001F\001;\000\000\000\000\000\000\006R\006b\000\000\000\000\000\000\006Z\004\233\000\000\000\000\007\204\002\135\000\000\002\136\002\137\001\177\002\248\002\138\000\000\000\000\000\000\000\000\000\000\000\000\001F\000\000\000\000\001 \001A\002\213\000\000\001S\000\000\001'\001:\000\000\000\000\000\000\002\214\000\000\000\000\001\208\000\000\000\000\000\000\007\224\002\245\000\000\002\251\001\209\000\000\001\218\002\240\000\000\003\001\001 \001\218\002\247\000\000\000\000\000\000\001'\001:\000\000\002\135\000\000\002\136\002\137\001\177\002\135\002\138\002\136\002\137\001\177\000\000\002\138\000\000\000\000\000\000\006P\006Q\003\003\002\213\001P\000\000\000\000\000\000\002\213\000\000\000\000\001;\002\214\000\000\000\000\006R\006b\002\214\000\000\000\000\006Z\004\233\000\000\000\000\000\000\000\000\002\240\000\000\006P\006Q\000\000\002\240\001P\000\000\000\000\000\000\000\000\000\000\002\242\001;\000\000\000\000\001A\007\186\007\187\001S\000\000\000\000\006Z\004\233\000\000\002\141\000\000\002\244\000\253\000\000\000\000\000\000\001\175\000\000\000\000\001\176\001\177\000\000\001\178\000\000\000\000\000\000\000\000\000\000\001A\000\000\000\000\001S\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\179\001\197\002\248\001\181\001\182\001\187\000\000\000\000\002\242\000\000\000\000\002\011\000\000\002\242\006 \000\000\000\000\000\000\000\000\000\000\000\000\002\141\000\000\002\244\000\253\000\000\002\141\000\000\002\244\000\253\000\000\000\000\002\245\001\175\002\251\000\000\001\176\001\177\000\000\001\178\003\001\000\000\001\218\002\247\000\000\000\000\006!\001\198\006\"\001\199\001\251\000\000\000\000\000\000\000\000\002\248\000\000\000\000\001\179\001\197\002\248\001\181\001\182\001\187\000\000\000\000\000\000\003\003\000\000\002\007\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\006#\001\206\000\000\000\000\000\000\002\245\000\000\005\019\000\000\000\000\002\245\000\000\004\248\003\001\001\189\001\218\002\247\000\253\003\001\000\000\001\218\002\247\000\000\000\000\000\000\001\198\001\175\001\199\001\251\001\176\001\177\000\000\001\178\000\000\000\000\001\175\006$\000\000\001\176\001\177\003\003\001\178\000\000\000\000\000\000\003\003\006%\006&\000\000\006'\000\000\001\179\001\197\000\000\001\181\001\182\001\187\000\000\000\000\001\206\001\179\001\197\001\248\001\181\001\182\001\187\000\000\000\000\000\000\000\000\000\000\001\253\001\189\000\000\006(\000\253\000\000\002\135\001\208\002\136\002\137\001\177\000\000\002\138\000\000\000\000\001\209\000\000\001\218\000\000\000\000\000\000\000\000\000\000\000\000\002\213\000\000\000\000\001\198\006)\001\199\001\251\006+\000\000\002\214\0060\006:\001\198\000\000\001\199\001\251\000\000\000\000\000\000\000\000\006d\000\000\000\000\002\240\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\206\000\000\006e\000\000\001\208\000\000\000\000\000\000\000\000\001\206\000\000\000\000\001\209\001\189\001\218\000\000\000\253\000\000\000\000\000\000\000\000\000\000\001\189\000\000\000\000\000\253\000\000\001\175\000\000\000\000\001\176\001\177\000\000\001\178\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\242\001\179\001\197\000\000\001\181\001\182\001\187\000\000\000\000\000\000\000\000\000\000\000\000\002\141\000\000\002\244\000\253\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\208\001\175\000\000\000\000\001\176\001\177\000\000\001\178\001\209\001\208\001\218\000\000\000\000\000\000\000\000\000\000\000\000\001\209\000\000\001\218\000\000\002\248\001\198\000\000\001\199\002\169\001\179\001\197\000\000\001\181\001\182\001\187\000\000\000\000\000\000\000\000\000\000\000\000\001\175\000\000\000\000\001\176\001\177\000\000\001\178\000\000\000\000\000\000\000\000\000\000\000\000\002\245\000\000\004\138\000\000\000\000\001\206\000\000\000\000\003\001\000\000\001\218\002\247\001\179\001\197\000\000\001\181\001\182\001\187\001\189\000\000\000\000\000\253\001\198\000\000\001\199\002\178\000\000\000\000\000\000\004&\002\135\000\000\002\136\002\137\001\177\003\003\002\138\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\135\002\213\002\136\002\137\001\177\000\000\002\138\000\000\000\000\001\206\002\214\000\000\001\198\000\000\001\199\003Z\000\000\000\000\002\213\000\000\000\000\000\000\001\189\000\000\002\240\000\253\002\135\002\214\002\136\002\137\001\177\000\000\002\138\000\000\000\000\001\208\000\000\000\000\000\000\000\000\000n\002\240\000\000\001\209\002\213\001\218\001\206\000\000\000\000\000\000\000\000\000\000\000\000\002\214\002\184\000\000\000\000\000\000\000\000\001\189\000\000\000\000\000\253\000\000\000\000\000\000\000\000\002\240\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\208\000\000\000\000\002\242\000\000\000\000\000\000\000\000\001\209\000\000\001\218\000\000\000\000\000\000\000\000\000\000\002\141\000\000\002\244\000\253\002\242\000\000\002\135\000\000\002\136\002\137\001\177\000\000\002\138\000\000\000\000\000\000\000\000\002\141\000\000\002\244\000\253\001\208\000\000\000\000\002\213\000\000\000\000\000\000\000\000\001\209\002\242\001\218\000\000\002\214\002\248\002\135\000\000\002\136\002\137\001\177\000\000\002\138\000\000\002\141\000\000\002\244\000\253\002\240\000\000\000\000\000\000\002\248\002\135\002\213\002\136\002\137\001\177\000\000\002\138\000\000\000\000\000\000\002\214\000\000\002\245\000\000\003\255\000\000\000\000\000\000\002\213\000\000\003\001\000\000\001\218\002\247\002\240\002\248\000\000\002\214\000\000\002\245\000\000\003\167\000\000\000\000\000\000\000\000\000\000\003\001\000\000\001\218\002\247\002\240\000\000\000\000\000\000\000\000\000\000\003\003\000\000\001/\000\000\000\000\001u\000\000\000\000\002\245\000\000\002\253\000\000\001v\002\242\000\000\000\000\003\001\003\003\001\218\002\247\000\000\000\000\000\000\000\000\000\000\000\000\002\141\000\000\002\244\000\253\000\000\0018\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\242\003\003\002\135\000\000\002\136\002\137\001\177\000\000\002\138\000\000\000\000\000\000\000\000\002\141\000\000\002\244\000\253\002\242\002\248\002\135\002\213\002\136\002\137\001\177\000\000\002\138\000\000\000\000\000\000\002\214\002\141\000\000\002\244\000\253\000\000\000\000\000\000\002\213\001F\000\000\000\000\000\000\000\000\002\240\000\000\000\000\002\214\002\248\002\245\000\000\002\255\000\000\000\000\000\000\000\000\000\000\003\001\000\000\001\218\002\247\002\240\000\000\000\000\000\000\002\248\000\000\000\000\000\000\000\000\001 \000\000\000\000\000\000\000\000\000\000\001'\001:\002\245\000\000\003\004\000\000\000\000\000\000\003\003\000\000\003\001\000\000\001\218\002\247\000\000\000\000\000\000\000\000\000\000\002\245\002\135\003\011\002\136\002\137\001\177\000\000\002\138\003\001\000\000\001\218\002\247\000\000\000\000\002\242\000\000\000\000\000\000\003\003\002\213\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\141\002\214\002\244\000\253\002\242\000\000\000\000\000\000\003\003\000\000\000\000\001;\000\000\000\000\000\000\002\240\000\000\002\141\000\000\002\244\000\253\000\000\002\135\000\000\002\136\002\137\001\177\002\135\002\138\002\136\002\137\001\177\000\000\002\138\002\248\000\000\000\000\000\000\000\000\000\000\002\213\000\000\001A\000\000\000\000\002\213\000\000\000\000\000\000\002\214\000\000\002\248\000\000\000\000\002\214\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\240\002\245\000\000\003\r\000\000\002\240\000\000\000\000\000\000\003\001\000\000\001\218\002\247\000\000\000\000\000\000\000\000\002\242\002\245\002\135\003\015\002\136\002\137\001\177\000\000\002\138\003\001\000\000\001\218\002\247\002\141\000\000\002\244\000\253\000\000\000\000\003\003\002\213\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\214\000\000\002\135\000\000\002\136\002\137\001\177\003\003\002\138\000\000\000\000\000\000\000\000\000\000\002\240\000\000\000\000\000\000\002\248\002\242\002\213\000\000\000\000\000\000\002\242\000\000\000\000\000\000\000\000\002\214\000\000\000\000\002\141\000\000\002\244\000\253\000\000\002\141\000\000\002\244\000\253\000\000\000\000\002\240\000\000\000\000\000\000\000\000\002\245\000\000\003\017\000\000\000\000\000\000\000\000\000\000\003\001\000\000\001\218\002\247\000\000\000\000\000\000\000\000\000\000\000\000\002\248\000\000\000\000\000\000\000\000\002\248\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\242\000\000\000\000\000\000\003\003\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\141\000\000\002\244\000\253\002\245\000\000\003\019\000\000\000\000\002\245\000\000\003\021\003\001\000\000\001\218\002\247\002\242\003\001\000\000\001\218\002\247\000\000\000\000\000\000\002\135\000\000\002\136\002\137\001\177\002\141\002\138\002\244\000\253\000\000\002\248\000\000\000\000\000\000\000\000\003\003\000\000\000\000\002\213\002\135\003\003\002\136\002\137\001\177\000\000\002\138\002\135\002\214\002\136\002\137\001\177\000\000\002\138\000\000\000\000\000\000\000\000\002\213\000\000\002\248\002\245\002\240\003\023\000\000\002\213\000\000\002\214\000\000\003\001\000\000\001\218\002\247\000\000\002\214\000\000\002\135\000\000\002\136\002\137\001\177\002\240\002\138\000\000\000\000\000\000\000\000\000\000\002\240\000\000\002\245\000\000\003\025\000\000\002\213\000\000\003\003\000\000\003\001\000\000\001\218\002\247\000\000\002\214\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\240\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\003\000\000\002\242\000\000\002\135\000\000\002\136\002\137\001\177\000\000\002\138\000\000\000\000\001/\000\000\002\141\001{\002\244\000\253\000\000\000\000\002\242\002\213\001|\000\000\000\000\000\000\000\000\002\242\000\000\000\000\002\214\000\000\000\000\002\141\000\000\002\244\000\253\000\000\000\000\000\000\002\141\0018\002\244\000\253\002\240\000\000\000\000\000\000\002\248\000\000\000\000\000\000\000\000\000\000\000\000\002\135\002\242\002\136\002\137\001\177\000\000\002\138\000\000\000\000\000\000\000\000\000\000\002\248\000\000\002\141\000\000\002\244\000\253\002\213\002\248\000\000\000\000\000\000\002\245\000\000\003\027\000\000\002\214\000\000\000\000\000\000\003\001\000\000\001\218\002\247\001F\000\000\000\000\000\000\000\000\000\000\002\240\002\245\000\000\003\029\000\000\000\000\000\000\002\248\002\245\003\001\003\031\001\218\002\247\002\242\000\000\000\000\003\001\003\003\001\218\002\247\000\000\000\000\000\000\000\000\000\000\001 \002\141\000\000\002\244\000\253\000\000\001'\001:\000\000\000\000\000\000\003\003\002\245\000\000\003!\000\000\000\000\000\000\003\003\000\000\003\001\000\000\001\218\002\247\000\000\002\135\000\000\002\136\002\137\001\177\000\000\002\138\000\000\000\000\000\000\002\248\000\000\000\000\000\000\000\000\002\242\000\000\002\135\002\213\002\136\002\137\001\177\003\003\002\138\000\000\000\000\000\000\002\214\002\141\000\000\002\244\000\253\000\000\000\000\000\000\002\213\000\000\000\000\001;\000\000\002\245\002\240\003#\002\135\002\214\002\136\002\137\001\177\003\001\002\138\001\218\002\247\000\000\000\000\000\000\000\000\000\000\000\000\002\240\000\000\001\175\002\213\002\248\001\176\001\177\000\000\001\178\000\000\000\000\001A\002\214\000\000\000\000\003q\000\000\003\003\000\000\000\000\000\000\000\000\000\000\000\000\003t\000\000\002\240\001\179\003R\000\000\001\181\001\182\001\187\000\000\002\245\002\135\003%\002\136\002\137\001\177\000\000\002\138\003\001\000\000\001\218\002\247\000\000\000\000\002\242\000\000\000\000\000\000\002\135\002\213\002\136\002\137\001\177\000\000\002\138\000\000\000\000\002\141\002\214\002\244\000\253\002\242\000\000\000\000\000\000\003\003\002\213\000\000\000\000\000\000\000\000\000\000\002\240\000\000\002\141\002\214\002\244\000\253\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\242\000\000\002\240\000\000\002\248\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\141\000\000\002\244\000\253\001\188\000\000\000\000\000\000\002\248\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\189\000\000\000\000\000\253\002\245\000\000\003'\002\135\000\000\002\136\002\137\001\177\003\001\002\138\001\218\002\247\000\000\002\248\000\000\000\000\002\242\002\245\000\000\003)\000\000\002\213\000\000\000\000\000\000\003\001\000\000\001\218\002\247\002\141\002\214\002\244\000\253\002\242\003u\003\003\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\245\002\240\003+\002\141\000\000\002\244\000\253\000\000\003\001\003\003\001\218\002\247\003w\000\000\000\000\001\175\000\000\001\208\001\176\001\177\002\248\001\178\000\000\000\000\000\000\001\217\000\000\001\218\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\003\000\000\002\248\000\000\000\000\001\179\001\197\000\000\001\181\001\182\001\187\000\000\000\000\000\000\000\000\002\245\000\000\003-\002\135\000\000\002\136\002\137\001\177\003\001\002\138\001\218\002\247\000\000\000\000\000\000\000\000\002\242\002\245\000\000\003/\000\000\000\000\000\000\000\000\000\000\003\001\000\000\001\218\002\247\002\141\002\139\002\244\000\253\000\000\000\000\003\003\000\000\001\198\000\000\001\199\003F\000\000\000\000\000\000\001\175\000\000\000\000\001\176\001\177\000\000\001\178\000\000\003\003\001\175\000\000\000\000\001\176\001\177\002\135\001\178\002\136\002\137\001\177\002\248\002\138\000n\003q\000\000\000\000\001\179\001\197\001\206\001\181\001\182\001\187\003t\002\213\000\000\001\179\003R\000\000\001\181\001\182\001\187\001\189\002\214\000\000\000\253\000\000\000\000\000\000\000\000\000\000\002\245\002\135\0031\002\136\002\137\001\177\002\240\002\138\003\001\000\000\001\218\002\247\000\000\000\000\000\000\000\000\002\140\000\000\002\135\002\213\002\136\002\137\001\177\001\198\002\138\001\199\002\178\000\000\002\214\002\141\000\000\002\244\000\253\000\000\000\000\003\003\002\213\000\000\000\000\000\000\000\000\000\000\002\240\000\000\000\000\002\214\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\208\000\000\001\206\000\000\002\240\000\000\000\000\000\000\001\209\000\000\001\218\001\188\000\000\000\000\000\000\001\189\002\242\000\000\000\253\000\000\000\000\000\000\000\000\000\000\001\189\000\000\000\000\000\253\000\000\002\141\000\000\002\244\000\253\000\000\000\000\000\000\000\000\000\000\002\245\002\135\000\000\002\136\002\137\001\177\000\000\002\138\002\246\003X\001\218\002\247\000\000\000\000\002\242\000\000\000\000\000\000\000\000\002\213\000\000\000\000\000\000\000\000\003u\002\248\000\000\002\141\002\214\002\244\000\253\002\242\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\208\002\240\000\000\002\141\003v\002\244\000\253\000\000\001\209\001\208\001\218\000\000\000\000\000\000\002\245\000\000\003\202\001\217\000\000\001\218\002\248\000\000\003\001\000\000\001\218\002\247\000\000\002\135\000\000\002\136\002\137\001\177\000\000\002\138\000\000\000\000\000\000\002\248\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\213\000\000\000\000\000\000\003\003\002\245\000\000\003\208\002\135\002\214\002\136\002\137\001\177\003\001\002\138\001\218\002\247\000\000\000\000\000\000\000\000\002\242\002\245\002\240\003\214\002\135\002\213\002\136\002\137\001\177\003\001\002\138\001\218\002\247\002\141\002\214\002\244\000\253\000\000\000\000\003\003\000\000\000\000\002\213\000\000\000\000\000\000\000\000\000\000\002\240\000\000\000\000\002\214\000\000\000\000\000\000\000\000\003\003\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\240\000\000\002\248\000\000\000\000\000\000\000\000\000\000\000\000\002\135\000\000\002\136\002\137\001\177\000\000\002\138\000\000\000\000\000\000\000\000\000\000\000\000\002\242\000\000\000\000\000\000\000\000\002\213\000\000\000\000\000\000\000\000\002\245\000\000\003\220\002\141\002\214\002\244\000\253\000\000\003\001\000\000\001\218\002\247\000\000\000\000\000\000\000\000\002\242\000\000\002\240\000\000\002\135\000\000\002\136\002\137\001\177\000\000\002\138\000\000\000\000\002\141\000\000\002\244\000\253\002\242\000\000\003\003\000\000\002\248\002\213\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\141\002\214\002\244\000\253\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\240\000\000\002\248\000\000\000\000\000\000\002\245\000\000\003\225\002\135\000\000\002\136\002\137\001\177\003\001\002\138\001\218\002\247\000\000\002\248\000\000\000\000\002\242\000\000\000\000\000\000\000\000\002\213\000\000\000\000\000\000\000\000\002\245\000\000\003\230\002\141\002\214\002\244\000\253\000\000\003\001\003\003\001\218\002\247\000\000\000\000\000\000\000\000\000\000\002\245\002\240\003\237\002\135\000\000\002\136\002\137\001\177\003\001\002\138\001\218\002\247\000\000\000\000\000\000\000\000\002\242\000\000\003\003\000\000\002\248\002\213\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\141\002\214\002\244\000\253\000\000\000\000\003\003\000\000\000\000\000\000\000\000\000\000\000\000\001\175\000\000\002\240\001\176\001\177\000\000\001\178\000\000\002\245\000\000\003\242\000\000\000\000\000\000\000\000\000\000\003\001\001/\001\218\002\247\007\138\002\248\000\000\000\000\002\242\001\179\001\197\007\139\001\181\001\182\001\187\000\000\000\000\000\000\000\000\000\000\000\000\002\141\000\000\002\244\000\253\000\000\000\000\003\003\000\000\000\000\0018\000\000\000\000\000\000\000\000\002\245\002\135\003\247\002\136\002\137\001\177\000\000\002\138\003\001\000\000\001\218\002\247\000\000\000\000\000\000\000\000\002\242\000\000\000\000\002\213\002\248\001\198\000\000\001\199\002\169\000\000\000\000\000\000\002\214\002\141\001/\002\244\000\253\007\149\000\000\003\003\000\000\000\000\000\000\000\000\007\150\000\000\002\240\000\000\001F\000\000\000\000\000\000\000\000\000\000\002\245\000\000\003\250\000\000\000\000\001\206\000\000\000\000\003\001\0018\001\218\002\247\000\000\002\248\000\000\000\000\000\000\000\000\001\189\000\000\000\000\000\253\000\000\000\000\000\000\001 \000\000\000\000\000\000\004)\000\000\001'\001:\000\000\001\175\003\003\000\000\002\014\001\177\000\000\001\178\000\000\000\000\002\245\000\000\004-\000\000\000\000\000\000\000\000\000\000\003\001\000\000\001\218\002\247\000\000\000\000\002\242\001F\001\179\002\158\000\000\001\181\001\182\001\187\001/\000\000\000\000\0011\000\000\002\141\001\127\002\244\000\253\000\000\001H\000\000\000\000\003\003\000\000\000\000\002\135\001\208\002\136\002\137\001\177\000\000\002\138\001;\001 \001\209\000\000\001\218\001\128\0018\001'\001:\000\000\000\000\002\213\000\000\001\150\000\000\000\000\002\248\0041\003\157\003\158\002\214\000\000\002\135\000\000\002\136\002\137\001\177\000\000\002\138\000\000\000\000\001A\000\000\000\000\002\240\000\000\000\000\000\000\000\000\000\000\002\213\001\175\000\000\000\000\001\176\001\177\002\245\001\178\004/\002\214\000\000\000\000\001\206\000\000\003\001\001F\001\218\002\247\000\000\000\000\000\000\000\000\000\000\002\240\001;\001\189\001\179\003L\000\253\001\181\001\182\001\187\001\133\000\000\000\000\000\000\002\135\000\000\002\136\002\137\001\177\003\003\002\138\000\000\000\000\000\000\001 \000\000\000\000\000\000\000\000\000\000\001'\001:\002\213\001A\0048\000\000\000\000\002\242\000\000\000\000\000\000\002\214\002\135\000\000\002\136\002\137\001\177\000\000\002\138\000\000\002\141\000\000\002\244\000\253\000\000\002\240\000\000\000\000\000\000\000\000\002\213\000\000\000\000\000\000\000\000\000\000\002\242\001\208\002\135\002\214\002\136\002\137\001\177\000\000\002\138\001\209\000\000\001\218\000\000\002\141\001P\002\244\000\253\002\240\002\248\001\188\002\213\001;\000\000\000\000\000\000\001\143\000\000\000\000\000\000\002\214\000\000\000\000\001\189\000\000\000\000\000\253\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\240\000\000\000\000\000\000\002\248\002\245\000\000\004E\000\000\001A\000\000\002\242\001S\003\001\000\000\001\218\002\247\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\141\000\000\002\244\000\253\000\000\000\000\000\000\000\000\000\000\000\000\002\245\000\000\004M\000\000\000\000\002\242\003\003\000\000\003\001\000\000\001\218\002\247\000\000\000\000\000\000\000\000\000\000\000\000\002\141\001\208\002\244\000\253\000\000\000\000\002\248\000\000\000\000\001\217\000\000\001\218\000\000\002\242\000\000\000\000\000\000\003\003\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\141\000\000\002\244\000\253\000\000\000\000\000\000\000\000\002\248\000\000\002\245\000\000\004P\000\000\000\000\000\000\000\000\000\000\003\001\000\000\001\218\002\247\000\000\007\026\000\000\000\000\001\175\000\000\000\000\001\176\001\177\000\000\001\178\001\175\002\248\000\000\001\176\001\177\002\245\001\178\004R\000\000\000\000\007\027\000\000\003\003\003\001\007\029\001\218\002\247\000\000\001\179\001\197\000\000\001\181\001\182\001\187\007\030\001\179\001\197\000\000\001\181\001\182\001\187\002\245\000\000\004T\000\000\000\000\000\000\000\000\000\000\003\001\003\003\001\218\002\247\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\175\000\000\000\000\001\176\001\177\007\031\001\178\001\175\000\000\000\000\001\176\001\177\000\000\001\178\001\198\003\003\001\199\b\028\000\000\b\030\000\000\001\198\000\000\001\199\007E\001\179\001\197\000\000\001\181\001\182\001\187\000\000\001\179\001\197\000\000\001\181\001\182\001\187\000\000\000\000\001/\000\000\007 \007\155\000\000\000\000\000\000\000\000\001\206\000\000\007\156\000\000\007!\000\000\000\000\001\206\000\000\000\000\000\000\000\000\000\000\001\189\000\000\000\000\000\253\000\000\000\000\000\000\001\189\0018\000\000\000\253\001\198\000\000\001\199\001\255\000\000\000\000\007\"\001\198\000\000\001\199\001\243\000\000\000\000\000\000\001\175\000\000\000\000\001\176\001\177\000\000\001\178\007#\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\007$\000\000\001\206\007&\000\000\000\000\007+\001\179\001\197\001\206\001\181\001\182\001\187\000\000\001F\001\189\007-\000\000\000\253\000\000\000\000\001\208\001\189\000\000\000\000\000\253\000\000\000\000\001\208\001\209\000\000\001\218\000\000\000\000\000\000\007.\001\209\001\175\001\218\000\000\001\176\001\177\000\000\001\178\001\175\001 \000\000\001\176\001\177\000\000\001\178\001'\001:\000\000\001\198\001\175\001\199\001\240\001\176\001\177\000\000\001\178\001\179\001\197\000\000\001\181\001\182\001\187\000\000\001\179\001\197\000\000\001\181\001\182\001\187\000\000\000\000\000\000\000\000\001\208\001\179\001\197\000\000\001\181\001\182\001\187\001\208\001\209\001\206\001\218\000\000\000\000\000\000\000\000\001\209\000\000\001\218\000\000\000\000\000\000\000\000\001\189\000\000\000\000\000\253\000\000\000\000\000\000\001;\001\198\000\000\001\199\001\201\000\000\000\000\000\000\001\198\000\000\001\199\001\204\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\198\007\026\001\199\001\207\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001A\000\000\000\000\000\000\001\206\000\000\bC\000\000\000\000\bD\000\000\001\206\000\000\007\029\000\000\000\000\000\000\001\189\000\000\000\000\000\253\000\000\001\206\007\030\001\189\000\000\001\208\000\253\000\000\000\000\000\000\000\000\000\000\000\000\001\209\001\189\001\218\000\000\000\253\001\175\000\000\000\000\001\176\001\177\000\000\001\178\001\175\000\000\000\000\001\176\001\177\000\000\001\178\000\000\000\000\007\031\000\000\001\175\000\000\000\000\001\176\001\177\000\000\001\178\001\179\001\197\000\000\001\181\001\182\001\187\000\000\001\179\001\197\000\000\001\181\001\182\001\187\000\000\000\000\000\000\000\000\001\208\001\179\001\197\000\000\001\181\001\182\001\187\001\208\001\209\000\000\001\218\007 \000\000\000\000\000\000\001\209\001\175\001\218\001\208\001\176\001\177\007!\001\178\000\000\000\000\000\000\001\209\000\000\001\218\000\000\001\198\000\000\001\199\001\239\000\000\000\000\000\000\001\198\000\000\001\199\001\227\001\179\001\197\bE\001\181\001\182\001\187\000\000\001\198\000\000\001\199\001\235\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\007#\000\000\001\206\000\000\000\000\000\000\000\000\000\000\000\000\001\206\000\000\007$\000\000\000\000\007&\001\189\000\000\007+\000\253\000\000\001\206\000\000\001\189\000\000\000\000\000\253\001\198\007-\001\199\002\200\000\000\000\000\000\000\001\189\000\000\000\000\000\253\001\175\000\000\000\000\001\176\001\177\000\000\001\178\000\000\000\000\007.\000\000\000\000\000\000\003f\000\000\001\175\000\000\000\000\001\176\001\177\000\000\001\178\000\000\001\206\000\000\001\179\003R\000\000\001\181\001\182\001\187\000\000\000\000\000\000\000\000\000\000\001\189\000\000\000\000\000\253\001\179\001\197\001\208\001\181\001\182\001\187\000\000\000\000\000\000\001\208\001\209\000\000\001\218\000\000\000\000\000\000\000\000\001\209\000\000\001\218\001\208\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\209\000\000\001\218\000\000\000\000\001\175\000\000\000\000\001\176\001\177\000\000\001\178\000\000\000\000\000\000\000\000\000\000\000\000\003\132\001\198\001\175\001\199\003=\001\176\001\177\000\000\001\178\003\135\000\000\000\000\001\179\003R\001\208\001\181\001\182\001\187\000\000\000\000\001\188\000\000\001\209\000\000\001\218\000\000\000\000\001\179\001\197\000\000\001\181\001\182\001\187\001\189\000\000\001\206\000\253\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003i\000\000\000\000\001\189\000\000\000\000\000\253\000\000\001\175\000\000\000\000\001\176\001\177\000\000\001\178\001\175\000\000\000\000\001\176\001\177\000\000\001\178\000\000\000\000\000\000\000\000\003U\000\000\000\000\001\198\000\000\001\199\003\146\001\179\001\197\000\000\001\181\001\182\001\187\000\000\001\179\001\197\000\000\001\181\001\182\001\187\000\000\000\000\001\188\000\000\000\000\002\135\001\208\002\136\002\137\001\177\000\000\002\138\000\000\000\000\001\217\001\189\001\218\001\206\000\253\000\000\000\000\001\208\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\209\001\189\001\218\003\251\000\253\001\198\000\000\001\199\003\149\000\000\000\000\000\000\001\198\000\000\001\199\003\152\000\000\000\000\000\000\001\175\000\000\000\000\001\176\001\177\003u\001\178\000\000\000\000\000\000\000\000\003\252\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\206\000\000\000\000\000\000\000\000\001\179\001\197\001\206\001\181\001\182\001\187\001\208\000\000\001\189\000\000\000\000\000\253\000\000\000\000\001\217\001\189\001\218\000\000\000\253\000\000\000\000\001\208\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\209\001\175\001\218\000\000\001\176\001\177\000\000\001\178\001\175\002\140\000\000\001\176\001\177\002\135\001\178\002\136\002\137\001\177\001\198\002\138\001\199\003\160\002\141\000\000\002\244\000\253\001\179\001\197\000\000\001\181\001\182\001\187\000\000\001\179\001\197\000\000\001\181\001\182\001\187\000\000\004q\001\175\000\000\001\208\001\176\001\177\000\000\001\178\004z\000\000\001\208\001\209\001\206\001\218\000\000\000\000\000\000\000\000\001\209\000\000\001\218\003\254\000\000\000\000\000\000\001\189\001\179\001\197\000\253\001\181\001\182\001\187\000\000\001\198\004{\001\199\004N\000\000\000\000\000\000\001\198\000\000\001\199\004K\000\000\000\000\002\245\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\246\000\000\001\218\002\247\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\206\000\000\000\000\000\000\000\000\000\000\001\198\001\206\001\199\005C\000\000\000\000\002\140\001\189\000\000\000\000\000\253\000\000\000\000\000\000\001\189\000\000\001\208\000\253\000\000\004~\000\000\002\244\000\253\001\017\001\209\001/\001\218\001/\0011\000\000\0011\001\127\000\000\001\127\001\206\001H\000\000\001H\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\189\000\000\000\000\000\253\000\000\000\000\001\128\0018\001\128\0018\000\000\000\000\004t\000\000\001\129\000\000\001\148\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\208\000\000\000\000\000\000\000\000\000\000\000\000\001\208\001\209\000\000\001\218\000\000\002\245\000\000\000\000\001\209\000\000\001\218\001/\000\000\002\246\0011\001\218\002\247\000\000\000\000\000\000\000\000\001H\000\000\000\000\000\000\001F\000\000\001F\000\000\000\000\000\000\000\000\000\000\001\208\000\000\000\000\000\000\000\000\000\000\000\000\0018\001\209\001\133\001\218\001\133\001\175\000\000\000\000\001\176\001\177\001\137\001\178\000\000\000\000\000\000\000\000\001 \000\000\001 \000\000\000\000\000\000\001'\001:\001'\001:\000\000\004\247\000\000\000\000\001\179\003R\000\000\001\181\001\182\001\187\001\175\000\000\000\000\001\176\001\177\000\000\001\178\000\000\000\000\000\000\000\000\000\000\001/\001F\000\000\007\161\000\000\000\000\000\000\000\000\000\000\000\000\007\162\000\000\000\000\001\179\003R\000\000\001\181\001\182\001\187\001\175\000\000\000\000\001\176\001\177\001P\001\178\001P\000\000\000\000\0018\000\000\001;\001 \001;\000\000\001\143\000\000\001\143\001'\001:\000\000\000\000\000\000\000\000\001\179\003R\000\000\001\181\001\182\001\187\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001A\001\188\001A\001S\000\000\001S\000\000\000\000\000\000\001\175\000\000\000\000\001\176\001\177\001\189\001\178\001F\000\253\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001P\000\000\000\000\000\000\000\000\000\000\001\188\001;\001\179\003R\000\000\001\181\001\182\001\187\001\175\000\000\000\000\001\176\001\177\001\189\001\178\001 \000\253\000\000\000\000\000\000\003u\001'\001:\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\188\001A\001\179\003R\001\141\001\181\001\182\001\187\001\175\000\000\000\000\001\176\001\177\001\189\001\178\001\208\000\253\000\000\000\000\000\000\004\026\000\000\000\000\001\217\000\000\001\218\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\179\003R\000\000\001\181\001\182\001\187\000\000\004\029\000\000\000\000\000\000\000\000\000\000\001\208\001;\000\000\000\000\000\000\004\026\001\188\000\000\001\217\000\000\001\218\000\000\000\000\000\000\000\000\000\000\000\000\001/\000\000\001\189\007\170\000\000\000\253\000\000\000\000\004\028\000\000\007\171\000\000\000\000\001\175\001\208\001A\001\176\001\177\000\000\001\178\001\188\000\000\001\217\000\000\001\218\000\000\000\000\000\000\001\175\0018\000\000\001\176\001\177\001\189\001\178\006\162\000\253\000\000\001\179\003R\004\026\001\181\001\182\001\187\000\000\000\000\000\000\000\000\000\000\000\000\006\186\001\188\000\000\001\179\003R\000\000\001\181\001\182\001\187\001\175\004\027\000\000\001\176\001\177\001\189\001\178\001\208\000\253\000\000\000\000\000\000\004\026\000\000\000\000\001\217\000\000\001\218\000\000\001F\000\000\000\000\000\000\000\000\000\000\001\179\003R\000\000\001\181\001\182\001\187\000\000\004\031\000\000\001/\000\000\000\000\007\180\001\208\001/\000\000\000\000\0011\007\r\007\181\000\000\001\217\000\000\001\218\001H\001 \000\000\000\000\000\000\000\000\001\175\001'\001:\001\176\001\177\001\188\001\178\000\000\0018\001/\000\000\000\000\0011\0018\001\208\001\144\000\000\000\000\001\189\001H\001\188\000\253\001\217\000\000\001\218\001\179\003R\000\000\001\181\001\182\001\187\000\000\000\000\001\189\000\000\000\000\000\253\001\146\0018\007\015\001\175\000\000\000\000\001\176\001\177\000\000\001\178\000\000\000\000\001\175\000\000\001\188\001\176\001\177\000\000\001\178\003u\001F\001;\000\000\000\000\000\000\001F\000\000\001\189\001\179\003R\000\253\001\181\001\182\001\187\003u\000\000\000\000\001\179\003R\000\000\001\181\001\182\001\187\000\000\000\000\001\208\000\000\000\000\000\000\000\000\001F\001 \001A\001\217\000\000\001\218\001 \001'\001:\000\000\001\208\000\000\001'\001:\000\000\006\213\000\000\001\133\001\217\001\188\001\218\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001 \001\189\000\000\000\000\000\253\000\000\001'\001:\000\000\000\000\001\208\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\217\000\000\001\218\000\000\000\000\000\000\000\000\000\000\001/\000\000\001\188\0011\000\000\001P\001\127\001;\006\226\000\000\001H\001\188\001;\006\213\000\000\001\189\001/\000\000\000\253\0011\000\000\000\000\000\000\000\000\001\189\000\000\001H\000\253\001\132\0018\001P\000\000\000\000\000\000\000\000\000\000\000\000\001;\001A\001\208\000\000\001\143\000\000\001A\000\000\0018\002;\001\217\000\000\001\218\000\000\000\000\000\000\007\r\000\000\001\175\000\000\005O\001\176\001\177\000\000\001\178\007\r\006\225\000\000\000\000\000\000\000\000\001A\000\000\000\000\001S\000\000\007\217\000\000\000\000\000\000\000\000\001F\001\208\001\179\003R\000\000\001\181\001\182\001\187\000\000\001\217\001\208\001\218\000\000\000\000\000\000\000\000\001F\001\133\001\217\000\000\001\218\002\135\000\000\002\136\002\137\001\177\007\014\002\138\000\000\000\000\001/\001 \000\000\0011\000\000\007\022\000\000\001'\001:\000\000\001H\000\000\000\000\000\000\000\000\000\000\000\000\001 \003\251\000\000\000\000\000\000\000\000\001'\001:\000\000\000\000\000\000\000\000\0018\000\000\001I\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\007\173\000\000\000\000\000\000\006\219\001/\000\000\000\000\0011\000\000\000\000\000\000\001\188\000\000\000\000\001H\001P\000\000\000\000\000\000\000\000\000\000\000\000\001;\000\000\001\189\000\000\001\143\000\253\000\000\000\000\000\000\001P\000\000\0018\000\000\001I\001F\000\000\001;\000\000\000\000\000\000\005X\000\000\000\000\007\163\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001A\000\000\002\140\001S\000\000\000\000\000\000\000\000\000\000\004\030\000\000\000\000\000\000\000\000\001 \002\141\001A\002\244\000\253\001S\001'\001:\001/\000\000\000\000\0011\000\000\001/\000\000\001F\0011\000\000\001H\000\000\000\000\001\208\000\000\001H\000\000\000\000\000\000\000\000\000\000\001\217\000\000\001\218\000\000\001/\000\000\000\000\0011\0018\000\000\001I\003\254\000\000\0018\001H\001I\000\000\001 \000\000\001/\007\131\000\000\0011\001'\001:\001W\000\000\001P\000\000\001H\000\000\000\000\000\000\0018\001;\001I\002\245\000\000\001b\000\000\000\000\000\000\000\000\000\000\002\246\001h\001\218\002\247\0018\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001F\000\000\000\000\005O\000\000\001F\000\000\000\000\001A\000\000\000\000\001S\000\000\000\000\000\000\000\000\001P\000\000\002\135\005R\002\136\002\137\001\177\001;\002\138\001F\000\000\001b\000\000\000\000\000\000\001 \000\000\000\000\000\000\000\000\001 \001'\001:\000\000\001F\000\000\001'\001:\000\000\002\206\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001A\000\000\001 \001S\000\000\000\000\000\000\000\000\001'\001:\001/\000\000\000\000\0011\000\000\000\000\000\000\001 \000\000\000\000\001H\000\000\000\000\001'\001:\001/\000\000\000\000\0011\000\000\000\000\000\000\000\000\001P\000\000\001H\000\000\000\000\001P\0018\001;\000\000\000\000\000\000\001b\001;\000\000\000\000\000\000\001b\000\000\005O\000\000\000\000\0018\000\000\000\000\000\000\001P\000\000\000\000\000\000\000\000\000\000\000\000\001;\005O\005\199\000\000\001b\002\140\001A\000\000\001P\001S\000\000\001A\000\000\000\000\001S\001;\000\000\006\159\002\141\005X\002\244\000\253\001/\001F\000\000\0011\000\000\000\000\000\000\000\000\001/\001A\001H\0011\001S\000\000\000\000\000\000\001F\000\000\001H\000\000\000\000\000\000\000\000\000\000\001A\000\000\000\000\001S\000\000\0018\000\000\000\000\001 \001/\000\000\000\000\0011\0018\001'\001:\000\000\005O\000\000\001H\000\000\000\000\000\000\001 \000\000\005O\000\000\000\000\000\000\001'\001:\000\000\007\026\006\173\000\000\000\000\002\245\000\000\0018\000\000\001I\006\183\000\000\000\000\002\246\000\000\001\218\002\247\000\000\bC\007\142\000\000\bD\000\000\001F\000\000\007\029\000\000\000\000\000\000\007\026\000\000\001F\000\000\001P\000\000\007\030\000\000\000\000\000\000\002\135\001;\002\136\002\137\001\177\005X\002\138\bC\000\000\001P\bD\000\000\000\000\000\000\007\029\001 \001;\001F\000\000\000\000\005X\001'\001:\001 \007\030\000\000\000\000\002\210\007\031\001'\001:\000\000\001A\000\000\000\000\001S\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001A\001 \000\000\001S\000\000\000\000\000\000\001'\001:\007\031\000\000\001/\000\000\001/\0011\000\000\0011\000\000\007 \000\000\000\000\001H\000\000\001H\001P\000\000\000\000\000\000\007!\000\000\000\000\001;\001P\000\000\000\000\005X\000\000\000\000\000\000\001;\0018\000\000\0018\005X\000\000\000\000\007 \000\000\000\000\000\000\bI\000\000\002\020\000\000\002\180\000\000\007!\001P\000\000\002\140\000\000\000\000\001A\000\000\001;\001S\000\000\000\000\001b\007#\001A\000\000\002\141\001S\002\244\000\253\000\000\000\000\bN\000\000\007$\000\000\000\000\007&\001/\000\000\007+\0011\000\000\001F\000\000\001F\000\000\000\000\001H\001A\007-\007#\001S\000\000\000\000\000\000\000\000\002\135\000\000\002\136\002\137\001\177\007$\002\138\000\000\007&\000\000\0018\007+\007.\000\000\000\000\000\000\000\000\001 \000\000\001 \000\000\007-\003H\001'\001:\001'\001:\002\232\002\135\000\000\002\136\002\137\001\177\002\245\002\138\000\000\000\000\000\000\000\000\000\000\007.\002\246\000\000\001\218\002\247\002\135\000\000\002\136\002\137\001\177\000\000\002\138\000\000\000\000\002\135\002\243\002\136\002\137\001\177\001F\002\138\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\002\001P\000\000\001P\000\000\000\000\000\000\000\000\001;\003\195\001;\000\000\002\023\000\000\002\183\000\000\000\000\000\000\001 \001/\000\000\000\000\0011\000\000\001'\001:\000\000\001/\000\000\001H\0011\000\000\000\000\000\000\002\140\000\000\000\000\001H\000\000\001A\000\000\001A\001S\000\000\001S\000\000\000\000\002\141\0018\002\244\000\253\000\000\000\000\000\000\000\000\000\000\0018\000\000\000\000\000\000\003\\\000\000\002\140\000\000\000\000\000\000\000\000\000\000\003a\000\000\000\000\000\000\000\000\001/\001P\002\141\0011\002\244\000\253\002\140\000\000\001;\000\000\001H\000\000\001\230\000\000\000\000\002\140\000\000\000\000\000\000\002\141\000\000\002\244\000\253\001/\001F\000\000\0011\000\000\002\141\0018\002\244\000\253\001F\001H\000\000\000\000\000\000\000\000\002\245\001A\000\000\003\127\001S\000\000\000\000\000\000\002\246\000\000\001\218\002\247\000\000\000\000\0018\000\000\000\000\001 \000\000\000\000\000\000\000\000\000\000\001'\001:\001 \004\196\000\000\002\245\000\000\000\000\001'\001:\000\000\000\000\000\000\002\246\000\000\001\218\002\247\001F\004\199\000\000\000\000\000\000\002\245\000\000\001/\000\000\000\000\0011\000\000\000\000\002\246\002\245\001\218\002\247\001H\000\000\000\000\000\000\000\000\002\246\001F\001\218\002\247\000\000\000\000\000\000\001/\000\000\001 \0011\001P\000\000\000\000\0018\001'\001:\001H\001;\001P\000\000\001/\001\230\000\000\0011\000\000\001;\000\000\000\000\000\000\002\223\001H\001 \000\000\000\000\000\000\0018\000\000\001'\001:\000\000\000\000\006\208\000\000\000\000\000\000\000\000\000\000\000\000\001A\0018\000\000\001S\000\000\000\000\007\026\000\000\001A\000\000\000\000\001S\000\000\000\000\001F\000\000\001P\000\000\000\000\000\000\000\000\000\000\000\000\001;\000\000\000\000\007\027\002\223\000\000\000\000\007\029\000\000\000\000\000\000\000\000\000\000\001F\000\000\000\000\001P\007\030\000\000\000\000\000\000\007\026\001 \001;\000\000\000\000\000\000\001F\001'\001:\000\000\001A\000\000\000\000\001S\000\000\000\000\000\000\000\000\000\000\000\000\007\027\000\000\000\000\001 \007\029\007\026\000\000\000\000\007\031\001'\001:\000\000\001/\001A\007\030\0011\004\203\001 \000\000\000\000\000\000\000\000\001H\001'\001:\b:\000\000\000\000\001/\007\029\000\000\0011\000\000\000\000\000\000\000\000\000\000\001P\001H\007\030\000\000\0018\000\000\000\000\001;\007 \007\031\000\000\005\228\000\000\000\000\005\231\000\000\004\196\000\000\007!\000\000\0018\000\000\001P\000\000\000\000\000\000\000\000\000\000\000\000\001;\000\000\007w\000\000\005\215\007\031\000\000\001P\000\000\001A\001/\000\000\001S\0011\001;\0072\000\000\007 \005\228\000\000\001H\006\254\000\000\000\000\001F\000\000\000\000\007!\000\000\000\000\007#\001A\000\000\000\000\001S\b\000\000\000\000\000\000\000\0018\001F\007$\007 \000\000\007&\001A\000\000\007+\001S\000\000\000\000\000\000\007!\007<\000\000\001 \000\000\007-\000\000\000\000\000\000\001'\001:\001/\000\000\000\000\0011\000\000\007#\000\000\000\000\001 \000\000\001H\000\000\b;\007.\001'\001:\007$\001/\000\000\007&\0011\000\000\007+\000\000\000\000\001F\000\000\001H\000\000\0018\007#\000\000\007-\000\000\000\000\000\000\000\000\000\000\000\000\001/\000\000\007$\0011\000\000\007&\000\000\0018\007+\001P\001H\000\000\007.\000\000\000\000\000\000\001;\001 \007-\000\000\000\000\000\000\000\000\001'\001:\001P\000\000\000\000\000\000\0018\000\000\000\000\001;\000\000\000\000\000\000\b\001\007.\000\000\001F\000\000\000\000\001/\000\000\000\000\0011\000\000\001A\000\000\000\000\004\203\000\000\001H\000\000\001/\000\000\001F\0011\000\000\000\000\000\000\000\000\001/\001A\001H\0011\001S\000\000\000\000\000\000\001 \0018\001H\001P\000\000\000\000\001'\001:\001F\000\000\001;\000\000\000\000\0018\001\159\000\000\000\000\001 \000\000\000\000\000\000\0018\000\000\001'\001:\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001/\000\000\001 \0011\001A\000\000\000\000\001S\001'\001:\001H\000\000\000\000\001F\000\000\000\000\000\000\001/\000\000\001P\0011\000\000\000\000\000\000\000\000\001F\001;\001H\000\000\0018\001Q\000\000\000\000\001F\000\000\000\000\001P\000\000\000\000\001/\000\000\000\000\0011\001;\001 \000\000\0018\001[\000\000\001H\001'\001:\000\000\000\000\000\000\000\000\001 \001A\001P\000\000\001S\000\000\001'\001:\001 \001;\000\000\000\000\0018\001e\001'\001:\000\000\000\000\001A\000\000\000\000\001S\001F\001/\000\000\001/\0011\000\000\0011\000\000\000\000\000\000\000\000\001H\000\000\001H\000\000\000\000\000\000\001F\001A\000\000\000\000\001S\001P\000\000\000\000\000\000\000\000\000\000\000\000\001;\0018\001 \0018\001j\001P\000\000\000\000\001'\001:\001F\000\000\001;\001P\000\000\000\000\002\022\000\000\000\000\001 \001;\000\000\000\000\000\000\002@\001'\001:\001/\000\000\000\000\0011\001A\000\000\000\000\001S\000\000\000\000\001H\000\000\000\000\000\000\001 \000\000\001A\000\000\000\000\001S\001'\001:\000\000\001F\001A\001F\000\000\001S\000\000\0018\000\000\001P\000\000\000\000\000\000\000\000\000\000\000\000\001;\000\000\000\000\000\000\002B\000\000\000\000\000\000\000\000\001/\001P\000\000\0011\000\000\000\000\000\000\001 \001;\001 \001H\000\000\002\160\001'\001:\001'\001:\001/\000\000\000\000\0011\000\000\001A\001P\000\000\001S\000\000\001H\000\000\0018\001;\001F\000\000\000\000\002\182\000\000\000\000\000\000\000\000\001A\000\000\000\000\001S\000\000\000\000\000\000\0018\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001A\001 \001P\001S\001P\000\000\000\000\001'\001:\001;\000\000\001;\000\000\002\220\000\000\002\225\000\000\001F\001/\000\000\000\000\0011\000\000\000\000\000\000\000\000\000\000\000\000\001H\000\000\000\000\000\000\000\000\000\000\001F\000\000\000\000\000\000\000\000\000\000\001A\001/\001A\001S\0011\001S\000\000\0018\001 \000\000\000\000\001H\000\000\000\000\001'\001:\000\000\001P\000\000\000\000\000\000\000\000\000\000\001/\001;\001 \0011\000\000\003D\000\000\0018\001'\001:\001H\000\000\000\000\001/\000\000\000\000\0011\000\000\000\000\000\000\000\000\000\000\000\000\001H\000\000\000\000\000\000\000\000\000\000\0018\000\000\000\000\001A\001F\000\000\001S\000\000\000\000\000\000\000\000\000\000\001P\0018\000\000\000\000\000\000\000\000\000\000\001;\000\000\000\000\000\000\003J\000\000\000\000\000\000\001F\000\000\001P\000\000\000\000\000\000\000\000\000\000\001 \001;\000\000\000\000\000\000\003^\001'\001:\000\000\000\000\000\000\000\000\000\000\000\000\001F\001A\000\000\000\000\001S\000\000\000\000\001/\000\000\001 \0011\000\000\000\000\001F\000\000\001'\001:\001H\001A\000\000\000\000\001S\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001/\001 \000\000\0011\000\000\000\000\0018\001'\001:\000\000\001H\000\000\001P\000\000\001 \000\000\000\000\000\000\000\000\001;\001'\001:\001/\003c\000\000\0011\000\000\000\000\000\000\0018\000\000\000\000\001H\000\000\000\000\001P\000\000\000\000\000\000\000\000\000\000\000\000\001;\000\000\000\000\000\000\003|\000\000\000\000\000\000\001A\0018\000\000\001S\000\000\001F\000\000\001P\000\000\000\000\000\000\000\000\001/\000\000\001;\0011\000\000\000\000\003\129\000\000\001P\000\000\001H\001A\000\000\000\000\001S\001;\001F\000\000\000\000\003\138\000\000\000\000\001/\000\000\001 \0011\000\000\000\000\000\000\0018\001'\001:\001H\001A\000\000\000\000\001S\000\000\001F\000\000\000\000\000\000\001/\000\000\000\000\0011\001A\001 \000\000\001S\000\000\0018\001H\001'\001:\001/\000\000\000\000\0011\000\000\000\000\000\000\000\000\000\000\001/\001H\000\000\0011\000\000\001 \000\000\0018\000\000\000\000\001H\001'\001:\000\000\001F\000\000\001P\000\000\000\000\000\000\0018\000\000\000\000\001;\000\000\000\000\000\000\005Q\000\000\0018\000\000\000\000\000\000\000\000\000\000\000\000\001F\000\000\000\000\001P\000\000\000\000\000\000\000\000\000\000\001 \001;\000\000\000\000\000\000\005\176\001'\001:\000\000\001A\000\000\001F\001S\000\000\000\000\000\000\001P\000\000\000\000\000\000\000\000\000\000\001 \001;\001F\000\000\000\000\005\188\001'\001:\000\000\000\000\001A\001F\000\000\001S\000\000\000\000\000\000\000\000\000\000\000\000\001 \000\000\000\000\000\000\000\000\000\000\001'\001:\001/\000\000\000\000\0011\001A\001 \001P\001S\000\000\000\000\001H\001'\001:\001;\001 \000\000\001/\005\214\000\000\0011\001'\001:\000\000\000\000\000\000\000\000\001H\000\000\001P\0018\000\000\000\000\000\000\000\000\000\000\001;\000\000\000\000\000\000\005\230\000\000\000\000\000\000\000\000\001A\0018\001/\001S\001P\0011\000\000\000\000\000\000\000\000\000\000\001;\001H\000\000\000\000\006\138\000\000\001P\000\000\000\000\001/\000\000\001A\0011\001;\001S\001P\000\000\006\156\000\000\001H\0018\000\000\001;\001F\000\000\000\000\006\180\000\000\000\000\000\000\001/\001A\000\000\0011\001S\000\000\000\000\000\000\0018\001F\001H\000\000\000\000\000\000\001A\001/\000\000\001S\0011\000\000\000\000\000\000\000\000\001A\001 \001H\001S\000\000\000\000\0018\001'\001:\001/\000\000\000\000\0011\000\000\000\000\000\000\001F\001 \000\000\001H\000\000\0018\000\000\001'\001:\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001F\000\000\000\000\000\000\0018\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001 \000\000\000\000\000\000\000\000\000\000\001'\001:\001F\000\000\001P\000\000\000\000\000\000\000\000\000\000\000\000\001;\001 \000\000\000\000\007H\000\000\001F\001'\001:\001P\000\000\000\000\000\000\000\000\000\000\000\000\001;\000\000\000\000\000\000\007\133\000\000\001 \001F\000\000\000\000\000\000\000\000\001'\001:\000\000\001A\000\000\000\000\001S\000\000\000\000\001 \000\000\001P\000\000\000\000\000\000\001'\001:\000\000\001;\001A\000\000\000\000\001S\000\000\000\000\000\000\001 \000\000\000\000\001P\000\000\000\000\001'\001:\000\000\000\000\001;\000\000\000\000\000\000\007\144\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001A\001P\000\000\002=\000\000\000\000\000\000\000\000\001;\000\000\000\000\000\000\007\165\000\000\000\000\000\000\001P\000\000\001A\000\000\000\000\001S\000\000\001;\000\000\000\000\000\000\007\175\000\000\000\000\000\000\000\000\000\000\001P\000\000\000\000\000\000\000\000\000\000\001A\001;\000\000\001S\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001A\000\000\000\000\001S\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001A\000\000\000\000\004\198")) + ((16, "\001\232\001\153\000,\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\156\000\000\000\000\000E\001\200\000)\001u\000/\000\007\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000Q\000\000\000\000\000\000\000\000\000\000\0003\000\000\000\000\000\000\000+\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\006\192\000\000\000\000\000\000\000\005\000\000\000\000\000\000\000\000\000\000\000\000\000\000-\244\000\000\000\017\000\000\000\000\000\000\000\170\000\000\001\146\000\000\000\000\000\234\000\162\003\n\000\000\000\174\012\246\001\030\001\250\000)\000\000\000\000\000\000\000\004\000\000\000\000\002n\000\000\000\000\000\000\000\000\000\000\003&\000\000\0020\000\000\003Z\000\000\001t\003\186\000\000\002\146\000\000\000\000\000\000\000\000\0012\000\000\000\000\000\000\004\028\000\000\002\n\004\150\000\000\000r\000I\000\137\000\000\000\000\003X\000\224\000\000\000\000\002&\000\000+(-\244\000\000\002\170\000\000\004\186\000\000\000\000\001\156N\022\000\000\005\"N\142\002\224-\244\002\222\000\000-\244\002`\003(\000\000\000\000\002\228\005|\002\160\003\232\001\136\000C\003X\004\196\005\248\002x\000@\003\204\005\206\n6\000\000)z\004\b\006\030\0044A\206\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000+\132\000\000\004\168\006T\005F\000\000\000\000\000\000\000\000\004\016\000\000\000\000\006|\000\160\006\216\005\194\007\166\000\000\000\000\000\000\004\248\005J\006\236\002(\003\224\007L+\160\005f\007\174\001\005\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\005\138\007\222\n\254\b\020)z\n\156\011d\000\000+\202\011r,<-8-T\000\000\000\193\000\000\000\000\000\000\000\000\006|W\002\007d\000\000\021\168\007v\000\000\028\146M@\000[\000\000\000\000\000m\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000H\232\007:\000\000\000\000\000\000\000\000\006\144\n\248\000\000\021\200\r<\000\000\000\000\rx\000\000\000\000\001\198\001\228\000\000\000\000\000\000\001\198\r\188\001\198\000\000\000\000\015nN\182\000\000\000\000\0030\002\014\000\000\000\000\000\000W2\000\000\007\b\000\000\000\000\000\000\007\158\000\000\000\000\000\000\005\006\000\000\000\000\007\202\000\000\005d\000\000\000\000\000\000\007\244\000\000\000\000\b.\000\000\006\148\000\000\000\000WB\007\b\000\000\027\b\015\166\000\000\000\000\000\000\007\b\000\000WL\007\b\017bO:\000\000Wt\007\b\000\000\029\n\017j\000\000\000\000\000\000\000\0001\232\018\174\000\000\000\000\000\000\000\000L\212\0216\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000M\186\000\000\b\004\b\246\000\000\tl\b4\0024\000\000\000\000\000\000\000\000\007\b\000\000\000\000\000\000I\006\000\000\000\000\000\000\000\000\000\000\000\000\002\132\t4\000\000\000\000\000\000\007\b\thBD\b\186\bPOl\000\000\003\154\000\000\000\000\000\000\005&\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\250\000\000\000\000\000\000\000\000\000\000\000\000\nRB\174\000\000\000\000\t\028\b\212B\240\000\000\000\000\000\000C^\005hC\206\000\000\005h\000\000D\014\005h\000\000DN+\132\n\006\n\182\000\000\000\000O\218\000\000\000\000\000\000\000\000\000\000\000\000\005h\000\000\000\000D\190\000\000\005hS\222\000\000\007\b\000\000\000\000D\254\000\000\005h\003\214\000\000\000\000\005h\005h\000\000\000\000\005h\000\000\000\000-T\000\000\000\000\000\000\000\000\005h-\166\000\000\000\000\005h\000\000\000c\n\218\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000Ij\000\000\nv\n\134\000\000\002\214\000\000W\172\007\b\007\b\000\000\000\000\000\000\000\000\000\000\000\000\n\144\n\166\011R\012,\n\168\n\234\n\248\t(\005P\t8\005\254\011\152\000\000\000\000\006F\007L\t\136\006\254\011B\b\030\000\000\002t\003\136\006F\0034\012\222\000\000\000\000\r\170\000\000'4\012\172\000\000X\024\007\bX@\007\b\000\000\000\201\000\217\000\000\t\b\002t\000\000\000\000\011\222\000\000\000\000\000\000\000\000\000\000\t.\002t\t\222\002t\000\000\001D\000\000\000\000\003\234\000\000\000\000\000\000\rt\000\000\000\000\000\000\002t\000\000\000\000\002t\000\000\011B\006<\000\000\000,\003\224\000\000\000,\000\000\000\000\n\234\002t\000\000\000\000\000\000\000\000\000\000\000\000\000,\012\142\012\252\r\n\r8\r\018-\238\020\152\000\000\012r\t\216\rl\012\130\t\220/\180K8\000\000\000\000\000\000\000\000\000\000\000\000\000\000\007\178\tf\000\000\000\000\000\000\012\170\t\234\006t\000,\r\186\000\000\002t\000\000\000\000\000\000\011r\000\000Xx\007\b\014\b\012\202\nX\014\202\012\214\n\\\015\024.^\005h\0156\012\226\nnNf\014\016\000\000.\206/\n\005hR\166\000\000X\240\007\b\007\b\r\242\000\000\000\000\r\244\000\000\000\000\000\000\000\000/N\000\022\000\000\000\000\006\182\000\000\000\000\000\000\b\184\000\000\031\230\015\214\rl\n\146En\005h\0162\016\146\rp\n\162S\016\000\000\000\000\000\000SB\000\000\000\000\016\250/\020+\238\000\000\000\000\014\222Y\012\000\000\007\bTr\000\000\007\bY\146\007\b\000\000\000\000\000\000\000\000\000\000Sx\000\000\000\000\000\000\004&\0172\000\000\000\000\000\000\000\000/\240S\134\000\000\000\000\000\000\000\000\000\000\r\156\017\154\000\000\001\0140\026\001\0140\246\001\014\000\000S\176\000\0001\000\001\014\017\250\0046\018V\000\000\000\0001j\001\0141\194\001\0142\026\001\0142$\001\0143\004\001\0143*\001\0143d\001\0143\198\001\0144\020\001\0144\196\001\0145\018\001\0145`\001\0145\174\001\0145\212\001\0146\016\001\0146p\001\0147R\001\0147x\001\0147\178\001\0147\238\001\014\n\164\018\208\b\210E\180/N\004>\000\000\tp\000\0008\030/N\0058\000\000\tr\000\0008^PH9NF\b\005h\000\000\015\006\014\018\000\000\000\000\0142\000\000\nB\000\000\000\000\000\000Y\156\007\b\000\000\005hS\222\000\000Y\188\007\b\000\000\000\000\019x\000\000\000\000\019\208\000\000\000\000\000\0009\152\000\000\000\000\000\000\000\0009\244\000\000\004\194\000\000\000\000:P\000\000\000\000\005hT\022\000\000Y\234\007\b\000\000\000\000\000\000\004\196\019\244\000\000\000\000\020\128\000\000\000\000\000\000&\212\000\000Tr\000\000Z\n\007\b\020\218\000\000\000\000\020\242\000\000\000\000F$T\156\005\158\000\000Z*\007\b\021\162\000\000\000\000Z4\007\b\021\250\000\000\000\000\022\180\000\000\000\000\000\000Z\142\007\b\023\002\000\000\r\238\023\158\000\000F\164\000\000\005hG\020\000\000\005hGT\000\000\005h\tv\000\000\000\000\000\000\000\000\000\000G\196\005h\000\000\006\006\007l\000\000\000\000\000\000\001\014\023\196\000\000\000\000\000\000\024\018\000\000\000\000\000\000\000\000\000\000\024`\000\000\000\000\000\000\001\014\024\174\000\000\024\212\000\000\000\000\000\000\025p\000\000\000\000\000\000\000\000U&\000\000\000\000\025\190\000\000\000\000\000\0009\254\001\014\026x\000\000\000\000\000\000:Z\001\014\026\208\000\000\000\000\000\000;\144\001\014\006x\026n\000\000\000\000;\234\001\014\027\128\000\000\000\000;\244\001\014\027\138\000\000\000\000<\002\001\014\000\000\000\000\028f\000\000\000\000<\\\001\014\028\140\000\000\000\000=\146\001\014\029(\000\000\000\000=\236\001\014\000\000=\246\001\014\000\000\014\212\000\000\000\000\001\014\000\000\000\000\029v\000\000\000\000\029\156\000\000\000\000\000\000\014$\000\000\000\000\0308\000\000\030\134\000\000\000\000\000\000/N\005\190\000\000\n^\000\000I\190\r\192\001\198\0316\000\000I\220\000\000\000\000\000\000J\030\000\000\000\000\000\000J\148\000\000J\212\000\000\000\000\031@\000\000\031\152\000\000\000\000\000\000\000\000>\028\000\000\000\000\000\000>b\001\014>\210\001\014\000\000\r\238 H\000\000\000\000 R\000\000?\138\000\000\000\000K8\000\000\000\000\000\000!.\000\000\000\000\000\000\000\000\001\014?\220\001\014\002\170\000\000\001\005H\004HD\005h@\000\001\014\005h@h\001\014@\186\003(A\030\001\014\000\000\000\000\000\000\014\"\000\000\000\000\000\000!T\000\000\000\000\000\000\000\000\003P\014\"\000\000!\240\000\000\000\000\000\000\000\000\003\156\014\"\000\000\015\130\000\000\000\000\000\000C\178\000\000\001&\000\000\005>\000\000\015<\000\000\001*\000\000\000\000\000\000\000\000\000\000\000\000\007\178\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\014\000\000\015\198\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\005N\014\"\000\000\000\000\000\000\000\000\000\000\007B\014\"\000\000\000\000\n\238\006\240\000,\">\000\000\014\162\011\002\015n\005n\tZ\000,\018\192\002t\tx\000,\000\000\"\238\000\000\b\232\000\000\015(\011\n\t\198\000\000\000\000\000\000\000\000\000\000\015P\003N\002z\000\000\000\000\000\000\000\000U>\000\000JX\000\000\011\022\000\000\011\024\000\000\000\000\000\000\000\000\003n\000\000\000\000\015\018\001\198\000\000\016\214\017D\001\198\001\198\000\000\001\198\0034-\244\015|\000\000\000\000\004^\000\000\017\178\001\198\001\198\000\000\019.\001\198\001\198\011F\000\000\"\248\000\000\000\000\011d\016`\000\000#P\n,\000\000\000\000\000\000\000\000\016*\000\000\000\000\000\000\000\000\001\014\000\000\000\000\000\000\000\000\000\000\007\254\014\"\000\000\000\000\015f\011\136\nl\000,\000\000\022D\000\000\002t\000\000\016\208\000\000\000\000\000\000\000\000\000\000$\004\000\000\001\014\000\000\000\000\022V\000\000\002t\000\000\023\164\000\000\002t\000\000\024@\002t\000\000\004\182\000\000\011\146\011\\\004\220\000\000\015v\015~\011\148\015\174\016\\\025\020\002t\011\130\000\000\011\190\0164\0166\n\130\011\198\016\020\011\202\016T\n\216\012>\016\030\000\000\000\000\n\220\012B\000\000\012F\003\144H\180\005h$\158\000\000\012j\001\128\000\000\000\000\015\214\011\212\012\160\000\000O\180\000\000Z\214\007\b\000\000\016\134\016\138\000\000\012\152\000\000\007\b\015\230\011\232\011L\016\n\001\b\000\000\000\000\000\000\000\000\012\024\012\172\000\000\012.\012\200\000\000\bF2\218\015\254\016\006\012p\t\192\012\250\000\000\012r\t\244\r\014\000\000\016\022\016\024\012v\016:\016\\\0252\002t\000\000\012x\016\172\000\000\011\228\000\000\r\016\000\000\016\176\000\000\025\228\004\218\016~\012\134\016\188\000\000\026\184\007Z\016\142\000\000\000\000\007&\006\142\r\028\000\000\026\222\002t\r@\000\000\007\210\000\000\016<\012\136\011\158\016\n\016H\016J\012\206\017\204\000\000\016b\002v\000\000\000\000\000\000\011\n\000\000\000\000\000\000\000\155\012\220\0164[2\007\b\000\000\000\000\r.\017\002\000\000\000\000\000\000\000\000\000\000\000\000[t\b0\000\000\r>\017d\000\000\000\000\000\000\000\000\000\000\000\000O\220\rL\000\000\rl\000\137\000\000\r\226\r\234\b\238\000\000\007\162U^\000\000\006\222\000\000[\182\007\b\007\b\000\000\000\000\b<\000\000\012T\000\000\bP\b<\b<\000\000\r\236Uh\007\b[\212\007\b\r\174\000\000\000\000\000\000\000\000\r\244\000\000\000\000\003P\000\000\tJ\016\184\014\004\017\232\016v\000\000\000\000\n@\n\000\016\190\000\000\000\000\014\b\017\240\016\134\000\000\000\000\001\014\000\000\022x\000\000\011\200\030\026\007\b\000\000 \196\023N\000\0005\028\000\000\000\000\000\000\b<\000\000\000\000\014\018\016\204\014 \018\000\016\148\000\000\000\0009\164\014(\016\220\000\000\000\000\000\000O>\000\000\000\000\000\000\000\000\000\000\000\000\000\000\014D\000\000\016\150\014(\027\242\n6\000\000\016\240\0140\t\178\000\000\011\168\017\254\017\166\014\130\016\246\000\000\000\000\000\000\017\002\0146\n\128\000\000\012\152\000\000$:M@\006\190\000\000\000\000\000\000\012&\016\190\0148\000\000\016\196\012&\000\000\017\192\014\220\017\020\000\000\000\000\000\000\007\b\004\"\t\178\007\156\000\000\000\000\000\000\000\000\016\208\014@\000\000\t.\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\007\b\016\190\014L\018B\016\208\000\000Kj/N\001\t\014P\016\158\b\224\001\016\014V\017d\000\000\000\000\0184%\012\000\000\000\000%f\000\000\014\230\000\000\006\182\000\000\000\000\000\000\000\000\000\000\000\000[\216\007\b\000\000\018:%\200\000\000\000\000&.\000\000\002f\014t\017\214\000\000\000\000K\172P\176\007\134\000\000\\\004\007\b&\134\000\000\000\000&\246\000\000\000\000\015\n\000\000\b\234\000\000\000\000\000\000\000\000\000\000\000\000P\216\000\000\000\000K\190P\242\t\194\000\000\\F\007\b'p\000\000\000\000'\150\000\000\000\000\014\132(R\0150\000\000\014\140\014\174\000\237\000\217\014\198\012\234\014\200\017\238(\170\015b\000\000\014\202\014\252\015P\000\000\000\197U\136\000\000\006\022\000\000\015\bL\030L6\002\198\016\182\004\182\000\000Ex\014\212\000\000\t\012\000\000\000\000\t\012\000\000\000\000\t\012\015\138\000\000\006X\t\012\018\000)^\015\156\000\000\t\012\000\000\000\000:\182\000\000\000\000\000\000\t\012\000\000\000\000\015\190\000\000\007\006\011\246\015\198\000\000\015FU\182\015\206\000\000\000\000\000\000\000\000\015\230\000\000\000\000\t\004\000\000\t\012<$\000\000\b|\t\012Lr\000\000\015\234\017N\015b\018\130\017\016\000\000L\132\015\250\017V\000\000\000\000\000\000\000\222\n\168\000\000\000\000\000\000\000\000\000\000\000\000\r\156\016\n\000\000\017\022\015j\012\244\007D\000\000\017t\000\000\000\000\000\000\000\000\016\018V\\\000\000\000\000\000\000\r\156\000\000\000\000\000\000\000\000\016$V~\000\000\000\000\000\000\000\000\000\000\000,\002t\000\000\000\000\005h\000\000\\\170\007\b\000\000\n\016\000\000\000\000\000\000\000\000)p\000\000\000\000\000\000\000\000\000\000\000\000\018\028\000\202\012\230\016\190\006\150\015\152\000\000\000D\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\208\007\212\015\156\000\000\007\184\014J\018\134\018.\016J\000\000\000\000\018\"\005\146\007\174\000\000\000\000\000\000\000\000\\\214\007\b\000\000]\200\024\224\000\000\000\000\000\000\000\000V\168\015\202\000\000\015\216\tB\000\000\000\000\001\198\011\024\000\000\000\000\000\000\000\000\000\000]\004\007\b\000\000]\254\027\252\000\000\000\000\000\000\029\168Ql\000\000]N\007\b\000\000^@\031<\000\000\000\000\000\000\000\000^n!\142\000\000\000\000\000\000\000\000^v!\158\000\000\000\000\000\000\000\000]n\007\b\000\000^\140#\140\000\000\000\000\000\000\000\000\0112\000\000\000\000\000\000\007\b\000\000\000\000)\170\0182\016P\000\000\000\000\018&\002\228\000\169\000\000\000\000\000\000\000\000\b@\014\190\018\134)\174\018<\016T\000\000\000\000\0182\b \001R\000\000\000\000\000\000\000\000\002t\000\000\016p\000\000\000\000\000\000*\006\000\000*\128\000\000\000\000\000\000\000\000\000\000M\002\000\000\000\000\000\000\0056\000\002\000\000\000\000\000\000\000\000\000\000\014x\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\168\000\000\000\000\000\000;\150\000\000\007\b\000\000\t\208\000\000\000\000\000\000\000\181\000\000\000\000\000\000\003\180\000\000\000\000\000\000\002\012\000\000\000,\000\000\003\028\000\000\002t\000\000\000\030\000\000\000\000\000\000A\144\005h\000\000\000\000\000N\000\000\000\000\000\000\000\000\007\178\005&\017V\005\136\000\000\000\000\000\000\000\000\000\000\000\000\017h\005\214\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0008<\000\000\016\142\000\000\000\000\000\000\000\000\005t\007XQ\152Q\204\000\000\000\000\016\148Q\206\000\000\000\000\000\000\016\178R\000\000\000\000\000\000\000\000\000"), (16, "\007o\002\179\003\234\002\180\002\181\001\221\000<\002\182\000\176\b\031\002o\001\021\b_\001\021\001\025\001\026\001\025\001\026\003\b\007p\007\132\000r\001\221\007r\000@\001\021\002r\003\t\001\025\001\026\000\176\000\182\002o\007s\007\133\001\021\002v\004\152\001\025\001\026\002z\003#\001C\002\129\007,\001\021\001\025\001\021\001\025\001\026\001\025\001-\007o\002\179\b`\002\180\002\181\001\221\007,\002\182\001C\001.\bw\002\181\001\221\007t\0008\001<\007,\007\136\003\b\007p\007\132\001C\001F\007r\001<\007.\007,\003\t\b\027\000\187\001C\001F\000\221\007s\007\133\002{\b\023\0011\001?\007.\004\165\003#\001\021\007/\001C\001\025\001-\001<\0071\007.\001\027\007u\007]\001C\001F\000\163\0021\007/\003%\007.\000\185\bo\0071\b\028\007v\007t\007H\007/\003\234\007\136\000n\002\185\0071\003'\001\025\000\186\007A\007/\002\159\007o\006*\b4\0071\by\0011\003\152\0078\004j\003\156\006*\007\137\001K\000A\006\140\001M\006+\006\140\bp\007p\006C\000]\001d\007r\007u\006+\007\138\006\213\002v\0062\006;\003%\002z\007s\001C\001K\000a\007v\006[\007y\000e\001T\007{\000\130\002\185\007\128\003'\001\025\001G\007\178\000\158\bz\000\170\003'\001\025\007\130\000\132\002\148\003(\006>\003.\006\158\000z\007\137\001T\007t\0034\007\179\002\006\003*\001<\004\194\000\163\004\200\007\131\006@\001C\001V\007\138\002{\004\167\007o\002\179\000\163\002\180\002\181\001\221\b2\002\182\007\150\001b\007y\002\161\0036\007{\001\025\007\170\007\128\006A\003\b\007p\007\132\007\180\007u\007r\b\018\001K\007\130\003\t\b\011\003(\007\181\003.\006]\007s\007\133\007v\000\140\0034\0008\002\006\003*\003#\000\143\003\234\001<\007\131\001[\002\160\000\174\000;\001C\001V\007o\002\179\001T\002\180\002\181\001\221\007\167\002\182\0008\007w\001\219\005\177\0036\007t\001\025\001<\000\134\007\136\003\b\007p\b9\001C\006`\007r\007x\002\162\001\021\003\t\001\021\001\025\001-\001\025\001-\007s\007\133\007\182\007\183\007y\001\230\006\215\007{\003#\002\131\007\128\007\184\007\185\006\165\006\166\001C\001K\001l\007u\001M\007\130\000\163\007\186\005;\001W\003%\001d\000\163\006\167\006\183\000\139\007v\007t\006\175\005;\004\195\b*\004\195\002\185\007\131\003'\001\025\000\158\001<\000\170\001T\000\176\006a\005\247\001C\001V\0008\005\180\001<\002\006\001]\000\145\007\137\001o\001C\001V\004\170\006+\0008\006f\bg\006c\000\176\007\190\002o\007u\b\028\007\138\002\148\001<\0033\000\163\003%\001]\000\171\001C\001V\005\248\007v\000\166\007y\000\136\002\148\007{\001<\002\185\007\128\003'\001\025\001b\001C\001F\001K\001\199\000\132\001M\007\130\001K\003\234\003(\bh\003.\001d\002\161\007\137\001<\001\025\0034\004\150\002\006\003*\001C\001F\001W\005s\007\131\000\175\002\161\000\146\007\138\001\025\001T\007o\002\179\001<\002\180\002\181\001\221\007\139\002\182\001C\001V\007y\002@\0036\007{\b;\001i\007\128\001K\003\b\007p\007\132\000:\001]\007r\b\026\005\016\007\130\003\t\001\202\003(\001K\003.\000\180\007s\007\133\006\248\000\222\0034\000\162\002\006\003*\003#\001Z\000>\002\135\007\131\000\192\002\162\001b\005\"\006\250\000\132\007o\002\179\005\205\002\180\002\181\001\221\005-\002\182\001l\002\162\005\"\001h\0036\007t\000\163\001W\001\211\007\201\003\b\007p\007\132\bk\001\021\007r\004\177\001\025\001\026\003\t\005\027\005\029\005\031\001<\004\152\007s\007\133\000\169\001<\001C\001V\002\026\001\221\003#\001C\001V\002\136\007\224\001]\002^\000\132\001\183\b.\007u\000\176\000\219\002o\007,\002^\002v\003%\bl\000\197\002z\004\185\001C\007v\007t\002v\000\212\000\163\007\141\002z\002\185\001C\003'\001\025\002u\001<\001\021\001<\000\225\001\025\001-\001C\001V\001C\001V\000\209\004\166\007.\001l\007\137\001<\b\029\b\030\000\160\005\016\001W\001C\001V\bc\002C\001W\000\163\007u\000\216\007\138\007/\0008\002{\006B\003%\0071\006\175\005;\001K\0075\007v\002{\007y\002c\000\164\007{\002|\002\185\007\128\003'\001\025\001]\002\148\001<\001o\002|\007\220\006\158\007\130\001C\001V\003(\006>\003.\004\162\bd\007\137\001W\001\025\0034\005\"\002\006\003*\0053\005\030\005\029\005\031\007\131\006@\001\219\001W\007\138\001\220\001\221\002\152\001\222\005'\002\161\000\163\0033\001\025\003\173\000\167\002\134\007y\004\170\0036\007{\0056\001C\007\128\006A\002^\001\223\003\148\007\151\001\225\001\226\001\231\0033\007\130\005(\002v\003(\000\163\003.\002z\003\152\001C\003\169\003\156\0034\003\247\002\006\003*\001\025\001-\007o\002\179\007\131\002\180\002\181\001\221\004\170\002\182\000\223\001K\003\234\001\215\007\252\bD\000\178\b\142\b\143\000\227\003\b\b\145\0033\0036\bS\007r\001<\004\196\002\162\003\t\003\234\003\234\001C\001V\002\159\007s\b\147\000\163\002{\004\b\001T\007o\002\179\003#\002\180\002\181\001\221\b\162\002\182\000\232\006\165\006\166\002|\002\159\b\131\002\181\001\221\b\154\003\158\003\b\b\155\003\156\005\177\001\232\007r\001\025\006\182\007t\003\t\001\021\006\175\005;\001\025\001\026\007s\b\163\001\233\000\181\004\229\001\025\007o\002\179\003#\002\180\002\181\001\221\000\163\002\182\003\176\003\177\005t\001W\007\159\b\139\002\181\001\221\bE\005/\003\b\007p\007\147\003:\007,\007r\004\197\007u\007t\003\t\005\217\005x\000\199\002\148\003%\007s\007\133\007\199\003\178\003\152\007v\003\153\003\156\003#\0052\000\132\001<\002\185\001<\003'\001\025\000\249\001C\001V\001C\001V\bF\007.\bT\000\253\002\006\bM\001C\b\150\001\252\002\163\007u\007t\002\161\000\163\001v\001\025\002\005\003%\002\006\007/\000\176\002b\002o\007v\0071\007\138\004\254\000\132\0072\002\160\002\185\002\146\003'\001\025\003\152\005u\003\193\003\156\007y\003\234\b\132\007{\003'\001\025\007\128\b\167\003\234\002u\002\160\007u\003\152\bN\004f\003\156\007\130\001W\003%\003(\000\217\003.\001K\001{\007v\001\169\007\138\0034\006\220\002\006\003*\002\185\001\170\003'\001\025\007\131\000\132\bO\001\012\007y\002\162\b\140\007{\003'\001\025\007\128\001K\005\001\001]\001M\007\137\001T\001\018\004\170\0036\007\130\001d\002\148\003(\bP\003.\000\228\007\182\007\183\004\164\007\138\0034\0033\002\006\003*\001\031\007\184\007\185\001\021\007\131\001T\001\025\001\026\007y\007\169\001\249\007{\007\186\005;\007\128\002\148\003\236\005\161\002^\002\149\000\163\002\144\002\161\0036\007\130\001\025\001\204\003(\002v\003.\001b\000\233\002z\b0\001C\0034\001\021\002\006\003*\001\025\001\026\007o\002\179\007\131\002\180\002\181\001\221\002\194\002\182\002\140\002\161\002\\\004.\001\025\001b\001\025\001-\b\154\000\250\003\b\b\155\000\163\0036\005\228\007r\001<\001\025\005\177\003\t\007,\001\025\001C\001V\006\224\007s\b\158\005\016\002\148\001\003\002{\007o\002\179\003#\002\180\002\181\001\221\004\236\002\182\002\162\001<\004\208\001\221\007'\002|\004?\001C\001V\003\234\003\b\007p\007\196\000\163\007.\007r\001<\001\132\007t\003\t\003\234\004\241\001C\001F\002\161\007s\007\143\001\025\002\162\003\234\000\132\002\159\007/\003#\002\241\001\021\001\005\0071\001\025\001\026\000\163\007<\001W\006\151\005\029\005\031\001\r\000\132\002\179\005\232\002\180\002\181\001\221\007\176\002\182\002\006\007u\007t\0015\001l\000\163\002^\003\234\003%\002\141\003\b\001W\0018\007,\007v\005\170\002v\006r\001]\003\t\002z\002\185\001C\003'\001\025\b&\005]\003\152\001K\006\239\003\156\001M\007\127\003#\002\140\002\162\b\161\005Q\001d\001\016\007u\006&\001]\005\223\005\016\001o\007.\003%\006s\006\188\006t\000\163\003\235\007v\005\234\007\138\b)\001T\001J\001<\002\185\000\163\003'\001\025\007/\001C\001F\002{\007y\0071\001<\007{\003\234\007N\007\128\001n\001C\001V\003\234\007\146\005\235\002|\006u\005\177\007\130\007\200\001\025\003(\001\019\003.\004\170\003h\001\221\000n\007\138\0034\006\255\002\006\003*\006\171\005\029\005\031\003%\007\131\0033\002\160\001b\007y\001r\000\163\007{\002^\001 \007\128\002_\002\185\002u\003'\001\025\006v\007\180\002v\0036\007\130\006*\002z\003(\001C\003.\007\181\001y\001\186\006w\006x\0034\006y\002\006\003*\001<\006+\005\234\001<\007\131\006,\001C\001V\001<\001C\001V\003+\006\015\001\127\001C\001F\001K\001\184\0063\007\188\000\163\002\006\006\189\0036\002\179\007\003\002\180\002\181\001\221\001\021\002\182\001\208\001\025\001\026\002{\003\226\001\221\001K\b\029\b\030\001M\003\b\001\130\003(\000\163\003.\004\170\001d\002|\006{\003\t\0034\006}\002\006\003*\006\130\006\142\004\138\006\175\005;\0033\001l\007,\000\163\003#\006\185\001T\001\180\001W\000\176\006\133\002o\006\190\006*\007K\003\234\001\181\002\179\0036\002\180\002\181\001\221\005\002\002\182\006\186\001n\006!\000\163\006+\001\025\002^\006-\0061\002t\003\b\007.\007U\001\240\002\245\001]\002v\000\163\001o\003\t\002z\002\148\001C\005\016\001\201\002^\b[\000\132\002~\007/\007\\\001b\002,\003#\0071\002v\002\148\006\158\007a\002z\000n\001C\007X\001\207\002\179\001<\002\180\002\181\001\221\003%\002\182\001C\001V\004\249\007\219\002R\002\161\005\001\007Z\001\025\007X\003\b\002\185\002T\003'\001\025\001<\002{\004\253\006D\003\t\002\161\001C\001V\001\025\b]\007Z\007\163\006\179\005\029\005\031\002|\003\234\000\163\003#\002*\002{\007[\000\176\006\145\002o\003\152\001\239\007\007\003\156\002\179\003+\002\180\002\181\001\221\002|\002\182\003%\002[\003\234\007[\003m\003s\005\192\003\234\001W\0073\003\b\002^\001C\002\185\002\128\003'\001\025\000\132\000\132\003\t\002\162\002v\001l\000\163\002\002\002z\003(\001C\003.\001W\005M\000\163\005\196\003#\0034\002\162\002\006\003*\001C\007\220\006-\002\174\002\179\002\177\002\180\002\181\001\221\003+\002\182\001K\002\193\003%\001P\006\165\006\166\000\176\002\148\005\251\006L\003\b\001]\0036\007\160\001\185\002\185\001K\003'\001\025\003\t\006\174\001<\000\163\002{\006\175\005;\005b\001C\001F\001T\003(\005A\003.\003#\005\011\005;\006\129\002|\0034\005W\002\006\003*\002\161\007X\002\179\001\025\002\180\002\181\001\221\003+\002\182\001\219\005\134\003%\002:\001\221\002\208\001\222\002\211\007Z\003\129\003\b\000\163\002\001\000\163\0036\002\185\002\217\003'\001\025\003\t\000\163\0020\000\132\004]\001\223\002\202\005K\001\225\001\226\001\231\003(\006-\003.\003#\002\250\006*\000\132\007[\0034\002F\002\006\003*\003\000\003f\005\139\002^\005\144\002D\002\156\003+\006+\003%\005E\001K\006K\002v\006[\002\162\002u\002z\005\001\001C\001<\002L\002\185\0036\003'\001\025\001C\001V\004\128\003\228\003\229\003\234\005C\000\163\002\148\000\163\001<\005\016\004\240\003(\001T\005P\001C\001V\000\163\007\222\005<\0034\004\246\002\006\003*\002\179\005\005\002\180\002\181\001\221\003+\002\182\005\023\005\025\003%\005\001\000\163\005\001\002{\003\234\005w\001\250\003\b\002\161\000\163\000\163\001\025\002\185\0036\003'\001\025\003\t\002|\004\239\001\233\006\135\0058\001\025\005B\001W\002Q\0008\003(\006]\003.\003#\b\r\005\029\005\031\002W\0034\005=\002\006\003*\002\179\001W\002\180\002\181\001\221\0008\002\182\003+\000\163\005\129\004\131\004\136\005\159\001\221\002\139\005V\001]\003\b\000\163\007O\005v\005|\000\163\0036\001<\003\234\003\t\003\234\000\163\000\163\001C\006`\007\220\004\238\002h\002\162\005\174\005;\005\211\003(\003#\003.\005\131\005\135\001C\006\140\001\252\0034\005\137\002\006\003*\006r\000\163\005\158\001\253\002\179\002\006\002\180\002\181\001\221\003%\002\182\002\179\005\173\002\180\002\181\001\221\000\163\002\182\0008\003\234\002j\003\b\002\185\0036\003'\001\025\005\239\005;\003\b\003\234\003\t\006s\b+\006t\000\163\002y\005\181\003\t\006a\000\163\000\163\004\232\006/\003\234\003#\001\025\001K\005\184\004\225\001S\006\147\003#\005\140\006+\005\145\006e\003+\006c\003%\002\138\002\179\000\163\002\180\002\181\001\221\006u\002\182\000\163\003\234\001]\004\222\002\185\000\163\003'\001\025\001T\001K\003\b\003\234\003\234\005\191\005\195\000\163\005\201\005\207\003\234\003\t\002\148\003(\0073\003.\005\219\005\238\004\211\006\155\005;\0034\005\169\002\006\003*\003#\001K\006v\003\234\001M\003+\000\163\005\182\004\218\003\234\001K\001d\001K\003%\006\140\006w\006x\000\163\006y\007~\003%\005\185\002\161\0036\002\173\001\025\002\185\005\243\003'\001\025\001T\005\147\002\176\002\185\006\000\003'\001\025\003(\002\179\003.\002\180\002\181\001\221\006\189\002\182\0034\005\193\002\006\003*\005\153\000\163\000\163\002\192\000\163\000\163\003\b\005\197\005\212\003\234\001<\003+\000\163\000\163\005\229\003\t\001C\001V\003+\002\207\003%\006{\004\127\0036\006}\002\210\006\006\006\130\006\142\003#\001b\002\216\005\233\002\185\006\017\003'\001\025\006\185\006\026\002\162\001<\007\174\005;\003(\003\234\004\235\001C\001V\000\163\bK\003(\0034\004\228\002\006\003*\000\163\006\186\006\028\0034\003\234\002\006\003*\002\235\002^\007\026\001<\002\197\003+\002\229\002\232\003\234\001C\001V\002v\001<\001W\001<\002z\0036\001C\001C\001V\001C\001V\003\234\0036\002\179\006:\002\180\002\181\001\221\002\179\002\182\002\180\002\181\001\221\000\163\002\182\003%\003(\002\249\003.\002\255\003\b\000\163\001W\001]\0034\003\021\002\006\003*\002\185\003\t\003'\001\025\003\234\006.\004B\007\192\004z\006 \0065\006?\001l\002{\001\219\003#\000\163\001\220\001\221\001W\001\222\001K\006F\0036\006P\001X\006g\002|\001W\002\179\001W\002\180\002\181\001\221\003+\002\182\006i\006o\001\223\001\241\006\127\001\225\001\226\001\231\006\132\003\237\003\b\006\144\006\157\003\234\001]\006|\006\177\002g\003\234\003\t\003\131\003|\006\193\001_\006\200\004`\004o\006\204\004v\b!\003(\001K\003.\003#\001\163\006\140\003\234\003\127\0034\000\163\002\006\003*\006\233\000\163\000\163\003\227\006\138\004S\003%\001\242\007\017\001\243\002\213\002\184\007M\003\234\000\163\004\169\000\163\001K\001T\002\185\001\139\003'\001\025\0036\002\185\004\188\003'\001\025\000\163\007\022\bL\002\179\000\163\002\180\002\181\001\221\000\163\002\182\003\234\000\163\000\163\007=\007\027\0079\000\163\001\250\001T\004\198\003\b\006\163\000\163\006\140\000\163\003+\006\214\000\163\001<\003\t\001\233\004\220\003%\001\025\001C\001V\004X\004D\004\245\003\234\007!\004y\000\163\003#\006\249\002\185\007)\003'\001\025\002\179\000\163\002\180\002\181\001\221\000\163\002\182\003\234\003(\007\"\003.\003\234\001\025\003(\007\019\003\234\0034\003\b\002\006\003*\004\247\003)\000\163\002\006\003*\001<\003\t\003\234\007R\003\234\003+\001C\001V\004P\000\163\000\163\000\163\003\234\007:\007\030\003#\001\025\007g\0036\001W\003\234\007}\001\252\002\179\003\234\002\180\002\181\001\221\001<\002\182\001\253\005\004\002\006\003\234\001C\001V\000\163\003(\003%\003.\003\b\0057\000\163\007@\007\177\0034\007\189\002\006\003*\003\t\005!\002\185\003\234\003'\001\025\003\234\004O\003\234\005,\005?\007L\005F\005U\003#\007P\001W\005`\001K\007T\007\215\005\130\003\234\0036\000\163\005{\002\179\007\217\002\180\002\181\001\221\007Y\002\182\007e\005}\003%\003+\003\234\000\163\005\128\003\234\007l\000\163\003\b\001W\005\143\005\133\001]\002\185\007z\003'\001\025\003\t\007\134\002\179\003\234\002\180\002\181\001\221\005\142\002\182\005\138\007\144\004G\005\141\000\163\003#\000\163\003(\005\157\003.\003\b\005\168\001K\005\167\001]\0034\005\172\002\006\003*\003\t\007\195\003+\003%\b\022\005\183\b%\003 \001K\005\194\000\163\001\157\001K\005\190\003#\001\154\002\185\000\163\003'\001\025\b1\005\206\005\200\0036\005\202\005\226\002\179\005\214\002\180\002\181\001\221\005\225\002\182\005\220\003(\b\148\003.\001T\b\159\005\224\005\237\001T\0034\003\b\002\006\003*\006O\005\242\001K\005\245\003+\001<\003\t\b\164\005\252\003%\006\004\001C\001V\003-\006\011\006\022\006N\006G\006H\006M\003#\006Q\002\185\0036\003'\001\025\006R\006q\002\179\006j\002\180\002\181\001\221\006k\002\182\006p\003(\003%\003.\006~\006\141\006\136\006\137\006\139\0034\003\b\002\006\003*\006\184\006\156\002\185\006\160\003'\001\025\003\t\006\162\003+\006\164\006\176\006\192\001<\003<\006\194\006\195\006\201\006\206\001C\001V\003#\006\210\001W\0036\006\228\006\235\002\179\001<\002\180\002\181\001\221\001<\002\182\001C\001V\007\028\003+\001C\001V\0074\003(\003%\003\253\003\b\007>\007n\007h\007i\0034\007m\002\006\003*\003\t\005&\002\185\007|\003'\001\025\007\129\003;\007\172\007\193\007\194\007\198\b\021\b\025\003#\001<\003(\b$\003.\b(\b~\001C\001V\0036\0034\001W\002\006\003*\001K\b\134\000\000\001\160\000\000\000\000\000\000\001\219\003+\003%\003\190\001\221\001W\001\222\000\000\000\000\001W\000\000\000\000\000\000\000\000\000\000\002\185\0036\003'\001\025\000\000\000\000\005%\001T\000\000\003\207\001\241\000\000\001\225\001\226\001\231\000\000\000\000\000\000\003(\000\000\003.\001]\000\000\000\000\000\000\001]\0034\000\000\002\006\003*\001W\000\000\000\000\003%\003+\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001K\000\000\000\000\000\000\002\185\000\000\003'\001\025\000\000\000\000\000\000\0036\000\000\003\212\003\228\003\229\000\000\000\000\000\000\0051\000\000\000\000\000\000\000\000\003(\000\000\003.\002\179\000\000\002\180\002\181\001\221\0034\002\182\002\006\003*\000\000\000\000\003+\000\000\000\000\000\000\000\000\000\000\003\b\000\000\000\000\000\000\002^\001<\000\000\004\251\001\250\003\t\000\000\001C\001V\000\000\002v\0036\003\143\000\000\002z\000\000\001C\001\233\000\000\003#\001\025\000\000\003(\002\179\003.\002\180\002\181\001\221\000\000\002\182\0034\000\000\002\006\003*\000\000\000\000\000\000\000\000\000\000\000\000\003\b\002\179\000\000\002\180\002\181\001\221\000\000\002\182\000\000\003\t\000\000\000\000\003\232\003\233\000\000\000\000\003\146\0036\003\b\000\000\000\000\002{\000\000\003#\000\000\001<\001W\003\t\000\000\000\000\000\000\001C\001V\000\000\003\172\002|\000\000\000\000\000\000\000\000\000\000\003#\000\000\001\252\000\000\000\000\000\000\000\000\003%\000\000\000\000\001\253\000\000\002\006\000\000\000\000\000\000\001]\000\000\000\000\000\000\002\185\000\000\003'\001\025\000\000\000\000\000\000\000\000\000\000\000\000\002\179\000\000\002\180\002\181\001\221\000\000\002\182\000\000\000\000\000\000\000\000\000\000\002\179\000\000\002\180\002\181\001\221\003\b\002\182\001W\000\000\003%\000\000\000\000\003+\000\000\003\t\000\000\000\000\000\000\000\000\000\000\000\000\003\175\002\185\000\000\003'\001\025\004\192\003%\003#\000\000\000\000\000\000\000\000\002\179\004\201\002\180\002\181\001\221\0055\002\182\002\185\000\000\003'\001\025\003(\002\179\003.\002\180\002\181\001\221\003\b\002\182\0034\000\000\002\006\003*\003+\000\000\000\000\003\t\004\214\000\000\003\b\000\000\000\000\000\000\003\185\000\000\000\000\000\000\000\000\003\t\000\000\003#\003+\000\000\000\000\000\000\003\188\0036\000\000\000\000\000\000\000\000\000\000\003#\000\000\000\000\003(\001K\003.\000\000\001\166\000\000\000\000\000\000\0034\003%\002\006\003*\000\000\000\000\000\000\000\000\000\000\000\000\003(\000\000\003.\002\184\002\185\000\000\003'\001\025\0034\000\000\002\006\003*\001T\000\000\000\000\000\000\004\205\0036\003'\001\025\001-\000\000\000\000\000\000\000\000\000\000\000\000\002\179\000\000\002\180\002\181\001\221\000\000\002\182\000\000\0036\003%\000\000\003+\000\000\001K\000\000\000\000\001M\003\b\000\000\001\171\000\000\003%\002\185\001d\003'\001\025\003\t\000\000\000\000\001K\000\000\004\195\001`\003\197\002\185\000\000\003'\001\025\000\000\001a\003#\001\172\001T\003(\002\179\003.\002\180\002\181\001\221\001\196\002\182\0034\000\000\002\006\003*\003(\003+\000\000\001T\000\000\000\000\003\b\000\000\003)\000\000\002\006\003*\000\000\003+\001<\003\t\000\000\000\000\000\000\000\000\001C\001V\003\202\0036\000\000\000\000\000\000\000\000\000\000\003#\000\000\000\000\000\000\003(\000\000\003.\001b\000\000\000\000\000\000\000\000\0034\000\000\002\006\003*\003(\000\000\003.\000\000\000\000\000\000\000\000\001b\0034\003%\002\006\003*\001\177\000\000\000\000\000\000\000\000\001K\000\000\000\000\006W\000\000\002\185\0036\003'\001\025\001<\000\000\000\000\000\000\000\000\000\000\001C\001V\001W\0036\000\000\002\179\000\000\002\180\002\181\001\221\001<\002\182\000\000\000\000\001T\000\000\001C\001V\000\000\000\000\000\000\003%\003\b\000\000\003+\000\000\000\000\000\000\000\000\000\000\000\000\003\t\000\000\001]\002\185\000\000\003'\001\025\003\205\000\000\000\000\000\000\000\000\000\000\002\179\003#\002\180\002\181\001\221\000\000\002\182\000\000\001l\000\000\000\000\000\000\003(\000\000\003.\001W\000\000\003\b\002^\001\187\0034\005[\002\006\003*\003+\000\000\003\t\002^\002v\000\000\005j\001W\002z\003\211\001C\000\000\000\000\002v\000\000\000\000\003#\002z\000\000\001C\000\000\000\000\001]\0036\001K\001o\000\000\006^\000\000\000\000\001<\000\000\003(\000\000\003.\000\000\001C\001V\001]\000\000\0034\000\000\002\006\003*\000\000\000\000\003%\000\000\000\000\000\000\000\000\000\000\000\000\001T\002\179\002{\002\180\002\181\001\221\002\185\002\182\003'\001\025\000\000\002{\000\000\000\000\0036\000\000\002|\000\000\003\b\000\000\002\179\000\000\002\180\002\181\001\221\002|\002\182\003\t\000\000\000\000\000\000\000\000\003%\000\000\003\214\000\000\000\000\003\b\000\000\000\000\003+\003#\001W\000\000\000\000\002\185\003\t\003'\001\025\000\000\000\000\000\000\000\000\003\240\000\000\000\000\000\000\000\000\000\000\002\179\003#\002\180\002\181\001\221\000\000\002\182\000\000\000\000\000\000\000\000\000\000\000\000\003(\001]\003.\000\000\003\b\000\000\000\000\003+\0034\000\000\002\006\003*\001<\003\t\000\000\000\000\000\000\000\000\001C\001V\003\244\000\000\000\000\000\000\000\000\000\000\002\179\003#\002\180\002\181\001\221\000\000\002\182\000\000\000\000\0036\000\000\000\000\003%\003(\000\000\003.\000\000\003\b\000\000\002^\000\000\0034\005n\002\006\003*\002\185\003\t\003'\001\025\002v\000\000\003%\000\000\002z\000\000\001C\000\000\003\250\000\000\002\179\003#\002\180\002\181\001\221\002\185\002\182\003'\001\025\0036\000\000\000\000\001W\000\000\000\000\000\000\000\000\003\b\000\000\002\179\003+\002\180\002\181\001\221\000\000\002\182\003\t\000\000\000\000\000\000\000\000\003%\000\000\000\000\000\000\001K\003\b\003\255\007\209\003+\003#\002{\000\000\001]\002\185\003\t\003'\001\025\000\000\000\000\000\000\000\000\003(\000\000\003.\002|\004\001\000\000\002^\003#\0034\005q\002\006\003*\001T\000\000\000\000\000\000\002v\000\000\003%\003(\002z\003.\001C\000\000\000\000\000\000\003+\0034\000\000\002\006\003*\002\185\000\000\003'\001\025\0036\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\179\000\000\002\180\002\181\001\221\000\000\002\182\000\000\000\000\0036\000\000\000\000\003%\003(\000\000\003.\000\000\003\b\000\000\000\000\003+\0034\002{\002\006\003*\002\185\003\t\003'\001\025\000\000\000\000\003%\000\000\000\000\000\000\000\000\002|\004\005\000\000\002\179\003#\002\180\002\181\001\221\002\185\002\182\003'\001\025\0036\000\000\000\000\001<\003(\000\000\003\253\000\000\003\b\001C\001V\003+\0034\000\000\002\006\003*\000\000\003\t\000\000\002^\000\000\000\000\005\127\000\000\000\000\000\000\000\000\000\000\004\r\002v\003+\003#\000\000\002z\002^\001C\000\000\005\204\000\000\0036\000\000\000\000\000\000\003(\002v\003\253\000\000\000\000\002z\000\000\001C\0034\000\000\002\006\003*\000\000\000\000\000\000\000\000\000\000\000\000\003%\003(\000\000\003\253\000\000\000\000\000\000\001W\000\000\0034\000\000\002\006\003*\002\185\000\000\003'\001\025\0036\002\179\002{\002\180\002\181\001\221\002\179\002\182\002\180\002\181\001\221\000\000\002\182\000\000\000\000\000\000\002|\002{\003\b\0036\000\000\001]\003%\003\b\000\000\000\000\000\000\003\t\000\000\000\000\003+\002|\003\t\000\000\004 \002\185\000\000\003'\001\025\000\000\000\000\003#\000\000\004\019\000\000\002^\003#\000\000\005\216\000\000\002\179\000\000\002\180\002\181\001\221\002v\002\182\000\000\000\000\002z\000\000\001C\003(\000\000\003\253\000\000\000\000\003\b\000\000\003+\0034\000\000\002\006\003*\000\000\000\000\003\t\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\025\001K\000\000\003#\001\140\000\000\000\000\000\000\000\000\000\000\0036\001\141\000\000\000\000\003(\000\000\003\253\000\000\000\000\002{\000\000\000\000\0034\003%\002\006\003*\000\000\000\000\003%\000\000\001T\000\000\000\000\002|\000\000\000\000\002\185\000\000\003'\001\025\000\000\002\185\000\000\003'\001\025\000\000\000\000\000\000\000\000\0036\000\000\002\179\000\000\002\180\002\181\001\221\002\179\002\182\002\180\002\181\001\221\000\000\002\182\000\000\002^\000\000\000\000\005\222\003\b\000\000\003+\000\000\003%\003\b\002v\003+\000\000\003\t\002z\001b\001C\000\000\003\t\002^\004%\002\185\005\231\003'\001\025\004*\000\000\003#\000\000\002v\000\000\000\000\003#\002z\000\000\001C\000\000\000\000\003(\000\000\003.\000\000\000\000\003(\000\000\003\253\0034\000\000\002\006\003*\001<\0034\000\000\002\006\003*\003+\001C\001V\000\000\001K\000\000\002{\007\232\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0036\000\000\002|\000\000\000\000\0036\000\000\002{\000\000\000\000\000\000\000\000\000\000\000\000\003(\001T\003\253\000\000\000\000\000\000\000\000\002|\0034\003%\002\006\003*\000\000\000\000\003%\002\179\000\000\002\180\002\181\001\221\000\000\002\182\002\185\000\000\003'\001\025\000\000\002\185\001W\003'\001\025\000\000\003\b\000\000\002\179\0036\002\180\002\181\001\221\000\000\002\182\003\t\000\000\000\000\000\000\000\000\000\000\001K\000\000\000\000\001M\003\b\0041\001\171\000\000\003#\003+\001d\000\000\001]\003\t\003+\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002^\0046\000\000\006\128\003#\001\172\001T\000\000\000\000\000\000\002v\000\000\000\000\001\194\002z\001<\001C\000\000\003(\000\000\003.\001C\001V\003(\000\000\003.\0034\000\000\002\006\003*\000\000\0034\000\000\002\006\003*\000\000\000\000\001K\000\000\000\000\001\155\000\000\002\179\000\000\002\180\002\181\001\221\001\156\002\182\000\000\000\000\000\000\000\000\0036\003%\001b\000\000\000\000\0036\003\b\000\000\002{\000\000\000\000\000\000\000\000\001T\002\185\003\t\003'\001\025\000\000\000\000\003%\000\000\002|\001\177\000\000\000\000\004;\001W\002\179\003#\002\180\002\181\001\221\002\185\002\182\003'\001\025\001<\000\000\000\000\000\000\000\000\000\000\001C\001V\003\b\000\000\002\179\003+\002\180\002\181\001\221\000\000\002\182\003\t\000\000\000\000\000\000\001]\000\000\000\000\000\000\001b\001K\003\b\004J\007\246\003+\003#\000\000\000\000\000\000\000\000\003\t\000\000\000\000\000\000\000\000\000\000\000\000\003(\000\000\003\253\000\000\004M\000\000\000\000\003#\0034\000\000\002\006\003*\001T\000\000\000\000\001l\000\000\001<\003%\003(\000\000\003\253\001W\001C\001V\000\000\001\187\0034\000\000\002\006\003*\002\185\000\000\003'\001\025\0036\000\000\000\000\000\000\000\000\001K\000\000\000\000\001M\000\000\002\179\001\188\002\180\002\181\001\221\001d\002\182\000\000\001]\0036\000\000\001o\003%\000\000\000\000\000\000\000\000\003\b\000\000\000\000\003+\000\000\000\000\001\190\001T\002\185\003\t\003'\001\025\000\000\006$\003%\000\000\004T\000\000\000\000\000\000\001W\000\000\002\179\003#\002\180\002\181\001\221\002\185\002\182\003'\001\025\000\000\000\000\000\000\001<\003(\000\000\003\253\000\000\003\b\001C\001V\003+\0034\000\000\002\006\003*\000\000\003\t\000\000\000\000\001]\000\000\000\000\000\000\004V\001b\000\000\000\000\000\000\000\000\003+\003#\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0036\000\000\000\000\000\000\003(\000\000\003\253\001\177\000\000\000\000\000\000\000\000\0034\000\000\002\006\003*\000\000\000\000\000\000\000\000\000\000\001<\003%\003(\000\000\003\253\000\000\001C\001V\001W\000\000\0034\000\000\002\006\003*\002\185\000\000\003'\001\025\0036\002\179\000\000\002\180\002\181\001\221\002\179\002\182\002\180\002\181\001\221\000\000\002\182\000\000\001K\000\000\000\000\007\243\003\b\0036\000\000\001]\003%\003\b\000\000\000\000\000\000\003\t\000\000\000\000\003+\000\000\003\t\000\000\004b\002\185\000\000\003'\001\025\004q\001l\003#\000\000\001T\000\000\000\000\003#\001W\000\000\000\000\002\179\006Z\002\180\002\181\001\221\000\000\002\182\000\000\000\000\000\000\000\000\000\000\003(\000\000\003.\000\000\000\000\003\b\000\000\003+\0034\000\000\002\006\003*\000\000\000\000\003\t\000\000\001]\000\000\000\000\001o\000\000\004t\000\000\000\000\000\000\000\000\000\000\001\219\003#\000\000\001\220\001\221\000\000\001\222\000\000\0036\000\000\000\000\000\000\003(\000\000\003.\000\000\000\000\000\000\000\000\000\000\0034\003%\002\006\003*\001\223\003\148\003%\001\225\001\226\001\231\000\000\000\000\000\000\000\000\002\185\000\000\003'\001\025\001<\002\185\000\000\003'\001\025\000\000\001C\001V\000\000\0036\000\000\002\179\000\000\002\180\002\181\001\221\002\179\002\182\002\180\002\181\001\221\000\000\002\182\000\000\000\000\000\000\000\000\000\000\003\b\000\000\003+\000\000\003%\003\b\000\000\003+\000\000\003\t\000\000\000\000\000\000\000\000\003\t\000\000\004\130\002\185\000\000\003'\001\025\004\133\000\000\003#\000\000\000\000\000\000\000\000\003#\000\000\000\000\000\000\000\000\000\000\003(\000\000\003.\001W\000\000\003(\000\000\003.\0034\001\232\002\006\003*\000\000\0034\000\000\002\006\003*\003+\000\000\000\000\000\000\001K\001\233\000\000\006[\001\025\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001]\0036\000\000\000\000\000\000\000\000\0036\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003(\001T\003.\000\000\000\000\000\000\000\000\000\000\0034\003%\002\006\003*\000\000\004c\003%\002\179\000\000\002\180\002\181\001\221\000\000\002\182\002\185\000\000\003'\001\025\000\000\002\185\000\000\003'\001\025\000\000\003\b\004i\002\179\0036\002\180\002\181\001\221\001\252\002\182\003\t\000\000\000\000\000\000\000\000\000\000\002\005\000\000\002\006\006]\003\b\004\143\000\000\000\000\003#\003+\000\000\000\000\000\000\003\t\003+\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\173\000\000\001K\003#\000\000\007\249\000\000\000\000\000\000\000\000\001K\000\000\000\000\007\255\001<\000\000\000\000\003(\000\000\003.\001C\006`\003(\000\000\003.\0034\000\000\002\006\003*\000\000\0034\001T\002\006\003*\000\000\000\000\000\000\000\000\000\000\001T\000\000\002\179\000\000\002\180\002\181\001\221\000\000\002\182\000\000\000\000\000\000\000\000\0036\003%\000\000\000\000\000\000\0036\003\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\185\003\t\003'\001\025\000\000\000\000\003%\000\000\000\000\000\000\000\000\000\000\004\181\006a\002\179\003#\002\180\002\181\001\221\002\185\002\182\003'\001\025\000\000\000\000\000\000\000\000\000\000\006+\000\000\006d\003\b\006c\000\000\003+\000\000\000\000\000\000\000\000\000\000\003\t\000\000\000\000\000\000\001]\000\000\000\000\004\243\000\000\001<\000\000\000\000\000\000\003+\003#\001C\001V\001<\000\000\000\000\000\000\000\000\000\000\001C\001V\000\000\003(\000\000\004\146\000\000\000\000\000\000\000\000\000\000\0034\000\000\002\006\003*\000\000\000\000\000\000\000\000\000\000\000\000\003%\003(\000\000\004\176\000\000\000\000\000\000\000\000\000\000\0034\000\000\002\006\003*\002\185\000\000\003'\001\025\0036\002\179\000\000\002\180\002\181\001\221\002\179\002\182\002\180\002\181\001\221\000\000\002\182\001W\000\000\000\000\000\000\000\000\003\b\0036\000\000\001W\003%\003\b\000\000\000\000\000\000\003\t\000\000\000\000\003+\000\000\003\t\000\000\005\000\002\185\000\000\003'\001\025\005:\000\000\003#\000\000\000\000\001]\000\000\003#\000\000\000\000\000\000\001\219\000\000\001]\003\190\001\221\000\000\001\222\000\000\000\000\000\000\000\000\000\000\003(\000\000\004\184\000\000\000\000\000\000\000\000\003+\0034\000\000\002\006\003*\003\207\001\241\000\000\001\225\001\226\001\231\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001K\000\000\000\000\b\b\000\000\000\000\000\000\0036\000\000\000\000\000\000\003(\000\000\003.\000\000\000\000\000\000\000\000\000\000\0034\003%\002\006\003*\000\000\000\000\003%\000\000\000\000\000\000\001T\003\212\003\228\003\229\002\185\000\000\003'\001\025\000\000\002\185\000\000\003'\001\025\000\000\000\000\000\000\000\000\0036\000\000\000\000\000\000\001\219\000\000\000\000\001\220\001\221\000\000\001\222\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003+\000\000\001\250\000\000\000\000\003+\000\000\001\223\001\241\000\000\001\225\001\226\001\231\000\000\000\000\001\233\000\000\000\000\001\025\000\000\001K\000\000\000\000\001M\000\000\000\000\000\000\000\000\000\000\000\000\001d\000\000\003(\005d\003.\000\000\000\000\003(\000\000\003.\0034\000\000\002\006\003*\000\000\0034\001<\002\006\003*\001T\003\232\005@\001C\001V\001\242\000\000\001\243\002\213\000\000\000\000\002\179\000\000\002\180\002\181\001\221\000\000\002\182\0036\000\000\006\158\000\000\000\000\0036\000\000\000\000\000\000\000\000\003\b\000\000\000\000\000\000\001\252\000\000\000\000\000\000\000\000\003\t\000\000\000\000\001\253\000\000\002\006\001\250\005\151\000\000\000\000\000\000\000\000\001b\000\000\003#\000\000\000\000\000\000\000\000\001\233\000\000\000\000\001\025\000\000\000\000\001W\000\000\006\161\000\000\002\179\004y\002\180\002\181\001\221\000\000\002\182\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\b\001<\000\000\000\000\000\000\000\000\000\000\001C\001V\003\t\001]\000\000\000\000\000\000\000\000\000\000\006\209\000\000\000\000\000\000\000\000\000\000\000\000\003#\000\000\000\000\000\000\000\000\002\179\000\000\002\180\002\181\001\221\000\000\002\182\000\000\000\000\003%\000\000\001\252\000\000\000\000\000\000\000\000\000\000\003\b\000\000\001\253\000\000\002\006\002\185\000\000\003'\001\025\003\t\006\165\006\166\000\000\000\000\001l\000\000\006\212\000\000\000\000\000\000\000\000\001W\000\000\003#\000\000\006\167\006\183\000\000\000\000\000\000\006\175\005;\002\179\000\000\002\180\002\181\001\221\000\000\002\182\003+\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003%\000\000\003\b\000\000\000\000\001]\000\000\000\000\001o\000\000\000\000\003\t\000\000\002\185\000\000\003'\001\025\000\000\006\227\000\000\000\000\000\000\000\000\000\000\003(\003#\003.\000\000\000\000\000\000\000\000\000\000\0034\000\000\002\006\003*\002\179\000\000\002\180\002\181\001\221\000\000\002\182\000\000\000\000\003%\000\000\003+\000\000\000\000\000\000\000\000\000\000\003\b\000\000\000\000\000\000\000\000\002\185\0036\003'\001\025\003\t\000\000\000\000\000\000\000\000\000\000\000\000\006\230\000\000\000\000\000\000\000\000\000\000\000\000\003#\000\000\000\000\003(\002\179\003.\002\180\002\181\001\221\000\000\002\182\0034\000\000\002\006\003*\000\000\003+\000\000\003%\000\000\000\000\003\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\t\002\185\000\000\003'\001\025\000\000\000\000\006\243\0036\000\000\000\000\000\000\000\000\001\219\003#\000\000\001\220\001\221\003(\001\222\003.\000\000\000\000\000\000\000\000\003\173\0034\000\000\002\006\003*\002\179\000\000\002\180\002\181\001\221\003+\002\182\001\223\003\148\003%\001\225\001\226\001\231\000\000\000\000\000\000\000\000\003\b\000\000\000\000\000\000\000\000\002\185\0036\003'\001\025\003\t\000\000\000\000\000\000\000\000\000\000\000\000\006\246\000\000\000\000\000\000\003(\000\000\003.\003#\001K\000\000\000\000\001M\0034\000\000\002\006\003*\000\000\000\000\001d\000\000\003%\000\000\000\000\003+\000\000\000\000\000\000\000\000\002\179\000\000\002\180\002\181\001\221\002\185\002\182\003'\001\025\001T\000\000\0036\000\000\000\000\000\000\000\000\000\000\003\b\000\000\002\179\000\000\002\180\002\181\001\221\000\000\002\182\003\t\003(\000\000\003.\000\000\001\232\000\000\007\011\000\000\0034\003\b\002\006\003*\003+\003#\000\000\000\000\000\000\001\233\003\t\000\000\001\025\003%\000\000\000\000\000\000\007\014\000\000\000\000\000\000\003\176\003\179\001b\003#\000\000\002\185\0036\003'\001\025\000\000\000\000\000\000\000\000\000\000\000\000\003(\000\000\003.\000\000\000\000\000\000\000\000\000\000\0034\000\000\002\006\003*\000\000\003\178\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001<\000\000\003+\000\000\000\000\000\000\001C\001V\000\000\000\000\000\000\000\000\000\000\0036\000\000\000\000\003%\001\252\000\000\000\000\002\179\000\000\002\180\002\181\001\221\002\005\002\182\002\006\000\000\002\185\000\000\003'\001\025\000\000\003(\003%\003.\003\b\000\000\000\000\000\000\000\000\0034\000\000\002\006\003*\003\t\000\000\002\185\000\000\003'\001\025\000\000\007\018\000\000\000\000\000\000\000\000\001l\000\000\003#\000\000\000\000\003+\001\219\001W\000\000\003\190\001\221\0036\001\222\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003+\000\000\000\000\000\000\000\000\000\000\003\207\001\241\000\000\001\225\001\226\001\231\000\000\003(\001]\003.\000\000\002i\000\000\000\000\000\000\0034\000\000\002\006\003*\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003(\000\000\003.\000\000\000\000\000\000\000\000\000\000\0034\000\000\002\006\003*\000\000\000\000\000\000\003%\0036\000\000\000\000\000\000\003\212\003\228\003\229\000\000\000\000\000\000\000\000\000\000\002\185\000\000\003'\001\025\000\000\000\000\000\000\0036\000\000\000\000\000\000\000\000\001\219\000\000\000\000\003\190\001\221\000\000\001\222\000\000\000\000\001\219\000\000\000\000\001\220\001\221\002\179\001\222\002\180\002\181\001\221\001\250\002\182\000\000\003+\000\000\003\207\001\241\000\000\001\225\001\226\001\231\000\000\000\000\001\233\001\223\001\241\001\025\001\225\001\226\001\231\000\000\005S\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001K\000\000\001K\001M\000\000\001M\003(\000\000\003.\000\000\001d\007\166\001d\000\000\0034\000\000\002\006\003*\000\000\003\232\007\029\000\000\003\212\003\228\003\229\000\000\000\000\000\000\000\000\001T\000\000\001T\001\242\000\000\001\243\002\213\002\179\000\000\002\180\002\181\001\221\0036\002\182\000\000\000\000\000\000\000\000\000\000\000\000\006\158\001\252\006\158\000\000\003\b\000\000\000\000\000\000\000\000\001\253\000\000\002\006\001\250\003\t\000\000\000\000\000\000\000\000\000\000\000\000\b5\001\250\000\000\000\000\000\000\001\233\002\184\003#\001\025\001b\000\000\001b\000\000\000\000\001\233\000\000\000\000\001\025\000\000\002\185\000\000\003'\001\025\000\000\b\020\004y\b#\000\000\002\179\000\000\002\180\002\181\001\221\000\000\002\182\000\000\000\000\000\000\000\000\000\000\003\232\007?\000\000\000\000\001<\003\b\001<\000\000\000\000\000\000\001C\001V\001C\001V\003\t\000\000\000\000\000\000\000\000\000\000\000\000\b7\000\000\000\000\000\000\000\000\000\000\000\000\003#\000\000\000\000\001\252\000\000\000\000\000\000\000\000\003%\000\000\000\000\001\253\001\252\002\006\000\000\000\000\000\000\003(\000\000\000\000\001\253\002\185\002\006\003'\001\025\003)\000\000\002\006\003*\000\000\006\165\006\166\006\165\006\166\001l\000\000\001l\000\000\000\000\000\000\000\000\001W\000\000\001W\000\000\006\167\006\183\006\167\006\183\000\000\006\175\005;\006\175\005;\001K\003+\000\000\001M\000\000\000\000\000\000\000\000\000\000\000\000\001d\000\000\000\000\000\000\000\000\003%\000\000\000\000\001]\000\000\001]\001o\000\000\001o\000\000\000\000\000\000\000\000\002\185\001T\003'\001\025\000\000\003(\000\000\003.\001\219\000\000\000\000\001\220\001\221\0034\001\222\002\006\003*\000\000\000\000\000\000\000\000\006\158\002\179\000\000\002\180\002\181\001\221\000\000\002\182\000\000\000\000\000\000\001\223\001\241\003+\001\225\001\226\001\231\000\000\003\b\0036\000\000\000\000\002\179\000\000\002\180\002\181\001\221\003\t\002\182\001b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\b\002\179\003#\002\180\002\181\001\221\003(\002\182\003.\003\t\000\000\000\000\000\000\000\000\0034\000\000\002\006\003*\000\000\001\242\000\000\001\243\002\n\003#\000\000\001<\000\000\004B\000\000\000\000\000\000\001C\001V\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\219\0036\000\000\001\220\001\221\000\000\001\222\000\000\000n\000\000\000\000\000\000\000\000\000\000\004C\000\000\000\000\001\250\000\000\000\000\000\000\000\000\000\000\000\000\001\223\001\241\000\000\001\225\001\226\001\231\001\233\003%\000\000\001\025\000\000\0027\000\000\000\000\000\000\006\165\006\166\000\000\000\000\001l\002\185\000\000\003'\001\025\000\000\000\000\001W\000\000\003%\000\000\b\016\b\017\000\000\000\000\000\000\006\175\005;\000\000\000\000\000\000\000\000\002\185\000\000\003'\001\025\000\000\002\184\001\242\000\000\001\243\002'\000\000\000\000\000\000\003+\000\000\000\000\001]\000\000\002\185\001o\003'\001\025\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\252\000\000\000\000\003+\000\000\000\000\000\000\000\000\001\253\000\000\002\006\000\000\000\000\001\250\003(\000\000\005e\000\000\000\000\000\000\000\000\000\000\0034\000\000\002\006\003*\001\233\000\000\004E\001\025\001\219\000\000\000\000\001\220\001\221\003(\001\222\005J\000\000\000\000\000\000\000\000\000\000\0034\001\219\002\006\003*\001\220\001\221\0036\001\222\000\000\000\000\003(\001\223\001\241\000\000\001\225\001\226\001\231\000\000\003)\000\000\002\006\003*\0023\000\000\000\000\001\223\001\241\0036\001\225\001\226\001\231\000\000\000\000\000\000\000\000\000\000\002$\000\000\000\000\000\000\000\000\000\000\001\219\000\000\000\000\001\220\001\221\000\000\001\222\001\252\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\253\001\242\002\006\001\243\002'\000\000\000\000\000\000\000\000\001\223\001\241\000\000\001\225\001\226\001\231\001\242\000\000\001\243\002'\000\000\002)\002\179\000\000\002\180\002\181\001\221\000\000\002\182\000\000\000\000\000\000\000\000\000\000\000\000\001K\000\000\000\000\001M\003\b\001\250\000\000\000\000\000\000\000\000\001d\000\000\000\000\003\t\000\000\000\000\000\000\000\000\001\233\001\250\000\000\001\025\001\242\000\000\001\243\002'\000\000\003#\000\000\001T\000\000\001e\001\233\000\000\000\000\001\025\000\000\000\000\000\000\000\000\000\000\007\203\000\000\001\219\000\000\000\000\001\220\001\221\000\000\001\222\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\250\000\000\000\000\000\000\000\000\000\000\000\000\001\223\001\241\000\000\001\225\001\226\001\231\001\233\000\000\000\000\001\025\000\000\001b\000\000\000\000\000\000\000\000\000\000\001\252\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\253\000\000\002\006\000\000\003%\000\000\001\252\001\219\000\000\000\000\001\220\001\221\000\000\001\222\001\253\000\000\002\006\002\185\000\000\003'\001\025\001<\001\242\000\000\001\243\002\213\000\000\001C\001V\000\000\000\000\001\223\001\241\000\000\001\225\001\226\001\231\001\219\000\000\000\000\001\220\001\221\002\179\001\222\002\180\002\181\001\221\001\252\002\182\000\000\000\000\003+\000\000\000\000\000\000\001\253\000\000\002\006\000\000\003\b\001\250\001\223\001\241\000\000\001\225\001\226\001\231\000\000\003\t\000\000\000\000\001\219\000\000\001\233\001\220\001\221\001\025\001\222\001\242\001l\001\243\002\222\003#\003(\004u\004\217\001W\000\000\000\000\000\000\001\142\0034\000\000\002\006\003*\001\223\001\241\000\000\001\225\001\226\001\231\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\242\000\000\001\243\002\222\000\000\000\000\000\000\000\000\001\250\001]\0036\000\000\001o\000\000\002\179\000\000\002\180\002\181\001\221\000\000\002\182\001\233\000\000\000\000\001\025\000\000\000\000\000\000\000\000\000\000\000\000\001\252\000\000\000\000\001\242\000\000\001\243\003\162\001\250\001\253\004\209\002\006\000\000\003%\002\179\000\000\002\180\002\181\001\221\000\000\002\182\001\233\000\000\002\231\001\025\000\000\002\185\000\000\003'\001\025\000\000\003\b\000\000\000n\000\000\002\179\000\000\002\180\002\181\001\221\003\t\002\182\001\250\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\b\002\228\003#\001\233\000\000\001\252\001\025\000\000\003+\003\t\000\000\000\000\000\000\001\253\000\000\002\006\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003#\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\252\000\000\000\000\000\000\000\000\003(\002\184\004F\001\253\000\000\002\006\000\000\000\000\0034\000\000\002\006\003*\000\000\000\000\002\185\000\000\003'\001\025\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\252\000\000\003%\000\000\000\000\000\000\0036\000\000\001\253\000\000\002\006\000\000\000\000\000\000\000\000\002\185\000\000\003'\001\025\000\000\000\000\000\000\000\000\003%\002\179\000\000\002\180\002\181\001\221\002\179\002\182\002\180\002\181\001\221\000\000\002\182\002\185\000\000\003'\001\025\000\000\003\b\000\000\000\000\000\000\000\000\003\b\000\000\000\000\003+\003\t\003(\000\000\000\000\000\000\003\t\000\000\000\000\000\000\003)\000\000\002\006\003*\000\000\003#\000\000\000\000\000\000\000\000\003#\003+\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003(\002\179\003\238\002\180\002\181\001\221\000\000\002\182\0034\000\000\002\006\003*\000\000\000\000\000\000\000\000\000\000\000\000\003\b\000\000\000\000\003(\000\000\0030\000\000\000\000\000\000\003\t\000\000\0034\000\000\002\006\003*\000\000\000\000\0036\000\000\000\000\000\000\000\000\000\000\003#\000\000\000\000\000\000\002\179\000\000\002\180\002\181\001\221\000\000\002\182\003%\000\000\000\000\000\000\0036\003%\000\000\000\000\000\000\000\000\003\b\000\000\000\000\002\185\000\000\003'\001\025\000\000\002\185\003\t\003'\001\025\001K\000\000\000\000\001\161\000\000\000\000\000\000\000\000\000\000\000\000\001\162\003#\000\000\000\000\000\000\002\179\000\000\002\180\002\181\001\221\002\179\002\182\002\180\002\181\001\221\003+\002\182\000\000\000\000\001T\003+\000\000\003\b\000\000\000\000\000\000\003%\003\b\000\000\000\000\000\000\003\t\000\000\000\000\000\000\000\000\003\t\000\000\000\000\002\185\000\000\003'\001\025\000\000\000\000\003#\000\000\003(\000\000\0032\003#\000\000\003(\000\000\0037\0034\000\000\002\006\003*\000\000\0034\000\000\002\006\003*\000\000\000\000\000\000\000\000\001b\000\000\003%\000\000\000\000\003+\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0036\002\185\000\000\003'\001\025\0036\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\006r\000\000\000\000\001<\000\000\003(\000\000\003>\000\000\001C\001V\000\000\000\000\0034\003%\002\006\003*\003+\000\000\003%\000\000\000\000\002\179\000\000\002\180\002\181\001\221\002\185\002\182\003'\001\025\006s\002\185\006t\003'\001\025\000\000\000\000\000\000\003\b\0036\002\179\000\000\002\180\002\181\001\221\000\000\002\182\003\t\003(\000\000\003@\000\000\000\000\000\000\000\000\000\000\0034\003\b\002\006\003*\003+\003#\000\000\000\000\006u\003+\003\t\001W\000\000\002\179\000\000\002\180\002\181\001\221\000\000\002\182\000\000\000\000\000\000\000\000\003#\000\000\000\000\0036\000\000\000\000\003\b\000\000\000\000\000\000\000\000\000\000\003(\000\000\003B\003\t\000\000\003(\001]\003D\0034\006v\002\006\003*\000\000\0034\000\000\002\006\003*\003#\000\000\000\000\000\000\000\000\006w\006x\000\000\006y\002\179\000\000\002\180\002\181\001\221\000\000\002\182\000\000\000\000\0036\000\000\000\000\003%\000\000\0036\000\000\000\000\003\b\000\000\000\000\000\000\000\000\000\000\000\000\006\187\002\185\003\t\003'\001\025\000\000\000\000\003%\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\179\003#\002\180\002\181\001\221\002\185\002\182\003'\001\025\000\000\000\000\000\000\006{\000\000\000\000\006}\000\000\003\b\006\130\006\142\003+\003%\000\000\000\000\000\000\000\000\003\t\000\000\006\185\000\000\000\000\000\000\000\000\000\000\002\185\000\000\003'\001\025\000\000\003+\003#\000\000\000\000\000\000\000\000\000\000\000\000\006\186\000\000\000\000\000\000\000\000\003(\000\000\003F\000\000\000\000\000\000\000\000\000\000\0034\000\000\002\006\003*\000\000\000\000\000\000\000\000\003+\000\000\003%\003(\000\000\003H\000\000\000\000\000\000\000\000\000\000\0034\000\000\002\006\003*\002\185\000\000\003'\001\025\0036\002\179\000\000\002\180\002\181\001\221\000\000\002\182\000\000\000\000\000\000\000\000\000\000\003(\000\000\003J\000\000\000\000\003\b\0036\000\000\0034\003%\002\006\003*\000\000\000\000\003\t\000\000\000\000\003+\000\000\000\000\000\000\000\000\002\185\000\000\003'\001\025\000\000\002\179\003#\002\180\002\181\001\221\000\000\002\182\000\000\0036\000\000\000\000\000\000\000\000\000\000\000\000\001K\000\000\003\b\006[\000\000\000\000\000\000\003(\000\000\003L\000\000\003\t\000\000\000\000\003+\0034\000\000\002\006\003*\000\000\000\000\000\000\000\000\000\000\002\179\003#\002\180\002\181\001\221\001T\002\182\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\b\0036\000\000\000\000\000\000\003(\000\000\003N\000\000\003\t\000\000\000\000\000\000\0034\003%\002\006\003*\000\000\000\000\000\000\000\000\000\000\002\179\003#\002\180\002\181\001\221\002\185\002\182\003'\001\025\000\000\000\000\000\000\000\000\000\000\000\000\006]\000\000\003\b\0036\002\179\000\000\002\180\002\181\001\221\000\000\002\182\003\t\000\000\000\000\000\000\000\000\003%\000\000\000\000\000\000\000\000\003\b\000\000\000\000\003+\003#\000\000\000\000\000\000\002\185\003\t\003'\001\025\000\000\002\179\001<\002\180\002\181\001\221\000\000\002\182\001C\006`\000\000\003#\000\000\000\000\000\000\000\000\000\000\000\000\003\b\000\000\000\000\000\000\003%\003(\000\000\003P\000\000\003\t\000\000\000\000\003+\0034\000\000\002\006\003*\002\185\000\000\003'\001\025\000\000\000\000\003#\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\179\000\000\002\180\002\181\001\221\000\000\002\182\000\000\000\000\0036\000\000\000\000\003%\003(\000\000\003R\000\000\003\b\006a\000\000\003+\0034\000\000\002\006\003*\002\185\003\t\003'\001\025\000\000\000\000\003%\000\000\006+\000\000\006b\000\000\006c\000\000\000\000\003#\000\000\000\000\000\000\002\185\000\000\003'\001\025\0036\001]\000\000\000\000\003(\000\000\003T\000\000\000\000\000\000\000\000\003+\0034\003%\002\006\003*\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\185\000\000\003'\001\025\003+\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0036\000\000\000\000\000\000\003(\000\000\003V\000\000\000\000\000\000\000\000\000\000\0034\000\000\002\006\003*\000\000\000\000\000\000\000\000\000\000\003+\003%\003(\000\000\003X\002\179\000\000\002\180\002\181\001\221\0034\002\182\002\006\003*\002\185\000\000\003'\001\025\0036\000\000\000\000\000\000\003\b\000\000\002\179\000\000\002\180\002\181\001\221\000\000\002\182\003\t\003(\000\000\003Z\000\000\000\000\0036\000\000\000\000\0034\003\b\002\006\003*\000\000\003#\000\000\000\000\003+\000\000\003\t\000\000\000\000\002\179\000\000\002\180\002\181\001\221\000\000\002\182\000\000\000\000\000\000\000\000\003#\000\000\000\000\0036\000\000\000\000\003\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\t\003(\000\000\003\\\002\179\000\000\002\180\002\181\001\221\0034\002\182\002\006\003*\000\000\003#\000\000\000\000\000\000\000\000\000\000\000\000\003\b\000\000\000\000\000\000\000\000\000\000\000\000\001\219\000\000\003\t\001\220\001\221\000\000\001\222\003%\0036\000\000\000\000\000\000\003\144\000\000\007o\000\000\003#\000\000\000\000\000\000\002\185\003\147\003'\001\025\001\223\003\148\003%\001\225\001\226\001\231\000\000\000\000\001\219\b\145\000\000\001\220\001\221\007r\001\222\002\185\000\000\003'\001\025\000\000\003\144\000\000\000\000\007s\000\000\000\000\000\000\000\000\000\000\003\147\003+\003%\001\223\003\148\000\000\001\225\001\226\001\231\000\000\000\000\000\000\000\000\000\000\000\000\002\185\000\000\003'\001\025\000\000\003+\000\000\000\000\000\000\000\000\000\000\007t\000\000\000\000\000\000\000\000\000\000\003%\003(\000\000\003^\000\000\000\000\000\000\000\000\000\000\0034\000\000\002\006\003*\002\185\000\000\003'\001\025\003+\000\000\000\000\003(\000\000\003`\000\000\001\232\000\000\000\000\000\000\0034\000\000\002\006\003*\007u\000\000\000\000\000\000\0036\001\233\000\000\000\000\001\025\000\000\000\000\000\000\000\000\007v\000\000\003+\000\000\003(\000\000\003b\000\000\000\000\000\000\0036\001\232\0034\000\000\002\006\003*\000\000\000\000\000\000\000\000\000\000\000\000\001\219\b\146\001\233\001\220\001\221\001\025\001\222\000\000\000\000\000\000\003\149\000\000\003(\000\000\003d\000\000\000\000\0036\000\000\007x\0034\000\000\002\006\003*\001\223\001\241\000\000\001\225\001\226\001\231\000\000\003\168\007y\000\000\000\000\007{\001\252\001\219\007\128\000\000\001\220\001\221\003\149\001\222\002\005\000\000\002\006\0036\007\130\003\144\000\000\000\000\000\000\001K\000\000\000\000\006[\000\000\003\147\000\000\000\000\001\223\003\148\003\151\001\225\001\226\001\231\007\131\001\252\000\000\000\000\001\242\000\000\001\243\003\135\000\000\002\005\000\000\002\006\000\000\000\000\000\000\001T\001\219\000\000\000\000\001\220\001\221\002\179\001\222\002\180\002\181\001\221\000\000\002\182\003\144\000\000\000\000\000\000\000\000\000n\000\000\000\000\000\000\003\147\003\b\000\000\001\223\003\148\001\250\001\225\001\226\001\231\000\000\003\t\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\233\000\000\000\000\001\025\000\000\000\000\003#\001\219\000\000\006]\001\220\001\221\002\179\001\222\002\180\002\181\001\221\000\000\002\182\000\000\000\000\000\000\000\000\000\000\001\232\000\000\000\000\000\000\000\000\003\b\000\000\001\223\001\241\000\000\001\225\001\226\001\231\001\233\003\t\000\000\001\025\000\000\000\000\000\000\001<\000\000\000\000\000\000\000\000\000\000\001C\006`\003#\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\252\000\000\001K\000\000\001\232\006[\000\000\000\000\001\253\003%\002\006\003\149\001\242\000\000\001\243\002\222\000\000\001\233\000\000\000\000\001\025\000\000\002\185\000\000\003'\001\025\000\000\000\000\000\000\000\000\000\000\001T\003\150\000\000\000\000\000\000\000\000\001\252\000\000\000\000\000\000\000\000\000\000\006a\000\000\002\005\000\000\002\006\000\000\000\000\001\250\000\000\000\000\000\000\000\000\003%\003+\003\149\006+\000\000\006n\000\000\006c\001\233\000\000\000\000\001\025\000\000\002\185\000\000\003'\001\025\000\000\000\000\001]\000\000\000\000\000\000\003\155\000\000\006]\000\000\000\000\001\252\000\000\000\000\000\000\000\000\003(\000\000\004\017\002\005\000\000\002\006\000\000\003\160\0034\000\000\002\006\003*\000\000\002\179\003+\002\180\002\181\001\221\000\000\002\182\000\000\000\000\000\000\000\000\000\000\000\000\001K\001<\000\000\001M\003\b\000\000\000\000\001C\006`\0036\001d\000\000\000\000\003\t\000\000\001\252\000\000\000\000\000\000\000\000\003(\000\000\004\023\001\253\000\000\002\006\000\000\003#\0034\001T\002\006\003*\002\179\000\000\002\180\002\181\001\221\002\179\002\182\002\180\002\181\001\221\000\000\002\182\002\179\000\000\002\180\002\181\001\221\003\b\002\182\000\000\000\000\000\000\003\b\0036\000\000\000\000\003\t\000\000\000\000\003\b\000\000\003\t\000\000\000\000\006a\000\000\000\000\000\000\003\t\001K\003#\bW\006[\000\000\000\000\003#\001b\000\000\000\000\006+\000\000\007E\003#\006c\000\000\000\000\000\000\002\179\000\000\002\180\002\181\001\221\000\000\002\182\003%\001]\000\000\000\000\001T\000\000\000\000\000\000\000\000\000\000\003\b\000\000\000\000\002\185\000\000\003'\001\025\001<\000\000\003\t\000\000\000\000\000\000\001C\001V\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003#\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003%\000\000\003+\000\000\000\000\003%\000\000\000\000\006]\000\000\000\000\000\000\003%\002\185\000\000\003'\001\025\000\000\002\185\000\000\003'\001\025\000\000\000\000\000\000\002\185\000\000\003'\001\025\000\000\001l\000\000\000\000\000\000\003(\000\000\004\029\001W\000\000\000\000\000\000\bX\0034\001<\002\006\003*\000\000\003+\000\000\001C\006`\000\000\003+\000\000\000\000\000\000\000\000\003%\000\000\003+\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001]\0036\002\185\001o\003'\001\025\000\000\000\000\000\000\000\000\000\000\003(\000\000\004#\000\000\000\000\003(\000\000\004(\0034\000\000\002\006\003*\003(\0034\004-\002\006\003*\000\000\000\000\000\000\0034\000\000\002\006\003*\002\179\003+\002\180\002\181\001\221\006a\002\182\000\000\000\000\000\000\000\000\0036\000\000\000\000\000\000\000\000\0036\003\b\000\000\000\000\006+\000\000\007_\0036\006c\000\000\003\t\000\000\000\000\000\000\000\000\000\000\000\000\003(\000\000\0044\001]\000\000\000\000\000\000\003#\0034\000\000\002\006\003*\002\179\000\000\002\180\002\181\001\221\002\179\002\182\002\180\002\181\001\221\000\000\002\182\000\000\000\000\000\000\000\000\000\000\003\b\000\000\000\000\000\000\000\000\003\b\0036\001\219\000\000\003\t\001\220\001\221\000\000\001\222\003\t\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003#\000\000\000\000\000\000\000\000\003#\000\000\000\000\001\223\001\241\000\000\001\225\001\226\001\231\000\000\000\000\000\000\000\000\000\000\002\179\000\000\002\180\002\181\001\221\003%\002\182\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\b\002\185\000\000\003'\001\025\000\000\000\000\000\000\000\000\003\t\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\242\000\000\001\243\002\213\003#\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003%\000\000\003+\000\000\000\000\003%\002\179\000\000\002\180\002\181\001\221\000\000\002\182\002\185\000\000\003'\001\025\000\000\002\185\000\000\003'\001\025\000\000\003\b\001\250\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\t\000\000\003(\000\000\0049\001\233\000\000\000\000\001\025\000\000\0034\000\000\002\006\003*\003#\003+\004x\000\000\000\000\000\000\003+\000\000\000\000\000\000\000\000\000\000\000\000\003%\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0036\000\000\000\000\002\185\000\000\003'\001\025\000\000\000\000\000\000\003(\000\000\004>\000\000\000\000\003(\000\000\004A\0034\000\000\002\006\003*\000\000\0034\000\000\002\006\003*\000\000\000\000\001\219\000\000\000\000\002:\001\221\001\252\001\222\000\000\003+\000\000\000\000\000\000\000\000\001\253\000\000\002\006\0036\003%\000\000\000\000\000\000\0036\000\000\000\000\001\223\002\202\000\000\001\225\001\226\001\231\002\185\000\000\003'\001\025\000\000\000\000\000\000\000\000\000\000\000\000\003(\002\179\004|\002\180\002\181\001\221\000\000\002\182\0034\000\000\002\006\003*\000\000\000\000\000\000\000\000\000\000\000\000\003\b\002\179\000\000\002\180\002\181\001\221\003+\002\182\000\000\003\t\000\000\000\000\004\128\003\228\003\229\000\000\000\000\0036\003\b\000\000\000\000\000\000\000\000\003#\000\000\000\000\000\000\003\t\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003(\000\000\004~\003#\000\000\000\000\000\000\000\000\0034\000\000\002\006\003*\000\000\001\250\000\000\002\179\000\000\002\180\002\181\001\221\000\000\002\182\000\000\000\000\000\000\000\000\001\233\000\000\000\000\001\025\000\000\000\000\003\b\000\000\000\000\0036\000\000\000\000\000\000\000\000\000\000\003\t\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003%\003#\002\179\004\135\002\180\002\181\001\221\000\000\002\182\000\000\000\000\000\000\000\000\002\185\000\000\003'\001\025\000\000\003%\003\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\t\000\000\000\000\002\185\000\000\003'\001\025\000\000\000\000\000\000\001\252\000\000\000\000\000\000\003#\000\000\000\000\000\000\001\253\003+\002\006\000\000\000\000\000\000\002\179\000\000\002\180\002\181\001\221\000\000\002\182\000\000\000\000\000\000\000\000\000\000\000\000\003+\000\000\000\000\000\000\003\b\003%\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\t\003(\000\000\004\148\000\000\002\185\000\000\003'\001\025\0034\000\000\002\006\003*\000\000\003#\000\000\000\000\000\000\000\000\003(\000\000\004\156\000\000\000\000\000\000\000\000\000\000\0034\000\000\002\006\003*\001\219\000\000\003%\001\220\001\221\0036\001\222\000\000\003+\000\000\000\000\000\000\000\000\000\000\000\000\002\185\000\000\003'\001\025\000\000\000\000\000\000\000\000\0036\001\223\001\241\000\000\001\225\001\226\001\231\000\000\001\219\000\000\000\000\001\220\001\221\000\000\001\222\000\000\000\000\003(\000\000\004\159\000\000\000\000\000\000\000\000\000\000\0034\003+\002\006\003*\003%\000\000\000\000\001\223\001\241\000\000\001\225\001\226\001\231\000\000\000\000\000\000\000\000\002\185\000\000\003'\001\025\000\000\000\000\001\242\000\000\001\243\bs\0036\bu\000\000\000\000\000\000\000\000\003(\000\000\004\161\000\000\000\000\000\000\000\000\000\000\0034\001\219\002\006\003*\001\220\001\221\000\000\001\222\000\000\000\000\003+\000\000\000\000\001\242\000\000\001\243\007\154\000\000\000\000\000\000\001\250\000\000\000\000\000\000\000\000\001\223\001\241\0036\001\225\001\226\001\231\000\000\000\000\001\233\000\000\000\000\001\025\000\000\000\000\000\000\000\000\000\000\003(\000\000\004\163\000\000\000\000\000\000\000\000\000\000\0034\001\250\002\006\003*\001\219\000\000\000\000\001\220\001\221\000\000\001\222\000\000\000\000\000\000\001\233\000\000\000\000\001\025\000\000\000\000\000\000\000\000\001\242\000\000\001\243\002+\000\000\0036\001\223\001\241\000\000\001\225\001\226\001\231\000\000\000\000\000\000\001\219\000\000\000\000\001\220\001\221\000\000\001\222\000\000\000\000\000\000\000\000\000\000\001\252\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\253\000\000\002\006\001\250\001\223\001\241\000\000\001\225\001\226\001\231\000\000\000\000\000\000\000\000\000\000\000\000\001\233\000\000\001\242\001\025\001\243\002\031\000\000\001\252\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\253\000\000\002\006\000\000\001\219\000\000\000\000\001\220\001\221\000\000\001\222\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\242\000\000\001\243\002\028\000\000\001\250\000\000\000\000\001\223\001\241\000\000\001\225\001\226\001\231\000\000\000\000\000\000\000\000\001\233\000\000\000\000\001\025\000\000\000\000\000\000\000\000\002\179\000\000\002\180\002\181\001\221\001\252\002\182\000\000\000\000\000\000\000\000\000\000\001\250\001\253\001\219\002\006\000\000\001\220\001\221\000\000\001\222\000\000\000\000\000\000\000\000\001\233\004\192\000\000\001\025\001\242\000\000\001\243\001\245\000\000\004\201\000\000\000\000\000\000\001\223\001\241\000\000\001\225\001\226\001\231\000\000\000\000\001\219\000\000\000\000\001\220\001\221\000\000\001\222\000\000\000\000\000\000\000\000\000\000\001\252\000\000\004\202\000\000\000\000\000\000\000\000\000\000\001\253\001\250\002\006\000\000\001\223\001\241\000\000\001\225\001\226\001\231\000\000\000\000\001\219\000\000\001\233\001\220\001\221\001\025\001\222\001\242\000\000\001\243\001\248\000\000\000\000\001\252\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\253\000\000\002\006\001\223\001\241\000\000\001\225\001\226\001\231\000\000\002\184\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\242\000\000\001\243\001\251\000\000\004\205\001\250\003'\001\025\001-\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\219\000\000\001\233\001\220\001\221\001\025\001\222\000\000\000\000\000\000\000\000\000\000\001\252\000\000\000\000\001\242\000\000\001\243\002\027\000\000\001\253\001\250\002\006\000\000\001\223\001\241\000\000\001\225\001\226\001\231\004\195\000\000\001\219\000\000\001\233\001\220\001\221\001\025\001\222\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\250\003(\000\000\001\223\001\241\000\000\001\225\001\226\001\231\003)\000\000\002\006\003*\001\233\000\000\001\252\001\025\000\000\001\242\000\000\001\243\002\015\000\000\001\253\000\000\002\006\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\219\000\000\000\000\001\220\001\221\002\179\001\222\002\180\002\181\001\221\000\000\002\182\001\252\000\000\000\000\001\242\000\000\001\243\002\023\000\000\001\253\001\250\002\006\000\000\001\223\001\241\000\000\001\225\001\226\001\231\000\000\004B\000\000\000\000\001\233\001\219\000\000\001\025\001\220\001\221\000\000\001\222\000\000\000\000\001\252\000\000\000\000\003\186\000\000\000\000\000\000\000\000\001\253\001\250\002\006\000\000\000\000\000\000\0070\001\223\003\148\000\000\001\225\001\226\001\231\000\000\001\233\000\000\000\000\001\025\000\000\001\242\000\000\001\243\002\251\000\000\000\000\001\219\000\000\000\000\001\220\001\221\000\000\001\222\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\219\000\000\000\000\001\220\001\221\000\000\001\222\000\000\000\000\001\252\001\223\001\241\003\203\001\225\001\226\001\231\000\000\001\253\001\250\002\006\000\000\003\206\000\000\002\184\001\223\003\148\000\000\001\225\001\226\001\231\000\000\001\233\000\000\000\000\001\025\000\000\002\185\000\000\003'\001\025\000\000\001\252\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\253\000\000\002\006\000\000\001\232\000\000\000\000\000\000\001\242\000\000\001\243\003x\000\000\000\000\000\000\001\219\000\000\001\233\001\220\001\221\001\025\001\222\000\000\000\000\000\000\000\000\000\000\000\000\004E\003\189\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\223\001\241\000\000\001\225\001\226\001\231\000\000\001\250\000\000\001\252\000\000\000\000\000\000\000\000\003(\000\000\000\000\001\253\003\178\002\006\001\233\001\232\003)\001\025\002\006\003*\000\000\000\000\000\000\000\000\000\000\000\000\001\219\000\000\001\233\001\220\001\221\001\025\001\222\000\000\000\000\000\000\000\000\000\000\001\252\000\000\000\000\001\242\000\000\001\243\003\217\000\000\002\005\000\000\002\006\000\000\001\223\001\241\000\000\001\225\001\226\001\231\000\000\000\000\001\219\000\000\000\000\001\220\001\221\000\000\001\222\000\000\000\000\000\000\003\149\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\250\001\252\000\000\001\223\001\241\000\000\001\225\001\226\001\231\001\253\000\000\002\006\000\000\001\233\000\000\001\252\001\025\000\000\001\242\000\000\001\243\003\220\000\000\002\005\000\000\002\006\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\219\000\000\000\000\001\220\001\221\000\000\001\222\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\242\000\000\001\243\003\223\000\000\000\000\001\250\000\000\000\000\001\223\001\241\000\000\001\225\001\226\001\231\000\000\000\000\001\219\000\000\001\233\001\220\001\221\001\025\001\222\000\000\000\000\000\000\000\000\000\000\001\252\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\253\001\250\002\006\000\000\001\223\001\241\000\000\001\225\001\226\001\231\000\000\000\000\001\219\000\000\001\233\001\220\001\221\001\025\001\222\001\242\000\000\001\243\003\231\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\223\001\241\000\000\001\225\001\226\001\231\000\000\000\000\000\000\000\000\000\000\000\000\001\252\000\000\000\000\001\242\000\000\001\243\004\157\000\000\001\253\001\250\002\006\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\219\000\000\001\233\001\220\001\221\001\025\001\222\000\000\000\000\000\000\000\000\000\000\001\252\000\000\000\000\001\242\000\000\001\243\004\154\000\000\001\253\001\250\002\006\000\000\001\223\001\241\000\000\001\225\001\226\001\231\000\000\000\000\000\000\000\000\001\233\000\000\001K\001\025\000\000\001M\000\000\000\000\001\171\000\000\000\000\000\000\001d\000\000\000\000\000\000\000\000\001K\000\000\001\250\001M\000\000\000\000\001\171\000\000\000\000\000\000\001d\000\000\000\000\001\172\001T\001\233\000\000\001\252\001\025\000\000\001\242\001\173\001\243\005\149\000\000\001\253\000\000\002\006\001\172\001T\000\000\000\000\000\000\000\000\000\000\000\000\001\192\000\000\000\000\000\000\001\219\000\000\000\000\001\220\001\221\000\000\001\222\000\000\000\000\001\252\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\253\001\250\002\006\000\000\005I\000\000\001b\001\223\003\148\000\000\001\225\001\226\001\231\000\000\001\233\000\000\000\000\001\025\000\000\000\000\000\000\001b\000\000\000\000\001\252\001\219\000\000\001\177\001\220\001\221\000\000\001\222\001\253\000\000\002\006\000\000\000\000\000\000\000\000\000\000\001\219\001<\001\177\001\220\001\221\000\000\001\222\001C\001V\001\223\003\148\000\000\001\225\001\226\001\231\000\000\001<\000\000\000\000\000\000\000\000\000\000\001C\001V\001\223\003\148\000\000\001\225\001\226\001\231\000\000\000\000\000\000\001\219\000\000\000\000\001\220\001\221\000\000\001\222\001\252\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\253\000\000\002\006\000\000\001\232\000\000\000\000\000\000\000\000\001\223\003\148\001l\001\225\001\226\001\231\000\000\000\000\001\233\001W\000\000\001\025\000\000\001\187\000\000\001K\000\000\001l\001M\000\000\000\000\000\000\000\000\000\000\001W\001d\000\000\000\000\001\187\000\000\000\000\000\000\000\000\000\000\000\000\001\219\000\000\001\232\001\220\001\221\001]\001\222\000\000\001o\001T\000\000\000\000\000\000\003\149\000\000\001\233\000\000\001\232\001\025\000\000\001]\000\000\000\000\001o\001\223\003\148\000\000\001\225\001\226\001\231\001\233\000\000\001\219\001\025\000\000\001\220\001\221\000\000\001\222\001\252\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\005\000\000\002\006\001\232\000\000\000\000\000\000\000\000\004c\001\223\003\148\001b\001\225\001\226\001\231\000\000\001\233\000\000\000\000\001\025\000\000\000\000\000\000\004c\000\000\000\000\000\000\000\000\004e\000\000\000\000\000\000\000\000\000\000\001\252\002\179\000\000\002\180\002\181\001\221\000\000\002\182\002\005\004d\002\006\000\000\001<\000\000\000\000\001\252\000\000\000\000\001C\001V\000\000\000\000\004c\002\005\000\000\002\006\001\219\002\183\001\232\001\220\001\221\000\000\001\222\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\233\004h\000\000\001\025\000\000\000\000\000\000\001\252\000\000\001\223\003\148\000\000\001\225\001\226\001\231\002\005\000\000\002\006\001\219\001\232\000\000\001\220\001\221\000\000\001\222\000\000\000\000\001\219\000\000\001l\001\220\001\221\001\233\001\222\000\000\001\025\001W\000\000\000\000\006\247\004c\000\000\001\223\003\148\000\000\001\225\001\226\001\231\007\015\000\000\000\000\001\223\003\148\000\000\001\225\001\226\001\231\000\000\000\000\000\000\004l\000\000\000\000\000\000\000\000\000\000\001\252\001]\000\000\002\184\005\021\000\000\004c\000\000\002\005\001\219\002\006\000\000\001\220\001\221\000\000\001\222\002\185\000\000\003'\001\025\000\000\001\219\000\000\000\000\001\220\001\221\004n\001\222\001\232\000\000\000\000\000\000\001\252\001\223\003\148\000\000\001\225\001\226\001\231\000\000\002\005\001\233\002\006\000\000\001\025\001\223\003\148\000\000\001\225\001\226\001\231\001\219\000\000\000\000\001\220\001\221\000\000\001\222\000\000\000\000\001\219\001\232\000\000\001\220\001\221\000\000\001\222\000\000\000\000\000\000\001\232\000\000\000\000\000\000\001\233\001\223\003\148\001\025\001\225\001\226\001\231\007b\003(\001\233\001\223\003\148\001\025\001\225\001\226\001\231\003)\000\000\002\006\003*\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\252\000\000\000\000\001K\000\000\000\000\001\167\003\149\002\005\000\000\002\006\001\232\000\000\001\168\000\000\006r\003\149\000\000\000\000\000\000\000\000\000\000\000\000\001\232\001\233\007d\000\000\001\025\000\000\000\000\000\000\000\000\001T\001\252\000\000\000\000\001\233\000\000\000\000\001\025\000\000\002\005\001\252\002\006\000\000\000\000\006s\b=\006t\000\000\002\005\000\000\002\006\001\232\000\000\000\000\000\000\001K\000\000\000\000\001M\000\000\001\232\001\188\007*\000\000\001\233\001d\000\000\001\025\000\000\000\000\000\000\000\000\000\000\001\233\007*\000\000\001\025\000\000\006u\001b\000\000\000\000\000\000\001\190\001T\000\000\000\000\000\000\001\252\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\005\000\000\002\006\000\000\001\252\000\000\000\000\000\000\007b\000\000\000\000\000\000\002\005\000\000\002\006\000\000\0077\007b\001<\006v\001K\000\000\000\000\001M\001C\001V\001\171\000\000\0076\000\000\001d\000\000\006w\006x\001\252\006y\000\000\001b\000\000\000\000\000\000\000\000\002\005\001\252\002\006\000\000\000\000\000\000\001\176\001T\000\000\002\005\000\000\002\006\000\000\000\000\000\000\000\000\001\177\007c\006\189\000\000\000\000\000\000\000\000\000\000\001K\000\000\007k\001M\000\000\000\000\001<\000\000\000\000\000\000\001d\000\000\001C\001V\000\000\000\000\000\000\001W\000\000\000\000\000\000\006{\b?\000\000\006}\000\000\000\000\006\130\006\142\001T\001\219\001e\001b\001\220\001\221\000\000\001\222\006\185\000\000\000\000\000\000\b\002\000\000\000\000\000\000\000\000\000\000\000\000\001]\000\000\000\000\000\000\000\000\001\177\001\223\003\148\006\186\001\225\001\226\001\231\001K\000\000\000\000\001M\001l\000\000\000\000\001<\000\000\000\000\001d\001W\000\000\001C\001V\001\187\000\000\000\000\001b\000\000\001K\000\000\000\000\001M\000\000\000\000\000\000\000\000\000\000\001T\001d\001e\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\007\226\001]\000\000\000\000\001o\000\000\000\000\000\000\001T\000\000\001e\000\000\001<\000\000\000\000\000\000\000\000\000\000\001C\001V\001}\000\000\000\000\000\000\001l\000\000\000\000\000\000\000\000\000\000\000\000\001W\000\000\000\000\000\000\001\187\006r\001b\001\232\000\000\000\000\000\000\000\000\000\000\000\000\001K\000\000\000\000\001M\000\000\000\000\001\233\000\000\000\000\001\025\001d\000\000\001b\000\000\000\000\001\219\000\000\001]\001\220\001\221\001o\001\222\006s\000\000\006t\001l\000\000\001<\000\000\001T\000\000\001e\001W\001C\001V\000\000\001\142\000\000\000\000\001\223\001\224\001\148\001\225\001\226\001\231\000\000\004m\001<\000\000\000\000\000\000\000\000\000\000\001C\001V\000\000\006u\000\000\000\000\000\000\000\000\001K\000\000\001]\001M\000\000\001o\000\000\000\000\000\000\001\219\001d\001\252\001\220\001\221\000\000\001\222\000\000\001b\000\000\002\005\001K\002\006\000\000\001M\001l\000\000\000\000\000\000\000\000\001T\001d\001W\006v\001\223\002\004\001\142\001\225\001\226\001\231\000\000\000\000\005\161\000\000\000\000\001l\006w\006x\000\000\006y\001T\000\000\001W\001<\000\000\000\000\001\142\000\000\005\164\001C\001V\000\000\005\161\001]\001\232\001\219\001o\000\000\001\220\001\221\000\000\001\222\000\000\000\000\006z\000\000\000\000\001\233\006\025\001b\001\025\000\000\000\000\001]\000\000\000\000\001o\000\000\000\000\001\223\003\141\000\000\001\225\001\226\001\231\000\000\000\000\000\000\000\000\001b\000\000\006{\000\000\000\000\006}\000\000\000\000\006\130\006\142\000\000\000\000\001l\000\000\000\000\001<\000\000\000\000\006\185\001W\001\232\001C\001V\001\142\000\000\000\000\000\000\000\000\001K\000\000\000\000\001M\000\000\001\233\000\000\001<\001\025\006\186\001d\000\000\000\000\001C\001V\000\000\001\252\000\000\000\000\000\000\001K\000\000\001]\001M\002\005\001o\002\006\000\000\000\000\001T\001d\000\000\000\000\001K\000\000\000\000\001M\000\000\000\000\000\000\000\000\005\161\000\000\001d\000\000\001l\000\000\001\232\000\000\001T\000\000\000\000\001W\000\000\000\000\000\000\005\170\006\244\000\000\000\000\001\233\005\161\001T\001\025\000\000\001l\000\000\000\000\000\000\000\000\000\000\001\252\001W\000\000\005\161\000\000\005\170\007\002\001b\002\005\000\000\002\006\000\000\001]\000\000\000\000\001o\000\000\000\000\000\000\007\012\000\000\000\000\000\000\001K\000\000\000\000\001M\001b\000\000\000\000\000\000\000\000\001]\001d\007o\001o\000\000\000\000\000\000\000\000\001b\000\000\001<\000\000\000\000\000\000\000\000\000\000\001C\001V\b\154\000\000\001T\b\155\001e\001\252\000\000\007r\000\000\000\000\007o\007o\001<\002\005\007\237\002\006\000\000\007s\001C\001V\000\000\000\000\000\000\000\000\000\000\001<\b\154\b\154\000\000\b\155\b\155\001C\001V\007r\007r\000\000\007o\000\000\000\000\000\000\000\000\000\000\000\000\007s\007s\000\000\000\000\000\000\000\000\007t\001l\001b\b\154\000\000\000\000\b\155\000\000\001W\000\000\007r\000\000\005\170\000\000\000\000\000\000\000\000\000\000\000\000\000\000\007s\001l\000\000\000\000\000\000\000\000\007t\007t\001W\000\000\000\000\000\000\005\170\000\000\001l\000\000\000\000\001<\007u\001]\000\000\001W\001o\001C\001V\005\170\000\000\000\000\000\000\000\000\000\000\007v\007t\000\000\000\000\000\000\000\000\000\000\000\000\001]\000\000\000\000\001o\000\000\007u\007u\000\000\000\000\000\000\000\000\000\000\000\000\001]\b\157\000\000\001o\000\000\007v\007v\000\000\000\000\001K\000\000\000\000\001M\000\000\000\000\000\000\000\000\000\000\007u\001d\007x\000\000\000\000\001l\000\000\000\000\000\000\b\156\b\160\000\000\001W\007v\000\000\007y\001\142\000\000\007{\000\000\001T\007\128\000\000\000\000\000\000\000\000\000\000\000\000\007x\007x\000\000\007\130\002\224\000\000\002\179\b\165\002\180\002\181\001\221\000\000\002\182\007y\007y\001]\007{\007{\001o\007\128\007\128\000\000\007\131\000\000\000\000\000\000\007x\000\000\000\000\007\130\007\130\002\179\003\001\002\180\002\181\001\221\000\000\002\182\000\000\007y\000\000\001b\007{\000\000\000\000\007\128\000\000\000\000\007\131\007\131\000\000\000\000\000\000\000\000\000\000\007\130\000\000\003\005\002\179\000\000\002\180\002\181\001\221\000\000\002\182\002\179\000\000\002\180\002\181\001\221\000\000\002\182\000\000\000\000\007\131\000\000\001<\000\000\000\000\000\000\000\000\000\000\001C\001V\003\027\000\000\002\179\000\000\002\180\002\181\001\221\003&\002\182\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0035\000\000\000\000\002\184\000\000\000\000\000\000\001K\000\000\000\000\001M\000\000\000\000\000\000\000\000\000\000\002\185\001d\003'\001\025\000\000\000\000\001l\000\000\000\000\000\000\000\000\000\000\002\184\001W\000\000\000\000\000\000\002\227\000\000\001K\001T\000\000\001M\000\000\000\000\002\185\000\000\003'\001\025\001d\000\000\000\000\003\137\000\000\000\000\000\000\000\000\000\000\000\000\002\184\000\000\000\000\000\000\000\000\001]\000\000\002\184\001o\001T\000\000\000\000\000\000\002\185\000\000\003'\001\025\000\000\000\000\000\000\002\185\003\164\003'\001\025\000\000\000\000\001K\003(\002\184\001M\001b\000\000\000\000\000\000\000\000\003)\001d\002\006\003*\000\000\000\000\002\185\000\000\003'\001\025\000\000\000\000\001K\000\000\000\000\001M\000\000\003(\000\000\000\000\001T\000\000\001d\001b\000\000\003)\000\000\002\006\003*\000\000\001<\000\000\003\181\000\000\000\000\000\000\001C\001V\000\000\000\000\000\000\001T\000\000\000\000\003(\000\000\000\000\000\000\000\000\000\000\000\000\003(\003)\003\198\002\006\003*\000\000\000\000\001<\003)\000\000\002\006\003*\000\000\001C\001V\000\000\000\000\000\000\001b\000\000\002\179\003(\002\180\002\181\001\221\000\000\002\182\000\000\000\000\003)\000\000\002\006\003*\000\000\000\000\000\000\000\000\001l\000\000\001b\000\000\000\000\001K\000\000\001W\001M\004\n\000\000\002\018\000\000\000\000\000\000\001d\001<\000\000\000\000\000\000\000\000\001K\001C\001V\001M\000\000\001K\000\000\001l\001M\000\000\001d\000\000\000\000\001T\001W\001d\001<\001]\002\018\000\000\001o\001K\001C\001V\001M\005\019\000\000\000\000\000\000\001T\000\000\001d\000\000\000\000\001T\006$\000\000\000\000\000\000\000\000\005\022\000\000\000\000\000\000\001K\001]\000\000\001M\001o\000\000\001T\000\000\000\000\001l\001d\000\000\007%\000\000\000\000\000\000\001W\000\000\001b\000\000\003\018\000\000\000\000\000\000\000\000\000\000\000\000\002\184\000\000\001T\001l\000\000\000\000\000\000\001b\000\000\000\000\001W\000\000\001b\002\185\003\018\003'\001\025\000\000\000\000\000\000\001]\000\000\000\000\001o\000\000\000\000\001<\000\000\001b\000\000\000\000\000\000\001C\001V\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001]\001<\000\000\001o\007o\000\000\001<\001C\001V\000\000\001b\000\000\001C\001V\000\000\000\000\000\000\000\000\000\000\000\000\000\000\007o\001<\007p\000\000\000\000\000\000\007r\001C\001V\000\000\000\000\000\000\000\000\000\000\000\000\000\000\007s\003(\000\000\007p\000\000\000\000\001l\007r\001<\003)\000\000\002\006\003*\001W\001C\001V\001K\007s\000\000\001M\000\000\000\000\001l\000\000\000\000\000\000\001d\001l\000\000\001W\000\000\000\000\007t\006)\001W\000\000\000\000\000\000\0066\000\000\000\000\0069\000\000\001l\001]\001T\000\000\005\026\000\000\007t\001W\000\000\000\000\000\000\006)\000\000\000\000\005\019\000\000\000\000\001]\001K\000\000\001o\001M\001]\001l\000\000\001o\000\000\007u\001d\007\214\001W\000\000\000\000\000\000\0066\000\000\000\000\007S\001]\000\000\007v\001o\001K\000\000\007u\001M\000\000\001T\000\000\000\000\001K\001b\001d\001M\000\000\001K\000\000\007v\001M\000\000\001d\001]\000\000\000\000\001o\001d\007\135\000\000\000\000\000\000\000\000\001T\000\000\000\000\000\000\001K\000\000\000\000\001M\001T\000\000\007x\000\000\007\145\001T\001d\001<\000\000\000\000\000\000\000\000\000\000\001C\001V\007y\000\000\001b\007{\007x\000\000\007\128\000\000\000\000\001K\001T\000\000\001M\000\000\000\000\000\000\007\130\007y\000\000\001d\007{\000\000\000\000\007\128\000\000\000\000\001b\000\000\000\000\000\000\000\000\000\000\000\000\007\130\001b\007\131\000\000\001<\001T\001b\000\000\000\000\000\000\001C\001V\000\000\000\000\000\000\000\000\000\000\001l\000\000\007\131\000\000\000\000\000\000\000\000\001W\000\000\001b\000\000\001<\000\000\001K\000\000\000\000\001M\001C\001V\001<\000\000\000\000\000\000\001d\001<\001C\001V\000\000\000\000\000\000\001C\001V\000\000\001K\000\000\000\000\001M\001b\001]\000\000\000\000\005\026\001T\001d\001<\001l\000\000\000\000\000\000\000\000\001C\001V\001W\000\000\000\000\000\000\001\203\000\000\000\000\000\000\000\000\001K\001T\000\000\001M\000\000\000\000\000\000\000\000\001l\000\000\001d\001<\000\000\000\000\000\000\001W\001l\001C\001V\001m\000\000\001l\001]\001W\000\000\001o\000\000\001\135\001W\001T\001b\000\000\001\145\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001l\000\000\000\000\000\000\000\000\001]\000\000\001W\001o\001b\000\000\001\150\000\000\001]\000\000\000\000\001o\000\000\001]\001K\000\000\001o\001M\000\000\001<\000\000\000\000\000\000\001l\001d\001C\001V\000\000\001K\000\000\001W\001M\001b\001]\002B\000\000\001o\000\000\001d\001<\000\000\000\000\000\000\001T\000\000\001C\001V\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001T\000\000\000\000\000\000\001]\000\000\000\000\001o\000\000\000\000\001<\000\000\000\000\000\000\000\000\000\000\001C\001V\000\000\000\000\001l\000\000\000\000\000\000\000\000\000\000\000\000\001W\000\000\000\000\000\000\002l\000\000\000\000\000\000\001b\000\000\000\000\001K\000\000\001l\001M\000\000\001K\000\000\000\000\001M\001W\001d\001b\000\000\002n\000\000\001d\000\000\000\000\000\000\000\000\001]\001K\000\000\001o\001M\000\000\000\000\000\000\000\000\001T\001l\001d\001<\000\000\001T\000\000\000\000\001W\001C\001V\001]\002\204\000\000\001o\001K\000\000\001<\001M\000\000\000\000\001T\000\000\001C\001V\001d\000\000\000\000\000\000\000\000\000\000\001K\000\000\000\000\001M\000\000\000\000\000\000\000\000\001]\000\000\001d\001o\000\000\001T\000\000\000\000\001K\000\000\001b\001M\000\000\001K\000\000\001b\001M\000\000\001d\000\000\000\000\001T\001l\001d\000\000\000\000\000\000\000\000\000\000\001W\000\000\001b\000\000\002\226\000\000\000\000\001l\001T\000\000\000\000\000\000\000\000\001T\001W\000\000\001<\000\000\003\015\000\000\000\000\001<\001C\001V\000\000\001b\000\000\001C\001V\001K\000\000\001]\001M\000\000\001o\000\000\000\000\001<\000\000\001d\000\000\001b\000\000\001C\001V\001]\000\000\000\000\001o\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001b\001T\000\000\001<\000\000\001b\000\000\000\000\001K\001C\001V\001M\000\000\000\000\000\000\000\000\000\000\001l\001d\001<\000\000\000\000\001l\000\000\001W\001C\001V\000\000\003\020\001W\000\000\000\000\000\000\003\133\000\000\001<\000\000\001T\001l\000\000\001<\001C\001V\000\000\000\000\001W\001C\001V\000\000\003\139\001b\000\000\000\000\000\000\001K\001]\000\000\001M\001o\000\000\001]\001l\000\000\001o\001d\000\000\000\000\000\000\001W\000\000\000\000\000\000\003\166\000\000\000\000\000\000\001]\001l\000\000\001o\000\000\000\000\000\000\001T\001W\001<\001b\001K\003\183\000\000\001M\001C\001V\001l\000\000\000\000\000\000\001d\001l\001]\001W\000\000\001o\000\000\003\195\001W\000\000\000\000\000\000\003\200\000\000\000\000\000\000\000\000\000\000\001]\001T\000\000\001o\000\000\001K\001<\000\000\001M\000\000\000\000\000\000\001C\001V\000\000\001d\001]\001b\000\000\001o\001K\001]\001K\001M\001o\001M\000\000\000\000\001l\000\000\001d\000\000\001d\000\000\001T\001W\000\000\000\000\000\000\003\209\000\000\000\000\000\000\000\000\001K\000\000\000\000\001M\000\000\001T\001b\001T\001<\000\000\001d\000\000\000\000\000\000\001C\001V\000\000\000\000\000\000\000\000\001l\000\000\001]\000\000\000\000\001o\000\000\001W\000\000\001T\000\000\005\163\000\000\001K\000\000\000\000\001M\000\000\000\000\001b\000\000\001<\000\000\001d\000\000\000\000\000\000\001C\001V\000\000\000\000\000\000\000\000\000\000\001b\000\000\001b\000\000\001]\000\000\000\000\001o\001T\000\000\000\000\000\000\001l\000\000\000\000\000\000\000\000\000\000\000\000\001W\001<\000\000\000\000\006\002\001b\000\000\001C\001V\000\000\001K\000\000\000\000\001M\000\000\000\000\001<\000\000\001<\000\000\001d\000\000\001C\001V\001C\001V\001l\000\000\000\000\000\000\000\000\001]\001K\001W\001o\001M\000\000\006\014\001b\001T\001<\000\000\001d\000\000\000\000\000\000\001C\001V\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001K\000\000\000\000\001M\001l\000\000\001T\000\000\000\000\001]\001d\001W\001o\000\000\000\000\006(\000\000\000\000\001<\001l\000\000\001l\000\000\000\000\001C\001V\001W\000\000\001W\001T\0068\000\000\006\223\001b\000\000\000\000\000\000\001K\000\000\000\000\001M\000\000\001]\001l\000\000\001o\000\000\001d\000\000\000\000\001W\000\000\000\000\001K\006\241\001b\001M\001]\000\000\001]\001o\000\000\001o\001d\000\000\000\000\001T\000\000\001<\000\000\000\000\000\000\000\000\000\000\001C\001V\001l\000\000\001b\000\000\000\000\001]\001T\001W\001o\000\000\000\000\007\t\000\000\000\000\001<\000\000\000\000\000\000\000\000\000\000\001C\001V\001K\000\000\000\000\007\210\000\000\000\000\000\000\000\000\000\000\000\000\007\211\000\000\000\000\000\000\000\000\001<\001]\001b\000\000\001o\000\000\001C\001V\000\000\000\000\000\000\000\000\001K\001l\001T\007\233\000\000\000\000\001b\000\000\001W\000\000\007\234\000\000\007\157\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001l\000\000\001<\000\000\000\000\000\000\001T\001W\001C\001V\001K\007\205\000\000\007\244\000\000\000\000\001]\000\000\001<\001o\007\245\000\000\000\000\001l\001C\001V\000\000\000\000\001b\000\000\001W\000\000\000\000\001K\007\228\000\000\007\250\001K\001]\001T\b\000\001o\000\000\007\251\000\000\000\000\000\000\b\001\001K\000\000\000\000\b\t\000\000\000\000\000\000\001b\000\000\000\000\b\n\000\000\001l\001]\001T\001<\001o\000\000\001T\001W\000\000\001C\001V\007\239\000\000\000\000\000\000\000\000\001l\001T\000\000\000\000\000\000\000\000\000\000\001W\000\000\000\000\000\000\b\004\001b\000\000\001<\000\000\000\000\000\000\000\000\000\000\001C\001V\001]\000\000\000\000\001o\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001b\000\000\000\000\001]\001b\000\000\001o\000\000\000\000\000\000\000\000\000\000\001<\000\000\000\000\001b\000\000\001W\001C\001V\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001<\000\000\000\000\000\000\001<\000\000\001C\001V\000\000\001W\001C\001V\000\000\001]\000\000\001<\000\000\000\000\000\000\000\000\000\000\001C\001V\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001]\000\000\001W\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001W\000\000\000\000\000\000\001W\000\000\000\000\000\000\001]\000\000\000\000\000\000\000\000\000\000\000\000\001W\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001]\000\000\000\000\000\000\001]\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001]")) and semantic_action = [| @@ -1639,9 +1648,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 4280 "parsing/parser.mly" +# 4385 "parsing/parser.mly" ( "+" ) -# 1645 "parsing/parser.ml" +# 1654 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -1664,9 +1673,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 4281 "parsing/parser.mly" +# 4386 "parsing/parser.mly" ( "+." ) -# 1670 "parsing/parser.ml" +# 1679 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -1689,9 +1698,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Parsetree.core_type) = -# 3757 "parsing/parser.mly" +# 3848 "parsing/parser.mly" ( _1 ) -# 1695 "parsing/parser.ml" +# 1704 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -1736,24 +1745,186 @@ module Tables = struct let _endpos = _endpos_tyvar_ in let _v : (Parsetree.core_type) = let _1 = let _1 = -# 3760 "parsing/parser.mly" +# 3851 "parsing/parser.mly" ( Ptyp_alias(ty, tyvar) ) -# 1742 "parsing/parser.ml" +# 1751 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_tyvar_, _startpos_ty_) in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1151 "parsing/parser.mly" +# 1160 "parsing/parser.mly" ( mktyp ~loc:_sloc _1 ) -# 1751 "parsing/parser.ml" +# 1760 "parsing/parser.ml" in -# 3762 "parsing/parser.mly" - ( _1 ) -# 1757 "parsing/parser.ml" +# 3853 "parsing/parser.mly" + ( _1 ) +# 1766 "parsing/parser.ml" + in + { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = Obj.repr _v; + MenhirLib.EngineTypes.startp = _startpos; + MenhirLib.EngineTypes.endp = _endpos; + MenhirLib.EngineTypes.next = _menhir_stack; + }); + (fun _menhir_env -> + let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in + let { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _7; + MenhirLib.EngineTypes.startp = _startpos__7_; + MenhirLib.EngineTypes.endp = _endpos__7_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = layout; + MenhirLib.EngineTypes.startp = _startpos_layout_; + MenhirLib.EngineTypes.endp = _endpos_layout_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _5; + MenhirLib.EngineTypes.startp = _startpos__5_; + MenhirLib.EngineTypes.endp = _endpos__5_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _2_inlined1; + MenhirLib.EngineTypes.startp = _startpos__2_inlined1_; + MenhirLib.EngineTypes.endp = _endpos__2_inlined1_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _3; + MenhirLib.EngineTypes.startp = _startpos__3_; + MenhirLib.EngineTypes.endp = _endpos__3_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _2; + MenhirLib.EngineTypes.startp = _startpos__2_; + MenhirLib.EngineTypes.endp = _endpos__2_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = aliased_type; + MenhirLib.EngineTypes.startp = _startpos_aliased_type_; + MenhirLib.EngineTypes.endp = _endpos_aliased_type_; + MenhirLib.EngineTypes.next = _menhir_stack; + }; + }; + }; + }; + }; + }; + }; + } = _menhir_stack in + let _7 : unit = Obj.magic _7 in + let layout : (Asttypes.layout_annotation) = Obj.magic layout in + let _5 : unit = Obj.magic _5 in + let _2_inlined1 : (Asttypes.label) = Obj.magic _2_inlined1 in + let _1 : unit = Obj.magic _1 in + let _3 : unit = Obj.magic _3 in + let _2 : unit = Obj.magic _2 in + let aliased_type : (Parsetree.core_type) = Obj.magic aliased_type in + let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in + let _startpos = _startpos_aliased_type_ in + let _endpos = _endpos__7_ in + let _v : (Parsetree.core_type) = let name = + let _2 = _2_inlined1 in + +# 3541 "parsing/parser.mly" + ( Some _2 ) +# 1842 "parsing/parser.ml" + + in + let _endpos = _endpos__7_ in + let _symbolstartpos = _startpos_aliased_type_ in + let _sloc = (_symbolstartpos, _endpos) in + +# 3860 "parsing/parser.mly" + ( Jane_syntax.Layouts.type_of ~loc:(make_loc _sloc) ~attrs:[] + (Ltyp_alias { aliased_type; name; layout }) ) +# 1852 "parsing/parser.ml" + in + { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = Obj.repr _v; + MenhirLib.EngineTypes.startp = _startpos; + MenhirLib.EngineTypes.endp = _endpos; + MenhirLib.EngineTypes.next = _menhir_stack; + }); + (fun _menhir_env -> + let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in + let { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _7; + MenhirLib.EngineTypes.startp = _startpos__7_; + MenhirLib.EngineTypes.endp = _endpos__7_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = layout; + MenhirLib.EngineTypes.startp = _startpos_layout_; + MenhirLib.EngineTypes.endp = _endpos_layout_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _5; + MenhirLib.EngineTypes.startp = _startpos__5_; + MenhirLib.EngineTypes.endp = _endpos__5_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _3; + MenhirLib.EngineTypes.startp = _startpos__3_; + MenhirLib.EngineTypes.endp = _endpos__3_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _2; + MenhirLib.EngineTypes.startp = _startpos__2_; + MenhirLib.EngineTypes.endp = _endpos__2_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = aliased_type; + MenhirLib.EngineTypes.startp = _startpos_aliased_type_; + MenhirLib.EngineTypes.endp = _endpos_aliased_type_; + MenhirLib.EngineTypes.next = _menhir_stack; + }; + }; + }; + }; + }; + }; + } = _menhir_stack in + let _7 : unit = Obj.magic _7 in + let layout : (Asttypes.layout_annotation) = Obj.magic layout in + let _5 : unit = Obj.magic _5 in + let _1 : unit = Obj.magic _1 in + let _3 : unit = Obj.magic _3 in + let _2 : unit = Obj.magic _2 in + let aliased_type : (Parsetree.core_type) = Obj.magic aliased_type in + let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in + let _startpos = _startpos_aliased_type_ in + let _endpos = _endpos__7_ in + let _v : (Parsetree.core_type) = let name = +# 3543 "parsing/parser.mly" + ( None ) +# 1919 "parsing/parser.ml" + in + let _endpos = _endpos__7_ in + let _symbolstartpos = _startpos_aliased_type_ in + let _sloc = (_symbolstartpos, _endpos) in + +# 3860 "parsing/parser.mly" + ( Jane_syntax.Layouts.type_of ~loc:(make_loc _sloc) ~attrs:[] + (Ltyp_alias { aliased_type; name; layout }) ) +# 1928 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -1799,30 +1970,30 @@ module Tables = struct let _v : (let_binding) = let attrs2 = let _1 = _1_inlined2 in -# 4367 "parsing/parser.mly" +# 4472 "parsing/parser.mly" ( _1 ) -# 1805 "parsing/parser.ml" +# 1976 "parsing/parser.ml" in let _endpos_attrs2_ = _endpos__1_inlined2_ in let attrs1 = let _1 = _1_inlined1 in -# 4371 "parsing/parser.mly" +# 4476 "parsing/parser.mly" ( _1 ) -# 1814 "parsing/parser.ml" +# 1985 "parsing/parser.ml" in let _endpos = _endpos_attrs2_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2961 "parsing/parser.mly" +# 2988 "parsing/parser.mly" ( let attrs = attrs1 @ attrs2 in mklb ~loc:_sloc false body attrs ) -# 1826 "parsing/parser.ml" +# 1997 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -1845,9 +2016,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Longident.t) = -# 4155 "parsing/parser.mly" +# 4260 "parsing/parser.mly" ( _1 ) -# 1851 "parsing/parser.ml" +# 2022 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -1870,9 +2041,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Longident.t) = -# 4156 "parsing/parser.mly" +# 4261 "parsing/parser.mly" ( Lident _1 ) -# 1876 "parsing/parser.ml" +# 2047 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -1909,9 +2080,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : (Parsetree.core_type) = -# 3853 "parsing/parser.mly" +# 3952 "parsing/parser.mly" ( _2 ) -# 1915 "parsing/parser.ml" +# 2086 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -1974,11 +2145,11 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 3928 "parsing/parser.mly" +# 4032 "parsing/parser.mly" ( let (lid, cstrs, attrs) = package_type_of_module_type _1 in let descr = Ptyp_package (lid, cstrs) in mktyp ~loc:_sloc ~attrs descr ) -# 1982 "parsing/parser.ml" +# 2153 "parsing/parser.ml" in let _3 = @@ -1986,24 +2157,24 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4371 "parsing/parser.mly" +# 4476 "parsing/parser.mly" ( _1 ) -# 1992 "parsing/parser.ml" +# 2163 "parsing/parser.ml" in -# 4384 "parsing/parser.mly" +# 4489 "parsing/parser.mly" ( _1, _2 ) -# 1998 "parsing/parser.ml" +# 2169 "parsing/parser.ml" in let _endpos = _endpos__5_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 3855 "parsing/parser.mly" +# 3954 "parsing/parser.mly" ( wrap_typ_attrs ~loc:_sloc (reloc_typ ~loc:_sloc _4) _3 ) -# 2007 "parsing/parser.ml" +# 2178 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -2034,24 +2205,24 @@ module Tables = struct let _endpos = _endpos__2_ in let _v : (Parsetree.core_type) = let _1 = let _1 = -# 3858 "parsing/parser.mly" +# 3957 "parsing/parser.mly" ( Ptyp_var _2 ) -# 2040 "parsing/parser.ml" +# 2211 "parsing/parser.ml" in let _endpos__1_ = _endpos__2_ in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1151 "parsing/parser.mly" +# 1160 "parsing/parser.mly" ( mktyp ~loc:_sloc _1 ) -# 2049 "parsing/parser.ml" +# 2220 "parsing/parser.ml" in -# 3905 "parsing/parser.mly" +# 4004 "parsing/parser.mly" ( _1 ) -# 2055 "parsing/parser.ml" +# 2226 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -2075,23 +2246,23 @@ module Tables = struct let _endpos = _endpos__1_ in let _v : (Parsetree.core_type) = let _1 = let _1 = -# 3860 "parsing/parser.mly" +# 3959 "parsing/parser.mly" ( Ptyp_any ) -# 2081 "parsing/parser.ml" +# 2252 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1151 "parsing/parser.mly" +# 1160 "parsing/parser.mly" ( mktyp ~loc:_sloc _1 ) -# 2089 "parsing/parser.ml" +# 2260 "parsing/parser.ml" in -# 3905 "parsing/parser.mly" +# 4004 "parsing/parser.mly" ( _1 ) -# 2095 "parsing/parser.ml" +# 2266 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -2127,16 +2298,16 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1114 "parsing/parser.mly" +# 1123 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 2133 "parsing/parser.ml" +# 2304 "parsing/parser.ml" in let (_endpos_tid_, _startpos_tid_) = (_endpos__1_, _startpos__1_) in let tys = -# 3920 "parsing/parser.mly" +# 4025 "parsing/parser.mly" ( [] ) -# 2140 "parsing/parser.ml" +# 2311 "parsing/parser.ml" in let (_endpos_tys_, _startpos_tys_) = (_endpos__0_, _endpos__0_) in let _endpos = _endpos__3_ in @@ -2148,7 +2319,7 @@ module Tables = struct let _loc__3_ = (_startpos__3_, _endpos__3_) in let _sloc = (_symbolstartpos, _endpos) in -# 3864 "parsing/parser.mly" +# 3963 "parsing/parser.mly" ( match tid.txt with | Lident "float" -> let ident_start = fst _loc_tid_ in @@ -2161,7 +2332,7 @@ module Tables = struct *) not_expecting _sloc "Unboxed type other than float#" ) -# 2165 "parsing/parser.ml" +# 2336 "parsing/parser.ml" in let _endpos__1_ = _endpos__3_ in @@ -2169,15 +2340,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1151 "parsing/parser.mly" +# 1160 "parsing/parser.mly" ( mktyp ~loc:_sloc _1 ) -# 2175 "parsing/parser.ml" +# 2346 "parsing/parser.ml" in -# 3905 "parsing/parser.mly" +# 4004 "parsing/parser.mly" ( _1 ) -# 2181 "parsing/parser.ml" +# 2352 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -2220,16 +2391,16 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1114 "parsing/parser.mly" +# 1123 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 2226 "parsing/parser.ml" +# 2397 "parsing/parser.ml" in let (_endpos_tid_, _startpos_tid_) = (_endpos__1_, _startpos__1_) in let tys = -# 3922 "parsing/parser.mly" +# 4027 "parsing/parser.mly" ( [ty] ) -# 2233 "parsing/parser.ml" +# 2404 "parsing/parser.ml" in let (_endpos_tys_, _startpos_tys_) = (_endpos_ty_, _startpos_ty_) in let _endpos = _endpos__3_ in @@ -2241,7 +2412,7 @@ module Tables = struct let _loc__3_ = (_startpos__3_, _endpos__3_) in let _sloc = (_symbolstartpos, _endpos) in -# 3864 "parsing/parser.mly" +# 3963 "parsing/parser.mly" ( match tid.txt with | Lident "float" -> let ident_start = fst _loc_tid_ in @@ -2254,7 +2425,7 @@ module Tables = struct *) not_expecting _sloc "Unboxed type other than float#" ) -# 2258 "parsing/parser.ml" +# 2429 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos__3_, _startpos_ty_) in @@ -2262,15 +2433,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1151 "parsing/parser.mly" +# 1160 "parsing/parser.mly" ( mktyp ~loc:_sloc _1 ) -# 2268 "parsing/parser.ml" +# 2439 "parsing/parser.ml" in -# 3905 "parsing/parser.mly" +# 4004 "parsing/parser.mly" ( _1 ) -# 2274 "parsing/parser.ml" +# 2445 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -2328,9 +2499,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1114 "parsing/parser.mly" +# 1123 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 2334 "parsing/parser.ml" +# 2505 "parsing/parser.ml" in let (_endpos_tid_, _startpos_tid_) = (_endpos__1_inlined1_, _startpos__1_inlined1_) in @@ -2339,18 +2510,18 @@ module Tables = struct let xs = # 253 "" ( List.rev xs ) -# 2343 "parsing/parser.ml" +# 2514 "parsing/parser.ml" in -# 1276 "parsing/parser.mly" +# 1288 "parsing/parser.mly" ( xs ) -# 2348 "parsing/parser.ml" +# 2519 "parsing/parser.ml" in -# 3924 "parsing/parser.mly" +# 4029 "parsing/parser.mly" ( tys ) -# 2354 "parsing/parser.ml" +# 2525 "parsing/parser.ml" in let (_endpos_tys_, _startpos_tys_) = (_endpos__3_inlined1_, _startpos__1_) in @@ -2363,7 +2534,7 @@ module Tables = struct let _loc__3_ = (_startpos__3_, _endpos__3_) in let _sloc = (_symbolstartpos, _endpos) in -# 3864 "parsing/parser.mly" +# 3963 "parsing/parser.mly" ( match tid.txt with | Lident "float" -> let ident_start = fst _loc_tid_ in @@ -2376,7 +2547,7 @@ module Tables = struct *) not_expecting _sloc "Unboxed type other than float#" ) -# 2380 "parsing/parser.ml" +# 2551 "parsing/parser.ml" in let _endpos__1_ = _endpos__3_ in @@ -2384,15 +2555,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1151 "parsing/parser.mly" +# 1160 "parsing/parser.mly" ( mktyp ~loc:_sloc _1 ) -# 2390 "parsing/parser.ml" +# 2561 "parsing/parser.ml" in -# 3905 "parsing/parser.mly" +# 4004 "parsing/parser.mly" ( _1 ) -# 2396 "parsing/parser.ml" +# 2567 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -2421,35 +2592,35 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1114 "parsing/parser.mly" +# 1123 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 2427 "parsing/parser.ml" +# 2598 "parsing/parser.ml" in let tys = -# 3920 "parsing/parser.mly" +# 4025 "parsing/parser.mly" ( [] ) -# 2433 "parsing/parser.ml" +# 2604 "parsing/parser.ml" in -# 3878 "parsing/parser.mly" +# 3977 "parsing/parser.mly" ( Ptyp_constr(tid, tys) ) -# 2438 "parsing/parser.ml" +# 2609 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1151 "parsing/parser.mly" +# 1160 "parsing/parser.mly" ( mktyp ~loc:_sloc _1 ) -# 2447 "parsing/parser.ml" +# 2618 "parsing/parser.ml" in -# 3905 "parsing/parser.mly" +# 4004 "parsing/parser.mly" ( _1 ) -# 2453 "parsing/parser.ml" +# 2624 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -2485,20 +2656,20 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1114 "parsing/parser.mly" +# 1123 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 2491 "parsing/parser.ml" +# 2662 "parsing/parser.ml" in let tys = -# 3922 "parsing/parser.mly" +# 4027 "parsing/parser.mly" ( [ty] ) -# 2497 "parsing/parser.ml" +# 2668 "parsing/parser.ml" in -# 3878 "parsing/parser.mly" +# 3977 "parsing/parser.mly" ( Ptyp_constr(tid, tys) ) -# 2502 "parsing/parser.ml" +# 2673 "parsing/parser.ml" in let _startpos__1_ = _startpos_ty_ in @@ -2506,15 +2677,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1151 "parsing/parser.mly" +# 1160 "parsing/parser.mly" ( mktyp ~loc:_sloc _1 ) -# 2512 "parsing/parser.ml" +# 2683 "parsing/parser.ml" in -# 3905 "parsing/parser.mly" +# 4004 "parsing/parser.mly" ( _1 ) -# 2518 "parsing/parser.ml" +# 2689 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -2565,9 +2736,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1114 "parsing/parser.mly" +# 1123 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 2571 "parsing/parser.ml" +# 2742 "parsing/parser.ml" in let tys = @@ -2575,24 +2746,24 @@ module Tables = struct let xs = # 253 "" ( List.rev xs ) -# 2579 "parsing/parser.ml" +# 2750 "parsing/parser.ml" in -# 1276 "parsing/parser.mly" +# 1288 "parsing/parser.mly" ( xs ) -# 2584 "parsing/parser.ml" +# 2755 "parsing/parser.ml" in -# 3924 "parsing/parser.mly" +# 4029 "parsing/parser.mly" ( tys ) -# 2590 "parsing/parser.ml" +# 2761 "parsing/parser.ml" in -# 3878 "parsing/parser.mly" +# 3977 "parsing/parser.mly" ( Ptyp_constr(tid, tys) ) -# 2596 "parsing/parser.ml" +# 2767 "parsing/parser.ml" in let _endpos__1_ = _endpos__1_inlined1_ in @@ -2600,15 +2771,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1151 "parsing/parser.mly" +# 1160 "parsing/parser.mly" ( mktyp ~loc:_sloc _1 ) -# 2606 "parsing/parser.ml" +# 2777 "parsing/parser.ml" in -# 3905 "parsing/parser.mly" +# 4004 "parsing/parser.mly" ( _1 ) -# 2612 "parsing/parser.ml" +# 2783 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -2646,24 +2817,24 @@ module Tables = struct let _endpos = _endpos__3_ in let _v : (Parsetree.core_type) = let _1 = let _1 = -# 3880 "parsing/parser.mly" +# 3979 "parsing/parser.mly" ( let (f, c) = _2 in Ptyp_object (f, c) ) -# 2652 "parsing/parser.ml" +# 2823 "parsing/parser.ml" in let _endpos__1_ = _endpos__3_ in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1151 "parsing/parser.mly" +# 1160 "parsing/parser.mly" ( mktyp ~loc:_sloc _1 ) -# 2661 "parsing/parser.ml" +# 2832 "parsing/parser.ml" in -# 3905 "parsing/parser.mly" +# 4004 "parsing/parser.mly" ( _1 ) -# 2667 "parsing/parser.ml" +# 2838 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -2694,24 +2865,24 @@ module Tables = struct let _endpos = _endpos__2_ in let _v : (Parsetree.core_type) = let _1 = let _1 = -# 3882 "parsing/parser.mly" +# 3981 "parsing/parser.mly" ( Ptyp_object ([], Closed) ) -# 2700 "parsing/parser.ml" +# 2871 "parsing/parser.ml" in let _endpos__1_ = _endpos__2_ in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1151 "parsing/parser.mly" +# 1160 "parsing/parser.mly" ( mktyp ~loc:_sloc _1 ) -# 2709 "parsing/parser.ml" +# 2880 "parsing/parser.ml" in -# 3905 "parsing/parser.mly" +# 4004 "parsing/parser.mly" ( _1 ) -# 2715 "parsing/parser.ml" +# 2886 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -2747,20 +2918,20 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1114 "parsing/parser.mly" +# 1123 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 2753 "parsing/parser.ml" +# 2924 "parsing/parser.ml" in let tys = -# 3920 "parsing/parser.mly" +# 4025 "parsing/parser.mly" ( [] ) -# 2759 "parsing/parser.ml" +# 2930 "parsing/parser.ml" in -# 3886 "parsing/parser.mly" +# 3985 "parsing/parser.mly" ( Ptyp_class(cid, tys) ) -# 2764 "parsing/parser.ml" +# 2935 "parsing/parser.ml" in let _startpos__1_ = _startpos__2_ in @@ -2768,15 +2939,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1151 "parsing/parser.mly" +# 1160 "parsing/parser.mly" ( mktyp ~loc:_sloc _1 ) -# 2774 "parsing/parser.ml" +# 2945 "parsing/parser.ml" in -# 3905 "parsing/parser.mly" +# 4004 "parsing/parser.mly" ( _1 ) -# 2780 "parsing/parser.ml" +# 2951 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -2819,20 +2990,20 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1114 "parsing/parser.mly" +# 1123 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 2825 "parsing/parser.ml" +# 2996 "parsing/parser.ml" in let tys = -# 3922 "parsing/parser.mly" +# 4027 "parsing/parser.mly" ( [ty] ) -# 2831 "parsing/parser.ml" +# 3002 "parsing/parser.ml" in -# 3886 "parsing/parser.mly" +# 3985 "parsing/parser.mly" ( Ptyp_class(cid, tys) ) -# 2836 "parsing/parser.ml" +# 3007 "parsing/parser.ml" in let _startpos__1_ = _startpos_ty_ in @@ -2840,15 +3011,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1151 "parsing/parser.mly" +# 1160 "parsing/parser.mly" ( mktyp ~loc:_sloc _1 ) -# 2846 "parsing/parser.ml" +# 3017 "parsing/parser.ml" in -# 3905 "parsing/parser.mly" +# 4004 "parsing/parser.mly" ( _1 ) -# 2852 "parsing/parser.ml" +# 3023 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -2906,9 +3077,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1114 "parsing/parser.mly" +# 1123 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 2912 "parsing/parser.ml" +# 3083 "parsing/parser.ml" in let tys = @@ -2916,24 +3087,24 @@ module Tables = struct let xs = # 253 "" ( List.rev xs ) -# 2920 "parsing/parser.ml" +# 3091 "parsing/parser.ml" in -# 1276 "parsing/parser.mly" +# 1288 "parsing/parser.mly" ( xs ) -# 2925 "parsing/parser.ml" +# 3096 "parsing/parser.ml" in -# 3924 "parsing/parser.mly" +# 4029 "parsing/parser.mly" ( tys ) -# 2931 "parsing/parser.ml" +# 3102 "parsing/parser.ml" in -# 3886 "parsing/parser.mly" +# 3985 "parsing/parser.mly" ( Ptyp_class(cid, tys) ) -# 2937 "parsing/parser.ml" +# 3108 "parsing/parser.ml" in let _endpos__1_ = _endpos__1_inlined1_ in @@ -2941,15 +3112,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1151 "parsing/parser.mly" +# 1160 "parsing/parser.mly" ( mktyp ~loc:_sloc _1 ) -# 2947 "parsing/parser.ml" +# 3118 "parsing/parser.ml" in -# 3905 "parsing/parser.mly" +# 4004 "parsing/parser.mly" ( _1 ) -# 2953 "parsing/parser.ml" +# 3124 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -2987,24 +3158,24 @@ module Tables = struct let _endpos = _endpos__3_ in let _v : (Parsetree.core_type) = let _1 = let _1 = -# 3889 "parsing/parser.mly" +# 3988 "parsing/parser.mly" ( Ptyp_variant([_2], Closed, None) ) -# 2993 "parsing/parser.ml" +# 3164 "parsing/parser.ml" in let _endpos__1_ = _endpos__3_ in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1151 "parsing/parser.mly" +# 1160 "parsing/parser.mly" ( mktyp ~loc:_sloc _1 ) -# 3002 "parsing/parser.ml" +# 3173 "parsing/parser.ml" in -# 3905 "parsing/parser.mly" +# 4004 "parsing/parser.mly" ( _1 ) -# 3008 "parsing/parser.ml" +# 3179 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -3054,24 +3225,24 @@ module Tables = struct let xs = # 253 "" ( List.rev xs ) -# 3058 "parsing/parser.ml" +# 3229 "parsing/parser.ml" in -# 1248 "parsing/parser.mly" +# 1260 "parsing/parser.mly" ( xs ) -# 3063 "parsing/parser.ml" +# 3234 "parsing/parser.ml" in -# 3934 "parsing/parser.mly" +# 4038 "parsing/parser.mly" ( _1 ) -# 3069 "parsing/parser.ml" +# 3240 "parsing/parser.ml" in -# 3891 "parsing/parser.mly" +# 3990 "parsing/parser.mly" ( Ptyp_variant(_3, Closed, None) ) -# 3075 "parsing/parser.ml" +# 3246 "parsing/parser.ml" in let _endpos__1_ = _endpos__4_ in @@ -3079,15 +3250,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1151 "parsing/parser.mly" +# 1160 "parsing/parser.mly" ( mktyp ~loc:_sloc _1 ) -# 3085 "parsing/parser.ml" +# 3256 "parsing/parser.ml" in -# 3905 "parsing/parser.mly" +# 4004 "parsing/parser.mly" ( _1 ) -# 3091 "parsing/parser.ml" +# 3262 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -3144,24 +3315,24 @@ module Tables = struct let xs = # 253 "" ( List.rev xs ) -# 3148 "parsing/parser.ml" +# 3319 "parsing/parser.ml" in -# 1248 "parsing/parser.mly" +# 1260 "parsing/parser.mly" ( xs ) -# 3153 "parsing/parser.ml" +# 3324 "parsing/parser.ml" in -# 3934 "parsing/parser.mly" +# 4038 "parsing/parser.mly" ( _1 ) -# 3159 "parsing/parser.ml" +# 3330 "parsing/parser.ml" in -# 3893 "parsing/parser.mly" +# 3992 "parsing/parser.mly" ( Ptyp_variant(_2 :: _4, Closed, None) ) -# 3165 "parsing/parser.ml" +# 3336 "parsing/parser.ml" in let _endpos__1_ = _endpos__5_ in @@ -3169,15 +3340,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1151 "parsing/parser.mly" +# 1160 "parsing/parser.mly" ( mktyp ~loc:_sloc _1 ) -# 3175 "parsing/parser.ml" +# 3346 "parsing/parser.ml" in -# 3905 "parsing/parser.mly" +# 4004 "parsing/parser.mly" ( _1 ) -# 3181 "parsing/parser.ml" +# 3352 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -3227,24 +3398,24 @@ module Tables = struct let xs = # 253 "" ( List.rev xs ) -# 3231 "parsing/parser.ml" +# 3402 "parsing/parser.ml" in -# 1248 "parsing/parser.mly" +# 1260 "parsing/parser.mly" ( xs ) -# 3236 "parsing/parser.ml" +# 3407 "parsing/parser.ml" in -# 3934 "parsing/parser.mly" +# 4038 "parsing/parser.mly" ( _1 ) -# 3242 "parsing/parser.ml" +# 3413 "parsing/parser.ml" in -# 3895 "parsing/parser.mly" +# 3994 "parsing/parser.mly" ( Ptyp_variant(_3, Open, None) ) -# 3248 "parsing/parser.ml" +# 3419 "parsing/parser.ml" in let _endpos__1_ = _endpos__4_ in @@ -3252,15 +3423,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1151 "parsing/parser.mly" +# 1160 "parsing/parser.mly" ( mktyp ~loc:_sloc _1 ) -# 3258 "parsing/parser.ml" +# 3429 "parsing/parser.ml" in -# 3905 "parsing/parser.mly" +# 4004 "parsing/parser.mly" ( _1 ) -# 3264 "parsing/parser.ml" +# 3435 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -3291,24 +3462,24 @@ module Tables = struct let _endpos = _endpos__2_ in let _v : (Parsetree.core_type) = let _1 = let _1 = -# 3897 "parsing/parser.mly" +# 3996 "parsing/parser.mly" ( Ptyp_variant([], Open, None) ) -# 3297 "parsing/parser.ml" +# 3468 "parsing/parser.ml" in let _endpos__1_ = _endpos__2_ in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1151 "parsing/parser.mly" +# 1160 "parsing/parser.mly" ( mktyp ~loc:_sloc _1 ) -# 3306 "parsing/parser.ml" +# 3477 "parsing/parser.ml" in -# 3905 "parsing/parser.mly" +# 4004 "parsing/parser.mly" ( _1 ) -# 3312 "parsing/parser.ml" +# 3483 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -3358,24 +3529,24 @@ module Tables = struct let xs = # 253 "" ( List.rev xs ) -# 3362 "parsing/parser.ml" +# 3533 "parsing/parser.ml" in -# 1248 "parsing/parser.mly" +# 1260 "parsing/parser.mly" ( xs ) -# 3367 "parsing/parser.ml" +# 3538 "parsing/parser.ml" in -# 3934 "parsing/parser.mly" +# 4038 "parsing/parser.mly" ( _1 ) -# 3373 "parsing/parser.ml" +# 3544 "parsing/parser.ml" in -# 3899 "parsing/parser.mly" +# 3998 "parsing/parser.mly" ( Ptyp_variant(_3, Closed, Some []) ) -# 3379 "parsing/parser.ml" +# 3550 "parsing/parser.ml" in let _endpos__1_ = _endpos__4_ in @@ -3383,15 +3554,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1151 "parsing/parser.mly" +# 1160 "parsing/parser.mly" ( mktyp ~loc:_sloc _1 ) -# 3389 "parsing/parser.ml" +# 3560 "parsing/parser.ml" in -# 3905 "parsing/parser.mly" +# 4004 "parsing/parser.mly" ( _1 ) -# 3395 "parsing/parser.ml" +# 3566 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -3456,18 +3627,18 @@ module Tables = struct let xs = # 253 "" ( List.rev xs ) -# 3460 "parsing/parser.ml" +# 3631 "parsing/parser.ml" in -# 1216 "parsing/parser.mly" +# 1228 "parsing/parser.mly" ( xs ) -# 3465 "parsing/parser.ml" +# 3636 "parsing/parser.ml" in -# 3962 "parsing/parser.mly" +# 4066 "parsing/parser.mly" ( _1 ) -# 3471 "parsing/parser.ml" +# 3642 "parsing/parser.ml" in let _3 = @@ -3475,24 +3646,24 @@ module Tables = struct let xs = # 253 "" ( List.rev xs ) -# 3479 "parsing/parser.ml" +# 3650 "parsing/parser.ml" in -# 1248 "parsing/parser.mly" +# 1260 "parsing/parser.mly" ( xs ) -# 3484 "parsing/parser.ml" +# 3655 "parsing/parser.ml" in -# 3934 "parsing/parser.mly" +# 4038 "parsing/parser.mly" ( _1 ) -# 3490 "parsing/parser.ml" +# 3661 "parsing/parser.ml" in -# 3901 "parsing/parser.mly" +# 4000 "parsing/parser.mly" ( Ptyp_variant(_3, Closed, Some _5) ) -# 3496 "parsing/parser.ml" +# 3667 "parsing/parser.ml" in let _endpos__1_ = _endpos__6_ in @@ -3500,15 +3671,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1151 "parsing/parser.mly" +# 1160 "parsing/parser.mly" ( mktyp ~loc:_sloc _1 ) -# 3506 "parsing/parser.ml" +# 3677 "parsing/parser.ml" in -# 3905 "parsing/parser.mly" +# 4004 "parsing/parser.mly" ( _1 ) -# 3512 "parsing/parser.ml" +# 3683 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -3532,23 +3703,144 @@ module Tables = struct let _endpos = _endpos__1_ in let _v : (Parsetree.core_type) = let _1 = let _1 = -# 3903 "parsing/parser.mly" +# 4002 "parsing/parser.mly" ( Ptyp_extension _1 ) -# 3538 "parsing/parser.ml" +# 3709 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1151 "parsing/parser.mly" +# 1160 "parsing/parser.mly" ( mktyp ~loc:_sloc _1 ) -# 3546 "parsing/parser.ml" +# 3717 "parsing/parser.ml" in -# 3905 "parsing/parser.mly" +# 4004 "parsing/parser.mly" ( _1 ) -# 3552 "parsing/parser.ml" +# 3723 "parsing/parser.ml" + in + { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = Obj.repr _v; + MenhirLib.EngineTypes.startp = _startpos; + MenhirLib.EngineTypes.endp = _endpos; + MenhirLib.EngineTypes.next = _menhir_stack; + }); + (fun _menhir_env -> + let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in + let { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _6; + MenhirLib.EngineTypes.startp = _startpos__6_; + MenhirLib.EngineTypes.endp = _endpos__6_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = layout; + MenhirLib.EngineTypes.startp = _startpos_layout_; + MenhirLib.EngineTypes.endp = _endpos_layout_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _4; + MenhirLib.EngineTypes.startp = _startpos__4_; + MenhirLib.EngineTypes.endp = _endpos__4_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = name; + MenhirLib.EngineTypes.startp = _startpos_name_; + MenhirLib.EngineTypes.endp = _endpos_name_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _2; + MenhirLib.EngineTypes.startp = _startpos__2_; + MenhirLib.EngineTypes.endp = _endpos__2_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + }; + }; + }; + }; + }; + } = _menhir_stack in + let _6 : unit = Obj.magic _6 in + let layout : (Asttypes.layout_annotation) = Obj.magic layout in + let _4 : unit = Obj.magic _4 in + let name : (Asttypes.label) = Obj.magic name in + let _2 : unit = Obj.magic _2 in + let _1 : unit = Obj.magic _1 in + let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in + let _startpos = _startpos__1_ in + let _endpos = _endpos__6_ in + let _v : (Parsetree.core_type) = let _endpos = _endpos__6_ in + let _symbolstartpos = _startpos__1_ in + let _sloc = (_symbolstartpos, _endpos) in + +# 4006 "parsing/parser.mly" + ( Jane_syntax.Layouts.type_of ~loc:(make_loc _sloc) ~attrs:[] @@ + Ltyp_var { name = Some name; layout } ) +# 3787 "parsing/parser.ml" + in + { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = Obj.repr _v; + MenhirLib.EngineTypes.startp = _startpos; + MenhirLib.EngineTypes.endp = _endpos; + MenhirLib.EngineTypes.next = _menhir_stack; + }); + (fun _menhir_env -> + let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in + let { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _5; + MenhirLib.EngineTypes.startp = _startpos__5_; + MenhirLib.EngineTypes.endp = _endpos__5_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = layout; + MenhirLib.EngineTypes.startp = _startpos_layout_; + MenhirLib.EngineTypes.endp = _endpos_layout_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _3; + MenhirLib.EngineTypes.startp = _startpos__3_; + MenhirLib.EngineTypes.endp = _endpos__3_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _2; + MenhirLib.EngineTypes.startp = _startpos__2_; + MenhirLib.EngineTypes.endp = _endpos__2_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + }; + }; + }; + }; + } = _menhir_stack in + let _5 : unit = Obj.magic _5 in + let layout : (Asttypes.layout_annotation) = Obj.magic layout in + let _3 : unit = Obj.magic _3 in + let _2 : unit = Obj.magic _2 in + let _1 : unit = Obj.magic _1 in + let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in + let _startpos = _startpos__1_ in + let _endpos = _endpos__5_ in + let _v : (Parsetree.core_type) = let _endpos = _endpos__5_ in + let _symbolstartpos = _startpos__1_ in + let _sloc = (_symbolstartpos, _endpos) in + +# 4009 "parsing/parser.mly" + ( Jane_syntax.Layouts.type_of ~loc:(make_loc _sloc) ~attrs:[] @@ + Ltyp_var { name = None; layout } ) +# 3844 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -3572,23 +3864,23 @@ module Tables = struct let _endpos = _endpos__1_ in let _v : (string Asttypes.loc) = let _1 = let _1 = -# 4348 "parsing/parser.mly" +# 4453 "parsing/parser.mly" ( _1 ) -# 3578 "parsing/parser.ml" +# 3870 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1144 "parsing/parser.mly" +# 1153 "parsing/parser.mly" ( mkloc _1 (make_loc _sloc) ) -# 3586 "parsing/parser.ml" +# 3878 "parsing/parser.ml" in -# 4350 "parsing/parser.mly" +# 4455 "parsing/parser.mly" ( _1 ) -# 3592 "parsing/parser.ml" +# 3884 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -3626,24 +3918,24 @@ module Tables = struct let _endpos = _endpos__3_ in let _v : (string Asttypes.loc) = let _1 = let _1 = -# 4349 "parsing/parser.mly" +# 4454 "parsing/parser.mly" ( _1 ^ "." ^ _3.txt ) -# 3632 "parsing/parser.ml" +# 3924 "parsing/parser.ml" in let _endpos__1_ = _endpos__3_ in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1144 "parsing/parser.mly" +# 1153 "parsing/parser.mly" ( mkloc _1 (make_loc _sloc) ) -# 3641 "parsing/parser.ml" +# 3933 "parsing/parser.ml" in -# 4350 "parsing/parser.mly" +# 4455 "parsing/parser.mly" ( _1 ) -# 3647 "parsing/parser.ml" +# 3939 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -3666,11 +3958,11 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Parsetree.payload) = -# 4405 "parsing/parser.mly" +# 4510 "parsing/parser.mly" ( Builtin_attributes.mark_payload_attrs_used _1; _1 ) -# 3674 "parsing/parser.ml" +# 3966 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -3717,9 +4009,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 4354 "parsing/parser.mly" +# 4459 "parsing/parser.mly" ( mk_attr ~loc:(make_loc _sloc) _2 _3 ) -# 3723 "parsing/parser.ml" +# 4015 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -3742,9 +4034,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Parsetree.class_expr) = -# 2124 "parsing/parser.mly" +# 2136 "parsing/parser.mly" ( _1 ) -# 3748 "parsing/parser.ml" +# 4040 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -3783,18 +4075,18 @@ module Tables = struct let _v : (Parsetree.class_expr) = let _2 = let _1 = _1_inlined1 in -# 4371 "parsing/parser.mly" +# 4476 "parsing/parser.mly" ( _1 ) -# 3789 "parsing/parser.ml" +# 4081 "parsing/parser.ml" in let _endpos = _endpos__3_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2126 "parsing/parser.mly" +# 2138 "parsing/parser.mly" ( wrap_class_attrs ~loc:_sloc _3 _2 ) -# 3798 "parsing/parser.ml" +# 4090 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -3834,9 +4126,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2128 "parsing/parser.mly" +# 2140 "parsing/parser.mly" ( class_of_let_bindings ~loc:_sloc _1 _3 ) -# 3840 "parsing/parser.ml" +# 4132 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -3899,34 +4191,34 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1114 "parsing/parser.mly" +# 1123 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 3905 "parsing/parser.ml" +# 4197 "parsing/parser.ml" in let _endpos__5_ = _endpos__1_inlined2_ in let _4 = let _1 = _1_inlined1 in -# 4371 "parsing/parser.mly" +# 4476 "parsing/parser.mly" ( _1 ) -# 3914 "parsing/parser.ml" +# 4206 "parsing/parser.ml" in let _3 = -# 4272 "parsing/parser.mly" +# 4377 "parsing/parser.mly" ( Fresh ) -# 3920 "parsing/parser.ml" +# 4212 "parsing/parser.ml" in let _endpos = _endpos__7_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2130 "parsing/parser.mly" +# 2142 "parsing/parser.mly" ( let loc = (_startpos__2_, _endpos__5_) in let od = Opn.mk ~override:_3 ~loc:(make_loc loc) _5 in mkclass ~loc:_sloc ~attrs:_4 (Pcl_open(od, _7)) ) -# 3930 "parsing/parser.ml" +# 4222 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -3996,34 +4288,34 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1114 "parsing/parser.mly" +# 1123 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 4002 "parsing/parser.ml" +# 4294 "parsing/parser.ml" in let _endpos__5_ = _endpos__1_inlined3_ in let _4 = let _1 = _1_inlined2 in -# 4371 "parsing/parser.mly" +# 4476 "parsing/parser.mly" ( _1 ) -# 4011 "parsing/parser.ml" +# 4303 "parsing/parser.ml" in let _3 = -# 4273 "parsing/parser.mly" +# 4378 "parsing/parser.mly" ( Override ) -# 4017 "parsing/parser.ml" +# 4309 "parsing/parser.ml" in let _endpos = _endpos__7_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2130 "parsing/parser.mly" +# 2142 "parsing/parser.mly" ( let loc = (_startpos__2_, _endpos__5_) in let od = Opn.mk ~override:_3 ~loc:(make_loc loc) _5 in mkclass ~loc:_sloc ~attrs:_4 (Pcl_open(od, _7)) ) -# 4027 "parsing/parser.ml" +# 4319 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -4053,9 +4345,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (Parsetree.class_expr) = -# 2134 "parsing/parser.mly" +# 2146 "parsing/parser.mly" ( Cl.attr _1 _2 ) -# 4059 "parsing/parser.ml" +# 4351 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -4090,18 +4382,18 @@ module Tables = struct let xs = # 253 "" ( List.rev xs ) -# 4094 "parsing/parser.ml" +# 4386 "parsing/parser.ml" in -# 1216 "parsing/parser.mly" +# 1228 "parsing/parser.mly" ( xs ) -# 4099 "parsing/parser.ml" +# 4391 "parsing/parser.ml" in -# 2137 "parsing/parser.mly" +# 2149 "parsing/parser.mly" ( Pcl_apply(_1, _2) ) -# 4105 "parsing/parser.ml" +# 4397 "parsing/parser.ml" in let _endpos__1_ = _endpos_xs_ in @@ -4109,15 +4401,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1167 "parsing/parser.mly" +# 1176 "parsing/parser.mly" ( mkclass ~loc:_sloc _1 ) -# 4115 "parsing/parser.ml" +# 4407 "parsing/parser.ml" in -# 2140 "parsing/parser.mly" +# 2152 "parsing/parser.mly" ( _1 ) -# 4121 "parsing/parser.ml" +# 4413 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -4141,23 +4433,23 @@ module Tables = struct let _endpos = _endpos__1_ in let _v : (Parsetree.class_expr) = let _1 = let _1 = -# 2139 "parsing/parser.mly" +# 2151 "parsing/parser.mly" ( Pcl_extension _1 ) -# 4147 "parsing/parser.ml" +# 4439 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1167 "parsing/parser.mly" +# 1176 "parsing/parser.mly" ( mkclass ~loc:_sloc _1 ) -# 4155 "parsing/parser.ml" +# 4447 "parsing/parser.ml" in -# 2140 "parsing/parser.mly" +# 2152 "parsing/parser.mly" ( _1 ) -# 4161 "parsing/parser.ml" +# 4453 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -4210,33 +4502,33 @@ module Tables = struct let _v : (Parsetree.class_field) = let _6 = let _1 = _1_inlined2 in -# 4367 "parsing/parser.mly" +# 4472 "parsing/parser.mly" ( _1 ) -# 4216 "parsing/parser.ml" +# 4508 "parsing/parser.ml" in let _endpos__6_ = _endpos__1_inlined2_ in let _3 = let _1 = _1_inlined1 in -# 4371 "parsing/parser.mly" +# 4476 "parsing/parser.mly" ( _1 ) -# 4225 "parsing/parser.ml" +# 4517 "parsing/parser.ml" in let _2 = -# 4272 "parsing/parser.mly" +# 4377 "parsing/parser.mly" ( Fresh ) -# 4231 "parsing/parser.ml" +# 4523 "parsing/parser.ml" in let _endpos = _endpos__6_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2189 "parsing/parser.mly" +# 2201 "parsing/parser.mly" ( let docs = symbol_docs _sloc in mkcf ~loc:_sloc (Pcf_inherit (_2, _4, self)) ~attrs:(_3@_6) ~docs ) -# 4240 "parsing/parser.ml" +# 4532 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -4296,33 +4588,33 @@ module Tables = struct let _v : (Parsetree.class_field) = let _6 = let _1 = _1_inlined3 in -# 4367 "parsing/parser.mly" +# 4472 "parsing/parser.mly" ( _1 ) -# 4302 "parsing/parser.ml" +# 4594 "parsing/parser.ml" in let _endpos__6_ = _endpos__1_inlined3_ in let _3 = let _1 = _1_inlined2 in -# 4371 "parsing/parser.mly" +# 4476 "parsing/parser.mly" ( _1 ) -# 4311 "parsing/parser.ml" +# 4603 "parsing/parser.ml" in let _2 = -# 4273 "parsing/parser.mly" +# 4378 "parsing/parser.mly" ( Override ) -# 4317 "parsing/parser.ml" +# 4609 "parsing/parser.ml" in let _endpos = _endpos__6_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2189 "parsing/parser.mly" +# 2201 "parsing/parser.mly" ( let docs = symbol_docs _sloc in mkcf ~loc:_sloc (Pcf_inherit (_2, _4, self)) ~attrs:(_3@_6) ~docs ) -# 4326 "parsing/parser.ml" +# 4618 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -4363,9 +4655,9 @@ module Tables = struct let _v : (Parsetree.class_field) = let _3 = let _1 = _1_inlined1 in -# 4367 "parsing/parser.mly" +# 4472 "parsing/parser.mly" ( _1 ) -# 4369 "parsing/parser.ml" +# 4661 "parsing/parser.ml" in let _endpos__3_ = _endpos__1_inlined1_ in @@ -4373,11 +4665,11 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2192 "parsing/parser.mly" +# 2204 "parsing/parser.mly" ( let v, attrs = _2 in let docs = symbol_docs _sloc in mkcf ~loc:_sloc (Pcf_val v) ~attrs:(attrs@_3) ~docs ) -# 4381 "parsing/parser.ml" +# 4673 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -4418,9 +4710,9 @@ module Tables = struct let _v : (Parsetree.class_field) = let _3 = let _1 = _1_inlined1 in -# 4367 "parsing/parser.mly" +# 4472 "parsing/parser.mly" ( _1 ) -# 4424 "parsing/parser.ml" +# 4716 "parsing/parser.ml" in let _endpos__3_ = _endpos__1_inlined1_ in @@ -4428,11 +4720,11 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2196 "parsing/parser.mly" +# 2208 "parsing/parser.mly" ( let meth, attrs = _2 in let docs = symbol_docs _sloc in mkcf ~loc:_sloc (Pcf_method meth) ~attrs:(attrs@_3) ~docs ) -# 4436 "parsing/parser.ml" +# 4728 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -4478,28 +4770,28 @@ module Tables = struct let _v : (Parsetree.class_field) = let _4 = let _1 = _1_inlined2 in -# 4367 "parsing/parser.mly" +# 4472 "parsing/parser.mly" ( _1 ) -# 4484 "parsing/parser.ml" +# 4776 "parsing/parser.ml" in let _endpos__4_ = _endpos__1_inlined2_ in let _2 = let _1 = _1_inlined1 in -# 4371 "parsing/parser.mly" +# 4476 "parsing/parser.mly" ( _1 ) -# 4493 "parsing/parser.ml" +# 4785 "parsing/parser.ml" in let _endpos = _endpos__4_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2200 "parsing/parser.mly" +# 2212 "parsing/parser.mly" ( let docs = symbol_docs _sloc in mkcf ~loc:_sloc (Pcf_constraint _3) ~attrs:(_2@_4) ~docs ) -# 4503 "parsing/parser.ml" +# 4795 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -4545,28 +4837,28 @@ module Tables = struct let _v : (Parsetree.class_field) = let _4 = let _1 = _1_inlined2 in -# 4367 "parsing/parser.mly" +# 4472 "parsing/parser.mly" ( _1 ) -# 4551 "parsing/parser.ml" +# 4843 "parsing/parser.ml" in let _endpos__4_ = _endpos__1_inlined2_ in let _2 = let _1 = _1_inlined1 in -# 4371 "parsing/parser.mly" +# 4476 "parsing/parser.mly" ( _1 ) -# 4560 "parsing/parser.ml" +# 4852 "parsing/parser.ml" in let _endpos = _endpos__4_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2203 "parsing/parser.mly" +# 2215 "parsing/parser.mly" ( let docs = symbol_docs _sloc in mkcf ~loc:_sloc (Pcf_initializer _3) ~attrs:(_2@_4) ~docs ) -# 4570 "parsing/parser.ml" +# 4862 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -4598,9 +4890,9 @@ module Tables = struct let _v : (Parsetree.class_field) = let _2 = let _1 = _1_inlined1 in -# 4367 "parsing/parser.mly" +# 4472 "parsing/parser.mly" ( _1 ) -# 4604 "parsing/parser.ml" +# 4896 "parsing/parser.ml" in let _endpos__2_ = _endpos__1_inlined1_ in @@ -4608,10 +4900,10 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2206 "parsing/parser.mly" +# 2218 "parsing/parser.mly" ( let docs = symbol_docs _sloc in mkcf ~loc:_sloc (Pcf_extension _1) ~attrs:_2 ~docs ) -# 4615 "parsing/parser.ml" +# 4907 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -4635,23 +4927,23 @@ module Tables = struct let _endpos = _endpos__1_ in let _v : (Parsetree.class_field) = let _1 = let _1 = -# 2209 "parsing/parser.mly" +# 2221 "parsing/parser.mly" ( Pcf_attribute _1 ) -# 4641 "parsing/parser.ml" +# 4933 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1165 "parsing/parser.mly" +# 1174 "parsing/parser.mly" ( mkcf ~loc:_sloc _1 ) -# 4649 "parsing/parser.ml" +# 4941 "parsing/parser.ml" in -# 2210 "parsing/parser.mly" +# 2222 "parsing/parser.mly" ( _1 ) -# 4655 "parsing/parser.ml" +# 4947 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -4681,9 +4973,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (Parsetree.class_expr) = -# 2104 "parsing/parser.mly" +# 2116 "parsing/parser.mly" ( _2 ) -# 4687 "parsing/parser.ml" +# 4979 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -4728,24 +5020,24 @@ module Tables = struct let _endpos = _endpos__4_ in let _v : (Parsetree.class_expr) = let _1 = let _1 = -# 2107 "parsing/parser.mly" +# 2119 "parsing/parser.mly" ( Pcl_constraint(_4, _2) ) -# 4734 "parsing/parser.ml" +# 5026 "parsing/parser.ml" in let _endpos__1_ = _endpos__4_ in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1167 "parsing/parser.mly" +# 1176 "parsing/parser.mly" ( mkclass ~loc:_sloc _1 ) -# 4743 "parsing/parser.ml" +# 5035 "parsing/parser.ml" in -# 2110 "parsing/parser.mly" +# 2122 "parsing/parser.mly" ( _1 ) -# 4749 "parsing/parser.ml" +# 5041 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -4776,24 +5068,24 @@ module Tables = struct let _endpos = _endpos__2_ in let _v : (Parsetree.class_expr) = let _1 = let _1 = -# 2109 "parsing/parser.mly" +# 2121 "parsing/parser.mly" ( let (l,o,p) = _1 in Pcl_fun(l, o, p, _2) ) -# 4782 "parsing/parser.ml" +# 5074 "parsing/parser.ml" in let _endpos__1_ = _endpos__2_ in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1167 "parsing/parser.mly" +# 1176 "parsing/parser.mly" ( mkclass ~loc:_sloc _1 ) -# 4791 "parsing/parser.ml" +# 5083 "parsing/parser.ml" in -# 2110 "parsing/parser.mly" +# 2122 "parsing/parser.mly" ( _1 ) -# 4797 "parsing/parser.ml" +# 5089 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -4831,24 +5123,24 @@ module Tables = struct let _endpos = _endpos_e_ in let _v : (Parsetree.class_expr) = let _1 = let _1 = -# 2165 "parsing/parser.mly" +# 2177 "parsing/parser.mly" ( let (l,o,p) = _1 in Pcl_fun(l, o, p, e) ) -# 4837 "parsing/parser.ml" +# 5129 "parsing/parser.ml" in let _endpos__1_ = _endpos_e_ in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1167 "parsing/parser.mly" +# 1176 "parsing/parser.mly" ( mkclass ~loc:_sloc _1 ) -# 4846 "parsing/parser.ml" +# 5138 "parsing/parser.ml" in -# 2166 "parsing/parser.mly" +# 2178 "parsing/parser.mly" ( _1 ) -# 4852 "parsing/parser.ml" +# 5144 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -4879,24 +5171,24 @@ module Tables = struct let _endpos = _endpos_e_ in let _v : (Parsetree.class_expr) = let _1 = let _1 = -# 2165 "parsing/parser.mly" +# 2177 "parsing/parser.mly" ( let (l,o,p) = _1 in Pcl_fun(l, o, p, e) ) -# 4885 "parsing/parser.ml" +# 5177 "parsing/parser.ml" in let _endpos__1_ = _endpos_e_ in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1167 "parsing/parser.mly" +# 1176 "parsing/parser.mly" ( mkclass ~loc:_sloc _1 ) -# 4894 "parsing/parser.ml" +# 5186 "parsing/parser.ml" in -# 2166 "parsing/parser.mly" +# 2178 "parsing/parser.mly" ( _1 ) -# 4900 "parsing/parser.ml" +# 5192 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -4919,9 +5211,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Longident.t) = -# 4145 "parsing/parser.mly" +# 4250 "parsing/parser.mly" ( _1 ) -# 4925 "parsing/parser.ml" +# 5217 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -4961,9 +5253,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2174 "parsing/parser.mly" +# 2186 "parsing/parser.mly" ( reloc_pat ~loc:_sloc _2 ) -# 4967 "parsing/parser.ml" +# 5259 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -5015,24 +5307,24 @@ module Tables = struct let _endpos = _endpos__5_ in let _v : (Parsetree.pattern) = let _1 = let _1 = -# 2176 "parsing/parser.mly" +# 2188 "parsing/parser.mly" ( Ppat_constraint(_2, _4) ) -# 5021 "parsing/parser.ml" +# 5313 "parsing/parser.ml" in let _endpos__1_ = _endpos__5_ in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1149 "parsing/parser.mly" +# 1158 "parsing/parser.mly" ( mkpat ~loc:_sloc _1 ) -# 5030 "parsing/parser.ml" +# 5322 "parsing/parser.ml" in -# 2177 "parsing/parser.mly" +# 2189 "parsing/parser.mly" ( _1 ) -# 5036 "parsing/parser.ml" +# 5328 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -5051,9 +5343,9 @@ module Tables = struct let _symbolstartpos = _endpos in let _sloc = (_symbolstartpos, _endpos) in -# 2179 "parsing/parser.mly" +# 2191 "parsing/parser.mly" ( ghpat ~loc:_sloc Ppat_any ) -# 5057 "parsing/parser.ml" +# 5349 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -5090,9 +5382,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : (Parsetree.core_type) = -# 2304 "parsing/parser.mly" +# 2316 "parsing/parser.mly" ( _2 ) -# 5096 "parsing/parser.ml" +# 5388 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -5109,24 +5401,24 @@ module Tables = struct let _endpos = _startpos in let _v : (Parsetree.core_type) = let _1 = let _1 = -# 2305 "parsing/parser.mly" +# 2317 "parsing/parser.mly" ( Ptyp_any ) -# 5115 "parsing/parser.ml" +# 5407 "parsing/parser.ml" in let _endpos__1_ = _endpos__0_ in let _endpos = _endpos__1_ in let _symbolstartpos = _endpos in let _sloc = (_symbolstartpos, _endpos) in -# 1151 "parsing/parser.mly" +# 1160 "parsing/parser.mly" ( mktyp ~loc:_sloc _1 ) -# 5124 "parsing/parser.ml" +# 5416 "parsing/parser.ml" in -# 2306 "parsing/parser.mly" +# 2318 "parsing/parser.mly" ( _1 ) -# 5130 "parsing/parser.ml" +# 5422 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -5172,28 +5464,28 @@ module Tables = struct let _v : (Parsetree.class_type_field) = let _4 = let _1 = _1_inlined2 in -# 4367 "parsing/parser.mly" +# 4472 "parsing/parser.mly" ( _1 ) -# 5178 "parsing/parser.ml" +# 5470 "parsing/parser.ml" in let _endpos__4_ = _endpos__1_inlined2_ in let _2 = let _1 = _1_inlined1 in -# 4371 "parsing/parser.mly" +# 4476 "parsing/parser.mly" ( _1 ) -# 5187 "parsing/parser.ml" +# 5479 "parsing/parser.ml" in let _endpos = _endpos__4_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2314 "parsing/parser.mly" +# 2326 "parsing/parser.mly" ( let docs = symbol_docs _sloc in mkctf ~loc:_sloc (Pctf_inherit _3) ~attrs:(_2@_4) ~docs ) -# 5197 "parsing/parser.ml" +# 5489 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -5251,9 +5543,9 @@ module Tables = struct let ty : (Parsetree.core_type) = Obj.magic ty in let _3 : unit = Obj.magic _3 in let _1_inlined2 : ( -# 928 "parsing/parser.mly" +# 937 "parsing/parser.mly" (string) -# 5257 "parsing/parser.ml" +# 5549 "parsing/parser.ml" ) = Obj.magic _1_inlined2 in let flags : (Asttypes.mutable_flag * Asttypes.virtual_flag) = Obj.magic flags in let _1_inlined1 : (Parsetree.attributes) = Obj.magic _1_inlined1 in @@ -5264,9 +5556,9 @@ module Tables = struct let _v : (Parsetree.class_type_field) = let _4 = let _1 = _1_inlined3 in -# 4367 "parsing/parser.mly" +# 4472 "parsing/parser.mly" ( _1 ) -# 5270 "parsing/parser.ml" +# 5562 "parsing/parser.ml" in let _endpos__4_ = _endpos__1_inlined3_ in @@ -5274,44 +5566,44 @@ module Tables = struct let (_endpos__1_, _startpos__1_, _1) = (_endpos__1_inlined2_, _startpos__1_inlined2_, _1_inlined2) in let label = let _1 = -# 4002 "parsing/parser.mly" +# 4106 "parsing/parser.mly" ( _1 ) -# 5280 "parsing/parser.ml" +# 5572 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1114 "parsing/parser.mly" +# 1123 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 5288 "parsing/parser.ml" +# 5580 "parsing/parser.ml" in -# 2339 "parsing/parser.mly" +# 2351 "parsing/parser.mly" ( let mut, virt = flags in label, mut, virt, ty ) -# 5297 "parsing/parser.ml" +# 5589 "parsing/parser.ml" in let _2 = let _1 = _1_inlined1 in -# 4371 "parsing/parser.mly" +# 4476 "parsing/parser.mly" ( _1 ) -# 5305 "parsing/parser.ml" +# 5597 "parsing/parser.ml" in let _endpos = _endpos__4_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2317 "parsing/parser.mly" +# 2329 "parsing/parser.mly" ( let docs = symbol_docs _sloc in mkctf ~loc:_sloc (Pctf_val _3) ~attrs:(_2@_4) ~docs ) -# 5315 "parsing/parser.ml" +# 5607 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -5369,9 +5661,9 @@ module Tables = struct let _1_inlined3 : (Parsetree.core_type) = Obj.magic _1_inlined3 in let _5 : unit = Obj.magic _5 in let _1_inlined2 : ( -# 928 "parsing/parser.mly" +# 937 "parsing/parser.mly" (string) -# 5375 "parsing/parser.ml" +# 5667 "parsing/parser.ml" ) = Obj.magic _1_inlined2 in let _3 : (Asttypes.private_flag * Asttypes.virtual_flag) = Obj.magic _3 in let _1_inlined1 : (Parsetree.attributes) = Obj.magic _1_inlined1 in @@ -5382,53 +5674,53 @@ module Tables = struct let _v : (Parsetree.class_type_field) = let _7 = let _1 = _1_inlined4 in -# 4367 "parsing/parser.mly" +# 4472 "parsing/parser.mly" ( _1 ) -# 5388 "parsing/parser.ml" +# 5680 "parsing/parser.ml" in let _endpos__7_ = _endpos__1_inlined4_ in let _6 = let _1 = _1_inlined3 in -# 3723 "parsing/parser.mly" +# 3814 "parsing/parser.mly" ( _1 ) -# 5397 "parsing/parser.ml" +# 5689 "parsing/parser.ml" in let _4 = let (_endpos__1_, _startpos__1_, _1) = (_endpos__1_inlined2_, _startpos__1_inlined2_, _1_inlined2) in let _1 = -# 4002 "parsing/parser.mly" +# 4106 "parsing/parser.mly" ( _1 ) -# 5405 "parsing/parser.ml" +# 5697 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1114 "parsing/parser.mly" +# 1123 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 5413 "parsing/parser.ml" +# 5705 "parsing/parser.ml" in let _2 = let _1 = _1_inlined1 in -# 4371 "parsing/parser.mly" +# 4476 "parsing/parser.mly" ( _1 ) -# 5421 "parsing/parser.ml" +# 5713 "parsing/parser.ml" in let _endpos = _endpos__7_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2321 "parsing/parser.mly" +# 2333 "parsing/parser.mly" ( let (p, v) = _3 in let docs = symbol_docs _sloc in mkctf ~loc:_sloc (Pctf_method (_4, p, v, _6)) ~attrs:(_2@_7) ~docs ) -# 5432 "parsing/parser.ml" +# 5724 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -5474,28 +5766,28 @@ module Tables = struct let _v : (Parsetree.class_type_field) = let _4 = let _1 = _1_inlined2 in -# 4367 "parsing/parser.mly" +# 4472 "parsing/parser.mly" ( _1 ) -# 5480 "parsing/parser.ml" +# 5772 "parsing/parser.ml" in let _endpos__4_ = _endpos__1_inlined2_ in let _2 = let _1 = _1_inlined1 in -# 4371 "parsing/parser.mly" +# 4476 "parsing/parser.mly" ( _1 ) -# 5489 "parsing/parser.ml" +# 5781 "parsing/parser.ml" in let _endpos = _endpos__4_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2325 "parsing/parser.mly" +# 2337 "parsing/parser.mly" ( let docs = symbol_docs _sloc in mkctf ~loc:_sloc (Pctf_constraint _3) ~attrs:(_2@_4) ~docs ) -# 5499 "parsing/parser.ml" +# 5791 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -5527,9 +5819,9 @@ module Tables = struct let _v : (Parsetree.class_type_field) = let _2 = let _1 = _1_inlined1 in -# 4367 "parsing/parser.mly" +# 4472 "parsing/parser.mly" ( _1 ) -# 5533 "parsing/parser.ml" +# 5825 "parsing/parser.ml" in let _endpos__2_ = _endpos__1_inlined1_ in @@ -5537,10 +5829,10 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2328 "parsing/parser.mly" +# 2340 "parsing/parser.mly" ( let docs = symbol_docs _sloc in mkctf ~loc:_sloc (Pctf_extension _1) ~attrs:_2 ~docs ) -# 5544 "parsing/parser.ml" +# 5836 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -5564,23 +5856,23 @@ module Tables = struct let _endpos = _endpos__1_ in let _v : (Parsetree.class_type_field) = let _1 = let _1 = -# 2331 "parsing/parser.mly" +# 2343 "parsing/parser.mly" ( Pctf_attribute _1 ) -# 5570 "parsing/parser.ml" +# 5862 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1163 "parsing/parser.mly" +# 1172 "parsing/parser.mly" ( mkctf ~loc:_sloc _1 ) -# 5578 "parsing/parser.ml" +# 5870 "parsing/parser.ml" in -# 2332 "parsing/parser.mly" +# 2344 "parsing/parser.mly" ( _1 ) -# 5584 "parsing/parser.ml" +# 5876 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -5609,42 +5901,42 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1114 "parsing/parser.mly" +# 1123 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 5615 "parsing/parser.ml" +# 5907 "parsing/parser.ml" in let tys = let tys = -# 2290 "parsing/parser.mly" +# 2302 "parsing/parser.mly" ( [] ) -# 5622 "parsing/parser.ml" +# 5914 "parsing/parser.ml" in -# 2296 "parsing/parser.mly" +# 2308 "parsing/parser.mly" ( tys ) -# 5627 "parsing/parser.ml" +# 5919 "parsing/parser.ml" in -# 2273 "parsing/parser.mly" +# 2285 "parsing/parser.mly" ( Pcty_constr (cid, tys) ) -# 5633 "parsing/parser.ml" +# 5925 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1161 "parsing/parser.mly" +# 1170 "parsing/parser.mly" ( mkcty ~loc:_sloc _1 ) -# 5642 "parsing/parser.ml" +# 5934 "parsing/parser.ml" in -# 2276 "parsing/parser.mly" +# 2288 "parsing/parser.mly" ( _1 ) -# 5648 "parsing/parser.ml" +# 5940 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -5695,9 +5987,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1114 "parsing/parser.mly" +# 1123 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 5701 "parsing/parser.ml" +# 5993 "parsing/parser.ml" in let tys = @@ -5706,30 +5998,30 @@ module Tables = struct let xs = # 253 "" ( List.rev xs ) -# 5710 "parsing/parser.ml" +# 6002 "parsing/parser.ml" in -# 1248 "parsing/parser.mly" +# 1260 "parsing/parser.mly" ( xs ) -# 5715 "parsing/parser.ml" +# 6007 "parsing/parser.ml" in -# 2292 "parsing/parser.mly" +# 2304 "parsing/parser.mly" ( params ) -# 5721 "parsing/parser.ml" +# 6013 "parsing/parser.ml" in -# 2296 "parsing/parser.mly" +# 2308 "parsing/parser.mly" ( tys ) -# 5727 "parsing/parser.ml" +# 6019 "parsing/parser.ml" in -# 2273 "parsing/parser.mly" +# 2285 "parsing/parser.mly" ( Pcty_constr (cid, tys) ) -# 5733 "parsing/parser.ml" +# 6025 "parsing/parser.ml" in let _endpos__1_ = _endpos__1_inlined1_ in @@ -5737,15 +6029,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1161 "parsing/parser.mly" +# 1170 "parsing/parser.mly" ( mkcty ~loc:_sloc _1 ) -# 5743 "parsing/parser.ml" +# 6035 "parsing/parser.ml" in -# 2276 "parsing/parser.mly" +# 2288 "parsing/parser.mly" ( _1 ) -# 5749 "parsing/parser.ml" +# 6041 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -5769,23 +6061,23 @@ module Tables = struct let _endpos = _endpos__1_ in let _v : (Parsetree.class_type) = let _1 = let _1 = -# 2275 "parsing/parser.mly" +# 2287 "parsing/parser.mly" ( Pcty_extension _1 ) -# 5775 "parsing/parser.ml" +# 6067 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1161 "parsing/parser.mly" +# 1170 "parsing/parser.mly" ( mkcty ~loc:_sloc _1 ) -# 5783 "parsing/parser.ml" +# 6075 "parsing/parser.ml" in -# 2276 "parsing/parser.mly" +# 2288 "parsing/parser.mly" ( _1 ) -# 5789 "parsing/parser.ml" +# 6081 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -5842,44 +6134,44 @@ module Tables = struct let _1 = # 260 "" ( List.flatten xss ) -# 5846 "parsing/parser.ml" +# 6138 "parsing/parser.ml" in -# 2310 "parsing/parser.mly" +# 2322 "parsing/parser.mly" ( _1 ) -# 5851 "parsing/parser.ml" +# 6143 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_xss_, _startpos_xss_) in let _endpos = _endpos__1_ in let _startpos = _startpos__1_ in -# 1109 "parsing/parser.mly" +# 1118 "parsing/parser.mly" ( extra_csig _startpos _endpos _1 ) -# 5860 "parsing/parser.ml" +# 6152 "parsing/parser.ml" in -# 2300 "parsing/parser.mly" +# 2312 "parsing/parser.mly" ( Csig.mk _1 _2 ) -# 5866 "parsing/parser.ml" +# 6158 "parsing/parser.ml" in let _2 = let _1 = _1_inlined1 in -# 4371 "parsing/parser.mly" +# 4476 "parsing/parser.mly" ( _1 ) -# 5874 "parsing/parser.ml" +# 6166 "parsing/parser.ml" in let _endpos = _endpos__4_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2278 "parsing/parser.mly" +# 2290 "parsing/parser.mly" ( mkcty ~loc:_sloc ~attrs:_2 (Pcty_signature _3) ) -# 5883 "parsing/parser.ml" +# 6175 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -5936,43 +6228,43 @@ module Tables = struct let _1 = # 260 "" ( List.flatten xss ) -# 5940 "parsing/parser.ml" +# 6232 "parsing/parser.ml" in -# 2310 "parsing/parser.mly" +# 2322 "parsing/parser.mly" ( _1 ) -# 5945 "parsing/parser.ml" +# 6237 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_xss_, _startpos_xss_) in let _endpos = _endpos__1_ in let _startpos = _startpos__1_ in -# 1109 "parsing/parser.mly" +# 1118 "parsing/parser.mly" ( extra_csig _startpos _endpos _1 ) -# 5954 "parsing/parser.ml" +# 6246 "parsing/parser.ml" in -# 2300 "parsing/parser.mly" +# 2312 "parsing/parser.mly" ( Csig.mk _1 _2 ) -# 5960 "parsing/parser.ml" +# 6252 "parsing/parser.ml" in let _2 = let _1 = _1_inlined1 in -# 4371 "parsing/parser.mly" +# 4476 "parsing/parser.mly" ( _1 ) -# 5968 "parsing/parser.ml" +# 6260 "parsing/parser.ml" in let _loc__4_ = (_startpos__4_, _endpos__4_) in let _loc__1_ = (_startpos__1_, _endpos__1_) in -# 2280 "parsing/parser.mly" +# 2292 "parsing/parser.mly" ( unclosed "object" _loc__1_ "end" _loc__4_ ) -# 5976 "parsing/parser.ml" +# 6268 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -6002,9 +6294,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (Parsetree.class_type) = -# 2282 "parsing/parser.mly" +# 2294 "parsing/parser.mly" ( Cty.attr _1 _2 ) -# 6008 "parsing/parser.ml" +# 6300 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -6067,34 +6359,34 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1114 "parsing/parser.mly" +# 1123 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 6073 "parsing/parser.ml" +# 6365 "parsing/parser.ml" in let _endpos__5_ = _endpos__1_inlined2_ in let _4 = let _1 = _1_inlined1 in -# 4371 "parsing/parser.mly" +# 4476 "parsing/parser.mly" ( _1 ) -# 6082 "parsing/parser.ml" +# 6374 "parsing/parser.ml" in let _3 = -# 4272 "parsing/parser.mly" +# 4377 "parsing/parser.mly" ( Fresh ) -# 6088 "parsing/parser.ml" +# 6380 "parsing/parser.ml" in let _endpos = _endpos__7_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2284 "parsing/parser.mly" +# 2296 "parsing/parser.mly" ( let loc = (_startpos__2_, _endpos__5_) in let od = Opn.mk ~override:_3 ~loc:(make_loc loc) _5 in mkcty ~loc:_sloc ~attrs:_4 (Pcty_open(od, _7)) ) -# 6098 "parsing/parser.ml" +# 6390 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -6164,34 +6456,34 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1114 "parsing/parser.mly" +# 1123 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 6170 "parsing/parser.ml" +# 6462 "parsing/parser.ml" in let _endpos__5_ = _endpos__1_inlined3_ in let _4 = let _1 = _1_inlined2 in -# 4371 "parsing/parser.mly" +# 4476 "parsing/parser.mly" ( _1 ) -# 6179 "parsing/parser.ml" +# 6471 "parsing/parser.ml" in let _3 = -# 4273 "parsing/parser.mly" +# 4378 "parsing/parser.mly" ( Override ) -# 6185 "parsing/parser.ml" +# 6477 "parsing/parser.ml" in let _endpos = _endpos__7_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2284 "parsing/parser.mly" +# 2296 "parsing/parser.mly" ( let loc = (_startpos__2_, _endpos__5_) in let od = Opn.mk ~override:_3 ~loc:(make_loc loc) _5 in mkcty ~loc:_sloc ~attrs:_4 (Pcty_open(od, _7)) ) -# 6195 "parsing/parser.ml" +# 6487 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -6228,9 +6520,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : (Parsetree.class_expr) = -# 2144 "parsing/parser.mly" +# 2156 "parsing/parser.mly" ( _2 ) -# 6234 "parsing/parser.ml" +# 6526 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -6269,9 +6561,9 @@ module Tables = struct let _v : (Parsetree.class_expr) = let _loc__3_ = (_startpos__3_, _endpos__3_) in let _loc__1_ = (_startpos__1_, _endpos__1_) in -# 2146 "parsing/parser.mly" +# 2158 "parsing/parser.mly" ( unclosed "(" _loc__1_ ")" _loc__3_ ) -# 6275 "parsing/parser.ml" +# 6567 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -6300,42 +6592,42 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1114 "parsing/parser.mly" +# 1123 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 6306 "parsing/parser.ml" +# 6598 "parsing/parser.ml" in let tys = let tys = -# 2290 "parsing/parser.mly" +# 2302 "parsing/parser.mly" ( [] ) -# 6313 "parsing/parser.ml" +# 6605 "parsing/parser.ml" in -# 2296 "parsing/parser.mly" +# 2308 "parsing/parser.mly" ( tys ) -# 6318 "parsing/parser.ml" +# 6610 "parsing/parser.ml" in -# 2149 "parsing/parser.mly" +# 2161 "parsing/parser.mly" ( Pcl_constr(cid, tys) ) -# 6324 "parsing/parser.ml" +# 6616 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1167 "parsing/parser.mly" +# 1176 "parsing/parser.mly" ( mkclass ~loc:_sloc _1 ) -# 6333 "parsing/parser.ml" +# 6625 "parsing/parser.ml" in -# 2156 "parsing/parser.mly" +# 2168 "parsing/parser.mly" ( _1 ) -# 6339 "parsing/parser.ml" +# 6631 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -6386,9 +6678,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1114 "parsing/parser.mly" +# 1123 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 6392 "parsing/parser.ml" +# 6684 "parsing/parser.ml" in let tys = @@ -6397,30 +6689,30 @@ module Tables = struct let xs = # 253 "" ( List.rev xs ) -# 6401 "parsing/parser.ml" +# 6693 "parsing/parser.ml" in -# 1248 "parsing/parser.mly" +# 1260 "parsing/parser.mly" ( xs ) -# 6406 "parsing/parser.ml" +# 6698 "parsing/parser.ml" in -# 2292 "parsing/parser.mly" +# 2304 "parsing/parser.mly" ( params ) -# 6412 "parsing/parser.ml" +# 6704 "parsing/parser.ml" in -# 2296 "parsing/parser.mly" +# 2308 "parsing/parser.mly" ( tys ) -# 6418 "parsing/parser.ml" +# 6710 "parsing/parser.ml" in -# 2149 "parsing/parser.mly" +# 2161 "parsing/parser.mly" ( Pcl_constr(cid, tys) ) -# 6424 "parsing/parser.ml" +# 6716 "parsing/parser.ml" in let _endpos__1_ = _endpos__1_inlined1_ in @@ -6428,15 +6720,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1167 "parsing/parser.mly" +# 1176 "parsing/parser.mly" ( mkclass ~loc:_sloc _1 ) -# 6434 "parsing/parser.ml" +# 6726 "parsing/parser.ml" in -# 2156 "parsing/parser.mly" +# 2168 "parsing/parser.mly" ( _1 ) -# 6440 "parsing/parser.ml" +# 6732 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -6495,43 +6787,43 @@ module Tables = struct let _1 = # 260 "" ( List.flatten xss ) -# 6499 "parsing/parser.ml" +# 6791 "parsing/parser.ml" in -# 2183 "parsing/parser.mly" +# 2195 "parsing/parser.mly" ( _1 ) -# 6504 "parsing/parser.ml" +# 6796 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_xss_, _startpos_xss_) in let _endpos = _endpos__1_ in let _startpos = _startpos__1_ in -# 1108 "parsing/parser.mly" +# 1117 "parsing/parser.mly" ( extra_cstr _startpos _endpos _1 ) -# 6513 "parsing/parser.ml" +# 6805 "parsing/parser.ml" in -# 2170 "parsing/parser.mly" +# 2182 "parsing/parser.mly" ( Cstr.mk _1 _2 ) -# 6519 "parsing/parser.ml" +# 6811 "parsing/parser.ml" in let _2 = let _1 = _1_inlined1 in -# 4371 "parsing/parser.mly" +# 4476 "parsing/parser.mly" ( _1 ) -# 6527 "parsing/parser.ml" +# 6819 "parsing/parser.ml" in let _loc__4_ = (_startpos__4_, _endpos__4_) in let _loc__1_ = (_startpos__1_, _endpos__1_) in -# 2151 "parsing/parser.mly" +# 2163 "parsing/parser.mly" ( unclosed "object" _loc__1_ "end" _loc__4_ ) -# 6535 "parsing/parser.ml" +# 6827 "parsing/parser.ml" in let _endpos__1_ = _endpos__4_ in @@ -6539,15 +6831,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1167 "parsing/parser.mly" +# 1176 "parsing/parser.mly" ( mkclass ~loc:_sloc _1 ) -# 6545 "parsing/parser.ml" +# 6837 "parsing/parser.ml" in -# 2156 "parsing/parser.mly" +# 2168 "parsing/parser.mly" ( _1 ) -# 6551 "parsing/parser.ml" +# 6843 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -6599,24 +6891,24 @@ module Tables = struct let _endpos = _endpos__5_ in let _v : (Parsetree.class_expr) = let _1 = let _1 = -# 2153 "parsing/parser.mly" +# 2165 "parsing/parser.mly" ( Pcl_constraint(_2, _4) ) -# 6605 "parsing/parser.ml" +# 6897 "parsing/parser.ml" in let _endpos__1_ = _endpos__5_ in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1167 "parsing/parser.mly" +# 1176 "parsing/parser.mly" ( mkclass ~loc:_sloc _1 ) -# 6614 "parsing/parser.ml" +# 6906 "parsing/parser.ml" in -# 2156 "parsing/parser.mly" +# 2168 "parsing/parser.mly" ( _1 ) -# 6620 "parsing/parser.ml" +# 6912 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -6671,9 +6963,9 @@ module Tables = struct let _loc__5_ = (_startpos__5_, _endpos__5_) in let _loc__1_ = (_startpos__1_, _endpos__1_) in -# 2155 "parsing/parser.mly" +# 2167 "parsing/parser.mly" ( unclosed "(" _loc__1_ ")" _loc__5_ ) -# 6677 "parsing/parser.ml" +# 6969 "parsing/parser.ml" in let _endpos__1_ = _endpos__5_ in @@ -6681,15 +6973,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1167 "parsing/parser.mly" +# 1176 "parsing/parser.mly" ( mkclass ~loc:_sloc _1 ) -# 6687 "parsing/parser.ml" +# 6979 "parsing/parser.ml" in -# 2156 "parsing/parser.mly" +# 2168 "parsing/parser.mly" ( _1 ) -# 6693 "parsing/parser.ml" +# 6985 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -6746,44 +7038,44 @@ module Tables = struct let _1 = # 260 "" ( List.flatten xss ) -# 6750 "parsing/parser.ml" +# 7042 "parsing/parser.ml" in -# 2183 "parsing/parser.mly" +# 2195 "parsing/parser.mly" ( _1 ) -# 6755 "parsing/parser.ml" +# 7047 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_xss_, _startpos_xss_) in let _endpos = _endpos__1_ in let _startpos = _startpos__1_ in -# 1108 "parsing/parser.mly" +# 1117 "parsing/parser.mly" ( extra_cstr _startpos _endpos _1 ) -# 6764 "parsing/parser.ml" +# 7056 "parsing/parser.ml" in -# 2170 "parsing/parser.mly" +# 2182 "parsing/parser.mly" ( Cstr.mk _1 _2 ) -# 6770 "parsing/parser.ml" +# 7062 "parsing/parser.ml" in let _2 = let _1 = _1_inlined1 in -# 4371 "parsing/parser.mly" +# 4476 "parsing/parser.mly" ( _1 ) -# 6778 "parsing/parser.ml" +# 7070 "parsing/parser.ml" in let _endpos = _endpos__4_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2158 "parsing/parser.mly" +# 2170 "parsing/parser.mly" ( mkclass ~loc:_sloc ~attrs:_2 (Pcl_structure _3) ) -# 6787 "parsing/parser.ml" +# 7079 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -6806,9 +7098,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Parsetree.class_type) = -# 2261 "parsing/parser.mly" +# 2273 "parsing/parser.mly" ( _1 ) -# 6812 "parsing/parser.ml" +# 7104 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -6854,14 +7146,14 @@ module Tables = struct let _v : (Parsetree.class_type) = let _1 = let _1 = let label = -# 3806 "parsing/parser.mly" +# 3905 "parsing/parser.mly" ( Optional label ) -# 6860 "parsing/parser.ml" +# 7152 "parsing/parser.ml" in -# 2267 "parsing/parser.mly" +# 2279 "parsing/parser.mly" ( Pcty_arrow(label, domain, codomain) ) -# 6865 "parsing/parser.ml" +# 7157 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_codomain_, _startpos_label_) in @@ -6869,15 +7161,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1161 "parsing/parser.mly" +# 1170 "parsing/parser.mly" ( mkcty ~loc:_sloc _1 ) -# 6875 "parsing/parser.ml" +# 7167 "parsing/parser.ml" in -# 2268 "parsing/parser.mly" +# 2280 "parsing/parser.mly" ( _1 ) -# 6881 "parsing/parser.ml" +# 7173 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -6924,9 +7216,9 @@ module Tables = struct let domain : (Parsetree.core_type) = Obj.magic domain in let _2 : unit = Obj.magic _2 in let label : ( -# 928 "parsing/parser.mly" +# 937 "parsing/parser.mly" (string) -# 6930 "parsing/parser.ml" +# 7222 "parsing/parser.ml" ) = Obj.magic label in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos_label_ in @@ -6934,14 +7226,14 @@ module Tables = struct let _v : (Parsetree.class_type) = let _1 = let _1 = let label = -# 3808 "parsing/parser.mly" +# 3907 "parsing/parser.mly" ( Labelled label ) -# 6940 "parsing/parser.ml" +# 7232 "parsing/parser.ml" in -# 2267 "parsing/parser.mly" +# 2279 "parsing/parser.mly" ( Pcty_arrow(label, domain, codomain) ) -# 6945 "parsing/parser.ml" +# 7237 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_codomain_, _startpos_label_) in @@ -6949,15 +7241,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1161 "parsing/parser.mly" +# 1170 "parsing/parser.mly" ( mkcty ~loc:_sloc _1 ) -# 6955 "parsing/parser.ml" +# 7247 "parsing/parser.ml" in -# 2268 "parsing/parser.mly" +# 2280 "parsing/parser.mly" ( _1 ) -# 6961 "parsing/parser.ml" +# 7253 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -6996,14 +7288,14 @@ module Tables = struct let _v : (Parsetree.class_type) = let _1 = let _1 = let label = -# 3810 "parsing/parser.mly" +# 3909 "parsing/parser.mly" ( Nolabel ) -# 7002 "parsing/parser.ml" +# 7294 "parsing/parser.ml" in -# 2267 "parsing/parser.mly" +# 2279 "parsing/parser.mly" ( Pcty_arrow(label, domain, codomain) ) -# 7007 "parsing/parser.ml" +# 7299 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_codomain_, _startpos_domain_) in @@ -7011,15 +7303,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1161 "parsing/parser.mly" +# 1170 "parsing/parser.mly" ( mkcty ~loc:_sloc _1 ) -# 7017 "parsing/parser.ml" +# 7309 "parsing/parser.ml" in -# 2268 "parsing/parser.mly" +# 2280 "parsing/parser.mly" ( _1 ) -# 7023 "parsing/parser.ml" +# 7315 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -7102,9 +7394,9 @@ module Tables = struct let csig : (Parsetree.class_type) = Obj.magic csig in let _8 : unit = Obj.magic _8 in let _1_inlined2 : ( -# 928 "parsing/parser.mly" +# 937 "parsing/parser.mly" (string) -# 7108 "parsing/parser.ml" +# 7400 "parsing/parser.ml" ) = Obj.magic _1_inlined2 in let params : ((Parsetree.core_type * (Asttypes.variance * Asttypes.injectivity)) list) = Obj.magic params in let virt : (Asttypes.virtual_flag) = Obj.magic virt in @@ -7120,9 +7412,9 @@ module Tables = struct let attrs2 = let _1 = _1_inlined3 in -# 4367 "parsing/parser.mly" +# 4472 "parsing/parser.mly" ( _1 ) -# 7126 "parsing/parser.ml" +# 7418 "parsing/parser.ml" in let _endpos_attrs2_ = _endpos__1_inlined3_ in @@ -7132,24 +7424,24 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1114 "parsing/parser.mly" +# 1123 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 7138 "parsing/parser.ml" +# 7430 "parsing/parser.ml" in let attrs1 = let _1 = _1_inlined1 in -# 4371 "parsing/parser.mly" +# 4476 "parsing/parser.mly" ( _1 ) -# 7146 "parsing/parser.ml" +# 7438 "parsing/parser.ml" in let _endpos = _endpos_attrs2_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2406 "parsing/parser.mly" +# 2418 "parsing/parser.mly" ( let attrs = attrs1 @ attrs2 in let loc = make_loc _sloc in @@ -7157,19 +7449,19 @@ module Tables = struct ext, Ci.mk id csig ~virt ~params ~attrs ~loc ~docs ) -# 7161 "parsing/parser.ml" +# 7453 "parsing/parser.ml" in -# 1345 "parsing/parser.mly" +# 1357 "parsing/parser.mly" ( let (x, b) = a in x, b :: bs ) -# 7167 "parsing/parser.ml" +# 7459 "parsing/parser.ml" in -# 2394 "parsing/parser.mly" +# 2406 "parsing/parser.mly" ( _1 ) -# 7173 "parsing/parser.ml" +# 7465 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -7192,9 +7484,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Longident.t) = -# 4142 "parsing/parser.mly" +# 4247 "parsing/parser.mly" ( _1 ) -# 7198 "parsing/parser.ml" +# 7490 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -7227,18 +7519,18 @@ module Tables = struct let xs = # 253 "" ( List.rev xs ) -# 7231 "parsing/parser.ml" +# 7523 "parsing/parser.ml" in -# 1248 "parsing/parser.mly" +# 1260 "parsing/parser.mly" ( xs ) -# 7236 "parsing/parser.ml" +# 7528 "parsing/parser.ml" in -# 2717 "parsing/parser.mly" +# 2738 "parsing/parser.mly" ( Jane_syntax.Comprehensions.For _2 ) -# 7242 "parsing/parser.ml" +# 7534 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -7268,9 +7560,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (Jane_syntax.Comprehensions.clause) = -# 2719 "parsing/parser.mly" +# 2740 "parsing/parser.mly" ( Jane_syntax.Comprehensions.When _2 ) -# 7274 "parsing/parser.ml" +# 7566 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -7307,14 +7599,14 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : (Jane_syntax.Comprehensions.clause_binding) = let _1 = -# 4371 "parsing/parser.mly" +# 4476 "parsing/parser.mly" ( _1 ) -# 7313 "parsing/parser.ml" +# 7605 "parsing/parser.ml" in -# 2700 "parsing/parser.mly" +# 2721 "parsing/parser.mly" ( Jane_syntax.Comprehensions.{ pattern = _2 ; iterator = _3 ; attributes = _1 } ) -# 7318 "parsing/parser.ml" +# 7610 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -7365,9 +7657,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__5_ in let _v : (Jane_syntax.Comprehensions.clause_binding) = let _1 = -# 4371 "parsing/parser.mly" +# 4476 "parsing/parser.mly" ( _1 ) -# 7371 "parsing/parser.ml" +# 7663 "parsing/parser.ml" in let _endpos = _endpos__5_ in let _symbolstartpos = if _startpos__1_ != _endpos__1_ then @@ -7377,14 +7669,14 @@ module Tables = struct let _loc__2_ = (_startpos__2_, _endpos__2_) in let _sloc = (_symbolstartpos, _endpos) in -# 2707 "parsing/parser.mly" +# 2728 "parsing/parser.mly" ( Jane_syntax.Comprehensions. { pattern = _3 ; iterator = In (mkexp_stack ~loc:_sloc ~kwd_loc:(_loc__2_) _5) ; attributes = _1 } ) -# 7388 "parsing/parser.ml" +# 7680 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -7428,9 +7720,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__4_ in let _v : (Jane_syntax.Comprehensions.iterator) = -# 2693 "parsing/parser.mly" +# 2714 "parsing/parser.mly" ( Jane_syntax.Comprehensions.Range { start = _2 ; stop = _4 ; direction = _3 } ) -# 7434 "parsing/parser.ml" +# 7726 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -7460,9 +7752,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (Jane_syntax.Comprehensions.iterator) = -# 2695 "parsing/parser.mly" +# 2716 "parsing/parser.mly" ( Jane_syntax.Comprehensions.In _2 ) -# 7466 "parsing/parser.ml" +# 7758 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -7485,9 +7777,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Constant.t) = -# 4019 "parsing/parser.mly" +# 4123 "parsing/parser.mly" ( Constant.value _1 ) -# 7491 "parsing/parser.ml" +# 7783 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -7510,9 +7802,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Constant.t) = -# 4020 "parsing/parser.mly" +# 4124 "parsing/parser.mly" ( _1 ) -# 7516 "parsing/parser.ml" +# 7808 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -7542,9 +7834,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (Asttypes.label) = -# 4099 "parsing/parser.mly" +# 4203 "parsing/parser.mly" ( "[]" ) -# 7548 "parsing/parser.ml" +# 7840 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -7574,9 +7866,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (Asttypes.label) = -# 4100 "parsing/parser.mly" +# 4204 "parsing/parser.mly" ( "()" ) -# 7580 "parsing/parser.ml" +# 7872 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -7599,9 +7891,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Asttypes.label) = -# 4101 "parsing/parser.mly" +# 4205 "parsing/parser.mly" ( "false" ) -# 7605 "parsing/parser.ml" +# 7897 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -7624,9 +7916,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Asttypes.label) = -# 4102 "parsing/parser.mly" +# 4206 "parsing/parser.mly" ( "true" ) -# 7630 "parsing/parser.ml" +# 7922 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -7645,17 +7937,17 @@ module Tables = struct MenhirLib.EngineTypes.next = _menhir_stack; } = _menhir_stack in let _1 : ( -# 981 "parsing/parser.mly" +# 990 "parsing/parser.mly" (string) -# 7651 "parsing/parser.ml" +# 7943 "parsing/parser.ml" ) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Asttypes.label) = -# 4105 "parsing/parser.mly" +# 4209 "parsing/parser.mly" ( _1 ) -# 7659 "parsing/parser.ml" +# 7951 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -7692,14 +7984,14 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : (Asttypes.label) = let _1 = -# 4096 "parsing/parser.mly" +# 4200 "parsing/parser.mly" ( "::" ) -# 7698 "parsing/parser.ml" +# 7990 "parsing/parser.ml" in -# 4106 "parsing/parser.mly" +# 4210 "parsing/parser.mly" ( _1 ) -# 7703 "parsing/parser.ml" +# 7995 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -7722,9 +8014,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Asttypes.label) = -# 4107 "parsing/parser.mly" +# 4211 "parsing/parser.mly" ( _1 ) -# 7728 "parsing/parser.ml" +# 8020 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -7747,9 +8039,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Longident.t) = -# 4110 "parsing/parser.mly" +# 4214 "parsing/parser.mly" ( _1 ) -# 7753 "parsing/parser.ml" +# 8045 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -7800,14 +8092,14 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : (Longident.t) = let _3 = -# 4096 "parsing/parser.mly" +# 4200 "parsing/parser.mly" ( "::" ) -# 7806 "parsing/parser.ml" +# 8098 "parsing/parser.ml" in -# 4111 "parsing/parser.mly" +# 4215 "parsing/parser.mly" ( Ldot(_1,_3) ) -# 7811 "parsing/parser.ml" +# 8103 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -7844,14 +8136,14 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : (Longident.t) = let _1 = -# 4096 "parsing/parser.mly" +# 4200 "parsing/parser.mly" ( "::" ) -# 7850 "parsing/parser.ml" +# 8142 "parsing/parser.ml" in -# 4112 "parsing/parser.mly" +# 4216 "parsing/parser.mly" ( Lident _1 ) -# 7855 "parsing/parser.ml" +# 8147 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -7874,9 +8166,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Longident.t) = -# 4113 "parsing/parser.mly" +# 4217 "parsing/parser.mly" ( Lident _1 ) -# 7880 "parsing/parser.ml" +# 8172 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -7913,9 +8205,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : (Parsetree.core_type * Parsetree.core_type) = -# 2350 "parsing/parser.mly" +# 2362 "parsing/parser.mly" ( _1, _3 ) -# 7919 "parsing/parser.ml" +# 8211 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -7942,42 +8234,42 @@ module Tables = struct let xs = let x = let gbl = -# 4229 "parsing/parser.mly" +# 4334 "parsing/parser.mly" ( Nothing ) -# 7948 "parsing/parser.ml" +# 8240 "parsing/parser.ml" in let (_endpos_gbl_, _startpos_gbl_) = (_endpos__0_, _endpos__0_) in let _loc_gbl_ = (_startpos_gbl_, _endpos_gbl_) in -# 3574 "parsing/parser.mly" +# 3659 "parsing/parser.mly" ( mkcty_global_maybe gbl cty (make_loc _loc_gbl_) ) -# 7957 "parsing/parser.ml" +# 8249 "parsing/parser.ml" in -# 1232 "parsing/parser.mly" +# 1244 "parsing/parser.mly" ( [ x ] ) -# 7963 "parsing/parser.ml" +# 8255 "parsing/parser.ml" in # 253 "" ( List.rev xs ) -# 7969 "parsing/parser.ml" +# 8261 "parsing/parser.ml" in -# 1252 "parsing/parser.mly" +# 1264 "parsing/parser.mly" ( xs ) -# 7975 "parsing/parser.ml" +# 8267 "parsing/parser.ml" in -# 3582 "parsing/parser.mly" +# 3667 "parsing/parser.mly" ( Pcstr_tuple tys ) -# 7981 "parsing/parser.ml" +# 8273 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -8011,42 +8303,42 @@ module Tables = struct let xs = let x = let gbl = -# 4230 "parsing/parser.mly" +# 4335 "parsing/parser.mly" ( Global ) -# 8017 "parsing/parser.ml" +# 8309 "parsing/parser.ml" in let (_endpos_gbl_, _startpos_gbl_) = (_endpos__1_, _startpos__1_) in let _loc_gbl_ = (_startpos_gbl_, _endpos_gbl_) in -# 3574 "parsing/parser.mly" +# 3659 "parsing/parser.mly" ( mkcty_global_maybe gbl cty (make_loc _loc_gbl_) ) -# 8026 "parsing/parser.ml" +# 8318 "parsing/parser.ml" in -# 1232 "parsing/parser.mly" +# 1244 "parsing/parser.mly" ( [ x ] ) -# 8032 "parsing/parser.ml" +# 8324 "parsing/parser.ml" in # 253 "" ( List.rev xs ) -# 8038 "parsing/parser.ml" +# 8330 "parsing/parser.ml" in -# 1252 "parsing/parser.mly" +# 1264 "parsing/parser.mly" ( xs ) -# 8044 "parsing/parser.ml" +# 8336 "parsing/parser.ml" in -# 3582 "parsing/parser.mly" +# 3667 "parsing/parser.mly" ( Pcstr_tuple tys ) -# 8050 "parsing/parser.ml" +# 8342 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -8088,42 +8380,42 @@ module Tables = struct let x = let _endpos__0_ = _endpos__2_ in let gbl = -# 4229 "parsing/parser.mly" +# 4334 "parsing/parser.mly" ( Nothing ) -# 8094 "parsing/parser.ml" +# 8386 "parsing/parser.ml" in let (_endpos_gbl_, _startpos_gbl_) = (_endpos__0_, _endpos__0_) in let _loc_gbl_ = (_startpos_gbl_, _endpos_gbl_) in -# 3574 "parsing/parser.mly" +# 3659 "parsing/parser.mly" ( mkcty_global_maybe gbl cty (make_loc _loc_gbl_) ) -# 8103 "parsing/parser.ml" +# 8395 "parsing/parser.ml" in -# 1236 "parsing/parser.mly" +# 1248 "parsing/parser.mly" ( x :: xs ) -# 8109 "parsing/parser.ml" +# 8401 "parsing/parser.ml" in # 253 "" ( List.rev xs ) -# 8115 "parsing/parser.ml" +# 8407 "parsing/parser.ml" in -# 1252 "parsing/parser.mly" +# 1264 "parsing/parser.mly" ( xs ) -# 8121 "parsing/parser.ml" +# 8413 "parsing/parser.ml" in -# 3582 "parsing/parser.mly" +# 3667 "parsing/parser.mly" ( Pcstr_tuple tys ) -# 8127 "parsing/parser.ml" +# 8419 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -8171,42 +8463,42 @@ module Tables = struct let xs = let x = let gbl = -# 4230 "parsing/parser.mly" +# 4335 "parsing/parser.mly" ( Global ) -# 8177 "parsing/parser.ml" +# 8469 "parsing/parser.ml" in let (_endpos_gbl_, _startpos_gbl_) = (_endpos__1_, _startpos__1_) in let _loc_gbl_ = (_startpos_gbl_, _endpos_gbl_) in -# 3574 "parsing/parser.mly" +# 3659 "parsing/parser.mly" ( mkcty_global_maybe gbl cty (make_loc _loc_gbl_) ) -# 8186 "parsing/parser.ml" +# 8478 "parsing/parser.ml" in -# 1236 "parsing/parser.mly" +# 1248 "parsing/parser.mly" ( x :: xs ) -# 8192 "parsing/parser.ml" +# 8484 "parsing/parser.ml" in # 253 "" ( List.rev xs ) -# 8198 "parsing/parser.ml" +# 8490 "parsing/parser.ml" in -# 1252 "parsing/parser.mly" +# 1264 "parsing/parser.mly" ( xs ) -# 8204 "parsing/parser.ml" +# 8496 "parsing/parser.ml" in -# 3582 "parsing/parser.mly" +# 3667 "parsing/parser.mly" ( Pcstr_tuple tys ) -# 8210 "parsing/parser.ml" +# 8502 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -8243,9 +8535,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : (Parsetree.constructor_arguments) = -# 3584 "parsing/parser.mly" +# 3669 "parsing/parser.mly" ( Pcstr_record _2 ) -# 8249 "parsing/parser.ml" +# 8541 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -8268,9 +8560,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Parsetree.constructor_declaration list) = -# 3492 "parsing/parser.mly" +# 3568 "parsing/parser.mly" ( [] ) -# 8274 "parsing/parser.ml" +# 8566 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -8293,14 +8585,14 @@ module Tables = struct let _startpos = _startpos_xs_ in let _endpos = _endpos_xs_ in let _v : (Parsetree.constructor_declaration list) = let cs = -# 1337 "parsing/parser.mly" +# 1349 "parsing/parser.mly" ( List.rev xs ) -# 8299 "parsing/parser.ml" +# 8591 "parsing/parser.ml" in -# 3494 "parsing/parser.mly" +# 3570 "parsing/parser.mly" ( cs ) -# 8304 "parsing/parser.ml" +# 8596 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -8323,14 +8615,14 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Parsetree.core_type) = let _1 = -# 3748 "parsing/parser.mly" +# 3839 "parsing/parser.mly" ( _1 ) -# 8329 "parsing/parser.ml" +# 8621 "parsing/parser.ml" in -# 3738 "parsing/parser.mly" +# 3829 "parsing/parser.mly" ( _1 ) -# 8334 "parsing/parser.ml" +# 8626 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -8360,9 +8652,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (Parsetree.core_type) = -# 3740 "parsing/parser.mly" +# 3831 "parsing/parser.mly" ( Typ.attr _1 _2 ) -# 8366 "parsing/parser.ml" +# 8658 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -8385,9 +8677,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Asttypes.direction_flag) = -# 4208 "parsing/parser.mly" +# 4313 "parsing/parser.mly" ( Upto ) -# 8391 "parsing/parser.ml" +# 8683 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -8410,9 +8702,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Asttypes.direction_flag) = -# 4209 "parsing/parser.mly" +# 4314 "parsing/parser.mly" ( Downto ) -# 8416 "parsing/parser.ml" +# 8708 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -8435,9 +8727,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Parsetree.expression) = -# 2544 "parsing/parser.mly" +# 2561 "parsing/parser.mly" ( _1 ) -# 8441 "parsing/parser.ml" +# 8733 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -8515,9 +8807,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1114 "parsing/parser.mly" +# 1123 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 8521 "parsing/parser.ml" +# 8813 "parsing/parser.ml" in let _3 = @@ -8525,21 +8817,21 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4371 "parsing/parser.mly" +# 4476 "parsing/parser.mly" ( _1 ) -# 8531 "parsing/parser.ml" +# 8823 "parsing/parser.ml" in -# 4384 "parsing/parser.mly" +# 4489 "parsing/parser.mly" ( _1, _2 ) -# 8537 "parsing/parser.ml" +# 8829 "parsing/parser.ml" in -# 2581 "parsing/parser.mly" +# 2604 "parsing/parser.mly" ( Pexp_letmodule(_4, _5, _7), _3 ) -# 8543 "parsing/parser.ml" +# 8835 "parsing/parser.ml" in let _endpos__1_ = _endpos__7_ in @@ -8547,10 +8839,10 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2546 "parsing/parser.mly" +# 2563 "parsing/parser.mly" ( let desc, attrs = _1 in mkexp_attrs ~loc:_sloc desc attrs ) -# 8554 "parsing/parser.ml" +# 8846 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -8619,8 +8911,8 @@ module Tables = struct let _6 : (Parsetree.expression) = Obj.magic _6 in let _5 : unit = Obj.magic _5 in let _1_inlined4 : (Parsetree.attributes) = Obj.magic _1_inlined4 in - let _2_inlined1 : (string Asttypes.loc list * Parsetree.constructor_arguments * - Parsetree.core_type option) = Obj.magic _2_inlined1 in + let _2_inlined1 : ((Asttypes.label Asttypes.loc * Asttypes.layout_annotation option) list * + Parsetree.constructor_arguments * Parsetree.core_type option) = Obj.magic _2_inlined1 in let _1_inlined3 : (Asttypes.label) = Obj.magic _1_inlined3 in let _1_inlined2 : (Parsetree.attributes) = Obj.magic _1_inlined2 in let _1_inlined1 : (string Asttypes.loc option) = Obj.magic _1_inlined1 in @@ -8635,9 +8927,9 @@ module Tables = struct let _3 = let _1 = _1_inlined1 in -# 4371 "parsing/parser.mly" +# 4476 "parsing/parser.mly" ( _1 ) -# 8641 "parsing/parser.ml" +# 8933 "parsing/parser.ml" in let _endpos__3_ = _endpos__1_inlined1_ in @@ -8646,19 +8938,23 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1114 "parsing/parser.mly" +# 1123 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 8652 "parsing/parser.ml" +# 8944 "parsing/parser.ml" in let _endpos = _endpos__3_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 3556 "parsing/parser.mly" - ( let vars, args, res = _2 in - Te.decl _1 ~vars ~args ?res ~attrs:_3 ~loc:(make_loc _sloc) ) -# 8662 "parsing/parser.ml" +# 3636 "parsing/parser.mly" + ( let vars_layouts, args, res = _2 in + Jane_syntax.Layouts.extension_constructor_of + ~loc:(make_loc _sloc) + ~name:_1 + ~attrs:_3 + (Lext_decl (vars_layouts, args, res)) ) +# 8958 "parsing/parser.ml" in let _3 = @@ -8666,21 +8962,21 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4371 "parsing/parser.mly" +# 4476 "parsing/parser.mly" ( _1 ) -# 8672 "parsing/parser.ml" +# 8968 "parsing/parser.ml" in -# 4384 "parsing/parser.mly" +# 4489 "parsing/parser.mly" ( _1, _2 ) -# 8678 "parsing/parser.ml" +# 8974 "parsing/parser.ml" in -# 2583 "parsing/parser.mly" +# 2606 "parsing/parser.mly" ( Pexp_letexception(_4, _6), _3 ) -# 8684 "parsing/parser.ml" +# 8980 "parsing/parser.ml" in let _endpos__1_ = _endpos__6_ in @@ -8688,10 +8984,10 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2546 "parsing/parser.mly" +# 2563 "parsing/parser.mly" ( let desc, attrs = _1 in mkexp_attrs ~loc:_sloc desc attrs ) -# 8695 "parsing/parser.ml" +# 8991 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -8761,28 +9057,28 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4371 "parsing/parser.mly" +# 4476 "parsing/parser.mly" ( _1 ) -# 8767 "parsing/parser.ml" +# 9063 "parsing/parser.ml" in -# 4384 "parsing/parser.mly" +# 4489 "parsing/parser.mly" ( _1, _2 ) -# 8773 "parsing/parser.ml" +# 9069 "parsing/parser.ml" in let _3 = -# 4272 "parsing/parser.mly" +# 4377 "parsing/parser.mly" ( Fresh ) -# 8779 "parsing/parser.ml" +# 9075 "parsing/parser.ml" in -# 2585 "parsing/parser.mly" +# 2608 "parsing/parser.mly" ( let open_loc = make_loc (_startpos__2_, _endpos__5_) in let od = Opn.mk _5 ~override:_3 ~loc:open_loc in Pexp_open(od, _7), _4 ) -# 8786 "parsing/parser.ml" +# 9082 "parsing/parser.ml" in let _endpos__1_ = _endpos__7_ in @@ -8790,10 +9086,10 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2546 "parsing/parser.mly" +# 2563 "parsing/parser.mly" ( let desc, attrs = _1 in mkexp_attrs ~loc:_sloc desc attrs ) -# 8797 "parsing/parser.ml" +# 9093 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -8870,28 +9166,28 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4371 "parsing/parser.mly" +# 4476 "parsing/parser.mly" ( _1 ) -# 8876 "parsing/parser.ml" +# 9172 "parsing/parser.ml" in -# 4384 "parsing/parser.mly" +# 4489 "parsing/parser.mly" ( _1, _2 ) -# 8882 "parsing/parser.ml" +# 9178 "parsing/parser.ml" in let _3 = -# 4273 "parsing/parser.mly" +# 4378 "parsing/parser.mly" ( Override ) -# 8888 "parsing/parser.ml" +# 9184 "parsing/parser.ml" in -# 2585 "parsing/parser.mly" +# 2608 "parsing/parser.mly" ( let open_loc = make_loc (_startpos__2_, _endpos__5_) in let od = Opn.mk _5 ~override:_3 ~loc:open_loc in Pexp_open(od, _7), _4 ) -# 8895 "parsing/parser.ml" +# 9191 "parsing/parser.ml" in let _endpos__1_ = _endpos__7_ in @@ -8899,10 +9195,10 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2546 "parsing/parser.mly" +# 2563 "parsing/parser.mly" ( let desc, attrs = _1 in mkexp_attrs ~loc:_sloc desc attrs ) -# 8906 "parsing/parser.ml" +# 9202 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -8951,18 +9247,18 @@ module Tables = struct let xs = # 253 "" ( List.rev xs ) -# 8955 "parsing/parser.ml" +# 9251 "parsing/parser.ml" in -# 1309 "parsing/parser.mly" +# 1321 "parsing/parser.mly" ( xs ) -# 8960 "parsing/parser.ml" +# 9256 "parsing/parser.ml" in -# 3019 "parsing/parser.mly" +# 3050 "parsing/parser.mly" ( xs ) -# 8966 "parsing/parser.ml" +# 9262 "parsing/parser.ml" in let _2 = @@ -8970,21 +9266,21 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4371 "parsing/parser.mly" +# 4476 "parsing/parser.mly" ( _1 ) -# 8976 "parsing/parser.ml" +# 9272 "parsing/parser.ml" in -# 4384 "parsing/parser.mly" +# 4489 "parsing/parser.mly" ( _1, _2 ) -# 8982 "parsing/parser.ml" +# 9278 "parsing/parser.ml" in -# 2589 "parsing/parser.mly" +# 2612 "parsing/parser.mly" ( Pexp_function _3, _2 ) -# 8988 "parsing/parser.ml" +# 9284 "parsing/parser.ml" in let _endpos__1_ = _endpos_xs_ in @@ -8992,10 +9288,10 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2546 "parsing/parser.mly" +# 2563 "parsing/parser.mly" ( let desc, attrs = _1 in mkexp_attrs ~loc:_sloc desc attrs ) -# 8999 "parsing/parser.ml" +# 9295 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -9051,22 +9347,22 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4371 "parsing/parser.mly" +# 4476 "parsing/parser.mly" ( _1 ) -# 9057 "parsing/parser.ml" +# 9353 "parsing/parser.ml" in -# 4384 "parsing/parser.mly" +# 4489 "parsing/parser.mly" ( _1, _2 ) -# 9063 "parsing/parser.ml" +# 9359 "parsing/parser.ml" in -# 2591 "parsing/parser.mly" +# 2614 "parsing/parser.mly" ( let (l,o,p) = _3 in Pexp_fun(l, o, p, _4), _2 ) -# 9070 "parsing/parser.ml" +# 9366 "parsing/parser.ml" in let _endpos__1_ = _endpos__4_ in @@ -9074,120 +9370,10 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2546 "parsing/parser.mly" - ( let desc, attrs = _1 in - mkexp_attrs ~loc:_sloc desc attrs ) -# 9081 "parsing/parser.ml" - in - { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = Obj.repr _v; - MenhirLib.EngineTypes.startp = _startpos; - MenhirLib.EngineTypes.endp = _endpos; - MenhirLib.EngineTypes.next = _menhir_stack; - }); - (fun _menhir_env -> - let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in - let { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _7; - MenhirLib.EngineTypes.startp = _startpos__7_; - MenhirLib.EngineTypes.endp = _endpos__7_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _6; - MenhirLib.EngineTypes.startp = _startpos__6_; - MenhirLib.EngineTypes.endp = _endpos__6_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = xs; - MenhirLib.EngineTypes.startp = _startpos_xs_; - MenhirLib.EngineTypes.endp = _endpos_xs_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _4; - MenhirLib.EngineTypes.startp = _startpos__4_; - MenhirLib.EngineTypes.endp = _endpos__4_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _3; - MenhirLib.EngineTypes.startp = _startpos__3_; - MenhirLib.EngineTypes.endp = _endpos__3_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _1_inlined2; - MenhirLib.EngineTypes.startp = _startpos__1_inlined2_; - MenhirLib.EngineTypes.endp = _endpos__1_inlined2_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _1_inlined1; - MenhirLib.EngineTypes.startp = _startpos__1_inlined1_; - MenhirLib.EngineTypes.endp = _endpos__1_inlined1_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; - MenhirLib.EngineTypes.next = _menhir_stack; - }; - }; - }; - }; - }; - }; - }; - } = _menhir_stack in - let _7 : (Parsetree.expression) = Obj.magic _7 in - let _6 : unit = Obj.magic _6 in - let xs : (string Asttypes.loc list) = Obj.magic xs in - let _4 : unit = Obj.magic _4 in - let _3 : unit = Obj.magic _3 in - let _1_inlined2 : (Parsetree.attributes) = Obj.magic _1_inlined2 in - let _1_inlined1 : (string Asttypes.loc option) = Obj.magic _1_inlined1 in - let _1 : unit = Obj.magic _1 in - let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in - let _startpos = _startpos__1_ in - let _endpos = _endpos__7_ in - let _v : (Parsetree.expression) = let _1 = - let _5 = -# 2873 "parsing/parser.mly" - ( xs ) -# 9156 "parsing/parser.ml" - in - let _2 = - let (_1_inlined1, _1) = (_1_inlined2, _1_inlined1) in - let _2 = - let _1 = _1_inlined1 in - -# 4371 "parsing/parser.mly" - ( _1 ) -# 9165 "parsing/parser.ml" - - in - -# 4384 "parsing/parser.mly" - ( _1, _2 ) -# 9171 "parsing/parser.ml" - - in - let _endpos = _endpos__7_ in - let _symbolstartpos = _startpos__1_ in - let _sloc = (_symbolstartpos, _endpos) in - -# 2594 "parsing/parser.mly" - ( (mk_newtypes ~loc:_sloc _5 _7).pexp_desc, _2 ) -# 9180 "parsing/parser.ml" - - in - let _endpos__1_ = _endpos__7_ in - let _endpos = _endpos__1_ in - let _symbolstartpos = _startpos__1_ in - let _sloc = (_symbolstartpos, _endpos) in - -# 2546 "parsing/parser.mly" +# 2563 "parsing/parser.mly" ( let desc, attrs = _1 in mkexp_attrs ~loc:_sloc desc attrs ) -# 9191 "parsing/parser.ml" +# 9377 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -9250,18 +9436,18 @@ module Tables = struct let xs = # 253 "" ( List.rev xs ) -# 9254 "parsing/parser.ml" +# 9440 "parsing/parser.ml" in -# 1309 "parsing/parser.mly" +# 1321 "parsing/parser.mly" ( xs ) -# 9259 "parsing/parser.ml" +# 9445 "parsing/parser.ml" in -# 3019 "parsing/parser.mly" +# 3050 "parsing/parser.mly" ( xs ) -# 9265 "parsing/parser.ml" +# 9451 "parsing/parser.ml" in let _2 = @@ -9269,21 +9455,21 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4371 "parsing/parser.mly" +# 4476 "parsing/parser.mly" ( _1 ) -# 9275 "parsing/parser.ml" +# 9461 "parsing/parser.ml" in -# 4384 "parsing/parser.mly" +# 4489 "parsing/parser.mly" ( _1, _2 ) -# 9281 "parsing/parser.ml" +# 9467 "parsing/parser.ml" in -# 2596 "parsing/parser.mly" +# 2617 "parsing/parser.mly" ( Pexp_match(_3, _5), _2 ) -# 9287 "parsing/parser.ml" +# 9473 "parsing/parser.ml" in let _endpos__1_ = _endpos_xs_ in @@ -9291,10 +9477,10 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2546 "parsing/parser.mly" +# 2563 "parsing/parser.mly" ( let desc, attrs = _1 in mkexp_attrs ~loc:_sloc desc attrs ) -# 9298 "parsing/parser.ml" +# 9484 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -9357,18 +9543,18 @@ module Tables = struct let xs = # 253 "" ( List.rev xs ) -# 9361 "parsing/parser.ml" +# 9547 "parsing/parser.ml" in -# 1309 "parsing/parser.mly" +# 1321 "parsing/parser.mly" ( xs ) -# 9366 "parsing/parser.ml" +# 9552 "parsing/parser.ml" in -# 3019 "parsing/parser.mly" +# 3050 "parsing/parser.mly" ( xs ) -# 9372 "parsing/parser.ml" +# 9558 "parsing/parser.ml" in let _2 = @@ -9376,21 +9562,21 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4371 "parsing/parser.mly" +# 4476 "parsing/parser.mly" ( _1 ) -# 9382 "parsing/parser.ml" +# 9568 "parsing/parser.ml" in -# 4384 "parsing/parser.mly" +# 4489 "parsing/parser.mly" ( _1, _2 ) -# 9388 "parsing/parser.ml" +# 9574 "parsing/parser.ml" in -# 2598 "parsing/parser.mly" +# 2619 "parsing/parser.mly" ( Pexp_try(_3, _5), _2 ) -# 9394 "parsing/parser.ml" +# 9580 "parsing/parser.ml" in let _endpos__1_ = _endpos_xs_ in @@ -9398,10 +9584,10 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2546 "parsing/parser.mly" +# 2563 "parsing/parser.mly" ( let desc, attrs = _1 in mkexp_attrs ~loc:_sloc desc attrs ) -# 9405 "parsing/parser.ml" +# 9591 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -9464,21 +9650,21 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4371 "parsing/parser.mly" +# 4476 "parsing/parser.mly" ( _1 ) -# 9470 "parsing/parser.ml" +# 9656 "parsing/parser.ml" in -# 4384 "parsing/parser.mly" +# 4489 "parsing/parser.mly" ( _1, _2 ) -# 9476 "parsing/parser.ml" +# 9662 "parsing/parser.ml" in -# 2600 "parsing/parser.mly" +# 2621 "parsing/parser.mly" ( syntax_error() ) -# 9482 "parsing/parser.ml" +# 9668 "parsing/parser.ml" in let _endpos__1_ = _endpos__5_ in @@ -9486,10 +9672,10 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2546 "parsing/parser.mly" +# 2563 "parsing/parser.mly" ( let desc, attrs = _1 in mkexp_attrs ~loc:_sloc desc attrs ) -# 9493 "parsing/parser.ml" +# 9679 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -9566,21 +9752,21 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4371 "parsing/parser.mly" +# 4476 "parsing/parser.mly" ( _1 ) -# 9572 "parsing/parser.ml" +# 9758 "parsing/parser.ml" in -# 4384 "parsing/parser.mly" +# 4489 "parsing/parser.mly" ( _1, _2 ) -# 9578 "parsing/parser.ml" +# 9764 "parsing/parser.ml" in -# 2602 "parsing/parser.mly" +# 2623 "parsing/parser.mly" ( Pexp_ifthenelse(_3, _5, Some _7), _2 ) -# 9584 "parsing/parser.ml" +# 9770 "parsing/parser.ml" in let _endpos__1_ = _endpos__7_ in @@ -9588,10 +9774,10 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2546 "parsing/parser.mly" +# 2563 "parsing/parser.mly" ( let desc, attrs = _1 in mkexp_attrs ~loc:_sloc desc attrs ) -# 9595 "parsing/parser.ml" +# 9781 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -9654,21 +9840,21 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4371 "parsing/parser.mly" +# 4476 "parsing/parser.mly" ( _1 ) -# 9660 "parsing/parser.ml" +# 9846 "parsing/parser.ml" in -# 4384 "parsing/parser.mly" +# 4489 "parsing/parser.mly" ( _1, _2 ) -# 9666 "parsing/parser.ml" +# 9852 "parsing/parser.ml" in -# 2604 "parsing/parser.mly" +# 2625 "parsing/parser.mly" ( Pexp_ifthenelse(_3, _5, None), _2 ) -# 9672 "parsing/parser.ml" +# 9858 "parsing/parser.ml" in let _endpos__1_ = _endpos__5_ in @@ -9676,10 +9862,10 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2546 "parsing/parser.mly" +# 2563 "parsing/parser.mly" ( let desc, attrs = _1 in mkexp_attrs ~loc:_sloc desc attrs ) -# 9683 "parsing/parser.ml" +# 9869 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -9749,21 +9935,21 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4371 "parsing/parser.mly" +# 4476 "parsing/parser.mly" ( _1 ) -# 9755 "parsing/parser.ml" +# 9941 "parsing/parser.ml" in -# 4384 "parsing/parser.mly" +# 4489 "parsing/parser.mly" ( _1, _2 ) -# 9761 "parsing/parser.ml" +# 9947 "parsing/parser.ml" in -# 2606 "parsing/parser.mly" +# 2627 "parsing/parser.mly" ( Pexp_while(_3, _5), _2 ) -# 9767 "parsing/parser.ml" +# 9953 "parsing/parser.ml" in let _endpos__1_ = _endpos__6_ in @@ -9771,10 +9957,10 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2546 "parsing/parser.mly" +# 2563 "parsing/parser.mly" ( let desc, attrs = _1 in mkexp_attrs ~loc:_sloc desc attrs ) -# 9778 "parsing/parser.ml" +# 9964 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -9872,21 +10058,21 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4371 "parsing/parser.mly" +# 4476 "parsing/parser.mly" ( _1 ) -# 9878 "parsing/parser.ml" +# 10064 "parsing/parser.ml" in -# 4384 "parsing/parser.mly" +# 4489 "parsing/parser.mly" ( _1, _2 ) -# 9884 "parsing/parser.ml" +# 10070 "parsing/parser.ml" in -# 2609 "parsing/parser.mly" +# 2630 "parsing/parser.mly" ( Pexp_for(_3, _5, _7, _6, _9), _2 ) -# 9890 "parsing/parser.ml" +# 10076 "parsing/parser.ml" in let _endpos__1_ = _endpos__10_ in @@ -9894,10 +10080,10 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2546 "parsing/parser.mly" +# 2563 "parsing/parser.mly" ( let desc, attrs = _1 in mkexp_attrs ~loc:_sloc desc attrs ) -# 9901 "parsing/parser.ml" +# 10087 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -9946,21 +10132,21 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4371 "parsing/parser.mly" +# 4476 "parsing/parser.mly" ( _1 ) -# 9952 "parsing/parser.ml" +# 10138 "parsing/parser.ml" in -# 4384 "parsing/parser.mly" +# 4489 "parsing/parser.mly" ( _1, _2 ) -# 9958 "parsing/parser.ml" +# 10144 "parsing/parser.ml" in -# 2611 "parsing/parser.mly" +# 2632 "parsing/parser.mly" ( Pexp_assert _3, _2 ) -# 9964 "parsing/parser.ml" +# 10150 "parsing/parser.ml" in let _endpos__1_ = _endpos__3_ in @@ -9968,10 +10154,10 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2546 "parsing/parser.mly" +# 2563 "parsing/parser.mly" ( let desc, attrs = _1 in mkexp_attrs ~loc:_sloc desc attrs ) -# 9975 "parsing/parser.ml" +# 10161 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -10020,21 +10206,21 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4371 "parsing/parser.mly" +# 4476 "parsing/parser.mly" ( _1 ) -# 10026 "parsing/parser.ml" +# 10212 "parsing/parser.ml" in -# 4384 "parsing/parser.mly" +# 4489 "parsing/parser.mly" ( _1, _2 ) -# 10032 "parsing/parser.ml" +# 10218 "parsing/parser.ml" in -# 2613 "parsing/parser.mly" +# 2634 "parsing/parser.mly" ( Pexp_lazy _3, _2 ) -# 10038 "parsing/parser.ml" +# 10224 "parsing/parser.ml" in let _endpos__1_ = _endpos__3_ in @@ -10042,10 +10228,10 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2546 "parsing/parser.mly" +# 2563 "parsing/parser.mly" ( let desc, attrs = _1 in mkexp_attrs ~loc:_sloc desc attrs ) -# 10049 "parsing/parser.ml" +# 10235 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -10077,10 +10263,10 @@ module Tables = struct let _v : (Parsetree.expression) = let _1 = let _loc__1_ = (_startpos__1_, _endpos__1_) in -# 2615 "parsing/parser.mly" +# 2636 "parsing/parser.mly" ( let desc, attrs = mkuminus ~oploc:_loc__1_ _1 _2 in desc, (None, attrs) ) -# 10084 "parsing/parser.ml" +# 10270 "parsing/parser.ml" in let _endpos__1_ = _endpos__2_ in @@ -10088,10 +10274,10 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2546 "parsing/parser.mly" +# 2563 "parsing/parser.mly" ( let desc, attrs = _1 in mkexp_attrs ~loc:_sloc desc attrs ) -# 10095 "parsing/parser.ml" +# 10281 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -10123,10 +10309,10 @@ module Tables = struct let _v : (Parsetree.expression) = let _1 = let _loc__1_ = (_startpos__1_, _endpos__1_) in -# 2618 "parsing/parser.mly" +# 2639 "parsing/parser.mly" ( let desc, attrs = mkuplus ~oploc:_loc__1_ _1 _2 in desc, (None, attrs) ) -# 10130 "parsing/parser.ml" +# 10316 "parsing/parser.ml" in let _endpos__1_ = _endpos__2_ in @@ -10134,10 +10320,10 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2546 "parsing/parser.mly" +# 2563 "parsing/parser.mly" ( let desc, attrs = _1 in mkexp_attrs ~loc:_sloc desc attrs ) -# 10141 "parsing/parser.ml" +# 10327 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -10172,18 +10358,18 @@ module Tables = struct let xs = # 253 "" ( List.rev xs ) -# 10176 "parsing/parser.ml" +# 10362 "parsing/parser.ml" in -# 1216 "parsing/parser.mly" +# 1228 "parsing/parser.mly" ( xs ) -# 10181 "parsing/parser.ml" +# 10367 "parsing/parser.ml" in -# 2623 "parsing/parser.mly" +# 2644 "parsing/parser.mly" ( Pexp_apply(_1, _2) ) -# 10187 "parsing/parser.ml" +# 10373 "parsing/parser.ml" in let _endpos__1_ = _endpos_xs_ in @@ -10191,15 +10377,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1147 "parsing/parser.mly" +# 1156 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) -# 10197 "parsing/parser.ml" +# 10383 "parsing/parser.ml" in -# 2549 "parsing/parser.mly" +# 2566 "parsing/parser.mly" ( _1 ) -# 10203 "parsing/parser.ml" +# 10389 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -10228,24 +10414,24 @@ module Tables = struct let xs = # 253 "" ( List.rev xs ) -# 10232 "parsing/parser.ml" +# 10418 "parsing/parser.ml" in -# 1276 "parsing/parser.mly" +# 1288 "parsing/parser.mly" ( xs ) -# 10237 "parsing/parser.ml" +# 10423 "parsing/parser.ml" in -# 3046 "parsing/parser.mly" +# 3079 "parsing/parser.mly" ( es ) -# 10243 "parsing/parser.ml" +# 10429 "parsing/parser.ml" in -# 2625 "parsing/parser.mly" +# 2646 "parsing/parser.mly" ( Pexp_tuple(_1) ) -# 10249 "parsing/parser.ml" +# 10435 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_xs_, _startpos_xs_) in @@ -10253,15 +10439,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1147 "parsing/parser.mly" +# 1156 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) -# 10259 "parsing/parser.ml" +# 10445 "parsing/parser.ml" in -# 2549 "parsing/parser.mly" +# 2566 "parsing/parser.mly" ( _1 ) -# 10265 "parsing/parser.ml" +# 10451 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -10297,15 +10483,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1114 "parsing/parser.mly" +# 1123 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 10303 "parsing/parser.ml" +# 10489 "parsing/parser.ml" in -# 2627 "parsing/parser.mly" +# 2648 "parsing/parser.mly" ( Pexp_construct(_1, Some _2) ) -# 10309 "parsing/parser.ml" +# 10495 "parsing/parser.ml" in let _endpos__1_ = _endpos__2_ in @@ -10313,15 +10499,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1147 "parsing/parser.mly" +# 1156 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) -# 10319 "parsing/parser.ml" +# 10505 "parsing/parser.ml" in -# 2549 "parsing/parser.mly" +# 2566 "parsing/parser.mly" ( _1 ) -# 10325 "parsing/parser.ml" +# 10511 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -10352,24 +10538,24 @@ module Tables = struct let _endpos = _endpos__2_ in let _v : (Parsetree.expression) = let _1 = let _1 = -# 2629 "parsing/parser.mly" +# 2650 "parsing/parser.mly" ( Pexp_variant(_1, Some _2) ) -# 10358 "parsing/parser.ml" +# 10544 "parsing/parser.ml" in let _endpos__1_ = _endpos__2_ in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1147 "parsing/parser.mly" +# 1156 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) -# 10367 "parsing/parser.ml" +# 10553 "parsing/parser.ml" in -# 2549 "parsing/parser.mly" +# 2566 "parsing/parser.mly" ( _1 ) -# 10373 "parsing/parser.ml" +# 10559 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -10401,9 +10587,9 @@ module Tables = struct } = _menhir_stack in let e2 : (Parsetree.expression) = Obj.magic e2 in let op : ( -# 902 "parsing/parser.mly" +# 911 "parsing/parser.mly" (string) -# 10407 "parsing/parser.ml" +# 10593 "parsing/parser.ml" ) = Obj.magic op in let e1 : (Parsetree.expression) = Obj.magic e1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in @@ -10413,24 +10599,24 @@ module Tables = struct let _1 = let op = let _1 = -# 4069 "parsing/parser.mly" +# 4173 "parsing/parser.mly" ( op ) -# 10419 "parsing/parser.ml" +# 10605 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_op_, _startpos_op_) in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1141 "parsing/parser.mly" +# 1150 "parsing/parser.mly" ( mkoperator ~loc:_sloc _1 ) -# 10428 "parsing/parser.ml" +# 10614 "parsing/parser.ml" in -# 2631 "parsing/parser.mly" +# 2652 "parsing/parser.mly" ( mkinfix e1 op e2 ) -# 10434 "parsing/parser.ml" +# 10620 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_e2_, _startpos_e1_) in @@ -10438,15 +10624,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1147 "parsing/parser.mly" +# 1156 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) -# 10444 "parsing/parser.ml" +# 10630 "parsing/parser.ml" in -# 2549 "parsing/parser.mly" +# 2566 "parsing/parser.mly" ( _1 ) -# 10450 "parsing/parser.ml" +# 10636 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -10478,9 +10664,9 @@ module Tables = struct } = _menhir_stack in let e2 : (Parsetree.expression) = Obj.magic e2 in let op : ( -# 903 "parsing/parser.mly" +# 912 "parsing/parser.mly" (string) -# 10484 "parsing/parser.ml" +# 10670 "parsing/parser.ml" ) = Obj.magic op in let e1 : (Parsetree.expression) = Obj.magic e1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in @@ -10490,24 +10676,24 @@ module Tables = struct let _1 = let op = let _1 = -# 4070 "parsing/parser.mly" +# 4174 "parsing/parser.mly" ( op ) -# 10496 "parsing/parser.ml" +# 10682 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_op_, _startpos_op_) in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1141 "parsing/parser.mly" +# 1150 "parsing/parser.mly" ( mkoperator ~loc:_sloc _1 ) -# 10505 "parsing/parser.ml" +# 10691 "parsing/parser.ml" in -# 2631 "parsing/parser.mly" +# 2652 "parsing/parser.mly" ( mkinfix e1 op e2 ) -# 10511 "parsing/parser.ml" +# 10697 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_e2_, _startpos_e1_) in @@ -10515,15 +10701,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1147 "parsing/parser.mly" +# 1156 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) -# 10521 "parsing/parser.ml" +# 10707 "parsing/parser.ml" in -# 2549 "parsing/parser.mly" +# 2566 "parsing/parser.mly" ( _1 ) -# 10527 "parsing/parser.ml" +# 10713 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -10555,9 +10741,9 @@ module Tables = struct } = _menhir_stack in let e2 : (Parsetree.expression) = Obj.magic e2 in let op : ( -# 904 "parsing/parser.mly" +# 913 "parsing/parser.mly" (string) -# 10561 "parsing/parser.ml" +# 10747 "parsing/parser.ml" ) = Obj.magic op in let e1 : (Parsetree.expression) = Obj.magic e1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in @@ -10567,24 +10753,24 @@ module Tables = struct let _1 = let op = let _1 = -# 4071 "parsing/parser.mly" +# 4175 "parsing/parser.mly" ( op ) -# 10573 "parsing/parser.ml" +# 10759 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_op_, _startpos_op_) in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1141 "parsing/parser.mly" +# 1150 "parsing/parser.mly" ( mkoperator ~loc:_sloc _1 ) -# 10582 "parsing/parser.ml" +# 10768 "parsing/parser.ml" in -# 2631 "parsing/parser.mly" +# 2652 "parsing/parser.mly" ( mkinfix e1 op e2 ) -# 10588 "parsing/parser.ml" +# 10774 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_e2_, _startpos_e1_) in @@ -10592,15 +10778,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1147 "parsing/parser.mly" +# 1156 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) -# 10598 "parsing/parser.ml" +# 10784 "parsing/parser.ml" in -# 2549 "parsing/parser.mly" +# 2566 "parsing/parser.mly" ( _1 ) -# 10604 "parsing/parser.ml" +# 10790 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -10632,9 +10818,9 @@ module Tables = struct } = _menhir_stack in let e2 : (Parsetree.expression) = Obj.magic e2 in let op : ( -# 905 "parsing/parser.mly" +# 914 "parsing/parser.mly" (string) -# 10638 "parsing/parser.ml" +# 10824 "parsing/parser.ml" ) = Obj.magic op in let e1 : (Parsetree.expression) = Obj.magic e1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in @@ -10644,24 +10830,24 @@ module Tables = struct let _1 = let op = let _1 = -# 4072 "parsing/parser.mly" +# 4176 "parsing/parser.mly" ( op ) -# 10650 "parsing/parser.ml" +# 10836 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_op_, _startpos_op_) in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1141 "parsing/parser.mly" +# 1150 "parsing/parser.mly" ( mkoperator ~loc:_sloc _1 ) -# 10659 "parsing/parser.ml" +# 10845 "parsing/parser.ml" in -# 2631 "parsing/parser.mly" +# 2652 "parsing/parser.mly" ( mkinfix e1 op e2 ) -# 10665 "parsing/parser.ml" +# 10851 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_e2_, _startpos_e1_) in @@ -10669,15 +10855,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1147 "parsing/parser.mly" +# 1156 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) -# 10675 "parsing/parser.ml" +# 10861 "parsing/parser.ml" in -# 2549 "parsing/parser.mly" +# 2566 "parsing/parser.mly" ( _1 ) -# 10681 "parsing/parser.ml" +# 10867 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -10709,9 +10895,9 @@ module Tables = struct } = _menhir_stack in let e2 : (Parsetree.expression) = Obj.magic e2 in let op : ( -# 906 "parsing/parser.mly" +# 915 "parsing/parser.mly" (string) -# 10715 "parsing/parser.ml" +# 10901 "parsing/parser.ml" ) = Obj.magic op in let e1 : (Parsetree.expression) = Obj.magic e1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in @@ -10721,24 +10907,24 @@ module Tables = struct let _1 = let op = let _1 = -# 4073 "parsing/parser.mly" +# 4177 "parsing/parser.mly" ( op ) -# 10727 "parsing/parser.ml" +# 10913 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_op_, _startpos_op_) in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1141 "parsing/parser.mly" +# 1150 "parsing/parser.mly" ( mkoperator ~loc:_sloc _1 ) -# 10736 "parsing/parser.ml" +# 10922 "parsing/parser.ml" in -# 2631 "parsing/parser.mly" +# 2652 "parsing/parser.mly" ( mkinfix e1 op e2 ) -# 10742 "parsing/parser.ml" +# 10928 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_e2_, _startpos_e1_) in @@ -10746,15 +10932,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1147 "parsing/parser.mly" +# 1156 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) -# 10752 "parsing/parser.ml" +# 10938 "parsing/parser.ml" in -# 2549 "parsing/parser.mly" +# 2566 "parsing/parser.mly" ( _1 ) -# 10758 "parsing/parser.ml" +# 10944 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -10794,23 +10980,23 @@ module Tables = struct let _1 = let op = let _1 = -# 4074 "parsing/parser.mly" +# 4178 "parsing/parser.mly" ("+") -# 10800 "parsing/parser.ml" +# 10986 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1141 "parsing/parser.mly" +# 1150 "parsing/parser.mly" ( mkoperator ~loc:_sloc _1 ) -# 10808 "parsing/parser.ml" +# 10994 "parsing/parser.ml" in -# 2631 "parsing/parser.mly" +# 2652 "parsing/parser.mly" ( mkinfix e1 op e2 ) -# 10814 "parsing/parser.ml" +# 11000 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_e2_, _startpos_e1_) in @@ -10818,15 +11004,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1147 "parsing/parser.mly" +# 1156 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) -# 10824 "parsing/parser.ml" +# 11010 "parsing/parser.ml" in -# 2549 "parsing/parser.mly" +# 2566 "parsing/parser.mly" ( _1 ) -# 10830 "parsing/parser.ml" +# 11016 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -10866,23 +11052,23 @@ module Tables = struct let _1 = let op = let _1 = -# 4075 "parsing/parser.mly" +# 4179 "parsing/parser.mly" ("+.") -# 10872 "parsing/parser.ml" +# 11058 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1141 "parsing/parser.mly" +# 1150 "parsing/parser.mly" ( mkoperator ~loc:_sloc _1 ) -# 10880 "parsing/parser.ml" +# 11066 "parsing/parser.ml" in -# 2631 "parsing/parser.mly" +# 2652 "parsing/parser.mly" ( mkinfix e1 op e2 ) -# 10886 "parsing/parser.ml" +# 11072 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_e2_, _startpos_e1_) in @@ -10890,15 +11076,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1147 "parsing/parser.mly" +# 1156 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) -# 10896 "parsing/parser.ml" +# 11082 "parsing/parser.ml" in -# 2549 "parsing/parser.mly" +# 2566 "parsing/parser.mly" ( _1 ) -# 10902 "parsing/parser.ml" +# 11088 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -10938,23 +11124,23 @@ module Tables = struct let _1 = let op = let _1 = -# 4076 "parsing/parser.mly" +# 4180 "parsing/parser.mly" ("+=") -# 10944 "parsing/parser.ml" +# 11130 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1141 "parsing/parser.mly" +# 1150 "parsing/parser.mly" ( mkoperator ~loc:_sloc _1 ) -# 10952 "parsing/parser.ml" +# 11138 "parsing/parser.ml" in -# 2631 "parsing/parser.mly" +# 2652 "parsing/parser.mly" ( mkinfix e1 op e2 ) -# 10958 "parsing/parser.ml" +# 11144 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_e2_, _startpos_e1_) in @@ -10962,15 +11148,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1147 "parsing/parser.mly" +# 1156 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) -# 10968 "parsing/parser.ml" +# 11154 "parsing/parser.ml" in -# 2549 "parsing/parser.mly" +# 2566 "parsing/parser.mly" ( _1 ) -# 10974 "parsing/parser.ml" +# 11160 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -11010,23 +11196,23 @@ module Tables = struct let _1 = let op = let _1 = -# 4077 "parsing/parser.mly" +# 4181 "parsing/parser.mly" ("-") -# 11016 "parsing/parser.ml" +# 11202 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1141 "parsing/parser.mly" +# 1150 "parsing/parser.mly" ( mkoperator ~loc:_sloc _1 ) -# 11024 "parsing/parser.ml" +# 11210 "parsing/parser.ml" in -# 2631 "parsing/parser.mly" +# 2652 "parsing/parser.mly" ( mkinfix e1 op e2 ) -# 11030 "parsing/parser.ml" +# 11216 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_e2_, _startpos_e1_) in @@ -11034,15 +11220,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1147 "parsing/parser.mly" +# 1156 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) -# 11040 "parsing/parser.ml" +# 11226 "parsing/parser.ml" in -# 2549 "parsing/parser.mly" +# 2566 "parsing/parser.mly" ( _1 ) -# 11046 "parsing/parser.ml" +# 11232 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -11082,23 +11268,23 @@ module Tables = struct let _1 = let op = let _1 = -# 4078 "parsing/parser.mly" +# 4182 "parsing/parser.mly" ("-.") -# 11088 "parsing/parser.ml" +# 11274 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1141 "parsing/parser.mly" +# 1150 "parsing/parser.mly" ( mkoperator ~loc:_sloc _1 ) -# 11096 "parsing/parser.ml" +# 11282 "parsing/parser.ml" in -# 2631 "parsing/parser.mly" +# 2652 "parsing/parser.mly" ( mkinfix e1 op e2 ) -# 11102 "parsing/parser.ml" +# 11288 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_e2_, _startpos_e1_) in @@ -11106,15 +11292,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1147 "parsing/parser.mly" +# 1156 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) -# 11112 "parsing/parser.ml" +# 11298 "parsing/parser.ml" in -# 2549 "parsing/parser.mly" +# 2566 "parsing/parser.mly" ( _1 ) -# 11118 "parsing/parser.ml" +# 11304 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -11154,23 +11340,23 @@ module Tables = struct let _1 = let op = let _1 = -# 4079 "parsing/parser.mly" +# 4183 "parsing/parser.mly" ("*") -# 11160 "parsing/parser.ml" +# 11346 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1141 "parsing/parser.mly" +# 1150 "parsing/parser.mly" ( mkoperator ~loc:_sloc _1 ) -# 11168 "parsing/parser.ml" +# 11354 "parsing/parser.ml" in -# 2631 "parsing/parser.mly" +# 2652 "parsing/parser.mly" ( mkinfix e1 op e2 ) -# 11174 "parsing/parser.ml" +# 11360 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_e2_, _startpos_e1_) in @@ -11178,15 +11364,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1147 "parsing/parser.mly" +# 1156 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) -# 11184 "parsing/parser.ml" +# 11370 "parsing/parser.ml" in -# 2549 "parsing/parser.mly" +# 2566 "parsing/parser.mly" ( _1 ) -# 11190 "parsing/parser.ml" +# 11376 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -11226,23 +11412,23 @@ module Tables = struct let _1 = let op = let _1 = -# 4080 "parsing/parser.mly" +# 4184 "parsing/parser.mly" ("%") -# 11232 "parsing/parser.ml" +# 11418 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1141 "parsing/parser.mly" +# 1150 "parsing/parser.mly" ( mkoperator ~loc:_sloc _1 ) -# 11240 "parsing/parser.ml" +# 11426 "parsing/parser.ml" in -# 2631 "parsing/parser.mly" +# 2652 "parsing/parser.mly" ( mkinfix e1 op e2 ) -# 11246 "parsing/parser.ml" +# 11432 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_e2_, _startpos_e1_) in @@ -11250,15 +11436,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1147 "parsing/parser.mly" +# 1156 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) -# 11256 "parsing/parser.ml" +# 11442 "parsing/parser.ml" in -# 2549 "parsing/parser.mly" +# 2566 "parsing/parser.mly" ( _1 ) -# 11262 "parsing/parser.ml" +# 11448 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -11298,23 +11484,23 @@ module Tables = struct let _1 = let op = let _1 = -# 4081 "parsing/parser.mly" +# 4185 "parsing/parser.mly" ("=") -# 11304 "parsing/parser.ml" +# 11490 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1141 "parsing/parser.mly" +# 1150 "parsing/parser.mly" ( mkoperator ~loc:_sloc _1 ) -# 11312 "parsing/parser.ml" +# 11498 "parsing/parser.ml" in -# 2631 "parsing/parser.mly" +# 2652 "parsing/parser.mly" ( mkinfix e1 op e2 ) -# 11318 "parsing/parser.ml" +# 11504 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_e2_, _startpos_e1_) in @@ -11322,15 +11508,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1147 "parsing/parser.mly" +# 1156 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) -# 11328 "parsing/parser.ml" +# 11514 "parsing/parser.ml" in -# 2549 "parsing/parser.mly" +# 2566 "parsing/parser.mly" ( _1 ) -# 11334 "parsing/parser.ml" +# 11520 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -11370,23 +11556,23 @@ module Tables = struct let _1 = let op = let _1 = -# 4082 "parsing/parser.mly" +# 4186 "parsing/parser.mly" ("<") -# 11376 "parsing/parser.ml" +# 11562 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1141 "parsing/parser.mly" +# 1150 "parsing/parser.mly" ( mkoperator ~loc:_sloc _1 ) -# 11384 "parsing/parser.ml" +# 11570 "parsing/parser.ml" in -# 2631 "parsing/parser.mly" +# 2652 "parsing/parser.mly" ( mkinfix e1 op e2 ) -# 11390 "parsing/parser.ml" +# 11576 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_e2_, _startpos_e1_) in @@ -11394,15 +11580,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1147 "parsing/parser.mly" +# 1156 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) -# 11400 "parsing/parser.ml" +# 11586 "parsing/parser.ml" in -# 2549 "parsing/parser.mly" +# 2566 "parsing/parser.mly" ( _1 ) -# 11406 "parsing/parser.ml" +# 11592 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -11442,23 +11628,23 @@ module Tables = struct let _1 = let op = let _1 = -# 4083 "parsing/parser.mly" +# 4187 "parsing/parser.mly" (">") -# 11448 "parsing/parser.ml" +# 11634 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1141 "parsing/parser.mly" +# 1150 "parsing/parser.mly" ( mkoperator ~loc:_sloc _1 ) -# 11456 "parsing/parser.ml" +# 11642 "parsing/parser.ml" in -# 2631 "parsing/parser.mly" +# 2652 "parsing/parser.mly" ( mkinfix e1 op e2 ) -# 11462 "parsing/parser.ml" +# 11648 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_e2_, _startpos_e1_) in @@ -11466,15 +11652,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1147 "parsing/parser.mly" +# 1156 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) -# 11472 "parsing/parser.ml" +# 11658 "parsing/parser.ml" in -# 2549 "parsing/parser.mly" +# 2566 "parsing/parser.mly" ( _1 ) -# 11478 "parsing/parser.ml" +# 11664 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -11514,23 +11700,23 @@ module Tables = struct let _1 = let op = let _1 = -# 4084 "parsing/parser.mly" +# 4188 "parsing/parser.mly" ("or") -# 11520 "parsing/parser.ml" +# 11706 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1141 "parsing/parser.mly" +# 1150 "parsing/parser.mly" ( mkoperator ~loc:_sloc _1 ) -# 11528 "parsing/parser.ml" +# 11714 "parsing/parser.ml" in -# 2631 "parsing/parser.mly" +# 2652 "parsing/parser.mly" ( mkinfix e1 op e2 ) -# 11534 "parsing/parser.ml" +# 11720 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_e2_, _startpos_e1_) in @@ -11538,15 +11724,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1147 "parsing/parser.mly" +# 1156 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) -# 11544 "parsing/parser.ml" +# 11730 "parsing/parser.ml" in -# 2549 "parsing/parser.mly" +# 2566 "parsing/parser.mly" ( _1 ) -# 11550 "parsing/parser.ml" +# 11736 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -11586,23 +11772,23 @@ module Tables = struct let _1 = let op = let _1 = -# 4085 "parsing/parser.mly" +# 4189 "parsing/parser.mly" ("||") -# 11592 "parsing/parser.ml" +# 11778 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1141 "parsing/parser.mly" +# 1150 "parsing/parser.mly" ( mkoperator ~loc:_sloc _1 ) -# 11600 "parsing/parser.ml" +# 11786 "parsing/parser.ml" in -# 2631 "parsing/parser.mly" +# 2652 "parsing/parser.mly" ( mkinfix e1 op e2 ) -# 11606 "parsing/parser.ml" +# 11792 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_e2_, _startpos_e1_) in @@ -11610,15 +11796,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1147 "parsing/parser.mly" +# 1156 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) -# 11616 "parsing/parser.ml" +# 11802 "parsing/parser.ml" in -# 2549 "parsing/parser.mly" +# 2566 "parsing/parser.mly" ( _1 ) -# 11622 "parsing/parser.ml" +# 11808 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -11658,23 +11844,23 @@ module Tables = struct let _1 = let op = let _1 = -# 4086 "parsing/parser.mly" +# 4190 "parsing/parser.mly" ("&") -# 11664 "parsing/parser.ml" +# 11850 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1141 "parsing/parser.mly" +# 1150 "parsing/parser.mly" ( mkoperator ~loc:_sloc _1 ) -# 11672 "parsing/parser.ml" +# 11858 "parsing/parser.ml" in -# 2631 "parsing/parser.mly" +# 2652 "parsing/parser.mly" ( mkinfix e1 op e2 ) -# 11678 "parsing/parser.ml" +# 11864 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_e2_, _startpos_e1_) in @@ -11682,15 +11868,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1147 "parsing/parser.mly" +# 1156 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) -# 11688 "parsing/parser.ml" +# 11874 "parsing/parser.ml" in -# 2549 "parsing/parser.mly" +# 2566 "parsing/parser.mly" ( _1 ) -# 11694 "parsing/parser.ml" +# 11880 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -11730,23 +11916,23 @@ module Tables = struct let _1 = let op = let _1 = -# 4087 "parsing/parser.mly" +# 4191 "parsing/parser.mly" ("&&") -# 11736 "parsing/parser.ml" +# 11922 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1141 "parsing/parser.mly" +# 1150 "parsing/parser.mly" ( mkoperator ~loc:_sloc _1 ) -# 11744 "parsing/parser.ml" +# 11930 "parsing/parser.ml" in -# 2631 "parsing/parser.mly" +# 2652 "parsing/parser.mly" ( mkinfix e1 op e2 ) -# 11750 "parsing/parser.ml" +# 11936 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_e2_, _startpos_e1_) in @@ -11754,15 +11940,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1147 "parsing/parser.mly" +# 1156 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) -# 11760 "parsing/parser.ml" +# 11946 "parsing/parser.ml" in -# 2549 "parsing/parser.mly" +# 2566 "parsing/parser.mly" ( _1 ) -# 11766 "parsing/parser.ml" +# 11952 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -11802,23 +11988,23 @@ module Tables = struct let _1 = let op = let _1 = -# 4088 "parsing/parser.mly" +# 4192 "parsing/parser.mly" (":=") -# 11808 "parsing/parser.ml" +# 11994 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1141 "parsing/parser.mly" +# 1150 "parsing/parser.mly" ( mkoperator ~loc:_sloc _1 ) -# 11816 "parsing/parser.ml" +# 12002 "parsing/parser.ml" in -# 2631 "parsing/parser.mly" +# 2652 "parsing/parser.mly" ( mkinfix e1 op e2 ) -# 11822 "parsing/parser.ml" +# 12008 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_e2_, _startpos_e1_) in @@ -11826,15 +12012,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1147 "parsing/parser.mly" +# 1156 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) -# 11832 "parsing/parser.ml" +# 12018 "parsing/parser.ml" in -# 2549 "parsing/parser.mly" +# 2566 "parsing/parser.mly" ( _1 ) -# 11838 "parsing/parser.ml" +# 12024 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -11874,9 +12060,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2551 "parsing/parser.mly" +# 2568 "parsing/parser.mly" ( expr_of_let_bindings ~loc:_sloc _1 _3 ) -# 11880 "parsing/parser.ml" +# 12066 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -11916,9 +12102,9 @@ module Tables = struct let _3 : unit = Obj.magic _3 in let bindings : (Parsetree.pattern * Parsetree.expression * Parsetree.binding_op list) = Obj.magic bindings in let _1 : ( -# 908 "parsing/parser.mly" +# 917 "parsing/parser.mly" (string) -# 11922 "parsing/parser.ml" +# 12108 "parsing/parser.ml" ) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in @@ -11928,9 +12114,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1114 "parsing/parser.mly" +# 1123 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 11934 "parsing/parser.ml" +# 12120 "parsing/parser.ml" in let _startpos_pbop_op_ = _startpos__1_ in @@ -11938,13 +12124,13 @@ module Tables = struct let _symbolstartpos = _startpos_pbop_op_ in let _sloc = (_symbolstartpos, _endpos) in -# 2553 "parsing/parser.mly" +# 2570 "parsing/parser.mly" ( let (pbop_pat, pbop_exp, rev_ands) = bindings in let ands = List.rev rev_ands in let pbop_loc = make_loc _sloc in let let_ = {pbop_op; pbop_pat; pbop_exp; pbop_loc} in mkexp ~loc:_sloc (Pexp_letop{ let_; ands; body}) ) -# 11948 "parsing/parser.ml" +# 12134 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -11985,9 +12171,9 @@ module Tables = struct let _loc__2_ = (_startpos__2_, _endpos__2_) in let _sloc = (_symbolstartpos, _endpos) in -# 2559 "parsing/parser.mly" +# 2576 "parsing/parser.mly" ( mkexp_cons ~loc:_sloc _loc__2_ (ghexp ~loc:_sloc (Pexp_tuple[_1;_3])) ) -# 11991 "parsing/parser.ml" +# 12177 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -12020,35 +12206,35 @@ module Tables = struct let _3 : (Parsetree.expression) = Obj.magic _3 in let _2 : unit = Obj.magic _2 in let _1 : ( -# 928 "parsing/parser.mly" +# 937 "parsing/parser.mly" (string) -# 12026 "parsing/parser.ml" +# 12212 "parsing/parser.ml" ) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : (Parsetree.expression) = let _1 = let _1 = -# 4002 "parsing/parser.mly" +# 4106 "parsing/parser.mly" ( _1 ) -# 12035 "parsing/parser.ml" +# 12221 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1114 "parsing/parser.mly" +# 1123 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 12043 "parsing/parser.ml" +# 12229 "parsing/parser.ml" in let _endpos = _endpos__3_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2561 "parsing/parser.mly" +# 2578 "parsing/parser.mly" ( mkexp ~loc:_sloc (Pexp_setinstvar(_1, _3)) ) -# 12052 "parsing/parser.ml" +# 12238 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -12104,18 +12290,18 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1114 "parsing/parser.mly" +# 1123 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 12110 "parsing/parser.ml" +# 12296 "parsing/parser.ml" in let _endpos = _endpos__5_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2563 "parsing/parser.mly" +# 2580 "parsing/parser.mly" ( mkexp ~loc:_sloc (Pexp_setfield(_1, _3, _5)) ) -# 12119 "parsing/parser.ml" +# 12305 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -12181,14 +12367,14 @@ module Tables = struct let _endpos = _endpos_v_ in let _v : (Parsetree.expression) = let _1 = let r = -# 2564 "parsing/parser.mly" +# 2581 "parsing/parser.mly" (Some v) -# 12187 "parsing/parser.ml" +# 12373 "parsing/parser.ml" in -# 2524 "parsing/parser.mly" +# 2541 "parsing/parser.mly" ( array, d, Paren, i, r ) -# 12192 "parsing/parser.ml" +# 12378 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_v_, _startpos_array_) in @@ -12196,9 +12382,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2565 "parsing/parser.mly" +# 2582 "parsing/parser.mly" ( mk_indexop_expr builtin_indexing_operators ~loc:_sloc _1 ) -# 12202 "parsing/parser.ml" +# 12388 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -12264,14 +12450,14 @@ module Tables = struct let _endpos = _endpos_v_ in let _v : (Parsetree.expression) = let _1 = let r = -# 2564 "parsing/parser.mly" +# 2581 "parsing/parser.mly" (Some v) -# 12270 "parsing/parser.ml" +# 12456 "parsing/parser.ml" in -# 2526 "parsing/parser.mly" +# 2543 "parsing/parser.mly" ( array, d, Brace, i, r ) -# 12275 "parsing/parser.ml" +# 12461 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_v_, _startpos_array_) in @@ -12279,9 +12465,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2565 "parsing/parser.mly" +# 2582 "parsing/parser.mly" ( mk_indexop_expr builtin_indexing_operators ~loc:_sloc _1 ) -# 12285 "parsing/parser.ml" +# 12471 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -12347,14 +12533,14 @@ module Tables = struct let _endpos = _endpos_v_ in let _v : (Parsetree.expression) = let _1 = let r = -# 2564 "parsing/parser.mly" +# 2581 "parsing/parser.mly" (Some v) -# 12353 "parsing/parser.ml" +# 12539 "parsing/parser.ml" in -# 2528 "parsing/parser.mly" +# 2545 "parsing/parser.mly" ( array, d, Bracket, i, r ) -# 12358 "parsing/parser.ml" +# 12544 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_v_, _startpos_array_) in @@ -12362,9 +12548,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2565 "parsing/parser.mly" +# 2582 "parsing/parser.mly" ( mk_indexop_expr builtin_indexing_operators ~loc:_sloc _1 ) -# 12368 "parsing/parser.ml" +# 12554 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -12424,9 +12610,9 @@ module Tables = struct let es : (Parsetree.expression list) = Obj.magic es in let _3 : unit = Obj.magic _3 in let _2 : ( -# 907 "parsing/parser.mly" +# 916 "parsing/parser.mly" (string) -# 12430 "parsing/parser.ml" +# 12616 "parsing/parser.ml" ) = Obj.magic _2 in let array : (Parsetree.expression) = Obj.magic array in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in @@ -12434,31 +12620,31 @@ module Tables = struct let _endpos = _endpos_v_ in let _v : (Parsetree.expression) = let _1 = let r = -# 2566 "parsing/parser.mly" +# 2583 "parsing/parser.mly" (Some v) -# 12440 "parsing/parser.ml" +# 12626 "parsing/parser.ml" in let i = -# 3086 "parsing/parser.mly" +# 3119 "parsing/parser.mly" ( es ) -# 12445 "parsing/parser.ml" +# 12631 "parsing/parser.ml" in let d = let _1 = # 124 "" ( None ) -# 12451 "parsing/parser.ml" +# 12637 "parsing/parser.ml" in -# 2540 "parsing/parser.mly" +# 2557 "parsing/parser.mly" ( _1, _2 ) -# 12456 "parsing/parser.ml" +# 12642 "parsing/parser.ml" in -# 2524 "parsing/parser.mly" +# 2541 "parsing/parser.mly" ( array, d, Paren, i, r ) -# 12462 "parsing/parser.ml" +# 12648 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_v_, _startpos_array_) in @@ -12466,9 +12652,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2567 "parsing/parser.mly" +# 2584 "parsing/parser.mly" ( mk_indexop_expr user_indexing_operators ~loc:_sloc _1 ) -# 12472 "parsing/parser.ml" +# 12658 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -12540,9 +12726,9 @@ module Tables = struct let es : (Parsetree.expression list) = Obj.magic es in let _3 : unit = Obj.magic _3 in let _2 : ( -# 907 "parsing/parser.mly" +# 916 "parsing/parser.mly" (string) -# 12546 "parsing/parser.ml" +# 12732 "parsing/parser.ml" ) = Obj.magic _2 in let _2_inlined1 : (Longident.t) = Obj.magic _2_inlined1 in let _1 : unit = Obj.magic _1 in @@ -12552,39 +12738,39 @@ module Tables = struct let _endpos = _endpos_v_ in let _v : (Parsetree.expression) = let _1 = let r = -# 2566 "parsing/parser.mly" +# 2583 "parsing/parser.mly" (Some v) -# 12558 "parsing/parser.ml" +# 12744 "parsing/parser.ml" in let i = -# 3086 "parsing/parser.mly" +# 3119 "parsing/parser.mly" ( es ) -# 12563 "parsing/parser.ml" +# 12749 "parsing/parser.ml" in let d = let _1 = let _2 = _2_inlined1 in let x = -# 2540 "parsing/parser.mly" +# 2557 "parsing/parser.mly" (_2) -# 12571 "parsing/parser.ml" +# 12757 "parsing/parser.ml" in # 126 "" ( Some x ) -# 12576 "parsing/parser.ml" +# 12762 "parsing/parser.ml" in -# 2540 "parsing/parser.mly" +# 2557 "parsing/parser.mly" ( _1, _2 ) -# 12582 "parsing/parser.ml" +# 12768 "parsing/parser.ml" in -# 2524 "parsing/parser.mly" +# 2541 "parsing/parser.mly" ( array, d, Paren, i, r ) -# 12588 "parsing/parser.ml" +# 12774 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_v_, _startpos_array_) in @@ -12592,9 +12778,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2567 "parsing/parser.mly" +# 2584 "parsing/parser.mly" ( mk_indexop_expr user_indexing_operators ~loc:_sloc _1 ) -# 12598 "parsing/parser.ml" +# 12784 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -12654,9 +12840,9 @@ module Tables = struct let es : (Parsetree.expression list) = Obj.magic es in let _3 : unit = Obj.magic _3 in let _2 : ( -# 907 "parsing/parser.mly" +# 916 "parsing/parser.mly" (string) -# 12660 "parsing/parser.ml" +# 12846 "parsing/parser.ml" ) = Obj.magic _2 in let array : (Parsetree.expression) = Obj.magic array in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in @@ -12664,31 +12850,31 @@ module Tables = struct let _endpos = _endpos_v_ in let _v : (Parsetree.expression) = let _1 = let r = -# 2566 "parsing/parser.mly" +# 2583 "parsing/parser.mly" (Some v) -# 12670 "parsing/parser.ml" +# 12856 "parsing/parser.ml" in let i = -# 3086 "parsing/parser.mly" +# 3119 "parsing/parser.mly" ( es ) -# 12675 "parsing/parser.ml" +# 12861 "parsing/parser.ml" in let d = let _1 = # 124 "" ( None ) -# 12681 "parsing/parser.ml" +# 12867 "parsing/parser.ml" in -# 2540 "parsing/parser.mly" +# 2557 "parsing/parser.mly" ( _1, _2 ) -# 12686 "parsing/parser.ml" +# 12872 "parsing/parser.ml" in -# 2526 "parsing/parser.mly" +# 2543 "parsing/parser.mly" ( array, d, Brace, i, r ) -# 12692 "parsing/parser.ml" +# 12878 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_v_, _startpos_array_) in @@ -12696,9 +12882,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2567 "parsing/parser.mly" +# 2584 "parsing/parser.mly" ( mk_indexop_expr user_indexing_operators ~loc:_sloc _1 ) -# 12702 "parsing/parser.ml" +# 12888 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -12770,9 +12956,9 @@ module Tables = struct let es : (Parsetree.expression list) = Obj.magic es in let _3 : unit = Obj.magic _3 in let _2 : ( -# 907 "parsing/parser.mly" +# 916 "parsing/parser.mly" (string) -# 12776 "parsing/parser.ml" +# 12962 "parsing/parser.ml" ) = Obj.magic _2 in let _2_inlined1 : (Longident.t) = Obj.magic _2_inlined1 in let _1 : unit = Obj.magic _1 in @@ -12782,39 +12968,39 @@ module Tables = struct let _endpos = _endpos_v_ in let _v : (Parsetree.expression) = let _1 = let r = -# 2566 "parsing/parser.mly" +# 2583 "parsing/parser.mly" (Some v) -# 12788 "parsing/parser.ml" +# 12974 "parsing/parser.ml" in let i = -# 3086 "parsing/parser.mly" +# 3119 "parsing/parser.mly" ( es ) -# 12793 "parsing/parser.ml" +# 12979 "parsing/parser.ml" in let d = let _1 = let _2 = _2_inlined1 in let x = -# 2540 "parsing/parser.mly" +# 2557 "parsing/parser.mly" (_2) -# 12801 "parsing/parser.ml" +# 12987 "parsing/parser.ml" in # 126 "" ( Some x ) -# 12806 "parsing/parser.ml" +# 12992 "parsing/parser.ml" in -# 2540 "parsing/parser.mly" +# 2557 "parsing/parser.mly" ( _1, _2 ) -# 12812 "parsing/parser.ml" +# 12998 "parsing/parser.ml" in -# 2526 "parsing/parser.mly" +# 2543 "parsing/parser.mly" ( array, d, Brace, i, r ) -# 12818 "parsing/parser.ml" +# 13004 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_v_, _startpos_array_) in @@ -12822,9 +13008,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2567 "parsing/parser.mly" +# 2584 "parsing/parser.mly" ( mk_indexop_expr user_indexing_operators ~loc:_sloc _1 ) -# 12828 "parsing/parser.ml" +# 13014 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -12884,9 +13070,9 @@ module Tables = struct let es : (Parsetree.expression list) = Obj.magic es in let _3 : unit = Obj.magic _3 in let _2 : ( -# 907 "parsing/parser.mly" +# 916 "parsing/parser.mly" (string) -# 12890 "parsing/parser.ml" +# 13076 "parsing/parser.ml" ) = Obj.magic _2 in let array : (Parsetree.expression) = Obj.magic array in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in @@ -12894,31 +13080,31 @@ module Tables = struct let _endpos = _endpos_v_ in let _v : (Parsetree.expression) = let _1 = let r = -# 2566 "parsing/parser.mly" +# 2583 "parsing/parser.mly" (Some v) -# 12900 "parsing/parser.ml" +# 13086 "parsing/parser.ml" in let i = -# 3086 "parsing/parser.mly" +# 3119 "parsing/parser.mly" ( es ) -# 12905 "parsing/parser.ml" +# 13091 "parsing/parser.ml" in let d = let _1 = # 124 "" ( None ) -# 12911 "parsing/parser.ml" +# 13097 "parsing/parser.ml" in -# 2540 "parsing/parser.mly" +# 2557 "parsing/parser.mly" ( _1, _2 ) -# 12916 "parsing/parser.ml" +# 13102 "parsing/parser.ml" in -# 2528 "parsing/parser.mly" +# 2545 "parsing/parser.mly" ( array, d, Bracket, i, r ) -# 12922 "parsing/parser.ml" +# 13108 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_v_, _startpos_array_) in @@ -12926,9 +13112,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2567 "parsing/parser.mly" +# 2584 "parsing/parser.mly" ( mk_indexop_expr user_indexing_operators ~loc:_sloc _1 ) -# 12932 "parsing/parser.ml" +# 13118 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -13000,9 +13186,9 @@ module Tables = struct let es : (Parsetree.expression list) = Obj.magic es in let _3 : unit = Obj.magic _3 in let _2 : ( -# 907 "parsing/parser.mly" +# 916 "parsing/parser.mly" (string) -# 13006 "parsing/parser.ml" +# 13192 "parsing/parser.ml" ) = Obj.magic _2 in let _2_inlined1 : (Longident.t) = Obj.magic _2_inlined1 in let _1 : unit = Obj.magic _1 in @@ -13012,39 +13198,39 @@ module Tables = struct let _endpos = _endpos_v_ in let _v : (Parsetree.expression) = let _1 = let r = -# 2566 "parsing/parser.mly" +# 2583 "parsing/parser.mly" (Some v) -# 13018 "parsing/parser.ml" +# 13204 "parsing/parser.ml" in let i = -# 3086 "parsing/parser.mly" +# 3119 "parsing/parser.mly" ( es ) -# 13023 "parsing/parser.ml" +# 13209 "parsing/parser.ml" in let d = let _1 = let _2 = _2_inlined1 in let x = -# 2540 "parsing/parser.mly" +# 2557 "parsing/parser.mly" (_2) -# 13031 "parsing/parser.ml" +# 13217 "parsing/parser.ml" in # 126 "" ( Some x ) -# 13036 "parsing/parser.ml" +# 13222 "parsing/parser.ml" in -# 2540 "parsing/parser.mly" +# 2557 "parsing/parser.mly" ( _1, _2 ) -# 13042 "parsing/parser.ml" +# 13228 "parsing/parser.ml" in -# 2528 "parsing/parser.mly" +# 2545 "parsing/parser.mly" ( array, d, Bracket, i, r ) -# 13048 "parsing/parser.ml" +# 13234 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_v_, _startpos_array_) in @@ -13052,9 +13238,226 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2567 "parsing/parser.mly" +# 2584 "parsing/parser.mly" ( mk_indexop_expr user_indexing_operators ~loc:_sloc _1 ) -# 13058 "parsing/parser.ml" +# 13244 "parsing/parser.ml" + in + { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = Obj.repr _v; + MenhirLib.EngineTypes.startp = _startpos; + MenhirLib.EngineTypes.endp = _endpos; + MenhirLib.EngineTypes.next = _menhir_stack; + }); + (fun _menhir_env -> + let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in + let { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _7; + MenhirLib.EngineTypes.startp = _startpos__7_; + MenhirLib.EngineTypes.endp = _endpos__7_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _6; + MenhirLib.EngineTypes.startp = _startpos__6_; + MenhirLib.EngineTypes.endp = _endpos__6_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _5; + MenhirLib.EngineTypes.startp = _startpos__5_; + MenhirLib.EngineTypes.endp = _endpos__5_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _4; + MenhirLib.EngineTypes.startp = _startpos__4_; + MenhirLib.EngineTypes.endp = _endpos__4_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _3; + MenhirLib.EngineTypes.startp = _startpos__3_; + MenhirLib.EngineTypes.endp = _endpos__3_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _1_inlined2; + MenhirLib.EngineTypes.startp = _startpos__1_inlined2_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined2_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _1_inlined1; + MenhirLib.EngineTypes.startp = _startpos__1_inlined1_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined1_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + }; + }; + }; + }; + }; + }; + }; + } = _menhir_stack in + let _7 : (Parsetree.expression) = Obj.magic _7 in + let _6 : unit = Obj.magic _6 in + let _5 : ((string Asttypes.loc * Asttypes.layout_annotation option) list) = Obj.magic _5 in + let _4 : unit = Obj.magic _4 in + let _3 : unit = Obj.magic _3 in + let _1_inlined2 : (Parsetree.attributes) = Obj.magic _1_inlined2 in + let _1_inlined1 : (string Asttypes.loc option) = Obj.magic _1_inlined1 in + let _1 : unit = Obj.magic _1 in + let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in + let _startpos = _startpos__1_ in + let _endpos = _endpos__7_ in + let _v : (Parsetree.expression) = let _2 = + let (_1_inlined1, _1) = (_1_inlined2, _1_inlined1) in + let _2 = + let _1 = _1_inlined1 in + +# 4476 "parsing/parser.mly" + ( _1 ) +# 13322 "parsing/parser.ml" + + in + +# 4489 "parsing/parser.mly" + ( _1, _2 ) +# 13328 "parsing/parser.ml" + + in + let _endpos = _endpos__7_ in + let _symbolstartpos = _startpos__1_ in + let _sloc = (_symbolstartpos, _endpos) in + +# 2586 "parsing/parser.mly" + ( let loc = _sloc in + wrap_exp_attrs ~loc (mk_newtypes ~loc _5 _7) _2 ) +# 13338 "parsing/parser.ml" + in + { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = Obj.repr _v; + MenhirLib.EngineTypes.startp = _startpos; + MenhirLib.EngineTypes.endp = _endpos; + MenhirLib.EngineTypes.next = _menhir_stack; + }); + (fun _menhir_env -> + let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in + let { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _9; + MenhirLib.EngineTypes.startp = _startpos__9_; + MenhirLib.EngineTypes.endp = _endpos__9_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _8; + MenhirLib.EngineTypes.startp = _startpos__8_; + MenhirLib.EngineTypes.endp = _endpos__8_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _7; + MenhirLib.EngineTypes.startp = _startpos__7_; + MenhirLib.EngineTypes.endp = _endpos__7_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _6; + MenhirLib.EngineTypes.startp = _startpos__6_; + MenhirLib.EngineTypes.endp = _endpos__6_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _1_inlined3; + MenhirLib.EngineTypes.startp = _startpos__1_inlined3_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined3_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _4; + MenhirLib.EngineTypes.startp = _startpos__4_; + MenhirLib.EngineTypes.endp = _endpos__4_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _3; + MenhirLib.EngineTypes.startp = _startpos__3_; + MenhirLib.EngineTypes.endp = _endpos__3_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _1_inlined2; + MenhirLib.EngineTypes.startp = _startpos__1_inlined2_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined2_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _1_inlined1; + MenhirLib.EngineTypes.startp = _startpos__1_inlined1_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined1_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + }; + }; + }; + }; + }; + }; + }; + }; + }; + } = _menhir_stack in + let _9 : (Parsetree.expression) = Obj.magic _9 in + let _8 : unit = Obj.magic _8 in + let _7 : (Asttypes.layout_annotation) = Obj.magic _7 in + let _6 : unit = Obj.magic _6 in + let _1_inlined3 : ( +# 937 "parsing/parser.mly" + (string) +# 13417 "parsing/parser.ml" + ) = Obj.magic _1_inlined3 in + let _4 : unit = Obj.magic _4 in + let _3 : unit = Obj.magic _3 in + let _1_inlined2 : (Parsetree.attributes) = Obj.magic _1_inlined2 in + let _1_inlined1 : (string Asttypes.loc option) = Obj.magic _1_inlined1 in + let _1 : unit = Obj.magic _1 in + let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in + let _startpos = _startpos__1_ in + let _endpos = _endpos__9_ in + let _v : (Parsetree.expression) = let _5 = + let (_endpos__1_, _startpos__1_, _1) = (_endpos__1_inlined3_, _startpos__1_inlined3_, _1_inlined3) in + let _endpos = _endpos__1_ in + let _symbolstartpos = _startpos__1_ in + let _sloc = (_symbolstartpos, _endpos) in + +# 1123 "parsing/parser.mly" + ( mkrhs _1 _sloc ) +# 13435 "parsing/parser.ml" + + in + let _2 = + let (_1_inlined1, _1) = (_1_inlined2, _1_inlined1) in + let _2 = + let _1 = _1_inlined1 in + +# 4476 "parsing/parser.mly" + ( _1 ) +# 13445 "parsing/parser.ml" + + in + +# 4489 "parsing/parser.mly" + ( _1, _2 ) +# 13451 "parsing/parser.ml" + + in + let _endpos = _endpos__9_ in + let _symbolstartpos = _startpos__1_ in + let _sloc = (_symbolstartpos, _endpos) in + +# 2589 "parsing/parser.mly" + ( let loc = _sloc in + wrap_exp_attrs ~loc (mk_newtypes ~loc:_sloc [_5, Some _7] _9) _2 ) +# 13461 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -13084,9 +13487,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (Parsetree.expression) = -# 2569 "parsing/parser.mly" +# 2592 "parsing/parser.mly" ( Exp.attr _1 _2 ) -# 13090 "parsing/parser.ml" +# 13493 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -13110,9 +13513,9 @@ module Tables = struct let _endpos = _endpos__1_ in let _v : (Parsetree.expression) = let _loc__1_ = (_startpos__1_, _endpos__1_) in -# 2572 "parsing/parser.mly" +# 2595 "parsing/parser.mly" ( not_expecting _loc__1_ "wildcard \"_\"" ) -# 13116 "parsing/parser.ml" +# 13519 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -13146,9 +13549,9 @@ module Tables = struct let _loc__1_ = (_startpos__1_, _endpos__1_) in let _sloc = (_symbolstartpos, _endpos) in -# 2575 "parsing/parser.mly" +# 2598 "parsing/parser.mly" ( mkexp_stack ~loc:_sloc ~kwd_loc:(_loc__1_) _2 ) -# 13152 "parsing/parser.ml" +# 13555 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -13182,9 +13585,9 @@ module Tables = struct let _loc__1_ = (_startpos__1_, _endpos__1_) in let _sloc = (_symbolstartpos, _endpos) in -# 2577 "parsing/parser.mly" +# 2600 "parsing/parser.mly" ( mkexp_exclave ~loc:_sloc ~kwd_loc:(_loc__1_) _2 ) -# 13188 "parsing/parser.ml" +# 13591 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -13200,9 +13603,9 @@ module Tables = struct let _startpos = _menhir_stack.MenhirLib.EngineTypes.endp in let _endpos = _startpos in let _v : (string Asttypes.loc option) = -# 4374 "parsing/parser.mly" +# 4479 "parsing/parser.mly" ( None ) -# 13206 "parsing/parser.ml" +# 13609 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -13232,9 +13635,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (string Asttypes.loc option) = -# 4375 "parsing/parser.mly" +# 4480 "parsing/parser.mly" ( Some _2 ) -# 13238 "parsing/parser.ml" +# 13641 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -13278,9 +13681,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__4_ in let _v : (Parsetree.extension) = -# 4387 "parsing/parser.mly" +# 4492 "parsing/parser.mly" ( (_2, _3) ) -# 13284 "parsing/parser.ml" +# 13687 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -13299,9 +13702,9 @@ module Tables = struct MenhirLib.EngineTypes.next = _menhir_stack; } = _menhir_stack in let _1 : ( -# 970 "parsing/parser.mly" +# 979 "parsing/parser.mly" (string * Location.t * string * Location.t * string option) -# 13305 "parsing/parser.ml" +# 13708 "parsing/parser.ml" ) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in @@ -13310,9 +13713,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 4389 "parsing/parser.mly" +# 4494 "parsing/parser.mly" ( mk_quotedext ~loc:_sloc _1 ) -# 13316 "parsing/parser.ml" +# 13719 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -13365,9 +13768,9 @@ module Tables = struct let _v : (Parsetree.extension_constructor) = let attrs = let _1 = _1_inlined3 in -# 4371 "parsing/parser.mly" +# 4476 "parsing/parser.mly" ( _1 ) -# 13371 "parsing/parser.ml" +# 13774 "parsing/parser.ml" in let _endpos_attrs_ = _endpos__1_inlined3_ in @@ -13377,9 +13780,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1114 "parsing/parser.mly" +# 1123 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 13383 "parsing/parser.ml" +# 13786 "parsing/parser.ml" in let cid = @@ -13388,19 +13791,19 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1114 "parsing/parser.mly" +# 1123 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 13394 "parsing/parser.ml" +# 13797 "parsing/parser.ml" in let _endpos = _endpos_attrs_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 3658 "parsing/parser.mly" +# 3744 "parsing/parser.mly" ( let info = symbol_info _endpos in Te.rebind cid lid ~attrs ~loc:(make_loc _sloc) ~info ) -# 13404 "parsing/parser.ml" +# 13807 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -13446,9 +13849,9 @@ module Tables = struct let _v : (Parsetree.extension_constructor) = let attrs = let _1 = _1_inlined2 in -# 4371 "parsing/parser.mly" +# 4476 "parsing/parser.mly" ( _1 ) -# 13452 "parsing/parser.ml" +# 13855 "parsing/parser.ml" in let _endpos_attrs_ = _endpos__1_inlined2_ in @@ -13458,9 +13861,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1114 "parsing/parser.mly" +# 1123 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 13464 "parsing/parser.ml" +# 13867 "parsing/parser.ml" in let cid = @@ -13468,25 +13871,25 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1114 "parsing/parser.mly" +# 1123 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 13474 "parsing/parser.ml" +# 13877 "parsing/parser.ml" in let _startpos_cid_ = _startpos__1_ in let _1 = -# 4182 "parsing/parser.mly" +# 4287 "parsing/parser.mly" ( () ) -# 13481 "parsing/parser.ml" +# 13884 "parsing/parser.ml" in let _endpos = _endpos_attrs_ in let _symbolstartpos = _startpos_cid_ in let _sloc = (_symbolstartpos, _endpos) in -# 3658 "parsing/parser.mly" +# 3744 "parsing/parser.mly" ( let info = symbol_info _endpos in Te.rebind cid lid ~attrs ~loc:(make_loc _sloc) ~info ) -# 13490 "parsing/parser.ml" +# 13893 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -13533,10 +13936,10 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 4362 "parsing/parser.mly" +# 4467 "parsing/parser.mly" ( mark_symbol_docs _sloc; mk_attr ~loc:(make_loc _sloc) _2 _3 ) -# 13540 "parsing/parser.ml" +# 13943 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -13552,14 +13955,14 @@ module Tables = struct let _startpos = _menhir_stack.MenhirLib.EngineTypes.endp in let _endpos = _startpos in let _v : ((Parsetree.core_type * (Asttypes.variance * Asttypes.injectivity)) list) = let params = -# 2290 "parsing/parser.mly" +# 2302 "parsing/parser.mly" ( [] ) -# 13558 "parsing/parser.ml" +# 13961 "parsing/parser.ml" in -# 2115 "parsing/parser.mly" +# 2127 "parsing/parser.mly" ( params ) -# 13563 "parsing/parser.ml" +# 13966 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -13600,24 +14003,24 @@ module Tables = struct let xs = # 253 "" ( List.rev xs ) -# 13604 "parsing/parser.ml" +# 14007 "parsing/parser.ml" in -# 1248 "parsing/parser.mly" +# 1260 "parsing/parser.mly" ( xs ) -# 13609 "parsing/parser.ml" +# 14012 "parsing/parser.ml" in -# 2292 "parsing/parser.mly" +# 2304 "parsing/parser.mly" ( params ) -# 13615 "parsing/parser.ml" +# 14018 "parsing/parser.ml" in -# 2115 "parsing/parser.mly" +# 2127 "parsing/parser.mly" ( params ) -# 13621 "parsing/parser.ml" +# 14024 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -13640,9 +14043,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Parsetree.expression) = -# 2991 "parsing/parser.mly" +# 3018 "parsing/parser.mly" ( _1 ) -# 13646 "parsing/parser.ml" +# 14049 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -13682,9 +14085,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2993 "parsing/parser.mly" +# 3020 "parsing/parser.mly" ( mkexp_constraint ~loc:_sloc _3 _1 ) -# 13688 "parsing/parser.ml" +# 14091 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -13714,9 +14117,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (Parsetree.expression) = -# 3031 "parsing/parser.mly" +# 3062 "parsing/parser.mly" ( _2 ) -# 13720 "parsing/parser.ml" +# 14123 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -13761,24 +14164,24 @@ module Tables = struct let _endpos = _endpos__4_ in let _v : (Parsetree.expression) = let _1 = let _1 = -# 3033 "parsing/parser.mly" +# 3064 "parsing/parser.mly" ( Pexp_constraint (_4, _2) ) -# 13767 "parsing/parser.ml" +# 14170 "parsing/parser.ml" in let _endpos__1_ = _endpos__4_ in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1147 "parsing/parser.mly" +# 1156 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) -# 13776 "parsing/parser.ml" +# 14179 "parsing/parser.ml" in -# 3034 "parsing/parser.mly" +# 3065 "parsing/parser.mly" ( _1 ) -# 13782 "parsing/parser.ml" +# 14185 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -13811,12 +14214,12 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 3037 "parsing/parser.mly" +# 3068 "parsing/parser.mly" ( let (l,o,p) = _1 in ghexp ~loc:_sloc (Pexp_fun(l, o, p, _2)) ) -# 13820 "parsing/parser.ml" +# 14223 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -13839,9 +14242,9 @@ module Tables = struct MenhirLib.EngineTypes.endp = _endpos__4_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = xs; - MenhirLib.EngineTypes.startp = _startpos_xs_; - MenhirLib.EngineTypes.endp = _endpos_xs_; + MenhirLib.EngineTypes.semv = _3; + MenhirLib.EngineTypes.startp = _startpos__3_; + MenhirLib.EngineTypes.endp = _endpos__3_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; MenhirLib.EngineTypes.semv = _2; @@ -13860,24 +14263,104 @@ module Tables = struct } = _menhir_stack in let _5 : (Parsetree.expression) = Obj.magic _5 in let _4 : unit = Obj.magic _4 in - let xs : (string Asttypes.loc list) = Obj.magic xs in + let _3 : ((string Asttypes.loc * Asttypes.layout_annotation option) list) = Obj.magic _3 in let _2 : unit = Obj.magic _2 in let _1 : unit = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in let _endpos = _endpos__5_ in - let _v : (Parsetree.expression) = let _3 = -# 2873 "parsing/parser.mly" - ( xs ) -# 13873 "parsing/parser.ml" - in - let _endpos = _endpos__5_ in + let _v : (Parsetree.expression) = let _endpos = _endpos__5_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 3042 "parsing/parser.mly" +# 3073 "parsing/parser.mly" ( mk_newtypes ~loc:_sloc _3 _5 ) -# 13881 "parsing/parser.ml" +# 14279 "parsing/parser.ml" + in + { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = Obj.repr _v; + MenhirLib.EngineTypes.startp = _startpos; + MenhirLib.EngineTypes.endp = _endpos; + MenhirLib.EngineTypes.next = _menhir_stack; + }); + (fun _menhir_env -> + let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in + let { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _7; + MenhirLib.EngineTypes.startp = _startpos__7_; + MenhirLib.EngineTypes.endp = _endpos__7_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _6; + MenhirLib.EngineTypes.startp = _startpos__6_; + MenhirLib.EngineTypes.endp = _endpos__6_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _5; + MenhirLib.EngineTypes.startp = _startpos__5_; + MenhirLib.EngineTypes.endp = _endpos__5_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _4; + MenhirLib.EngineTypes.startp = _startpos__4_; + MenhirLib.EngineTypes.endp = _endpos__4_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _1_inlined1; + MenhirLib.EngineTypes.startp = _startpos__1_inlined1_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined1_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _2; + MenhirLib.EngineTypes.startp = _startpos__2_; + MenhirLib.EngineTypes.endp = _endpos__2_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + }; + }; + }; + }; + }; + }; + } = _menhir_stack in + let _7 : (Parsetree.expression) = Obj.magic _7 in + let _6 : unit = Obj.magic _6 in + let _5 : (Asttypes.layout_annotation) = Obj.magic _5 in + let _4 : unit = Obj.magic _4 in + let _1_inlined1 : ( +# 937 "parsing/parser.mly" + (string) +# 14340 "parsing/parser.ml" + ) = Obj.magic _1_inlined1 in + let _2 : unit = Obj.magic _2 in + let _1 : unit = Obj.magic _1 in + let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in + let _startpos = _startpos__1_ in + let _endpos = _endpos__7_ in + let _v : (Parsetree.expression) = let _3 = + let (_endpos__1_, _startpos__1_, _1) = (_endpos__1_inlined1_, _startpos__1_inlined1_, _1_inlined1) in + let _endpos = _endpos__1_ in + let _symbolstartpos = _startpos__1_ in + let _sloc = (_symbolstartpos, _endpos) in + +# 1123 "parsing/parser.mly" + ( mkrhs _1 _sloc ) +# 14355 "parsing/parser.ml" + + in + let _endpos = _endpos__7_ in + let _symbolstartpos = _startpos__1_ in + let _sloc = (_symbolstartpos, _endpos) in + +# 3075 "parsing/parser.mly" + ( mk_newtypes ~loc:_sloc [_3, Some _5] _7 ) +# 14364 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -13900,9 +14383,9 @@ module Tables = struct let _startpos = _startpos_ty_ in let _endpos = _endpos_ty_ in let _v : (Parsetree.core_type) = -# 3774 "parsing/parser.mly" +# 3873 "parsing/parser.mly" ( ty ) -# 13906 "parsing/parser.ml" +# 14389 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -13925,9 +14408,9 @@ module Tables = struct let _startpos = _startpos_ty_ in let _endpos = _endpos_ty_ in let _v : (Parsetree.core_type) = -# 3776 "parsing/parser.mly" +# 3875 "parsing/parser.mly" ( ty ) -# 13931 "parsing/parser.ml" +# 14414 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -13958,9 +14441,9 @@ module Tables = struct let _endpos = _endpos__2_ in let _v : (Lexing.position * Parsetree.functor_parameter) = let _startpos = _startpos__1_ in -# 1502 "parsing/parser.mly" +# 1514 "parsing/parser.mly" ( _startpos, Unit ) -# 13964 "parsing/parser.ml" +# 14447 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -14016,16 +14499,16 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1114 "parsing/parser.mly" +# 1123 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 14022 "parsing/parser.ml" +# 14505 "parsing/parser.ml" in let _startpos = _startpos__1_ in -# 1505 "parsing/parser.mly" +# 1517 "parsing/parser.mly" ( _startpos, Named (x, mty) ) -# 14029 "parsing/parser.ml" +# 14512 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -14040,11 +14523,11 @@ module Tables = struct let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _menhir_stack.MenhirLib.EngineTypes.endp in let _endpos = _startpos in - let _v : (string Asttypes.loc list * Parsetree.constructor_arguments * - Parsetree.core_type option) = -# 3560 "parsing/parser.mly" + let _v : ((Asttypes.label Asttypes.loc * Asttypes.layout_annotation option) list * + Parsetree.constructor_arguments * Parsetree.core_type option) = +# 3645 "parsing/parser.mly" ( ([],Pcstr_tuple [],None) ) -# 14048 "parsing/parser.ml" +# 14531 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -14073,11 +14556,11 @@ module Tables = struct let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in - let _v : (string Asttypes.loc list * Parsetree.constructor_arguments * - Parsetree.core_type option) = -# 3561 "parsing/parser.mly" + let _v : ((Asttypes.label Asttypes.loc * Asttypes.layout_annotation option) list * + Parsetree.constructor_arguments * Parsetree.core_type option) = +# 3646 "parsing/parser.mly" ( ([],_2,None) ) -# 14081 "parsing/parser.ml" +# 14564 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -14120,11 +14603,11 @@ module Tables = struct let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in let _endpos = _endpos__4_ in - let _v : (string Asttypes.loc list * Parsetree.constructor_arguments * - Parsetree.core_type option) = -# 3563 "parsing/parser.mly" + let _v : ((Asttypes.label Asttypes.loc * Asttypes.layout_annotation option) list * + Parsetree.constructor_arguments * Parsetree.core_type option) = +# 3648 "parsing/parser.mly" ( ([],_2,Some _4) ) -# 14128 "parsing/parser.ml" +# 14611 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -14176,35 +14659,35 @@ module Tables = struct let _5 : unit = Obj.magic _5 in let _4 : (Parsetree.constructor_arguments) = Obj.magic _4 in let _3 : unit = Obj.magic _3 in - let xs : (Asttypes.label Asttypes.loc list) = Obj.magic xs in + let xs : ((Asttypes.label Asttypes.loc * Asttypes.layout_annotation option) list) = Obj.magic xs in let _1 : unit = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in let _endpos = _endpos__6_ in - let _v : (string Asttypes.loc list * Parsetree.constructor_arguments * - Parsetree.core_type option) = let _2 = + let _v : ((Asttypes.label Asttypes.loc * Asttypes.layout_annotation option) list * + Parsetree.constructor_arguments * Parsetree.core_type option) = let _2 = let _1 = let xs = # 253 "" ( List.rev xs ) -# 14191 "parsing/parser.ml" +# 14674 "parsing/parser.ml" in -# 1216 "parsing/parser.mly" +# 1228 "parsing/parser.mly" ( xs ) -# 14196 "parsing/parser.ml" +# 14679 "parsing/parser.ml" in -# 3709 "parsing/parser.mly" +# 3798 "parsing/parser.mly" ( _1 ) -# 14202 "parsing/parser.ml" +# 14685 "parsing/parser.ml" in -# 3566 "parsing/parser.mly" +# 3651 "parsing/parser.mly" ( (_2,_4,Some _6) ) -# 14208 "parsing/parser.ml" +# 14691 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -14233,11 +14716,11 @@ module Tables = struct let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in - let _v : (string Asttypes.loc list * Parsetree.constructor_arguments * - Parsetree.core_type option) = -# 3568 "parsing/parser.mly" + let _v : ((Asttypes.label Asttypes.loc * Asttypes.layout_annotation option) list * + Parsetree.constructor_arguments * Parsetree.core_type option) = +# 3653 "parsing/parser.mly" ( ([],Pcstr_tuple [],Some _2) ) -# 14241 "parsing/parser.ml" +# 14724 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -14275,35 +14758,35 @@ module Tables = struct } = _menhir_stack in let _4 : (Parsetree.core_type) = Obj.magic _4 in let _3 : unit = Obj.magic _3 in - let xs : (Asttypes.label Asttypes.loc list) = Obj.magic xs in + let xs : ((Asttypes.label Asttypes.loc * Asttypes.layout_annotation option) list) = Obj.magic xs in let _1 : unit = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in let _endpos = _endpos__4_ in - let _v : (string Asttypes.loc list * Parsetree.constructor_arguments * - Parsetree.core_type option) = let _2 = + let _v : ((Asttypes.label Asttypes.loc * Asttypes.layout_annotation option) list * + Parsetree.constructor_arguments * Parsetree.core_type option) = let _2 = let _1 = let xs = # 253 "" ( List.rev xs ) -# 14290 "parsing/parser.ml" +# 14773 "parsing/parser.ml" in -# 1216 "parsing/parser.mly" +# 1228 "parsing/parser.mly" ( xs ) -# 14295 "parsing/parser.ml" +# 14778 "parsing/parser.ml" in -# 3709 "parsing/parser.mly" +# 3798 "parsing/parser.mly" ( _1 ) -# 14301 "parsing/parser.ml" +# 14784 "parsing/parser.ml" in -# 3570 "parsing/parser.mly" +# 3655 "parsing/parser.mly" ( (_2,Pcstr_tuple [],Some _4) ) -# 14307 "parsing/parser.ml" +# 14790 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -14340,21 +14823,22 @@ module Tables = struct }; } = _menhir_stack in let _1_inlined2 : (Parsetree.attributes) = Obj.magic _1_inlined2 in - let vars_args_res : (string Asttypes.loc list * Parsetree.constructor_arguments * - Parsetree.core_type option) = Obj.magic vars_args_res in + let vars_args_res : ((Asttypes.label Asttypes.loc * Asttypes.layout_annotation option) list * + Parsetree.constructor_arguments * Parsetree.core_type option) = Obj.magic vars_args_res in let _1_inlined1 : (Asttypes.label) = Obj.magic _1_inlined1 in let _1 : unit = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in let _endpos = _endpos__1_inlined2_ in - let _v : (Ast_helper.str * string Asttypes.loc list * + let _v : (Ast_helper.str * + (Asttypes.label Asttypes.loc * Asttypes.layout_annotation option) list * Parsetree.constructor_arguments * Parsetree.core_type option * Parsetree.attributes * Location.t * Docstrings.info) = let attrs = let _1 = _1_inlined2 in -# 4371 "parsing/parser.mly" +# 4476 "parsing/parser.mly" ( _1 ) -# 14358 "parsing/parser.ml" +# 14842 "parsing/parser.ml" in let _endpos_attrs_ = _endpos__1_inlined2_ in @@ -14364,23 +14848,23 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1114 "parsing/parser.mly" +# 1123 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 14370 "parsing/parser.ml" +# 14854 "parsing/parser.ml" in let _endpos = _endpos_attrs_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 3508 "parsing/parser.mly" +# 3584 "parsing/parser.mly" ( let vars, args, res = vars_args_res in let info = symbol_info _endpos in let loc = make_loc _sloc in cid, vars, args, res, attrs, loc, info ) -# 14384 "parsing/parser.ml" +# 14868 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -14411,20 +14895,21 @@ module Tables = struct }; } = _menhir_stack in let _1_inlined1 : (Parsetree.attributes) = Obj.magic _1_inlined1 in - let vars_args_res : (string Asttypes.loc list * Parsetree.constructor_arguments * - Parsetree.core_type option) = Obj.magic vars_args_res in + let vars_args_res : ((Asttypes.label Asttypes.loc * Asttypes.layout_annotation option) list * + Parsetree.constructor_arguments * Parsetree.core_type option) = Obj.magic vars_args_res in let _1 : (Asttypes.label) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in let _endpos = _endpos__1_inlined1_ in - let _v : (Ast_helper.str * string Asttypes.loc list * + let _v : (Ast_helper.str * + (Asttypes.label Asttypes.loc * Asttypes.layout_annotation option) list * Parsetree.constructor_arguments * Parsetree.core_type option * Parsetree.attributes * Location.t * Docstrings.info) = let attrs = let _1 = _1_inlined1 in -# 4371 "parsing/parser.mly" +# 4476 "parsing/parser.mly" ( _1 ) -# 14428 "parsing/parser.ml" +# 14913 "parsing/parser.ml" in let _endpos_attrs_ = _endpos__1_inlined1_ in @@ -14433,29 +14918,29 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1114 "parsing/parser.mly" +# 1123 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 14439 "parsing/parser.ml" +# 14924 "parsing/parser.ml" in let _startpos_cid_ = _startpos__1_ in let _1 = -# 4182 "parsing/parser.mly" +# 4287 "parsing/parser.mly" ( () ) -# 14446 "parsing/parser.ml" +# 14931 "parsing/parser.ml" in let _endpos = _endpos_attrs_ in let _symbolstartpos = _startpos_cid_ in let _sloc = (_symbolstartpos, _endpos) in -# 3508 "parsing/parser.mly" +# 3584 "parsing/parser.mly" ( let vars, args, res = vars_args_res in let info = symbol_info _endpos in let loc = make_loc _sloc in cid, vars, args, res, attrs, loc, info ) -# 14459 "parsing/parser.ml" +# 14944 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -14488,30 +14973,36 @@ module Tables = struct MenhirLib.EngineTypes.endp = _endpos__1_inlined3_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _1_inlined2; - MenhirLib.EngineTypes.startp = _startpos__1_inlined2_; - MenhirLib.EngineTypes.endp = _endpos__1_inlined2_; + MenhirLib.EngineTypes.semv = layout; + MenhirLib.EngineTypes.startp = _startpos_layout_; + MenhirLib.EngineTypes.endp = _endpos_layout_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = params; - MenhirLib.EngineTypes.startp = _startpos_params_; - MenhirLib.EngineTypes.endp = _endpos_params_; + MenhirLib.EngineTypes.semv = _1_inlined2; + MenhirLib.EngineTypes.startp = _startpos__1_inlined2_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined2_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _1_inlined1; - MenhirLib.EngineTypes.startp = _startpos__1_inlined1_; - MenhirLib.EngineTypes.endp = _endpos__1_inlined1_; + MenhirLib.EngineTypes.semv = params; + MenhirLib.EngineTypes.startp = _startpos_params_; + MenhirLib.EngineTypes.endp = _endpos_params_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = ext; - MenhirLib.EngineTypes.startp = _startpos_ext_; - MenhirLib.EngineTypes.endp = _endpos_ext_; + MenhirLib.EngineTypes.semv = _1_inlined1; + MenhirLib.EngineTypes.startp = _startpos__1_inlined1_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined1_; MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; - MenhirLib.EngineTypes.next = _menhir_stack; + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = ext; + MenhirLib.EngineTypes.startp = _startpos_ext_; + MenhirLib.EngineTypes.endp = _endpos_ext_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + }; }; }; }; @@ -14525,10 +15016,11 @@ module Tables = struct let xs : ((Parsetree.core_type * Parsetree.core_type * Ast_helper.loc) list) = Obj.magic xs in let _2 : (Parsetree.type_kind * Asttypes.private_flag * Parsetree.core_type option) = Obj.magic _2 in let _1_inlined3 : unit = Obj.magic _1_inlined3 in + let layout : (Parsetree.attribute option) = Obj.magic layout in let _1_inlined2 : ( -# 928 "parsing/parser.mly" +# 937 "parsing/parser.mly" (string) -# 14532 "parsing/parser.ml" +# 15024 "parsing/parser.ml" ) = Obj.magic _1_inlined2 in let params : ((Parsetree.core_type * (Asttypes.variance * Asttypes.injectivity)) list) = Obj.magic params in let _1_inlined1 : (Parsetree.attributes) = Obj.magic _1_inlined1 in @@ -14541,9 +15033,9 @@ module Tables = struct Parsetree.type_declaration) = let attrs2 = let _1 = _1_inlined4 in -# 4367 "parsing/parser.mly" +# 4472 "parsing/parser.mly" ( _1 ) -# 14547 "parsing/parser.ml" +# 15039 "parsing/parser.ml" in let _endpos_attrs2_ = _endpos__1_inlined4_ in @@ -14552,24 +15044,24 @@ module Tables = struct let xs = # 253 "" ( List.rev xs ) -# 14556 "parsing/parser.ml" +# 15048 "parsing/parser.ml" in -# 1198 "parsing/parser.mly" +# 1210 "parsing/parser.mly" ( xs ) -# 14561 "parsing/parser.ml" +# 15053 "parsing/parser.ml" in -# 3398 "parsing/parser.mly" +# 3444 "parsing/parser.mly" ( _1 ) -# 14567 "parsing/parser.ml" +# 15059 "parsing/parser.ml" in let kind_priv_manifest = -# 3433 "parsing/parser.mly" +# 3479 "parsing/parser.mly" ( _2 ) -# 14573 "parsing/parser.ml" +# 15065 "parsing/parser.ml" in let id = let (_endpos__1_, _startpos__1_, _1) = (_endpos__1_inlined2_, _startpos__1_inlined2_, _1_inlined2) in @@ -14577,38 +15069,38 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1114 "parsing/parser.mly" +# 1123 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 14583 "parsing/parser.ml" +# 15075 "parsing/parser.ml" in let flag = -# 4202 "parsing/parser.mly" +# 4307 "parsing/parser.mly" ( Recursive ) -# 14589 "parsing/parser.ml" +# 15081 "parsing/parser.ml" in let attrs1 = let _1 = _1_inlined1 in -# 4371 "parsing/parser.mly" +# 4476 "parsing/parser.mly" ( _1 ) -# 14596 "parsing/parser.ml" +# 15088 "parsing/parser.ml" in let _endpos = _endpos_attrs2_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 3370 "parsing/parser.mly" +# 3415 "parsing/parser.mly" ( let (kind, priv, manifest) = kind_priv_manifest in let docs = symbol_docs _sloc in let attrs = attrs1 @ attrs2 in let loc = make_loc _sloc in (flag, ext), - Type.mk id ~params ~cstrs ~kind ~priv ?manifest ~attrs ~loc ~docs + Type.mk id ~params ?layout ~cstrs ~kind ~priv ?manifest ~attrs ~loc ~docs ) -# 14612 "parsing/parser.ml" +# 15104 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -14641,35 +15133,41 @@ module Tables = struct MenhirLib.EngineTypes.endp = _endpos__1_inlined4_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _1_inlined3; - MenhirLib.EngineTypes.startp = _startpos__1_inlined3_; - MenhirLib.EngineTypes.endp = _endpos__1_inlined3_; + MenhirLib.EngineTypes.semv = layout; + MenhirLib.EngineTypes.startp = _startpos_layout_; + MenhirLib.EngineTypes.endp = _endpos_layout_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = params; - MenhirLib.EngineTypes.startp = _startpos_params_; - MenhirLib.EngineTypes.endp = _endpos_params_; + MenhirLib.EngineTypes.semv = _1_inlined3; + MenhirLib.EngineTypes.startp = _startpos__1_inlined3_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined3_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _1_inlined2; - MenhirLib.EngineTypes.startp = _startpos__1_inlined2_; - MenhirLib.EngineTypes.endp = _endpos__1_inlined2_; + MenhirLib.EngineTypes.semv = params; + MenhirLib.EngineTypes.startp = _startpos_params_; + MenhirLib.EngineTypes.endp = _endpos_params_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _1_inlined1; - MenhirLib.EngineTypes.startp = _startpos__1_inlined1_; - MenhirLib.EngineTypes.endp = _endpos__1_inlined1_; + MenhirLib.EngineTypes.semv = _1_inlined2; + MenhirLib.EngineTypes.startp = _startpos__1_inlined2_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined2_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = ext; - MenhirLib.EngineTypes.startp = _startpos_ext_; - MenhirLib.EngineTypes.endp = _endpos_ext_; + MenhirLib.EngineTypes.semv = _1_inlined1; + MenhirLib.EngineTypes.startp = _startpos__1_inlined1_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined1_; MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; - MenhirLib.EngineTypes.next = _menhir_stack; + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = ext; + MenhirLib.EngineTypes.startp = _startpos_ext_; + MenhirLib.EngineTypes.endp = _endpos_ext_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + }; }; }; }; @@ -14684,10 +15182,11 @@ module Tables = struct let xs : ((Parsetree.core_type * Parsetree.core_type * Ast_helper.loc) list) = Obj.magic xs in let _2 : (Parsetree.type_kind * Asttypes.private_flag * Parsetree.core_type option) = Obj.magic _2 in let _1_inlined4 : unit = Obj.magic _1_inlined4 in + let layout : (Parsetree.attribute option) = Obj.magic layout in let _1_inlined3 : ( -# 928 "parsing/parser.mly" +# 937 "parsing/parser.mly" (string) -# 14691 "parsing/parser.ml" +# 15190 "parsing/parser.ml" ) = Obj.magic _1_inlined3 in let params : ((Parsetree.core_type * (Asttypes.variance * Asttypes.injectivity)) list) = Obj.magic params in let _1_inlined2 : unit = Obj.magic _1_inlined2 in @@ -14701,9 +15200,9 @@ module Tables = struct Parsetree.type_declaration) = let attrs2 = let _1 = _1_inlined5 in -# 4367 "parsing/parser.mly" +# 4472 "parsing/parser.mly" ( _1 ) -# 14707 "parsing/parser.ml" +# 15206 "parsing/parser.ml" in let _endpos_attrs2_ = _endpos__1_inlined5_ in @@ -14712,24 +15211,24 @@ module Tables = struct let xs = # 253 "" ( List.rev xs ) -# 14716 "parsing/parser.ml" +# 15215 "parsing/parser.ml" in -# 1198 "parsing/parser.mly" +# 1210 "parsing/parser.mly" ( xs ) -# 14721 "parsing/parser.ml" +# 15220 "parsing/parser.ml" in -# 3398 "parsing/parser.mly" +# 3444 "parsing/parser.mly" ( _1 ) -# 14727 "parsing/parser.ml" +# 15226 "parsing/parser.ml" in let kind_priv_manifest = -# 3433 "parsing/parser.mly" +# 3479 "parsing/parser.mly" ( _2 ) -# 14733 "parsing/parser.ml" +# 15232 "parsing/parser.ml" in let id = let (_endpos__1_, _startpos__1_, _1) = (_endpos__1_inlined3_, _startpos__1_inlined3_, _1_inlined3) in @@ -14737,9 +15236,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1114 "parsing/parser.mly" +# 1123 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 14743 "parsing/parser.ml" +# 15242 "parsing/parser.ml" in let flag = @@ -14748,33 +15247,33 @@ module Tables = struct let _startpos = _startpos__1_ in let _loc = (_startpos, _endpos) in -# 4204 "parsing/parser.mly" +# 4309 "parsing/parser.mly" ( not_expecting _loc "nonrec flag" ) -# 14754 "parsing/parser.ml" +# 15253 "parsing/parser.ml" in let attrs1 = let _1 = _1_inlined1 in -# 4371 "parsing/parser.mly" +# 4476 "parsing/parser.mly" ( _1 ) -# 14762 "parsing/parser.ml" +# 15261 "parsing/parser.ml" in let _endpos = _endpos_attrs2_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 3370 "parsing/parser.mly" +# 3415 "parsing/parser.mly" ( let (kind, priv, manifest) = kind_priv_manifest in let docs = symbol_docs _sloc in let attrs = attrs1 @ attrs2 in let loc = make_loc _sloc in (flag, ext), - Type.mk id ~params ~cstrs ~kind ~priv ?manifest ~attrs ~loc ~docs + Type.mk id ~params ?layout ~cstrs ~kind ~priv ?manifest ~attrs ~loc ~docs ) -# 14778 "parsing/parser.ml" +# 15277 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -14802,30 +15301,36 @@ module Tables = struct MenhirLib.EngineTypes.endp = _endpos_kind_priv_manifest_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _1_inlined2; - MenhirLib.EngineTypes.startp = _startpos__1_inlined2_; - MenhirLib.EngineTypes.endp = _endpos__1_inlined2_; + MenhirLib.EngineTypes.semv = layout; + MenhirLib.EngineTypes.startp = _startpos_layout_; + MenhirLib.EngineTypes.endp = _endpos_layout_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = params; - MenhirLib.EngineTypes.startp = _startpos_params_; - MenhirLib.EngineTypes.endp = _endpos_params_; + MenhirLib.EngineTypes.semv = _1_inlined2; + MenhirLib.EngineTypes.startp = _startpos__1_inlined2_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined2_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _1_inlined1; - MenhirLib.EngineTypes.startp = _startpos__1_inlined1_; - MenhirLib.EngineTypes.endp = _endpos__1_inlined1_; + MenhirLib.EngineTypes.semv = params; + MenhirLib.EngineTypes.startp = _startpos_params_; + MenhirLib.EngineTypes.endp = _endpos_params_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = ext; - MenhirLib.EngineTypes.startp = _startpos_ext_; - MenhirLib.EngineTypes.endp = _endpos_ext_; + MenhirLib.EngineTypes.semv = _1_inlined1; + MenhirLib.EngineTypes.startp = _startpos__1_inlined1_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined1_; MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; - MenhirLib.EngineTypes.next = _menhir_stack; + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = ext; + MenhirLib.EngineTypes.startp = _startpos_ext_; + MenhirLib.EngineTypes.endp = _endpos_ext_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + }; }; }; }; @@ -14837,10 +15342,11 @@ module Tables = struct let _1_inlined3 : (Parsetree.attributes) = Obj.magic _1_inlined3 in let xs : ((Parsetree.core_type * Parsetree.core_type * Ast_helper.loc) list) = Obj.magic xs in let kind_priv_manifest : (Parsetree.type_kind * Asttypes.private_flag * Parsetree.core_type option) = Obj.magic kind_priv_manifest in + let layout : (Parsetree.attribute option) = Obj.magic layout in let _1_inlined2 : ( -# 928 "parsing/parser.mly" +# 937 "parsing/parser.mly" (string) -# 14844 "parsing/parser.ml" +# 15350 "parsing/parser.ml" ) = Obj.magic _1_inlined2 in let params : ((Parsetree.core_type * (Asttypes.variance * Asttypes.injectivity)) list) = Obj.magic params in let _1_inlined1 : (Parsetree.attributes) = Obj.magic _1_inlined1 in @@ -14853,9 +15359,9 @@ module Tables = struct Parsetree.type_declaration) = let attrs2 = let _1 = _1_inlined3 in -# 4367 "parsing/parser.mly" +# 4472 "parsing/parser.mly" ( _1 ) -# 14859 "parsing/parser.ml" +# 15365 "parsing/parser.ml" in let _endpos_attrs2_ = _endpos__1_inlined3_ in @@ -14864,18 +15370,18 @@ module Tables = struct let xs = # 253 "" ( List.rev xs ) -# 14868 "parsing/parser.ml" +# 15374 "parsing/parser.ml" in -# 1198 "parsing/parser.mly" +# 1210 "parsing/parser.mly" ( xs ) -# 14873 "parsing/parser.ml" +# 15379 "parsing/parser.ml" in -# 3398 "parsing/parser.mly" +# 3444 "parsing/parser.mly" ( _1 ) -# 14879 "parsing/parser.ml" +# 15385 "parsing/parser.ml" in let id = @@ -14884,38 +15390,38 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1114 "parsing/parser.mly" +# 1123 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 14890 "parsing/parser.ml" +# 15396 "parsing/parser.ml" in let flag = -# 4198 "parsing/parser.mly" +# 4303 "parsing/parser.mly" ( Recursive ) -# 14896 "parsing/parser.ml" +# 15402 "parsing/parser.ml" in let attrs1 = let _1 = _1_inlined1 in -# 4371 "parsing/parser.mly" +# 4476 "parsing/parser.mly" ( _1 ) -# 14903 "parsing/parser.ml" +# 15409 "parsing/parser.ml" in let _endpos = _endpos_attrs2_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 3370 "parsing/parser.mly" +# 3415 "parsing/parser.mly" ( let (kind, priv, manifest) = kind_priv_manifest in let docs = symbol_docs _sloc in let attrs = attrs1 @ attrs2 in let loc = make_loc _sloc in (flag, ext), - Type.mk id ~params ~cstrs ~kind ~priv ?manifest ~attrs ~loc ~docs + Type.mk id ~params ?layout ~cstrs ~kind ~priv ?manifest ~attrs ~loc ~docs ) -# 14919 "parsing/parser.ml" +# 15425 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -14943,35 +15449,41 @@ module Tables = struct MenhirLib.EngineTypes.endp = _endpos_kind_priv_manifest_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _1_inlined3; - MenhirLib.EngineTypes.startp = _startpos__1_inlined3_; - MenhirLib.EngineTypes.endp = _endpos__1_inlined3_; + MenhirLib.EngineTypes.semv = layout; + MenhirLib.EngineTypes.startp = _startpos_layout_; + MenhirLib.EngineTypes.endp = _endpos_layout_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = params; - MenhirLib.EngineTypes.startp = _startpos_params_; - MenhirLib.EngineTypes.endp = _endpos_params_; + MenhirLib.EngineTypes.semv = _1_inlined3; + MenhirLib.EngineTypes.startp = _startpos__1_inlined3_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined3_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _1_inlined2; - MenhirLib.EngineTypes.startp = _startpos__1_inlined2_; - MenhirLib.EngineTypes.endp = _endpos__1_inlined2_; + MenhirLib.EngineTypes.semv = params; + MenhirLib.EngineTypes.startp = _startpos_params_; + MenhirLib.EngineTypes.endp = _endpos_params_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _1_inlined1; - MenhirLib.EngineTypes.startp = _startpos__1_inlined1_; - MenhirLib.EngineTypes.endp = _endpos__1_inlined1_; + MenhirLib.EngineTypes.semv = _1_inlined2; + MenhirLib.EngineTypes.startp = _startpos__1_inlined2_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined2_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = ext; - MenhirLib.EngineTypes.startp = _startpos_ext_; - MenhirLib.EngineTypes.endp = _endpos_ext_; + MenhirLib.EngineTypes.semv = _1_inlined1; + MenhirLib.EngineTypes.startp = _startpos__1_inlined1_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined1_; MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; - MenhirLib.EngineTypes.next = _menhir_stack; + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = ext; + MenhirLib.EngineTypes.startp = _startpos_ext_; + MenhirLib.EngineTypes.endp = _endpos_ext_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + }; }; }; }; @@ -14984,10 +15496,11 @@ module Tables = struct let _1_inlined4 : (Parsetree.attributes) = Obj.magic _1_inlined4 in let xs : ((Parsetree.core_type * Parsetree.core_type * Ast_helper.loc) list) = Obj.magic xs in let kind_priv_manifest : (Parsetree.type_kind * Asttypes.private_flag * Parsetree.core_type option) = Obj.magic kind_priv_manifest in + let layout : (Parsetree.attribute option) = Obj.magic layout in let _1_inlined3 : ( -# 928 "parsing/parser.mly" +# 937 "parsing/parser.mly" (string) -# 14991 "parsing/parser.ml" +# 15504 "parsing/parser.ml" ) = Obj.magic _1_inlined3 in let params : ((Parsetree.core_type * (Asttypes.variance * Asttypes.injectivity)) list) = Obj.magic params in let _1_inlined2 : unit = Obj.magic _1_inlined2 in @@ -15001,9 +15514,9 @@ module Tables = struct Parsetree.type_declaration) = let attrs2 = let _1 = _1_inlined4 in -# 4367 "parsing/parser.mly" +# 4472 "parsing/parser.mly" ( _1 ) -# 15007 "parsing/parser.ml" +# 15520 "parsing/parser.ml" in let _endpos_attrs2_ = _endpos__1_inlined4_ in @@ -15012,18 +15525,18 @@ module Tables = struct let xs = # 253 "" ( List.rev xs ) -# 15016 "parsing/parser.ml" +# 15529 "parsing/parser.ml" in -# 1198 "parsing/parser.mly" +# 1210 "parsing/parser.mly" ( xs ) -# 15021 "parsing/parser.ml" +# 15534 "parsing/parser.ml" in -# 3398 "parsing/parser.mly" +# 3444 "parsing/parser.mly" ( _1 ) -# 15027 "parsing/parser.ml" +# 15540 "parsing/parser.ml" in let id = @@ -15032,38 +15545,38 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1114 "parsing/parser.mly" +# 1123 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 15038 "parsing/parser.ml" +# 15551 "parsing/parser.ml" in let flag = -# 4199 "parsing/parser.mly" +# 4304 "parsing/parser.mly" ( Nonrecursive ) -# 15044 "parsing/parser.ml" +# 15557 "parsing/parser.ml" in let attrs1 = let _1 = _1_inlined1 in -# 4371 "parsing/parser.mly" +# 4476 "parsing/parser.mly" ( _1 ) -# 15051 "parsing/parser.ml" +# 15564 "parsing/parser.ml" in let _endpos = _endpos_attrs2_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 3370 "parsing/parser.mly" +# 3415 "parsing/parser.mly" ( let (kind, priv, manifest) = kind_priv_manifest in let docs = symbol_docs _sloc in let attrs = attrs1 @ attrs2 in let loc = make_loc _sloc in (flag, ext), - Type.mk id ~params ~cstrs ~kind ~priv ?manifest ~attrs ~loc ~docs + Type.mk id ~params ?layout ~cstrs ~kind ~priv ?manifest ~attrs ~loc ~docs ) -# 15067 "parsing/parser.ml" +# 15580 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -15082,17 +15595,17 @@ module Tables = struct MenhirLib.EngineTypes.next = _menhir_stack; } = _menhir_stack in let _1 : ( -# 981 "parsing/parser.mly" +# 990 "parsing/parser.mly" (string) -# 15088 "parsing/parser.ml" +# 15601 "parsing/parser.ml" ) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Asttypes.label) = -# 4041 "parsing/parser.mly" +# 4145 "parsing/parser.mly" ( _1 ) -# 15096 "parsing/parser.ml" +# 15609 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -15111,17 +15624,17 @@ module Tables = struct MenhirLib.EngineTypes.next = _menhir_stack; } = _menhir_stack in let _1 : ( -# 928 "parsing/parser.mly" +# 937 "parsing/parser.mly" (string) -# 15117 "parsing/parser.ml" +# 15630 "parsing/parser.ml" ) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Asttypes.label) = -# 4042 "parsing/parser.mly" +# 4146 "parsing/parser.mly" ( _1 ) -# 15125 "parsing/parser.ml" +# 15638 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -15151,9 +15664,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (Parsetree.structure) = -# 1369 "parsing/parser.mly" +# 1381 "parsing/parser.mly" ( _1 ) -# 15157 "parsing/parser.ml" +# 15670 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -15176,9 +15689,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (bool) = -# 1754 "parsing/parser.mly" +# 1766 "parsing/parser.mly" ( false ) -# 15182 "parsing/parser.ml" +# 15695 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -15208,9 +15721,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (bool) = -# 1756 "parsing/parser.mly" +# 1768 "parsing/parser.mly" ( true ) -# 15214 "parsing/parser.ml" +# 15727 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -15226,9 +15739,9 @@ module Tables = struct let _startpos = _menhir_stack.MenhirLib.EngineTypes.endp in let _endpos = _startpos in let _v : (string) = -# 4091 "parsing/parser.mly" +# 4195 "parsing/parser.mly" ( "" ) -# 15232 "parsing/parser.ml" +# 15745 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -15258,9 +15771,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (string) = -# 4092 "parsing/parser.mly" +# 4196 "parsing/parser.mly" ( ";.." ) -# 15264 "parsing/parser.ml" +# 15777 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -15290,9 +15803,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (Parsetree.signature) = -# 1376 "parsing/parser.mly" +# 1388 "parsing/parser.mly" ( _1 ) -# 15296 "parsing/parser.ml" +# 15809 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -15336,9 +15849,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__4_ in let _v : (Parsetree.extension) = -# 4392 "parsing/parser.mly" +# 4497 "parsing/parser.mly" ( (_2, _3) ) -# 15342 "parsing/parser.ml" +# 15855 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -15357,9 +15870,9 @@ module Tables = struct MenhirLib.EngineTypes.next = _menhir_stack; } = _menhir_stack in let _1 : ( -# 972 "parsing/parser.mly" +# 981 "parsing/parser.mly" (string * Location.t * string * Location.t * string option) -# 15363 "parsing/parser.ml" +# 15876 "parsing/parser.ml" ) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in @@ -15368,9 +15881,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 4394 "parsing/parser.mly" +# 4499 "parsing/parser.mly" ( mk_quotedext ~loc:_sloc _1 ) -# 15374 "parsing/parser.ml" +# 15887 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -15416,9 +15929,9 @@ module Tables = struct let _1_inlined2 : (Parsetree.core_type) = Obj.magic _1_inlined2 in let _3 : unit = Obj.magic _3 in let _1_inlined1 : ( -# 928 "parsing/parser.mly" +# 937 "parsing/parser.mly" (string) -# 15422 "parsing/parser.ml" +# 15935 "parsing/parser.ml" ) = Obj.magic _1_inlined1 in let _1 : (Asttypes.mutable_flag * Asttypes.global_flag) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in @@ -15427,34 +15940,34 @@ module Tables = struct let _v : (Parsetree.label_declaration) = let _5 = let _1 = _1_inlined3 in -# 4371 "parsing/parser.mly" +# 4476 "parsing/parser.mly" ( _1 ) -# 15433 "parsing/parser.ml" +# 15946 "parsing/parser.ml" in let _endpos__5_ = _endpos__1_inlined3_ in let _4 = let _1 = _1_inlined2 in -# 3727 "parsing/parser.mly" +# 3818 "parsing/parser.mly" ( _1 ) -# 15442 "parsing/parser.ml" +# 15955 "parsing/parser.ml" in let _2 = let (_endpos__1_, _startpos__1_, _1) = (_endpos__1_inlined1_, _startpos__1_inlined1_, _1_inlined1) in let _1 = -# 4002 "parsing/parser.mly" +# 4106 "parsing/parser.mly" ( _1 ) -# 15450 "parsing/parser.ml" +# 15963 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1114 "parsing/parser.mly" +# 1123 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 15458 "parsing/parser.ml" +# 15971 "parsing/parser.ml" in let _startpos__2_ = _startpos__1_inlined1_ in @@ -15466,13 +15979,13 @@ module Tables = struct let _loc__1_ = (_startpos__1_, _endpos__1_) in let _sloc = (_symbolstartpos, _endpos) in -# 3593 "parsing/parser.mly" +# 3678 "parsing/parser.mly" ( let info = symbol_info _endpos in let mut, gbl = _1 in mkld_global_maybe gbl (Type.field _2 _4 ~mut ~attrs:_5 ~loc:(make_loc _sloc) ~info) (make_loc _loc__1_) ) -# 15476 "parsing/parser.ml" +# 15989 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -15532,9 +16045,9 @@ module Tables = struct let _1_inlined2 : (Parsetree.core_type) = Obj.magic _1_inlined2 in let _3 : unit = Obj.magic _3 in let _1_inlined1 : ( -# 928 "parsing/parser.mly" +# 937 "parsing/parser.mly" (string) -# 15538 "parsing/parser.ml" +# 16051 "parsing/parser.ml" ) = Obj.magic _1_inlined1 in let _1 : (Asttypes.mutable_flag * Asttypes.global_flag) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in @@ -15543,43 +16056,43 @@ module Tables = struct let _v : (Parsetree.label_declaration) = let _7 = let _1 = _1_inlined4 in -# 4371 "parsing/parser.mly" +# 4476 "parsing/parser.mly" ( _1 ) -# 15549 "parsing/parser.ml" +# 16062 "parsing/parser.ml" in let _endpos__7_ = _endpos__1_inlined4_ in let _5 = let _1 = _1_inlined3 in -# 4371 "parsing/parser.mly" +# 4476 "parsing/parser.mly" ( _1 ) -# 15558 "parsing/parser.ml" +# 16071 "parsing/parser.ml" in let _endpos__5_ = _endpos__1_inlined3_ in let _4 = let _1 = _1_inlined2 in -# 3727 "parsing/parser.mly" +# 3818 "parsing/parser.mly" ( _1 ) -# 15567 "parsing/parser.ml" +# 16080 "parsing/parser.ml" in let _2 = let (_endpos__1_, _startpos__1_, _1) = (_endpos__1_inlined1_, _startpos__1_inlined1_, _1_inlined1) in let _1 = -# 4002 "parsing/parser.mly" +# 4106 "parsing/parser.mly" ( _1 ) -# 15575 "parsing/parser.ml" +# 16088 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1114 "parsing/parser.mly" +# 1123 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 15583 "parsing/parser.ml" +# 16096 "parsing/parser.ml" in let _startpos__2_ = _startpos__1_inlined1_ in @@ -15591,7 +16104,7 @@ module Tables = struct let _loc__1_ = (_startpos__1_, _endpos__1_) in let _sloc = (_symbolstartpos, _endpos) in -# 3602 "parsing/parser.mly" +# 3687 "parsing/parser.mly" ( let info = match rhs_info _endpos__5_ with | Some _ as info_before_semi -> info_before_semi @@ -15601,7 +16114,7 @@ module Tables = struct mkld_global_maybe gbl (Type.field _2 _4 ~mut ~attrs:(_5 @ _7) ~loc:(make_loc _sloc) ~info) (make_loc _loc__1_) ) -# 15605 "parsing/parser.ml" +# 16118 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -15624,9 +16137,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Parsetree.label_declaration list) = -# 3587 "parsing/parser.mly" +# 3672 "parsing/parser.mly" ( [_1] ) -# 15630 "parsing/parser.ml" +# 16143 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -15649,9 +16162,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Parsetree.label_declaration list) = -# 3588 "parsing/parser.mly" +# 3673 "parsing/parser.mly" ( [_1] ) -# 15655 "parsing/parser.ml" +# 16168 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -15681,9 +16194,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (Parsetree.label_declaration list) = -# 3589 "parsing/parser.mly" +# 3674 "parsing/parser.mly" ( _1 :: _2 ) -# 15687 "parsing/parser.ml" +# 16200 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -15702,9 +16215,9 @@ module Tables = struct MenhirLib.EngineTypes.next = _menhir_stack; } = _menhir_stack in let _1 : ( -# 928 "parsing/parser.mly" +# 937 "parsing/parser.mly" (string) -# 15708 "parsing/parser.ml" +# 16221 "parsing/parser.ml" ) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in @@ -15715,24 +16228,24 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1114 "parsing/parser.mly" +# 1123 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 15721 "parsing/parser.ml" +# 16234 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2501 "parsing/parser.mly" +# 2516 "parsing/parser.mly" ( (_1.Location.txt, mkpat ~loc:_sloc (Ppat_var _1)) ) -# 15730 "parsing/parser.ml" +# 16243 "parsing/parser.ml" in -# 2488 "parsing/parser.mly" +# 2500 "parsing/parser.mly" ( x ) -# 15736 "parsing/parser.ml" +# 16249 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -15765,9 +16278,9 @@ module Tables = struct let cty : (Parsetree.core_type) = Obj.magic cty in let _2 : unit = Obj.magic _2 in let _1 : ( -# 928 "parsing/parser.mly" +# 937 "parsing/parser.mly" (string) -# 15771 "parsing/parser.ml" +# 16284 "parsing/parser.ml" ) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in @@ -15778,18 +16291,18 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1114 "parsing/parser.mly" +# 1123 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 15784 "parsing/parser.ml" +# 16297 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2501 "parsing/parser.mly" +# 2516 "parsing/parser.mly" ( (_1.Location.txt, mkpat ~loc:_sloc (Ppat_var _1)) ) -# 15793 "parsing/parser.ml" +# 16306 "parsing/parser.ml" in let _startpos_x_ = _startpos__1_ in @@ -15797,11 +16310,11 @@ module Tables = struct let _symbolstartpos = _startpos_x_ in let _sloc = (_symbolstartpos, _endpos) in -# 2490 "parsing/parser.mly" +# 2502 "parsing/parser.mly" ( let lab, pat = x in lab, mkpat ~loc:_sloc (Ppat_constraint (pat, cty)) ) -# 15805 "parsing/parser.ml" +# 16318 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -15814,9 +16327,9 @@ module Tables = struct let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in let { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = ty; - MenhirLib.EngineTypes.startp = _startpos_ty_; - MenhirLib.EngineTypes.endp = _endpos_ty_; + MenhirLib.EngineTypes.semv = inner_type; + MenhirLib.EngineTypes.startp = _startpos_inner_type_; + MenhirLib.EngineTypes.endp = _endpos_inner_type_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; MenhirLib.EngineTypes.semv = _2_inlined1; @@ -15843,74 +16356,74 @@ module Tables = struct }; }; } = _menhir_stack in - let ty : (Parsetree.core_type) = Obj.magic ty in + let inner_type : (Parsetree.core_type) = Obj.magic inner_type in let _2_inlined1 : unit = Obj.magic _2_inlined1 in - let xs : (Asttypes.label Asttypes.loc list) = Obj.magic xs in + let xs : ((Asttypes.label Asttypes.loc * Asttypes.layout_annotation option) list) = Obj.magic xs in let _2 : unit = Obj.magic _2 in let _1 : ( -# 928 "parsing/parser.mly" +# 937 "parsing/parser.mly" (string) -# 15854 "parsing/parser.ml" +# 16367 "parsing/parser.ml" ) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in - let _endpos = _endpos_ty_ in + let _endpos = _endpos_inner_type_ in let _v : (string * Parsetree.pattern) = let cty = let _1 = - let vars = + let bound_vars = let _1 = let xs = # 253 "" ( List.rev xs ) -# 15866 "parsing/parser.ml" +# 16379 "parsing/parser.ml" in -# 1216 "parsing/parser.mly" +# 1228 "parsing/parser.mly" ( xs ) -# 15871 "parsing/parser.ml" +# 16384 "parsing/parser.ml" in -# 3709 "parsing/parser.mly" +# 3798 "parsing/parser.mly" ( _1 ) -# 15877 "parsing/parser.ml" +# 16390 "parsing/parser.ml" in -# 2494 "parsing/parser.mly" - ( Ptyp_poly(vars, ty) ) -# 15883 "parsing/parser.ml" +# 2509 "parsing/parser.mly" + ( Jane_syntax.Layouts.Ltyp_poly { bound_vars; inner_type } ) +# 16396 "parsing/parser.ml" in - let (_endpos__1_, _startpos__1_) = (_endpos_ty_, _startpos_xs_) in + let (_endpos__1_, _startpos__1_) = (_endpos_inner_type_, _startpos_xs_) in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1151 "parsing/parser.mly" - ( mktyp ~loc:_sloc _1 ) -# 15893 "parsing/parser.ml" +# 1187 "parsing/parser.mly" + ( Jane_syntax.Layouts.type_of ~loc:(make_loc _sloc) ~attrs:[] _1 ) +# 16406 "parsing/parser.ml" in - let _endpos_cty_ = _endpos_ty_ in + let _endpos_cty_ = _endpos_inner_type_ in let x = let _1 = let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1114 "parsing/parser.mly" +# 1123 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 15905 "parsing/parser.ml" +# 16418 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2501 "parsing/parser.mly" +# 2516 "parsing/parser.mly" ( (_1.Location.txt, mkpat ~loc:_sloc (Ppat_var _1)) ) -# 15914 "parsing/parser.ml" +# 16427 "parsing/parser.ml" in let _startpos_x_ = _startpos__1_ in @@ -15918,11 +16431,11 @@ module Tables = struct let _symbolstartpos = _startpos_x_ in let _sloc = (_symbolstartpos, _endpos) in -# 2495 "parsing/parser.mly" +# 2510 "parsing/parser.mly" ( let lab, pat = x in lab, mkpat ~loc:_sloc (Ppat_constraint (pat, cty)) ) -# 15926 "parsing/parser.ml" +# 16439 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -15945,9 +16458,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Longident.t) = -# 4123 "parsing/parser.mly" +# 4227 "parsing/parser.mly" ( _1 ) -# 15951 "parsing/parser.ml" +# 16464 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -15970,9 +16483,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Asttypes.arg_label * Parsetree.expression) = -# 2856 "parsing/parser.mly" +# 2877 "parsing/parser.mly" ( (Nolabel, _1) ) -# 15976 "parsing/parser.ml" +# 16489 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -15998,17 +16511,17 @@ module Tables = struct } = _menhir_stack in let _2 : (Parsetree.expression) = Obj.magic _2 in let _1 : ( -# 914 "parsing/parser.mly" +# 923 "parsing/parser.mly" (string) -# 16004 "parsing/parser.ml" +# 16517 "parsing/parser.ml" ) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (Asttypes.arg_label * Parsetree.expression) = -# 2858 "parsing/parser.mly" +# 2879 "parsing/parser.mly" ( (Labelled _1, _2) ) -# 16012 "parsing/parser.ml" +# 16525 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -16033,9 +16546,9 @@ module Tables = struct }; } = _menhir_stack in let label : ( -# 928 "parsing/parser.mly" +# 937 "parsing/parser.mly" (string) -# 16039 "parsing/parser.ml" +# 16552 "parsing/parser.ml" ) = Obj.magic label in let _1 : unit = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in @@ -16043,10 +16556,10 @@ module Tables = struct let _endpos = _endpos_label_ in let _v : (Asttypes.arg_label * Parsetree.expression) = let _loc_label_ = (_startpos_label_, _endpos_label_) in -# 2860 "parsing/parser.mly" +# 2881 "parsing/parser.mly" ( let loc = _loc_label_ in (Labelled label, mkexpvar ~loc label) ) -# 16050 "parsing/parser.ml" +# 16563 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -16091,9 +16604,9 @@ module Tables = struct let _5 : unit = Obj.magic _5 in let ty : (Parsetree.core_type option * Parsetree.core_type option) = Obj.magic ty in let label : ( -# 928 "parsing/parser.mly" +# 937 "parsing/parser.mly" (string) -# 16097 "parsing/parser.ml" +# 16610 "parsing/parser.ml" ) = Obj.magic label in let _2 : unit = Obj.magic _2 in let _1 : unit = Obj.magic _1 in @@ -16103,10 +16616,10 @@ module Tables = struct let _v : (Asttypes.arg_label * Parsetree.expression) = let _endpos = _endpos__5_ in let _loc_label_ = (_startpos_label_, _endpos_label_) in -# 2863 "parsing/parser.mly" +# 2884 "parsing/parser.mly" ( (Labelled label, mkexp_constraint ~loc:(_startpos__2_, _endpos) (mkexpvar ~loc:_loc_label_ label) ty) ) -# 16110 "parsing/parser.ml" +# 16623 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -16131,9 +16644,9 @@ module Tables = struct }; } = _menhir_stack in let label : ( -# 928 "parsing/parser.mly" +# 937 "parsing/parser.mly" (string) -# 16137 "parsing/parser.ml" +# 16650 "parsing/parser.ml" ) = Obj.magic label in let _1 : unit = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in @@ -16141,10 +16654,10 @@ module Tables = struct let _endpos = _endpos_label_ in let _v : (Asttypes.arg_label * Parsetree.expression) = let _loc_label_ = (_startpos_label_, _endpos_label_) in -# 2866 "parsing/parser.mly" +# 2887 "parsing/parser.mly" ( let loc = _loc_label_ in (Optional label, mkexpvar ~loc label) ) -# 16148 "parsing/parser.ml" +# 16661 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -16170,17 +16683,17 @@ module Tables = struct } = _menhir_stack in let _2 : (Parsetree.expression) = Obj.magic _2 in let _1 : ( -# 946 "parsing/parser.mly" +# 955 "parsing/parser.mly" (string) -# 16176 "parsing/parser.ml" +# 16689 "parsing/parser.ml" ) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (Asttypes.arg_label * Parsetree.expression) = -# 2869 "parsing/parser.mly" +# 2890 "parsing/parser.mly" ( (Optional _1, _2) ) -# 16184 "parsing/parser.ml" +# 16697 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -16233,22 +16746,22 @@ module Tables = struct let _v : (Asttypes.arg_label * Parsetree.expression option * Parsetree.pattern) = let _5 = let _1 = _1_inlined1 in -# 2484 "parsing/parser.mly" +# 2496 "parsing/parser.mly" ( _1 ) -# 16239 "parsing/parser.ml" +# 16752 "parsing/parser.ml" in let _3 = -# 3814 "parsing/parser.mly" +# 3913 "parsing/parser.mly" ( false ) -# 16245 "parsing/parser.ml" +# 16758 "parsing/parser.ml" in let (_endpos__3_, _startpos__3_) = (_endpos__2_, _endpos__2_) in let _loc__3_ = (_startpos__3_, _endpos__3_) in -# 2447 "parsing/parser.mly" +# 2459 "parsing/parser.mly" ( (Optional (fst _4), _5, mkpat_local_if _3 (snd _4) _loc__3_) ) -# 16252 "parsing/parser.ml" +# 16765 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -16308,22 +16821,22 @@ module Tables = struct let _v : (Asttypes.arg_label * Parsetree.expression option * Parsetree.pattern) = let _5 = let _1 = _1_inlined2 in -# 2484 "parsing/parser.mly" +# 2496 "parsing/parser.mly" ( _1 ) -# 16314 "parsing/parser.ml" +# 16827 "parsing/parser.ml" in let _3 = -# 3816 "parsing/parser.mly" +# 3915 "parsing/parser.mly" ( true ) -# 16320 "parsing/parser.ml" +# 16833 "parsing/parser.ml" in let (_endpos__3_, _startpos__3_) = (_endpos__1_inlined1_, _startpos__1_inlined1_) in let _loc__3_ = (_startpos__3_, _endpos__3_) in -# 2447 "parsing/parser.mly" +# 2459 "parsing/parser.mly" ( (Optional (fst _4), _5, mkpat_local_if _3 (snd _4) _loc__3_) ) -# 16327 "parsing/parser.ml" +# 16840 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -16348,9 +16861,9 @@ module Tables = struct }; } = _menhir_stack in let _1_inlined1 : ( -# 928 "parsing/parser.mly" +# 937 "parsing/parser.mly" (string) -# 16354 "parsing/parser.ml" +# 16867 "parsing/parser.ml" ) = Obj.magic _1_inlined1 in let _1 : unit = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in @@ -16363,24 +16876,24 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1114 "parsing/parser.mly" +# 1123 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 16369 "parsing/parser.ml" +# 16882 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2501 "parsing/parser.mly" +# 2516 "parsing/parser.mly" ( (_1.Location.txt, mkpat ~loc:_sloc (Ppat_var _1)) ) -# 16378 "parsing/parser.ml" +# 16891 "parsing/parser.ml" in -# 2449 "parsing/parser.mly" +# 2461 "parsing/parser.mly" ( (Optional (fst _2), None, snd _2) ) -# 16384 "parsing/parser.ml" +# 16897 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -16427,9 +16940,9 @@ module Tables = struct let _4 : (Parsetree.pattern) = Obj.magic _4 in let _2 : unit = Obj.magic _2 in let _1 : ( -# 946 "parsing/parser.mly" +# 955 "parsing/parser.mly" (string) -# 16433 "parsing/parser.ml" +# 16946 "parsing/parser.ml" ) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in @@ -16437,22 +16950,22 @@ module Tables = struct let _v : (Asttypes.arg_label * Parsetree.expression option * Parsetree.pattern) = let _5 = let _1 = _1_inlined1 in -# 2484 "parsing/parser.mly" +# 2496 "parsing/parser.mly" ( _1 ) -# 16443 "parsing/parser.ml" +# 16956 "parsing/parser.ml" in let _3 = -# 3814 "parsing/parser.mly" +# 3913 "parsing/parser.mly" ( false ) -# 16449 "parsing/parser.ml" +# 16962 "parsing/parser.ml" in let (_endpos__3_, _startpos__3_) = (_endpos__2_, _endpos__2_) in let _loc__3_ = (_startpos__3_, _endpos__3_) in -# 2451 "parsing/parser.mly" +# 2463 "parsing/parser.mly" ( (Optional _1, _5, mkpat_local_if _3 _4 _loc__3_) ) -# 16456 "parsing/parser.ml" +# 16969 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -16506,9 +17019,9 @@ module Tables = struct let _1_inlined1 : unit = Obj.magic _1_inlined1 in let _2 : unit = Obj.magic _2 in let _1 : ( -# 946 "parsing/parser.mly" +# 955 "parsing/parser.mly" (string) -# 16512 "parsing/parser.ml" +# 17025 "parsing/parser.ml" ) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in @@ -16516,22 +17029,22 @@ module Tables = struct let _v : (Asttypes.arg_label * Parsetree.expression option * Parsetree.pattern) = let _5 = let _1 = _1_inlined2 in -# 2484 "parsing/parser.mly" +# 2496 "parsing/parser.mly" ( _1 ) -# 16522 "parsing/parser.ml" +# 17035 "parsing/parser.ml" in let _3 = -# 3816 "parsing/parser.mly" +# 3915 "parsing/parser.mly" ( true ) -# 16528 "parsing/parser.ml" +# 17041 "parsing/parser.ml" in let (_endpos__3_, _startpos__3_) = (_endpos__1_inlined1_, _startpos__1_inlined1_) in let _loc__3_ = (_startpos__3_, _endpos__3_) in -# 2451 "parsing/parser.mly" +# 2463 "parsing/parser.mly" ( (Optional _1, _5, mkpat_local_if _3 _4 _loc__3_) ) -# 16535 "parsing/parser.ml" +# 17048 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -16557,17 +17070,17 @@ module Tables = struct } = _menhir_stack in let _2 : (Parsetree.pattern) = Obj.magic _2 in let _1 : ( -# 946 "parsing/parser.mly" +# 955 "parsing/parser.mly" (string) -# 16563 "parsing/parser.ml" +# 17076 "parsing/parser.ml" ) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (Asttypes.arg_label * Parsetree.expression option * Parsetree.pattern) = -# 2453 "parsing/parser.mly" +# 2465 "parsing/parser.mly" ( (Optional _1, None, _2) ) -# 16571 "parsing/parser.ml" +# 17084 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -16611,17 +17124,17 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__5_ in let _v : (Asttypes.arg_label * Parsetree.expression option * Parsetree.pattern) = let _3 = -# 3814 "parsing/parser.mly" +# 3913 "parsing/parser.mly" ( false ) -# 16617 "parsing/parser.ml" +# 17130 "parsing/parser.ml" in let (_endpos__3_, _startpos__3_) = (_endpos__2_, _endpos__2_) in let _loc__3_ = (_startpos__3_, _endpos__3_) in -# 2455 "parsing/parser.mly" +# 2467 "parsing/parser.mly" ( (Labelled (fst _4), None, mkpat_local_if _3 (snd _4) _loc__3_) ) -# 16625 "parsing/parser.ml" +# 17138 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -16672,17 +17185,17 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__5_ in let _v : (Asttypes.arg_label * Parsetree.expression option * Parsetree.pattern) = let _3 = -# 3816 "parsing/parser.mly" +# 3915 "parsing/parser.mly" ( true ) -# 16678 "parsing/parser.ml" +# 17191 "parsing/parser.ml" in let (_endpos__3_, _startpos__3_) = (_endpos__1_inlined1_, _startpos__1_inlined1_) in let _loc__3_ = (_startpos__3_, _endpos__3_) in -# 2455 "parsing/parser.mly" +# 2467 "parsing/parser.mly" ( (Labelled (fst _4), None, mkpat_local_if _3 (snd _4) _loc__3_) ) -# 16686 "parsing/parser.ml" +# 17199 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -16707,9 +17220,9 @@ module Tables = struct }; } = _menhir_stack in let _1_inlined1 : ( -# 928 "parsing/parser.mly" +# 937 "parsing/parser.mly" (string) -# 16713 "parsing/parser.ml" +# 17226 "parsing/parser.ml" ) = Obj.magic _1_inlined1 in let _1 : unit = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in @@ -16722,24 +17235,24 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1114 "parsing/parser.mly" +# 1123 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 16728 "parsing/parser.ml" +# 17241 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2501 "parsing/parser.mly" +# 2516 "parsing/parser.mly" ( (_1.Location.txt, mkpat ~loc:_sloc (Ppat_var _1)) ) -# 16737 "parsing/parser.ml" +# 17250 "parsing/parser.ml" in -# 2458 "parsing/parser.mly" +# 2470 "parsing/parser.mly" ( (Labelled (fst _2), None, snd _2) ) -# 16743 "parsing/parser.ml" +# 17256 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -16765,17 +17278,17 @@ module Tables = struct } = _menhir_stack in let _2 : (Parsetree.pattern) = Obj.magic _2 in let _1 : ( -# 914 "parsing/parser.mly" +# 923 "parsing/parser.mly" (string) -# 16771 "parsing/parser.ml" +# 17284 "parsing/parser.ml" ) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (Asttypes.arg_label * Parsetree.expression option * Parsetree.pattern) = -# 2460 "parsing/parser.mly" +# 2472 "parsing/parser.mly" ( (Labelled _1, None, _2) ) -# 16779 "parsing/parser.ml" +# 17292 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -16822,18 +17335,18 @@ module Tables = struct let _3 : unit = Obj.magic _3 in let _2 : unit = Obj.magic _2 in let _1 : ( -# 914 "parsing/parser.mly" +# 923 "parsing/parser.mly" (string) -# 16828 "parsing/parser.ml" +# 17341 "parsing/parser.ml" ) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in let _endpos = _endpos__5_ in let _v : (Asttypes.arg_label * Parsetree.expression option * Parsetree.pattern) = let _loc__3_ = (_startpos__3_, _endpos__3_) in -# 2462 "parsing/parser.mly" +# 2474 "parsing/parser.mly" ( (Labelled _1, None, mkpat_stack _4 (make_loc _loc__3_)) ) -# 16837 "parsing/parser.ml" +# 17350 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -16856,9 +17369,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Asttypes.arg_label * Parsetree.expression option * Parsetree.pattern) = -# 2464 "parsing/parser.mly" +# 2476 "parsing/parser.mly" ( (Nolabel, None, _1) ) -# 16862 "parsing/parser.ml" +# 17375 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -16903,9 +17416,9 @@ module Tables = struct let _endpos = _endpos__4_ in let _v : (Asttypes.arg_label * Parsetree.expression option * Parsetree.pattern) = let _loc__2_ = (_startpos__2_, _endpos__2_) in -# 2466 "parsing/parser.mly" +# 2478 "parsing/parser.mly" ( (Nolabel, None, mkpat_stack _3 (make_loc _loc__2_)) ) -# 16909 "parsing/parser.ml" +# 17422 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -16923,9 +17436,9 @@ module Tables = struct MenhirLib.EngineTypes.endp = _endpos__4_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = ty; - MenhirLib.EngineTypes.startp = _startpos_ty_; - MenhirLib.EngineTypes.endp = _endpos_ty_; + MenhirLib.EngineTypes.semv = inner_type; + MenhirLib.EngineTypes.startp = _startpos_inner_type_; + MenhirLib.EngineTypes.endp = _endpos_inner_type_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; MenhirLib.EngineTypes.semv = _2_inlined2; @@ -16966,16 +17479,16 @@ module Tables = struct }; } = _menhir_stack in let _4 : unit = Obj.magic _4 in - let ty : (Parsetree.core_type) = Obj.magic ty in + let inner_type : (Parsetree.core_type) = Obj.magic inner_type in let _2_inlined2 : unit = Obj.magic _2_inlined2 in - let xs : (Asttypes.label Asttypes.loc list) = Obj.magic xs in + let xs : ((Asttypes.label Asttypes.loc * Asttypes.layout_annotation option) list) = Obj.magic xs in let _2_inlined1 : unit = Obj.magic _2_inlined1 in let pat : (Parsetree.pattern) = Obj.magic pat in let _2 : unit = Obj.magic _2 in let _1 : ( -# 914 "parsing/parser.mly" +# 923 "parsing/parser.mly" (string) -# 16979 "parsing/parser.ml" +# 17492 "parsing/parser.ml" ) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in @@ -16985,67 +17498,67 @@ module Tables = struct let _1 = let cty = let _1 = - let vars = + let bound_vars = let _1 = let xs = # 253 "" ( List.rev xs ) -# 16994 "parsing/parser.ml" +# 17507 "parsing/parser.ml" in -# 1216 "parsing/parser.mly" +# 1228 "parsing/parser.mly" ( xs ) -# 16999 "parsing/parser.ml" +# 17512 "parsing/parser.ml" in -# 3709 "parsing/parser.mly" +# 3798 "parsing/parser.mly" ( _1 ) -# 17005 "parsing/parser.ml" +# 17518 "parsing/parser.ml" in -# 2517 "parsing/parser.mly" - ( Ptyp_poly(vars, ty) ) -# 17011 "parsing/parser.ml" +# 2534 "parsing/parser.mly" + ( Jane_syntax.Layouts.Ltyp_poly { bound_vars; inner_type } ) +# 17524 "parsing/parser.ml" in - let (_endpos__1_, _startpos__1_) = (_endpos_ty_, _startpos_xs_) in + let (_endpos__1_, _startpos__1_) = (_endpos_inner_type_, _startpos_xs_) in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1151 "parsing/parser.mly" - ( mktyp ~loc:_sloc _1 ) -# 17021 "parsing/parser.ml" +# 1187 "parsing/parser.mly" + ( Jane_syntax.Layouts.type_of ~loc:(make_loc _sloc) ~attrs:[] _1 ) +# 17534 "parsing/parser.ml" in -# 2518 "parsing/parser.mly" +# 2535 "parsing/parser.mly" ( Ppat_constraint(pat, cty) ) -# 17027 "parsing/parser.ml" +# 17540 "parsing/parser.ml" in - let (_endpos__1_, _startpos__1_) = (_endpos_ty_, _startpos_pat_) in + let (_endpos__1_, _startpos__1_) = (_endpos_inner_type_, _startpos_pat_) in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1149 "parsing/parser.mly" +# 1158 "parsing/parser.mly" ( mkpat ~loc:_sloc _1 ) -# 17037 "parsing/parser.ml" +# 17550 "parsing/parser.ml" in -# 2519 "parsing/parser.mly" +# 2536 "parsing/parser.mly" ( _1 ) -# 17043 "parsing/parser.ml" +# 17556 "parsing/parser.ml" in -# 2468 "parsing/parser.mly" +# 2480 "parsing/parser.mly" ( (Labelled _1, None, _3) ) -# 17049 "parsing/parser.ml" +# 17562 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -17063,9 +17576,9 @@ module Tables = struct MenhirLib.EngineTypes.endp = _endpos__5_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = ty; - MenhirLib.EngineTypes.startp = _startpos_ty_; - MenhirLib.EngineTypes.endp = _endpos_ty_; + MenhirLib.EngineTypes.semv = inner_type; + MenhirLib.EngineTypes.startp = _startpos_inner_type_; + MenhirLib.EngineTypes.endp = _endpos_inner_type_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; MenhirLib.EngineTypes.semv = _2_inlined2; @@ -17112,17 +17625,17 @@ module Tables = struct }; } = _menhir_stack in let _5 : unit = Obj.magic _5 in - let ty : (Parsetree.core_type) = Obj.magic ty in + let inner_type : (Parsetree.core_type) = Obj.magic inner_type in let _2_inlined2 : unit = Obj.magic _2_inlined2 in - let xs : (Asttypes.label Asttypes.loc list) = Obj.magic xs in + let xs : ((Asttypes.label Asttypes.loc * Asttypes.layout_annotation option) list) = Obj.magic xs in let _2_inlined1 : unit = Obj.magic _2_inlined1 in let pat : (Parsetree.pattern) = Obj.magic pat in let _3 : unit = Obj.magic _3 in let _2 : unit = Obj.magic _2 in let _1 : ( -# 914 "parsing/parser.mly" +# 923 "parsing/parser.mly" (string) -# 17126 "parsing/parser.ml" +# 17639 "parsing/parser.ml" ) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in @@ -17132,68 +17645,68 @@ module Tables = struct let _1 = let cty = let _1 = - let vars = + let bound_vars = let _1 = let xs = # 253 "" ( List.rev xs ) -# 17141 "parsing/parser.ml" +# 17654 "parsing/parser.ml" in -# 1216 "parsing/parser.mly" +# 1228 "parsing/parser.mly" ( xs ) -# 17146 "parsing/parser.ml" +# 17659 "parsing/parser.ml" in -# 3709 "parsing/parser.mly" +# 3798 "parsing/parser.mly" ( _1 ) -# 17152 "parsing/parser.ml" +# 17665 "parsing/parser.ml" in -# 2517 "parsing/parser.mly" - ( Ptyp_poly(vars, ty) ) -# 17158 "parsing/parser.ml" +# 2534 "parsing/parser.mly" + ( Jane_syntax.Layouts.Ltyp_poly { bound_vars; inner_type } ) +# 17671 "parsing/parser.ml" in - let (_endpos__1_, _startpos__1_) = (_endpos_ty_, _startpos_xs_) in + let (_endpos__1_, _startpos__1_) = (_endpos_inner_type_, _startpos_xs_) in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1151 "parsing/parser.mly" - ( mktyp ~loc:_sloc _1 ) -# 17168 "parsing/parser.ml" +# 1187 "parsing/parser.mly" + ( Jane_syntax.Layouts.type_of ~loc:(make_loc _sloc) ~attrs:[] _1 ) +# 17681 "parsing/parser.ml" in -# 2518 "parsing/parser.mly" +# 2535 "parsing/parser.mly" ( Ppat_constraint(pat, cty) ) -# 17174 "parsing/parser.ml" +# 17687 "parsing/parser.ml" in - let (_endpos__1_, _startpos__1_) = (_endpos_ty_, _startpos_pat_) in + let (_endpos__1_, _startpos__1_) = (_endpos_inner_type_, _startpos_pat_) in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1149 "parsing/parser.mly" +# 1158 "parsing/parser.mly" ( mkpat ~loc:_sloc _1 ) -# 17184 "parsing/parser.ml" +# 17697 "parsing/parser.ml" in -# 2519 "parsing/parser.mly" +# 2536 "parsing/parser.mly" ( _1 ) -# 17190 "parsing/parser.ml" +# 17703 "parsing/parser.ml" in let _loc__2_ = (_startpos__2_, _endpos__2_) in -# 2470 "parsing/parser.mly" +# 2482 "parsing/parser.mly" ( (Labelled _1, None, mkpat_stack _4 (make_loc _loc__2_)) ) -# 17197 "parsing/parser.ml" +# 17710 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -17211,9 +17724,9 @@ module Tables = struct MenhirLib.EngineTypes.endp = _endpos__3_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = ty; - MenhirLib.EngineTypes.startp = _startpos_ty_; - MenhirLib.EngineTypes.endp = _endpos_ty_; + MenhirLib.EngineTypes.semv = inner_type; + MenhirLib.EngineTypes.startp = _startpos_inner_type_; + MenhirLib.EngineTypes.endp = _endpos_inner_type_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; MenhirLib.EngineTypes.semv = _2_inlined1; @@ -17248,9 +17761,9 @@ module Tables = struct }; } = _menhir_stack in let _3 : unit = Obj.magic _3 in - let ty : (Parsetree.core_type) = Obj.magic ty in + let inner_type : (Parsetree.core_type) = Obj.magic inner_type in let _2_inlined1 : unit = Obj.magic _2_inlined1 in - let xs : (Asttypes.label Asttypes.loc list) = Obj.magic xs in + let xs : ((Asttypes.label Asttypes.loc * Asttypes.layout_annotation option) list) = Obj.magic xs in let _2 : unit = Obj.magic _2 in let pat : (Parsetree.pattern) = Obj.magic pat in let _1 : unit = Obj.magic _1 in @@ -17262,67 +17775,67 @@ module Tables = struct let _1 = let cty = let _1 = - let vars = + let bound_vars = let _1 = let xs = # 253 "" ( List.rev xs ) -# 17271 "parsing/parser.ml" +# 17784 "parsing/parser.ml" in -# 1216 "parsing/parser.mly" +# 1228 "parsing/parser.mly" ( xs ) -# 17276 "parsing/parser.ml" +# 17789 "parsing/parser.ml" in -# 3709 "parsing/parser.mly" +# 3798 "parsing/parser.mly" ( _1 ) -# 17282 "parsing/parser.ml" +# 17795 "parsing/parser.ml" in -# 2517 "parsing/parser.mly" - ( Ptyp_poly(vars, ty) ) -# 17288 "parsing/parser.ml" +# 2534 "parsing/parser.mly" + ( Jane_syntax.Layouts.Ltyp_poly { bound_vars; inner_type } ) +# 17801 "parsing/parser.ml" in - let (_endpos__1_, _startpos__1_) = (_endpos_ty_, _startpos_xs_) in + let (_endpos__1_, _startpos__1_) = (_endpos_inner_type_, _startpos_xs_) in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1151 "parsing/parser.mly" - ( mktyp ~loc:_sloc _1 ) -# 17298 "parsing/parser.ml" +# 1187 "parsing/parser.mly" + ( Jane_syntax.Layouts.type_of ~loc:(make_loc _sloc) ~attrs:[] _1 ) +# 17811 "parsing/parser.ml" in -# 2518 "parsing/parser.mly" +# 2535 "parsing/parser.mly" ( Ppat_constraint(pat, cty) ) -# 17304 "parsing/parser.ml" +# 17817 "parsing/parser.ml" in - let (_endpos__1_, _startpos__1_) = (_endpos_ty_, _startpos_pat_) in + let (_endpos__1_, _startpos__1_) = (_endpos_inner_type_, _startpos_pat_) in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1149 "parsing/parser.mly" +# 1158 "parsing/parser.mly" ( mkpat ~loc:_sloc _1 ) -# 17314 "parsing/parser.ml" +# 17827 "parsing/parser.ml" in -# 2519 "parsing/parser.mly" +# 2536 "parsing/parser.mly" ( _1 ) -# 17320 "parsing/parser.ml" +# 17833 "parsing/parser.ml" in -# 2472 "parsing/parser.mly" +# 2484 "parsing/parser.mly" ( (Nolabel, None, _2) ) -# 17326 "parsing/parser.ml" +# 17839 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -17344,11 +17857,76 @@ module Tables = struct let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in - let _v : (Parsetree.attribute) = let _loc__1_ = (_startpos__1_, _endpos__1_) in + let _v : (Asttypes.layout_annotation) = let _endpos = _endpos__1_ in + let _symbolstartpos = _startpos__1_ in + let _sloc = (_symbolstartpos, _endpos) in -# 3447 "parsing/parser.mly" - ( check_layout _loc__1_ _1 ) -# 17352 "parsing/parser.ml" +# 3493 "parsing/parser.mly" + ( let loc = make_loc _sloc in + mkloc (check_layout ~loc _1) loc ) +# 17868 "parsing/parser.ml" + in + { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = Obj.repr _v; + MenhirLib.EngineTypes.startp = _startpos; + MenhirLib.EngineTypes.endp = _endpos; + MenhirLib.EngineTypes.next = _menhir_stack; + }); + (fun _menhir_env -> + let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in + let { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = layout; + MenhirLib.EngineTypes.startp = _startpos_layout_; + MenhirLib.EngineTypes.endp = _endpos_layout_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + }; + } = _menhir_stack in + let layout : (Asttypes.label Asttypes.loc) = Obj.magic layout in + let _1 : unit = Obj.magic _1 in + let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in + let _startpos = _startpos__1_ in + let _endpos = _endpos_layout_ in + let _v : (Parsetree.attribute) = +# 3507 "parsing/parser.mly" + ( Attr.mk ~loc:layout.loc layout (PStr []) ) +# 17900 "parsing/parser.ml" + in + { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = Obj.repr _v; + MenhirLib.EngineTypes.startp = _startpos; + MenhirLib.EngineTypes.endp = _endpos; + MenhirLib.EngineTypes.next = _menhir_stack; + }); + (fun _menhir_env -> + let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in + let { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + } = _menhir_stack in + let _1 : (Asttypes.label) = Obj.magic _1 in + let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in + let _startpos = _startpos__1_ in + let _endpos = _endpos__1_ in + let _v : (Asttypes.label Asttypes.loc) = let _endpos = _endpos__1_ in + let _symbolstartpos = _startpos__1_ in + let _sloc = (_symbolstartpos, _endpos) in + +# 3499 "parsing/parser.mly" + ( let loc = make_loc _sloc in + ignore (check_layout ~loc _1 : const_layout); + mkloc _1 loc ) +# 17930 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -17371,9 +17949,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Parsetree.pattern * Parsetree.expression * bool) = -# 2928 "parsing/parser.mly" +# 2955 "parsing/parser.mly" ( let p,e = _1 in (p,e,false) ) -# 17377 "parsing/parser.ml" +# 17955 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -17399,9 +17977,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _loc = (_startpos, _endpos) in -# 2931 "parsing/parser.mly" +# 2958 "parsing/parser.mly" ( (mkpatvar ~loc:_loc _1, mkexpvar ~loc:_loc _1, true) ) -# 17405 "parsing/parser.ml" +# 17983 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -17435,15 +18013,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2876 "parsing/parser.mly" +# 2897 "parsing/parser.mly" ( mkpatvar ~loc:_sloc _1 ) -# 17441 "parsing/parser.ml" +# 18019 "parsing/parser.ml" in -# 2880 "parsing/parser.mly" +# 2901 "parsing/parser.mly" ( (_1, _2) ) -# 17447 "parsing/parser.ml" +# 18025 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -17491,16 +18069,16 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2876 "parsing/parser.mly" +# 2897 "parsing/parser.mly" ( mkpatvar ~loc:_sloc _1 ) -# 17497 "parsing/parser.ml" +# 18075 "parsing/parser.ml" in let _startpos__2_ = _startpos__1_ in let _1 = -# 3814 "parsing/parser.mly" +# 3913 "parsing/parser.mly" ( false ) -# 17504 "parsing/parser.ml" +# 18082 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos__0_, _endpos__0_) in let _endpos = _endpos__5_ in @@ -17511,7 +18089,7 @@ module Tables = struct let _loc__1_ = (_startpos__1_, _endpos__1_) in let _sloc = (_symbolstartpos, _endpos) in -# 2882 "parsing/parser.mly" +# 2903 "parsing/parser.mly" ( let v = _2 in (* PR#7344 *) let t = match _3 with @@ -17533,7 +18111,7 @@ module Tables = struct local_loc) in (pat, exp) ) -# 17537 "parsing/parser.ml" +# 18115 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -17589,16 +18167,16 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2876 "parsing/parser.mly" +# 2897 "parsing/parser.mly" ( mkpatvar ~loc:_sloc _1 ) -# 17595 "parsing/parser.ml" +# 18173 "parsing/parser.ml" in let _startpos__2_ = _startpos__1_inlined1_ in let _1 = -# 3816 "parsing/parser.mly" +# 3915 "parsing/parser.mly" ( true ) -# 17602 "parsing/parser.ml" +# 18180 "parsing/parser.ml" in let _endpos = _endpos__5_ in let _symbolstartpos = if _startpos__1_ != _endpos__1_ then @@ -17608,7 +18186,7 @@ module Tables = struct let _loc__1_ = (_startpos__1_, _endpos__1_) in let _sloc = (_symbolstartpos, _endpos) in -# 2882 "parsing/parser.mly" +# 2903 "parsing/parser.mly" ( let v = _2 in (* PR#7344 *) let t = match _3 with @@ -17630,7 +18208,7 @@ module Tables = struct local_loc) in (pat, exp) ) -# 17634 "parsing/parser.ml" +# 18212 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -17688,7 +18266,7 @@ module Tables = struct let _5 : unit = Obj.magic _5 in let _3_inlined1 : (Parsetree.core_type) = Obj.magic _3_inlined1 in let _2 : unit = Obj.magic _2 in - let xs : (Asttypes.label Asttypes.loc list) = Obj.magic xs in + let xs : ((Asttypes.label Asttypes.loc * Asttypes.layout_annotation option) list) = Obj.magic xs in let _3 : unit = Obj.magic _3 in let _1 : (Asttypes.label) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in @@ -17701,24 +18279,24 @@ module Tables = struct let xs = # 253 "" ( List.rev xs ) -# 17705 "parsing/parser.ml" +# 18283 "parsing/parser.ml" in -# 1216 "parsing/parser.mly" +# 1228 "parsing/parser.mly" ( xs ) -# 17710 "parsing/parser.ml" +# 18288 "parsing/parser.ml" in -# 3709 "parsing/parser.mly" +# 3798 "parsing/parser.mly" ( _1 ) -# 17716 "parsing/parser.ml" +# 18294 "parsing/parser.ml" in -# 3713 "parsing/parser.mly" - ( Ptyp_poly(_1, _3) ) -# 17722 "parsing/parser.ml" +# 3802 "parsing/parser.mly" + ( (_1, _3) ) +# 18300 "parsing/parser.ml" in let (_endpos__4_, _startpos__4_) = (_endpos__3_inlined1_, _startpos_xs_) in @@ -17727,16 +18305,16 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2876 "parsing/parser.mly" +# 2897 "parsing/parser.mly" ( mkpatvar ~loc:_sloc _1 ) -# 17733 "parsing/parser.ml" +# 18311 "parsing/parser.ml" in let _startpos__2_ = _startpos__1_ in let _1 = -# 3814 "parsing/parser.mly" +# 3913 "parsing/parser.mly" ( false ) -# 17740 "parsing/parser.ml" +# 18318 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos__0_, _endpos__0_) in let _endpos = _endpos__6_ in @@ -17748,17 +18326,23 @@ module Tables = struct let _loc__1_ = (_startpos__1_, _endpos__1_) in let _sloc = (_symbolstartpos, _endpos) in -# 2904 "parsing/parser.mly" +# 2925 "parsing/parser.mly" ( let patloc = (_startpos__2_, _endpos__4_) in + let bound_vars, inner_type = _4 in + let ltyp = Jane_syntax.Layouts.Ltyp_poly { bound_vars; inner_type } in + let typ_loc = Location.ghostify (make_loc _loc__4_) in + let typ = + Jane_syntax.Layouts.type_of ~loc:typ_loc ~attrs:[] ltyp + in let pat = mkpat_local_if _1 (ghpat ~loc:patloc - (Ppat_constraint(_2, ghtyp ~loc:(_loc__4_) _4))) + (Ppat_constraint(_2, typ))) _loc__1_ in let exp = mkexp_local_if _1 ~loc:_sloc ~kwd_loc:(_loc__1_) _6 in (pat, exp) ) -# 17762 "parsing/parser.ml" +# 18346 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -17822,7 +18406,7 @@ module Tables = struct let _5 : unit = Obj.magic _5 in let _3_inlined1 : (Parsetree.core_type) = Obj.magic _3_inlined1 in let _2 : unit = Obj.magic _2 in - let xs : (Asttypes.label Asttypes.loc list) = Obj.magic xs in + let xs : ((Asttypes.label Asttypes.loc * Asttypes.layout_annotation option) list) = Obj.magic xs in let _3 : unit = Obj.magic _3 in let _1_inlined1 : (Asttypes.label) = Obj.magic _1_inlined1 in let _1 : unit = Obj.magic _1 in @@ -17836,24 +18420,24 @@ module Tables = struct let xs = # 253 "" ( List.rev xs ) -# 17840 "parsing/parser.ml" +# 18424 "parsing/parser.ml" in -# 1216 "parsing/parser.mly" +# 1228 "parsing/parser.mly" ( xs ) -# 17845 "parsing/parser.ml" +# 18429 "parsing/parser.ml" in -# 3709 "parsing/parser.mly" +# 3798 "parsing/parser.mly" ( _1 ) -# 17851 "parsing/parser.ml" +# 18435 "parsing/parser.ml" in -# 3713 "parsing/parser.mly" - ( Ptyp_poly(_1, _3) ) -# 17857 "parsing/parser.ml" +# 3802 "parsing/parser.mly" + ( (_1, _3) ) +# 18441 "parsing/parser.ml" in let (_endpos__4_, _startpos__4_) = (_endpos__3_inlined1_, _startpos_xs_) in @@ -17863,16 +18447,16 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2876 "parsing/parser.mly" +# 2897 "parsing/parser.mly" ( mkpatvar ~loc:_sloc _1 ) -# 17869 "parsing/parser.ml" +# 18453 "parsing/parser.ml" in let _startpos__2_ = _startpos__1_inlined1_ in let _1 = -# 3816 "parsing/parser.mly" +# 3915 "parsing/parser.mly" ( true ) -# 17876 "parsing/parser.ml" +# 18460 "parsing/parser.ml" in let _endpos = _endpos__6_ in let _symbolstartpos = if _startpos__1_ != _endpos__1_ then @@ -17883,17 +18467,23 @@ module Tables = struct let _loc__1_ = (_startpos__1_, _endpos__1_) in let _sloc = (_symbolstartpos, _endpos) in -# 2904 "parsing/parser.mly" +# 2925 "parsing/parser.mly" ( let patloc = (_startpos__2_, _endpos__4_) in + let bound_vars, inner_type = _4 in + let ltyp = Jane_syntax.Layouts.Ltyp_poly { bound_vars; inner_type } in + let typ_loc = Location.ghostify (make_loc _loc__4_) in + let typ = + Jane_syntax.Layouts.type_of ~loc:typ_loc ~attrs:[] ltyp + in let pat = mkpat_local_if _1 (ghpat ~loc:patloc - (Ppat_constraint(_2, ghtyp ~loc:(_loc__4_) _4))) + (Ppat_constraint(_2, typ))) _loc__1_ in let exp = mkexp_local_if _1 ~loc:_sloc ~kwd_loc:(_loc__1_) _6 in (pat, exp) ) -# 17897 "parsing/parser.ml" +# 18487 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -17926,9 +18516,9 @@ module Tables = struct MenhirLib.EngineTypes.endp = _endpos__5_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = xs; - MenhirLib.EngineTypes.startp = _startpos_xs_; - MenhirLib.EngineTypes.endp = _endpos_xs_; + MenhirLib.EngineTypes.semv = _4; + MenhirLib.EngineTypes.startp = _startpos__4_; + MenhirLib.EngineTypes.endp = _endpos__4_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; MenhirLib.EngineTypes.semv = _3; @@ -17957,38 +18547,33 @@ module Tables = struct let _7 : unit = Obj.magic _7 in let _6 : (Parsetree.core_type) = Obj.magic _6 in let _5 : unit = Obj.magic _5 in - let xs : (string Asttypes.loc list) = Obj.magic xs in + let _4 : ((string Asttypes.loc * Asttypes.layout_annotation option) list) = Obj.magic _4 in let _3 : unit = Obj.magic _3 in let _2 : unit = Obj.magic _2 in let _1 : (Asttypes.label) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in let _endpos = _endpos__8_ in - let _v : (Parsetree.pattern * Parsetree.expression) = let _4 = -# 2873 "parsing/parser.mly" - ( xs ) -# 17971 "parsing/parser.ml" - in - let _1 = + let _v : (Parsetree.pattern * Parsetree.expression) = let _1 = let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2876 "parsing/parser.mly" +# 2897 "parsing/parser.mly" ( mkpatvar ~loc:_sloc _1 ) -# 17980 "parsing/parser.ml" +# 18565 "parsing/parser.ml" in let _endpos = _endpos__8_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2914 "parsing/parser.mly" +# 2941 "parsing/parser.mly" ( let exp, poly = wrap_type_annotation ~loc:_sloc _4 _6 _8 in let loc = (_startpos__1_, _endpos__6_) in (ghpat ~loc (Ppat_constraint(_1, poly)), exp) ) -# 17992 "parsing/parser.ml" +# 18577 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -18025,9 +18610,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : (Parsetree.pattern * Parsetree.expression) = -# 2919 "parsing/parser.mly" +# 2946 "parsing/parser.mly" ( (_1, _3) ) -# 18031 "parsing/parser.ml" +# 18616 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -18078,10 +18663,10 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__5_ in let _v : (Parsetree.pattern * Parsetree.expression) = -# 2921 "parsing/parser.mly" +# 2948 "parsing/parser.mly" ( let loc = (_startpos__1_, _endpos__3_) in (ghpat ~loc (Ppat_constraint(_1, _3)), _5) ) -# 18085 "parsing/parser.ml" +# 18670 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -18123,9 +18708,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2876 "parsing/parser.mly" +# 2897 "parsing/parser.mly" ( mkpatvar ~loc:_sloc _1 ) -# 18129 "parsing/parser.ml" +# 18714 "parsing/parser.ml" in let _endpos = _endpos__3_ in @@ -18133,9 +18718,9 @@ module Tables = struct let _loc__1_ = (_startpos__1_, _endpos__1_) in let _sloc = (_symbolstartpos, _endpos) in -# 2924 "parsing/parser.mly" +# 2951 "parsing/parser.mly" ( (_2, mkexp_stack ~loc:_sloc ~kwd_loc:(_loc__1_) _3) ) -# 18139 "parsing/parser.ml" +# 18724 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -18196,36 +18781,36 @@ module Tables = struct let attrs2 = let _1 = _1_inlined2 in -# 4367 "parsing/parser.mly" +# 4472 "parsing/parser.mly" ( _1 ) -# 18202 "parsing/parser.ml" +# 18787 "parsing/parser.ml" in let _endpos_attrs2_ = _endpos__1_inlined2_ in let attrs1 = let _1 = _1_inlined1 in -# 4371 "parsing/parser.mly" +# 4476 "parsing/parser.mly" ( _1 ) -# 18211 "parsing/parser.ml" +# 18796 "parsing/parser.ml" in let _endpos = _endpos_attrs2_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2951 "parsing/parser.mly" +# 2978 "parsing/parser.mly" ( let attrs = attrs1 @ attrs2 in mklbs ext rec_flag (mklb ~loc:_sloc true body attrs) ) -# 18223 "parsing/parser.ml" +# 18808 "parsing/parser.ml" in -# 2941 "parsing/parser.mly" +# 2968 "parsing/parser.mly" ( _1 ) -# 18229 "parsing/parser.ml" +# 18814 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -18255,9 +18840,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (let_bindings) = -# 2942 "parsing/parser.mly" +# 2969 "parsing/parser.mly" ( addlb _1 _2 ) -# 18261 "parsing/parser.ml" +# 18846 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -18311,41 +18896,41 @@ module Tables = struct let attrs2 = let _1 = _1_inlined2 in -# 4367 "parsing/parser.mly" +# 4472 "parsing/parser.mly" ( _1 ) -# 18317 "parsing/parser.ml" +# 18902 "parsing/parser.ml" in let _endpos_attrs2_ = _endpos__1_inlined2_ in let attrs1 = let _1 = _1_inlined1 in -# 4371 "parsing/parser.mly" +# 4476 "parsing/parser.mly" ( _1 ) -# 18326 "parsing/parser.ml" +# 18911 "parsing/parser.ml" in let ext = -# 4378 "parsing/parser.mly" +# 4483 "parsing/parser.mly" ( None ) -# 18332 "parsing/parser.ml" +# 18917 "parsing/parser.ml" in let _endpos = _endpos_attrs2_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2951 "parsing/parser.mly" +# 2978 "parsing/parser.mly" ( let attrs = attrs1 @ attrs2 in mklbs ext rec_flag (mklb ~loc:_sloc true body attrs) ) -# 18343 "parsing/parser.ml" +# 18928 "parsing/parser.ml" in -# 2941 "parsing/parser.mly" +# 2968 "parsing/parser.mly" ( _1 ) -# 18349 "parsing/parser.ml" +# 18934 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -18413,18 +18998,18 @@ module Tables = struct let attrs2 = let _1 = _1_inlined3 in -# 4367 "parsing/parser.mly" +# 4472 "parsing/parser.mly" ( _1 ) -# 18419 "parsing/parser.ml" +# 19004 "parsing/parser.ml" in let _endpos_attrs2_ = _endpos__1_inlined3_ in let attrs1 = let _1 = _1_inlined2 in -# 4371 "parsing/parser.mly" +# 4476 "parsing/parser.mly" ( _1 ) -# 18428 "parsing/parser.ml" +# 19013 "parsing/parser.ml" in let ext = @@ -18433,27 +19018,27 @@ module Tables = struct let _startpos = _startpos__1_ in let _loc = (_startpos, _endpos) in -# 4380 "parsing/parser.mly" +# 4485 "parsing/parser.mly" ( not_expecting _loc "extension" ) -# 18439 "parsing/parser.ml" +# 19024 "parsing/parser.ml" in let _endpos = _endpos_attrs2_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2951 "parsing/parser.mly" +# 2978 "parsing/parser.mly" ( let attrs = attrs1 @ attrs2 in mklbs ext rec_flag (mklb ~loc:_sloc true body attrs) ) -# 18451 "parsing/parser.ml" +# 19036 "parsing/parser.ml" in -# 2941 "parsing/parser.mly" +# 2968 "parsing/parser.mly" ( _1 ) -# 18457 "parsing/parser.ml" +# 19042 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -18483,9 +19068,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (let_bindings) = -# 2942 "parsing/parser.mly" +# 2969 "parsing/parser.mly" ( addlb _1 _2 ) -# 18489 "parsing/parser.ml" +# 19074 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -18508,9 +19093,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Parsetree.pattern) = -# 2505 "parsing/parser.mly" +# 2520 "parsing/parser.mly" ( _1 ) -# 18514 "parsing/parser.ml" +# 19099 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -18548,24 +19133,24 @@ module Tables = struct let _endpos = _endpos__3_ in let _v : (Parsetree.pattern) = let _1 = let _1 = -# 2507 "parsing/parser.mly" +# 2522 "parsing/parser.mly" ( Ppat_constraint(_1, _3) ) -# 18554 "parsing/parser.ml" +# 19139 "parsing/parser.ml" in let _endpos__1_ = _endpos__3_ in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1149 "parsing/parser.mly" +# 1158 "parsing/parser.mly" ( mkpat ~loc:_sloc _1 ) -# 18563 "parsing/parser.ml" +# 19148 "parsing/parser.ml" in -# 2508 "parsing/parser.mly" +# 2523 "parsing/parser.mly" ( _1 ) -# 18569 "parsing/parser.ml" +# 19154 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -18578,9 +19163,9 @@ module Tables = struct let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in let { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = ty; - MenhirLib.EngineTypes.startp = _startpos_ty_; - MenhirLib.EngineTypes.endp = _endpos_ty_; + MenhirLib.EngineTypes.semv = inner_type; + MenhirLib.EngineTypes.startp = _startpos_inner_type_; + MenhirLib.EngineTypes.endp = _endpos_inner_type_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; MenhirLib.EngineTypes.semv = _2_inlined1; @@ -18607,80 +19192,80 @@ module Tables = struct }; }; } = _menhir_stack in - let ty : (Parsetree.core_type) = Obj.magic ty in + let inner_type : (Parsetree.core_type) = Obj.magic inner_type in let _2_inlined1 : unit = Obj.magic _2_inlined1 in - let xs : (Asttypes.label Asttypes.loc list) = Obj.magic xs in + let xs : ((Asttypes.label Asttypes.loc * Asttypes.layout_annotation option) list) = Obj.magic xs in let _2 : unit = Obj.magic _2 in let pat : (Parsetree.pattern) = Obj.magic pat in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos_pat_ in - let _endpos = _endpos_ty_ in + let _endpos = _endpos_inner_type_ in let _v : (Parsetree.pattern) = let _1 = let _1 = let _1 = let cty = let _1 = - let vars = + let bound_vars = let _1 = let xs = # 253 "" ( List.rev xs ) -# 18629 "parsing/parser.ml" +# 19214 "parsing/parser.ml" in -# 1216 "parsing/parser.mly" +# 1228 "parsing/parser.mly" ( xs ) -# 18634 "parsing/parser.ml" +# 19219 "parsing/parser.ml" in -# 3709 "parsing/parser.mly" +# 3798 "parsing/parser.mly" ( _1 ) -# 18640 "parsing/parser.ml" +# 19225 "parsing/parser.ml" in -# 2517 "parsing/parser.mly" - ( Ptyp_poly(vars, ty) ) -# 18646 "parsing/parser.ml" +# 2534 "parsing/parser.mly" + ( Jane_syntax.Layouts.Ltyp_poly { bound_vars; inner_type } ) +# 19231 "parsing/parser.ml" in - let (_endpos__1_, _startpos__1_) = (_endpos_ty_, _startpos_xs_) in + let (_endpos__1_, _startpos__1_) = (_endpos_inner_type_, _startpos_xs_) in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1151 "parsing/parser.mly" - ( mktyp ~loc:_sloc _1 ) -# 18656 "parsing/parser.ml" +# 1187 "parsing/parser.mly" + ( Jane_syntax.Layouts.type_of ~loc:(make_loc _sloc) ~attrs:[] _1 ) +# 19241 "parsing/parser.ml" in -# 2518 "parsing/parser.mly" +# 2535 "parsing/parser.mly" ( Ppat_constraint(pat, cty) ) -# 18662 "parsing/parser.ml" +# 19247 "parsing/parser.ml" in - let (_endpos__1_, _startpos__1_) = (_endpos_ty_, _startpos_pat_) in + let (_endpos__1_, _startpos__1_) = (_endpos_inner_type_, _startpos_pat_) in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1149 "parsing/parser.mly" +# 1158 "parsing/parser.mly" ( mkpat ~loc:_sloc _1 ) -# 18672 "parsing/parser.ml" +# 19257 "parsing/parser.ml" in -# 2519 "parsing/parser.mly" +# 2536 "parsing/parser.mly" ( _1 ) -# 18678 "parsing/parser.ml" +# 19263 "parsing/parser.ml" in -# 2510 "parsing/parser.mly" +# 2525 "parsing/parser.mly" ( _1 ) -# 18684 "parsing/parser.ml" +# 19269 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -18714,15 +19299,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2876 "parsing/parser.mly" +# 2897 "parsing/parser.mly" ( mkpatvar ~loc:_sloc _1 ) -# 18720 "parsing/parser.ml" +# 19305 "parsing/parser.ml" in -# 2968 "parsing/parser.mly" +# 2995 "parsing/parser.mly" ( (pat, exp) ) -# 18726 "parsing/parser.ml" +# 19311 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -18748,9 +19333,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _loc = (_startpos, _endpos) in -# 2971 "parsing/parser.mly" +# 2998 "parsing/parser.mly" ( (mkpatvar ~loc:_loc _1, mkexpvar ~loc:_loc _1) ) -# 18754 "parsing/parser.ml" +# 19339 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -18801,10 +19386,10 @@ module Tables = struct let _startpos = _startpos_pat_ in let _endpos = _endpos_exp_ in let _v : (Parsetree.pattern * Parsetree.expression) = -# 2973 "parsing/parser.mly" +# 3000 "parsing/parser.mly" ( let loc = (_startpos_pat_, _endpos_typ_) in (ghpat ~loc (Ppat_constraint(pat, typ)), exp) ) -# 18808 "parsing/parser.ml" +# 19393 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -18841,9 +19426,9 @@ module Tables = struct let _startpos = _startpos_pat_ in let _endpos = _endpos_exp_ in let _v : (Parsetree.pattern * Parsetree.expression) = -# 2976 "parsing/parser.mly" +# 3003 "parsing/parser.mly" ( (pat, exp) ) -# 18847 "parsing/parser.ml" +# 19432 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -18866,10 +19451,10 @@ module Tables = struct let _startpos = _startpos_body_ in let _endpos = _endpos_body_ in let _v : (Parsetree.pattern * Parsetree.expression * Parsetree.binding_op list) = -# 2980 "parsing/parser.mly" +# 3007 "parsing/parser.mly" ( let let_pat, let_exp = body in let_pat, let_exp, [] ) -# 18873 "parsing/parser.ml" +# 19458 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -18901,9 +19486,9 @@ module Tables = struct } = _menhir_stack in let body : (Parsetree.pattern * Parsetree.expression) = Obj.magic body in let _1 : ( -# 909 "parsing/parser.mly" +# 918 "parsing/parser.mly" (string) -# 18907 "parsing/parser.ml" +# 19492 "parsing/parser.ml" ) = Obj.magic _1 in let bindings : (Parsetree.pattern * Parsetree.expression * Parsetree.binding_op list) = Obj.magic bindings in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in @@ -18914,22 +19499,22 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1114 "parsing/parser.mly" +# 1123 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 18920 "parsing/parser.ml" +# 19505 "parsing/parser.ml" in let _endpos = _endpos_body_ in let _symbolstartpos = _startpos_bindings_ in let _sloc = (_symbolstartpos, _endpos) in -# 2983 "parsing/parser.mly" +# 3010 "parsing/parser.mly" ( let let_pat, let_exp, rev_ands = bindings in let pbop_pat, pbop_exp = body in let pbop_loc = make_loc _sloc in let and_ = {pbop_op; pbop_pat; pbop_exp; pbop_loc} in let_pat, let_exp, and_ :: rev_ands ) -# 18933 "parsing/parser.ml" +# 19518 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -18947,7 +19532,7 @@ module Tables = struct let _v : (Parsetree.class_declaration list) = # 211 "" ( [] ) -# 18951 "parsing/parser.ml" +# 19536 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -19011,9 +19596,9 @@ module Tables = struct let _1_inlined3 : (Parsetree.attributes) = Obj.magic _1_inlined3 in let body : (Parsetree.class_expr) = Obj.magic body in let _1_inlined2 : ( -# 928 "parsing/parser.mly" +# 937 "parsing/parser.mly" (string) -# 19017 "parsing/parser.ml" +# 19602 "parsing/parser.ml" ) = Obj.magic _1_inlined2 in let params : ((Parsetree.core_type * (Asttypes.variance * Asttypes.injectivity)) list) = Obj.magic params in let virt : (Asttypes.virtual_flag) = Obj.magic virt in @@ -19026,9 +19611,9 @@ module Tables = struct let attrs2 = let _1 = _1_inlined3 in -# 4367 "parsing/parser.mly" +# 4472 "parsing/parser.mly" ( _1 ) -# 19032 "parsing/parser.ml" +# 19617 "parsing/parser.ml" in let _endpos_attrs2_ = _endpos__1_inlined3_ in @@ -19038,24 +19623,24 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1114 "parsing/parser.mly" +# 1123 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 19044 "parsing/parser.ml" +# 19629 "parsing/parser.ml" in let attrs1 = let _1 = _1_inlined1 in -# 4371 "parsing/parser.mly" +# 4476 "parsing/parser.mly" ( _1 ) -# 19052 "parsing/parser.ml" +# 19637 "parsing/parser.ml" in let _endpos = _endpos_attrs2_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2093 "parsing/parser.mly" +# 2105 "parsing/parser.mly" ( let attrs = attrs1 @ attrs2 in let loc = make_loc _sloc in @@ -19063,13 +19648,13 @@ module Tables = struct let text = symbol_text _symbolstartpos in Ci.mk id body ~virt ~params ~attrs ~loc ~text ~docs ) -# 19067 "parsing/parser.ml" +# 19652 "parsing/parser.ml" in # 213 "" ( x :: xs ) -# 19073 "parsing/parser.ml" +# 19658 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -19087,7 +19672,7 @@ module Tables = struct let _v : (Parsetree.class_description list) = # 211 "" ( [] ) -# 19091 "parsing/parser.ml" +# 19676 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -19158,9 +19743,9 @@ module Tables = struct let cty : (Parsetree.class_type) = Obj.magic cty in let _6 : unit = Obj.magic _6 in let _1_inlined2 : ( -# 928 "parsing/parser.mly" +# 937 "parsing/parser.mly" (string) -# 19164 "parsing/parser.ml" +# 19749 "parsing/parser.ml" ) = Obj.magic _1_inlined2 in let params : ((Parsetree.core_type * (Asttypes.variance * Asttypes.injectivity)) list) = Obj.magic params in let virt : (Asttypes.virtual_flag) = Obj.magic virt in @@ -19173,9 +19758,9 @@ module Tables = struct let attrs2 = let _1 = _1_inlined3 in -# 4367 "parsing/parser.mly" +# 4472 "parsing/parser.mly" ( _1 ) -# 19179 "parsing/parser.ml" +# 19764 "parsing/parser.ml" in let _endpos_attrs2_ = _endpos__1_inlined3_ in @@ -19185,24 +19770,24 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1114 "parsing/parser.mly" +# 1123 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 19191 "parsing/parser.ml" +# 19776 "parsing/parser.ml" in let attrs1 = let _1 = _1_inlined1 in -# 4371 "parsing/parser.mly" +# 4476 "parsing/parser.mly" ( _1 ) -# 19199 "parsing/parser.ml" +# 19784 "parsing/parser.ml" in let _endpos = _endpos_attrs2_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2384 "parsing/parser.mly" +# 2396 "parsing/parser.mly" ( let attrs = attrs1 @ attrs2 in let loc = make_loc _sloc in @@ -19210,13 +19795,13 @@ module Tables = struct let text = symbol_text _symbolstartpos in Ci.mk id cty ~virt ~params ~attrs ~loc ~text ~docs ) -# 19214 "parsing/parser.ml" +# 19799 "parsing/parser.ml" in # 213 "" ( x :: xs ) -# 19220 "parsing/parser.ml" +# 19805 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -19234,7 +19819,7 @@ module Tables = struct let _v : (Parsetree.class_type_declaration list) = # 211 "" ( [] ) -# 19238 "parsing/parser.ml" +# 19823 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -19305,9 +19890,9 @@ module Tables = struct let csig : (Parsetree.class_type) = Obj.magic csig in let _6 : unit = Obj.magic _6 in let _1_inlined2 : ( -# 928 "parsing/parser.mly" +# 937 "parsing/parser.mly" (string) -# 19311 "parsing/parser.ml" +# 19896 "parsing/parser.ml" ) = Obj.magic _1_inlined2 in let params : ((Parsetree.core_type * (Asttypes.variance * Asttypes.injectivity)) list) = Obj.magic params in let virt : (Asttypes.virtual_flag) = Obj.magic virt in @@ -19320,9 +19905,9 @@ module Tables = struct let attrs2 = let _1 = _1_inlined3 in -# 4367 "parsing/parser.mly" +# 4472 "parsing/parser.mly" ( _1 ) -# 19326 "parsing/parser.ml" +# 19911 "parsing/parser.ml" in let _endpos_attrs2_ = _endpos__1_inlined3_ in @@ -19332,24 +19917,24 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1114 "parsing/parser.mly" +# 1123 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 19338 "parsing/parser.ml" +# 19923 "parsing/parser.ml" in let attrs1 = let _1 = _1_inlined1 in -# 4371 "parsing/parser.mly" +# 4476 "parsing/parser.mly" ( _1 ) -# 19346 "parsing/parser.ml" +# 19931 "parsing/parser.ml" in let _endpos = _endpos_attrs2_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2423 "parsing/parser.mly" +# 2435 "parsing/parser.mly" ( let attrs = attrs1 @ attrs2 in let loc = make_loc _sloc in @@ -19357,13 +19942,13 @@ module Tables = struct let text = symbol_text _symbolstartpos in Ci.mk id csig ~virt ~params ~attrs ~loc ~text ~docs ) -# 19361 "parsing/parser.ml" +# 19946 "parsing/parser.ml" in # 213 "" ( x :: xs ) -# 19367 "parsing/parser.ml" +# 19952 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -19381,7 +19966,7 @@ module Tables = struct let _v : (Parsetree.module_binding list) = # 211 "" ( [] ) -# 19385 "parsing/parser.ml" +# 19970 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -19442,9 +20027,9 @@ module Tables = struct let attrs2 = let _1 = _1_inlined3 in -# 4367 "parsing/parser.mly" +# 4472 "parsing/parser.mly" ( _1 ) -# 19448 "parsing/parser.ml" +# 20033 "parsing/parser.ml" in let _endpos_attrs2_ = _endpos__1_inlined3_ in @@ -19454,24 +20039,24 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1114 "parsing/parser.mly" +# 1123 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 19460 "parsing/parser.ml" +# 20045 "parsing/parser.ml" in let attrs1 = let _1 = _1_inlined1 in -# 4371 "parsing/parser.mly" +# 4476 "parsing/parser.mly" ( _1 ) -# 19468 "parsing/parser.ml" +# 20053 "parsing/parser.ml" in let _endpos = _endpos_attrs2_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1739 "parsing/parser.mly" +# 1751 "parsing/parser.mly" ( let loc = make_loc _sloc in let attrs = attrs1 @ attrs2 in @@ -19479,13 +20064,13 @@ module Tables = struct let text = symbol_text _symbolstartpos in Mb.mk name body ~attrs ~loc ~text ~docs ) -# 19483 "parsing/parser.ml" +# 20068 "parsing/parser.ml" in # 213 "" ( x :: xs ) -# 19489 "parsing/parser.ml" +# 20074 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -19503,7 +20088,7 @@ module Tables = struct let _v : (Parsetree.module_declaration list) = # 211 "" ( [] ) -# 19507 "parsing/parser.ml" +# 20092 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -19571,9 +20156,9 @@ module Tables = struct let attrs2 = let _1 = _1_inlined3 in -# 4367 "parsing/parser.mly" +# 4472 "parsing/parser.mly" ( _1 ) -# 19577 "parsing/parser.ml" +# 20162 "parsing/parser.ml" in let _endpos_attrs2_ = _endpos__1_inlined3_ in @@ -19583,24 +20168,24 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1114 "parsing/parser.mly" +# 1123 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 19589 "parsing/parser.ml" +# 20174 "parsing/parser.ml" in let attrs1 = let _1 = _1_inlined1 in -# 4371 "parsing/parser.mly" +# 4476 "parsing/parser.mly" ( _1 ) -# 19597 "parsing/parser.ml" +# 20182 "parsing/parser.ml" in let _endpos = _endpos_attrs2_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2034 "parsing/parser.mly" +# 2046 "parsing/parser.mly" ( let attrs = attrs1 @ attrs2 in let docs = symbol_docs _sloc in @@ -19608,13 +20193,13 @@ module Tables = struct let text = symbol_text _symbolstartpos in Md.mk name mty ~attrs ~loc ~text ~docs ) -# 19612 "parsing/parser.ml" +# 20197 "parsing/parser.ml" in # 213 "" ( x :: xs ) -# 19618 "parsing/parser.ml" +# 20203 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -19632,7 +20217,7 @@ module Tables = struct let _v : (Parsetree.attributes) = # 211 "" ( [] ) -# 19636 "parsing/parser.ml" +# 20221 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -19664,7 +20249,7 @@ module Tables = struct let _v : (Parsetree.attributes) = # 213 "" ( x :: xs ) -# 19668 "parsing/parser.ml" +# 20253 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -19682,7 +20267,7 @@ module Tables = struct let _v : (Parsetree.type_declaration list) = # 211 "" ( [] ) -# 19686 "parsing/parser.ml" +# 20271 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -19715,25 +20300,31 @@ module Tables = struct MenhirLib.EngineTypes.endp = _endpos_kind_priv_manifest_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _1_inlined2; - MenhirLib.EngineTypes.startp = _startpos__1_inlined2_; - MenhirLib.EngineTypes.endp = _endpos__1_inlined2_; + MenhirLib.EngineTypes.semv = layout; + MenhirLib.EngineTypes.startp = _startpos_layout_; + MenhirLib.EngineTypes.endp = _endpos_layout_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = params; - MenhirLib.EngineTypes.startp = _startpos_params_; - MenhirLib.EngineTypes.endp = _endpos_params_; + MenhirLib.EngineTypes.semv = _1_inlined2; + MenhirLib.EngineTypes.startp = _startpos__1_inlined2_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined2_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _1_inlined1; - MenhirLib.EngineTypes.startp = _startpos__1_inlined1_; - MenhirLib.EngineTypes.endp = _endpos__1_inlined1_; + MenhirLib.EngineTypes.semv = params; + MenhirLib.EngineTypes.startp = _startpos_params_; + MenhirLib.EngineTypes.endp = _endpos_params_; MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; - MenhirLib.EngineTypes.next = _menhir_stack; + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _1_inlined1; + MenhirLib.EngineTypes.startp = _startpos__1_inlined1_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined1_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + }; }; }; }; @@ -19746,10 +20337,11 @@ module Tables = struct let _1_inlined3 : (Parsetree.attributes) = Obj.magic _1_inlined3 in let xs_inlined1 : ((Parsetree.core_type * Parsetree.core_type * Ast_helper.loc) list) = Obj.magic xs_inlined1 in let kind_priv_manifest : (Parsetree.type_kind * Asttypes.private_flag * Parsetree.core_type option) = Obj.magic kind_priv_manifest in + let layout : (Parsetree.attribute option) = Obj.magic layout in let _1_inlined2 : ( -# 928 "parsing/parser.mly" +# 937 "parsing/parser.mly" (string) -# 19753 "parsing/parser.ml" +# 20345 "parsing/parser.ml" ) = Obj.magic _1_inlined2 in let params : ((Parsetree.core_type * (Asttypes.variance * Asttypes.injectivity)) list) = Obj.magic params in let _1_inlined1 : (Parsetree.attributes) = Obj.magic _1_inlined1 in @@ -19762,9 +20354,9 @@ module Tables = struct let attrs2 = let _1 = _1_inlined3 in -# 4367 "parsing/parser.mly" +# 4472 "parsing/parser.mly" ( _1 ) -# 19768 "parsing/parser.ml" +# 20360 "parsing/parser.ml" in let _endpos_attrs2_ = _endpos__1_inlined3_ in @@ -19773,18 +20365,18 @@ module Tables = struct let xs = # 253 "" ( List.rev xs ) -# 19777 "parsing/parser.ml" +# 20369 "parsing/parser.ml" in -# 1198 "parsing/parser.mly" +# 1210 "parsing/parser.mly" ( xs ) -# 19782 "parsing/parser.ml" +# 20374 "parsing/parser.ml" in -# 3398 "parsing/parser.mly" +# 3444 "parsing/parser.mly" ( _1 ) -# 19788 "parsing/parser.ml" +# 20380 "parsing/parser.ml" in let id = @@ -19793,39 +20385,39 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1114 "parsing/parser.mly" +# 1123 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 19799 "parsing/parser.ml" +# 20391 "parsing/parser.ml" in let attrs1 = let _1 = _1_inlined1 in -# 4371 "parsing/parser.mly" +# 4476 "parsing/parser.mly" ( _1 ) -# 19807 "parsing/parser.ml" +# 20399 "parsing/parser.ml" in let _endpos = _endpos_attrs2_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 3387 "parsing/parser.mly" +# 3433 "parsing/parser.mly" ( let (kind, priv, manifest) = kind_priv_manifest in let docs = symbol_docs _sloc in let attrs = attrs1 @ attrs2 in let loc = make_loc _sloc in let text = symbol_text _symbolstartpos in - Type.mk id ~params ~cstrs ~kind ~priv ?manifest ~attrs ~loc ~docs ~text + Type.mk id ~params ?layout ~cstrs ~kind ~priv ?manifest ~attrs ~loc ~docs ~text ) -# 19823 "parsing/parser.ml" +# 20415 "parsing/parser.ml" in # 213 "" ( x :: xs ) -# 19829 "parsing/parser.ml" +# 20421 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -19843,7 +20435,7 @@ module Tables = struct let _v : (Parsetree.type_declaration list) = # 211 "" ( [] ) -# 19847 "parsing/parser.ml" +# 20439 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -19881,25 +20473,31 @@ module Tables = struct MenhirLib.EngineTypes.endp = _endpos__1_inlined3_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _1_inlined2; - MenhirLib.EngineTypes.startp = _startpos__1_inlined2_; - MenhirLib.EngineTypes.endp = _endpos__1_inlined2_; + MenhirLib.EngineTypes.semv = layout; + MenhirLib.EngineTypes.startp = _startpos_layout_; + MenhirLib.EngineTypes.endp = _endpos_layout_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = params; - MenhirLib.EngineTypes.startp = _startpos_params_; - MenhirLib.EngineTypes.endp = _endpos_params_; + MenhirLib.EngineTypes.semv = _1_inlined2; + MenhirLib.EngineTypes.startp = _startpos__1_inlined2_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined2_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _1_inlined1; - MenhirLib.EngineTypes.startp = _startpos__1_inlined1_; - MenhirLib.EngineTypes.endp = _endpos__1_inlined1_; + MenhirLib.EngineTypes.semv = params; + MenhirLib.EngineTypes.startp = _startpos_params_; + MenhirLib.EngineTypes.endp = _endpos_params_; MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; - MenhirLib.EngineTypes.next = _menhir_stack; + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _1_inlined1; + MenhirLib.EngineTypes.startp = _startpos__1_inlined1_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined1_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + }; }; }; }; @@ -19914,10 +20512,11 @@ module Tables = struct let xs_inlined1 : ((Parsetree.core_type * Parsetree.core_type * Ast_helper.loc) list) = Obj.magic xs_inlined1 in let _2 : (Parsetree.type_kind * Asttypes.private_flag * Parsetree.core_type option) = Obj.magic _2 in let _1_inlined3 : unit = Obj.magic _1_inlined3 in + let layout : (Parsetree.attribute option) = Obj.magic layout in let _1_inlined2 : ( -# 928 "parsing/parser.mly" +# 937 "parsing/parser.mly" (string) -# 19921 "parsing/parser.ml" +# 20520 "parsing/parser.ml" ) = Obj.magic _1_inlined2 in let params : ((Parsetree.core_type * (Asttypes.variance * Asttypes.injectivity)) list) = Obj.magic params in let _1_inlined1 : (Parsetree.attributes) = Obj.magic _1_inlined1 in @@ -19930,9 +20529,9 @@ module Tables = struct let attrs2 = let _1 = _1_inlined4 in -# 4367 "parsing/parser.mly" +# 4472 "parsing/parser.mly" ( _1 ) -# 19936 "parsing/parser.ml" +# 20535 "parsing/parser.ml" in let _endpos_attrs2_ = _endpos__1_inlined4_ in @@ -19941,24 +20540,24 @@ module Tables = struct let xs = # 253 "" ( List.rev xs ) -# 19945 "parsing/parser.ml" +# 20544 "parsing/parser.ml" in -# 1198 "parsing/parser.mly" +# 1210 "parsing/parser.mly" ( xs ) -# 19950 "parsing/parser.ml" +# 20549 "parsing/parser.ml" in -# 3398 "parsing/parser.mly" +# 3444 "parsing/parser.mly" ( _1 ) -# 19956 "parsing/parser.ml" +# 20555 "parsing/parser.ml" in let kind_priv_manifest = -# 3433 "parsing/parser.mly" +# 3479 "parsing/parser.mly" ( _2 ) -# 19962 "parsing/parser.ml" +# 20561 "parsing/parser.ml" in let id = let (_endpos__1_, _startpos__1_, _1) = (_endpos__1_inlined2_, _startpos__1_inlined2_, _1_inlined2) in @@ -19966,39 +20565,39 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1114 "parsing/parser.mly" +# 1123 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 19972 "parsing/parser.ml" +# 20571 "parsing/parser.ml" in let attrs1 = let _1 = _1_inlined1 in -# 4371 "parsing/parser.mly" +# 4476 "parsing/parser.mly" ( _1 ) -# 19980 "parsing/parser.ml" +# 20579 "parsing/parser.ml" in let _endpos = _endpos_attrs2_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 3387 "parsing/parser.mly" +# 3433 "parsing/parser.mly" ( let (kind, priv, manifest) = kind_priv_manifest in let docs = symbol_docs _sloc in let attrs = attrs1 @ attrs2 in let loc = make_loc _sloc in let text = symbol_text _symbolstartpos in - Type.mk id ~params ~cstrs ~kind ~priv ?manifest ~attrs ~loc ~docs ~text + Type.mk id ~params ?layout ~cstrs ~kind ~priv ?manifest ~attrs ~loc ~docs ~text ) -# 19996 "parsing/parser.ml" +# 20595 "parsing/parser.ml" in # 213 "" ( x :: xs ) -# 20002 "parsing/parser.ml" +# 20601 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -20016,7 +20615,7 @@ module Tables = struct let _v : (Parsetree.attributes) = # 211 "" ( [] ) -# 20020 "parsing/parser.ml" +# 20619 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -20048,7 +20647,7 @@ module Tables = struct let _v : (Parsetree.attributes) = # 213 "" ( x :: xs ) -# 20052 "parsing/parser.ml" +# 20651 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -20066,7 +20665,7 @@ module Tables = struct let _v : (Parsetree.signature_item list list) = # 211 "" ( [] ) -# 20070 "parsing/parser.ml" +# 20669 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -20099,21 +20698,21 @@ module Tables = struct let _1 = let _startpos = _startpos__1_ in -# 1124 "parsing/parser.mly" +# 1133 "parsing/parser.mly" ( text_sig _startpos ) -# 20105 "parsing/parser.ml" +# 20704 "parsing/parser.ml" in -# 1885 "parsing/parser.mly" +# 1897 "parsing/parser.mly" ( _1 ) -# 20111 "parsing/parser.ml" +# 20710 "parsing/parser.ml" in # 213 "" ( x :: xs ) -# 20117 "parsing/parser.ml" +# 20716 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -20146,21 +20745,21 @@ module Tables = struct let _1 = let _startpos = _startpos__1_ in -# 1122 "parsing/parser.mly" +# 1131 "parsing/parser.mly" ( text_sig _startpos @ [_1] ) -# 20152 "parsing/parser.ml" +# 20751 "parsing/parser.ml" in -# 1885 "parsing/parser.mly" +# 1897 "parsing/parser.mly" ( _1 ) -# 20158 "parsing/parser.ml" +# 20757 "parsing/parser.ml" in # 213 "" ( x :: xs ) -# 20164 "parsing/parser.ml" +# 20763 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -20178,7 +20777,7 @@ module Tables = struct let _v : (Parsetree.structure_item list list) = # 211 "" ( [] ) -# 20182 "parsing/parser.ml" +# 20781 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -20211,40 +20810,40 @@ module Tables = struct let _1 = let ys = let items = -# 1184 "parsing/parser.mly" +# 1196 "parsing/parser.mly" ( [] ) -# 20217 "parsing/parser.ml" +# 20816 "parsing/parser.ml" in -# 1613 "parsing/parser.mly" +# 1625 "parsing/parser.mly" ( items ) -# 20222 "parsing/parser.ml" +# 20821 "parsing/parser.ml" in let xs = let _startpos = _startpos__1_ in -# 1120 "parsing/parser.mly" +# 1129 "parsing/parser.mly" ( text_str _startpos ) -# 20230 "parsing/parser.ml" +# 20829 "parsing/parser.ml" in # 267 "" ( xs @ ys ) -# 20236 "parsing/parser.ml" +# 20835 "parsing/parser.ml" in -# 1629 "parsing/parser.mly" +# 1641 "parsing/parser.mly" ( _1 ) -# 20242 "parsing/parser.ml" +# 20841 "parsing/parser.ml" in # 213 "" ( x :: xs ) -# 20248 "parsing/parser.ml" +# 20847 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -20296,70 +20895,70 @@ module Tables = struct let _1 = let _1 = let attrs = -# 4367 "parsing/parser.mly" +# 4472 "parsing/parser.mly" ( _1 ) -# 20302 "parsing/parser.ml" +# 20901 "parsing/parser.ml" in -# 1620 "parsing/parser.mly" +# 1632 "parsing/parser.mly" ( mkstrexp e attrs ) -# 20307 "parsing/parser.ml" +# 20906 "parsing/parser.ml" in let _startpos__1_ = _startpos_e_ in let _startpos = _startpos__1_ in -# 1118 "parsing/parser.mly" +# 1127 "parsing/parser.mly" ( text_str _startpos @ [_1] ) -# 20315 "parsing/parser.ml" +# 20914 "parsing/parser.ml" in let _startpos__1_ = _startpos_e_ in let _endpos = _endpos__1_ in let _startpos = _startpos__1_ in -# 1137 "parsing/parser.mly" +# 1146 "parsing/parser.mly" ( mark_rhs_docs _startpos _endpos; _1 ) -# 20325 "parsing/parser.ml" +# 20924 "parsing/parser.ml" in -# 1186 "parsing/parser.mly" +# 1198 "parsing/parser.mly" ( x ) -# 20331 "parsing/parser.ml" +# 20930 "parsing/parser.ml" in -# 1613 "parsing/parser.mly" +# 1625 "parsing/parser.mly" ( items ) -# 20337 "parsing/parser.ml" +# 20936 "parsing/parser.ml" in let xs = let _startpos = _startpos__1_ in -# 1120 "parsing/parser.mly" +# 1129 "parsing/parser.mly" ( text_str _startpos ) -# 20345 "parsing/parser.ml" +# 20944 "parsing/parser.ml" in # 267 "" ( xs @ ys ) -# 20351 "parsing/parser.ml" +# 20950 "parsing/parser.ml" in -# 1629 "parsing/parser.mly" +# 1641 "parsing/parser.mly" ( _1 ) -# 20357 "parsing/parser.ml" +# 20956 "parsing/parser.ml" in # 213 "" ( x :: xs ) -# 20363 "parsing/parser.ml" +# 20962 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -20392,21 +20991,21 @@ module Tables = struct let _1 = let _startpos = _startpos__1_ in -# 1118 "parsing/parser.mly" +# 1127 "parsing/parser.mly" ( text_str _startpos @ [_1] ) -# 20398 "parsing/parser.ml" +# 20997 "parsing/parser.ml" in -# 1629 "parsing/parser.mly" +# 1641 "parsing/parser.mly" ( _1 ) -# 20404 "parsing/parser.ml" +# 21003 "parsing/parser.ml" in # 213 "" ( x :: xs ) -# 20410 "parsing/parser.ml" +# 21009 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -20424,7 +21023,7 @@ module Tables = struct let _v : (Parsetree.class_type_field list list) = # 211 "" ( [] ) -# 20428 "parsing/parser.ml" +# 21027 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -20456,15 +21055,15 @@ module Tables = struct let _v : (Parsetree.class_type_field list list) = let x = let _startpos = _startpos__1_ in -# 1132 "parsing/parser.mly" +# 1141 "parsing/parser.mly" ( text_csig _startpos @ [_1] ) -# 20462 "parsing/parser.ml" +# 21061 "parsing/parser.ml" in # 213 "" ( x :: xs ) -# 20468 "parsing/parser.ml" +# 21067 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -20482,7 +21081,7 @@ module Tables = struct let _v : (Parsetree.class_field list list) = # 211 "" ( [] ) -# 20486 "parsing/parser.ml" +# 21085 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -20514,15 +21113,15 @@ module Tables = struct let _v : (Parsetree.class_field list list) = let x = let _startpos = _startpos__1_ in -# 1130 "parsing/parser.mly" +# 1139 "parsing/parser.mly" ( text_cstr _startpos @ [_1] ) -# 20520 "parsing/parser.ml" +# 21119 "parsing/parser.ml" in # 213 "" ( x :: xs ) -# 20526 "parsing/parser.ml" +# 21125 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -20540,7 +21139,7 @@ module Tables = struct let _v : (Parsetree.structure_item list list) = # 211 "" ( [] ) -# 20544 "parsing/parser.ml" +# 21143 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -20572,15 +21171,15 @@ module Tables = struct let _v : (Parsetree.structure_item list list) = let x = let _startpos = _startpos__1_ in -# 1118 "parsing/parser.mly" +# 1127 "parsing/parser.mly" ( text_str _startpos @ [_1] ) -# 20578 "parsing/parser.ml" +# 21177 "parsing/parser.ml" in # 213 "" ( x :: xs ) -# 20584 "parsing/parser.ml" +# 21183 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -20598,7 +21197,7 @@ module Tables = struct let _v : (Parsetree.toplevel_phrase list list) = # 211 "" ( [] ) -# 20602 "parsing/parser.ml" +# 21201 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -20631,32 +21230,32 @@ module Tables = struct let _1 = let x = let _1 = -# 1184 "parsing/parser.mly" +# 1196 "parsing/parser.mly" ( [] ) -# 20637 "parsing/parser.ml" +# 21236 "parsing/parser.ml" in -# 1416 "parsing/parser.mly" +# 1428 "parsing/parser.mly" ( _1 ) -# 20642 "parsing/parser.ml" +# 21241 "parsing/parser.ml" in # 183 "" ( x ) -# 20648 "parsing/parser.ml" +# 21247 "parsing/parser.ml" in -# 1428 "parsing/parser.mly" +# 1440 "parsing/parser.mly" ( _1 ) -# 20654 "parsing/parser.ml" +# 21253 "parsing/parser.ml" in # 213 "" ( x :: xs ) -# 20660 "parsing/parser.ml" +# 21259 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -20708,58 +21307,58 @@ module Tables = struct let _1 = let _1 = let attrs = -# 4367 "parsing/parser.mly" +# 4472 "parsing/parser.mly" ( _1 ) -# 20714 "parsing/parser.ml" +# 21313 "parsing/parser.ml" in -# 1620 "parsing/parser.mly" +# 1632 "parsing/parser.mly" ( mkstrexp e attrs ) -# 20719 "parsing/parser.ml" +# 21318 "parsing/parser.ml" in -# 1128 "parsing/parser.mly" +# 1137 "parsing/parser.mly" ( Ptop_def [_1] ) -# 20725 "parsing/parser.ml" +# 21324 "parsing/parser.ml" in let _startpos__1_ = _startpos_e_ in let _startpos = _startpos__1_ in -# 1126 "parsing/parser.mly" +# 1135 "parsing/parser.mly" ( text_def _startpos @ [_1] ) -# 20733 "parsing/parser.ml" +# 21332 "parsing/parser.ml" in -# 1186 "parsing/parser.mly" +# 1198 "parsing/parser.mly" ( x ) -# 20739 "parsing/parser.ml" +# 21338 "parsing/parser.ml" in -# 1416 "parsing/parser.mly" +# 1428 "parsing/parser.mly" ( _1 ) -# 20745 "parsing/parser.ml" +# 21344 "parsing/parser.ml" in # 183 "" ( x ) -# 20751 "parsing/parser.ml" +# 21350 "parsing/parser.ml" in -# 1428 "parsing/parser.mly" +# 1440 "parsing/parser.mly" ( _1 ) -# 20757 "parsing/parser.ml" +# 21356 "parsing/parser.ml" in # 213 "" ( x :: xs ) -# 20763 "parsing/parser.ml" +# 21362 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -20791,27 +21390,27 @@ module Tables = struct let _v : (Parsetree.toplevel_phrase list list) = let x = let _1 = let _1 = -# 1128 "parsing/parser.mly" +# 1137 "parsing/parser.mly" ( Ptop_def [_1] ) -# 20797 "parsing/parser.ml" +# 21396 "parsing/parser.ml" in let _startpos = _startpos__1_ in -# 1126 "parsing/parser.mly" +# 1135 "parsing/parser.mly" ( text_def _startpos @ [_1] ) -# 20803 "parsing/parser.ml" +# 21402 "parsing/parser.ml" in -# 1428 "parsing/parser.mly" +# 1440 "parsing/parser.mly" ( _1 ) -# 20809 "parsing/parser.ml" +# 21408 "parsing/parser.ml" in # 213 "" ( x :: xs ) -# 20815 "parsing/parser.ml" +# 21414 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -20846,29 +21445,29 @@ module Tables = struct let _endpos = _endpos__1_ in let _startpos = _startpos__1_ in -# 1137 "parsing/parser.mly" +# 1146 "parsing/parser.mly" ( mark_rhs_docs _startpos _endpos; _1 ) -# 20853 "parsing/parser.ml" +# 21452 "parsing/parser.ml" in let _startpos = _startpos__1_ in -# 1126 "parsing/parser.mly" +# 1135 "parsing/parser.mly" ( text_def _startpos @ [_1] ) -# 20860 "parsing/parser.ml" +# 21459 "parsing/parser.ml" in -# 1428 "parsing/parser.mly" +# 1440 "parsing/parser.mly" ( _1 ) -# 20866 "parsing/parser.ml" +# 21465 "parsing/parser.ml" in # 213 "" ( x :: xs ) -# 20872 "parsing/parser.ml" +# 21471 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -20907,7 +21506,7 @@ module Tables = struct let _v : ((Longident.t Asttypes.loc * Parsetree.pattern) list * unit option) = let _2 = # 124 "" ( None ) -# 20911 "parsing/parser.ml" +# 21510 "parsing/parser.ml" in let x = let label = @@ -20915,9 +21514,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1114 "parsing/parser.mly" +# 1123 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 20921 "parsing/parser.ml" +# 21520 "parsing/parser.ml" in let _startpos_label_ = _startpos__1_ in @@ -20925,7 +21524,7 @@ module Tables = struct let _symbolstartpos = _startpos_label_ in let _sloc = (_symbolstartpos, _endpos) in -# 3273 "parsing/parser.mly" +# 3317 "parsing/parser.mly" ( let constraint_loc, label, pat = match opat with | None -> @@ -20939,13 +21538,13 @@ module Tables = struct in label, mkpat_opt_constraint ~loc:constraint_loc pat octy ) -# 20943 "parsing/parser.ml" +# 21542 "parsing/parser.ml" in -# 1353 "parsing/parser.mly" +# 1365 "parsing/parser.mly" ( [x], None ) -# 20949 "parsing/parser.ml" +# 21548 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -20991,7 +21590,7 @@ module Tables = struct let _v : ((Longident.t Asttypes.loc * Parsetree.pattern) list * unit option) = let _2 = # 126 "" ( Some x ) -# 20995 "parsing/parser.ml" +# 21594 "parsing/parser.ml" in let x = let label = @@ -20999,9 +21598,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1114 "parsing/parser.mly" +# 1123 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 21005 "parsing/parser.ml" +# 21604 "parsing/parser.ml" in let _startpos_label_ = _startpos__1_ in @@ -21009,7 +21608,7 @@ module Tables = struct let _symbolstartpos = _startpos_label_ in let _sloc = (_symbolstartpos, _endpos) in -# 3273 "parsing/parser.mly" +# 3317 "parsing/parser.mly" ( let constraint_loc, label, pat = match opat with | None -> @@ -21023,13 +21622,13 @@ module Tables = struct in label, mkpat_opt_constraint ~loc:constraint_loc pat octy ) -# 21027 "parsing/parser.ml" +# 21626 "parsing/parser.ml" in -# 1353 "parsing/parser.mly" +# 1365 "parsing/parser.mly" ( [x], None ) -# 21033 "parsing/parser.ml" +# 21632 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -21092,9 +21691,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1114 "parsing/parser.mly" +# 1123 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 21098 "parsing/parser.ml" +# 21697 "parsing/parser.ml" in let _startpos_label_ = _startpos__1_ in @@ -21102,7 +21701,7 @@ module Tables = struct let _symbolstartpos = _startpos_label_ in let _sloc = (_symbolstartpos, _endpos) in -# 3273 "parsing/parser.mly" +# 3317 "parsing/parser.mly" ( let constraint_loc, label, pat = match opat with | None -> @@ -21116,13 +21715,13 @@ module Tables = struct in label, mkpat_opt_constraint ~loc:constraint_loc pat octy ) -# 21120 "parsing/parser.ml" +# 21719 "parsing/parser.ml" in -# 1355 "parsing/parser.mly" +# 1367 "parsing/parser.mly" ( [x], Some y ) -# 21126 "parsing/parser.ml" +# 21725 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -21178,9 +21777,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1114 "parsing/parser.mly" +# 1123 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 21184 "parsing/parser.ml" +# 21783 "parsing/parser.ml" in let _startpos_label_ = _startpos__1_ in @@ -21188,7 +21787,7 @@ module Tables = struct let _symbolstartpos = _startpos_label_ in let _sloc = (_symbolstartpos, _endpos) in -# 3273 "parsing/parser.mly" +# 3317 "parsing/parser.mly" ( let constraint_loc, label, pat = match opat with | None -> @@ -21202,14 +21801,14 @@ module Tables = struct in label, mkpat_opt_constraint ~loc:constraint_loc pat octy ) -# 21206 "parsing/parser.ml" +# 21805 "parsing/parser.ml" in -# 1359 "parsing/parser.mly" +# 1371 "parsing/parser.mly" ( let xs, y = tail in x :: xs, y ) -# 21213 "parsing/parser.ml" +# 21812 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -21232,9 +21831,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Parsetree.expression) = -# 3005 "parsing/parser.mly" +# 3034 "parsing/parser.mly" ( _1 ) -# 21238 "parsing/parser.ml" +# 21837 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -21274,9 +21873,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 3007 "parsing/parser.mly" +# 3036 "parsing/parser.mly" ( wrap_exp_stack (mkexp_constraint ~loc:_sloc _3 _1) (make_loc _sloc) ) -# 21280 "parsing/parser.ml" +# 21879 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -21306,9 +21905,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (Parsetree.expression) = -# 3011 "parsing/parser.mly" +# 3040 "parsing/parser.mly" ( _2 ) -# 21312 "parsing/parser.ml" +# 21911 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -21341,9 +21940,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 3013 "parsing/parser.mly" +# 3042 "parsing/parser.mly" ( let (l, o, p) = _1 in ghexp ~loc:_sloc (Pexp_fun(l, o, p, _2)) ) -# 21347 "parsing/parser.ml" +# 21946 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -21366,9 +21965,9 @@ module Tables = struct MenhirLib.EngineTypes.endp = _endpos__4_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = xs; - MenhirLib.EngineTypes.startp = _startpos_xs_; - MenhirLib.EngineTypes.endp = _endpos_xs_; + MenhirLib.EngineTypes.semv = _3; + MenhirLib.EngineTypes.startp = _startpos__3_; + MenhirLib.EngineTypes.endp = _endpos__3_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; MenhirLib.EngineTypes.semv = _2; @@ -21387,24 +21986,104 @@ module Tables = struct } = _menhir_stack in let _5 : (Parsetree.expression) = Obj.magic _5 in let _4 : unit = Obj.magic _4 in - let xs : (string Asttypes.loc list) = Obj.magic xs in + let _3 : ((string Asttypes.loc * Asttypes.layout_annotation option) list) = Obj.magic _3 in let _2 : unit = Obj.magic _2 in let _1 : unit = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in let _endpos = _endpos__5_ in - let _v : (Parsetree.expression) = let _3 = -# 2873 "parsing/parser.mly" - ( xs ) -# 21400 "parsing/parser.ml" - in - let _endpos = _endpos__5_ in + let _v : (Parsetree.expression) = let _endpos = _endpos__5_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 3015 "parsing/parser.mly" +# 3044 "parsing/parser.mly" ( mk_newtypes ~loc:_sloc _3 _5 ) -# 21408 "parsing/parser.ml" +# 22002 "parsing/parser.ml" + in + { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = Obj.repr _v; + MenhirLib.EngineTypes.startp = _startpos; + MenhirLib.EngineTypes.endp = _endpos; + MenhirLib.EngineTypes.next = _menhir_stack; + }); + (fun _menhir_env -> + let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in + let { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _7; + MenhirLib.EngineTypes.startp = _startpos__7_; + MenhirLib.EngineTypes.endp = _endpos__7_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _6; + MenhirLib.EngineTypes.startp = _startpos__6_; + MenhirLib.EngineTypes.endp = _endpos__6_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _5; + MenhirLib.EngineTypes.startp = _startpos__5_; + MenhirLib.EngineTypes.endp = _endpos__5_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _4; + MenhirLib.EngineTypes.startp = _startpos__4_; + MenhirLib.EngineTypes.endp = _endpos__4_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _1_inlined1; + MenhirLib.EngineTypes.startp = _startpos__1_inlined1_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined1_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _2; + MenhirLib.EngineTypes.startp = _startpos__2_; + MenhirLib.EngineTypes.endp = _endpos__2_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + }; + }; + }; + }; + }; + }; + } = _menhir_stack in + let _7 : (Parsetree.expression) = Obj.magic _7 in + let _6 : unit = Obj.magic _6 in + let _5 : (Asttypes.layout_annotation) = Obj.magic _5 in + let _4 : unit = Obj.magic _4 in + let _1_inlined1 : ( +# 937 "parsing/parser.mly" + (string) +# 22063 "parsing/parser.ml" + ) = Obj.magic _1_inlined1 in + let _2 : unit = Obj.magic _2 in + let _1 : unit = Obj.magic _1 in + let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in + let _startpos = _startpos__1_ in + let _endpos = _endpos__7_ in + let _v : (Parsetree.expression) = let _3 = + let (_endpos__1_, _startpos__1_, _1) = (_endpos__1_inlined1_, _startpos__1_inlined1_, _1_inlined1) in + let _endpos = _endpos__1_ in + let _symbolstartpos = _startpos__1_ in + let _sloc = (_symbolstartpos, _endpos) in + +# 1123 "parsing/parser.mly" + ( mkrhs _1 _sloc ) +# 22078 "parsing/parser.ml" + + in + let _endpos = _endpos__7_ in + let _symbolstartpos = _startpos__1_ in + let _sloc = (_symbolstartpos, _endpos) in + +# 3046 "parsing/parser.mly" + ( mk_newtypes ~loc:_sloc [_3, Some _5] _7 ) +# 22087 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -21441,9 +22120,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : (Parsetree.case) = -# 3023 "parsing/parser.mly" +# 3054 "parsing/parser.mly" ( Exp.case _1 _3 ) -# 21447 "parsing/parser.ml" +# 22126 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -21494,9 +22173,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__5_ in let _v : (Parsetree.case) = -# 3025 "parsing/parser.mly" +# 3056 "parsing/parser.mly" ( Exp.case _1 ~guard:_3 _5 ) -# 21500 "parsing/parser.ml" +# 22179 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -21534,9 +22213,9 @@ module Tables = struct let _endpos = _endpos__3_ in let _v : (Parsetree.case) = let _loc__3_ = (_startpos__3_, _endpos__3_) in -# 3027 "parsing/parser.mly" +# 3058 "parsing/parser.mly" ( Exp.case _1 (Exp.unreachable ~loc:(make_loc _loc__3_) ()) ) -# 21540 "parsing/parser.ml" +# 22219 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -21597,9 +22276,9 @@ module Tables = struct let _1_inlined1 : (Parsetree.core_type) = Obj.magic _1_inlined1 in let _2 : unit = Obj.magic _2 in let _1 : ( -# 928 "parsing/parser.mly" +# 937 "parsing/parser.mly" (string) -# 21603 "parsing/parser.ml" +# 22282 "parsing/parser.ml" ) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in @@ -21608,49 +22287,49 @@ module Tables = struct let _6 = let _1 = _1_inlined3 in -# 4371 "parsing/parser.mly" +# 4476 "parsing/parser.mly" ( _1 ) -# 21614 "parsing/parser.ml" +# 22293 "parsing/parser.ml" in let _endpos__6_ = _endpos__1_inlined3_ in let _4 = let _1 = _1_inlined2 in -# 4371 "parsing/parser.mly" +# 4476 "parsing/parser.mly" ( _1 ) -# 21623 "parsing/parser.ml" +# 22302 "parsing/parser.ml" in let _endpos__4_ = _endpos__1_inlined2_ in let _3 = let _1 = _1_inlined1 in -# 3727 "parsing/parser.mly" +# 3818 "parsing/parser.mly" ( _1 ) -# 21632 "parsing/parser.ml" +# 22311 "parsing/parser.ml" in let _1 = let _1 = -# 4002 "parsing/parser.mly" +# 4106 "parsing/parser.mly" ( _1 ) -# 21639 "parsing/parser.ml" +# 22318 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1114 "parsing/parser.mly" +# 1123 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 21647 "parsing/parser.ml" +# 22326 "parsing/parser.ml" in let _endpos = _endpos__6_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 3987 "parsing/parser.mly" +# 4091 "parsing/parser.mly" ( let info = match rhs_info _endpos__4_ with | Some _ as info_before_semi -> info_before_semi @@ -21658,13 +22337,13 @@ module Tables = struct in let attrs = add_info_attrs info (_4 @ _6) in Of.tag ~loc:(make_loc _sloc) ~attrs _1 _3 ) -# 21662 "parsing/parser.ml" +# 22341 "parsing/parser.ml" in -# 3968 "parsing/parser.mly" +# 4072 "parsing/parser.mly" ( let (f, c) = tail in (head :: f, c) ) -# 21668 "parsing/parser.ml" +# 22347 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -21705,15 +22384,15 @@ module Tables = struct let _symbolstartpos = _startpos_ty_ in let _sloc = (_symbolstartpos, _endpos) in -# 3998 "parsing/parser.mly" +# 4102 "parsing/parser.mly" ( Of.inherit_ ~loc:(make_loc _sloc) ty ) -# 21711 "parsing/parser.ml" +# 22390 "parsing/parser.ml" in -# 3968 "parsing/parser.mly" +# 4072 "parsing/parser.mly" ( let (f, c) = tail in (head :: f, c) ) -# 21717 "parsing/parser.ml" +# 22396 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -21767,9 +22446,9 @@ module Tables = struct let _1_inlined1 : (Parsetree.core_type) = Obj.magic _1_inlined1 in let _2 : unit = Obj.magic _2 in let _1 : ( -# 928 "parsing/parser.mly" +# 937 "parsing/parser.mly" (string) -# 21773 "parsing/parser.ml" +# 22452 "parsing/parser.ml" ) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in @@ -21778,49 +22457,49 @@ module Tables = struct let _6 = let _1 = _1_inlined3 in -# 4371 "parsing/parser.mly" +# 4476 "parsing/parser.mly" ( _1 ) -# 21784 "parsing/parser.ml" +# 22463 "parsing/parser.ml" in let _endpos__6_ = _endpos__1_inlined3_ in let _4 = let _1 = _1_inlined2 in -# 4371 "parsing/parser.mly" +# 4476 "parsing/parser.mly" ( _1 ) -# 21793 "parsing/parser.ml" +# 22472 "parsing/parser.ml" in let _endpos__4_ = _endpos__1_inlined2_ in let _3 = let _1 = _1_inlined1 in -# 3727 "parsing/parser.mly" +# 3818 "parsing/parser.mly" ( _1 ) -# 21802 "parsing/parser.ml" +# 22481 "parsing/parser.ml" in let _1 = let _1 = -# 4002 "parsing/parser.mly" +# 4106 "parsing/parser.mly" ( _1 ) -# 21809 "parsing/parser.ml" +# 22488 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1114 "parsing/parser.mly" +# 1123 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 21817 "parsing/parser.ml" +# 22496 "parsing/parser.ml" in let _endpos = _endpos__6_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 3987 "parsing/parser.mly" +# 4091 "parsing/parser.mly" ( let info = match rhs_info _endpos__4_ with | Some _ as info_before_semi -> info_before_semi @@ -21828,13 +22507,13 @@ module Tables = struct in let attrs = add_info_attrs info (_4 @ _6) in Of.tag ~loc:(make_loc _sloc) ~attrs _1 _3 ) -# 21832 "parsing/parser.ml" +# 22511 "parsing/parser.ml" in -# 3971 "parsing/parser.mly" +# 4075 "parsing/parser.mly" ( [head], Closed ) -# 21838 "parsing/parser.ml" +# 22517 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -21868,15 +22547,15 @@ module Tables = struct let _symbolstartpos = _startpos_ty_ in let _sloc = (_symbolstartpos, _endpos) in -# 3998 "parsing/parser.mly" +# 4102 "parsing/parser.mly" ( Of.inherit_ ~loc:(make_loc _sloc) ty ) -# 21874 "parsing/parser.ml" +# 22553 "parsing/parser.ml" in -# 3971 "parsing/parser.mly" +# 4075 "parsing/parser.mly" ( [head], Closed ) -# 21880 "parsing/parser.ml" +# 22559 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -21916,9 +22595,9 @@ module Tables = struct let _1_inlined1 : (Parsetree.core_type) = Obj.magic _1_inlined1 in let _2 : unit = Obj.magic _2 in let _1 : ( -# 928 "parsing/parser.mly" +# 937 "parsing/parser.mly" (string) -# 21922 "parsing/parser.ml" +# 22601 "parsing/parser.ml" ) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in @@ -21927,50 +22606,50 @@ module Tables = struct let _4 = let _1 = _1_inlined2 in -# 4371 "parsing/parser.mly" +# 4476 "parsing/parser.mly" ( _1 ) -# 21933 "parsing/parser.ml" +# 22612 "parsing/parser.ml" in let _endpos__4_ = _endpos__1_inlined2_ in let _3 = let _1 = _1_inlined1 in -# 3727 "parsing/parser.mly" +# 3818 "parsing/parser.mly" ( _1 ) -# 21942 "parsing/parser.ml" +# 22621 "parsing/parser.ml" in let _1 = let _1 = -# 4002 "parsing/parser.mly" +# 4106 "parsing/parser.mly" ( _1 ) -# 21949 "parsing/parser.ml" +# 22628 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1114 "parsing/parser.mly" +# 1123 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 21957 "parsing/parser.ml" +# 22636 "parsing/parser.ml" in let _endpos = _endpos__4_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 3980 "parsing/parser.mly" +# 4084 "parsing/parser.mly" ( let info = symbol_info _endpos in let attrs = add_info_attrs info _4 in Of.tag ~loc:(make_loc _sloc) ~attrs _1 _3 ) -# 21968 "parsing/parser.ml" +# 22647 "parsing/parser.ml" in -# 3974 "parsing/parser.mly" +# 4078 "parsing/parser.mly" ( [head], Closed ) -# 21974 "parsing/parser.ml" +# 22653 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -21997,15 +22676,15 @@ module Tables = struct let _symbolstartpos = _startpos_ty_ in let _sloc = (_symbolstartpos, _endpos) in -# 3998 "parsing/parser.mly" +# 4102 "parsing/parser.mly" ( Of.inherit_ ~loc:(make_loc _sloc) ty ) -# 22003 "parsing/parser.ml" +# 22682 "parsing/parser.ml" in -# 3974 "parsing/parser.mly" +# 4078 "parsing/parser.mly" ( [head], Closed ) -# 22009 "parsing/parser.ml" +# 22688 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -22028,9 +22707,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Parsetree.object_field list * Asttypes.closed_flag) = -# 3976 "parsing/parser.mly" +# 4080 "parsing/parser.mly" ( [], Open ) -# 22034 "parsing/parser.ml" +# 22713 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -22075,9 +22754,9 @@ module Tables = struct let _1_inlined2 : (Parsetree.core_type) = Obj.magic _1_inlined2 in let _5 : unit = Obj.magic _5 in let _1_inlined1 : ( -# 928 "parsing/parser.mly" +# 937 "parsing/parser.mly" (string) -# 22081 "parsing/parser.ml" +# 22760 "parsing/parser.ml" ) = Obj.magic _1_inlined1 in let private_ : (Asttypes.private_flag) = Obj.magic private_ in let _1 : (Parsetree.attributes) = Obj.magic _1 in @@ -22089,41 +22768,41 @@ module Tables = struct Parsetree.attributes) = let ty = let _1 = _1_inlined2 in -# 3723 "parsing/parser.mly" +# 3814 "parsing/parser.mly" ( _1 ) -# 22095 "parsing/parser.ml" +# 22774 "parsing/parser.ml" in let label = let (_endpos__1_, _startpos__1_, _1) = (_endpos__1_inlined1_, _startpos__1_inlined1_, _1_inlined1) in let _1 = -# 4002 "parsing/parser.mly" +# 4106 "parsing/parser.mly" ( _1 ) -# 22103 "parsing/parser.ml" +# 22782 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1114 "parsing/parser.mly" +# 1123 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 22111 "parsing/parser.ml" +# 22790 "parsing/parser.ml" in let attrs = -# 4371 "parsing/parser.mly" +# 4476 "parsing/parser.mly" ( _1 ) -# 22117 "parsing/parser.ml" +# 22796 "parsing/parser.ml" in let _1 = -# 4269 "parsing/parser.mly" +# 4374 "parsing/parser.mly" ( Fresh ) -# 22122 "parsing/parser.ml" +# 22801 "parsing/parser.ml" in -# 2231 "parsing/parser.mly" +# 2243 "parsing/parser.mly" ( (label, private_, Cfk_virtual ty), attrs ) -# 22127 "parsing/parser.ml" +# 22806 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -22161,9 +22840,9 @@ module Tables = struct } = _menhir_stack in let _5 : (Parsetree.expression) = Obj.magic _5 in let _1_inlined1 : ( -# 928 "parsing/parser.mly" +# 937 "parsing/parser.mly" (string) -# 22167 "parsing/parser.ml" +# 22846 "parsing/parser.ml" ) = Obj.magic _1_inlined1 in let _3 : (Asttypes.private_flag) = Obj.magic _3 in let _1 : (Parsetree.attributes) = Obj.magic _1 in @@ -22175,36 +22854,36 @@ module Tables = struct Parsetree.attributes) = let _4 = let (_endpos__1_, _startpos__1_, _1) = (_endpos__1_inlined1_, _startpos__1_inlined1_, _1_inlined1) in let _1 = -# 4002 "parsing/parser.mly" +# 4106 "parsing/parser.mly" ( _1 ) -# 22181 "parsing/parser.ml" +# 22860 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1114 "parsing/parser.mly" +# 1123 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 22189 "parsing/parser.ml" +# 22868 "parsing/parser.ml" in let _2 = -# 4371 "parsing/parser.mly" +# 4476 "parsing/parser.mly" ( _1 ) -# 22195 "parsing/parser.ml" +# 22874 "parsing/parser.ml" in let _1 = -# 4272 "parsing/parser.mly" +# 4377 "parsing/parser.mly" ( Fresh ) -# 22200 "parsing/parser.ml" +# 22879 "parsing/parser.ml" in -# 2233 "parsing/parser.mly" +# 2245 "parsing/parser.mly" ( let e = _5 in let loc = Location.(e.pexp_loc.loc_start, e.pexp_loc.loc_end) in (_4, _3, Cfk_concrete (_1, ghexp ~loc (Pexp_poly (e, None)))), _2 ) -# 22208 "parsing/parser.ml" +# 22887 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -22248,9 +22927,9 @@ module Tables = struct } = _menhir_stack in let _5 : (Parsetree.expression) = Obj.magic _5 in let _1_inlined2 : ( -# 928 "parsing/parser.mly" +# 937 "parsing/parser.mly" (string) -# 22254 "parsing/parser.ml" +# 22933 "parsing/parser.ml" ) = Obj.magic _1_inlined2 in let _3 : (Asttypes.private_flag) = Obj.magic _3 in let _1_inlined1 : (Parsetree.attributes) = Obj.magic _1_inlined1 in @@ -22263,39 +22942,39 @@ module Tables = struct Parsetree.attributes) = let _4 = let (_endpos__1_, _startpos__1_, _1) = (_endpos__1_inlined2_, _startpos__1_inlined2_, _1_inlined2) in let _1 = -# 4002 "parsing/parser.mly" +# 4106 "parsing/parser.mly" ( _1 ) -# 22269 "parsing/parser.ml" +# 22948 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1114 "parsing/parser.mly" +# 1123 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 22277 "parsing/parser.ml" +# 22956 "parsing/parser.ml" in let _2 = let _1 = _1_inlined1 in -# 4371 "parsing/parser.mly" +# 4476 "parsing/parser.mly" ( _1 ) -# 22285 "parsing/parser.ml" +# 22964 "parsing/parser.ml" in let _1 = -# 4273 "parsing/parser.mly" +# 4378 "parsing/parser.mly" ( Override ) -# 22291 "parsing/parser.ml" +# 22970 "parsing/parser.ml" in -# 2233 "parsing/parser.mly" +# 2245 "parsing/parser.mly" ( let e = _5 in let loc = Location.(e.pexp_loc.loc_start, e.pexp_loc.loc_end) in (_4, _3, Cfk_concrete (_1, ghexp ~loc (Pexp_poly (e, None)))), _2 ) -# 22299 "parsing/parser.ml" +# 22978 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -22354,9 +23033,9 @@ module Tables = struct let _1_inlined2 : (Parsetree.core_type) = Obj.magic _1_inlined2 in let _5 : unit = Obj.magic _5 in let _1_inlined1 : ( -# 928 "parsing/parser.mly" +# 937 "parsing/parser.mly" (string) -# 22360 "parsing/parser.ml" +# 23039 "parsing/parser.ml" ) = Obj.magic _1_inlined1 in let _3 : (Asttypes.private_flag) = Obj.magic _3 in let _1 : (Parsetree.attributes) = Obj.magic _1 in @@ -22368,45 +23047,45 @@ module Tables = struct Parsetree.attributes) = let _6 = let _1 = _1_inlined2 in -# 3723 "parsing/parser.mly" +# 3814 "parsing/parser.mly" ( _1 ) -# 22374 "parsing/parser.ml" +# 23053 "parsing/parser.ml" in let _startpos__6_ = _startpos__1_inlined2_ in let _4 = let (_endpos__1_, _startpos__1_, _1) = (_endpos__1_inlined1_, _startpos__1_inlined1_, _1_inlined1) in let _1 = -# 4002 "parsing/parser.mly" +# 4106 "parsing/parser.mly" ( _1 ) -# 22383 "parsing/parser.ml" +# 23062 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1114 "parsing/parser.mly" +# 1123 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 22391 "parsing/parser.ml" +# 23070 "parsing/parser.ml" in let _2 = -# 4371 "parsing/parser.mly" +# 4476 "parsing/parser.mly" ( _1 ) -# 22397 "parsing/parser.ml" +# 23076 "parsing/parser.ml" in let _1 = -# 4272 "parsing/parser.mly" +# 4377 "parsing/parser.mly" ( Fresh ) -# 22402 "parsing/parser.ml" +# 23081 "parsing/parser.ml" in -# 2239 "parsing/parser.mly" +# 2251 "parsing/parser.mly" ( let poly_exp = let loc = (_startpos__6_, _endpos__8_) in ghexp ~loc (Pexp_poly(_8, Some _6)) in (_4, _3, Cfk_concrete (_1, poly_exp)), _2 ) -# 22410 "parsing/parser.ml" +# 23089 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -22471,9 +23150,9 @@ module Tables = struct let _1_inlined3 : (Parsetree.core_type) = Obj.magic _1_inlined3 in let _5 : unit = Obj.magic _5 in let _1_inlined2 : ( -# 928 "parsing/parser.mly" +# 937 "parsing/parser.mly" (string) -# 22477 "parsing/parser.ml" +# 23156 "parsing/parser.ml" ) = Obj.magic _1_inlined2 in let _3 : (Asttypes.private_flag) = Obj.magic _3 in let _1_inlined1 : (Parsetree.attributes) = Obj.magic _1_inlined1 in @@ -22486,48 +23165,48 @@ module Tables = struct Parsetree.attributes) = let _6 = let _1 = _1_inlined3 in -# 3723 "parsing/parser.mly" +# 3814 "parsing/parser.mly" ( _1 ) -# 22492 "parsing/parser.ml" +# 23171 "parsing/parser.ml" in let _startpos__6_ = _startpos__1_inlined3_ in let _4 = let (_endpos__1_, _startpos__1_, _1) = (_endpos__1_inlined2_, _startpos__1_inlined2_, _1_inlined2) in let _1 = -# 4002 "parsing/parser.mly" +# 4106 "parsing/parser.mly" ( _1 ) -# 22501 "parsing/parser.ml" +# 23180 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1114 "parsing/parser.mly" +# 1123 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 22509 "parsing/parser.ml" +# 23188 "parsing/parser.ml" in let _2 = let _1 = _1_inlined1 in -# 4371 "parsing/parser.mly" +# 4476 "parsing/parser.mly" ( _1 ) -# 22517 "parsing/parser.ml" +# 23196 "parsing/parser.ml" in let _1 = -# 4273 "parsing/parser.mly" +# 4378 "parsing/parser.mly" ( Override ) -# 22523 "parsing/parser.ml" +# 23202 "parsing/parser.ml" in -# 2239 "parsing/parser.mly" +# 2251 "parsing/parser.mly" ( let poly_exp = let loc = (_startpos__6_, _endpos__8_) in ghexp ~loc (Pexp_poly(_8, Some _6)) in (_4, _3, Cfk_concrete (_1, poly_exp)), _2 ) -# 22531 "parsing/parser.ml" +# 23210 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -22560,9 +23239,9 @@ module Tables = struct MenhirLib.EngineTypes.endp = _endpos__8_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = xs; - MenhirLib.EngineTypes.startp = _startpos_xs_; - MenhirLib.EngineTypes.endp = _endpos_xs_; + MenhirLib.EngineTypes.semv = _7; + MenhirLib.EngineTypes.startp = _startpos__7_; + MenhirLib.EngineTypes.endp = _endpos__7_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; MenhirLib.EngineTypes.semv = _6; @@ -22603,13 +23282,13 @@ module Tables = struct let _10 : unit = Obj.magic _10 in let _9 : (Parsetree.core_type) = Obj.magic _9 in let _8 : unit = Obj.magic _8 in - let xs : (string Asttypes.loc list) = Obj.magic xs in + let _7 : ((string Asttypes.loc * Asttypes.layout_annotation option) list) = Obj.magic _7 in let _6 : unit = Obj.magic _6 in let _5 : unit = Obj.magic _5 in let _1_inlined1 : ( -# 928 "parsing/parser.mly" +# 937 "parsing/parser.mly" (string) -# 22613 "parsing/parser.ml" +# 23292 "parsing/parser.ml" ) = Obj.magic _1_inlined1 in let _3 : (Asttypes.private_flag) = Obj.magic _3 in let _1 : (Parsetree.attributes) = Obj.magic _1 in @@ -22618,39 +23297,33 @@ module Tables = struct let _endpos = _endpos__11_ in let _v : ((Asttypes.label Asttypes.loc * Asttypes.private_flag * Parsetree.class_field_kind) * - Parsetree.attributes) = let _7 = -# 2873 "parsing/parser.mly" - ( xs ) -# 22625 "parsing/parser.ml" - in - let _startpos__7_ = _startpos_xs_ in - let _4 = + Parsetree.attributes) = let _4 = let (_endpos__1_, _startpos__1_, _1) = (_endpos__1_inlined1_, _startpos__1_inlined1_, _1_inlined1) in let _1 = -# 4002 "parsing/parser.mly" +# 4106 "parsing/parser.mly" ( _1 ) -# 22633 "parsing/parser.ml" +# 23306 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1114 "parsing/parser.mly" +# 1123 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 22641 "parsing/parser.ml" +# 23314 "parsing/parser.ml" in let _startpos__4_ = _startpos__1_inlined1_ in let _2 = -# 4371 "parsing/parser.mly" +# 4476 "parsing/parser.mly" ( _1 ) -# 22648 "parsing/parser.ml" +# 23321 "parsing/parser.ml" in let (_endpos__2_, _startpos__2_) = (_endpos__1_, _startpos__1_) in let _1 = -# 4272 "parsing/parser.mly" +# 4377 "parsing/parser.mly" ( Fresh ) -# 22654 "parsing/parser.ml" +# 23327 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos__0_, _endpos__0_) in let _endpos = _endpos__11_ in @@ -22666,7 +23339,7 @@ module Tables = struct _startpos__4_ in let _sloc = (_symbolstartpos, _endpos) in -# 2245 "parsing/parser.mly" +# 2257 "parsing/parser.mly" ( let poly_exp_loc = (_startpos__7_, _endpos__11_) in let poly_exp = let exp, poly = @@ -22677,7 +23350,7 @@ module Tables = struct ghexp ~loc:poly_exp_loc (Pexp_poly(exp, Some poly)) in (_4, _3, Cfk_concrete (_1, poly_exp)), _2 ) -# 22681 "parsing/parser.ml" +# 23354 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -22710,9 +23383,9 @@ module Tables = struct MenhirLib.EngineTypes.endp = _endpos__8_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = xs; - MenhirLib.EngineTypes.startp = _startpos_xs_; - MenhirLib.EngineTypes.endp = _endpos_xs_; + MenhirLib.EngineTypes.semv = _7; + MenhirLib.EngineTypes.startp = _startpos__7_; + MenhirLib.EngineTypes.endp = _endpos__7_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; MenhirLib.EngineTypes.semv = _6; @@ -22759,13 +23432,13 @@ module Tables = struct let _10 : unit = Obj.magic _10 in let _9 : (Parsetree.core_type) = Obj.magic _9 in let _8 : unit = Obj.magic _8 in - let xs : (string Asttypes.loc list) = Obj.magic xs in + let _7 : ((string Asttypes.loc * Asttypes.layout_annotation option) list) = Obj.magic _7 in let _6 : unit = Obj.magic _6 in let _5 : unit = Obj.magic _5 in let _1_inlined2 : ( -# 928 "parsing/parser.mly" +# 937 "parsing/parser.mly" (string) -# 22769 "parsing/parser.ml" +# 23442 "parsing/parser.ml" ) = Obj.magic _1_inlined2 in let _3 : (Asttypes.private_flag) = Obj.magic _3 in let _1_inlined1 : (Parsetree.attributes) = Obj.magic _1_inlined1 in @@ -22775,42 +23448,36 @@ module Tables = struct let _endpos = _endpos__11_ in let _v : ((Asttypes.label Asttypes.loc * Asttypes.private_flag * Parsetree.class_field_kind) * - Parsetree.attributes) = let _7 = -# 2873 "parsing/parser.mly" - ( xs ) -# 22782 "parsing/parser.ml" - in - let _startpos__7_ = _startpos_xs_ in - let _4 = + Parsetree.attributes) = let _4 = let (_endpos__1_, _startpos__1_, _1) = (_endpos__1_inlined2_, _startpos__1_inlined2_, _1_inlined2) in let _1 = -# 4002 "parsing/parser.mly" +# 4106 "parsing/parser.mly" ( _1 ) -# 22790 "parsing/parser.ml" +# 23457 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1114 "parsing/parser.mly" +# 1123 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 22798 "parsing/parser.ml" +# 23465 "parsing/parser.ml" in let _startpos__4_ = _startpos__1_inlined2_ in let _2 = let _1 = _1_inlined1 in -# 4371 "parsing/parser.mly" +# 4476 "parsing/parser.mly" ( _1 ) -# 22807 "parsing/parser.ml" +# 23474 "parsing/parser.ml" in let (_endpos__2_, _startpos__2_) = (_endpos__1_inlined1_, _startpos__1_inlined1_) in let _1 = -# 4273 "parsing/parser.mly" +# 4378 "parsing/parser.mly" ( Override ) -# 22814 "parsing/parser.ml" +# 23481 "parsing/parser.ml" in let _endpos = _endpos__11_ in let _symbolstartpos = if _startpos__1_ != _endpos__1_ then @@ -22825,7 +23492,7 @@ module Tables = struct _startpos__4_ in let _sloc = (_symbolstartpos, _endpos) in -# 2245 "parsing/parser.mly" +# 2257 "parsing/parser.mly" ( let poly_exp_loc = (_startpos__7_, _endpos__11_) in let poly_exp = let exp, poly = @@ -22836,7 +23503,7 @@ module Tables = struct ghexp ~loc:poly_exp_loc (Pexp_poly(exp, Some poly)) in (_4, _3, Cfk_concrete (_1, poly_exp)), _2 ) -# 22840 "parsing/parser.ml" +# 23507 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -22855,17 +23522,17 @@ module Tables = struct MenhirLib.EngineTypes.next = _menhir_stack; } = _menhir_stack in let _1 : ( -# 928 "parsing/parser.mly" +# 937 "parsing/parser.mly" (string) -# 22861 "parsing/parser.ml" +# 23528 "parsing/parser.ml" ) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Longident.t) = -# 4116 "parsing/parser.mly" +# 4220 "parsing/parser.mly" ( Lident _1 ) -# 22869 "parsing/parser.ml" +# 23536 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -22896,9 +23563,9 @@ module Tables = struct }; } = _menhir_stack in let _3 : ( -# 928 "parsing/parser.mly" +# 937 "parsing/parser.mly" (string) -# 22902 "parsing/parser.ml" +# 23569 "parsing/parser.ml" ) = Obj.magic _3 in let _2 : unit = Obj.magic _2 in let _1 : (Longident.t) = Obj.magic _1 in @@ -22906,9 +23573,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : (Longident.t) = -# 4117 "parsing/parser.mly" +# 4221 "parsing/parser.mly" ( Ldot(_1,_3) ) -# 22912 "parsing/parser.ml" +# 23579 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -22927,17 +23594,17 @@ module Tables = struct MenhirLib.EngineTypes.next = _menhir_stack; } = _menhir_stack in let _1 : ( -# 981 "parsing/parser.mly" +# 990 "parsing/parser.mly" (string) -# 22933 "parsing/parser.ml" +# 23600 "parsing/parser.ml" ) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Longident.t) = -# 4116 "parsing/parser.mly" +# 4220 "parsing/parser.mly" ( Lident _1 ) -# 22941 "parsing/parser.ml" +# 23608 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -22968,9 +23635,9 @@ module Tables = struct }; } = _menhir_stack in let _3 : ( -# 981 "parsing/parser.mly" +# 990 "parsing/parser.mly" (string) -# 22974 "parsing/parser.ml" +# 23641 "parsing/parser.ml" ) = Obj.magic _3 in let _2 : unit = Obj.magic _2 in let _1 : (Longident.t) = Obj.magic _1 in @@ -22978,9 +23645,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : (Longident.t) = -# 4117 "parsing/parser.mly" +# 4221 "parsing/parser.mly" ( Ldot(_1,_3) ) -# 22984 "parsing/parser.ml" +# 23651 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -23003,14 +23670,14 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Longident.t) = let _1 = -# 4154 "parsing/parser.mly" +# 4259 "parsing/parser.mly" ( _1 ) -# 23009 "parsing/parser.ml" +# 23676 "parsing/parser.ml" in -# 4116 "parsing/parser.mly" +# 4220 "parsing/parser.mly" ( Lident _1 ) -# 23014 "parsing/parser.ml" +# 23681 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -23048,20 +23715,20 @@ module Tables = struct let _endpos = _endpos__3_ in let _v : (Longident.t) = let _1 = let _1 = -# 4096 "parsing/parser.mly" +# 4200 "parsing/parser.mly" ( "::" ) -# 23054 "parsing/parser.ml" +# 23721 "parsing/parser.ml" in -# 4154 "parsing/parser.mly" +# 4259 "parsing/parser.mly" ( _1 ) -# 23059 "parsing/parser.ml" +# 23726 "parsing/parser.ml" in -# 4116 "parsing/parser.mly" +# 4220 "parsing/parser.mly" ( Lident _1 ) -# 23065 "parsing/parser.ml" +# 23732 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -23084,14 +23751,14 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Longident.t) = let _1 = -# 4154 "parsing/parser.mly" +# 4259 "parsing/parser.mly" ( _1 ) -# 23090 "parsing/parser.ml" +# 23757 "parsing/parser.ml" in -# 4116 "parsing/parser.mly" +# 4220 "parsing/parser.mly" ( Lident _1 ) -# 23095 "parsing/parser.ml" +# 23762 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -23130,15 +23797,15 @@ module Tables = struct let _v : (Longident.t) = let _3 = let _1 = _1_inlined1 in -# 4154 "parsing/parser.mly" +# 4259 "parsing/parser.mly" ( _1 ) -# 23136 "parsing/parser.ml" +# 23803 "parsing/parser.ml" in -# 4117 "parsing/parser.mly" +# 4221 "parsing/parser.mly" ( Ldot(_1,_3) ) -# 23142 "parsing/parser.ml" +# 23809 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -23190,20 +23857,20 @@ module Tables = struct let _endpos = _endpos__3_ in let _v : (Longident.t) = let _3 = let _1 = -# 4096 "parsing/parser.mly" +# 4200 "parsing/parser.mly" ( "::" ) -# 23196 "parsing/parser.ml" +# 23863 "parsing/parser.ml" in -# 4154 "parsing/parser.mly" +# 4259 "parsing/parser.mly" ( _1 ) -# 23201 "parsing/parser.ml" +# 23868 "parsing/parser.ml" in -# 4117 "parsing/parser.mly" +# 4221 "parsing/parser.mly" ( Ldot(_1,_3) ) -# 23207 "parsing/parser.ml" +# 23874 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -23242,15 +23909,15 @@ module Tables = struct let _v : (Longident.t) = let _3 = let _1 = _1_inlined1 in -# 4154 "parsing/parser.mly" +# 4259 "parsing/parser.mly" ( _1 ) -# 23248 "parsing/parser.ml" +# 23915 "parsing/parser.ml" in -# 4117 "parsing/parser.mly" +# 4221 "parsing/parser.mly" ( Ldot(_1,_3) ) -# 23254 "parsing/parser.ml" +# 23921 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -23273,9 +23940,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Longident.t) = -# 4116 "parsing/parser.mly" +# 4220 "parsing/parser.mly" ( Lident _1 ) -# 23279 "parsing/parser.ml" +# 23946 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -23312,9 +23979,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : (Longident.t) = -# 4117 "parsing/parser.mly" +# 4221 "parsing/parser.mly" ( Ldot(_1,_3) ) -# 23318 "parsing/parser.ml" +# 23985 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -23333,17 +24000,17 @@ module Tables = struct MenhirLib.EngineTypes.next = _menhir_stack; } = _menhir_stack in let _1 : ( -# 928 "parsing/parser.mly" +# 937 "parsing/parser.mly" (string) -# 23339 "parsing/parser.ml" +# 24006 "parsing/parser.ml" ) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Longident.t) = -# 4116 "parsing/parser.mly" +# 4220 "parsing/parser.mly" ( Lident _1 ) -# 23347 "parsing/parser.ml" +# 24014 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -23374,9 +24041,9 @@ module Tables = struct }; } = _menhir_stack in let _3 : ( -# 928 "parsing/parser.mly" +# 937 "parsing/parser.mly" (string) -# 23380 "parsing/parser.ml" +# 24047 "parsing/parser.ml" ) = Obj.magic _3 in let _2 : unit = Obj.magic _2 in let _1 : (Longident.t) = Obj.magic _1 in @@ -23384,9 +24051,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : (Longident.t) = -# 4117 "parsing/parser.mly" +# 4221 "parsing/parser.mly" ( Ldot(_1,_3) ) -# 23390 "parsing/parser.ml" +# 24057 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -23405,17 +24072,17 @@ module Tables = struct MenhirLib.EngineTypes.next = _menhir_stack; } = _menhir_stack in let _1 : ( -# 981 "parsing/parser.mly" +# 990 "parsing/parser.mly" (string) -# 23411 "parsing/parser.ml" +# 24078 "parsing/parser.ml" ) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Longident.t) = -# 4116 "parsing/parser.mly" +# 4220 "parsing/parser.mly" ( Lident _1 ) -# 23419 "parsing/parser.ml" +# 24086 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -23446,9 +24113,9 @@ module Tables = struct }; } = _menhir_stack in let _3 : ( -# 981 "parsing/parser.mly" +# 990 "parsing/parser.mly" (string) -# 23452 "parsing/parser.ml" +# 24119 "parsing/parser.ml" ) = Obj.magic _3 in let _2 : unit = Obj.magic _2 in let _1 : (Longident.t) = Obj.magic _1 in @@ -23456,9 +24123,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : (Longident.t) = -# 4117 "parsing/parser.mly" +# 4221 "parsing/parser.mly" ( Ldot(_1,_3) ) -# 23462 "parsing/parser.ml" +# 24129 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -23481,9 +24148,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Longident.t) = -# 4116 "parsing/parser.mly" +# 4220 "parsing/parser.mly" ( Lident _1 ) -# 23487 "parsing/parser.ml" +# 24154 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -23520,9 +24187,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : (Longident.t) = -# 4117 "parsing/parser.mly" +# 4221 "parsing/parser.mly" ( Ldot(_1,_3) ) -# 23526 "parsing/parser.ml" +# 24193 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -23545,9 +24212,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Longident.t) = -# 4132 "parsing/parser.mly" +# 4237 "parsing/parser.mly" ( _1 ) -# 23551 "parsing/parser.ml" +# 24218 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -23594,9 +24261,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 4134 "parsing/parser.mly" +# 4239 "parsing/parser.mly" ( lapply ~loc:_sloc _1 _3 ) -# 23600 "parsing/parser.ml" +# 24267 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -23634,9 +24301,9 @@ module Tables = struct let _endpos = _endpos__3_ in let _v : (Longident.t) = let _loc__3_ = (_startpos__3_, _endpos__3_) in -# 4136 "parsing/parser.mly" +# 4241 "parsing/parser.mly" ( expecting _loc__3_ "module path" ) -# 23640 "parsing/parser.ml" +# 24307 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -23659,9 +24326,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Longident.t) = -# 4129 "parsing/parser.mly" +# 4234 "parsing/parser.mly" ( _1 ) -# 23665 "parsing/parser.ml" +# 24332 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -23691,9 +24358,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos_me_ in let _v : (Parsetree.module_expr) = -# 1698 "parsing/parser.mly" +# 1710 "parsing/parser.mly" ( me ) -# 23697 "parsing/parser.ml" +# 24364 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -23738,24 +24405,24 @@ module Tables = struct let _endpos = _endpos_me_ in let _v : (Parsetree.module_expr) = let _1 = let _1 = -# 1701 "parsing/parser.mly" +# 1713 "parsing/parser.mly" ( Pmod_constraint(me, mty) ) -# 23744 "parsing/parser.ml" +# 24411 "parsing/parser.ml" in let _endpos__1_ = _endpos_me_ in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1157 "parsing/parser.mly" +# 1166 "parsing/parser.mly" ( mkmod ~loc:_sloc _1 ) -# 23753 "parsing/parser.ml" +# 24420 "parsing/parser.ml" in -# 1705 "parsing/parser.mly" +# 1717 "parsing/parser.mly" ( _1 ) -# 23759 "parsing/parser.ml" +# 24426 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -23786,25 +24453,25 @@ module Tables = struct let _endpos = _endpos_body_ in let _v : (Parsetree.module_expr) = let _1 = let _1 = -# 1703 "parsing/parser.mly" +# 1715 "parsing/parser.mly" ( let (_, arg) = arg_and_pos in Pmod_functor(arg, body) ) -# 23793 "parsing/parser.ml" +# 24460 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_body_, _startpos_arg_and_pos_) in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1157 "parsing/parser.mly" +# 1166 "parsing/parser.mly" ( mkmod ~loc:_sloc _1 ) -# 23802 "parsing/parser.ml" +# 24469 "parsing/parser.ml" in -# 1705 "parsing/parser.mly" +# 1717 "parsing/parser.mly" ( _1 ) -# 23808 "parsing/parser.ml" +# 24475 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -23834,9 +24501,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos_mty_ in let _v : (Parsetree.module_type) = -# 1960 "parsing/parser.mly" +# 1972 "parsing/parser.mly" ( mty ) -# 23840 "parsing/parser.ml" +# 24507 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -23867,25 +24534,25 @@ module Tables = struct let _endpos = _endpos_body_ in let _v : (Parsetree.module_type) = let _1 = let _1 = -# 1963 "parsing/parser.mly" +# 1975 "parsing/parser.mly" ( let (_, arg) = arg_and_pos in Pmty_functor(arg, body) ) -# 23874 "parsing/parser.ml" +# 24541 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_body_, _startpos_arg_and_pos_) in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1159 "parsing/parser.mly" +# 1168 "parsing/parser.mly" ( mkmty ~loc:_sloc _1 ) -# 23883 "parsing/parser.ml" +# 24550 "parsing/parser.ml" in -# 1966 "parsing/parser.mly" +# 1978 "parsing/parser.mly" ( _1 ) -# 23889 "parsing/parser.ml" +# 24556 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -23931,18 +24598,18 @@ module Tables = struct let _v : (Parsetree.module_expr) = let attrs = let _1 = _1_inlined1 in -# 4371 "parsing/parser.mly" +# 4476 "parsing/parser.mly" ( _1 ) -# 23937 "parsing/parser.ml" +# 24604 "parsing/parser.ml" in let _endpos = _endpos__4_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1528 "parsing/parser.mly" +# 1540 "parsing/parser.mly" ( mkmod ~loc:_sloc ~attrs (Pmod_structure s) ) -# 23946 "parsing/parser.ml" +# 24613 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -23988,17 +24655,17 @@ module Tables = struct let _v : (Parsetree.module_expr) = let _2 = let _1 = _1_inlined1 in -# 4371 "parsing/parser.mly" +# 4476 "parsing/parser.mly" ( _1 ) -# 23994 "parsing/parser.ml" +# 24661 "parsing/parser.ml" in let _loc__4_ = (_startpos__4_, _endpos__4_) in let _loc__1_ = (_startpos__1_, _endpos__1_) in -# 1530 "parsing/parser.mly" +# 1542 "parsing/parser.mly" ( unclosed "struct" _loc__1_ "end" _loc__4_ ) -# 24002 "parsing/parser.ml" +# 24669 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -24051,30 +24718,30 @@ module Tables = struct let _v : (Parsetree.module_expr) = let args = let _1 = _1_inlined2 in -# 1494 "parsing/parser.mly" +# 1506 "parsing/parser.mly" ( _1 ) -# 24057 "parsing/parser.ml" +# 24724 "parsing/parser.ml" in let attrs = let _1 = _1_inlined1 in -# 4371 "parsing/parser.mly" +# 4476 "parsing/parser.mly" ( _1 ) -# 24065 "parsing/parser.ml" +# 24732 "parsing/parser.ml" in let _endpos = _endpos_me_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1532 "parsing/parser.mly" +# 1544 "parsing/parser.mly" ( wrap_mod_attrs ~loc:_sloc attrs ( List.fold_left (fun acc (startpos, arg) -> mkmod ~loc:(startpos, _endpos) (Pmod_functor (arg, acc)) ) me args ) ) -# 24078 "parsing/parser.ml" +# 24745 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -24097,9 +24764,9 @@ module Tables = struct let _startpos = _startpos_me_ in let _endpos = _endpos_me_ in let _v : (Parsetree.module_expr) = -# 1538 "parsing/parser.mly" +# 1550 "parsing/parser.mly" ( me ) -# 24103 "parsing/parser.ml" +# 24770 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -24129,9 +24796,9 @@ module Tables = struct let _startpos = _startpos_me_ in let _endpos = _endpos_attr_ in let _v : (Parsetree.module_expr) = -# 1540 "parsing/parser.mly" +# 1552 "parsing/parser.mly" ( Mod.attr me attr ) -# 24135 "parsing/parser.ml" +# 24802 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -24160,30 +24827,30 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1114 "parsing/parser.mly" +# 1123 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 24166 "parsing/parser.ml" +# 24833 "parsing/parser.ml" in -# 1544 "parsing/parser.mly" +# 1556 "parsing/parser.mly" ( Pmod_ident x ) -# 24172 "parsing/parser.ml" +# 24839 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1157 "parsing/parser.mly" +# 1166 "parsing/parser.mly" ( mkmod ~loc:_sloc _1 ) -# 24181 "parsing/parser.ml" +# 24848 "parsing/parser.ml" in -# 1556 "parsing/parser.mly" +# 1568 "parsing/parser.mly" ( _1 ) -# 24187 "parsing/parser.ml" +# 24854 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -24214,24 +24881,24 @@ module Tables = struct let _endpos = _endpos_me2_ in let _v : (Parsetree.module_expr) = let _1 = let _1 = -# 1547 "parsing/parser.mly" +# 1559 "parsing/parser.mly" ( Pmod_apply(me1, me2) ) -# 24220 "parsing/parser.ml" +# 24887 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_me2_, _startpos_me1_) in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1157 "parsing/parser.mly" +# 1166 "parsing/parser.mly" ( mkmod ~loc:_sloc _1 ) -# 24229 "parsing/parser.ml" +# 24896 "parsing/parser.ml" in -# 1556 "parsing/parser.mly" +# 1568 "parsing/parser.mly" ( _1 ) -# 24235 "parsing/parser.ml" +# 24902 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -24273,10 +24940,10 @@ module Tables = struct let _symbolstartpos = _startpos_me1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1550 "parsing/parser.mly" +# 1562 "parsing/parser.mly" ( (* TODO review mkmod location *) Pmod_apply(me1, mkmod ~loc:_sloc (Pmod_structure [])) ) -# 24280 "parsing/parser.ml" +# 24947 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos__3_, _startpos_me1_) in @@ -24284,15 +24951,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1157 "parsing/parser.mly" +# 1166 "parsing/parser.mly" ( mkmod ~loc:_sloc _1 ) -# 24290 "parsing/parser.ml" +# 24957 "parsing/parser.ml" in -# 1556 "parsing/parser.mly" +# 1568 "parsing/parser.mly" ( _1 ) -# 24296 "parsing/parser.ml" +# 24963 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -24316,24 +24983,24 @@ module Tables = struct let _endpos = _endpos_ex_ in let _v : (Parsetree.module_expr) = let _1 = let _1 = -# 1554 "parsing/parser.mly" +# 1566 "parsing/parser.mly" ( Pmod_extension ex ) -# 24322 "parsing/parser.ml" +# 24989 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_ex_, _startpos_ex_) in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1157 "parsing/parser.mly" +# 1166 "parsing/parser.mly" ( mkmod ~loc:_sloc _1 ) -# 24331 "parsing/parser.ml" +# 24998 "parsing/parser.ml" in -# 1556 "parsing/parser.mly" +# 1568 "parsing/parser.mly" ( _1 ) -# 24337 "parsing/parser.ml" +# 25004 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -24352,17 +25019,17 @@ module Tables = struct MenhirLib.EngineTypes.next = _menhir_stack; } = _menhir_stack in let x : ( -# 981 "parsing/parser.mly" +# 990 "parsing/parser.mly" (string) -# 24358 "parsing/parser.ml" +# 25025 "parsing/parser.ml" ) = Obj.magic x in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos_x_ in let _endpos = _endpos_x_ in let _v : (string option) = -# 1511 "parsing/parser.mly" +# 1523 "parsing/parser.mly" ( Some x ) -# 24366 "parsing/parser.ml" +# 25033 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -24385,9 +25052,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string option) = -# 1514 "parsing/parser.mly" +# 1526 "parsing/parser.mly" ( None ) -# 24391 "parsing/parser.ml" +# 25058 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -24445,9 +25112,9 @@ module Tables = struct let _1_inlined3 : (Longident.t) = Obj.magic _1_inlined3 in let _5 : unit = Obj.magic _5 in let _1_inlined2 : ( -# 981 "parsing/parser.mly" +# 990 "parsing/parser.mly" (string) -# 24451 "parsing/parser.ml" +# 25118 "parsing/parser.ml" ) = Obj.magic _1_inlined2 in let _1_inlined1 : (Parsetree.attributes) = Obj.magic _1_inlined1 in let ext : (string Asttypes.loc option) = Obj.magic ext in @@ -24458,9 +25125,9 @@ module Tables = struct let _v : (Parsetree.module_substitution * string Asttypes.loc option) = let attrs2 = let _1 = _1_inlined4 in -# 4367 "parsing/parser.mly" +# 4472 "parsing/parser.mly" ( _1 ) -# 24464 "parsing/parser.ml" +# 25131 "parsing/parser.ml" in let _endpos_attrs2_ = _endpos__1_inlined4_ in @@ -24470,9 +25137,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1114 "parsing/parser.mly" +# 1123 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 24476 "parsing/parser.ml" +# 25143 "parsing/parser.ml" in let uid = @@ -24481,31 +25148,31 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1114 "parsing/parser.mly" +# 1123 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 24487 "parsing/parser.ml" +# 25154 "parsing/parser.ml" in let attrs1 = let _1 = _1_inlined1 in -# 4371 "parsing/parser.mly" +# 4476 "parsing/parser.mly" ( _1 ) -# 24495 "parsing/parser.ml" +# 25162 "parsing/parser.ml" in let _endpos = _endpos_attrs2_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1996 "parsing/parser.mly" +# 2008 "parsing/parser.mly" ( let attrs = attrs1 @ attrs2 in let loc = make_loc _sloc in let docs = symbol_docs _sloc in Ms.mk uid body ~attrs ~loc ~docs, ext ) -# 24509 "parsing/parser.ml" +# 25176 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -24556,9 +25223,9 @@ module Tables = struct let _6 : unit = Obj.magic _6 in let _5 : unit = Obj.magic _5 in let _1_inlined2 : ( -# 981 "parsing/parser.mly" +# 990 "parsing/parser.mly" (string) -# 24562 "parsing/parser.ml" +# 25229 "parsing/parser.ml" ) = Obj.magic _1_inlined2 in let _1_inlined1 : (Parsetree.attributes) = Obj.magic _1_inlined1 in let _2 : (string Asttypes.loc option) = Obj.magic _2 in @@ -24572,24 +25239,24 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1114 "parsing/parser.mly" +# 1123 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 24578 "parsing/parser.ml" +# 25245 "parsing/parser.ml" in let _3 = let _1 = _1_inlined1 in -# 4371 "parsing/parser.mly" +# 4476 "parsing/parser.mly" ( _1 ) -# 24586 "parsing/parser.ml" +# 25253 "parsing/parser.ml" in let _loc__6_ = (_startpos__6_, _endpos__6_) in -# 2003 "parsing/parser.mly" +# 2015 "parsing/parser.mly" ( expecting _loc__6_ "module path" ) -# 24593 "parsing/parser.ml" +# 25260 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -24635,18 +25302,18 @@ module Tables = struct let _v : (Parsetree.module_type) = let attrs = let _1 = _1_inlined1 in -# 4371 "parsing/parser.mly" +# 4476 "parsing/parser.mly" ( _1 ) -# 24641 "parsing/parser.ml" +# 25308 "parsing/parser.ml" in let _endpos = _endpos__4_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1838 "parsing/parser.mly" +# 1850 "parsing/parser.mly" ( mkmty ~loc:_sloc ~attrs (Pmty_signature s) ) -# 24650 "parsing/parser.ml" +# 25317 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -24692,17 +25359,17 @@ module Tables = struct let _v : (Parsetree.module_type) = let _2 = let _1 = _1_inlined1 in -# 4371 "parsing/parser.mly" +# 4476 "parsing/parser.mly" ( _1 ) -# 24698 "parsing/parser.ml" +# 25365 "parsing/parser.ml" in let _loc__4_ = (_startpos__4_, _endpos__4_) in let _loc__1_ = (_startpos__1_, _endpos__1_) in -# 1840 "parsing/parser.mly" +# 1852 "parsing/parser.mly" ( unclosed "sig" _loc__1_ "end" _loc__4_ ) -# 24706 "parsing/parser.ml" +# 25373 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -24755,30 +25422,30 @@ module Tables = struct let _v : (Parsetree.module_type) = let args = let _1 = _1_inlined2 in -# 1494 "parsing/parser.mly" +# 1506 "parsing/parser.mly" ( _1 ) -# 24761 "parsing/parser.ml" +# 25428 "parsing/parser.ml" in let attrs = let _1 = _1_inlined1 in -# 4371 "parsing/parser.mly" +# 4476 "parsing/parser.mly" ( _1 ) -# 24769 "parsing/parser.ml" +# 25436 "parsing/parser.ml" in let _endpos = _endpos_mty_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1844 "parsing/parser.mly" +# 1856 "parsing/parser.mly" ( wrap_mty_attrs ~loc:_sloc attrs ( List.fold_left (fun acc (startpos, arg) -> mkmty ~loc:(startpos, _endpos) (Pmty_functor (arg, acc)) ) mty args ) ) -# 24782 "parsing/parser.ml" +# 25449 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -24831,18 +25498,18 @@ module Tables = struct let _v : (Parsetree.module_type) = let _4 = let _1 = _1_inlined1 in -# 4371 "parsing/parser.mly" +# 4476 "parsing/parser.mly" ( _1 ) -# 24837 "parsing/parser.ml" +# 25504 "parsing/parser.ml" in let _endpos = _endpos__5_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1850 "parsing/parser.mly" +# 1862 "parsing/parser.mly" ( mkmty ~loc:_sloc ~attrs:_4 (Pmty_typeof _5) ) -# 24846 "parsing/parser.ml" +# 25513 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -24879,9 +25546,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : (Parsetree.module_type) = -# 1852 "parsing/parser.mly" +# 1864 "parsing/parser.mly" ( _2 ) -# 24885 "parsing/parser.ml" +# 25552 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -24920,9 +25587,9 @@ module Tables = struct let _v : (Parsetree.module_type) = let _loc__3_ = (_startpos__3_, _endpos__3_) in let _loc__1_ = (_startpos__1_, _endpos__1_) in -# 1854 "parsing/parser.mly" +# 1866 "parsing/parser.mly" ( unclosed "(" _loc__1_ ")" _loc__3_ ) -# 24926 "parsing/parser.ml" +# 25593 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -24952,9 +25619,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (Parsetree.module_type) = -# 1856 "parsing/parser.mly" +# 1868 "parsing/parser.mly" ( Mty.attr _1 _2 ) -# 24958 "parsing/parser.ml" +# 25625 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -24983,30 +25650,30 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1114 "parsing/parser.mly" +# 1123 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 24989 "parsing/parser.ml" +# 25656 "parsing/parser.ml" in -# 1859 "parsing/parser.mly" +# 1871 "parsing/parser.mly" ( Pmty_ident _1 ) -# 24995 "parsing/parser.ml" +# 25662 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1159 "parsing/parser.mly" +# 1168 "parsing/parser.mly" ( mkmty ~loc:_sloc _1 ) -# 25004 "parsing/parser.ml" +# 25671 "parsing/parser.ml" in -# 1870 "parsing/parser.mly" +# 1882 "parsing/parser.mly" ( _1 ) -# 25010 "parsing/parser.ml" +# 25677 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -25044,24 +25711,24 @@ module Tables = struct let _endpos = _endpos__3_ in let _v : (Parsetree.module_type) = let _1 = let _1 = -# 1862 "parsing/parser.mly" +# 1874 "parsing/parser.mly" ( Pmty_functor(Named (mknoloc None, _1), _3) ) -# 25050 "parsing/parser.ml" +# 25717 "parsing/parser.ml" in let _endpos__1_ = _endpos__3_ in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1159 "parsing/parser.mly" +# 1168 "parsing/parser.mly" ( mkmty ~loc:_sloc _1 ) -# 25059 "parsing/parser.ml" +# 25726 "parsing/parser.ml" in -# 1870 "parsing/parser.mly" +# 1882 "parsing/parser.mly" ( _1 ) -# 25065 "parsing/parser.ml" +# 25732 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -25103,18 +25770,18 @@ module Tables = struct let xs = # 253 "" ( List.rev xs ) -# 25107 "parsing/parser.ml" +# 25774 "parsing/parser.ml" in -# 1248 "parsing/parser.mly" +# 1260 "parsing/parser.mly" ( xs ) -# 25112 "parsing/parser.ml" +# 25779 "parsing/parser.ml" in -# 1864 "parsing/parser.mly" +# 1876 "parsing/parser.mly" ( Pmty_with(_1, _3) ) -# 25118 "parsing/parser.ml" +# 25785 "parsing/parser.ml" in let _endpos__1_ = _endpos_xs_ in @@ -25122,15 +25789,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1159 "parsing/parser.mly" +# 1168 "parsing/parser.mly" ( mkmty ~loc:_sloc _1 ) -# 25128 "parsing/parser.ml" +# 25795 "parsing/parser.ml" in -# 1870 "parsing/parser.mly" +# 1882 "parsing/parser.mly" ( _1 ) -# 25134 "parsing/parser.ml" +# 25801 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -25154,23 +25821,23 @@ module Tables = struct let _endpos = _endpos__1_ in let _v : (Parsetree.module_type) = let _1 = let _1 = -# 1868 "parsing/parser.mly" +# 1880 "parsing/parser.mly" ( Pmty_extension _1 ) -# 25160 "parsing/parser.ml" +# 25827 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1159 "parsing/parser.mly" +# 1168 "parsing/parser.mly" ( mkmty ~loc:_sloc _1 ) -# 25168 "parsing/parser.ml" +# 25835 "parsing/parser.ml" in -# 1870 "parsing/parser.mly" +# 1882 "parsing/parser.mly" ( _1 ) -# 25174 "parsing/parser.ml" +# 25841 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -25237,9 +25904,9 @@ module Tables = struct let _v : (Parsetree.module_type_declaration * string Asttypes.loc option) = let attrs2 = let _1 = _1_inlined3 in -# 4367 "parsing/parser.mly" +# 4472 "parsing/parser.mly" ( _1 ) -# 25243 "parsing/parser.ml" +# 25910 "parsing/parser.ml" in let _endpos_attrs2_ = _endpos__1_inlined3_ in @@ -25249,31 +25916,31 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1114 "parsing/parser.mly" +# 1123 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 25255 "parsing/parser.ml" +# 25922 "parsing/parser.ml" in let attrs1 = let _1 = _1_inlined1 in -# 4371 "parsing/parser.mly" +# 4476 "parsing/parser.mly" ( _1 ) -# 25263 "parsing/parser.ml" +# 25930 "parsing/parser.ml" in let _endpos = _endpos_attrs2_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1784 "parsing/parser.mly" +# 1796 "parsing/parser.mly" ( let attrs = attrs1 @ attrs2 in let loc = make_loc _sloc in let docs = symbol_docs _sloc in Mtd.mk id ?typ ~attrs ~loc ~docs, ext ) -# 25277 "parsing/parser.ml" +# 25944 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -25347,9 +26014,9 @@ module Tables = struct let _v : (Parsetree.module_type_declaration * string Asttypes.loc option) = let attrs2 = let _1 = _1_inlined3 in -# 4367 "parsing/parser.mly" +# 4472 "parsing/parser.mly" ( _1 ) -# 25353 "parsing/parser.ml" +# 26020 "parsing/parser.ml" in let _endpos_attrs2_ = _endpos__1_inlined3_ in @@ -25359,31 +26026,31 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1114 "parsing/parser.mly" +# 1123 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 25365 "parsing/parser.ml" +# 26032 "parsing/parser.ml" in let attrs1 = let _1 = _1_inlined1 in -# 4371 "parsing/parser.mly" +# 4476 "parsing/parser.mly" ( _1 ) -# 25373 "parsing/parser.ml" +# 26040 "parsing/parser.ml" in let _endpos = _endpos_attrs2_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2052 "parsing/parser.mly" +# 2064 "parsing/parser.mly" ( let attrs = attrs1 @ attrs2 in let loc = make_loc _sloc in let docs = symbol_docs _sloc in Mtd.mk id ~typ ~attrs ~loc ~docs, ext ) -# 25387 "parsing/parser.ml" +# 26054 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -25406,9 +26073,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Longident.t) = -# 4139 "parsing/parser.mly" +# 4244 "parsing/parser.mly" ( _1 ) -# 25412 "parsing/parser.ml" +# 26079 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -25424,9 +26091,9 @@ module Tables = struct let _startpos = _menhir_stack.MenhirLib.EngineTypes.endp in let _endpos = _startpos in let _v : (Asttypes.mutable_flag) = -# 4220 "parsing/parser.mly" +# 4325 "parsing/parser.mly" ( Immutable ) -# 25430 "parsing/parser.ml" +# 26097 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -25449,9 +26116,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Asttypes.mutable_flag) = -# 4221 "parsing/parser.mly" +# 4326 "parsing/parser.mly" ( Mutable ) -# 25455 "parsing/parser.ml" +# 26122 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -25467,9 +26134,9 @@ module Tables = struct let _startpos = _menhir_stack.MenhirLib.EngineTypes.endp in let _endpos = _startpos in let _v : (Asttypes.mutable_flag * Asttypes.global_flag) = -# 4224 "parsing/parser.mly" +# 4329 "parsing/parser.mly" ( Immutable, Nothing ) -# 25473 "parsing/parser.ml" +# 26140 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -25492,9 +26159,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Asttypes.mutable_flag * Asttypes.global_flag) = -# 4225 "parsing/parser.mly" +# 4330 "parsing/parser.mly" ( Mutable, Nothing ) -# 25498 "parsing/parser.ml" +# 26165 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -25517,9 +26184,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Asttypes.mutable_flag * Asttypes.global_flag) = -# 4226 "parsing/parser.mly" +# 4331 "parsing/parser.mly" ( Immutable, Global ) -# 25523 "parsing/parser.ml" +# 26190 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -25535,9 +26202,9 @@ module Tables = struct let _startpos = _menhir_stack.MenhirLib.EngineTypes.endp in let _endpos = _startpos in let _v : (Asttypes.mutable_flag * Asttypes.virtual_flag) = -# 4238 "parsing/parser.mly" +# 4343 "parsing/parser.mly" ( Immutable, Concrete ) -# 25541 "parsing/parser.ml" +# 26208 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -25560,9 +26227,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Asttypes.mutable_flag * Asttypes.virtual_flag) = -# 4240 "parsing/parser.mly" +# 4345 "parsing/parser.mly" ( Mutable, Concrete ) -# 25566 "parsing/parser.ml" +# 26233 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -25585,9 +26252,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Asttypes.mutable_flag * Asttypes.virtual_flag) = -# 4242 "parsing/parser.mly" +# 4347 "parsing/parser.mly" ( Immutable, Virtual ) -# 25591 "parsing/parser.ml" +# 26258 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -25617,9 +26284,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (Asttypes.mutable_flag * Asttypes.virtual_flag) = -# 4245 "parsing/parser.mly" +# 4350 "parsing/parser.mly" ( Mutable, Virtual ) -# 25623 "parsing/parser.ml" +# 26290 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -25649,9 +26316,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (Asttypes.mutable_flag * Asttypes.virtual_flag) = -# 4245 "parsing/parser.mly" +# 4350 "parsing/parser.mly" ( Mutable, Virtual ) -# 25655 "parsing/parser.ml" +# 26322 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -25681,9 +26348,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (Asttypes.label) = -# 4191 "parsing/parser.mly" +# 4296 "parsing/parser.mly" ( _2 ) -# 25687 "parsing/parser.ml" +# 26354 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -25702,9 +26369,141 @@ module Tables = struct MenhirLib.EngineTypes.next = _menhir_stack; } = _menhir_stack in let _1 : ( -# 928 "parsing/parser.mly" +# 937 "parsing/parser.mly" (string) -# 25708 "parsing/parser.ml" +# 26375 "parsing/parser.ml" + ) = Obj.magic _1 in + let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in + let _startpos = _startpos__1_ in + let _endpos = _endpos__1_ in + let _v : (string Asttypes.loc * Asttypes.layout_annotation option) = let _1 = + let _endpos = _endpos__1_ in + let _symbolstartpos = _startpos__1_ in + let _sloc = (_symbolstartpos, _endpos) in + +# 1123 "parsing/parser.mly" + ( mkrhs _1 _sloc ) +# 26387 "parsing/parser.ml" + + in + +# 3136 "parsing/parser.mly" + ( _1, None ) +# 26393 "parsing/parser.ml" + in + { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = Obj.repr _v; + MenhirLib.EngineTypes.startp = _startpos; + MenhirLib.EngineTypes.endp = _endpos; + MenhirLib.EngineTypes.next = _menhir_stack; + }); + (fun _menhir_env -> + let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in + let { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _5; + MenhirLib.EngineTypes.startp = _startpos__5_; + MenhirLib.EngineTypes.endp = _endpos__5_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = layout; + MenhirLib.EngineTypes.startp = _startpos_layout_; + MenhirLib.EngineTypes.endp = _endpos_layout_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _3; + MenhirLib.EngineTypes.startp = _startpos__3_; + MenhirLib.EngineTypes.endp = _endpos__3_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _1_inlined1; + MenhirLib.EngineTypes.startp = _startpos__1_inlined1_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined1_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + }; + }; + }; + }; + } = _menhir_stack in + let _5 : unit = Obj.magic _5 in + let layout : (Asttypes.layout_annotation) = Obj.magic layout in + let _3 : unit = Obj.magic _3 in + let _1_inlined1 : ( +# 937 "parsing/parser.mly" + (string) +# 26441 "parsing/parser.ml" + ) = Obj.magic _1_inlined1 in + let _1 : unit = Obj.magic _1 in + let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in + let _startpos = _startpos__1_ in + let _endpos = _endpos__5_ in + let _v : (string Asttypes.loc * Asttypes.layout_annotation option) = let name = + let (_endpos__1_, _startpos__1_, _1) = (_endpos__1_inlined1_, _startpos__1_inlined1_, _1_inlined1) in + let _endpos = _endpos__1_ in + let _symbolstartpos = _startpos__1_ in + let _sloc = (_symbolstartpos, _endpos) in + +# 1123 "parsing/parser.mly" + ( mkrhs _1 _sloc ) +# 26455 "parsing/parser.ml" + + in + +# 3138 "parsing/parser.mly" + ( name, Some layout ) +# 26461 "parsing/parser.ml" + in + { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = Obj.repr _v; + MenhirLib.EngineTypes.startp = _startpos; + MenhirLib.EngineTypes.endp = _endpos; + MenhirLib.EngineTypes.next = _menhir_stack; + }); + (fun _menhir_env -> + let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in + let { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + } = _menhir_stack in + let _1 : ((string Asttypes.loc * Asttypes.layout_annotation option) list) = Obj.magic _1 in + let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in + let _startpos = _startpos__1_ in + let _endpos = _endpos__1_ in + let _v : ((string Asttypes.loc * Asttypes.layout_annotation option) list) = +# 3133 "parsing/parser.mly" + ( _1 ) +# 26486 "parsing/parser.ml" + in + { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = Obj.repr _v; + MenhirLib.EngineTypes.startp = _startpos; + MenhirLib.EngineTypes.endp = _endpos; + MenhirLib.EngineTypes.next = _menhir_stack; + }); + (fun _menhir_env -> + let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in + let { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + } = _menhir_stack in + let _1 : ( +# 937 "parsing/parser.mly" + (string) +# 26507 "parsing/parser.ml" ) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in @@ -25714,15 +26513,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1114 "parsing/parser.mly" +# 1123 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 25720 "parsing/parser.ml" +# 26519 "parsing/parser.ml" in # 221 "" ( [ x ] ) -# 25726 "parsing/parser.ml" +# 26525 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -25748,9 +26547,9 @@ module Tables = struct } = _menhir_stack in let xs : (string Asttypes.loc list) = Obj.magic xs in let _1 : ( -# 928 "parsing/parser.mly" +# 937 "parsing/parser.mly" (string) -# 25754 "parsing/parser.ml" +# 26553 "parsing/parser.ml" ) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in @@ -25760,15 +26559,72 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1114 "parsing/parser.mly" +# 1123 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 25766 "parsing/parser.ml" +# 26565 "parsing/parser.ml" in # 223 "" ( x :: xs ) -# 25772 "parsing/parser.ml" +# 26571 "parsing/parser.ml" + in + { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = Obj.repr _v; + MenhirLib.EngineTypes.startp = _startpos; + MenhirLib.EngineTypes.endp = _endpos; + MenhirLib.EngineTypes.next = _menhir_stack; + }); + (fun _menhir_env -> + let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in + let { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = x; + MenhirLib.EngineTypes.startp = _startpos_x_; + MenhirLib.EngineTypes.endp = _endpos_x_; + MenhirLib.EngineTypes.next = _menhir_stack; + } = _menhir_stack in + let x : (string Asttypes.loc * Asttypes.layout_annotation option) = Obj.magic x in + let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in + let _startpos = _startpos_x_ in + let _endpos = _endpos_x_ in + let _v : ((string Asttypes.loc * Asttypes.layout_annotation option) list) = +# 221 "" + ( [ x ] ) +# 26596 "parsing/parser.ml" + in + { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = Obj.repr _v; + MenhirLib.EngineTypes.startp = _startpos; + MenhirLib.EngineTypes.endp = _endpos; + MenhirLib.EngineTypes.next = _menhir_stack; + }); + (fun _menhir_env -> + let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in + let { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = xs; + MenhirLib.EngineTypes.startp = _startpos_xs_; + MenhirLib.EngineTypes.endp = _endpos_xs_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = x; + MenhirLib.EngineTypes.startp = _startpos_x_; + MenhirLib.EngineTypes.endp = _endpos_x_; + MenhirLib.EngineTypes.next = _menhir_stack; + }; + } = _menhir_stack in + let xs : ((string Asttypes.loc * Asttypes.layout_annotation option) list) = Obj.magic xs in + let x : (string Asttypes.loc * Asttypes.layout_annotation option) = Obj.magic x in + let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in + let _startpos = _startpos_x_ in + let _endpos = _endpos_xs_ in + let _v : ((string Asttypes.loc * Asttypes.layout_annotation option) list) = +# 223 "" + ( x :: xs ) +# 26628 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -25787,22 +26643,22 @@ module Tables = struct MenhirLib.EngineTypes.next = _menhir_stack; } = _menhir_stack in let s : ( -# 968 "parsing/parser.mly" +# 977 "parsing/parser.mly" (string * Location.t * string option) -# 25793 "parsing/parser.ml" +# 26649 "parsing/parser.ml" ) = Obj.magic s in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos_s_ in let _endpos = _endpos_s_ in let _v : (string list) = let x = -# 4187 "parsing/parser.mly" +# 4292 "parsing/parser.mly" ( let body, _, _ = s in body ) -# 25801 "parsing/parser.ml" +# 26657 "parsing/parser.ml" in # 221 "" ( [ x ] ) -# 25806 "parsing/parser.ml" +# 26662 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -25828,22 +26684,22 @@ module Tables = struct } = _menhir_stack in let xs : (string list) = Obj.magic xs in let s : ( -# 968 "parsing/parser.mly" +# 977 "parsing/parser.mly" (string * Location.t * string option) -# 25834 "parsing/parser.ml" +# 26690 "parsing/parser.ml" ) = Obj.magic s in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos_s_ in let _endpos = _endpos_xs_ in let _v : (string list) = let x = -# 4187 "parsing/parser.mly" +# 4292 "parsing/parser.mly" ( let body, _, _ = s in body ) -# 25842 "parsing/parser.ml" +# 26698 "parsing/parser.ml" in # 223 "" ( x :: xs ) -# 25847 "parsing/parser.ml" +# 26703 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -25866,14 +26722,14 @@ module Tables = struct let _startpos = _startpos_ty_ in let _endpos = _endpos_ty_ in let _v : (Parsetree.type_kind * Asttypes.private_flag * Parsetree.core_type option) = let priv = -# 4216 "parsing/parser.mly" +# 4321 "parsing/parser.mly" ( Public ) -# 25872 "parsing/parser.ml" +# 26728 "parsing/parser.ml" in -# 3407 "parsing/parser.mly" +# 3453 "parsing/parser.mly" ( (Ptype_abstract, priv, Some ty) ) -# 25877 "parsing/parser.ml" +# 26733 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -25903,14 +26759,14 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos_ty_ in let _v : (Parsetree.type_kind * Asttypes.private_flag * Parsetree.core_type option) = let priv = -# 4217 "parsing/parser.mly" +# 4322 "parsing/parser.mly" ( Private ) -# 25909 "parsing/parser.ml" +# 26765 "parsing/parser.ml" in -# 3407 "parsing/parser.mly" +# 3453 "parsing/parser.mly" ( (Ptype_abstract, priv, Some ty) ) -# 25914 "parsing/parser.ml" +# 26770 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -25933,26 +26789,26 @@ module Tables = struct let _startpos = _startpos_cs_ in let _endpos = _endpos_cs_ in let _v : (Parsetree.type_kind * Asttypes.private_flag * Parsetree.core_type option) = let priv = -# 4216 "parsing/parser.mly" +# 4321 "parsing/parser.mly" ( Public ) -# 25939 "parsing/parser.ml" +# 26795 "parsing/parser.ml" in let oty = let _1 = # 124 "" ( None ) -# 25945 "parsing/parser.ml" +# 26801 "parsing/parser.ml" in -# 3423 "parsing/parser.mly" +# 3469 "parsing/parser.mly" ( _1 ) -# 25950 "parsing/parser.ml" +# 26806 "parsing/parser.ml" in -# 3411 "parsing/parser.mly" +# 3457 "parsing/parser.mly" ( (Ptype_variant cs, priv, oty) ) -# 25956 "parsing/parser.ml" +# 26812 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -25982,26 +26838,26 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos_cs_ in let _v : (Parsetree.type_kind * Asttypes.private_flag * Parsetree.core_type option) = let priv = -# 4217 "parsing/parser.mly" +# 4322 "parsing/parser.mly" ( Private ) -# 25988 "parsing/parser.ml" +# 26844 "parsing/parser.ml" in let oty = let _1 = # 124 "" ( None ) -# 25994 "parsing/parser.ml" +# 26850 "parsing/parser.ml" in -# 3423 "parsing/parser.mly" +# 3469 "parsing/parser.mly" ( _1 ) -# 25999 "parsing/parser.ml" +# 26855 "parsing/parser.ml" in -# 3411 "parsing/parser.mly" +# 3457 "parsing/parser.mly" ( (Ptype_variant cs, priv, oty) ) -# 26005 "parsing/parser.ml" +# 26861 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -26038,33 +26894,33 @@ module Tables = struct let _startpos = _startpos_x_ in let _endpos = _endpos_cs_ in let _v : (Parsetree.type_kind * Asttypes.private_flag * Parsetree.core_type option) = let priv = -# 4216 "parsing/parser.mly" +# 4321 "parsing/parser.mly" ( Public ) -# 26044 "parsing/parser.ml" +# 26900 "parsing/parser.ml" in let oty = let _1 = let x = # 191 "" ( x ) -# 26051 "parsing/parser.ml" +# 26907 "parsing/parser.ml" in # 126 "" ( Some x ) -# 26056 "parsing/parser.ml" +# 26912 "parsing/parser.ml" in -# 3423 "parsing/parser.mly" +# 3469 "parsing/parser.mly" ( _1 ) -# 26062 "parsing/parser.ml" +# 26918 "parsing/parser.ml" in -# 3411 "parsing/parser.mly" +# 3457 "parsing/parser.mly" ( (Ptype_variant cs, priv, oty) ) -# 26068 "parsing/parser.ml" +# 26924 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -26108,33 +26964,33 @@ module Tables = struct let _startpos = _startpos_x_ in let _endpos = _endpos_cs_ in let _v : (Parsetree.type_kind * Asttypes.private_flag * Parsetree.core_type option) = let priv = -# 4217 "parsing/parser.mly" +# 4322 "parsing/parser.mly" ( Private ) -# 26114 "parsing/parser.ml" +# 26970 "parsing/parser.ml" in let oty = let _1 = let x = # 191 "" ( x ) -# 26121 "parsing/parser.ml" +# 26977 "parsing/parser.ml" in # 126 "" ( Some x ) -# 26126 "parsing/parser.ml" +# 26982 "parsing/parser.ml" in -# 3423 "parsing/parser.mly" +# 3469 "parsing/parser.mly" ( _1 ) -# 26132 "parsing/parser.ml" +# 26988 "parsing/parser.ml" in -# 3411 "parsing/parser.mly" +# 3457 "parsing/parser.mly" ( (Ptype_variant cs, priv, oty) ) -# 26138 "parsing/parser.ml" +# 26994 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -26157,26 +27013,26 @@ module Tables = struct let _startpos = _startpos__3_ in let _endpos = _endpos__3_ in let _v : (Parsetree.type_kind * Asttypes.private_flag * Parsetree.core_type option) = let priv = -# 4216 "parsing/parser.mly" +# 4321 "parsing/parser.mly" ( Public ) -# 26163 "parsing/parser.ml" +# 27019 "parsing/parser.ml" in let oty = let _1 = # 124 "" ( None ) -# 26169 "parsing/parser.ml" +# 27025 "parsing/parser.ml" in -# 3423 "parsing/parser.mly" +# 3469 "parsing/parser.mly" ( _1 ) -# 26174 "parsing/parser.ml" +# 27030 "parsing/parser.ml" in -# 3415 "parsing/parser.mly" +# 3461 "parsing/parser.mly" ( (Ptype_open, priv, oty) ) -# 26180 "parsing/parser.ml" +# 27036 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -26206,26 +27062,26 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : (Parsetree.type_kind * Asttypes.private_flag * Parsetree.core_type option) = let priv = -# 4217 "parsing/parser.mly" +# 4322 "parsing/parser.mly" ( Private ) -# 26212 "parsing/parser.ml" +# 27068 "parsing/parser.ml" in let oty = let _1 = # 124 "" ( None ) -# 26218 "parsing/parser.ml" +# 27074 "parsing/parser.ml" in -# 3423 "parsing/parser.mly" +# 3469 "parsing/parser.mly" ( _1 ) -# 26223 "parsing/parser.ml" +# 27079 "parsing/parser.ml" in -# 3415 "parsing/parser.mly" +# 3461 "parsing/parser.mly" ( (Ptype_open, priv, oty) ) -# 26229 "parsing/parser.ml" +# 27085 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -26262,33 +27118,33 @@ module Tables = struct let _startpos = _startpos_x_ in let _endpos = _endpos__3_ in let _v : (Parsetree.type_kind * Asttypes.private_flag * Parsetree.core_type option) = let priv = -# 4216 "parsing/parser.mly" +# 4321 "parsing/parser.mly" ( Public ) -# 26268 "parsing/parser.ml" +# 27124 "parsing/parser.ml" in let oty = let _1 = let x = # 191 "" ( x ) -# 26275 "parsing/parser.ml" +# 27131 "parsing/parser.ml" in # 126 "" ( Some x ) -# 26280 "parsing/parser.ml" +# 27136 "parsing/parser.ml" in -# 3423 "parsing/parser.mly" +# 3469 "parsing/parser.mly" ( _1 ) -# 26286 "parsing/parser.ml" +# 27142 "parsing/parser.ml" in -# 3415 "parsing/parser.mly" +# 3461 "parsing/parser.mly" ( (Ptype_open, priv, oty) ) -# 26292 "parsing/parser.ml" +# 27148 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -26332,33 +27188,33 @@ module Tables = struct let _startpos = _startpos_x_ in let _endpos = _endpos__3_ in let _v : (Parsetree.type_kind * Asttypes.private_flag * Parsetree.core_type option) = let priv = -# 4217 "parsing/parser.mly" +# 4322 "parsing/parser.mly" ( Private ) -# 26338 "parsing/parser.ml" +# 27194 "parsing/parser.ml" in let oty = let _1 = let x = # 191 "" ( x ) -# 26345 "parsing/parser.ml" +# 27201 "parsing/parser.ml" in # 126 "" ( Some x ) -# 26350 "parsing/parser.ml" +# 27206 "parsing/parser.ml" in -# 3423 "parsing/parser.mly" +# 3469 "parsing/parser.mly" ( _1 ) -# 26356 "parsing/parser.ml" +# 27212 "parsing/parser.ml" in -# 3415 "parsing/parser.mly" +# 3461 "parsing/parser.mly" ( (Ptype_open, priv, oty) ) -# 26362 "parsing/parser.ml" +# 27218 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -26395,26 +27251,26 @@ module Tables = struct let _startpos = _startpos__3_ in let _endpos = _endpos__5_ in let _v : (Parsetree.type_kind * Asttypes.private_flag * Parsetree.core_type option) = let priv = -# 4216 "parsing/parser.mly" +# 4321 "parsing/parser.mly" ( Public ) -# 26401 "parsing/parser.ml" +# 27257 "parsing/parser.ml" in let oty = let _1 = # 124 "" ( None ) -# 26407 "parsing/parser.ml" +# 27263 "parsing/parser.ml" in -# 3423 "parsing/parser.mly" +# 3469 "parsing/parser.mly" ( _1 ) -# 26412 "parsing/parser.ml" +# 27268 "parsing/parser.ml" in -# 3419 "parsing/parser.mly" +# 3465 "parsing/parser.mly" ( (Ptype_record ls, priv, oty) ) -# 26418 "parsing/parser.ml" +# 27274 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -26458,26 +27314,26 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__5_ in let _v : (Parsetree.type_kind * Asttypes.private_flag * Parsetree.core_type option) = let priv = -# 4217 "parsing/parser.mly" +# 4322 "parsing/parser.mly" ( Private ) -# 26464 "parsing/parser.ml" +# 27320 "parsing/parser.ml" in let oty = let _1 = # 124 "" ( None ) -# 26470 "parsing/parser.ml" +# 27326 "parsing/parser.ml" in -# 3423 "parsing/parser.mly" +# 3469 "parsing/parser.mly" ( _1 ) -# 26475 "parsing/parser.ml" +# 27331 "parsing/parser.ml" in -# 3419 "parsing/parser.mly" +# 3465 "parsing/parser.mly" ( (Ptype_record ls, priv, oty) ) -# 26481 "parsing/parser.ml" +# 27337 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -26528,33 +27384,33 @@ module Tables = struct let _startpos = _startpos_x_ in let _endpos = _endpos__5_ in let _v : (Parsetree.type_kind * Asttypes.private_flag * Parsetree.core_type option) = let priv = -# 4216 "parsing/parser.mly" +# 4321 "parsing/parser.mly" ( Public ) -# 26534 "parsing/parser.ml" +# 27390 "parsing/parser.ml" in let oty = let _1 = let x = # 191 "" ( x ) -# 26541 "parsing/parser.ml" +# 27397 "parsing/parser.ml" in # 126 "" ( Some x ) -# 26546 "parsing/parser.ml" +# 27402 "parsing/parser.ml" in -# 3423 "parsing/parser.mly" +# 3469 "parsing/parser.mly" ( _1 ) -# 26552 "parsing/parser.ml" +# 27408 "parsing/parser.ml" in -# 3419 "parsing/parser.mly" +# 3465 "parsing/parser.mly" ( (Ptype_record ls, priv, oty) ) -# 26558 "parsing/parser.ml" +# 27414 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -26612,33 +27468,33 @@ module Tables = struct let _startpos = _startpos_x_ in let _endpos = _endpos__5_ in let _v : (Parsetree.type_kind * Asttypes.private_flag * Parsetree.core_type option) = let priv = -# 4217 "parsing/parser.mly" +# 4322 "parsing/parser.mly" ( Private ) -# 26618 "parsing/parser.ml" +# 27474 "parsing/parser.ml" in let oty = let _1 = let x = # 191 "" ( x ) -# 26625 "parsing/parser.ml" +# 27481 "parsing/parser.ml" in # 126 "" ( Some x ) -# 26630 "parsing/parser.ml" +# 27486 "parsing/parser.ml" in -# 3423 "parsing/parser.mly" +# 3469 "parsing/parser.mly" ( _1 ) -# 26636 "parsing/parser.ml" +# 27492 "parsing/parser.ml" in -# 3419 "parsing/parser.mly" +# 3465 "parsing/parser.mly" ( (Ptype_record ls, priv, oty) ) -# 26642 "parsing/parser.ml" +# 27498 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -26691,37 +27547,37 @@ module Tables = struct let _v : (Parsetree.open_declaration * string Asttypes.loc option) = let attrs2 = let _1 = _1_inlined2 in -# 4367 "parsing/parser.mly" +# 4472 "parsing/parser.mly" ( _1 ) -# 26697 "parsing/parser.ml" +# 27553 "parsing/parser.ml" in let _endpos_attrs2_ = _endpos__1_inlined2_ in let attrs1 = let _1 = _1_inlined1 in -# 4371 "parsing/parser.mly" +# 4476 "parsing/parser.mly" ( _1 ) -# 26706 "parsing/parser.ml" +# 27562 "parsing/parser.ml" in let override = -# 4272 "parsing/parser.mly" +# 4377 "parsing/parser.mly" ( Fresh ) -# 26712 "parsing/parser.ml" +# 27568 "parsing/parser.ml" in let _endpos = _endpos_attrs2_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1803 "parsing/parser.mly" +# 1815 "parsing/parser.mly" ( let attrs = attrs1 @ attrs2 in let loc = make_loc _sloc in let docs = symbol_docs _sloc in Opn.mk me ~override ~attrs ~loc ~docs, ext ) -# 26725 "parsing/parser.ml" +# 27581 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -26781,37 +27637,37 @@ module Tables = struct let _v : (Parsetree.open_declaration * string Asttypes.loc option) = let attrs2 = let _1 = _1_inlined3 in -# 4367 "parsing/parser.mly" +# 4472 "parsing/parser.mly" ( _1 ) -# 26787 "parsing/parser.ml" +# 27643 "parsing/parser.ml" in let _endpos_attrs2_ = _endpos__1_inlined3_ in let attrs1 = let _1 = _1_inlined2 in -# 4371 "parsing/parser.mly" +# 4476 "parsing/parser.mly" ( _1 ) -# 26796 "parsing/parser.ml" +# 27652 "parsing/parser.ml" in let override = -# 4273 "parsing/parser.mly" +# 4378 "parsing/parser.mly" ( Override ) -# 26802 "parsing/parser.ml" +# 27658 "parsing/parser.ml" in let _endpos = _endpos_attrs2_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1803 "parsing/parser.mly" +# 1815 "parsing/parser.mly" ( let attrs = attrs1 @ attrs2 in let loc = make_loc _sloc in let docs = symbol_docs _sloc in Opn.mk me ~override ~attrs ~loc ~docs, ext ) -# 26815 "parsing/parser.ml" +# 27671 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -26864,9 +27720,9 @@ module Tables = struct let _v : (Parsetree.open_description * string Asttypes.loc option) = let attrs2 = let _1 = _1_inlined3 in -# 4367 "parsing/parser.mly" +# 4472 "parsing/parser.mly" ( _1 ) -# 26870 "parsing/parser.ml" +# 27726 "parsing/parser.ml" in let _endpos_attrs2_ = _endpos__1_inlined3_ in @@ -26876,36 +27732,36 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1114 "parsing/parser.mly" +# 1123 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 26882 "parsing/parser.ml" +# 27738 "parsing/parser.ml" in let attrs1 = let _1 = _1_inlined1 in -# 4371 "parsing/parser.mly" +# 4476 "parsing/parser.mly" ( _1 ) -# 26890 "parsing/parser.ml" +# 27746 "parsing/parser.ml" in let override = -# 4272 "parsing/parser.mly" +# 4377 "parsing/parser.mly" ( Fresh ) -# 26896 "parsing/parser.ml" +# 27752 "parsing/parser.ml" in let _endpos = _endpos_attrs2_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1818 "parsing/parser.mly" +# 1830 "parsing/parser.mly" ( let attrs = attrs1 @ attrs2 in let loc = make_loc _sloc in let docs = symbol_docs _sloc in Opn.mk id ~override ~attrs ~loc ~docs, ext ) -# 26909 "parsing/parser.ml" +# 27765 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -26965,9 +27821,9 @@ module Tables = struct let _v : (Parsetree.open_description * string Asttypes.loc option) = let attrs2 = let _1 = _1_inlined4 in -# 4367 "parsing/parser.mly" +# 4472 "parsing/parser.mly" ( _1 ) -# 26971 "parsing/parser.ml" +# 27827 "parsing/parser.ml" in let _endpos_attrs2_ = _endpos__1_inlined4_ in @@ -26977,36 +27833,36 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1114 "parsing/parser.mly" +# 1123 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 26983 "parsing/parser.ml" +# 27839 "parsing/parser.ml" in let attrs1 = let _1 = _1_inlined2 in -# 4371 "parsing/parser.mly" +# 4476 "parsing/parser.mly" ( _1 ) -# 26991 "parsing/parser.ml" +# 27847 "parsing/parser.ml" in let override = -# 4273 "parsing/parser.mly" +# 4378 "parsing/parser.mly" ( Override ) -# 26997 "parsing/parser.ml" +# 27853 "parsing/parser.ml" in let _endpos = _endpos_attrs2_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1818 "parsing/parser.mly" +# 1830 "parsing/parser.mly" ( let attrs = attrs1 @ attrs2 in let loc = make_loc _sloc in let docs = symbol_docs _sloc in Opn.mk id ~override ~attrs ~loc ~docs, ext ) -# 27010 "parsing/parser.ml" +# 27866 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -27025,17 +27881,17 @@ module Tables = struct MenhirLib.EngineTypes.next = _menhir_stack; } = _menhir_stack in let _1 : ( -# 953 "parsing/parser.mly" +# 962 "parsing/parser.mly" (string) -# 27031 "parsing/parser.ml" +# 27887 "parsing/parser.ml" ) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Asttypes.label) = -# 4055 "parsing/parser.mly" +# 4159 "parsing/parser.mly" ( _1 ) -# 27039 "parsing/parser.ml" +# 27895 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -27054,17 +27910,17 @@ module Tables = struct MenhirLib.EngineTypes.next = _menhir_stack; } = _menhir_stack in let _1 : ( -# 908 "parsing/parser.mly" +# 917 "parsing/parser.mly" (string) -# 27060 "parsing/parser.ml" +# 27916 "parsing/parser.ml" ) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Asttypes.label) = -# 4056 "parsing/parser.mly" +# 4160 "parsing/parser.mly" ( _1 ) -# 27068 "parsing/parser.ml" +# 27924 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -27083,17 +27939,17 @@ module Tables = struct MenhirLib.EngineTypes.next = _menhir_stack; } = _menhir_stack in let _1 : ( -# 909 "parsing/parser.mly" +# 918 "parsing/parser.mly" (string) -# 27089 "parsing/parser.ml" +# 27945 "parsing/parser.ml" ) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Asttypes.label) = -# 4057 "parsing/parser.mly" +# 4161 "parsing/parser.mly" ( _1 ) -# 27097 "parsing/parser.ml" +# 27953 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -27133,17 +27989,17 @@ module Tables = struct let _3 : (string) = Obj.magic _3 in let _2 : unit = Obj.magic _2 in let _1 : ( -# 907 "parsing/parser.mly" +# 916 "parsing/parser.mly" (string) -# 27139 "parsing/parser.ml" +# 27995 "parsing/parser.ml" ) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in let _endpos = _endpos__4_ in let _v : (Asttypes.label) = -# 4058 "parsing/parser.mly" +# 4162 "parsing/parser.mly" ( "."^ _1 ^"(" ^ _3 ^ ")" ) -# 27147 "parsing/parser.ml" +# 28003 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -27190,17 +28046,17 @@ module Tables = struct let _3 : (string) = Obj.magic _3 in let _2 : unit = Obj.magic _2 in let _1 : ( -# 907 "parsing/parser.mly" +# 916 "parsing/parser.mly" (string) -# 27196 "parsing/parser.ml" +# 28052 "parsing/parser.ml" ) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in let _endpos = _endpos__5_ in let _v : (Asttypes.label) = -# 4059 "parsing/parser.mly" +# 4163 "parsing/parser.mly" ( "."^ _1 ^ "(" ^ _3 ^ ")<-" ) -# 27204 "parsing/parser.ml" +# 28060 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -27240,17 +28096,17 @@ module Tables = struct let _3 : (string) = Obj.magic _3 in let _2 : unit = Obj.magic _2 in let _1 : ( -# 907 "parsing/parser.mly" +# 916 "parsing/parser.mly" (string) -# 27246 "parsing/parser.ml" +# 28102 "parsing/parser.ml" ) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in let _endpos = _endpos__4_ in let _v : (Asttypes.label) = -# 4060 "parsing/parser.mly" +# 4164 "parsing/parser.mly" ( "."^ _1 ^"[" ^ _3 ^ "]" ) -# 27254 "parsing/parser.ml" +# 28110 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -27297,17 +28153,17 @@ module Tables = struct let _3 : (string) = Obj.magic _3 in let _2 : unit = Obj.magic _2 in let _1 : ( -# 907 "parsing/parser.mly" +# 916 "parsing/parser.mly" (string) -# 27303 "parsing/parser.ml" +# 28159 "parsing/parser.ml" ) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in let _endpos = _endpos__5_ in let _v : (Asttypes.label) = -# 4061 "parsing/parser.mly" +# 4165 "parsing/parser.mly" ( "."^ _1 ^ "[" ^ _3 ^ "]<-" ) -# 27311 "parsing/parser.ml" +# 28167 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -27347,17 +28203,17 @@ module Tables = struct let _3 : (string) = Obj.magic _3 in let _2 : unit = Obj.magic _2 in let _1 : ( -# 907 "parsing/parser.mly" +# 916 "parsing/parser.mly" (string) -# 27353 "parsing/parser.ml" +# 28209 "parsing/parser.ml" ) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in let _endpos = _endpos__4_ in let _v : (Asttypes.label) = -# 4062 "parsing/parser.mly" +# 4166 "parsing/parser.mly" ( "."^ _1 ^"{" ^ _3 ^ "}" ) -# 27361 "parsing/parser.ml" +# 28217 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -27404,17 +28260,17 @@ module Tables = struct let _3 : (string) = Obj.magic _3 in let _2 : unit = Obj.magic _2 in let _1 : ( -# 907 "parsing/parser.mly" +# 916 "parsing/parser.mly" (string) -# 27410 "parsing/parser.ml" +# 28266 "parsing/parser.ml" ) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in let _endpos = _endpos__5_ in let _v : (Asttypes.label) = -# 4063 "parsing/parser.mly" +# 4167 "parsing/parser.mly" ( "."^ _1 ^ "{" ^ _3 ^ "}<-" ) -# 27418 "parsing/parser.ml" +# 28274 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -27433,17 +28289,17 @@ module Tables = struct MenhirLib.EngineTypes.next = _menhir_stack; } = _menhir_stack in let _1 : ( -# 965 "parsing/parser.mly" +# 974 "parsing/parser.mly" (string) -# 27439 "parsing/parser.ml" +# 28295 "parsing/parser.ml" ) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Asttypes.label) = -# 4064 "parsing/parser.mly" +# 4168 "parsing/parser.mly" ( _1 ) -# 27447 "parsing/parser.ml" +# 28303 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -27466,9 +28322,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Asttypes.label) = -# 4065 "parsing/parser.mly" +# 4169 "parsing/parser.mly" ( "!" ) -# 27472 "parsing/parser.ml" +# 28328 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -27487,22 +28343,22 @@ module Tables = struct MenhirLib.EngineTypes.next = _menhir_stack; } = _menhir_stack in let op : ( -# 902 "parsing/parser.mly" +# 911 "parsing/parser.mly" (string) -# 27493 "parsing/parser.ml" +# 28349 "parsing/parser.ml" ) = Obj.magic op in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos_op_ in let _endpos = _endpos_op_ in let _v : (Asttypes.label) = let _1 = -# 4069 "parsing/parser.mly" +# 4173 "parsing/parser.mly" ( op ) -# 27501 "parsing/parser.ml" +# 28357 "parsing/parser.ml" in -# 4066 "parsing/parser.mly" +# 4170 "parsing/parser.mly" ( _1 ) -# 27506 "parsing/parser.ml" +# 28362 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -27521,22 +28377,22 @@ module Tables = struct MenhirLib.EngineTypes.next = _menhir_stack; } = _menhir_stack in let op : ( -# 903 "parsing/parser.mly" +# 912 "parsing/parser.mly" (string) -# 27527 "parsing/parser.ml" +# 28383 "parsing/parser.ml" ) = Obj.magic op in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos_op_ in let _endpos = _endpos_op_ in let _v : (Asttypes.label) = let _1 = -# 4070 "parsing/parser.mly" +# 4174 "parsing/parser.mly" ( op ) -# 27535 "parsing/parser.ml" +# 28391 "parsing/parser.ml" in -# 4066 "parsing/parser.mly" +# 4170 "parsing/parser.mly" ( _1 ) -# 27540 "parsing/parser.ml" +# 28396 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -27555,22 +28411,22 @@ module Tables = struct MenhirLib.EngineTypes.next = _menhir_stack; } = _menhir_stack in let op : ( -# 904 "parsing/parser.mly" +# 913 "parsing/parser.mly" (string) -# 27561 "parsing/parser.ml" +# 28417 "parsing/parser.ml" ) = Obj.magic op in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos_op_ in let _endpos = _endpos_op_ in let _v : (Asttypes.label) = let _1 = -# 4071 "parsing/parser.mly" +# 4175 "parsing/parser.mly" ( op ) -# 27569 "parsing/parser.ml" +# 28425 "parsing/parser.ml" in -# 4066 "parsing/parser.mly" +# 4170 "parsing/parser.mly" ( _1 ) -# 27574 "parsing/parser.ml" +# 28430 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -27589,22 +28445,22 @@ module Tables = struct MenhirLib.EngineTypes.next = _menhir_stack; } = _menhir_stack in let op : ( -# 905 "parsing/parser.mly" +# 914 "parsing/parser.mly" (string) -# 27595 "parsing/parser.ml" +# 28451 "parsing/parser.ml" ) = Obj.magic op in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos_op_ in let _endpos = _endpos_op_ in let _v : (Asttypes.label) = let _1 = -# 4072 "parsing/parser.mly" +# 4176 "parsing/parser.mly" ( op ) -# 27603 "parsing/parser.ml" +# 28459 "parsing/parser.ml" in -# 4066 "parsing/parser.mly" +# 4170 "parsing/parser.mly" ( _1 ) -# 27608 "parsing/parser.ml" +# 28464 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -27623,22 +28479,22 @@ module Tables = struct MenhirLib.EngineTypes.next = _menhir_stack; } = _menhir_stack in let op : ( -# 906 "parsing/parser.mly" +# 915 "parsing/parser.mly" (string) -# 27629 "parsing/parser.ml" +# 28485 "parsing/parser.ml" ) = Obj.magic op in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos_op_ in let _endpos = _endpos_op_ in let _v : (Asttypes.label) = let _1 = -# 4073 "parsing/parser.mly" +# 4177 "parsing/parser.mly" ( op ) -# 27637 "parsing/parser.ml" +# 28493 "parsing/parser.ml" in -# 4066 "parsing/parser.mly" +# 4170 "parsing/parser.mly" ( _1 ) -# 27642 "parsing/parser.ml" +# 28498 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -27661,14 +28517,14 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Asttypes.label) = let _1 = -# 4074 "parsing/parser.mly" +# 4178 "parsing/parser.mly" ("+") -# 27667 "parsing/parser.ml" +# 28523 "parsing/parser.ml" in -# 4066 "parsing/parser.mly" +# 4170 "parsing/parser.mly" ( _1 ) -# 27672 "parsing/parser.ml" +# 28528 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -27691,14 +28547,14 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Asttypes.label) = let _1 = -# 4075 "parsing/parser.mly" +# 4179 "parsing/parser.mly" ("+.") -# 27697 "parsing/parser.ml" +# 28553 "parsing/parser.ml" in -# 4066 "parsing/parser.mly" +# 4170 "parsing/parser.mly" ( _1 ) -# 27702 "parsing/parser.ml" +# 28558 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -27721,14 +28577,14 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Asttypes.label) = let _1 = -# 4076 "parsing/parser.mly" +# 4180 "parsing/parser.mly" ("+=") -# 27727 "parsing/parser.ml" +# 28583 "parsing/parser.ml" in -# 4066 "parsing/parser.mly" +# 4170 "parsing/parser.mly" ( _1 ) -# 27732 "parsing/parser.ml" +# 28588 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -27751,14 +28607,14 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Asttypes.label) = let _1 = -# 4077 "parsing/parser.mly" +# 4181 "parsing/parser.mly" ("-") -# 27757 "parsing/parser.ml" +# 28613 "parsing/parser.ml" in -# 4066 "parsing/parser.mly" +# 4170 "parsing/parser.mly" ( _1 ) -# 27762 "parsing/parser.ml" +# 28618 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -27781,14 +28637,14 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Asttypes.label) = let _1 = -# 4078 "parsing/parser.mly" +# 4182 "parsing/parser.mly" ("-.") -# 27787 "parsing/parser.ml" +# 28643 "parsing/parser.ml" in -# 4066 "parsing/parser.mly" +# 4170 "parsing/parser.mly" ( _1 ) -# 27792 "parsing/parser.ml" +# 28648 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -27811,14 +28667,14 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Asttypes.label) = let _1 = -# 4079 "parsing/parser.mly" +# 4183 "parsing/parser.mly" ("*") -# 27817 "parsing/parser.ml" +# 28673 "parsing/parser.ml" in -# 4066 "parsing/parser.mly" +# 4170 "parsing/parser.mly" ( _1 ) -# 27822 "parsing/parser.ml" +# 28678 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -27841,14 +28697,14 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Asttypes.label) = let _1 = -# 4080 "parsing/parser.mly" +# 4184 "parsing/parser.mly" ("%") -# 27847 "parsing/parser.ml" +# 28703 "parsing/parser.ml" in -# 4066 "parsing/parser.mly" +# 4170 "parsing/parser.mly" ( _1 ) -# 27852 "parsing/parser.ml" +# 28708 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -27871,14 +28727,14 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Asttypes.label) = let _1 = -# 4081 "parsing/parser.mly" +# 4185 "parsing/parser.mly" ("=") -# 27877 "parsing/parser.ml" +# 28733 "parsing/parser.ml" in -# 4066 "parsing/parser.mly" +# 4170 "parsing/parser.mly" ( _1 ) -# 27882 "parsing/parser.ml" +# 28738 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -27901,14 +28757,14 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Asttypes.label) = let _1 = -# 4082 "parsing/parser.mly" +# 4186 "parsing/parser.mly" ("<") -# 27907 "parsing/parser.ml" +# 28763 "parsing/parser.ml" in -# 4066 "parsing/parser.mly" +# 4170 "parsing/parser.mly" ( _1 ) -# 27912 "parsing/parser.ml" +# 28768 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -27931,14 +28787,14 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Asttypes.label) = let _1 = -# 4083 "parsing/parser.mly" +# 4187 "parsing/parser.mly" (">") -# 27937 "parsing/parser.ml" +# 28793 "parsing/parser.ml" in -# 4066 "parsing/parser.mly" +# 4170 "parsing/parser.mly" ( _1 ) -# 27942 "parsing/parser.ml" +# 28798 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -27961,14 +28817,14 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Asttypes.label) = let _1 = -# 4084 "parsing/parser.mly" +# 4188 "parsing/parser.mly" ("or") -# 27967 "parsing/parser.ml" +# 28823 "parsing/parser.ml" in -# 4066 "parsing/parser.mly" +# 4170 "parsing/parser.mly" ( _1 ) -# 27972 "parsing/parser.ml" +# 28828 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -27991,14 +28847,14 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Asttypes.label) = let _1 = -# 4085 "parsing/parser.mly" +# 4189 "parsing/parser.mly" ("||") -# 27997 "parsing/parser.ml" +# 28853 "parsing/parser.ml" in -# 4066 "parsing/parser.mly" +# 4170 "parsing/parser.mly" ( _1 ) -# 28002 "parsing/parser.ml" +# 28858 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -28021,14 +28877,14 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Asttypes.label) = let _1 = -# 4086 "parsing/parser.mly" +# 4190 "parsing/parser.mly" ("&") -# 28027 "parsing/parser.ml" +# 28883 "parsing/parser.ml" in -# 4066 "parsing/parser.mly" +# 4170 "parsing/parser.mly" ( _1 ) -# 28032 "parsing/parser.ml" +# 28888 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -28051,14 +28907,14 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Asttypes.label) = let _1 = -# 4087 "parsing/parser.mly" +# 4191 "parsing/parser.mly" ("&&") -# 28057 "parsing/parser.ml" +# 28913 "parsing/parser.ml" in -# 4066 "parsing/parser.mly" +# 4170 "parsing/parser.mly" ( _1 ) -# 28062 "parsing/parser.ml" +# 28918 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -28081,14 +28937,14 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Asttypes.label) = let _1 = -# 4088 "parsing/parser.mly" +# 4192 "parsing/parser.mly" (":=") -# 28087 "parsing/parser.ml" +# 28943 "parsing/parser.ml" in -# 4066 "parsing/parser.mly" +# 4170 "parsing/parser.mly" ( _1 ) -# 28092 "parsing/parser.ml" +# 28948 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -28111,9 +28967,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (bool) = -# 3953 "parsing/parser.mly" +# 4057 "parsing/parser.mly" ( true ) -# 28117 "parsing/parser.ml" +# 28973 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -28129,9 +28985,9 @@ module Tables = struct let _startpos = _menhir_stack.MenhirLib.EngineTypes.endp in let _endpos = _startpos in let _v : (bool) = -# 3954 "parsing/parser.mly" +# 4058 "parsing/parser.mly" ( false ) -# 28135 "parsing/parser.ml" +# 28991 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -28149,7 +29005,7 @@ module Tables = struct let _v : (unit option) = # 114 "" ( None ) -# 28153 "parsing/parser.ml" +# 29009 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -28174,7 +29030,7 @@ module Tables = struct let _v : (unit option) = # 116 "" ( Some x ) -# 28178 "parsing/parser.ml" +# 29034 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -28192,7 +29048,7 @@ module Tables = struct let _v : (unit option) = # 114 "" ( None ) -# 28196 "parsing/parser.ml" +# 29052 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -28217,7 +29073,50 @@ module Tables = struct let _v : (unit option) = # 116 "" ( Some x ) -# 28221 "parsing/parser.ml" +# 29077 "parsing/parser.ml" + in + { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = Obj.repr _v; + MenhirLib.EngineTypes.startp = _startpos; + MenhirLib.EngineTypes.endp = _endpos; + MenhirLib.EngineTypes.next = _menhir_stack; + }); + (fun _menhir_env -> + let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in + let _menhir_s = _menhir_env.MenhirLib.EngineTypes.current in + let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in + let _startpos = _menhir_stack.MenhirLib.EngineTypes.endp in + let _endpos = _startpos in + let _v : (Parsetree.attribute option) = +# 114 "" + ( None ) +# 29095 "parsing/parser.ml" + in + { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = Obj.repr _v; + MenhirLib.EngineTypes.startp = _startpos; + MenhirLib.EngineTypes.endp = _endpos; + MenhirLib.EngineTypes.next = _menhir_stack; + }); + (fun _menhir_env -> + let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in + let { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = x; + MenhirLib.EngineTypes.startp = _startpos_x_; + MenhirLib.EngineTypes.endp = _endpos_x_; + MenhirLib.EngineTypes.next = _menhir_stack; + } = _menhir_stack in + let x : (Parsetree.attribute) = Obj.magic x in + let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in + let _startpos = _startpos_x_ in + let _endpos = _endpos_x_ in + let _v : (Parsetree.attribute option) = +# 116 "" + ( Some x ) +# 29120 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -28235,7 +29134,7 @@ module Tables = struct let _v : (string Asttypes.loc option) = # 114 "" ( None ) -# 28239 "parsing/parser.ml" +# 29138 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -28260,9 +29159,9 @@ module Tables = struct }; } = _menhir_stack in let _1_inlined1 : ( -# 928 "parsing/parser.mly" +# 937 "parsing/parser.mly" (string) -# 28266 "parsing/parser.ml" +# 29165 "parsing/parser.ml" ) = Obj.magic _1_inlined1 in let _1 : unit = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in @@ -28275,21 +29174,21 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1114 "parsing/parser.mly" +# 1123 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 28281 "parsing/parser.ml" +# 29180 "parsing/parser.ml" in # 183 "" ( x ) -# 28287 "parsing/parser.ml" +# 29186 "parsing/parser.ml" in # 116 "" ( Some x ) -# 28293 "parsing/parser.ml" +# 29192 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -28307,7 +29206,7 @@ module Tables = struct let _v : (Parsetree.core_type option) = # 114 "" ( None ) -# 28311 "parsing/parser.ml" +# 29210 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -28339,12 +29238,12 @@ module Tables = struct let _v : (Parsetree.core_type option) = let x = # 183 "" ( x ) -# 28343 "parsing/parser.ml" +# 29242 "parsing/parser.ml" in # 116 "" ( Some x ) -# 28348 "parsing/parser.ml" +# 29247 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -28362,7 +29261,7 @@ module Tables = struct let _v : (Parsetree.expression option) = # 114 "" ( None ) -# 28366 "parsing/parser.ml" +# 29265 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -28394,12 +29293,12 @@ module Tables = struct let _v : (Parsetree.expression option) = let x = # 183 "" ( x ) -# 28398 "parsing/parser.ml" +# 29297 "parsing/parser.ml" in # 116 "" ( Some x ) -# 28403 "parsing/parser.ml" +# 29302 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -28417,7 +29316,7 @@ module Tables = struct let _v : (Parsetree.module_type option) = # 114 "" ( None ) -# 28421 "parsing/parser.ml" +# 29320 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -28449,12 +29348,12 @@ module Tables = struct let _v : (Parsetree.module_type option) = let x = # 183 "" ( x ) -# 28453 "parsing/parser.ml" +# 29352 "parsing/parser.ml" in # 116 "" ( Some x ) -# 28458 "parsing/parser.ml" +# 29357 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -28472,7 +29371,7 @@ module Tables = struct let _v : (Parsetree.pattern option) = # 114 "" ( None ) -# 28476 "parsing/parser.ml" +# 29375 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -28504,12 +29403,12 @@ module Tables = struct let _v : (Parsetree.pattern option) = let x = # 183 "" ( x ) -# 28508 "parsing/parser.ml" +# 29407 "parsing/parser.ml" in # 116 "" ( Some x ) -# 28513 "parsing/parser.ml" +# 29412 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -28527,7 +29426,7 @@ module Tables = struct let _v : (Parsetree.expression option) = # 114 "" ( None ) -# 28531 "parsing/parser.ml" +# 29430 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -28559,12 +29458,12 @@ module Tables = struct let _v : (Parsetree.expression option) = let x = # 183 "" ( x ) -# 28563 "parsing/parser.ml" +# 29462 "parsing/parser.ml" in # 116 "" ( Some x ) -# 28568 "parsing/parser.ml" +# 29467 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -28582,7 +29481,7 @@ module Tables = struct let _v : ((Parsetree.core_type option * Parsetree.core_type option) option) = # 114 "" ( None ) -# 28586 "parsing/parser.ml" +# 29485 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -28607,7 +29506,7 @@ module Tables = struct let _v : ((Parsetree.core_type option * Parsetree.core_type option) option) = # 116 "" ( Some x ) -# 28611 "parsing/parser.ml" +# 29510 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -28626,17 +29525,17 @@ module Tables = struct MenhirLib.EngineTypes.next = _menhir_stack; } = _menhir_stack in let _1 : ( -# 946 "parsing/parser.mly" +# 955 "parsing/parser.mly" (string) -# 28632 "parsing/parser.ml" +# 29531 "parsing/parser.ml" ) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 4284 "parsing/parser.mly" +# 4389 "parsing/parser.mly" ( _1 ) -# 28640 "parsing/parser.ml" +# 29539 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -28668,18 +29567,18 @@ module Tables = struct } = _menhir_stack in let _3 : unit = Obj.magic _3 in let _2 : ( -# 928 "parsing/parser.mly" +# 937 "parsing/parser.mly" (string) -# 28674 "parsing/parser.ml" +# 29573 "parsing/parser.ml" ) = Obj.magic _2 in let _1 : unit = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : (string) = -# 4285 "parsing/parser.mly" +# 4390 "parsing/parser.mly" ( _2 ) -# 28683 "parsing/parser.ml" +# 29582 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -28733,9 +29632,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1565 "parsing/parser.mly" +# 1577 "parsing/parser.mly" ( mkmod ~loc:_sloc (Pmod_constraint(me, mty)) ) -# 28739 "parsing/parser.ml" +# 29638 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -28788,9 +29687,9 @@ module Tables = struct let _v : (Parsetree.module_expr) = let _loc__5_ = (_startpos__5_, _endpos__5_) in let _loc__1_ = (_startpos__1_, _endpos__1_) in -# 1567 "parsing/parser.mly" +# 1579 "parsing/parser.mly" ( unclosed "(" _loc__1_ ")" _loc__5_ ) -# 28794 "parsing/parser.ml" +# 29693 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -28827,9 +29726,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : (Parsetree.module_expr) = -# 1570 "parsing/parser.mly" +# 1582 "parsing/parser.mly" ( me (* TODO consider reloc *) ) -# 28833 "parsing/parser.ml" +# 29732 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -28868,9 +29767,9 @@ module Tables = struct let _v : (Parsetree.module_expr) = let _loc__3_ = (_startpos__3_, _endpos__3_) in let _loc__1_ = (_startpos__1_, _endpos__1_) in -# 1572 "parsing/parser.mly" +# 1584 "parsing/parser.mly" ( unclosed "(" _loc__1_ ")" _loc__3_ ) -# 28874 "parsing/parser.ml" +# 29773 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -28921,25 +29820,25 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__5_ in let _v : (Parsetree.module_expr) = let e = -# 1589 "parsing/parser.mly" +# 1601 "parsing/parser.mly" ( e ) -# 28927 "parsing/parser.ml" +# 29826 "parsing/parser.ml" in let attrs = let _1 = _1_inlined1 in -# 4371 "parsing/parser.mly" +# 4476 "parsing/parser.mly" ( _1 ) -# 28934 "parsing/parser.ml" +# 29833 "parsing/parser.ml" in let _endpos = _endpos__5_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1576 "parsing/parser.mly" +# 1588 "parsing/parser.mly" ( mkmod ~loc:_sloc ~attrs (Pmod_unpack e) ) -# 28943 "parsing/parser.ml" +# 29842 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -29010,11 +29909,11 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 3928 "parsing/parser.mly" +# 4032 "parsing/parser.mly" ( let (lid, cstrs, attrs) = package_type_of_module_type _1 in let descr = Ptyp_package (lid, cstrs) in mktyp ~loc:_sloc ~attrs descr ) -# 29018 "parsing/parser.ml" +# 29917 "parsing/parser.ml" in let _endpos_ty_ = _endpos__1_ in @@ -29022,26 +29921,26 @@ module Tables = struct let _startpos = _startpos_e_ in let _loc = (_startpos, _endpos) in -# 1591 "parsing/parser.mly" +# 1603 "parsing/parser.mly" ( ghexp ~loc:_loc (Pexp_constraint (e, ty)) ) -# 29028 "parsing/parser.ml" +# 29927 "parsing/parser.ml" in let attrs = let _1 = _1_inlined1 in -# 4371 "parsing/parser.mly" +# 4476 "parsing/parser.mly" ( _1 ) -# 29036 "parsing/parser.ml" +# 29935 "parsing/parser.ml" in let _endpos = _endpos__5_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1576 "parsing/parser.mly" +# 1588 "parsing/parser.mly" ( mkmod ~loc:_sloc ~attrs (Pmod_unpack e) ) -# 29045 "parsing/parser.ml" +# 29944 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -29127,11 +30026,11 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 3928 "parsing/parser.mly" +# 4032 "parsing/parser.mly" ( let (lid, cstrs, attrs) = package_type_of_module_type _1 in let descr = Ptyp_package (lid, cstrs) in mktyp ~loc:_sloc ~attrs descr ) -# 29135 "parsing/parser.ml" +# 30034 "parsing/parser.ml" in let _endpos_ty2_ = _endpos__1_inlined1_ in @@ -29140,37 +30039,37 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 3928 "parsing/parser.mly" +# 4032 "parsing/parser.mly" ( let (lid, cstrs, attrs) = package_type_of_module_type _1 in let descr = Ptyp_package (lid, cstrs) in mktyp ~loc:_sloc ~attrs descr ) -# 29148 "parsing/parser.ml" +# 30047 "parsing/parser.ml" in let _endpos = _endpos_ty2_ in let _startpos = _startpos_e_ in let _loc = (_startpos, _endpos) in -# 1593 "parsing/parser.mly" +# 1605 "parsing/parser.mly" ( ghexp ~loc:_loc (Pexp_coerce (e, Some ty1, ty2)) ) -# 29157 "parsing/parser.ml" +# 30056 "parsing/parser.ml" in let attrs = let _1 = _1_inlined1 in -# 4371 "parsing/parser.mly" +# 4476 "parsing/parser.mly" ( _1 ) -# 29165 "parsing/parser.ml" +# 30064 "parsing/parser.ml" in let _endpos = _endpos__5_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1576 "parsing/parser.mly" +# 1588 "parsing/parser.mly" ( mkmod ~loc:_sloc ~attrs (Pmod_unpack e) ) -# 29174 "parsing/parser.ml" +# 30073 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -29241,11 +30140,11 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 3928 "parsing/parser.mly" +# 4032 "parsing/parser.mly" ( let (lid, cstrs, attrs) = package_type_of_module_type _1 in let descr = Ptyp_package (lid, cstrs) in mktyp ~loc:_sloc ~attrs descr ) -# 29249 "parsing/parser.ml" +# 30148 "parsing/parser.ml" in let _endpos_ty2_ = _endpos__1_ in @@ -29253,26 +30152,26 @@ module Tables = struct let _startpos = _startpos_e_ in let _loc = (_startpos, _endpos) in -# 1595 "parsing/parser.mly" +# 1607 "parsing/parser.mly" ( ghexp ~loc:_loc (Pexp_coerce (e, None, ty2)) ) -# 29259 "parsing/parser.ml" +# 30158 "parsing/parser.ml" in let attrs = let _1 = _1_inlined1 in -# 4371 "parsing/parser.mly" +# 4476 "parsing/parser.mly" ( _1 ) -# 29267 "parsing/parser.ml" +# 30166 "parsing/parser.ml" in let _endpos = _endpos__5_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1576 "parsing/parser.mly" +# 1588 "parsing/parser.mly" ( mkmod ~loc:_sloc ~attrs (Pmod_unpack e) ) -# 29276 "parsing/parser.ml" +# 30175 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -29332,17 +30231,17 @@ module Tables = struct let _v : (Parsetree.module_expr) = let _3 = let _1 = _1_inlined1 in -# 4371 "parsing/parser.mly" +# 4476 "parsing/parser.mly" ( _1 ) -# 29338 "parsing/parser.ml" +# 30237 "parsing/parser.ml" in let _loc__6_ = (_startpos__6_, _endpos__6_) in let _loc__1_ = (_startpos__1_, _endpos__1_) in -# 1578 "parsing/parser.mly" +# 1590 "parsing/parser.mly" ( unclosed "(" _loc__1_ ")" _loc__6_ ) -# 29346 "parsing/parser.ml" +# 30245 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -29402,17 +30301,17 @@ module Tables = struct let _v : (Parsetree.module_expr) = let _3 = let _1 = _1_inlined1 in -# 4371 "parsing/parser.mly" +# 4476 "parsing/parser.mly" ( _1 ) -# 29408 "parsing/parser.ml" +# 30307 "parsing/parser.ml" in let _loc__6_ = (_startpos__6_, _endpos__6_) in let _loc__1_ = (_startpos__1_, _endpos__1_) in -# 1580 "parsing/parser.mly" +# 1592 "parsing/parser.mly" ( unclosed "(" _loc__1_ ")" _loc__6_ ) -# 29416 "parsing/parser.ml" +# 30315 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -29465,17 +30364,17 @@ module Tables = struct let _v : (Parsetree.module_expr) = let _3 = let _1 = _1_inlined1 in -# 4371 "parsing/parser.mly" +# 4476 "parsing/parser.mly" ( _1 ) -# 29471 "parsing/parser.ml" +# 30370 "parsing/parser.ml" in let _loc__5_ = (_startpos__5_, _endpos__5_) in let _loc__1_ = (_startpos__1_, _endpos__1_) in -# 1582 "parsing/parser.mly" +# 1594 "parsing/parser.mly" ( unclosed "(" _loc__1_ ")" _loc__5_ ) -# 29479 "parsing/parser.ml" +# 30378 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -29498,9 +30397,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Parsetree.core_type * (Asttypes.variance * Asttypes.injectivity)) = -# 3451 "parsing/parser.mly" +# 3520 "parsing/parser.mly" ( _1 ) -# 29504 "parsing/parser.ml" +# 30403 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -29513,9 +30412,9 @@ module Tables = struct let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in let { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _4; - MenhirLib.EngineTypes.startp = _startpos__4_; - MenhirLib.EngineTypes.endp = _endpos__4_; + MenhirLib.EngineTypes.semv = layout; + MenhirLib.EngineTypes.startp = _startpos_layout_; + MenhirLib.EngineTypes.endp = _endpos_layout_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; MenhirLib.EngineTypes.semv = _3; @@ -29523,30 +30422,149 @@ module Tables = struct MenhirLib.EngineTypes.endp = _endpos__3_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _2; - MenhirLib.EngineTypes.startp = _startpos__2_; - MenhirLib.EngineTypes.endp = _endpos__2_; + MenhirLib.EngineTypes.semv = _1_inlined2; + MenhirLib.EngineTypes.startp = _startpos__1_inlined2_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined2_; MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; - MenhirLib.EngineTypes.next = _menhir_stack; + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _2; + MenhirLib.EngineTypes.startp = _startpos__2_; + MenhirLib.EngineTypes.endp = _endpos__2_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _1_inlined1; + MenhirLib.EngineTypes.startp = _startpos__1_inlined1_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined1_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + }; + }; }; }; }; } = _menhir_stack in - let _4 : (Parsetree.attribute) = Obj.magic _4 in + let layout : (Asttypes.layout_annotation) = Obj.magic layout in let _3 : unit = Obj.magic _3 in - let _2 : (Parsetree.core_type) = Obj.magic _2 in + let _1_inlined2 : (Parsetree.attributes) = Obj.magic _1_inlined2 in + let _2 : (Asttypes.label) = Obj.magic _2 in + let _1_inlined1 : unit = Obj.magic _1_inlined1 in let _1 : (Asttypes.variance * Asttypes.injectivity) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in - let _endpos = _endpos__4_ in - let _v : (Parsetree.core_type * (Asttypes.variance * Asttypes.injectivity)) = -# 3453 "parsing/parser.mly" - ( {_2 with ptyp_attributes = [_4]}, _1 ) -# 29550 "parsing/parser.ml" + let _endpos = _endpos_layout_ in + let _v : (Parsetree.core_type * (Asttypes.variance * Asttypes.injectivity)) = let _2 = + let (_startpos__1_, _1_inlined1) = (_startpos__1_inlined1_, _1_inlined2) in + let attrs = + let _1 = _1_inlined1 in + +# 4476 "parsing/parser.mly" + ( _1 ) +# 30467 "parsing/parser.ml" + + in + let name = +# 3541 "parsing/parser.mly" + ( Some _2 ) +# 30473 "parsing/parser.ml" + in + let _startpos_name_ = _startpos__1_ in + let _endpos = _endpos_layout_ in + let _symbolstartpos = _startpos_name_ in + let _sloc = (_symbolstartpos, _endpos) in + +# 3515 "parsing/parser.mly" + ( Jane_syntax.Layouts.type_of ~loc:(make_loc _sloc) ~attrs + (Ltyp_var { name; layout }) ) +# 30483 "parsing/parser.ml" + + in + +# 3522 "parsing/parser.mly" + ( _2, _1 ) +# 30489 "parsing/parser.ml" + in + { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = Obj.repr _v; + MenhirLib.EngineTypes.startp = _startpos; + MenhirLib.EngineTypes.endp = _endpos; + MenhirLib.EngineTypes.next = _menhir_stack; + }); + (fun _menhir_env -> + let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in + let { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = layout; + MenhirLib.EngineTypes.startp = _startpos_layout_; + MenhirLib.EngineTypes.endp = _endpos_layout_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _3; + MenhirLib.EngineTypes.startp = _startpos__3_; + MenhirLib.EngineTypes.endp = _endpos__3_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _1_inlined2; + MenhirLib.EngineTypes.startp = _startpos__1_inlined2_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined2_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _1_inlined1; + MenhirLib.EngineTypes.startp = _startpos__1_inlined1_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined1_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + }; + }; + }; + }; + } = _menhir_stack in + let layout : (Asttypes.layout_annotation) = Obj.magic layout in + let _3 : unit = Obj.magic _3 in + let _1_inlined2 : (Parsetree.attributes) = Obj.magic _1_inlined2 in + let _1_inlined1 : unit = Obj.magic _1_inlined1 in + let _1 : (Asttypes.variance * Asttypes.injectivity) = Obj.magic _1 in + let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in + let _startpos = _startpos__1_ in + let _endpos = _endpos_layout_ in + let _v : (Parsetree.core_type * (Asttypes.variance * Asttypes.injectivity)) = let _2 = + let (_startpos__1_, _1_inlined1) = (_startpos__1_inlined1_, _1_inlined2) in + let attrs = + let _1 = _1_inlined1 in + +# 4476 "parsing/parser.mly" + ( _1 ) +# 30546 "parsing/parser.ml" + + in + let name = +# 3543 "parsing/parser.mly" + ( None ) +# 30552 "parsing/parser.ml" + in + let _startpos_name_ = _startpos__1_ in + let _endpos = _endpos_layout_ in + let _symbolstartpos = _startpos_name_ in + let _sloc = (_symbolstartpos, _endpos) in + +# 3515 "parsing/parser.mly" + ( Jane_syntax.Layouts.type_of ~loc:(make_loc _sloc) ~attrs + (Ltyp_var { name; layout }) ) +# 30562 "parsing/parser.ml" + + in + +# 3522 "parsing/parser.mly" + ( _2, _1 ) +# 30568 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -29576,9 +30594,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (Longident.t) = -# 1484 "parsing/parser.mly" +# 1496 "parsing/parser.mly" ( _1 ) -# 29582 "parsing/parser.ml" +# 30600 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -29608,9 +30626,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (Longident.t) = -# 1469 "parsing/parser.mly" +# 1481 "parsing/parser.mly" ( _1 ) -# 29614 "parsing/parser.ml" +# 30632 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -29640,9 +30658,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (Parsetree.core_type) = -# 1444 "parsing/parser.mly" +# 1456 "parsing/parser.mly" ( _1 ) -# 29646 "parsing/parser.ml" +# 30664 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -29672,9 +30690,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (Parsetree.expression) = -# 1449 "parsing/parser.mly" +# 1461 "parsing/parser.mly" ( _1 ) -# 29678 "parsing/parser.ml" +# 30696 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -29704,9 +30722,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (Longident.t) = -# 1474 "parsing/parser.mly" +# 1486 "parsing/parser.mly" ( _1 ) -# 29710 "parsing/parser.ml" +# 30728 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -29736,9 +30754,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (Longident.t) = -# 1479 "parsing/parser.mly" +# 1491 "parsing/parser.mly" ( _1 ) -# 29742 "parsing/parser.ml" +# 30760 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -29768,9 +30786,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (Parsetree.module_expr) = -# 1439 "parsing/parser.mly" +# 1451 "parsing/parser.mly" ( _1 ) -# 29774 "parsing/parser.ml" +# 30792 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -29800,9 +30818,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (Parsetree.module_type) = -# 1434 "parsing/parser.mly" +# 1446 "parsing/parser.mly" ( _1 ) -# 29806 "parsing/parser.ml" +# 30824 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -29832,9 +30850,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (Longident.t) = -# 1459 "parsing/parser.mly" +# 1471 "parsing/parser.mly" ( _1 ) -# 29838 "parsing/parser.ml" +# 30856 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -29864,9 +30882,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (Parsetree.pattern) = -# 1454 "parsing/parser.mly" +# 1466 "parsing/parser.mly" ( _1 ) -# 29870 "parsing/parser.ml" +# 30888 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -29896,9 +30914,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (Longident.t) = -# 1464 "parsing/parser.mly" +# 1476 "parsing/parser.mly" ( _1 ) -# 29902 "parsing/parser.ml" +# 30920 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -29940,15 +30958,15 @@ module Tables = struct let _loc__2_ = (_startpos__2_, _endpos__2_) in let _sloc = (_symbolstartpos, _endpos) in -# 3131 "parsing/parser.mly" +# 3175 "parsing/parser.mly" ( mkpat_cons ~loc:_sloc _loc__2_ (ghpat ~loc:_sloc (Ppat_tuple[_1;_3])) ) -# 29946 "parsing/parser.ml" +# 30964 "parsing/parser.ml" in -# 3119 "parsing/parser.mly" +# 3163 "parsing/parser.mly" ( _1 ) -# 29952 "parsing/parser.ml" +# 30970 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -29978,14 +30996,14 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (Parsetree.pattern) = let _1 = -# 3133 "parsing/parser.mly" +# 3177 "parsing/parser.mly" ( Pat.attr _1 _2 ) -# 29984 "parsing/parser.ml" +# 31002 "parsing/parser.ml" in -# 3119 "parsing/parser.mly" +# 3163 "parsing/parser.mly" ( _1 ) -# 29989 "parsing/parser.ml" +# 31007 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -30008,14 +31026,14 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Parsetree.pattern) = let _1 = -# 3135 "parsing/parser.mly" +# 3179 "parsing/parser.mly" ( _1 ) -# 30014 "parsing/parser.ml" +# 31032 "parsing/parser.ml" in -# 3119 "parsing/parser.mly" +# 3163 "parsing/parser.mly" ( _1 ) -# 30019 "parsing/parser.ml" +# 31037 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -30060,15 +31078,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1114 "parsing/parser.mly" +# 1123 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 30066 "parsing/parser.ml" +# 31084 "parsing/parser.ml" in -# 3138 "parsing/parser.mly" +# 3182 "parsing/parser.mly" ( Ppat_alias(_1, _3) ) -# 30072 "parsing/parser.ml" +# 31090 "parsing/parser.ml" in let _endpos__1_ = _endpos__1_inlined1_ in @@ -30076,21 +31094,21 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1149 "parsing/parser.mly" +# 1158 "parsing/parser.mly" ( mkpat ~loc:_sloc _1 ) -# 30082 "parsing/parser.ml" +# 31100 "parsing/parser.ml" in -# 3149 "parsing/parser.mly" +# 3193 "parsing/parser.mly" ( _1 ) -# 30088 "parsing/parser.ml" +# 31106 "parsing/parser.ml" in -# 3119 "parsing/parser.mly" +# 3163 "parsing/parser.mly" ( _1 ) -# 30094 "parsing/parser.ml" +# 31112 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -30131,9 +31149,9 @@ module Tables = struct let _1 = let _loc__3_ = (_startpos__3_, _endpos__3_) in -# 3140 "parsing/parser.mly" +# 3184 "parsing/parser.mly" ( expecting _loc__3_ "identifier" ) -# 30137 "parsing/parser.ml" +# 31155 "parsing/parser.ml" in let _endpos__1_ = _endpos__3_ in @@ -30141,21 +31159,21 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1149 "parsing/parser.mly" +# 1158 "parsing/parser.mly" ( mkpat ~loc:_sloc _1 ) -# 30147 "parsing/parser.ml" +# 31165 "parsing/parser.ml" in -# 3149 "parsing/parser.mly" +# 3193 "parsing/parser.mly" ( _1 ) -# 30153 "parsing/parser.ml" +# 31171 "parsing/parser.ml" in -# 3119 "parsing/parser.mly" +# 3163 "parsing/parser.mly" ( _1 ) -# 30159 "parsing/parser.ml" +# 31177 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -30180,29 +31198,29 @@ module Tables = struct let _v : (Parsetree.pattern) = let _1 = let _1 = let _1 = -# 3142 "parsing/parser.mly" +# 3186 "parsing/parser.mly" ( Ppat_tuple(List.rev _1) ) -# 30186 "parsing/parser.ml" +# 31204 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1149 "parsing/parser.mly" +# 1158 "parsing/parser.mly" ( mkpat ~loc:_sloc _1 ) -# 30194 "parsing/parser.ml" +# 31212 "parsing/parser.ml" in -# 3149 "parsing/parser.mly" +# 3193 "parsing/parser.mly" ( _1 ) -# 30200 "parsing/parser.ml" +# 31218 "parsing/parser.ml" in -# 3119 "parsing/parser.mly" +# 3163 "parsing/parser.mly" ( _1 ) -# 30206 "parsing/parser.ml" +# 31224 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -30243,9 +31261,9 @@ module Tables = struct let _1 = let _loc__3_ = (_startpos__3_, _endpos__3_) in -# 3144 "parsing/parser.mly" +# 3188 "parsing/parser.mly" ( expecting _loc__3_ "pattern" ) -# 30249 "parsing/parser.ml" +# 31267 "parsing/parser.ml" in let _endpos__1_ = _endpos__3_ in @@ -30253,21 +31271,21 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1149 "parsing/parser.mly" +# 1158 "parsing/parser.mly" ( mkpat ~loc:_sloc _1 ) -# 30259 "parsing/parser.ml" +# 31277 "parsing/parser.ml" in -# 3149 "parsing/parser.mly" +# 3193 "parsing/parser.mly" ( _1 ) -# 30265 "parsing/parser.ml" +# 31283 "parsing/parser.ml" in -# 3119 "parsing/parser.mly" +# 3163 "parsing/parser.mly" ( _1 ) -# 30271 "parsing/parser.ml" +# 31289 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -30306,30 +31324,30 @@ module Tables = struct let _v : (Parsetree.pattern) = let _1 = let _1 = let _1 = -# 3146 "parsing/parser.mly" +# 3190 "parsing/parser.mly" ( Ppat_or(_1, _3) ) -# 30312 "parsing/parser.ml" +# 31330 "parsing/parser.ml" in let _endpos__1_ = _endpos__3_ in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1149 "parsing/parser.mly" +# 1158 "parsing/parser.mly" ( mkpat ~loc:_sloc _1 ) -# 30321 "parsing/parser.ml" +# 31339 "parsing/parser.ml" in -# 3149 "parsing/parser.mly" +# 3193 "parsing/parser.mly" ( _1 ) -# 30327 "parsing/parser.ml" +# 31345 "parsing/parser.ml" in -# 3119 "parsing/parser.mly" +# 3163 "parsing/parser.mly" ( _1 ) -# 30333 "parsing/parser.ml" +# 31351 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -30370,9 +31388,9 @@ module Tables = struct let _1 = let _loc__3_ = (_startpos__3_, _endpos__3_) in -# 3148 "parsing/parser.mly" +# 3192 "parsing/parser.mly" ( expecting _loc__3_ "pattern" ) -# 30376 "parsing/parser.ml" +# 31394 "parsing/parser.ml" in let _endpos__1_ = _endpos__3_ in @@ -30380,21 +31398,21 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1149 "parsing/parser.mly" +# 1158 "parsing/parser.mly" ( mkpat ~loc:_sloc _1 ) -# 30386 "parsing/parser.ml" +# 31404 "parsing/parser.ml" in -# 3149 "parsing/parser.mly" +# 3193 "parsing/parser.mly" ( _1 ) -# 30392 "parsing/parser.ml" +# 31410 "parsing/parser.ml" in -# 3119 "parsing/parser.mly" +# 3163 "parsing/parser.mly" ( _1 ) -# 30398 "parsing/parser.ml" +# 31416 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -30442,24 +31460,24 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4371 "parsing/parser.mly" +# 4476 "parsing/parser.mly" ( _1 ) -# 30448 "parsing/parser.ml" +# 31466 "parsing/parser.ml" in -# 4384 "parsing/parser.mly" +# 4489 "parsing/parser.mly" ( _1, _2 ) -# 30454 "parsing/parser.ml" +# 31472 "parsing/parser.ml" in let _endpos = _endpos__3_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 3121 "parsing/parser.mly" +# 3165 "parsing/parser.mly" ( mkpat_attrs ~loc:_sloc (Ppat_exception _3) _2) -# 30463 "parsing/parser.ml" +# 31481 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -30496,9 +31514,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : (Parsetree.pattern list) = -# 3253 "parsing/parser.mly" +# 3297 "parsing/parser.mly" ( _3 :: _1 ) -# 30502 "parsing/parser.ml" +# 31520 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -30535,9 +31553,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : (Parsetree.pattern list) = -# 3254 "parsing/parser.mly" +# 3298 "parsing/parser.mly" ( [_3; _1] ) -# 30541 "parsing/parser.ml" +# 31559 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -30575,9 +31593,9 @@ module Tables = struct let _endpos = _endpos__3_ in let _v : (Parsetree.pattern list) = let _loc__3_ = (_startpos__3_, _endpos__3_) in -# 3255 "parsing/parser.mly" +# 3299 "parsing/parser.mly" ( expecting _loc__3_ "pattern" ) -# 30581 "parsing/parser.ml" +# 31599 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -30614,9 +31632,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : (Parsetree.pattern list) = -# 3253 "parsing/parser.mly" +# 3297 "parsing/parser.mly" ( _3 :: _1 ) -# 30620 "parsing/parser.ml" +# 31638 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -30653,9 +31671,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : (Parsetree.pattern list) = -# 3254 "parsing/parser.mly" +# 3298 "parsing/parser.mly" ( [_3; _1] ) -# 30659 "parsing/parser.ml" +# 31677 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -30693,9 +31711,9 @@ module Tables = struct let _endpos = _endpos__3_ in let _v : (Parsetree.pattern list) = let _loc__3_ = (_startpos__3_, _endpos__3_) in -# 3255 "parsing/parser.mly" +# 3299 "parsing/parser.mly" ( expecting _loc__3_ "pattern" ) -# 30699 "parsing/parser.ml" +# 31717 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -30718,9 +31736,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Parsetree.pattern) = -# 3154 "parsing/parser.mly" +# 3198 "parsing/parser.mly" ( _1 ) -# 30724 "parsing/parser.ml" +# 31742 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -30756,15 +31774,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1114 "parsing/parser.mly" +# 1123 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 30762 "parsing/parser.ml" +# 31780 "parsing/parser.ml" in -# 3157 "parsing/parser.mly" +# 3201 "parsing/parser.mly" ( Ppat_construct(_1, Some ([], _2)) ) -# 30768 "parsing/parser.ml" +# 31786 "parsing/parser.ml" in let _endpos__1_ = _endpos__2_ in @@ -30772,15 +31790,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1149 "parsing/parser.mly" +# 1158 "parsing/parser.mly" ( mkpat ~loc:_sloc _1 ) -# 30778 "parsing/parser.ml" +# 31796 "parsing/parser.ml" in -# 3163 "parsing/parser.mly" +# 3207 "parsing/parser.mly" ( _1 ) -# 30784 "parsing/parser.ml" +# 31802 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -30840,24 +31858,24 @@ module Tables = struct let _v : (Parsetree.pattern) = let _1 = let _1 = let newtypes = -# 2873 "parsing/parser.mly" +# 2894 "parsing/parser.mly" ( xs ) -# 30846 "parsing/parser.ml" +# 31864 "parsing/parser.ml" in let constr = let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1114 "parsing/parser.mly" +# 1123 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 30855 "parsing/parser.ml" +# 31873 "parsing/parser.ml" in -# 3160 "parsing/parser.mly" +# 3204 "parsing/parser.mly" ( Ppat_construct(constr, Some (newtypes, pat)) ) -# 30861 "parsing/parser.ml" +# 31879 "parsing/parser.ml" in let _endpos__1_ = _endpos_pat_ in @@ -30865,15 +31883,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1149 "parsing/parser.mly" +# 1158 "parsing/parser.mly" ( mkpat ~loc:_sloc _1 ) -# 30871 "parsing/parser.ml" +# 31889 "parsing/parser.ml" in -# 3163 "parsing/parser.mly" +# 3207 "parsing/parser.mly" ( _1 ) -# 30877 "parsing/parser.ml" +# 31895 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -30904,24 +31922,24 @@ module Tables = struct let _endpos = _endpos__2_ in let _v : (Parsetree.pattern) = let _1 = let _1 = -# 3162 "parsing/parser.mly" +# 3206 "parsing/parser.mly" ( Ppat_variant(_1, Some _2) ) -# 30910 "parsing/parser.ml" +# 31928 "parsing/parser.ml" in let _endpos__1_ = _endpos__2_ in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1149 "parsing/parser.mly" +# 1158 "parsing/parser.mly" ( mkpat ~loc:_sloc _1 ) -# 30919 "parsing/parser.ml" +# 31937 "parsing/parser.ml" in -# 3163 "parsing/parser.mly" +# 3207 "parsing/parser.mly" ( _1 ) -# 30925 "parsing/parser.ml" +# 31943 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -30969,24 +31987,24 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4371 "parsing/parser.mly" +# 4476 "parsing/parser.mly" ( _1 ) -# 30975 "parsing/parser.ml" +# 31993 "parsing/parser.ml" in -# 4384 "parsing/parser.mly" +# 4489 "parsing/parser.mly" ( _1, _2 ) -# 30981 "parsing/parser.ml" +# 31999 "parsing/parser.ml" in let _endpos = _endpos__3_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 3165 "parsing/parser.mly" +# 3209 "parsing/parser.mly" ( mkpat_attrs ~loc:_sloc (Ppat_lazy _3) _2) -# 30990 "parsing/parser.ml" +# 32008 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -31028,15 +32046,15 @@ module Tables = struct let _loc__2_ = (_startpos__2_, _endpos__2_) in let _sloc = (_symbolstartpos, _endpos) in -# 3131 "parsing/parser.mly" +# 3175 "parsing/parser.mly" ( mkpat_cons ~loc:_sloc _loc__2_ (ghpat ~loc:_sloc (Ppat_tuple[_1;_3])) ) -# 31034 "parsing/parser.ml" +# 32052 "parsing/parser.ml" in -# 3126 "parsing/parser.mly" +# 3170 "parsing/parser.mly" ( _1 ) -# 31040 "parsing/parser.ml" +# 32058 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -31066,14 +32084,14 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (Parsetree.pattern) = let _1 = -# 3133 "parsing/parser.mly" +# 3177 "parsing/parser.mly" ( Pat.attr _1 _2 ) -# 31072 "parsing/parser.ml" +# 32090 "parsing/parser.ml" in -# 3126 "parsing/parser.mly" +# 3170 "parsing/parser.mly" ( _1 ) -# 31077 "parsing/parser.ml" +# 32095 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -31096,14 +32114,14 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Parsetree.pattern) = let _1 = -# 3135 "parsing/parser.mly" +# 3179 "parsing/parser.mly" ( _1 ) -# 31102 "parsing/parser.ml" +# 32120 "parsing/parser.ml" in -# 3126 "parsing/parser.mly" +# 3170 "parsing/parser.mly" ( _1 ) -# 31107 "parsing/parser.ml" +# 32125 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -31148,15 +32166,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1114 "parsing/parser.mly" +# 1123 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 31154 "parsing/parser.ml" +# 32172 "parsing/parser.ml" in -# 3138 "parsing/parser.mly" +# 3182 "parsing/parser.mly" ( Ppat_alias(_1, _3) ) -# 31160 "parsing/parser.ml" +# 32178 "parsing/parser.ml" in let _endpos__1_ = _endpos__1_inlined1_ in @@ -31164,21 +32182,21 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1149 "parsing/parser.mly" +# 1158 "parsing/parser.mly" ( mkpat ~loc:_sloc _1 ) -# 31170 "parsing/parser.ml" +# 32188 "parsing/parser.ml" in -# 3149 "parsing/parser.mly" +# 3193 "parsing/parser.mly" ( _1 ) -# 31176 "parsing/parser.ml" +# 32194 "parsing/parser.ml" in -# 3126 "parsing/parser.mly" +# 3170 "parsing/parser.mly" ( _1 ) -# 31182 "parsing/parser.ml" +# 32200 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -31219,9 +32237,9 @@ module Tables = struct let _1 = let _loc__3_ = (_startpos__3_, _endpos__3_) in -# 3140 "parsing/parser.mly" +# 3184 "parsing/parser.mly" ( expecting _loc__3_ "identifier" ) -# 31225 "parsing/parser.ml" +# 32243 "parsing/parser.ml" in let _endpos__1_ = _endpos__3_ in @@ -31229,21 +32247,21 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1149 "parsing/parser.mly" +# 1158 "parsing/parser.mly" ( mkpat ~loc:_sloc _1 ) -# 31235 "parsing/parser.ml" +# 32253 "parsing/parser.ml" in -# 3149 "parsing/parser.mly" +# 3193 "parsing/parser.mly" ( _1 ) -# 31241 "parsing/parser.ml" +# 32259 "parsing/parser.ml" in -# 3126 "parsing/parser.mly" +# 3170 "parsing/parser.mly" ( _1 ) -# 31247 "parsing/parser.ml" +# 32265 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -31268,29 +32286,29 @@ module Tables = struct let _v : (Parsetree.pattern) = let _1 = let _1 = let _1 = -# 3142 "parsing/parser.mly" +# 3186 "parsing/parser.mly" ( Ppat_tuple(List.rev _1) ) -# 31274 "parsing/parser.ml" +# 32292 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1149 "parsing/parser.mly" +# 1158 "parsing/parser.mly" ( mkpat ~loc:_sloc _1 ) -# 31282 "parsing/parser.ml" +# 32300 "parsing/parser.ml" in -# 3149 "parsing/parser.mly" +# 3193 "parsing/parser.mly" ( _1 ) -# 31288 "parsing/parser.ml" +# 32306 "parsing/parser.ml" in -# 3126 "parsing/parser.mly" +# 3170 "parsing/parser.mly" ( _1 ) -# 31294 "parsing/parser.ml" +# 32312 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -31331,9 +32349,9 @@ module Tables = struct let _1 = let _loc__3_ = (_startpos__3_, _endpos__3_) in -# 3144 "parsing/parser.mly" +# 3188 "parsing/parser.mly" ( expecting _loc__3_ "pattern" ) -# 31337 "parsing/parser.ml" +# 32355 "parsing/parser.ml" in let _endpos__1_ = _endpos__3_ in @@ -31341,21 +32359,21 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1149 "parsing/parser.mly" +# 1158 "parsing/parser.mly" ( mkpat ~loc:_sloc _1 ) -# 31347 "parsing/parser.ml" +# 32365 "parsing/parser.ml" in -# 3149 "parsing/parser.mly" +# 3193 "parsing/parser.mly" ( _1 ) -# 31353 "parsing/parser.ml" +# 32371 "parsing/parser.ml" in -# 3126 "parsing/parser.mly" +# 3170 "parsing/parser.mly" ( _1 ) -# 31359 "parsing/parser.ml" +# 32377 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -31394,30 +32412,30 @@ module Tables = struct let _v : (Parsetree.pattern) = let _1 = let _1 = let _1 = -# 3146 "parsing/parser.mly" +# 3190 "parsing/parser.mly" ( Ppat_or(_1, _3) ) -# 31400 "parsing/parser.ml" +# 32418 "parsing/parser.ml" in let _endpos__1_ = _endpos__3_ in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1149 "parsing/parser.mly" +# 1158 "parsing/parser.mly" ( mkpat ~loc:_sloc _1 ) -# 31409 "parsing/parser.ml" +# 32427 "parsing/parser.ml" in -# 3149 "parsing/parser.mly" +# 3193 "parsing/parser.mly" ( _1 ) -# 31415 "parsing/parser.ml" +# 32433 "parsing/parser.ml" in -# 3126 "parsing/parser.mly" +# 3170 "parsing/parser.mly" ( _1 ) -# 31421 "parsing/parser.ml" +# 32439 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -31458,9 +32476,9 @@ module Tables = struct let _1 = let _loc__3_ = (_startpos__3_, _endpos__3_) in -# 3148 "parsing/parser.mly" +# 3192 "parsing/parser.mly" ( expecting _loc__3_ "pattern" ) -# 31464 "parsing/parser.ml" +# 32482 "parsing/parser.ml" in let _endpos__1_ = _endpos__3_ in @@ -31468,21 +32486,21 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1149 "parsing/parser.mly" +# 1158 "parsing/parser.mly" ( mkpat ~loc:_sloc _1 ) -# 31474 "parsing/parser.ml" +# 32492 "parsing/parser.ml" in -# 3149 "parsing/parser.mly" +# 3193 "parsing/parser.mly" ( _1 ) -# 31480 "parsing/parser.ml" +# 32498 "parsing/parser.ml" in -# 3126 "parsing/parser.mly" +# 3170 "parsing/parser.mly" ( _1 ) -# 31486 "parsing/parser.ml" +# 32504 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -31501,9 +32519,9 @@ module Tables = struct MenhirLib.EngineTypes.next = _menhir_stack; } = _menhir_stack in let _1 : ( -# 928 "parsing/parser.mly" +# 937 "parsing/parser.mly" (string) -# 31507 "parsing/parser.ml" +# 32525 "parsing/parser.ml" ) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in @@ -31515,30 +32533,30 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1114 "parsing/parser.mly" +# 1123 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 31521 "parsing/parser.ml" +# 32539 "parsing/parser.ml" in -# 2477 "parsing/parser.mly" +# 2489 "parsing/parser.mly" ( Ppat_var _1 ) -# 31527 "parsing/parser.ml" +# 32545 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1149 "parsing/parser.mly" +# 1158 "parsing/parser.mly" ( mkpat ~loc:_sloc _1 ) -# 31536 "parsing/parser.ml" +# 32554 "parsing/parser.ml" in -# 2479 "parsing/parser.mly" +# 2491 "parsing/parser.mly" ( _1 ) -# 31542 "parsing/parser.ml" +# 32560 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -31562,23 +32580,23 @@ module Tables = struct let _endpos = _endpos__1_ in let _v : (Parsetree.pattern) = let _1 = let _1 = -# 2478 "parsing/parser.mly" +# 2490 "parsing/parser.mly" ( Ppat_any ) -# 31568 "parsing/parser.ml" +# 32586 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1149 "parsing/parser.mly" +# 1158 "parsing/parser.mly" ( mkpat ~loc:_sloc _1 ) -# 31576 "parsing/parser.ml" +# 32594 "parsing/parser.ml" in -# 2479 "parsing/parser.mly" +# 2491 "parsing/parser.mly" ( _1 ) -# 31582 "parsing/parser.ml" +# 32600 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -31601,9 +32619,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Parsetree.payload) = -# 4397 "parsing/parser.mly" +# 4502 "parsing/parser.mly" ( PStr _1 ) -# 31607 "parsing/parser.ml" +# 32625 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -31633,9 +32651,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (Parsetree.payload) = -# 4398 "parsing/parser.mly" +# 4503 "parsing/parser.mly" ( PSig _2 ) -# 31639 "parsing/parser.ml" +# 32657 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -31665,9 +32683,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (Parsetree.payload) = -# 4399 "parsing/parser.mly" +# 4504 "parsing/parser.mly" ( PTyp _2 ) -# 31671 "parsing/parser.ml" +# 32689 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -31697,9 +32715,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (Parsetree.payload) = -# 4400 "parsing/parser.mly" +# 4505 "parsing/parser.mly" ( PPat (_2, None) ) -# 31703 "parsing/parser.ml" +# 32721 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -31743,9 +32761,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__4_ in let _v : (Parsetree.payload) = -# 4401 "parsing/parser.mly" +# 4506 "parsing/parser.mly" ( PPat (_2, Some _4) ) -# 31749 "parsing/parser.ml" +# 32767 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -31768,9 +32786,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Parsetree.core_type) = -# 3717 "parsing/parser.mly" +# 3806 "parsing/parser.mly" ( _1 ) -# 31774 "parsing/parser.ml" +# 32792 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -31802,51 +32820,46 @@ module Tables = struct } = _menhir_stack in let _3 : (Parsetree.core_type) = Obj.magic _3 in let _2 : unit = Obj.magic _2 in - let xs : (Asttypes.label Asttypes.loc list) = Obj.magic xs in + let xs : ((Asttypes.label Asttypes.loc * Asttypes.layout_annotation option) list) = Obj.magic xs in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos_xs_ in let _endpos = _endpos__3_ in let _v : (Parsetree.core_type) = let _1 = let _1 = let _1 = - let _1 = - let xs = + let xs = # 253 "" ( List.rev xs ) -# 31817 "parsing/parser.ml" - in - -# 1216 "parsing/parser.mly" - ( xs ) -# 31822 "parsing/parser.ml" - - in +# 32834 "parsing/parser.ml" + in -# 3709 "parsing/parser.mly" - ( _1 ) -# 31828 "parsing/parser.ml" +# 1228 "parsing/parser.mly" + ( xs ) +# 32839 "parsing/parser.ml" in -# 3713 "parsing/parser.mly" - ( Ptyp_poly(_1, _3) ) -# 31834 "parsing/parser.ml" +# 3798 "parsing/parser.mly" + ( _1 ) +# 32845 "parsing/parser.ml" in - let (_endpos__1_, _startpos__1_) = (_endpos__3_, _startpos_xs_) in - let _endpos = _endpos__1_ in - let _symbolstartpos = _startpos__1_ in - let _sloc = (_symbolstartpos, _endpos) in -# 1151 "parsing/parser.mly" - ( mktyp ~loc:_sloc _1 ) -# 31844 "parsing/parser.ml" +# 3802 "parsing/parser.mly" + ( (_1, _3) ) +# 32851 "parsing/parser.ml" in + let (_endpos__1_, _startpos__1_) = (_endpos__3_, _startpos_xs_) in + let _endpos = _endpos__1_ in + let _symbolstartpos = _startpos__1_ in + let _sloc = (_symbolstartpos, _endpos) in -# 3719 "parsing/parser.mly" - ( _1 ) -# 31850 "parsing/parser.ml" +# 3808 "parsing/parser.mly" + ( let bound_vars, inner_type = _1 in + Jane_syntax.Layouts.type_of ~loc:(make_loc _sloc) ~attrs:[] + (Ltyp_poly { bound_vars; inner_type }) ) +# 32863 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -31869,14 +32882,14 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Parsetree.core_type) = let _1 = -# 3748 "parsing/parser.mly" +# 3839 "parsing/parser.mly" ( _1 ) -# 31875 "parsing/parser.ml" +# 32888 "parsing/parser.ml" in -# 3717 "parsing/parser.mly" +# 3806 "parsing/parser.mly" ( _1 ) -# 31880 "parsing/parser.ml" +# 32893 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -31908,56 +32921,51 @@ module Tables = struct } = _menhir_stack in let _1 : (Parsetree.core_type) = Obj.magic _1 in let _2 : unit = Obj.magic _2 in - let xs : (Asttypes.label Asttypes.loc list) = Obj.magic xs in + let xs : ((Asttypes.label Asttypes.loc * Asttypes.layout_annotation option) list) = Obj.magic xs in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos_xs_ in let _endpos = _endpos__1_ in let _v : (Parsetree.core_type) = let _1 = - let _1 = - let _3 = -# 3748 "parsing/parser.mly" + let _3 = +# 3839 "parsing/parser.mly" ( _1 ) -# 31921 "parsing/parser.ml" - in +# 32933 "parsing/parser.ml" + in + let _1 = let _1 = - let _1 = - let xs = + let xs = # 253 "" ( List.rev xs ) -# 31928 "parsing/parser.ml" - in - -# 1216 "parsing/parser.mly" - ( xs ) -# 31933 "parsing/parser.ml" - - in +# 32940 "parsing/parser.ml" + in -# 3709 "parsing/parser.mly" - ( _1 ) -# 31939 "parsing/parser.ml" +# 1228 "parsing/parser.mly" + ( xs ) +# 32945 "parsing/parser.ml" in -# 3713 "parsing/parser.mly" - ( Ptyp_poly(_1, _3) ) -# 31945 "parsing/parser.ml" +# 3798 "parsing/parser.mly" + ( _1 ) +# 32951 "parsing/parser.ml" in - let _startpos__1_ = _startpos_xs_ in - let _endpos = _endpos__1_ in - let _symbolstartpos = _startpos__1_ in - let _sloc = (_symbolstartpos, _endpos) in -# 1151 "parsing/parser.mly" - ( mktyp ~loc:_sloc _1 ) -# 31955 "parsing/parser.ml" +# 3802 "parsing/parser.mly" + ( (_1, _3) ) +# 32957 "parsing/parser.ml" in + let _startpos__1_ = _startpos_xs_ in + let _endpos = _endpos__1_ in + let _symbolstartpos = _startpos__1_ in + let _sloc = (_symbolstartpos, _endpos) in -# 3719 "parsing/parser.mly" - ( _1 ) -# 31961 "parsing/parser.ml" +# 3808 "parsing/parser.mly" + ( let bound_vars, inner_type = _1 in + Jane_syntax.Layouts.type_of ~loc:(make_loc _sloc) ~attrs:[] + (Ltyp_poly { bound_vars; inner_type }) ) +# 32969 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -32004,9 +33012,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 4358 "parsing/parser.mly" +# 4463 "parsing/parser.mly" ( mk_attr ~loc:(make_loc _sloc) _2 _3 ) -# 32010 "parsing/parser.ml" +# 33018 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -32087,9 +33095,9 @@ module Tables = struct let _v : (Parsetree.value_description * string Asttypes.loc option) = let attrs2 = let _1 = _1_inlined3 in -# 4367 "parsing/parser.mly" +# 4472 "parsing/parser.mly" ( _1 ) -# 32093 "parsing/parser.ml" +# 33101 "parsing/parser.ml" in let _endpos_attrs2_ = _endpos__1_inlined3_ in @@ -32099,30 +33107,30 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1114 "parsing/parser.mly" +# 1123 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 32105 "parsing/parser.ml" +# 33113 "parsing/parser.ml" in let attrs1 = let _1 = _1_inlined1 in -# 4371 "parsing/parser.mly" +# 4476 "parsing/parser.mly" ( _1 ) -# 32113 "parsing/parser.ml" +# 33121 "parsing/parser.ml" in let _endpos = _endpos_attrs2_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 3317 "parsing/parser.mly" +# 3361 "parsing/parser.mly" ( let attrs = attrs1 @ attrs2 in let loc = make_loc _sloc in let docs = symbol_docs _sloc in Val.mk id ty ~prim ~attrs ~loc ~docs, ext ) -# 32126 "parsing/parser.ml" +# 33134 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -32138,14 +33146,14 @@ module Tables = struct let _startpos = _menhir_stack.MenhirLib.EngineTypes.endp in let _endpos = _startpos in let _v : (Asttypes.private_flag) = let _1 = -# 4216 "parsing/parser.mly" +# 4321 "parsing/parser.mly" ( Public ) -# 32144 "parsing/parser.ml" +# 33152 "parsing/parser.ml" in -# 4213 "parsing/parser.mly" +# 4318 "parsing/parser.mly" ( _1 ) -# 32149 "parsing/parser.ml" +# 33157 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -32168,14 +33176,14 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Asttypes.private_flag) = let _1 = -# 4217 "parsing/parser.mly" +# 4322 "parsing/parser.mly" ( Private ) -# 32174 "parsing/parser.ml" +# 33182 "parsing/parser.ml" in -# 4213 "parsing/parser.mly" +# 4318 "parsing/parser.mly" ( _1 ) -# 32179 "parsing/parser.ml" +# 33187 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -32191,9 +33199,9 @@ module Tables = struct let _startpos = _menhir_stack.MenhirLib.EngineTypes.endp in let _endpos = _startpos in let _v : (Asttypes.private_flag * Asttypes.virtual_flag) = -# 4248 "parsing/parser.mly" +# 4353 "parsing/parser.mly" ( Public, Concrete ) -# 32197 "parsing/parser.ml" +# 33205 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -32216,9 +33224,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Asttypes.private_flag * Asttypes.virtual_flag) = -# 4249 "parsing/parser.mly" +# 4354 "parsing/parser.mly" ( Private, Concrete ) -# 32222 "parsing/parser.ml" +# 33230 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -32241,9 +33249,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Asttypes.private_flag * Asttypes.virtual_flag) = -# 4250 "parsing/parser.mly" +# 4355 "parsing/parser.mly" ( Public, Virtual ) -# 32247 "parsing/parser.ml" +# 33255 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -32273,9 +33281,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (Asttypes.private_flag * Asttypes.virtual_flag) = -# 4251 "parsing/parser.mly" +# 4356 "parsing/parser.mly" ( Private, Virtual ) -# 32279 "parsing/parser.ml" +# 33287 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -32305,9 +33313,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (Asttypes.private_flag * Asttypes.virtual_flag) = -# 4252 "parsing/parser.mly" +# 4357 "parsing/parser.mly" ( Private, Virtual ) -# 32311 "parsing/parser.ml" +# 33319 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -32323,9 +33331,9 @@ module Tables = struct let _startpos = _menhir_stack.MenhirLib.EngineTypes.endp in let _endpos = _startpos in let _v : (Asttypes.rec_flag) = -# 4194 "parsing/parser.mly" +# 4299 "parsing/parser.mly" ( Nonrecursive ) -# 32329 "parsing/parser.ml" +# 33337 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -32348,9 +33356,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Asttypes.rec_flag) = -# 4195 "parsing/parser.mly" +# 4300 "parsing/parser.mly" ( Recursive ) -# 32354 "parsing/parser.ml" +# 33362 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -32376,12 +33384,12 @@ module Tables = struct (Longident.t Asttypes.loc * Parsetree.expression) list) = let eo = # 124 "" ( None ) -# 32380 "parsing/parser.ml" +# 33388 "parsing/parser.ml" in -# 3051 "parsing/parser.mly" +# 3084 "parsing/parser.mly" ( eo, fields ) -# 32385 "parsing/parser.ml" +# 33393 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -32422,18 +33430,18 @@ module Tables = struct let x = # 191 "" ( x ) -# 32426 "parsing/parser.ml" +# 33434 "parsing/parser.ml" in # 126 "" ( Some x ) -# 32431 "parsing/parser.ml" +# 33439 "parsing/parser.ml" in -# 3051 "parsing/parser.mly" +# 3084 "parsing/parser.mly" ( eo, fields ) -# 32437 "parsing/parser.ml" +# 33445 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -32451,24 +33459,26 @@ module Tables = struct MenhirLib.EngineTypes.endp = _endpos_d_; MenhirLib.EngineTypes.next = _menhir_stack; } = _menhir_stack in - let d : (Ast_helper.str * string Asttypes.loc list * + let d : (Ast_helper.str * + (Asttypes.label Asttypes.loc * Asttypes.layout_annotation option) list * Parsetree.constructor_arguments * Parsetree.core_type option * Parsetree.attributes * Location.t * Docstrings.info) = Obj.magic d in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos_d_ in let _endpos = _endpos_d_ in let _v : (Parsetree.constructor_declaration list) = let x = -# 3517 "parsing/parser.mly" +# 3593 "parsing/parser.mly" ( - let cid, vars, args, res, attrs, loc, info = d in - Type.constructor cid ~vars ~args ?res ~attrs ~loc ~info + let cid, vars_layouts, args, res, attrs, loc, info = d in + Jane_syntax.Layouts.constructor_declaration_of + cid ~vars_layouts ~args ~res ~attrs ~loc ~info ) -# 32467 "parsing/parser.ml" +# 33477 "parsing/parser.ml" in -# 1326 "parsing/parser.mly" +# 1338 "parsing/parser.mly" ( [x] ) -# 32472 "parsing/parser.ml" +# 33482 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -32486,24 +33496,26 @@ module Tables = struct MenhirLib.EngineTypes.endp = _endpos_d_; MenhirLib.EngineTypes.next = _menhir_stack; } = _menhir_stack in - let d : (Ast_helper.str * string Asttypes.loc list * + let d : (Ast_helper.str * + (Asttypes.label Asttypes.loc * Asttypes.layout_annotation option) list * Parsetree.constructor_arguments * Parsetree.core_type option * Parsetree.attributes * Location.t * Docstrings.info) = Obj.magic d in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos_d_ in let _endpos = _endpos_d_ in let _v : (Parsetree.constructor_declaration list) = let x = -# 3517 "parsing/parser.mly" +# 3593 "parsing/parser.mly" ( - let cid, vars, args, res, attrs, loc, info = d in - Type.constructor cid ~vars ~args ?res ~attrs ~loc ~info + let cid, vars_layouts, args, res, attrs, loc, info = d in + Jane_syntax.Layouts.constructor_declaration_of + cid ~vars_layouts ~args ~res ~attrs ~loc ~info ) -# 32502 "parsing/parser.ml" +# 33514 "parsing/parser.ml" in -# 1329 "parsing/parser.mly" +# 1341 "parsing/parser.mly" ( [x] ) -# 32507 "parsing/parser.ml" +# 33519 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -32527,7 +33539,8 @@ module Tables = struct MenhirLib.EngineTypes.next = _menhir_stack; }; } = _menhir_stack in - let d : (Ast_helper.str * string Asttypes.loc list * + let d : (Ast_helper.str * + (Asttypes.label Asttypes.loc * Asttypes.layout_annotation option) list * Parsetree.constructor_arguments * Parsetree.core_type option * Parsetree.attributes * Location.t * Docstrings.info) = Obj.magic d in let xs : (Parsetree.constructor_declaration list) = Obj.magic xs in @@ -32535,17 +33548,18 @@ module Tables = struct let _startpos = _startpos_xs_ in let _endpos = _endpos_d_ in let _v : (Parsetree.constructor_declaration list) = let x = -# 3517 "parsing/parser.mly" +# 3593 "parsing/parser.mly" ( - let cid, vars, args, res, attrs, loc, info = d in - Type.constructor cid ~vars ~args ?res ~attrs ~loc ~info + let cid, vars_layouts, args, res, attrs, loc, info = d in + Jane_syntax.Layouts.constructor_declaration_of + cid ~vars_layouts ~args ~res ~attrs ~loc ~info ) -# 32544 "parsing/parser.ml" +# 33558 "parsing/parser.ml" in -# 1333 "parsing/parser.mly" +# 1345 "parsing/parser.mly" ( x :: xs ) -# 32549 "parsing/parser.ml" +# 33563 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -32563,7 +33577,8 @@ module Tables = struct MenhirLib.EngineTypes.endp = _endpos_d_; MenhirLib.EngineTypes.next = _menhir_stack; } = _menhir_stack in - let d : (Ast_helper.str * string Asttypes.loc list * + let d : (Ast_helper.str * + (Asttypes.label Asttypes.loc * Asttypes.layout_annotation option) list * Parsetree.constructor_arguments * Parsetree.core_type option * Parsetree.attributes * Location.t * Docstrings.info) = Obj.magic d in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in @@ -32571,23 +33586,24 @@ module Tables = struct let _endpos = _endpos_d_ in let _v : (Parsetree.extension_constructor list) = let x = let _1 = -# 3647 "parsing/parser.mly" +# 3732 "parsing/parser.mly" ( - let cid, vars, args, res, attrs, loc, info = d in - Te.decl cid ~vars ~args ?res ~attrs ~loc ~info + let name, vars_layouts, args, res, attrs, loc, info = d in + Jane_syntax.Layouts.extension_constructor_of + ~loc ~attrs ~info ~name (Lext_decl(vars_layouts, args, res)) ) -# 32580 "parsing/parser.ml" +# 33596 "parsing/parser.ml" in -# 3641 "parsing/parser.mly" +# 3726 "parsing/parser.mly" ( _1 ) -# 32585 "parsing/parser.ml" +# 33601 "parsing/parser.ml" in -# 1326 "parsing/parser.mly" +# 1338 "parsing/parser.mly" ( [x] ) -# 32591 "parsing/parser.ml" +# 33607 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -32610,14 +33626,14 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Parsetree.extension_constructor list) = let x = -# 3643 "parsing/parser.mly" +# 3728 "parsing/parser.mly" ( _1 ) -# 32616 "parsing/parser.ml" +# 33632 "parsing/parser.ml" in -# 1326 "parsing/parser.mly" +# 1338 "parsing/parser.mly" ( [x] ) -# 32621 "parsing/parser.ml" +# 33637 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -32635,7 +33651,8 @@ module Tables = struct MenhirLib.EngineTypes.endp = _endpos_d_; MenhirLib.EngineTypes.next = _menhir_stack; } = _menhir_stack in - let d : (Ast_helper.str * string Asttypes.loc list * + let d : (Ast_helper.str * + (Asttypes.label Asttypes.loc * Asttypes.layout_annotation option) list * Parsetree.constructor_arguments * Parsetree.core_type option * Parsetree.attributes * Location.t * Docstrings.info) = Obj.magic d in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in @@ -32643,23 +33660,24 @@ module Tables = struct let _endpos = _endpos_d_ in let _v : (Parsetree.extension_constructor list) = let x = let _1 = -# 3647 "parsing/parser.mly" +# 3732 "parsing/parser.mly" ( - let cid, vars, args, res, attrs, loc, info = d in - Te.decl cid ~vars ~args ?res ~attrs ~loc ~info + let name, vars_layouts, args, res, attrs, loc, info = d in + Jane_syntax.Layouts.extension_constructor_of + ~loc ~attrs ~info ~name (Lext_decl(vars_layouts, args, res)) ) -# 32652 "parsing/parser.ml" +# 33670 "parsing/parser.ml" in -# 3641 "parsing/parser.mly" +# 3726 "parsing/parser.mly" ( _1 ) -# 32657 "parsing/parser.ml" +# 33675 "parsing/parser.ml" in -# 1329 "parsing/parser.mly" +# 1341 "parsing/parser.mly" ( [x] ) -# 32663 "parsing/parser.ml" +# 33681 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -32682,14 +33700,14 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Parsetree.extension_constructor list) = let x = -# 3643 "parsing/parser.mly" +# 3728 "parsing/parser.mly" ( _1 ) -# 32688 "parsing/parser.ml" +# 33706 "parsing/parser.ml" in -# 1329 "parsing/parser.mly" +# 1341 "parsing/parser.mly" ( [x] ) -# 32693 "parsing/parser.ml" +# 33711 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -32713,7 +33731,8 @@ module Tables = struct MenhirLib.EngineTypes.next = _menhir_stack; }; } = _menhir_stack in - let d : (Ast_helper.str * string Asttypes.loc list * + let d : (Ast_helper.str * + (Asttypes.label Asttypes.loc * Asttypes.layout_annotation option) list * Parsetree.constructor_arguments * Parsetree.core_type option * Parsetree.attributes * Location.t * Docstrings.info) = Obj.magic d in let xs : (Parsetree.extension_constructor list) = Obj.magic xs in @@ -32722,23 +33741,24 @@ module Tables = struct let _endpos = _endpos_d_ in let _v : (Parsetree.extension_constructor list) = let x = let _1 = -# 3647 "parsing/parser.mly" +# 3732 "parsing/parser.mly" ( - let cid, vars, args, res, attrs, loc, info = d in - Te.decl cid ~vars ~args ?res ~attrs ~loc ~info + let name, vars_layouts, args, res, attrs, loc, info = d in + Jane_syntax.Layouts.extension_constructor_of + ~loc ~attrs ~info ~name (Lext_decl(vars_layouts, args, res)) ) -# 32731 "parsing/parser.ml" +# 33751 "parsing/parser.ml" in -# 3641 "parsing/parser.mly" +# 3726 "parsing/parser.mly" ( _1 ) -# 32736 "parsing/parser.ml" +# 33756 "parsing/parser.ml" in -# 1333 "parsing/parser.mly" +# 1345 "parsing/parser.mly" ( x :: xs ) -# 32742 "parsing/parser.ml" +# 33762 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -32768,14 +33788,14 @@ module Tables = struct let _startpos = _startpos_xs_ in let _endpos = _endpos__1_ in let _v : (Parsetree.extension_constructor list) = let x = -# 3643 "parsing/parser.mly" +# 3728 "parsing/parser.mly" ( _1 ) -# 32774 "parsing/parser.ml" +# 33794 "parsing/parser.ml" in -# 1333 "parsing/parser.mly" +# 1345 "parsing/parser.mly" ( x :: xs ) -# 32779 "parsing/parser.ml" +# 33799 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -32793,24 +33813,26 @@ module Tables = struct MenhirLib.EngineTypes.endp = _endpos_d_; MenhirLib.EngineTypes.next = _menhir_stack; } = _menhir_stack in - let d : (Ast_helper.str * string Asttypes.loc list * + let d : (Ast_helper.str * + (Asttypes.label Asttypes.loc * Asttypes.layout_annotation option) list * Parsetree.constructor_arguments * Parsetree.core_type option * Parsetree.attributes * Location.t * Docstrings.info) = Obj.magic d in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos_d_ in let _endpos = _endpos_d_ in let _v : (Parsetree.extension_constructor list) = let x = -# 3647 "parsing/parser.mly" +# 3732 "parsing/parser.mly" ( - let cid, vars, args, res, attrs, loc, info = d in - Te.decl cid ~vars ~args ?res ~attrs ~loc ~info + let name, vars_layouts, args, res, attrs, loc, info = d in + Jane_syntax.Layouts.extension_constructor_of + ~loc ~attrs ~info ~name (Lext_decl(vars_layouts, args, res)) ) -# 32809 "parsing/parser.ml" +# 33831 "parsing/parser.ml" in -# 1326 "parsing/parser.mly" +# 1338 "parsing/parser.mly" ( [x] ) -# 32814 "parsing/parser.ml" +# 33836 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -32828,24 +33850,26 @@ module Tables = struct MenhirLib.EngineTypes.endp = _endpos_d_; MenhirLib.EngineTypes.next = _menhir_stack; } = _menhir_stack in - let d : (Ast_helper.str * string Asttypes.loc list * + let d : (Ast_helper.str * + (Asttypes.label Asttypes.loc * Asttypes.layout_annotation option) list * Parsetree.constructor_arguments * Parsetree.core_type option * Parsetree.attributes * Location.t * Docstrings.info) = Obj.magic d in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos_d_ in let _endpos = _endpos_d_ in let _v : (Parsetree.extension_constructor list) = let x = -# 3647 "parsing/parser.mly" +# 3732 "parsing/parser.mly" ( - let cid, vars, args, res, attrs, loc, info = d in - Te.decl cid ~vars ~args ?res ~attrs ~loc ~info + let name, vars_layouts, args, res, attrs, loc, info = d in + Jane_syntax.Layouts.extension_constructor_of + ~loc ~attrs ~info ~name (Lext_decl(vars_layouts, args, res)) ) -# 32844 "parsing/parser.ml" +# 33868 "parsing/parser.ml" in -# 1329 "parsing/parser.mly" +# 1341 "parsing/parser.mly" ( [x] ) -# 32849 "parsing/parser.ml" +# 33873 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -32869,7 +33893,8 @@ module Tables = struct MenhirLib.EngineTypes.next = _menhir_stack; }; } = _menhir_stack in - let d : (Ast_helper.str * string Asttypes.loc list * + let d : (Ast_helper.str * + (Asttypes.label Asttypes.loc * Asttypes.layout_annotation option) list * Parsetree.constructor_arguments * Parsetree.core_type option * Parsetree.attributes * Location.t * Docstrings.info) = Obj.magic d in let xs : (Parsetree.extension_constructor list) = Obj.magic xs in @@ -32877,17 +33902,18 @@ module Tables = struct let _startpos = _startpos_xs_ in let _endpos = _endpos_d_ in let _v : (Parsetree.extension_constructor list) = let x = -# 3647 "parsing/parser.mly" +# 3732 "parsing/parser.mly" ( - let cid, vars, args, res, attrs, loc, info = d in - Te.decl cid ~vars ~args ?res ~attrs ~loc ~info + let name, vars_layouts, args, res, attrs, loc, info = d in + Jane_syntax.Layouts.extension_constructor_of + ~loc ~attrs ~info ~name (Lext_decl(vars_layouts, args, res)) ) -# 32886 "parsing/parser.ml" +# 33912 "parsing/parser.ml" in -# 1333 "parsing/parser.mly" +# 1345 "parsing/parser.mly" ( x :: xs ) -# 32891 "parsing/parser.ml" +# 33917 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -32903,9 +33929,9 @@ module Tables = struct let _startpos = _menhir_stack.MenhirLib.EngineTypes.endp in let _endpos = _startpos in let _v : ((Parsetree.core_type * Parsetree.core_type * Ast_helper.loc) list) = -# 1192 "parsing/parser.mly" +# 1204 "parsing/parser.mly" ( [] ) -# 32909 "parsing/parser.ml" +# 33935 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -32962,21 +33988,21 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2346 "parsing/parser.mly" +# 2358 "parsing/parser.mly" ( _1, _3, make_loc _sloc ) -# 32968 "parsing/parser.ml" +# 33994 "parsing/parser.ml" in # 183 "" ( x ) -# 32974 "parsing/parser.ml" +# 34000 "parsing/parser.ml" in -# 1194 "parsing/parser.mly" +# 1206 "parsing/parser.mly" ( x :: xs ) -# 32980 "parsing/parser.ml" +# 34006 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -32999,9 +34025,9 @@ module Tables = struct let _startpos = _startpos_x_ in let _endpos = _endpos_x_ in let _v : (Jane_syntax.Comprehensions.clause list) = -# 1206 "parsing/parser.mly" +# 1218 "parsing/parser.mly" ( [ x ] ) -# 33005 "parsing/parser.ml" +# 34031 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -33031,9 +34057,9 @@ module Tables = struct let _startpos = _startpos_xs_ in let _endpos = _endpos_x_ in let _v : (Jane_syntax.Comprehensions.clause list) = -# 1208 "parsing/parser.mly" +# 1220 "parsing/parser.mly" ( x :: xs ) -# 33037 "parsing/parser.ml" +# 34063 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -33056,9 +34082,123 @@ module Tables = struct let _startpos = _startpos_x_ in let _endpos = _endpos_x_ in let _v : ((Lexing.position * Parsetree.functor_parameter) list) = -# 1206 "parsing/parser.mly" +# 1218 "parsing/parser.mly" + ( [ x ] ) +# 34088 "parsing/parser.ml" + in + { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = Obj.repr _v; + MenhirLib.EngineTypes.startp = _startpos; + MenhirLib.EngineTypes.endp = _endpos; + MenhirLib.EngineTypes.next = _menhir_stack; + }); + (fun _menhir_env -> + let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in + let { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = x; + MenhirLib.EngineTypes.startp = _startpos_x_; + MenhirLib.EngineTypes.endp = _endpos_x_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = xs; + MenhirLib.EngineTypes.startp = _startpos_xs_; + MenhirLib.EngineTypes.endp = _endpos_xs_; + MenhirLib.EngineTypes.next = _menhir_stack; + }; + } = _menhir_stack in + let x : (Lexing.position * Parsetree.functor_parameter) = Obj.magic x in + let xs : ((Lexing.position * Parsetree.functor_parameter) list) = Obj.magic xs in + let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in + let _startpos = _startpos_xs_ in + let _endpos = _endpos_x_ in + let _v : ((Lexing.position * Parsetree.functor_parameter) list) = +# 1220 "parsing/parser.mly" + ( x :: xs ) +# 34120 "parsing/parser.ml" + in + { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = Obj.repr _v; + MenhirLib.EngineTypes.startp = _startpos; + MenhirLib.EngineTypes.endp = _endpos; + MenhirLib.EngineTypes.next = _menhir_stack; + }); + (fun _menhir_env -> + let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in + let { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = x; + MenhirLib.EngineTypes.startp = _startpos_x_; + MenhirLib.EngineTypes.endp = _endpos_x_; + MenhirLib.EngineTypes.next = _menhir_stack; + } = _menhir_stack in + let x : (Asttypes.arg_label * Parsetree.expression) = Obj.magic x in + let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in + let _startpos = _startpos_x_ in + let _endpos = _endpos_x_ in + let _v : ((Asttypes.arg_label * Parsetree.expression) list) = +# 1218 "parsing/parser.mly" + ( [ x ] ) +# 34145 "parsing/parser.ml" + in + { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = Obj.repr _v; + MenhirLib.EngineTypes.startp = _startpos; + MenhirLib.EngineTypes.endp = _endpos; + MenhirLib.EngineTypes.next = _menhir_stack; + }); + (fun _menhir_env -> + let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in + let { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = x; + MenhirLib.EngineTypes.startp = _startpos_x_; + MenhirLib.EngineTypes.endp = _endpos_x_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = xs; + MenhirLib.EngineTypes.startp = _startpos_xs_; + MenhirLib.EngineTypes.endp = _endpos_xs_; + MenhirLib.EngineTypes.next = _menhir_stack; + }; + } = _menhir_stack in + let x : (Asttypes.arg_label * Parsetree.expression) = Obj.magic x in + let xs : ((Asttypes.arg_label * Parsetree.expression) list) = Obj.magic xs in + let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in + let _startpos = _startpos_xs_ in + let _endpos = _endpos_x_ in + let _v : ((Asttypes.arg_label * Parsetree.expression) list) = +# 1220 "parsing/parser.mly" + ( x :: xs ) +# 34177 "parsing/parser.ml" + in + { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = Obj.repr _v; + MenhirLib.EngineTypes.startp = _startpos; + MenhirLib.EngineTypes.endp = _endpos; + MenhirLib.EngineTypes.next = _menhir_stack; + }); + (fun _menhir_env -> + let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in + let { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = x; + MenhirLib.EngineTypes.startp = _startpos_x_; + MenhirLib.EngineTypes.endp = _endpos_x_; + MenhirLib.EngineTypes.next = _menhir_stack; + } = _menhir_stack in + let x : (Asttypes.label) = Obj.magic x in + let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in + let _startpos = _startpos_x_ in + let _endpos = _endpos_x_ in + let _v : (Asttypes.label list) = +# 1218 "parsing/parser.mly" ( [ x ] ) -# 33062 "parsing/parser.ml" +# 34202 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -33082,40 +34222,15 @@ module Tables = struct MenhirLib.EngineTypes.next = _menhir_stack; }; } = _menhir_stack in - let x : (Lexing.position * Parsetree.functor_parameter) = Obj.magic x in - let xs : ((Lexing.position * Parsetree.functor_parameter) list) = Obj.magic xs in + let x : (Asttypes.label) = Obj.magic x in + let xs : (Asttypes.label list) = Obj.magic xs in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos_xs_ in let _endpos = _endpos_x_ in - let _v : ((Lexing.position * Parsetree.functor_parameter) list) = -# 1208 "parsing/parser.mly" + let _v : (Asttypes.label list) = +# 1220 "parsing/parser.mly" ( x :: xs ) -# 33094 "parsing/parser.ml" - in - { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = Obj.repr _v; - MenhirLib.EngineTypes.startp = _startpos; - MenhirLib.EngineTypes.endp = _endpos; - MenhirLib.EngineTypes.next = _menhir_stack; - }); - (fun _menhir_env -> - let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in - let { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = x; - MenhirLib.EngineTypes.startp = _startpos_x_; - MenhirLib.EngineTypes.endp = _endpos_x_; - MenhirLib.EngineTypes.next = _menhir_stack; - } = _menhir_stack in - let x : (Asttypes.arg_label * Parsetree.expression) = Obj.magic x in - let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in - let _startpos = _startpos_x_ in - let _endpos = _endpos_x_ in - let _v : ((Asttypes.arg_label * Parsetree.expression) list) = -# 1206 "parsing/parser.mly" - ( [ x ] ) -# 33119 "parsing/parser.ml" +# 34234 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -33128,51 +34243,44 @@ module Tables = struct let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in let { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = x; - MenhirLib.EngineTypes.startp = _startpos_x_; - MenhirLib.EngineTypes.endp = _endpos_x_; + MenhirLib.EngineTypes.semv = _1_inlined1; + MenhirLib.EngineTypes.startp = _startpos__1_inlined1_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined1_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = xs; - MenhirLib.EngineTypes.startp = _startpos_xs_; - MenhirLib.EngineTypes.endp = _endpos_xs_; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; MenhirLib.EngineTypes.next = _menhir_stack; }; } = _menhir_stack in - let x : (Asttypes.arg_label * Parsetree.expression) = Obj.magic x in - let xs : ((Asttypes.arg_label * Parsetree.expression) list) = Obj.magic xs in - let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in - let _startpos = _startpos_xs_ in - let _endpos = _endpos_x_ in - let _v : ((Asttypes.arg_label * Parsetree.expression) list) = -# 1208 "parsing/parser.mly" - ( x :: xs ) -# 33151 "parsing/parser.ml" - in - { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = Obj.repr _v; - MenhirLib.EngineTypes.startp = _startpos; - MenhirLib.EngineTypes.endp = _endpos; - MenhirLib.EngineTypes.next = _menhir_stack; - }); - (fun _menhir_env -> - let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in - let { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = x; - MenhirLib.EngineTypes.startp = _startpos_x_; - MenhirLib.EngineTypes.endp = _endpos_x_; - MenhirLib.EngineTypes.next = _menhir_stack; - } = _menhir_stack in - let x : (Asttypes.label) = Obj.magic x in + let _1_inlined1 : (Asttypes.label) = Obj.magic _1_inlined1 in + let _1 : unit = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in - let _startpos = _startpos_x_ in - let _endpos = _endpos_x_ in - let _v : (Asttypes.label list) = -# 1206 "parsing/parser.mly" + let _startpos = _startpos__1_ in + let _endpos = _endpos__1_inlined1_ in + let _v : ((Asttypes.label Asttypes.loc * Asttypes.layout_annotation option) list) = let x = + let _2 = + let (_endpos__1_, _startpos__1_, _1) = (_endpos__1_inlined1_, _startpos__1_inlined1_, _1_inlined1) in + let _endpos = _endpos__1_ in + let _symbolstartpos = _startpos__1_ in + let _sloc = (_symbolstartpos, _endpos) in + +# 1123 "parsing/parser.mly" + ( mkrhs _1 _sloc ) +# 34272 "parsing/parser.ml" + + in + +# 3791 "parsing/parser.mly" + ( (_2, None) ) +# 34278 "parsing/parser.ml" + + in + +# 1218 "parsing/parser.mly" ( [ x ] ) -# 33176 "parsing/parser.ml" +# 34284 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -33185,26 +34293,72 @@ module Tables = struct let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in let { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = x; - MenhirLib.EngineTypes.startp = _startpos_x_; - MenhirLib.EngineTypes.endp = _endpos_x_; + MenhirLib.EngineTypes.semv = _6; + MenhirLib.EngineTypes.startp = _startpos__6_; + MenhirLib.EngineTypes.endp = _endpos__6_; MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = xs; - MenhirLib.EngineTypes.startp = _startpos_xs_; - MenhirLib.EngineTypes.endp = _endpos_xs_; - MenhirLib.EngineTypes.next = _menhir_stack; + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = layout; + MenhirLib.EngineTypes.startp = _startpos_layout_; + MenhirLib.EngineTypes.endp = _endpos_layout_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _4; + MenhirLib.EngineTypes.startp = _startpos__4_; + MenhirLib.EngineTypes.endp = _endpos__4_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _1_inlined1; + MenhirLib.EngineTypes.startp = _startpos__1_inlined1_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined1_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _2; + MenhirLib.EngineTypes.startp = _startpos__2_; + MenhirLib.EngineTypes.endp = _endpos__2_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + }; + }; + }; + }; }; } = _menhir_stack in - let x : (Asttypes.label) = Obj.magic x in - let xs : (Asttypes.label list) = Obj.magic xs in + let _6 : unit = Obj.magic _6 in + let layout : (Asttypes.layout_annotation) = Obj.magic layout in + let _4 : unit = Obj.magic _4 in + let _1_inlined1 : (Asttypes.label) = Obj.magic _1_inlined1 in + let _2 : unit = Obj.magic _2 in + let _1 : unit = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in - let _startpos = _startpos_xs_ in - let _endpos = _endpos_x_ in - let _v : (Asttypes.label list) = -# 1208 "parsing/parser.mly" - ( x :: xs ) -# 33208 "parsing/parser.ml" + let _startpos = _startpos__1_ in + let _endpos = _endpos__6_ in + let _v : ((Asttypes.label Asttypes.loc * Asttypes.layout_annotation option) list) = let x = + let tyvar = + let (_endpos__1_, _startpos__1_, _1) = (_endpos__1_inlined1_, _startpos__1_inlined1_, _1_inlined1) in + let _endpos = _endpos__1_ in + let _symbolstartpos = _startpos__1_ in + let _sloc = (_symbolstartpos, _endpos) in + +# 1123 "parsing/parser.mly" + ( mkrhs _1 _sloc ) +# 34350 "parsing/parser.ml" + + in + +# 3793 "parsing/parser.mly" + ( (tyvar, Some layout) ) +# 34356 "parsing/parser.ml" + + in + +# 1218 "parsing/parser.mly" + ( [ x ] ) +# 34362 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -33221,40 +34375,47 @@ module Tables = struct MenhirLib.EngineTypes.startp = _startpos__1_inlined1_; MenhirLib.EngineTypes.endp = _endpos__1_inlined1_; MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.state = _; MenhirLib.EngineTypes.semv = _1; MenhirLib.EngineTypes.startp = _startpos__1_; MenhirLib.EngineTypes.endp = _endpos__1_; - MenhirLib.EngineTypes.next = _menhir_stack; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = xs; + MenhirLib.EngineTypes.startp = _startpos_xs_; + MenhirLib.EngineTypes.endp = _endpos_xs_; + MenhirLib.EngineTypes.next = _menhir_stack; + }; }; } = _menhir_stack in let _1_inlined1 : (Asttypes.label) = Obj.magic _1_inlined1 in let _1 : unit = Obj.magic _1 in + let xs : ((Asttypes.label Asttypes.loc * Asttypes.layout_annotation option) list) = Obj.magic xs in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in - let _startpos = _startpos__1_ in + let _startpos = _startpos_xs_ in let _endpos = _endpos__1_inlined1_ in - let _v : (Asttypes.label Asttypes.loc list) = let x = + let _v : ((Asttypes.label Asttypes.loc * Asttypes.layout_annotation option) list) = let x = let _2 = let (_endpos__1_, _startpos__1_, _1) = (_endpos__1_inlined1_, _startpos__1_inlined1_, _1_inlined1) in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1114 "parsing/parser.mly" +# 1123 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 33246 "parsing/parser.ml" +# 34407 "parsing/parser.ml" in -# 3705 "parsing/parser.mly" - ( _2 ) -# 33252 "parsing/parser.ml" +# 3791 "parsing/parser.mly" + ( (_2, None) ) +# 34413 "parsing/parser.ml" in -# 1206 "parsing/parser.mly" - ( [ x ] ) -# 33258 "parsing/parser.ml" +# 1220 "parsing/parser.mly" + ( x :: xs ) +# 34419 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -33267,51 +34428,79 @@ module Tables = struct let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in let { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _1_inlined1; - MenhirLib.EngineTypes.startp = _startpos__1_inlined1_; - MenhirLib.EngineTypes.endp = _endpos__1_inlined1_; + MenhirLib.EngineTypes.semv = _6; + MenhirLib.EngineTypes.startp = _startpos__6_; + MenhirLib.EngineTypes.endp = _endpos__6_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.semv = layout; + MenhirLib.EngineTypes.startp = _startpos_layout_; + MenhirLib.EngineTypes.endp = _endpos_layout_; MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = xs; - MenhirLib.EngineTypes.startp = _startpos_xs_; - MenhirLib.EngineTypes.endp = _endpos_xs_; - MenhirLib.EngineTypes.next = _menhir_stack; + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _4; + MenhirLib.EngineTypes.startp = _startpos__4_; + MenhirLib.EngineTypes.endp = _endpos__4_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _1_inlined1; + MenhirLib.EngineTypes.startp = _startpos__1_inlined1_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined1_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _2; + MenhirLib.EngineTypes.startp = _startpos__2_; + MenhirLib.EngineTypes.endp = _endpos__2_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = xs; + MenhirLib.EngineTypes.startp = _startpos_xs_; + MenhirLib.EngineTypes.endp = _endpos_xs_; + MenhirLib.EngineTypes.next = _menhir_stack; + }; + }; + }; + }; }; }; } = _menhir_stack in + let _6 : unit = Obj.magic _6 in + let layout : (Asttypes.layout_annotation) = Obj.magic layout in + let _4 : unit = Obj.magic _4 in let _1_inlined1 : (Asttypes.label) = Obj.magic _1_inlined1 in + let _2 : unit = Obj.magic _2 in let _1 : unit = Obj.magic _1 in - let xs : (Asttypes.label Asttypes.loc list) = Obj.magic xs in + let xs : ((Asttypes.label Asttypes.loc * Asttypes.layout_annotation option) list) = Obj.magic xs in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos_xs_ in - let _endpos = _endpos__1_inlined1_ in - let _v : (Asttypes.label Asttypes.loc list) = let x = - let _2 = + let _endpos = _endpos__6_ in + let _v : ((Asttypes.label Asttypes.loc * Asttypes.layout_annotation option) list) = let x = + let tyvar = let (_endpos__1_, _startpos__1_, _1) = (_endpos__1_inlined1_, _startpos__1_inlined1_, _1_inlined1) in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1114 "parsing/parser.mly" +# 1123 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 33303 "parsing/parser.ml" +# 34492 "parsing/parser.ml" in -# 3705 "parsing/parser.mly" - ( _2 ) -# 33309 "parsing/parser.ml" +# 3793 "parsing/parser.mly" + ( (tyvar, Some layout) ) +# 34498 "parsing/parser.ml" in -# 1208 "parsing/parser.mly" +# 1220 "parsing/parser.mly" ( x :: xs ) -# 33315 "parsing/parser.ml" +# 34504 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -33336,12 +34525,12 @@ module Tables = struct let _v : (Parsetree.case list) = let _1 = # 124 "" ( None ) -# 33340 "parsing/parser.ml" +# 34529 "parsing/parser.ml" in -# 1297 "parsing/parser.mly" +# 1309 "parsing/parser.mly" ( [x] ) -# 33345 "parsing/parser.ml" +# 34534 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -33375,13 +34564,13 @@ module Tables = struct # 126 "" ( Some x ) -# 33379 "parsing/parser.ml" +# 34568 "parsing/parser.ml" in -# 1297 "parsing/parser.mly" +# 1309 "parsing/parser.mly" ( [x] ) -# 33385 "parsing/parser.ml" +# 34574 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -33418,9 +34607,9 @@ module Tables = struct let _startpos = _startpos_xs_ in let _endpos = _endpos_x_ in let _v : (Parsetree.case list) = -# 1301 "parsing/parser.mly" +# 1313 "parsing/parser.mly" ( x :: xs ) -# 33424 "parsing/parser.ml" +# 34613 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -33444,20 +34633,20 @@ module Tables = struct let _endpos = _endpos__1_ in let _v : (Parsetree.core_type list) = let xs = let x = -# 3748 "parsing/parser.mly" +# 3839 "parsing/parser.mly" ( _1 ) -# 33450 "parsing/parser.ml" +# 34639 "parsing/parser.ml" in -# 1232 "parsing/parser.mly" +# 1244 "parsing/parser.mly" ( [ x ] ) -# 33455 "parsing/parser.ml" +# 34644 "parsing/parser.ml" in -# 1240 "parsing/parser.mly" +# 1252 "parsing/parser.mly" ( xs ) -# 33461 "parsing/parser.ml" +# 34650 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -33495,20 +34684,20 @@ module Tables = struct let _endpos = _endpos__1_ in let _v : (Parsetree.core_type list) = let xs = let x = -# 3748 "parsing/parser.mly" +# 3839 "parsing/parser.mly" ( _1 ) -# 33501 "parsing/parser.ml" +# 34690 "parsing/parser.ml" in -# 1236 "parsing/parser.mly" +# 1248 "parsing/parser.mly" ( x :: xs ) -# 33506 "parsing/parser.ml" +# 34695 "parsing/parser.ml" in -# 1240 "parsing/parser.mly" +# 1252 "parsing/parser.mly" ( xs ) -# 33512 "parsing/parser.ml" +# 34701 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -33531,14 +34720,14 @@ module Tables = struct let _startpos = _startpos_x_ in let _endpos = _endpos_x_ in let _v : (Jane_syntax.Comprehensions.clause_binding list) = let xs = -# 1232 "parsing/parser.mly" +# 1244 "parsing/parser.mly" ( [ x ] ) -# 33537 "parsing/parser.ml" +# 34726 "parsing/parser.ml" in -# 1240 "parsing/parser.mly" +# 1252 "parsing/parser.mly" ( xs ) -# 33542 "parsing/parser.ml" +# 34731 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -33575,14 +34764,14 @@ module Tables = struct let _startpos = _startpos_xs_ in let _endpos = _endpos_x_ in let _v : (Jane_syntax.Comprehensions.clause_binding list) = let xs = -# 1236 "parsing/parser.mly" +# 1248 "parsing/parser.mly" ( x :: xs ) -# 33581 "parsing/parser.ml" +# 34770 "parsing/parser.ml" in -# 1240 "parsing/parser.mly" +# 1252 "parsing/parser.mly" ( xs ) -# 33586 "parsing/parser.ml" +# 34775 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -33605,14 +34794,14 @@ module Tables = struct let _startpos = _startpos_x_ in let _endpos = _endpos_x_ in let _v : (Parsetree.with_constraint list) = let xs = -# 1232 "parsing/parser.mly" +# 1244 "parsing/parser.mly" ( [ x ] ) -# 33611 "parsing/parser.ml" +# 34800 "parsing/parser.ml" in -# 1240 "parsing/parser.mly" +# 1252 "parsing/parser.mly" ( xs ) -# 33616 "parsing/parser.ml" +# 34805 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -33649,14 +34838,14 @@ module Tables = struct let _startpos = _startpos_xs_ in let _endpos = _endpos_x_ in let _v : (Parsetree.with_constraint list) = let xs = -# 1236 "parsing/parser.mly" +# 1248 "parsing/parser.mly" ( x :: xs ) -# 33655 "parsing/parser.ml" +# 34844 "parsing/parser.ml" in -# 1240 "parsing/parser.mly" +# 1252 "parsing/parser.mly" ( xs ) -# 33660 "parsing/parser.ml" +# 34849 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -33679,14 +34868,14 @@ module Tables = struct let _startpos = _startpos_x_ in let _endpos = _endpos_x_ in let _v : (Parsetree.row_field list) = let xs = -# 1232 "parsing/parser.mly" +# 1244 "parsing/parser.mly" ( [ x ] ) -# 33685 "parsing/parser.ml" +# 34874 "parsing/parser.ml" in -# 1240 "parsing/parser.mly" +# 1252 "parsing/parser.mly" ( xs ) -# 33690 "parsing/parser.ml" +# 34879 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -33723,14 +34912,14 @@ module Tables = struct let _startpos = _startpos_xs_ in let _endpos = _endpos_x_ in let _v : (Parsetree.row_field list) = let xs = -# 1236 "parsing/parser.mly" +# 1248 "parsing/parser.mly" ( x :: xs ) -# 33729 "parsing/parser.ml" +# 34918 "parsing/parser.ml" in -# 1240 "parsing/parser.mly" +# 1252 "parsing/parser.mly" ( xs ) -# 33734 "parsing/parser.ml" +# 34923 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -33753,14 +34942,14 @@ module Tables = struct let _startpos = _startpos_x_ in let _endpos = _endpos_x_ in let _v : (Parsetree.core_type list) = let xs = -# 1232 "parsing/parser.mly" +# 1244 "parsing/parser.mly" ( [ x ] ) -# 33759 "parsing/parser.ml" +# 34948 "parsing/parser.ml" in -# 1240 "parsing/parser.mly" +# 1252 "parsing/parser.mly" ( xs ) -# 33764 "parsing/parser.ml" +# 34953 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -33797,14 +34986,14 @@ module Tables = struct let _startpos = _startpos_xs_ in let _endpos = _endpos_x_ in let _v : (Parsetree.core_type list) = let xs = -# 1236 "parsing/parser.mly" +# 1248 "parsing/parser.mly" ( x :: xs ) -# 33803 "parsing/parser.ml" +# 34992 "parsing/parser.ml" in -# 1240 "parsing/parser.mly" +# 1252 "parsing/parser.mly" ( xs ) -# 33808 "parsing/parser.ml" +# 34997 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -33827,14 +35016,14 @@ module Tables = struct let _startpos = _startpos_x_ in let _endpos = _endpos_x_ in let _v : ((Parsetree.core_type * (Asttypes.variance * Asttypes.injectivity)) list) = let xs = -# 1232 "parsing/parser.mly" +# 1244 "parsing/parser.mly" ( [ x ] ) -# 33833 "parsing/parser.ml" +# 35022 "parsing/parser.ml" in -# 1240 "parsing/parser.mly" +# 1252 "parsing/parser.mly" ( xs ) -# 33838 "parsing/parser.ml" +# 35027 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -33871,14 +35060,14 @@ module Tables = struct let _startpos = _startpos_xs_ in let _endpos = _endpos_x_ in let _v : ((Parsetree.core_type * (Asttypes.variance * Asttypes.injectivity)) list) = let xs = -# 1236 "parsing/parser.mly" +# 1248 "parsing/parser.mly" ( x :: xs ) -# 33877 "parsing/parser.ml" +# 35066 "parsing/parser.ml" in -# 1240 "parsing/parser.mly" +# 1252 "parsing/parser.mly" ( xs ) -# 33882 "parsing/parser.ml" +# 35071 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -33901,14 +35090,14 @@ module Tables = struct let _startpos = _startpos_x_ in let _endpos = _endpos_x_ in let _v : ((Parsetree.core_type * (Asttypes.variance * Asttypes.injectivity)) list) = let xs = -# 1232 "parsing/parser.mly" +# 1244 "parsing/parser.mly" ( [ x ] ) -# 33907 "parsing/parser.ml" +# 35096 "parsing/parser.ml" in -# 1240 "parsing/parser.mly" +# 1252 "parsing/parser.mly" ( xs ) -# 33912 "parsing/parser.ml" +# 35101 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -33945,14 +35134,14 @@ module Tables = struct let _startpos = _startpos_xs_ in let _endpos = _endpos_x_ in let _v : ((Parsetree.core_type * (Asttypes.variance * Asttypes.injectivity)) list) = let xs = -# 1236 "parsing/parser.mly" +# 1248 "parsing/parser.mly" ( x :: xs ) -# 33951 "parsing/parser.ml" +# 35140 "parsing/parser.ml" in -# 1240 "parsing/parser.mly" +# 1252 "parsing/parser.mly" ( xs ) -# 33956 "parsing/parser.ml" +# 35145 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -33977,30 +35166,30 @@ module Tables = struct let _v : (Parsetree.core_type list) = let xs = let x = let gbl = -# 4229 "parsing/parser.mly" +# 4334 "parsing/parser.mly" ( Nothing ) -# 33983 "parsing/parser.ml" +# 35172 "parsing/parser.ml" in let (_endpos_gbl_, _startpos_gbl_) = (_endpos__0_, _endpos__0_) in let _loc_gbl_ = (_startpos_gbl_, _endpos_gbl_) in -# 3574 "parsing/parser.mly" +# 3659 "parsing/parser.mly" ( mkcty_global_maybe gbl cty (make_loc _loc_gbl_) ) -# 33992 "parsing/parser.ml" +# 35181 "parsing/parser.ml" in -# 1232 "parsing/parser.mly" +# 1244 "parsing/parser.mly" ( [ x ] ) -# 33998 "parsing/parser.ml" +# 35187 "parsing/parser.ml" in -# 1240 "parsing/parser.mly" +# 1252 "parsing/parser.mly" ( xs ) -# 34004 "parsing/parser.ml" +# 35193 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -34032,30 +35221,30 @@ module Tables = struct let _v : (Parsetree.core_type list) = let xs = let x = let gbl = -# 4230 "parsing/parser.mly" +# 4335 "parsing/parser.mly" ( Global ) -# 34038 "parsing/parser.ml" +# 35227 "parsing/parser.ml" in let (_endpos_gbl_, _startpos_gbl_) = (_endpos__1_, _startpos__1_) in let _loc_gbl_ = (_startpos_gbl_, _endpos_gbl_) in -# 3574 "parsing/parser.mly" +# 3659 "parsing/parser.mly" ( mkcty_global_maybe gbl cty (make_loc _loc_gbl_) ) -# 34047 "parsing/parser.ml" +# 35236 "parsing/parser.ml" in -# 1232 "parsing/parser.mly" +# 1244 "parsing/parser.mly" ( [ x ] ) -# 34053 "parsing/parser.ml" +# 35242 "parsing/parser.ml" in -# 1240 "parsing/parser.mly" +# 1252 "parsing/parser.mly" ( xs ) -# 34059 "parsing/parser.ml" +# 35248 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -34095,30 +35284,30 @@ module Tables = struct let x = let _endpos__0_ = _endpos__2_ in let gbl = -# 4229 "parsing/parser.mly" +# 4334 "parsing/parser.mly" ( Nothing ) -# 34101 "parsing/parser.ml" +# 35290 "parsing/parser.ml" in let (_endpos_gbl_, _startpos_gbl_) = (_endpos__0_, _endpos__0_) in let _loc_gbl_ = (_startpos_gbl_, _endpos_gbl_) in -# 3574 "parsing/parser.mly" +# 3659 "parsing/parser.mly" ( mkcty_global_maybe gbl cty (make_loc _loc_gbl_) ) -# 34110 "parsing/parser.ml" +# 35299 "parsing/parser.ml" in -# 1236 "parsing/parser.mly" +# 1248 "parsing/parser.mly" ( x :: xs ) -# 34116 "parsing/parser.ml" +# 35305 "parsing/parser.ml" in -# 1240 "parsing/parser.mly" +# 1252 "parsing/parser.mly" ( xs ) -# 34122 "parsing/parser.ml" +# 35311 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -34164,30 +35353,30 @@ module Tables = struct let _v : (Parsetree.core_type list) = let xs = let x = let gbl = -# 4230 "parsing/parser.mly" +# 4335 "parsing/parser.mly" ( Global ) -# 34170 "parsing/parser.ml" +# 35359 "parsing/parser.ml" in let (_endpos_gbl_, _startpos_gbl_) = (_endpos__1_, _startpos__1_) in let _loc_gbl_ = (_startpos_gbl_, _endpos_gbl_) in -# 3574 "parsing/parser.mly" +# 3659 "parsing/parser.mly" ( mkcty_global_maybe gbl cty (make_loc _loc_gbl_) ) -# 34179 "parsing/parser.ml" +# 35368 "parsing/parser.ml" in -# 1236 "parsing/parser.mly" +# 1248 "parsing/parser.mly" ( x :: xs ) -# 34185 "parsing/parser.ml" +# 35374 "parsing/parser.ml" in -# 1240 "parsing/parser.mly" +# 1252 "parsing/parser.mly" ( xs ) -# 34191 "parsing/parser.ml" +# 35380 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -34224,9 +35413,9 @@ module Tables = struct let _startpos = _startpos_xs_ in let _endpos = _endpos_x_ in let _v : (Parsetree.core_type list) = -# 1263 "parsing/parser.mly" +# 1275 "parsing/parser.mly" ( x :: xs ) -# 34230 "parsing/parser.ml" +# 35419 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -34263,9 +35452,9 @@ module Tables = struct let _startpos = _startpos_x1_ in let _endpos = _endpos_x2_ in let _v : (Parsetree.core_type list) = -# 1267 "parsing/parser.mly" +# 1279 "parsing/parser.mly" ( [ x2; x1 ] ) -# 34269 "parsing/parser.ml" +# 35458 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -34302,9 +35491,9 @@ module Tables = struct let _startpos = _startpos_xs_ in let _endpos = _endpos_x_ in let _v : (Parsetree.expression list) = -# 1263 "parsing/parser.mly" +# 1275 "parsing/parser.mly" ( x :: xs ) -# 34308 "parsing/parser.ml" +# 35497 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -34341,9 +35530,9 @@ module Tables = struct let _startpos = _startpos_x1_ in let _endpos = _endpos_x2_ in let _v : (Parsetree.expression list) = -# 1267 "parsing/parser.mly" +# 1279 "parsing/parser.mly" ( [ x2; x1 ] ) -# 34347 "parsing/parser.ml" +# 35536 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -34380,9 +35569,9 @@ module Tables = struct let _startpos = _startpos_xs_ in let _endpos = _endpos_x_ in let _v : (Parsetree.core_type list) = -# 1263 "parsing/parser.mly" +# 1275 "parsing/parser.mly" ( x :: xs ) -# 34386 "parsing/parser.ml" +# 35575 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -34419,9 +35608,9 @@ module Tables = struct let _startpos = _startpos_x1_ in let _endpos = _endpos_x2_ in let _v : (Parsetree.core_type list) = -# 1267 "parsing/parser.mly" +# 1279 "parsing/parser.mly" ( [ x2; x1 ] ) -# 34425 "parsing/parser.ml" +# 35614 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -34444,9 +35633,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Parsetree.row_field) = -# 3938 "parsing/parser.mly" +# 4042 "parsing/parser.mly" ( _1 ) -# 34450 "parsing/parser.ml" +# 35639 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -34472,9 +35661,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 3940 "parsing/parser.mly" +# 4044 "parsing/parser.mly" ( Rf.inherit_ ~loc:(make_loc _sloc) _1 ) -# 34478 "parsing/parser.ml" +# 35667 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -34499,12 +35688,12 @@ module Tables = struct let _v : (Parsetree.expression list) = let _2 = # 124 "" ( None ) -# 34503 "parsing/parser.ml" +# 35692 "parsing/parser.ml" in -# 1284 "parsing/parser.mly" +# 1296 "parsing/parser.mly" ( [x] ) -# 34508 "parsing/parser.ml" +# 35697 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -34538,13 +35727,13 @@ module Tables = struct # 126 "" ( Some x ) -# 34542 "parsing/parser.ml" +# 35731 "parsing/parser.ml" in -# 1284 "parsing/parser.mly" +# 1296 "parsing/parser.mly" ( [x] ) -# 34548 "parsing/parser.ml" +# 35737 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -34581,9 +35770,9 @@ module Tables = struct let _startpos = _startpos_x_ in let _endpos = _endpos_xs_ in let _v : (Parsetree.expression list) = -# 1288 "parsing/parser.mly" +# 1300 "parsing/parser.mly" ( x :: xs ) -# 34587 "parsing/parser.ml" +# 35776 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -34609,9 +35798,9 @@ module Tables = struct } = _menhir_stack in let oe : (Parsetree.expression option) = Obj.magic oe in let _1 : ( -# 928 "parsing/parser.mly" +# 937 "parsing/parser.mly" (string) -# 34615 "parsing/parser.ml" +# 35804 "parsing/parser.ml" ) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in @@ -34619,26 +35808,26 @@ module Tables = struct let _v : ((Asttypes.label Asttypes.loc * Parsetree.expression) list) = let _2 = # 124 "" ( None ) -# 34623 "parsing/parser.ml" +# 35812 "parsing/parser.ml" in let x = let label = let _1 = -# 4002 "parsing/parser.mly" +# 4106 "parsing/parser.mly" ( _1 ) -# 34630 "parsing/parser.ml" +# 35819 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1114 "parsing/parser.mly" +# 1123 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 34638 "parsing/parser.ml" +# 35827 "parsing/parser.ml" in -# 3074 "parsing/parser.mly" +# 3107 "parsing/parser.mly" ( let label, e = match oe with | None -> @@ -34648,13 +35837,13 @@ module Tables = struct label, e in label, e ) -# 34652 "parsing/parser.ml" +# 35841 "parsing/parser.ml" in -# 1284 "parsing/parser.mly" +# 1296 "parsing/parser.mly" ( [x] ) -# 34658 "parsing/parser.ml" +# 35847 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -34687,9 +35876,9 @@ module Tables = struct let x : unit = Obj.magic x in let oe : (Parsetree.expression option) = Obj.magic oe in let _1 : ( -# 928 "parsing/parser.mly" +# 937 "parsing/parser.mly" (string) -# 34693 "parsing/parser.ml" +# 35882 "parsing/parser.ml" ) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in @@ -34697,26 +35886,26 @@ module Tables = struct let _v : ((Asttypes.label Asttypes.loc * Parsetree.expression) list) = let _2 = # 126 "" ( Some x ) -# 34701 "parsing/parser.ml" +# 35890 "parsing/parser.ml" in let x = let label = let _1 = -# 4002 "parsing/parser.mly" +# 4106 "parsing/parser.mly" ( _1 ) -# 34708 "parsing/parser.ml" +# 35897 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1114 "parsing/parser.mly" +# 1123 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 34716 "parsing/parser.ml" +# 35905 "parsing/parser.ml" in -# 3074 "parsing/parser.mly" +# 3107 "parsing/parser.mly" ( let label, e = match oe with | None -> @@ -34726,13 +35915,13 @@ module Tables = struct label, e in label, e ) -# 34730 "parsing/parser.ml" +# 35919 "parsing/parser.ml" in -# 1284 "parsing/parser.mly" +# 1296 "parsing/parser.mly" ( [x] ) -# 34736 "parsing/parser.ml" +# 35925 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -34772,9 +35961,9 @@ module Tables = struct let _2 : unit = Obj.magic _2 in let oe : (Parsetree.expression option) = Obj.magic oe in let _1 : ( -# 928 "parsing/parser.mly" +# 937 "parsing/parser.mly" (string) -# 34778 "parsing/parser.ml" +# 35967 "parsing/parser.ml" ) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in @@ -34782,21 +35971,21 @@ module Tables = struct let _v : ((Asttypes.label Asttypes.loc * Parsetree.expression) list) = let x = let label = let _1 = -# 4002 "parsing/parser.mly" +# 4106 "parsing/parser.mly" ( _1 ) -# 34788 "parsing/parser.ml" +# 35977 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1114 "parsing/parser.mly" +# 1123 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 34796 "parsing/parser.ml" +# 35985 "parsing/parser.ml" in -# 3074 "parsing/parser.mly" +# 3107 "parsing/parser.mly" ( let label, e = match oe with | None -> @@ -34806,13 +35995,13 @@ module Tables = struct label, e in label, e ) -# 34810 "parsing/parser.ml" +# 35999 "parsing/parser.ml" in -# 1288 "parsing/parser.mly" +# 1300 "parsing/parser.mly" ( x :: xs ) -# 34816 "parsing/parser.ml" +# 36005 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -34837,12 +36026,12 @@ module Tables = struct let _v : (Parsetree.pattern list) = let _2 = # 124 "" ( None ) -# 34841 "parsing/parser.ml" +# 36030 "parsing/parser.ml" in -# 1284 "parsing/parser.mly" +# 1296 "parsing/parser.mly" ( [x] ) -# 34846 "parsing/parser.ml" +# 36035 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -34876,13 +36065,13 @@ module Tables = struct # 126 "" ( Some x ) -# 34880 "parsing/parser.ml" +# 36069 "parsing/parser.ml" in -# 1284 "parsing/parser.mly" +# 1296 "parsing/parser.mly" ( [x] ) -# 34886 "parsing/parser.ml" +# 36075 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -34919,9 +36108,9 @@ module Tables = struct let _startpos = _startpos_x_ in let _endpos = _endpos_xs_ in let _v : (Parsetree.pattern list) = -# 1288 "parsing/parser.mly" +# 1300 "parsing/parser.mly" ( x :: xs ) -# 34925 "parsing/parser.ml" +# 36114 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -34960,7 +36149,7 @@ module Tables = struct let _v : ((Longident.t Asttypes.loc * Parsetree.expression) list) = let _2 = # 124 "" ( None ) -# 34964 "parsing/parser.ml" +# 36153 "parsing/parser.ml" in let x = let label = @@ -34968,9 +36157,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1114 "parsing/parser.mly" +# 1123 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 34974 "parsing/parser.ml" +# 36163 "parsing/parser.ml" in let _startpos_label_ = _startpos__1_ in @@ -34978,7 +36167,7 @@ module Tables = struct let _symbolstartpos = _startpos_label_ in let _sloc = (_symbolstartpos, _endpos) in -# 3057 "parsing/parser.mly" +# 3090 "parsing/parser.mly" ( let constraint_loc, label, e = match eo with | None -> @@ -34988,13 +36177,13 @@ module Tables = struct (_startpos_c_, _endpos), label, e in label, mkexp_opt_constraint ~loc:constraint_loc e c ) -# 34992 "parsing/parser.ml" +# 36181 "parsing/parser.ml" in -# 1284 "parsing/parser.mly" +# 1296 "parsing/parser.mly" ( [x] ) -# 34998 "parsing/parser.ml" +# 36187 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -35040,7 +36229,7 @@ module Tables = struct let _v : ((Longident.t Asttypes.loc * Parsetree.expression) list) = let _2 = # 126 "" ( Some x ) -# 35044 "parsing/parser.ml" +# 36233 "parsing/parser.ml" in let x = let label = @@ -35048,9 +36237,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1114 "parsing/parser.mly" +# 1123 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 35054 "parsing/parser.ml" +# 36243 "parsing/parser.ml" in let _startpos_label_ = _startpos__1_ in @@ -35058,7 +36247,7 @@ module Tables = struct let _symbolstartpos = _startpos_label_ in let _sloc = (_symbolstartpos, _endpos) in -# 3057 "parsing/parser.mly" +# 3090 "parsing/parser.mly" ( let constraint_loc, label, e = match eo with | None -> @@ -35068,13 +36257,13 @@ module Tables = struct (_startpos_c_, _endpos), label, e in label, mkexp_opt_constraint ~loc:constraint_loc e c ) -# 35072 "parsing/parser.ml" +# 36261 "parsing/parser.ml" in -# 1284 "parsing/parser.mly" +# 1296 "parsing/parser.mly" ( [x] ) -# 35078 "parsing/parser.ml" +# 36267 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -35130,9 +36319,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1114 "parsing/parser.mly" +# 1123 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 35136 "parsing/parser.ml" +# 36325 "parsing/parser.ml" in let _startpos_label_ = _startpos__1_ in @@ -35140,7 +36329,7 @@ module Tables = struct let _symbolstartpos = _startpos_label_ in let _sloc = (_symbolstartpos, _endpos) in -# 3057 "parsing/parser.mly" +# 3090 "parsing/parser.mly" ( let constraint_loc, label, e = match eo with | None -> @@ -35150,13 +36339,13 @@ module Tables = struct (_startpos_c_, _endpos), label, e in label, mkexp_opt_constraint ~loc:constraint_loc e c ) -# 35154 "parsing/parser.ml" +# 36343 "parsing/parser.ml" in -# 1288 "parsing/parser.mly" +# 1300 "parsing/parser.mly" ( x :: xs ) -# 35160 "parsing/parser.ml" +# 36349 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -35179,9 +36368,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Parsetree.expression) = -# 2435 "parsing/parser.mly" +# 2447 "parsing/parser.mly" ( _1 ) -# 35185 "parsing/parser.ml" +# 36374 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -35211,9 +36400,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (Parsetree.expression) = -# 2436 "parsing/parser.mly" +# 2448 "parsing/parser.mly" ( _1 ) -# 35217 "parsing/parser.ml" +# 36406 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -35251,24 +36440,24 @@ module Tables = struct let _endpos = _endpos__3_ in let _v : (Parsetree.expression) = let _1 = let _1 = -# 2438 "parsing/parser.mly" +# 2450 "parsing/parser.mly" ( Pexp_sequence(_1, _3) ) -# 35257 "parsing/parser.ml" +# 36446 "parsing/parser.ml" in let _endpos__1_ = _endpos__3_ in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1147 "parsing/parser.mly" +# 1156 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) -# 35266 "parsing/parser.ml" +# 36455 "parsing/parser.ml" in -# 2439 "parsing/parser.mly" +# 2451 "parsing/parser.mly" ( _1 ) -# 35272 "parsing/parser.ml" +# 36461 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -35322,11 +36511,11 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2441 "parsing/parser.mly" +# 2453 "parsing/parser.mly" ( let seq = mkexp ~loc:_sloc (Pexp_sequence (_1, _5)) in let payload = PStr [mkstrexp seq []] in mkexp ~loc:_sloc (Pexp_extension (_4, payload)) ) -# 35330 "parsing/parser.ml" +# 36519 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -35382,8 +36571,8 @@ module Tables = struct } = _menhir_stack in let _1_inlined4 : (Parsetree.attributes) = Obj.magic _1_inlined4 in let _1_inlined3 : (Parsetree.attributes) = Obj.magic _1_inlined3 in - let vars_args_res : (string Asttypes.loc list * Parsetree.constructor_arguments * - Parsetree.core_type option) = Obj.magic vars_args_res in + let vars_args_res : ((Asttypes.label Asttypes.loc * Asttypes.layout_annotation option) list * + Parsetree.constructor_arguments * Parsetree.core_type option) = Obj.magic vars_args_res in let _1_inlined2 : (Asttypes.label) = Obj.magic _1_inlined2 in let _1_inlined1 : (Parsetree.attributes) = Obj.magic _1_inlined1 in let ext : (string Asttypes.loc option) = Obj.magic ext in @@ -35394,18 +36583,18 @@ module Tables = struct let _v : (Parsetree.type_exception * string Asttypes.loc option) = let attrs = let _1 = _1_inlined4 in -# 4367 "parsing/parser.mly" +# 4472 "parsing/parser.mly" ( _1 ) -# 35400 "parsing/parser.ml" +# 36589 "parsing/parser.ml" in let _endpos_attrs_ = _endpos__1_inlined4_ in let attrs2 = let _1 = _1_inlined3 in -# 4371 "parsing/parser.mly" +# 4476 "parsing/parser.mly" ( _1 ) -# 35409 "parsing/parser.ml" +# 36598 "parsing/parser.ml" in let _endpos_attrs2_ = _endpos__1_inlined3_ in @@ -35415,17 +36604,17 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1114 "parsing/parser.mly" +# 1123 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 35421 "parsing/parser.ml" +# 36610 "parsing/parser.ml" in let attrs1 = let _1 = _1_inlined1 in -# 4371 "parsing/parser.mly" +# 4476 "parsing/parser.mly" ( _1 ) -# 35429 "parsing/parser.ml" +# 36618 "parsing/parser.ml" in let _endpos = _endpos_attrs_ in @@ -35433,14 +36622,17 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 3547 "parsing/parser.mly" - ( let vars, args, res = vars_args_res in +# 3624 "parsing/parser.mly" + ( let vars_layouts, args, res = vars_args_res in let loc = make_loc (_startpos, _endpos_attrs2_) in let docs = symbol_docs _sloc in - Te.mk_exception ~attrs - (Te.decl id ~vars ~args ?res ~attrs:(attrs1 @ attrs2) ~loc ~docs) - , ext ) -# 35444 "parsing/parser.ml" + let ext_ctor = + Jane_syntax.Layouts.extension_constructor_of + ~loc ~name:id ~attrs:(attrs1 @ attrs2) ~docs + (Lext_decl (vars_layouts, args, res)) + in + Te.mk_exception ~attrs ext_ctor, ext ) +# 36636 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -35466,21 +36658,21 @@ module Tables = struct let _1 = # 260 "" ( List.flatten xss ) -# 35470 "parsing/parser.ml" +# 36662 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_xss_, _startpos_xss_) in let _endpos = _endpos__1_ in let _startpos = _startpos__1_ in -# 1107 "parsing/parser.mly" +# 1116 "parsing/parser.mly" ( extra_sig _startpos _endpos _1 ) -# 35478 "parsing/parser.ml" +# 36670 "parsing/parser.ml" in -# 1876 "parsing/parser.mly" +# 1888 "parsing/parser.mly" ( _1 ) -# 35484 "parsing/parser.ml" +# 36676 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -35512,9 +36704,9 @@ module Tables = struct let _v : (Parsetree.signature_item) = let _2 = let _1 = _1_inlined1 in -# 4367 "parsing/parser.mly" +# 4472 "parsing/parser.mly" ( _1 ) -# 35518 "parsing/parser.ml" +# 36710 "parsing/parser.ml" in let _endpos__2_ = _endpos__1_inlined1_ in @@ -35522,10 +36714,10 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1891 "parsing/parser.mly" +# 1903 "parsing/parser.mly" ( let docs = symbol_docs _sloc in mksig ~loc:_sloc (Psig_extension (_1, (add_docs_attrs docs _2))) ) -# 35529 "parsing/parser.ml" +# 36721 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -35549,23 +36741,23 @@ module Tables = struct let _endpos = _endpos__1_ in let _v : (Parsetree.signature_item) = let _1 = let _1 = -# 1895 "parsing/parser.mly" +# 1907 "parsing/parser.mly" ( Psig_attribute _1 ) -# 35555 "parsing/parser.ml" +# 36747 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1155 "parsing/parser.mly" +# 1164 "parsing/parser.mly" ( mksig ~loc:_sloc _1 ) -# 35563 "parsing/parser.ml" +# 36755 "parsing/parser.ml" in -# 1897 "parsing/parser.mly" +# 1909 "parsing/parser.mly" ( _1 ) -# 35569 "parsing/parser.ml" +# 36761 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -35589,23 +36781,23 @@ module Tables = struct let _endpos = _endpos__1_ in let _v : (Parsetree.signature_item) = let _1 = let _1 = -# 1900 "parsing/parser.mly" +# 1912 "parsing/parser.mly" ( psig_value _1 ) -# 35595 "parsing/parser.ml" +# 36787 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1172 "parsing/parser.mly" +# 1181 "parsing/parser.mly" ( wrap_mksig_ext ~loc:_sloc _1 ) -# 35603 "parsing/parser.ml" +# 36795 "parsing/parser.ml" in -# 1930 "parsing/parser.mly" +# 1942 "parsing/parser.mly" ( _1 ) -# 35609 "parsing/parser.ml" +# 36801 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -35629,23 +36821,23 @@ module Tables = struct let _endpos = _endpos__1_ in let _v : (Parsetree.signature_item) = let _1 = let _1 = -# 1902 "parsing/parser.mly" +# 1914 "parsing/parser.mly" ( psig_value _1 ) -# 35635 "parsing/parser.ml" +# 36827 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1172 "parsing/parser.mly" +# 1181 "parsing/parser.mly" ( wrap_mksig_ext ~loc:_sloc _1 ) -# 35643 "parsing/parser.ml" +# 36835 "parsing/parser.ml" in -# 1930 "parsing/parser.mly" +# 1942 "parsing/parser.mly" ( _1 ) -# 35649 "parsing/parser.ml" +# 36841 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -35680,26 +36872,26 @@ module Tables = struct let _1 = let _1 = let _1 = -# 1345 "parsing/parser.mly" +# 1357 "parsing/parser.mly" ( let (x, b) = a in x, b :: bs ) -# 35686 "parsing/parser.ml" +# 36878 "parsing/parser.ml" in -# 3353 "parsing/parser.mly" +# 3397 "parsing/parser.mly" ( _1 ) -# 35691 "parsing/parser.ml" +# 36883 "parsing/parser.ml" in -# 3336 "parsing/parser.mly" +# 3380 "parsing/parser.mly" ( _1 ) -# 35697 "parsing/parser.ml" +# 36889 "parsing/parser.ml" in -# 1904 "parsing/parser.mly" +# 1916 "parsing/parser.mly" ( psig_type _1 ) -# 35703 "parsing/parser.ml" +# 36895 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_bs_, _startpos_a_) in @@ -35707,15 +36899,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1172 "parsing/parser.mly" +# 1181 "parsing/parser.mly" ( wrap_mksig_ext ~loc:_sloc _1 ) -# 35713 "parsing/parser.ml" +# 36905 "parsing/parser.ml" in -# 1930 "parsing/parser.mly" +# 1942 "parsing/parser.mly" ( _1 ) -# 35719 "parsing/parser.ml" +# 36911 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -35750,26 +36942,26 @@ module Tables = struct let _1 = let _1 = let _1 = -# 1345 "parsing/parser.mly" +# 1357 "parsing/parser.mly" ( let (x, b) = a in x, b :: bs ) -# 35756 "parsing/parser.ml" +# 36948 "parsing/parser.ml" in -# 3353 "parsing/parser.mly" +# 3397 "parsing/parser.mly" ( _1 ) -# 35761 "parsing/parser.ml" +# 36953 "parsing/parser.ml" in -# 3341 "parsing/parser.mly" +# 3385 "parsing/parser.mly" ( _1 ) -# 35767 "parsing/parser.ml" +# 36959 "parsing/parser.ml" in -# 1906 "parsing/parser.mly" +# 1918 "parsing/parser.mly" ( psig_typesubst _1 ) -# 35773 "parsing/parser.ml" +# 36965 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_bs_, _startpos_a_) in @@ -35777,15 +36969,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1172 "parsing/parser.mly" +# 1181 "parsing/parser.mly" ( wrap_mksig_ext ~loc:_sloc _1 ) -# 35783 "parsing/parser.ml" +# 36975 "parsing/parser.ml" in -# 1930 "parsing/parser.mly" +# 1942 "parsing/parser.mly" ( _1 ) -# 35789 "parsing/parser.ml" +# 36981 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -35870,16 +37062,16 @@ module Tables = struct let attrs2 = let _1 = _1_inlined3 in -# 4367 "parsing/parser.mly" +# 4472 "parsing/parser.mly" ( _1 ) -# 35876 "parsing/parser.ml" +# 37068 "parsing/parser.ml" in let _endpos_attrs2_ = _endpos__1_inlined3_ in let cs = -# 1337 "parsing/parser.mly" +# 1349 "parsing/parser.mly" ( List.rev xs ) -# 35883 "parsing/parser.ml" +# 37075 "parsing/parser.ml" in let tid = let (_endpos__1_, _startpos__1_, _1) = (_endpos__1_inlined2_, _startpos__1_inlined2_, _1_inlined2) in @@ -35887,46 +37079,46 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1114 "parsing/parser.mly" +# 1123 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 35893 "parsing/parser.ml" +# 37085 "parsing/parser.ml" in let _4 = -# 4202 "parsing/parser.mly" +# 4307 "parsing/parser.mly" ( Recursive ) -# 35899 "parsing/parser.ml" +# 37091 "parsing/parser.ml" in let attrs1 = let _1 = _1_inlined1 in -# 4371 "parsing/parser.mly" +# 4476 "parsing/parser.mly" ( _1 ) -# 35906 "parsing/parser.ml" +# 37098 "parsing/parser.ml" in let _endpos = _endpos_attrs2_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 3634 "parsing/parser.mly" +# 3719 "parsing/parser.mly" ( let docs = symbol_docs _sloc in let attrs = attrs1 @ attrs2 in Te.mk tid cs ~params ~priv ~attrs ~docs, ext ) -# 35918 "parsing/parser.ml" +# 37110 "parsing/parser.ml" in -# 3621 "parsing/parser.mly" +# 3706 "parsing/parser.mly" ( _1 ) -# 35924 "parsing/parser.ml" +# 37116 "parsing/parser.ml" in -# 1908 "parsing/parser.mly" +# 1920 "parsing/parser.mly" ( psig_typext _1 ) -# 35930 "parsing/parser.ml" +# 37122 "parsing/parser.ml" in let _endpos__1_ = _endpos__1_inlined3_ in @@ -35934,15 +37126,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1172 "parsing/parser.mly" +# 1181 "parsing/parser.mly" ( wrap_mksig_ext ~loc:_sloc _1 ) -# 35940 "parsing/parser.ml" +# 37132 "parsing/parser.ml" in -# 1930 "parsing/parser.mly" +# 1942 "parsing/parser.mly" ( _1 ) -# 35946 "parsing/parser.ml" +# 37138 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -36034,16 +37226,16 @@ module Tables = struct let attrs2 = let _1 = _1_inlined4 in -# 4367 "parsing/parser.mly" +# 4472 "parsing/parser.mly" ( _1 ) -# 36040 "parsing/parser.ml" +# 37232 "parsing/parser.ml" in let _endpos_attrs2_ = _endpos__1_inlined4_ in let cs = -# 1337 "parsing/parser.mly" +# 1349 "parsing/parser.mly" ( List.rev xs ) -# 36047 "parsing/parser.ml" +# 37239 "parsing/parser.ml" in let tid = let (_endpos__1_, _startpos__1_, _1) = (_endpos__1_inlined3_, _startpos__1_inlined3_, _1_inlined3) in @@ -36051,9 +37243,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1114 "parsing/parser.mly" +# 1123 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 36057 "parsing/parser.ml" +# 37249 "parsing/parser.ml" in let _4 = @@ -36062,41 +37254,41 @@ module Tables = struct let _startpos = _startpos__1_ in let _loc = (_startpos, _endpos) in -# 4204 "parsing/parser.mly" +# 4309 "parsing/parser.mly" ( not_expecting _loc "nonrec flag" ) -# 36068 "parsing/parser.ml" +# 37260 "parsing/parser.ml" in let attrs1 = let _1 = _1_inlined1 in -# 4371 "parsing/parser.mly" +# 4476 "parsing/parser.mly" ( _1 ) -# 36076 "parsing/parser.ml" +# 37268 "parsing/parser.ml" in let _endpos = _endpos_attrs2_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 3634 "parsing/parser.mly" +# 3719 "parsing/parser.mly" ( let docs = symbol_docs _sloc in let attrs = attrs1 @ attrs2 in Te.mk tid cs ~params ~priv ~attrs ~docs, ext ) -# 36088 "parsing/parser.ml" +# 37280 "parsing/parser.ml" in -# 3621 "parsing/parser.mly" +# 3706 "parsing/parser.mly" ( _1 ) -# 36094 "parsing/parser.ml" +# 37286 "parsing/parser.ml" in -# 1908 "parsing/parser.mly" +# 1920 "parsing/parser.mly" ( psig_typext _1 ) -# 36100 "parsing/parser.ml" +# 37292 "parsing/parser.ml" in let _endpos__1_ = _endpos__1_inlined4_ in @@ -36104,15 +37296,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1172 "parsing/parser.mly" +# 1181 "parsing/parser.mly" ( wrap_mksig_ext ~loc:_sloc _1 ) -# 36110 "parsing/parser.ml" +# 37302 "parsing/parser.ml" in -# 1930 "parsing/parser.mly" +# 1942 "parsing/parser.mly" ( _1 ) -# 36116 "parsing/parser.ml" +# 37308 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -36136,23 +37328,23 @@ module Tables = struct let _endpos = _endpos__1_ in let _v : (Parsetree.signature_item) = let _1 = let _1 = -# 1910 "parsing/parser.mly" +# 1922 "parsing/parser.mly" ( psig_exception _1 ) -# 36142 "parsing/parser.ml" +# 37334 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1172 "parsing/parser.mly" +# 1181 "parsing/parser.mly" ( wrap_mksig_ext ~loc:_sloc _1 ) -# 36150 "parsing/parser.ml" +# 37342 "parsing/parser.ml" in -# 1930 "parsing/parser.mly" +# 1942 "parsing/parser.mly" ( _1 ) -# 36156 "parsing/parser.ml" +# 37348 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -36215,9 +37407,9 @@ module Tables = struct let attrs2 = let _1 = _1_inlined3 in -# 4367 "parsing/parser.mly" +# 4472 "parsing/parser.mly" ( _1 ) -# 36221 "parsing/parser.ml" +# 37413 "parsing/parser.ml" in let _endpos_attrs2_ = _endpos__1_inlined3_ in @@ -36227,37 +37419,37 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1114 "parsing/parser.mly" +# 1123 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 36233 "parsing/parser.ml" +# 37425 "parsing/parser.ml" in let attrs1 = let _1 = _1_inlined1 in -# 4371 "parsing/parser.mly" +# 4476 "parsing/parser.mly" ( _1 ) -# 36241 "parsing/parser.ml" +# 37433 "parsing/parser.ml" in let _endpos = _endpos_attrs2_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1949 "parsing/parser.mly" +# 1961 "parsing/parser.mly" ( let attrs = attrs1 @ attrs2 in let loc = make_loc _sloc in let docs = symbol_docs _sloc in Md.mk name body ~attrs ~loc ~docs, ext ) -# 36255 "parsing/parser.ml" +# 37447 "parsing/parser.ml" in -# 1912 "parsing/parser.mly" +# 1924 "parsing/parser.mly" ( let (body, ext) = _1 in (Psig_module body, ext) ) -# 36261 "parsing/parser.ml" +# 37453 "parsing/parser.ml" in let _endpos__1_ = _endpos__1_inlined3_ in @@ -36265,15 +37457,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1172 "parsing/parser.mly" +# 1181 "parsing/parser.mly" ( wrap_mksig_ext ~loc:_sloc _1 ) -# 36271 "parsing/parser.ml" +# 37463 "parsing/parser.ml" in -# 1930 "parsing/parser.mly" +# 1942 "parsing/parser.mly" ( _1 ) -# 36277 "parsing/parser.ml" +# 37469 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -36343,9 +37535,9 @@ module Tables = struct let attrs2 = let _1 = _1_inlined4 in -# 4367 "parsing/parser.mly" +# 4472 "parsing/parser.mly" ( _1 ) -# 36349 "parsing/parser.ml" +# 37541 "parsing/parser.ml" in let _endpos_attrs2_ = _endpos__1_inlined4_ in @@ -36356,9 +37548,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1114 "parsing/parser.mly" +# 1123 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 36362 "parsing/parser.ml" +# 37554 "parsing/parser.ml" in let (_endpos_id_, _startpos_id_) = (_endpos__1_, _startpos__1_) in @@ -36366,9 +37558,9 @@ module Tables = struct let _symbolstartpos = _startpos_id_ in let _sloc = (_symbolstartpos, _endpos) in -# 1986 "parsing/parser.mly" +# 1998 "parsing/parser.mly" ( Mty.alias ~loc:(make_loc _sloc) id ) -# 36372 "parsing/parser.ml" +# 37564 "parsing/parser.ml" in let name = @@ -36377,37 +37569,37 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1114 "parsing/parser.mly" +# 1123 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 36383 "parsing/parser.ml" +# 37575 "parsing/parser.ml" in let attrs1 = let _1 = _1_inlined1 in -# 4371 "parsing/parser.mly" +# 4476 "parsing/parser.mly" ( _1 ) -# 36391 "parsing/parser.ml" +# 37583 "parsing/parser.ml" in let _endpos = _endpos_attrs2_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1977 "parsing/parser.mly" +# 1989 "parsing/parser.mly" ( let attrs = attrs1 @ attrs2 in let loc = make_loc _sloc in let docs = symbol_docs _sloc in Md.mk name body ~attrs ~loc ~docs, ext ) -# 36405 "parsing/parser.ml" +# 37597 "parsing/parser.ml" in -# 1914 "parsing/parser.mly" +# 1926 "parsing/parser.mly" ( let (body, ext) = _1 in (Psig_module body, ext) ) -# 36411 "parsing/parser.ml" +# 37603 "parsing/parser.ml" in let _endpos__1_ = _endpos__1_inlined4_ in @@ -36415,15 +37607,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1172 "parsing/parser.mly" +# 1181 "parsing/parser.mly" ( wrap_mksig_ext ~loc:_sloc _1 ) -# 36421 "parsing/parser.ml" +# 37613 "parsing/parser.ml" in -# 1930 "parsing/parser.mly" +# 1942 "parsing/parser.mly" ( _1 ) -# 36427 "parsing/parser.ml" +# 37619 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -36447,23 +37639,23 @@ module Tables = struct let _endpos = _endpos__1_ in let _v : (Parsetree.signature_item) = let _1 = let _1 = -# 1916 "parsing/parser.mly" +# 1928 "parsing/parser.mly" ( let (body, ext) = _1 in (Psig_modsubst body, ext) ) -# 36453 "parsing/parser.ml" +# 37645 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1172 "parsing/parser.mly" +# 1181 "parsing/parser.mly" ( wrap_mksig_ext ~loc:_sloc _1 ) -# 36461 "parsing/parser.ml" +# 37653 "parsing/parser.ml" in -# 1930 "parsing/parser.mly" +# 1942 "parsing/parser.mly" ( _1 ) -# 36467 "parsing/parser.ml" +# 37659 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -36549,9 +37741,9 @@ module Tables = struct let attrs2 = let _1 = _1_inlined3 in -# 4367 "parsing/parser.mly" +# 4472 "parsing/parser.mly" ( _1 ) -# 36555 "parsing/parser.ml" +# 37747 "parsing/parser.ml" in let _endpos_attrs2_ = _endpos__1_inlined3_ in @@ -36561,49 +37753,49 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1114 "parsing/parser.mly" +# 1123 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 36567 "parsing/parser.ml" +# 37759 "parsing/parser.ml" in let attrs1 = let _1 = _1_inlined1 in -# 4371 "parsing/parser.mly" +# 4476 "parsing/parser.mly" ( _1 ) -# 36575 "parsing/parser.ml" +# 37767 "parsing/parser.ml" in let _endpos = _endpos_attrs2_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2020 "parsing/parser.mly" +# 2032 "parsing/parser.mly" ( let attrs = attrs1 @ attrs2 in let loc = make_loc _sloc in let docs = symbol_docs _sloc in ext, Md.mk name mty ~attrs ~loc ~docs ) -# 36589 "parsing/parser.ml" +# 37781 "parsing/parser.ml" in -# 1345 "parsing/parser.mly" +# 1357 "parsing/parser.mly" ( let (x, b) = a in x, b :: bs ) -# 36595 "parsing/parser.ml" +# 37787 "parsing/parser.ml" in -# 2009 "parsing/parser.mly" +# 2021 "parsing/parser.mly" ( _1 ) -# 36601 "parsing/parser.ml" +# 37793 "parsing/parser.ml" in -# 1918 "parsing/parser.mly" +# 1930 "parsing/parser.mly" ( let (ext, l) = _1 in (Psig_recmodule l, ext) ) -# 36607 "parsing/parser.ml" +# 37799 "parsing/parser.ml" in let _endpos__1_ = _endpos_bs_ in @@ -36611,15 +37803,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1172 "parsing/parser.mly" +# 1181 "parsing/parser.mly" ( wrap_mksig_ext ~loc:_sloc _1 ) -# 36617 "parsing/parser.ml" +# 37809 "parsing/parser.ml" in -# 1930 "parsing/parser.mly" +# 1942 "parsing/parser.mly" ( _1 ) -# 36623 "parsing/parser.ml" +# 37815 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -36643,23 +37835,23 @@ module Tables = struct let _endpos = _endpos__1_ in let _v : (Parsetree.signature_item) = let _1 = let _1 = -# 1920 "parsing/parser.mly" +# 1932 "parsing/parser.mly" ( let (body, ext) = _1 in (Psig_modtype body, ext) ) -# 36649 "parsing/parser.ml" +# 37841 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1172 "parsing/parser.mly" +# 1181 "parsing/parser.mly" ( wrap_mksig_ext ~loc:_sloc _1 ) -# 36657 "parsing/parser.ml" +# 37849 "parsing/parser.ml" in -# 1930 "parsing/parser.mly" +# 1942 "parsing/parser.mly" ( _1 ) -# 36663 "parsing/parser.ml" +# 37855 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -36683,23 +37875,23 @@ module Tables = struct let _endpos = _endpos__1_ in let _v : (Parsetree.signature_item) = let _1 = let _1 = -# 1922 "parsing/parser.mly" +# 1934 "parsing/parser.mly" ( let (body, ext) = _1 in (Psig_modtypesubst body, ext) ) -# 36689 "parsing/parser.ml" +# 37881 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1172 "parsing/parser.mly" +# 1181 "parsing/parser.mly" ( wrap_mksig_ext ~loc:_sloc _1 ) -# 36697 "parsing/parser.ml" +# 37889 "parsing/parser.ml" in -# 1930 "parsing/parser.mly" +# 1942 "parsing/parser.mly" ( _1 ) -# 36703 "parsing/parser.ml" +# 37895 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -36723,23 +37915,23 @@ module Tables = struct let _endpos = _endpos__1_ in let _v : (Parsetree.signature_item) = let _1 = let _1 = -# 1924 "parsing/parser.mly" +# 1936 "parsing/parser.mly" ( let (body, ext) = _1 in (Psig_open body, ext) ) -# 36729 "parsing/parser.ml" +# 37921 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1172 "parsing/parser.mly" +# 1181 "parsing/parser.mly" ( wrap_mksig_ext ~loc:_sloc _1 ) -# 36737 "parsing/parser.ml" +# 37929 "parsing/parser.ml" in -# 1930 "parsing/parser.mly" +# 1942 "parsing/parser.mly" ( _1 ) -# 36743 "parsing/parser.ml" +# 37935 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -36816,9 +38008,9 @@ module Tables = struct let cty : (Parsetree.class_type) = Obj.magic cty in let _7 : unit = Obj.magic _7 in let _1_inlined2 : ( -# 928 "parsing/parser.mly" +# 937 "parsing/parser.mly" (string) -# 36822 "parsing/parser.ml" +# 38014 "parsing/parser.ml" ) = Obj.magic _1_inlined2 in let params : ((Parsetree.core_type * (Asttypes.variance * Asttypes.injectivity)) list) = Obj.magic params in let virt : (Asttypes.virtual_flag) = Obj.magic virt in @@ -36836,9 +38028,9 @@ module Tables = struct let attrs2 = let _1 = _1_inlined3 in -# 4367 "parsing/parser.mly" +# 4472 "parsing/parser.mly" ( _1 ) -# 36842 "parsing/parser.ml" +# 38034 "parsing/parser.ml" in let _endpos_attrs2_ = _endpos__1_inlined3_ in @@ -36848,24 +38040,24 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1114 "parsing/parser.mly" +# 1123 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 36854 "parsing/parser.ml" +# 38046 "parsing/parser.ml" in let attrs1 = let _1 = _1_inlined1 in -# 4371 "parsing/parser.mly" +# 4476 "parsing/parser.mly" ( _1 ) -# 36862 "parsing/parser.ml" +# 38054 "parsing/parser.ml" in let _endpos = _endpos_attrs2_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2367 "parsing/parser.mly" +# 2379 "parsing/parser.mly" ( let attrs = attrs1 @ attrs2 in let loc = make_loc _sloc in @@ -36873,25 +38065,25 @@ module Tables = struct ext, Ci.mk id cty ~virt ~params ~attrs ~loc ~docs ) -# 36877 "parsing/parser.ml" +# 38069 "parsing/parser.ml" in -# 1345 "parsing/parser.mly" +# 1357 "parsing/parser.mly" ( let (x, b) = a in x, b :: bs ) -# 36883 "parsing/parser.ml" +# 38075 "parsing/parser.ml" in -# 2355 "parsing/parser.mly" +# 2367 "parsing/parser.mly" ( _1 ) -# 36889 "parsing/parser.ml" +# 38081 "parsing/parser.ml" in -# 1926 "parsing/parser.mly" +# 1938 "parsing/parser.mly" ( let (ext, l) = _1 in (Psig_class l, ext) ) -# 36895 "parsing/parser.ml" +# 38087 "parsing/parser.ml" in let _endpos__1_ = _endpos_bs_ in @@ -36899,15 +38091,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1172 "parsing/parser.mly" +# 1181 "parsing/parser.mly" ( wrap_mksig_ext ~loc:_sloc _1 ) -# 36905 "parsing/parser.ml" +# 38097 "parsing/parser.ml" in -# 1930 "parsing/parser.mly" +# 1942 "parsing/parser.mly" ( _1 ) -# 36911 "parsing/parser.ml" +# 38103 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -36931,23 +38123,23 @@ module Tables = struct let _endpos = _endpos__1_ in let _v : (Parsetree.signature_item) = let _1 = let _1 = -# 1928 "parsing/parser.mly" +# 1940 "parsing/parser.mly" ( let (ext, l) = _1 in (Psig_class_type l, ext) ) -# 36937 "parsing/parser.ml" +# 38129 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1172 "parsing/parser.mly" +# 1181 "parsing/parser.mly" ( wrap_mksig_ext ~loc:_sloc _1 ) -# 36945 "parsing/parser.ml" +# 38137 "parsing/parser.ml" in -# 1930 "parsing/parser.mly" +# 1942 "parsing/parser.mly" ( _1 ) -# 36951 "parsing/parser.ml" +# 38143 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -37001,22 +38193,22 @@ module Tables = struct let attrs2 = let _1 = _1_inlined1 in -# 4367 "parsing/parser.mly" +# 4472 "parsing/parser.mly" ( _1 ) -# 37007 "parsing/parser.ml" +# 38199 "parsing/parser.ml" in let _endpos_attrs2_ = _endpos__1_inlined1_ in let attrs1 = -# 4371 "parsing/parser.mly" +# 4476 "parsing/parser.mly" ( _1 ) -# 37014 "parsing/parser.ml" +# 38206 "parsing/parser.ml" in let _endpos = _endpos_attrs2_ in let _symbolstartpos = _startpos_is_functor_ in let _sloc = (_symbolstartpos, _endpos) in -# 1767 "parsing/parser.mly" +# 1779 "parsing/parser.mly" ( let attrs = attrs1 @ attrs2 in let loc = make_loc _sloc in @@ -37024,7 +38216,7 @@ module Tables = struct let incl = Incl.mk thing ~attrs ~loc ~docs in is_functor, incl, ext ) -# 37028 "parsing/parser.ml" +# 38220 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos__1_inlined1_, _startpos_is_functor_) in @@ -37032,7 +38224,7 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1932 "parsing/parser.mly" +# 1944 "parsing/parser.mly" ( let is_functor, incl, ext = _1 in let item = if is_functor @@ -37042,7 +38234,7 @@ module Tables = struct in wrap_sig_ext ~loc:_sloc item ext ) -# 37046 "parsing/parser.ml" +# 38238 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -37065,9 +38257,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Constant.t) = -# 4030 "parsing/parser.mly" +# 4134 "parsing/parser.mly" ( Constant.value _1 ) -# 37071 "parsing/parser.ml" +# 38263 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -37090,9 +38282,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Constant.t) = -# 4031 "parsing/parser.mly" +# 4135 "parsing/parser.mly" ( _1 ) -# 37096 "parsing/parser.ml" +# 38288 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -37117,9 +38309,9 @@ module Tables = struct }; } = _menhir_stack in let _2 : ( -# 913 "parsing/parser.mly" +# 922 "parsing/parser.mly" (string * char option) -# 37123 "parsing/parser.ml" +# 38315 "parsing/parser.ml" ) = Obj.magic _2 in let _1 : unit = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in @@ -37130,9 +38322,9 @@ module Tables = struct let _loc__2_ = (_startpos__2_, _endpos__2_) in let _sloc = (_symbolstartpos, _endpos) in -# 4032 "parsing/parser.mly" +# 4136 "parsing/parser.mly" ( unboxed_int _sloc _loc__2_ Negative _2 ) -# 37136 "parsing/parser.ml" +# 38328 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -37157,9 +38349,9 @@ module Tables = struct }; } = _menhir_stack in let _2 : ( -# 890 "parsing/parser.mly" +# 899 "parsing/parser.mly" (string * char option) -# 37163 "parsing/parser.ml" +# 38355 "parsing/parser.ml" ) = Obj.magic _2 in let _1 : unit = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in @@ -37169,9 +38361,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 4033 "parsing/parser.mly" +# 4137 "parsing/parser.mly" ( unboxed_float _sloc Negative _2 ) -# 37175 "parsing/parser.ml" +# 38367 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -37196,9 +38388,9 @@ module Tables = struct }; } = _menhir_stack in let _2 : ( -# 913 "parsing/parser.mly" +# 922 "parsing/parser.mly" (string * char option) -# 37202 "parsing/parser.ml" +# 38394 "parsing/parser.ml" ) = Obj.magic _2 in let _1 : unit = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in @@ -37209,9 +38401,9 @@ module Tables = struct let _loc__2_ = (_startpos__2_, _endpos__2_) in let _sloc = (_symbolstartpos, _endpos) in -# 4034 "parsing/parser.mly" +# 4138 "parsing/parser.mly" ( unboxed_int _sloc _loc__2_ Positive _2 ) -# 37215 "parsing/parser.ml" +# 38407 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -37236,9 +38428,9 @@ module Tables = struct }; } = _menhir_stack in let _2 : ( -# 890 "parsing/parser.mly" +# 899 "parsing/parser.mly" (string * char option) -# 37242 "parsing/parser.ml" +# 38434 "parsing/parser.ml" ) = Obj.magic _2 in let _1 : unit = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in @@ -37248,9 +38440,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 4035 "parsing/parser.mly" +# 4139 "parsing/parser.mly" ( unboxed_float _sloc Positive _2 ) -# 37254 "parsing/parser.ml" +# 38446 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -37273,9 +38465,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Parsetree.constant) = -# 4023 "parsing/parser.mly" +# 4127 "parsing/parser.mly" ( _1 ) -# 37279 "parsing/parser.ml" +# 38471 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -37300,18 +38492,18 @@ module Tables = struct }; } = _menhir_stack in let _2 : ( -# 912 "parsing/parser.mly" +# 921 "parsing/parser.mly" (string * char option) -# 37306 "parsing/parser.ml" +# 38498 "parsing/parser.ml" ) = Obj.magic _2 in let _1 : unit = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (Parsetree.constant) = -# 4024 "parsing/parser.mly" +# 4128 "parsing/parser.mly" ( let (n, m) = _2 in Pconst_integer("-" ^ n, m) ) -# 37315 "parsing/parser.ml" +# 38507 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -37336,18 +38528,18 @@ module Tables = struct }; } = _menhir_stack in let _2 : ( -# 889 "parsing/parser.mly" +# 898 "parsing/parser.mly" (string * char option) -# 37342 "parsing/parser.ml" +# 38534 "parsing/parser.ml" ) = Obj.magic _2 in let _1 : unit = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (Parsetree.constant) = -# 4025 "parsing/parser.mly" +# 4129 "parsing/parser.mly" ( let (f, m) = _2 in Pconst_float("-" ^ f, m) ) -# 37351 "parsing/parser.ml" +# 38543 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -37372,18 +38564,18 @@ module Tables = struct }; } = _menhir_stack in let _2 : ( -# 912 "parsing/parser.mly" +# 921 "parsing/parser.mly" (string * char option) -# 37378 "parsing/parser.ml" +# 38570 "parsing/parser.ml" ) = Obj.magic _2 in let _1 : unit = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (Parsetree.constant) = -# 4026 "parsing/parser.mly" +# 4130 "parsing/parser.mly" ( let (n, m) = _2 in Pconst_integer (n, m) ) -# 37387 "parsing/parser.ml" +# 38579 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -37408,18 +38600,18 @@ module Tables = struct }; } = _menhir_stack in let _2 : ( -# 889 "parsing/parser.mly" +# 898 "parsing/parser.mly" (string * char option) -# 37414 "parsing/parser.ml" +# 38606 "parsing/parser.ml" ) = Obj.magic _2 in let _1 : unit = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (Parsetree.constant) = -# 4027 "parsing/parser.mly" +# 4131 "parsing/parser.mly" ( let (f, m) = _2 in Pconst_float(f, m) ) -# 37423 "parsing/parser.ml" +# 38615 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -37460,18 +38652,18 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 3265 "parsing/parser.mly" +# 3309 "parsing/parser.mly" ( let fields, closed = _1 in let closed = match closed with Some () -> Open | None -> Closed in fields, closed ) -# 37468 "parsing/parser.ml" +# 38660 "parsing/parser.ml" in -# 3230 "parsing/parser.mly" +# 3274 "parsing/parser.mly" ( let (fields, closed) = _2 in Ppat_record(fields, closed) ) -# 37475 "parsing/parser.ml" +# 38667 "parsing/parser.ml" in let _endpos__1_ = _endpos__3_ in @@ -37479,15 +38671,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1149 "parsing/parser.mly" +# 1158 "parsing/parser.mly" ( mkpat ~loc:_sloc _1 ) -# 37485 "parsing/parser.ml" +# 38677 "parsing/parser.ml" in -# 3244 "parsing/parser.mly" +# 3288 "parsing/parser.mly" ( _1 ) -# 37491 "parsing/parser.ml" +# 38683 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -37528,19 +38720,19 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 3265 "parsing/parser.mly" +# 3309 "parsing/parser.mly" ( let fields, closed = _1 in let closed = match closed with Some () -> Open | None -> Closed in fields, closed ) -# 37536 "parsing/parser.ml" +# 38728 "parsing/parser.ml" in let _loc__3_ = (_startpos__3_, _endpos__3_) in let _loc__1_ = (_startpos__1_, _endpos__1_) in -# 3233 "parsing/parser.mly" +# 3277 "parsing/parser.mly" ( unclosed "{" _loc__1_ "}" _loc__3_ ) -# 37544 "parsing/parser.ml" +# 38736 "parsing/parser.ml" in let _endpos__1_ = _endpos__3_ in @@ -37548,15 +38740,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1149 "parsing/parser.mly" +# 1158 "parsing/parser.mly" ( mkpat ~loc:_sloc _1 ) -# 37554 "parsing/parser.ml" +# 38746 "parsing/parser.ml" in -# 3244 "parsing/parser.mly" +# 3288 "parsing/parser.mly" ( _1 ) -# 37560 "parsing/parser.ml" +# 38752 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -37595,15 +38787,15 @@ module Tables = struct let _v : (Parsetree.pattern) = let _1 = let _1 = let _2 = -# 3259 "parsing/parser.mly" +# 3303 "parsing/parser.mly" ( ps ) -# 37601 "parsing/parser.ml" +# 38793 "parsing/parser.ml" in let _loc__3_ = (_startpos__3_, _endpos__3_) in -# 3235 "parsing/parser.mly" +# 3279 "parsing/parser.mly" ( fst (mktailpat _loc__3_ _2) ) -# 37607 "parsing/parser.ml" +# 38799 "parsing/parser.ml" in let _endpos__1_ = _endpos__3_ in @@ -37611,15 +38803,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1149 "parsing/parser.mly" +# 1158 "parsing/parser.mly" ( mkpat ~loc:_sloc _1 ) -# 37617 "parsing/parser.ml" +# 38809 "parsing/parser.ml" in -# 3244 "parsing/parser.mly" +# 3288 "parsing/parser.mly" ( _1 ) -# 37623 "parsing/parser.ml" +# 38815 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -37658,16 +38850,16 @@ module Tables = struct let _v : (Parsetree.pattern) = let _1 = let _1 = let _2 = -# 3259 "parsing/parser.mly" +# 3303 "parsing/parser.mly" ( ps ) -# 37664 "parsing/parser.ml" +# 38856 "parsing/parser.ml" in let _loc__3_ = (_startpos__3_, _endpos__3_) in let _loc__1_ = (_startpos__1_, _endpos__1_) in -# 3237 "parsing/parser.mly" +# 3281 "parsing/parser.mly" ( unclosed "[" _loc__1_ "]" _loc__3_ ) -# 37671 "parsing/parser.ml" +# 38863 "parsing/parser.ml" in let _endpos__1_ = _endpos__3_ in @@ -37675,15 +38867,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1149 "parsing/parser.mly" +# 1158 "parsing/parser.mly" ( mkpat ~loc:_sloc _1 ) -# 37681 "parsing/parser.ml" +# 38873 "parsing/parser.ml" in -# 3244 "parsing/parser.mly" +# 3288 "parsing/parser.mly" ( _1 ) -# 37687 "parsing/parser.ml" +# 38879 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -37724,30 +38916,30 @@ module Tables = struct let _1 = let _1 = let _2 = -# 3259 "parsing/parser.mly" +# 3303 "parsing/parser.mly" ( ps ) -# 37730 "parsing/parser.ml" +# 38922 "parsing/parser.ml" in -# 2742 "parsing/parser.mly" +# 2763 "parsing/parser.mly" ( Generic_array.Simple.Literal _2 ) -# 37735 "parsing/parser.ml" +# 38927 "parsing/parser.ml" in -# 2766 "parsing/parser.mly" +# 2787 "parsing/parser.mly" ( _1 ) -# 37741 "parsing/parser.ml" +# 38933 "parsing/parser.ml" in -# 3239 "parsing/parser.mly" +# 3283 "parsing/parser.mly" ( Generic_array.Pattern.to_ast "[|" "|]" (fun elts -> Ppat_array elts) _1 ) -# 37751 "parsing/parser.ml" +# 38943 "parsing/parser.ml" in let _endpos__1_ = _endpos__3_ in @@ -37755,15 +38947,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1149 "parsing/parser.mly" +# 1158 "parsing/parser.mly" ( mkpat ~loc:_sloc _1 ) -# 37761 "parsing/parser.ml" +# 38953 "parsing/parser.ml" in -# 3244 "parsing/parser.mly" +# 3288 "parsing/parser.mly" ( _1 ) -# 37767 "parsing/parser.ml" +# 38959 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -37804,32 +38996,32 @@ module Tables = struct let _1 = let _1 = let _2 = -# 3259 "parsing/parser.mly" +# 3303 "parsing/parser.mly" ( ps ) -# 37810 "parsing/parser.ml" +# 39002 "parsing/parser.ml" in let _loc__3_ = (_startpos__3_, _endpos__3_) in let _loc__1_ = (_startpos__1_, _endpos__1_) in -# 2744 "parsing/parser.mly" +# 2765 "parsing/parser.mly" ( Generic_array.Simple.Unclosed(_loc__1_,_loc__3_) ) -# 37817 "parsing/parser.ml" +# 39009 "parsing/parser.ml" in -# 2766 "parsing/parser.mly" +# 2787 "parsing/parser.mly" ( _1 ) -# 37823 "parsing/parser.ml" +# 39015 "parsing/parser.ml" in -# 3239 "parsing/parser.mly" +# 3283 "parsing/parser.mly" ( Generic_array.Pattern.to_ast "[|" "|]" (fun elts -> Ppat_array elts) _1 ) -# 37833 "parsing/parser.ml" +# 39025 "parsing/parser.ml" in let _endpos__1_ = _endpos__3_ in @@ -37837,15 +39029,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1149 "parsing/parser.mly" +# 1158 "parsing/parser.mly" ( mkpat ~loc:_sloc _1 ) -# 37843 "parsing/parser.ml" +# 39035 "parsing/parser.ml" in -# 3244 "parsing/parser.mly" +# 3288 "parsing/parser.mly" ( _1 ) -# 37849 "parsing/parser.ml" +# 39041 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -37878,24 +39070,24 @@ module Tables = struct let _1 = let _1 = let _1 = -# 2746 "parsing/parser.mly" +# 2767 "parsing/parser.mly" ( Generic_array.Simple.Literal [] ) -# 37884 "parsing/parser.ml" +# 39076 "parsing/parser.ml" in -# 2766 "parsing/parser.mly" +# 2787 "parsing/parser.mly" ( _1 ) -# 37889 "parsing/parser.ml" +# 39081 "parsing/parser.ml" in -# 3239 "parsing/parser.mly" +# 3283 "parsing/parser.mly" ( Generic_array.Pattern.to_ast "[|" "|]" (fun elts -> Ppat_array elts) _1 ) -# 37899 "parsing/parser.ml" +# 39091 "parsing/parser.ml" in let _endpos__1_ = _endpos__2_ in @@ -37903,15 +39095,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1149 "parsing/parser.mly" +# 1158 "parsing/parser.mly" ( mkpat ~loc:_sloc _1 ) -# 37909 "parsing/parser.ml" +# 39101 "parsing/parser.ml" in -# 3244 "parsing/parser.mly" +# 3288 "parsing/parser.mly" ( _1 ) -# 37915 "parsing/parser.ml" +# 39107 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -37950,20 +39142,20 @@ module Tables = struct let _v : (Parsetree.pattern) = let _1 = let _1 = let _2 = -# 3259 "parsing/parser.mly" +# 3303 "parsing/parser.mly" ( ps ) -# 37956 "parsing/parser.ml" +# 39148 "parsing/parser.ml" in -# 2742 "parsing/parser.mly" +# 2763 "parsing/parser.mly" ( Generic_array.Simple.Literal _2 ) -# 37961 "parsing/parser.ml" +# 39153 "parsing/parser.ml" in -# 2766 "parsing/parser.mly" +# 2787 "parsing/parser.mly" ( _1 ) -# 37967 "parsing/parser.ml" +# 39159 "parsing/parser.ml" in let _endpos__1_ = _endpos__3_ in @@ -37971,13 +39163,13 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 3246 "parsing/parser.mly" +# 3290 "parsing/parser.mly" ( Generic_array.Pattern.to_ast "[:" ":]" (ppat_iarray _sloc) _1 ) -# 37981 "parsing/parser.ml" +# 39173 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -38016,22 +39208,22 @@ module Tables = struct let _v : (Parsetree.pattern) = let _1 = let _1 = let _2 = -# 3259 "parsing/parser.mly" +# 3303 "parsing/parser.mly" ( ps ) -# 38022 "parsing/parser.ml" +# 39214 "parsing/parser.ml" in let _loc__3_ = (_startpos__3_, _endpos__3_) in let _loc__1_ = (_startpos__1_, _endpos__1_) in -# 2744 "parsing/parser.mly" +# 2765 "parsing/parser.mly" ( Generic_array.Simple.Unclosed(_loc__1_,_loc__3_) ) -# 38029 "parsing/parser.ml" +# 39221 "parsing/parser.ml" in -# 2766 "parsing/parser.mly" +# 2787 "parsing/parser.mly" ( _1 ) -# 38035 "parsing/parser.ml" +# 39227 "parsing/parser.ml" in let _endpos__1_ = _endpos__3_ in @@ -38039,13 +39231,13 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 3246 "parsing/parser.mly" +# 3290 "parsing/parser.mly" ( Generic_array.Pattern.to_ast "[:" ":]" (ppat_iarray _sloc) _1 ) -# 38049 "parsing/parser.ml" +# 39241 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -38076,14 +39268,14 @@ module Tables = struct let _endpos = _endpos__2_ in let _v : (Parsetree.pattern) = let _1 = let _1 = -# 2746 "parsing/parser.mly" +# 2767 "parsing/parser.mly" ( Generic_array.Simple.Literal [] ) -# 38082 "parsing/parser.ml" +# 39274 "parsing/parser.ml" in -# 2766 "parsing/parser.mly" +# 2787 "parsing/parser.mly" ( _1 ) -# 38087 "parsing/parser.ml" +# 39279 "parsing/parser.ml" in let _endpos__1_ = _endpos__2_ in @@ -38091,13 +39283,13 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 3246 "parsing/parser.mly" +# 3290 "parsing/parser.mly" ( Generic_array.Pattern.to_ast "[:" ":]" (ppat_iarray _sloc) _1 ) -# 38101 "parsing/parser.ml" +# 39293 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -38137,9 +39329,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2636 "parsing/parser.mly" +# 2657 "parsing/parser.mly" ( reloc_exp ~loc:_sloc _2 ) -# 38143 "parsing/parser.ml" +# 39335 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -38178,9 +39370,9 @@ module Tables = struct let _v : (Parsetree.expression) = let _loc__3_ = (_startpos__3_, _endpos__3_) in let _loc__1_ = (_startpos__1_, _endpos__1_) in -# 2638 "parsing/parser.mly" +# 2659 "parsing/parser.mly" ( unclosed "(" _loc__1_ ")" _loc__3_ ) -# 38184 "parsing/parser.ml" +# 39376 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -38227,9 +39419,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2640 "parsing/parser.mly" +# 2661 "parsing/parser.mly" ( mkexp_constraint ~loc:_sloc _2 _3 ) -# 38233 "parsing/parser.ml" +# 39425 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -38281,14 +39473,14 @@ module Tables = struct let _endpos = _endpos__5_ in let _v : (Parsetree.expression) = let _1 = let r = -# 2641 "parsing/parser.mly" +# 2662 "parsing/parser.mly" ( None ) -# 38287 "parsing/parser.ml" +# 39479 "parsing/parser.ml" in -# 2524 "parsing/parser.mly" +# 2541 "parsing/parser.mly" ( array, d, Paren, i, r ) -# 38292 "parsing/parser.ml" +# 39484 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos__5_, _startpos_array_) in @@ -38296,9 +39488,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2642 "parsing/parser.mly" +# 2663 "parsing/parser.mly" ( mk_indexop_expr builtin_indexing_operators ~loc:_sloc _1 ) -# 38302 "parsing/parser.ml" +# 39494 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -38350,14 +39542,14 @@ module Tables = struct let _endpos = _endpos__5_ in let _v : (Parsetree.expression) = let _1 = let r = -# 2641 "parsing/parser.mly" +# 2662 "parsing/parser.mly" ( None ) -# 38356 "parsing/parser.ml" +# 39548 "parsing/parser.ml" in -# 2526 "parsing/parser.mly" +# 2543 "parsing/parser.mly" ( array, d, Brace, i, r ) -# 38361 "parsing/parser.ml" +# 39553 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos__5_, _startpos_array_) in @@ -38365,9 +39557,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2642 "parsing/parser.mly" +# 2663 "parsing/parser.mly" ( mk_indexop_expr builtin_indexing_operators ~loc:_sloc _1 ) -# 38371 "parsing/parser.ml" +# 39563 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -38419,14 +39611,14 @@ module Tables = struct let _endpos = _endpos__5_ in let _v : (Parsetree.expression) = let _1 = let r = -# 2641 "parsing/parser.mly" +# 2662 "parsing/parser.mly" ( None ) -# 38425 "parsing/parser.ml" +# 39617 "parsing/parser.ml" in -# 2528 "parsing/parser.mly" +# 2545 "parsing/parser.mly" ( array, d, Bracket, i, r ) -# 38430 "parsing/parser.ml" +# 39622 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos__5_, _startpos_array_) in @@ -38434,9 +39626,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2642 "parsing/parser.mly" +# 2663 "parsing/parser.mly" ( mk_indexop_expr builtin_indexing_operators ~loc:_sloc _1 ) -# 38440 "parsing/parser.ml" +# 39632 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -38482,9 +39674,9 @@ module Tables = struct let es : (Parsetree.expression list) = Obj.magic es in let _3 : unit = Obj.magic _3 in let _2 : ( -# 907 "parsing/parser.mly" +# 916 "parsing/parser.mly" (string) -# 38488 "parsing/parser.ml" +# 39680 "parsing/parser.ml" ) = Obj.magic _2 in let array : (Parsetree.expression) = Obj.magic array in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in @@ -38492,31 +39684,31 @@ module Tables = struct let _endpos = _endpos__5_ in let _v : (Parsetree.expression) = let _1 = let r = -# 2645 "parsing/parser.mly" +# 2666 "parsing/parser.mly" ( None ) -# 38498 "parsing/parser.ml" +# 39690 "parsing/parser.ml" in let i = -# 3086 "parsing/parser.mly" +# 3119 "parsing/parser.mly" ( es ) -# 38503 "parsing/parser.ml" +# 39695 "parsing/parser.ml" in let d = let _1 = # 124 "" ( None ) -# 38509 "parsing/parser.ml" +# 39701 "parsing/parser.ml" in -# 2540 "parsing/parser.mly" +# 2557 "parsing/parser.mly" ( _1, _2 ) -# 38514 "parsing/parser.ml" +# 39706 "parsing/parser.ml" in -# 2524 "parsing/parser.mly" +# 2541 "parsing/parser.mly" ( array, d, Paren, i, r ) -# 38520 "parsing/parser.ml" +# 39712 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos__5_, _startpos_array_) in @@ -38524,9 +39716,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2646 "parsing/parser.mly" +# 2667 "parsing/parser.mly" ( mk_indexop_expr user_indexing_operators ~loc:_sloc _1 ) -# 38530 "parsing/parser.ml" +# 39722 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -38584,9 +39776,9 @@ module Tables = struct let es : (Parsetree.expression list) = Obj.magic es in let _3 : unit = Obj.magic _3 in let _2 : ( -# 907 "parsing/parser.mly" +# 916 "parsing/parser.mly" (string) -# 38590 "parsing/parser.ml" +# 39782 "parsing/parser.ml" ) = Obj.magic _2 in let _2_inlined1 : (Longident.t) = Obj.magic _2_inlined1 in let _1 : unit = Obj.magic _1 in @@ -38596,39 +39788,39 @@ module Tables = struct let _endpos = _endpos__5_ in let _v : (Parsetree.expression) = let _1 = let r = -# 2645 "parsing/parser.mly" +# 2666 "parsing/parser.mly" ( None ) -# 38602 "parsing/parser.ml" +# 39794 "parsing/parser.ml" in let i = -# 3086 "parsing/parser.mly" +# 3119 "parsing/parser.mly" ( es ) -# 38607 "parsing/parser.ml" +# 39799 "parsing/parser.ml" in let d = let _1 = let _2 = _2_inlined1 in let x = -# 2540 "parsing/parser.mly" +# 2557 "parsing/parser.mly" (_2) -# 38615 "parsing/parser.ml" +# 39807 "parsing/parser.ml" in # 126 "" ( Some x ) -# 38620 "parsing/parser.ml" +# 39812 "parsing/parser.ml" in -# 2540 "parsing/parser.mly" +# 2557 "parsing/parser.mly" ( _1, _2 ) -# 38626 "parsing/parser.ml" +# 39818 "parsing/parser.ml" in -# 2524 "parsing/parser.mly" +# 2541 "parsing/parser.mly" ( array, d, Paren, i, r ) -# 38632 "parsing/parser.ml" +# 39824 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos__5_, _startpos_array_) in @@ -38636,9 +39828,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2646 "parsing/parser.mly" +# 2667 "parsing/parser.mly" ( mk_indexop_expr user_indexing_operators ~loc:_sloc _1 ) -# 38642 "parsing/parser.ml" +# 39834 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -38684,9 +39876,9 @@ module Tables = struct let es : (Parsetree.expression list) = Obj.magic es in let _3 : unit = Obj.magic _3 in let _2 : ( -# 907 "parsing/parser.mly" +# 916 "parsing/parser.mly" (string) -# 38690 "parsing/parser.ml" +# 39882 "parsing/parser.ml" ) = Obj.magic _2 in let array : (Parsetree.expression) = Obj.magic array in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in @@ -38694,31 +39886,31 @@ module Tables = struct let _endpos = _endpos__5_ in let _v : (Parsetree.expression) = let _1 = let r = -# 2645 "parsing/parser.mly" +# 2666 "parsing/parser.mly" ( None ) -# 38700 "parsing/parser.ml" +# 39892 "parsing/parser.ml" in let i = -# 3086 "parsing/parser.mly" +# 3119 "parsing/parser.mly" ( es ) -# 38705 "parsing/parser.ml" +# 39897 "parsing/parser.ml" in let d = let _1 = # 124 "" ( None ) -# 38711 "parsing/parser.ml" +# 39903 "parsing/parser.ml" in -# 2540 "parsing/parser.mly" +# 2557 "parsing/parser.mly" ( _1, _2 ) -# 38716 "parsing/parser.ml" +# 39908 "parsing/parser.ml" in -# 2526 "parsing/parser.mly" +# 2543 "parsing/parser.mly" ( array, d, Brace, i, r ) -# 38722 "parsing/parser.ml" +# 39914 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos__5_, _startpos_array_) in @@ -38726,9 +39918,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2646 "parsing/parser.mly" +# 2667 "parsing/parser.mly" ( mk_indexop_expr user_indexing_operators ~loc:_sloc _1 ) -# 38732 "parsing/parser.ml" +# 39924 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -38786,9 +39978,9 @@ module Tables = struct let es : (Parsetree.expression list) = Obj.magic es in let _3 : unit = Obj.magic _3 in let _2 : ( -# 907 "parsing/parser.mly" +# 916 "parsing/parser.mly" (string) -# 38792 "parsing/parser.ml" +# 39984 "parsing/parser.ml" ) = Obj.magic _2 in let _2_inlined1 : (Longident.t) = Obj.magic _2_inlined1 in let _1 : unit = Obj.magic _1 in @@ -38798,39 +39990,39 @@ module Tables = struct let _endpos = _endpos__5_ in let _v : (Parsetree.expression) = let _1 = let r = -# 2645 "parsing/parser.mly" +# 2666 "parsing/parser.mly" ( None ) -# 38804 "parsing/parser.ml" +# 39996 "parsing/parser.ml" in let i = -# 3086 "parsing/parser.mly" +# 3119 "parsing/parser.mly" ( es ) -# 38809 "parsing/parser.ml" +# 40001 "parsing/parser.ml" in let d = let _1 = let _2 = _2_inlined1 in let x = -# 2540 "parsing/parser.mly" +# 2557 "parsing/parser.mly" (_2) -# 38817 "parsing/parser.ml" +# 40009 "parsing/parser.ml" in # 126 "" ( Some x ) -# 38822 "parsing/parser.ml" +# 40014 "parsing/parser.ml" in -# 2540 "parsing/parser.mly" +# 2557 "parsing/parser.mly" ( _1, _2 ) -# 38828 "parsing/parser.ml" +# 40020 "parsing/parser.ml" in -# 2526 "parsing/parser.mly" +# 2543 "parsing/parser.mly" ( array, d, Brace, i, r ) -# 38834 "parsing/parser.ml" +# 40026 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos__5_, _startpos_array_) in @@ -38838,9 +40030,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2646 "parsing/parser.mly" +# 2667 "parsing/parser.mly" ( mk_indexop_expr user_indexing_operators ~loc:_sloc _1 ) -# 38844 "parsing/parser.ml" +# 40036 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -38886,9 +40078,9 @@ module Tables = struct let es : (Parsetree.expression list) = Obj.magic es in let _3 : unit = Obj.magic _3 in let _2 : ( -# 907 "parsing/parser.mly" +# 916 "parsing/parser.mly" (string) -# 38892 "parsing/parser.ml" +# 40084 "parsing/parser.ml" ) = Obj.magic _2 in let array : (Parsetree.expression) = Obj.magic array in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in @@ -38896,31 +40088,31 @@ module Tables = struct let _endpos = _endpos__5_ in let _v : (Parsetree.expression) = let _1 = let r = -# 2645 "parsing/parser.mly" +# 2666 "parsing/parser.mly" ( None ) -# 38902 "parsing/parser.ml" +# 40094 "parsing/parser.ml" in let i = -# 3086 "parsing/parser.mly" +# 3119 "parsing/parser.mly" ( es ) -# 38907 "parsing/parser.ml" +# 40099 "parsing/parser.ml" in let d = let _1 = # 124 "" ( None ) -# 38913 "parsing/parser.ml" +# 40105 "parsing/parser.ml" in -# 2540 "parsing/parser.mly" +# 2557 "parsing/parser.mly" ( _1, _2 ) -# 38918 "parsing/parser.ml" +# 40110 "parsing/parser.ml" in -# 2528 "parsing/parser.mly" +# 2545 "parsing/parser.mly" ( array, d, Bracket, i, r ) -# 38924 "parsing/parser.ml" +# 40116 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos__5_, _startpos_array_) in @@ -38928,9 +40120,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2646 "parsing/parser.mly" +# 2667 "parsing/parser.mly" ( mk_indexop_expr user_indexing_operators ~loc:_sloc _1 ) -# 38934 "parsing/parser.ml" +# 40126 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -38988,9 +40180,9 @@ module Tables = struct let es : (Parsetree.expression list) = Obj.magic es in let _3 : unit = Obj.magic _3 in let _2 : ( -# 907 "parsing/parser.mly" +# 916 "parsing/parser.mly" (string) -# 38994 "parsing/parser.ml" +# 40186 "parsing/parser.ml" ) = Obj.magic _2 in let _2_inlined1 : (Longident.t) = Obj.magic _2_inlined1 in let _1 : unit = Obj.magic _1 in @@ -39000,39 +40192,39 @@ module Tables = struct let _endpos = _endpos__5_ in let _v : (Parsetree.expression) = let _1 = let r = -# 2645 "parsing/parser.mly" +# 2666 "parsing/parser.mly" ( None ) -# 39006 "parsing/parser.ml" +# 40198 "parsing/parser.ml" in let i = -# 3086 "parsing/parser.mly" +# 3119 "parsing/parser.mly" ( es ) -# 39011 "parsing/parser.ml" +# 40203 "parsing/parser.ml" in let d = let _1 = let _2 = _2_inlined1 in let x = -# 2540 "parsing/parser.mly" +# 2557 "parsing/parser.mly" (_2) -# 39019 "parsing/parser.ml" +# 40211 "parsing/parser.ml" in # 126 "" ( Some x ) -# 39024 "parsing/parser.ml" +# 40216 "parsing/parser.ml" in -# 2540 "parsing/parser.mly" +# 2557 "parsing/parser.mly" ( _1, _2 ) -# 39030 "parsing/parser.ml" +# 40222 "parsing/parser.ml" in -# 2528 "parsing/parser.mly" +# 2545 "parsing/parser.mly" ( array, d, Bracket, i, r ) -# 39036 "parsing/parser.ml" +# 40228 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos__5_, _startpos_array_) in @@ -39040,9 +40232,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2646 "parsing/parser.mly" +# 2667 "parsing/parser.mly" ( mk_indexop_expr user_indexing_operators ~loc:_sloc _1 ) -# 39046 "parsing/parser.ml" +# 40238 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -39096,15 +40288,15 @@ module Tables = struct let _loc__p_ = (_startpos__p_, _endpos__p_) in let _loc__e_ = (_startpos__e_, _endpos__e_) in -# 2533 "parsing/parser.mly" +# 2550 "parsing/parser.mly" ( indexop_unclosed_error _loc__p_ Paren _loc__e_ ) -# 39102 "parsing/parser.ml" +# 40294 "parsing/parser.ml" in -# 2647 "parsing/parser.mly" +# 2668 "parsing/parser.mly" ( _1 ) -# 39108 "parsing/parser.ml" +# 40300 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -39158,15 +40350,15 @@ module Tables = struct let _loc__p_ = (_startpos__p_, _endpos__p_) in let _loc__e_ = (_startpos__e_, _endpos__e_) in -# 2535 "parsing/parser.mly" +# 2552 "parsing/parser.mly" ( indexop_unclosed_error _loc__p_ Brace _loc__e_ ) -# 39164 "parsing/parser.ml" +# 40356 "parsing/parser.ml" in -# 2647 "parsing/parser.mly" +# 2668 "parsing/parser.mly" ( _1 ) -# 39170 "parsing/parser.ml" +# 40362 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -39220,15 +40412,15 @@ module Tables = struct let _loc__p_ = (_startpos__p_, _endpos__p_) in let _loc__e_ = (_startpos__e_, _endpos__e_) in -# 2537 "parsing/parser.mly" +# 2554 "parsing/parser.mly" ( indexop_unclosed_error _loc__p_ Bracket _loc__e_ ) -# 39226 "parsing/parser.ml" +# 40418 "parsing/parser.ml" in -# 2647 "parsing/parser.mly" +# 2668 "parsing/parser.mly" ( _1 ) -# 39232 "parsing/parser.ml" +# 40424 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -39274,9 +40466,9 @@ module Tables = struct let es : (Parsetree.expression list) = Obj.magic es in let _p : unit = Obj.magic _p in let _2 : ( -# 907 "parsing/parser.mly" +# 916 "parsing/parser.mly" (string) -# 39280 "parsing/parser.ml" +# 40472 "parsing/parser.ml" ) = Obj.magic _2 in let _1 : (Parsetree.expression) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in @@ -39284,34 +40476,34 @@ module Tables = struct let _endpos = _endpos__e_ in let _v : (Parsetree.expression) = let _1 = let _4 = -# 3086 "parsing/parser.mly" +# 3119 "parsing/parser.mly" ( es ) -# 39290 "parsing/parser.ml" +# 40482 "parsing/parser.ml" in let _2 = let _1 = # 124 "" ( None ) -# 39296 "parsing/parser.ml" +# 40488 "parsing/parser.ml" in -# 2540 "parsing/parser.mly" +# 2557 "parsing/parser.mly" ( _1, _2 ) -# 39301 "parsing/parser.ml" +# 40493 "parsing/parser.ml" in let _loc__p_ = (_startpos__p_, _endpos__p_) in let _loc__e_ = (_startpos__e_, _endpos__e_) in -# 2533 "parsing/parser.mly" +# 2550 "parsing/parser.mly" ( indexop_unclosed_error _loc__p_ Paren _loc__e_ ) -# 39309 "parsing/parser.ml" +# 40501 "parsing/parser.ml" in -# 2648 "parsing/parser.mly" +# 2669 "parsing/parser.mly" ( _1 ) -# 39315 "parsing/parser.ml" +# 40507 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -39369,9 +40561,9 @@ module Tables = struct let es : (Parsetree.expression list) = Obj.magic es in let _p : unit = Obj.magic _p in let _2 : ( -# 907 "parsing/parser.mly" +# 916 "parsing/parser.mly" (string) -# 39375 "parsing/parser.ml" +# 40567 "parsing/parser.ml" ) = Obj.magic _2 in let _2_inlined1 : (Longident.t) = Obj.magic _2_inlined1 in let _1_inlined1 : unit = Obj.magic _1_inlined1 in @@ -39381,42 +40573,42 @@ module Tables = struct let _endpos = _endpos__e_ in let _v : (Parsetree.expression) = let _1 = let _4 = -# 3086 "parsing/parser.mly" +# 3119 "parsing/parser.mly" ( es ) -# 39387 "parsing/parser.ml" +# 40579 "parsing/parser.ml" in let _2 = let _1 = let _2 = _2_inlined1 in let x = -# 2540 "parsing/parser.mly" +# 2557 "parsing/parser.mly" (_2) -# 39395 "parsing/parser.ml" +# 40587 "parsing/parser.ml" in # 126 "" ( Some x ) -# 39400 "parsing/parser.ml" +# 40592 "parsing/parser.ml" in -# 2540 "parsing/parser.mly" +# 2557 "parsing/parser.mly" ( _1, _2 ) -# 39406 "parsing/parser.ml" +# 40598 "parsing/parser.ml" in let _loc__p_ = (_startpos__p_, _endpos__p_) in let _loc__e_ = (_startpos__e_, _endpos__e_) in -# 2533 "parsing/parser.mly" +# 2550 "parsing/parser.mly" ( indexop_unclosed_error _loc__p_ Paren _loc__e_ ) -# 39414 "parsing/parser.ml" +# 40606 "parsing/parser.ml" in -# 2648 "parsing/parser.mly" +# 2669 "parsing/parser.mly" ( _1 ) -# 39420 "parsing/parser.ml" +# 40612 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -39462,9 +40654,9 @@ module Tables = struct let es : (Parsetree.expression list) = Obj.magic es in let _p : unit = Obj.magic _p in let _2 : ( -# 907 "parsing/parser.mly" +# 916 "parsing/parser.mly" (string) -# 39468 "parsing/parser.ml" +# 40660 "parsing/parser.ml" ) = Obj.magic _2 in let _1 : (Parsetree.expression) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in @@ -39472,34 +40664,34 @@ module Tables = struct let _endpos = _endpos__e_ in let _v : (Parsetree.expression) = let _1 = let _4 = -# 3086 "parsing/parser.mly" +# 3119 "parsing/parser.mly" ( es ) -# 39478 "parsing/parser.ml" +# 40670 "parsing/parser.ml" in let _2 = let _1 = # 124 "" ( None ) -# 39484 "parsing/parser.ml" +# 40676 "parsing/parser.ml" in -# 2540 "parsing/parser.mly" +# 2557 "parsing/parser.mly" ( _1, _2 ) -# 39489 "parsing/parser.ml" +# 40681 "parsing/parser.ml" in let _loc__p_ = (_startpos__p_, _endpos__p_) in let _loc__e_ = (_startpos__e_, _endpos__e_) in -# 2535 "parsing/parser.mly" +# 2552 "parsing/parser.mly" ( indexop_unclosed_error _loc__p_ Brace _loc__e_ ) -# 39497 "parsing/parser.ml" +# 40689 "parsing/parser.ml" in -# 2648 "parsing/parser.mly" +# 2669 "parsing/parser.mly" ( _1 ) -# 39503 "parsing/parser.ml" +# 40695 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -39557,9 +40749,9 @@ module Tables = struct let es : (Parsetree.expression list) = Obj.magic es in let _p : unit = Obj.magic _p in let _2 : ( -# 907 "parsing/parser.mly" +# 916 "parsing/parser.mly" (string) -# 39563 "parsing/parser.ml" +# 40755 "parsing/parser.ml" ) = Obj.magic _2 in let _2_inlined1 : (Longident.t) = Obj.magic _2_inlined1 in let _1_inlined1 : unit = Obj.magic _1_inlined1 in @@ -39569,42 +40761,42 @@ module Tables = struct let _endpos = _endpos__e_ in let _v : (Parsetree.expression) = let _1 = let _4 = -# 3086 "parsing/parser.mly" +# 3119 "parsing/parser.mly" ( es ) -# 39575 "parsing/parser.ml" +# 40767 "parsing/parser.ml" in let _2 = let _1 = let _2 = _2_inlined1 in let x = -# 2540 "parsing/parser.mly" +# 2557 "parsing/parser.mly" (_2) -# 39583 "parsing/parser.ml" +# 40775 "parsing/parser.ml" in # 126 "" ( Some x ) -# 39588 "parsing/parser.ml" +# 40780 "parsing/parser.ml" in -# 2540 "parsing/parser.mly" +# 2557 "parsing/parser.mly" ( _1, _2 ) -# 39594 "parsing/parser.ml" +# 40786 "parsing/parser.ml" in let _loc__p_ = (_startpos__p_, _endpos__p_) in let _loc__e_ = (_startpos__e_, _endpos__e_) in -# 2535 "parsing/parser.mly" +# 2552 "parsing/parser.mly" ( indexop_unclosed_error _loc__p_ Brace _loc__e_ ) -# 39602 "parsing/parser.ml" +# 40794 "parsing/parser.ml" in -# 2648 "parsing/parser.mly" +# 2669 "parsing/parser.mly" ( _1 ) -# 39608 "parsing/parser.ml" +# 40800 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -39650,9 +40842,9 @@ module Tables = struct let es : (Parsetree.expression list) = Obj.magic es in let _p : unit = Obj.magic _p in let _2 : ( -# 907 "parsing/parser.mly" +# 916 "parsing/parser.mly" (string) -# 39656 "parsing/parser.ml" +# 40848 "parsing/parser.ml" ) = Obj.magic _2 in let _1 : (Parsetree.expression) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in @@ -39660,34 +40852,34 @@ module Tables = struct let _endpos = _endpos__e_ in let _v : (Parsetree.expression) = let _1 = let _4 = -# 3086 "parsing/parser.mly" +# 3119 "parsing/parser.mly" ( es ) -# 39666 "parsing/parser.ml" +# 40858 "parsing/parser.ml" in let _2 = let _1 = # 124 "" ( None ) -# 39672 "parsing/parser.ml" +# 40864 "parsing/parser.ml" in -# 2540 "parsing/parser.mly" +# 2557 "parsing/parser.mly" ( _1, _2 ) -# 39677 "parsing/parser.ml" +# 40869 "parsing/parser.ml" in let _loc__p_ = (_startpos__p_, _endpos__p_) in let _loc__e_ = (_startpos__e_, _endpos__e_) in -# 2537 "parsing/parser.mly" +# 2554 "parsing/parser.mly" ( indexop_unclosed_error _loc__p_ Bracket _loc__e_ ) -# 39685 "parsing/parser.ml" +# 40877 "parsing/parser.ml" in -# 2648 "parsing/parser.mly" +# 2669 "parsing/parser.mly" ( _1 ) -# 39691 "parsing/parser.ml" +# 40883 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -39745,9 +40937,9 @@ module Tables = struct let es : (Parsetree.expression list) = Obj.magic es in let _p : unit = Obj.magic _p in let _2 : ( -# 907 "parsing/parser.mly" +# 916 "parsing/parser.mly" (string) -# 39751 "parsing/parser.ml" +# 40943 "parsing/parser.ml" ) = Obj.magic _2 in let _2_inlined1 : (Longident.t) = Obj.magic _2_inlined1 in let _1_inlined1 : unit = Obj.magic _1_inlined1 in @@ -39757,42 +40949,42 @@ module Tables = struct let _endpos = _endpos__e_ in let _v : (Parsetree.expression) = let _1 = let _4 = -# 3086 "parsing/parser.mly" +# 3119 "parsing/parser.mly" ( es ) -# 39763 "parsing/parser.ml" +# 40955 "parsing/parser.ml" in let _2 = let _1 = let _2 = _2_inlined1 in let x = -# 2540 "parsing/parser.mly" +# 2557 "parsing/parser.mly" (_2) -# 39771 "parsing/parser.ml" +# 40963 "parsing/parser.ml" in # 126 "" ( Some x ) -# 39776 "parsing/parser.ml" +# 40968 "parsing/parser.ml" in -# 2540 "parsing/parser.mly" +# 2557 "parsing/parser.mly" ( _1, _2 ) -# 39782 "parsing/parser.ml" +# 40974 "parsing/parser.ml" in let _loc__p_ = (_startpos__p_, _endpos__p_) in let _loc__e_ = (_startpos__e_, _endpos__e_) in -# 2537 "parsing/parser.mly" +# 2554 "parsing/parser.mly" ( indexop_unclosed_error _loc__p_ Bracket _loc__e_ ) -# 39790 "parsing/parser.ml" +# 40982 "parsing/parser.ml" in -# 2648 "parsing/parser.mly" +# 2669 "parsing/parser.mly" ( _1 ) -# 39796 "parsing/parser.ml" +# 40988 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -39846,15 +41038,15 @@ module Tables = struct let attrs = let _1 = _1_inlined1 in -# 4371 "parsing/parser.mly" +# 4476 "parsing/parser.mly" ( _1 ) -# 39852 "parsing/parser.ml" +# 41044 "parsing/parser.ml" in -# 2672 "parsing/parser.mly" +# 2693 "parsing/parser.mly" ( e.pexp_desc, (ext, attrs @ e.pexp_attributes) ) -# 39858 "parsing/parser.ml" +# 41050 "parsing/parser.ml" in let _endpos__1_ = _endpos__5_ in @@ -39862,10 +41054,10 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2650 "parsing/parser.mly" +# 2671 "parsing/parser.mly" ( let desc, attrs = _1 in mkexp_attrs ~loc:_sloc desc attrs ) -# 39869 "parsing/parser.ml" +# 41061 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -39914,24 +41106,24 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4371 "parsing/parser.mly" +# 4476 "parsing/parser.mly" ( _1 ) -# 39920 "parsing/parser.ml" +# 41112 "parsing/parser.ml" in -# 4384 "parsing/parser.mly" +# 4489 "parsing/parser.mly" ( _1, _2 ) -# 39926 "parsing/parser.ml" +# 41118 "parsing/parser.ml" in let _endpos = _endpos__3_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2674 "parsing/parser.mly" +# 2695 "parsing/parser.mly" ( Pexp_construct (mkloc (Lident "()") (make_loc _sloc), None), _2 ) -# 39935 "parsing/parser.ml" +# 41127 "parsing/parser.ml" in let _endpos__1_ = _endpos__3_ in @@ -39939,10 +41131,10 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2650 "parsing/parser.mly" +# 2671 "parsing/parser.mly" ( let desc, attrs = _1 in mkexp_attrs ~loc:_sloc desc attrs ) -# 39946 "parsing/parser.ml" +# 41138 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -39998,23 +41190,23 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4371 "parsing/parser.mly" +# 4476 "parsing/parser.mly" ( _1 ) -# 40004 "parsing/parser.ml" +# 41196 "parsing/parser.ml" in -# 4384 "parsing/parser.mly" +# 4489 "parsing/parser.mly" ( _1, _2 ) -# 40010 "parsing/parser.ml" +# 41202 "parsing/parser.ml" in let _loc__4_ = (_startpos__4_, _endpos__4_) in let _loc__1_ = (_startpos__1_, _endpos__1_) in -# 2676 "parsing/parser.mly" +# 2697 "parsing/parser.mly" ( unclosed "begin" _loc__1_ "end" _loc__4_ ) -# 40018 "parsing/parser.ml" +# 41210 "parsing/parser.ml" in let _endpos__1_ = _endpos__4_ in @@ -40022,10 +41214,10 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2650 "parsing/parser.mly" +# 2671 "parsing/parser.mly" ( let desc, attrs = _1 in mkexp_attrs ~loc:_sloc desc attrs ) -# 40029 "parsing/parser.ml" +# 41221 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -40075,9 +41267,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1114 "parsing/parser.mly" +# 1123 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 40081 "parsing/parser.ml" +# 41273 "parsing/parser.ml" in let _2 = @@ -40085,21 +41277,21 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4371 "parsing/parser.mly" +# 4476 "parsing/parser.mly" ( _1 ) -# 40091 "parsing/parser.ml" +# 41283 "parsing/parser.ml" in -# 4384 "parsing/parser.mly" +# 4489 "parsing/parser.mly" ( _1, _2 ) -# 40097 "parsing/parser.ml" +# 41289 "parsing/parser.ml" in -# 2678 "parsing/parser.mly" +# 2699 "parsing/parser.mly" ( Pexp_new(_3), _2 ) -# 40103 "parsing/parser.ml" +# 41295 "parsing/parser.ml" in let _endpos__1_ = _endpos__1_inlined3_ in @@ -40107,10 +41299,10 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2650 "parsing/parser.mly" +# 2671 "parsing/parser.mly" ( let desc, attrs = _1 in mkexp_attrs ~loc:_sloc desc attrs ) -# 40114 "parsing/parser.ml" +# 41306 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -40173,21 +41365,21 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4371 "parsing/parser.mly" +# 4476 "parsing/parser.mly" ( _1 ) -# 40179 "parsing/parser.ml" +# 41371 "parsing/parser.ml" in -# 4384 "parsing/parser.mly" +# 4489 "parsing/parser.mly" ( _1, _2 ) -# 40185 "parsing/parser.ml" +# 41377 "parsing/parser.ml" in -# 2680 "parsing/parser.mly" +# 2701 "parsing/parser.mly" ( Pexp_pack _4, _3 ) -# 40191 "parsing/parser.ml" +# 41383 "parsing/parser.ml" in let _endpos__1_ = _endpos__5_ in @@ -40195,10 +41387,10 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2650 "parsing/parser.mly" +# 2671 "parsing/parser.mly" ( let desc, attrs = _1 in mkexp_attrs ~loc:_sloc desc attrs ) -# 40202 "parsing/parser.ml" +# 41394 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -40276,11 +41468,11 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 3928 "parsing/parser.mly" +# 4032 "parsing/parser.mly" ( let (lid, cstrs, attrs) = package_type_of_module_type _1 in let descr = Ptyp_package (lid, cstrs) in mktyp ~loc:_sloc ~attrs descr ) -# 40284 "parsing/parser.ml" +# 41476 "parsing/parser.ml" in let _3 = @@ -40288,24 +41480,24 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4371 "parsing/parser.mly" +# 4476 "parsing/parser.mly" ( _1 ) -# 40294 "parsing/parser.ml" +# 41486 "parsing/parser.ml" in -# 4384 "parsing/parser.mly" +# 4489 "parsing/parser.mly" ( _1, _2 ) -# 40300 "parsing/parser.ml" +# 41492 "parsing/parser.ml" in let _endpos = _endpos__7_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2682 "parsing/parser.mly" +# 2703 "parsing/parser.mly" ( Pexp_constraint (ghexp ~loc:_sloc (Pexp_pack _4), _6), _3 ) -# 40309 "parsing/parser.ml" +# 41501 "parsing/parser.ml" in let _endpos__1_ = _endpos__7_ in @@ -40313,10 +41505,10 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2650 "parsing/parser.mly" +# 2671 "parsing/parser.mly" ( let desc, attrs = _1 in mkexp_attrs ~loc:_sloc desc attrs ) -# 40320 "parsing/parser.ml" +# 41512 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -40386,23 +41578,23 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4371 "parsing/parser.mly" +# 4476 "parsing/parser.mly" ( _1 ) -# 40392 "parsing/parser.ml" +# 41584 "parsing/parser.ml" in -# 4384 "parsing/parser.mly" +# 4489 "parsing/parser.mly" ( _1, _2 ) -# 40398 "parsing/parser.ml" +# 41590 "parsing/parser.ml" in let _loc__6_ = (_startpos__6_, _endpos__6_) in let _loc__1_ = (_startpos__1_, _endpos__1_) in -# 2684 "parsing/parser.mly" +# 2705 "parsing/parser.mly" ( unclosed "(" _loc__1_ ")" _loc__6_ ) -# 40406 "parsing/parser.ml" +# 41598 "parsing/parser.ml" in let _endpos__1_ = _endpos__6_ in @@ -40410,10 +41602,10 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2650 "parsing/parser.mly" +# 2671 "parsing/parser.mly" ( let desc, attrs = _1 in mkexp_attrs ~loc:_sloc desc attrs ) -# 40417 "parsing/parser.ml" +# 41609 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -40478,27 +41670,27 @@ module Tables = struct let _1 = # 260 "" ( List.flatten xss ) -# 40482 "parsing/parser.ml" +# 41674 "parsing/parser.ml" in -# 2183 "parsing/parser.mly" +# 2195 "parsing/parser.mly" ( _1 ) -# 40487 "parsing/parser.ml" +# 41679 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_xss_, _startpos_xss_) in let _endpos = _endpos__1_ in let _startpos = _startpos__1_ in -# 1108 "parsing/parser.mly" +# 1117 "parsing/parser.mly" ( extra_cstr _startpos _endpos _1 ) -# 40496 "parsing/parser.ml" +# 41688 "parsing/parser.ml" in -# 2170 "parsing/parser.mly" +# 2182 "parsing/parser.mly" ( Cstr.mk _1 _2 ) -# 40502 "parsing/parser.ml" +# 41694 "parsing/parser.ml" in let _2 = @@ -40506,21 +41698,21 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4371 "parsing/parser.mly" +# 4476 "parsing/parser.mly" ( _1 ) -# 40512 "parsing/parser.ml" +# 41704 "parsing/parser.ml" in -# 4384 "parsing/parser.mly" +# 4489 "parsing/parser.mly" ( _1, _2 ) -# 40518 "parsing/parser.ml" +# 41710 "parsing/parser.ml" in -# 2686 "parsing/parser.mly" +# 2707 "parsing/parser.mly" ( Pexp_object _3, _2 ) -# 40524 "parsing/parser.ml" +# 41716 "parsing/parser.ml" in let _endpos__1_ = _endpos__4_ in @@ -40528,10 +41720,10 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2650 "parsing/parser.mly" +# 2671 "parsing/parser.mly" ( let desc, attrs = _1 in mkexp_attrs ~loc:_sloc desc attrs ) -# 40535 "parsing/parser.ml" +# 41727 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -40596,27 +41788,27 @@ module Tables = struct let _1 = # 260 "" ( List.flatten xss ) -# 40600 "parsing/parser.ml" +# 41792 "parsing/parser.ml" in -# 2183 "parsing/parser.mly" +# 2195 "parsing/parser.mly" ( _1 ) -# 40605 "parsing/parser.ml" +# 41797 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_xss_, _startpos_xss_) in let _endpos = _endpos__1_ in let _startpos = _startpos__1_ in -# 1108 "parsing/parser.mly" +# 1117 "parsing/parser.mly" ( extra_cstr _startpos _endpos _1 ) -# 40614 "parsing/parser.ml" +# 41806 "parsing/parser.ml" in -# 2170 "parsing/parser.mly" +# 2182 "parsing/parser.mly" ( Cstr.mk _1 _2 ) -# 40620 "parsing/parser.ml" +# 41812 "parsing/parser.ml" in let _2 = @@ -40624,23 +41816,23 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4371 "parsing/parser.mly" +# 4476 "parsing/parser.mly" ( _1 ) -# 40630 "parsing/parser.ml" +# 41822 "parsing/parser.ml" in -# 4384 "parsing/parser.mly" +# 4489 "parsing/parser.mly" ( _1, _2 ) -# 40636 "parsing/parser.ml" +# 41828 "parsing/parser.ml" in let _loc__4_ = (_startpos__4_, _endpos__4_) in let _loc__1_ = (_startpos__1_, _endpos__1_) in -# 2688 "parsing/parser.mly" +# 2709 "parsing/parser.mly" ( unclosed "object" _loc__1_ "end" _loc__4_ ) -# 40644 "parsing/parser.ml" +# 41836 "parsing/parser.ml" in let _endpos__1_ = _endpos__4_ in @@ -40648,10 +41840,10 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2650 "parsing/parser.mly" +# 2671 "parsing/parser.mly" ( let desc, attrs = _1 in mkexp_attrs ~loc:_sloc desc attrs ) -# 40655 "parsing/parser.ml" +# 41847 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -40680,30 +41872,30 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1114 "parsing/parser.mly" +# 1123 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 40686 "parsing/parser.ml" +# 41878 "parsing/parser.ml" in -# 2776 "parsing/parser.mly" +# 2797 "parsing/parser.mly" ( Pexp_ident (_1) ) -# 40692 "parsing/parser.ml" +# 41884 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1147 "parsing/parser.mly" +# 1156 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) -# 40701 "parsing/parser.ml" +# 41893 "parsing/parser.ml" in -# 2653 "parsing/parser.mly" +# 2674 "parsing/parser.mly" ( _1 ) -# 40707 "parsing/parser.ml" +# 41899 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -40732,30 +41924,30 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1114 "parsing/parser.mly" +# 1123 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 40738 "parsing/parser.ml" +# 41930 "parsing/parser.ml" in -# 2778 "parsing/parser.mly" +# 2799 "parsing/parser.mly" ( Pexp_construct(_1, None) ) -# 40744 "parsing/parser.ml" +# 41936 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1147 "parsing/parser.mly" +# 1156 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) -# 40753 "parsing/parser.ml" +# 41945 "parsing/parser.ml" in -# 2653 "parsing/parser.mly" +# 2674 "parsing/parser.mly" ( _1 ) -# 40759 "parsing/parser.ml" +# 41951 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -40779,23 +41971,23 @@ module Tables = struct let _endpos = _endpos__1_ in let _v : (Parsetree.expression) = let _1 = let _1 = -# 2780 "parsing/parser.mly" +# 2801 "parsing/parser.mly" ( Pexp_variant(_1, None) ) -# 40785 "parsing/parser.ml" +# 41977 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1147 "parsing/parser.mly" +# 1156 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) -# 40793 "parsing/parser.ml" +# 41985 "parsing/parser.ml" in -# 2653 "parsing/parser.mly" +# 2674 "parsing/parser.mly" ( _1 ) -# 40799 "parsing/parser.ml" +# 41991 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -40821,9 +42013,9 @@ module Tables = struct } = _menhir_stack in let _2 : (Parsetree.expression) = Obj.magic _2 in let _1 : ( -# 953 "parsing/parser.mly" +# 962 "parsing/parser.mly" (string) -# 40827 "parsing/parser.ml" +# 42019 "parsing/parser.ml" ) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in @@ -40835,15 +42027,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1141 "parsing/parser.mly" +# 1150 "parsing/parser.mly" ( mkoperator ~loc:_sloc _1 ) -# 40841 "parsing/parser.ml" +# 42033 "parsing/parser.ml" in -# 2782 "parsing/parser.mly" +# 2803 "parsing/parser.mly" ( Pexp_apply(_1, [Nolabel,_2]) ) -# 40847 "parsing/parser.ml" +# 42039 "parsing/parser.ml" in let _endpos__1_ = _endpos__2_ in @@ -40851,15 +42043,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1147 "parsing/parser.mly" +# 1156 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) -# 40857 "parsing/parser.ml" +# 42049 "parsing/parser.ml" in -# 2653 "parsing/parser.mly" +# 2674 "parsing/parser.mly" ( _1 ) -# 40863 "parsing/parser.ml" +# 42055 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -40892,23 +42084,23 @@ module Tables = struct let _1 = let _1 = let _1 = -# 2783 "parsing/parser.mly" +# 2804 "parsing/parser.mly" ("!") -# 40898 "parsing/parser.ml" +# 42090 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1141 "parsing/parser.mly" +# 1150 "parsing/parser.mly" ( mkoperator ~loc:_sloc _1 ) -# 40906 "parsing/parser.ml" +# 42098 "parsing/parser.ml" in -# 2784 "parsing/parser.mly" +# 2805 "parsing/parser.mly" ( Pexp_apply(_1, [Nolabel,_2]) ) -# 40912 "parsing/parser.ml" +# 42104 "parsing/parser.ml" in let _endpos__1_ = _endpos__2_ in @@ -40916,15 +42108,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1147 "parsing/parser.mly" +# 1156 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) -# 40922 "parsing/parser.ml" +# 42114 "parsing/parser.ml" in -# 2653 "parsing/parser.mly" +# 2674 "parsing/parser.mly" ( _1 ) -# 40928 "parsing/parser.ml" +# 42120 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -40963,14 +42155,14 @@ module Tables = struct let _v : (Parsetree.expression) = let _1 = let _1 = let _2 = -# 3069 "parsing/parser.mly" +# 3102 "parsing/parser.mly" ( xs ) -# 40969 "parsing/parser.ml" +# 42161 "parsing/parser.ml" in -# 2786 "parsing/parser.mly" +# 2807 "parsing/parser.mly" ( Pexp_override _2 ) -# 40974 "parsing/parser.ml" +# 42166 "parsing/parser.ml" in let _endpos__1_ = _endpos__3_ in @@ -40978,15 +42170,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1147 "parsing/parser.mly" +# 1156 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) -# 40984 "parsing/parser.ml" +# 42176 "parsing/parser.ml" in -# 2653 "parsing/parser.mly" +# 2674 "parsing/parser.mly" ( _1 ) -# 40990 "parsing/parser.ml" +# 42182 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -41025,16 +42217,16 @@ module Tables = struct let _v : (Parsetree.expression) = let _1 = let _1 = let _2 = -# 3069 "parsing/parser.mly" +# 3102 "parsing/parser.mly" ( xs ) -# 41031 "parsing/parser.ml" +# 42223 "parsing/parser.ml" in let _loc__3_ = (_startpos__3_, _endpos__3_) in let _loc__1_ = (_startpos__1_, _endpos__1_) in -# 2788 "parsing/parser.mly" +# 2809 "parsing/parser.mly" ( unclosed "{<" _loc__1_ ">}" _loc__3_ ) -# 41038 "parsing/parser.ml" +# 42230 "parsing/parser.ml" in let _endpos__1_ = _endpos__3_ in @@ -41042,15 +42234,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1147 "parsing/parser.mly" +# 1156 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) -# 41048 "parsing/parser.ml" +# 42240 "parsing/parser.ml" in -# 2653 "parsing/parser.mly" +# 2674 "parsing/parser.mly" ( _1 ) -# 41054 "parsing/parser.ml" +# 42246 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -41081,24 +42273,24 @@ module Tables = struct let _endpos = _endpos__2_ in let _v : (Parsetree.expression) = let _1 = let _1 = -# 2790 "parsing/parser.mly" +# 2811 "parsing/parser.mly" ( Pexp_override [] ) -# 41087 "parsing/parser.ml" +# 42279 "parsing/parser.ml" in let _endpos__1_ = _endpos__2_ in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1147 "parsing/parser.mly" +# 1156 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) -# 41096 "parsing/parser.ml" +# 42288 "parsing/parser.ml" in -# 2653 "parsing/parser.mly" +# 2674 "parsing/parser.mly" ( _1 ) -# 41102 "parsing/parser.ml" +# 42294 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -41142,15 +42334,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1114 "parsing/parser.mly" +# 1123 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 41148 "parsing/parser.ml" +# 42340 "parsing/parser.ml" in -# 2792 "parsing/parser.mly" +# 2813 "parsing/parser.mly" ( Pexp_field(_1, _3) ) -# 41154 "parsing/parser.ml" +# 42346 "parsing/parser.ml" in let _endpos__1_ = _endpos__1_inlined1_ in @@ -41158,15 +42350,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1147 "parsing/parser.mly" +# 1156 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) -# 41164 "parsing/parser.ml" +# 42356 "parsing/parser.ml" in -# 2653 "parsing/parser.mly" +# 2674 "parsing/parser.mly" ( _1 ) -# 41170 "parsing/parser.ml" +# 42362 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -41224,24 +42416,24 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1114 "parsing/parser.mly" +# 1123 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 41230 "parsing/parser.ml" +# 42422 "parsing/parser.ml" in let _loc__1_ = (_startpos__1_, _endpos__1_) in -# 1827 "parsing/parser.mly" +# 1839 "parsing/parser.mly" ( let loc = make_loc _loc__1_ in let me = Mod.ident ~loc _1 in Opn.mk ~loc me ) -# 41239 "parsing/parser.ml" +# 42431 "parsing/parser.ml" in -# 2794 "parsing/parser.mly" +# 2815 "parsing/parser.mly" ( Pexp_open(od, _4) ) -# 41245 "parsing/parser.ml" +# 42437 "parsing/parser.ml" in let _endpos__1_ = _endpos__5_ in @@ -41249,15 +42441,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1147 "parsing/parser.mly" +# 1156 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) -# 41255 "parsing/parser.ml" +# 42447 "parsing/parser.ml" in -# 2653 "parsing/parser.mly" +# 2674 "parsing/parser.mly" ( _1 ) -# 41261 "parsing/parser.ml" +# 42453 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -41310,9 +42502,9 @@ module Tables = struct let _v : (Parsetree.expression) = let _1 = let _1 = let _4 = -# 3069 "parsing/parser.mly" +# 3102 "parsing/parser.mly" ( xs ) -# 41316 "parsing/parser.ml" +# 42508 "parsing/parser.ml" in let od = let _1 = @@ -41320,18 +42512,18 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1114 "parsing/parser.mly" +# 1123 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 41326 "parsing/parser.ml" +# 42518 "parsing/parser.ml" in let _loc__1_ = (_startpos__1_, _endpos__1_) in -# 1827 "parsing/parser.mly" +# 1839 "parsing/parser.mly" ( let loc = make_loc _loc__1_ in let me = Mod.ident ~loc _1 in Opn.mk ~loc me ) -# 41335 "parsing/parser.ml" +# 42527 "parsing/parser.ml" in let _startpos_od_ = _startpos__1_ in @@ -41339,10 +42531,10 @@ module Tables = struct let _symbolstartpos = _startpos_od_ in let _sloc = (_symbolstartpos, _endpos) in -# 2796 "parsing/parser.mly" +# 2817 "parsing/parser.mly" ( (* TODO: review the location of Pexp_override *) Pexp_open(od, mkexp ~loc:_sloc (Pexp_override _4)) ) -# 41346 "parsing/parser.ml" +# 42538 "parsing/parser.ml" in let _endpos__1_ = _endpos__5_ in @@ -41350,15 +42542,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1147 "parsing/parser.mly" +# 1156 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) -# 41356 "parsing/parser.ml" +# 42548 "parsing/parser.ml" in -# 2653 "parsing/parser.mly" +# 2674 "parsing/parser.mly" ( _1 ) -# 41362 "parsing/parser.ml" +# 42554 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -41411,16 +42603,16 @@ module Tables = struct let _v : (Parsetree.expression) = let _1 = let _1 = let _4 = -# 3069 "parsing/parser.mly" +# 3102 "parsing/parser.mly" ( xs ) -# 41417 "parsing/parser.ml" +# 42609 "parsing/parser.ml" in let _loc__5_ = (_startpos__5_, _endpos__5_) in let _loc__3_ = (_startpos__3_, _endpos__3_) in -# 2799 "parsing/parser.mly" +# 2820 "parsing/parser.mly" ( unclosed "{<" _loc__3_ ">}" _loc__5_ ) -# 41424 "parsing/parser.ml" +# 42616 "parsing/parser.ml" in let _endpos__1_ = _endpos__5_ in @@ -41428,15 +42620,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1147 "parsing/parser.mly" +# 1156 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) -# 41434 "parsing/parser.ml" +# 42626 "parsing/parser.ml" in -# 2653 "parsing/parser.mly" +# 2674 "parsing/parser.mly" ( _1 ) -# 41440 "parsing/parser.ml" +# 42632 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -41467,9 +42659,9 @@ module Tables = struct }; } = _menhir_stack in let _1_inlined2 : ( -# 928 "parsing/parser.mly" +# 937 "parsing/parser.mly" (string) -# 41473 "parsing/parser.ml" +# 42665 "parsing/parser.ml" ) = Obj.magic _1_inlined2 in let _1_inlined1 : unit = Obj.magic _1_inlined1 in let _1 : (Parsetree.expression) = Obj.magic _1 in @@ -41481,28 +42673,28 @@ module Tables = struct let _3 = let (_endpos__1_, _startpos__1_, _1) = (_endpos__1_inlined2_, _startpos__1_inlined2_, _1_inlined2) in let _1 = -# 4002 "parsing/parser.mly" +# 4106 "parsing/parser.mly" ( _1 ) -# 41487 "parsing/parser.ml" +# 42679 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1114 "parsing/parser.mly" +# 1123 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 41495 "parsing/parser.ml" +# 42687 "parsing/parser.ml" in let _2 = -# 2770 "parsing/parser.mly" +# 2791 "parsing/parser.mly" ( () ) -# 41501 "parsing/parser.ml" +# 42693 "parsing/parser.ml" in -# 2801 "parsing/parser.mly" +# 2822 "parsing/parser.mly" ( Pexp_send(_1, _3) ) -# 41506 "parsing/parser.ml" +# 42698 "parsing/parser.ml" in let _endpos__1_ = _endpos__1_inlined2_ in @@ -41510,15 +42702,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1147 "parsing/parser.mly" +# 1156 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) -# 41516 "parsing/parser.ml" +# 42708 "parsing/parser.ml" in -# 2653 "parsing/parser.mly" +# 2674 "parsing/parser.mly" ( _1 ) -# 41522 "parsing/parser.ml" +# 42714 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -41549,9 +42741,9 @@ module Tables = struct }; } = _menhir_stack in let _1_inlined2 : ( -# 928 "parsing/parser.mly" +# 937 "parsing/parser.mly" (string) -# 41555 "parsing/parser.ml" +# 42747 "parsing/parser.ml" ) = Obj.magic _1_inlined2 in let _1_inlined1 : unit = Obj.magic _1_inlined1 in let _1 : (Parsetree.expression) = Obj.magic _1 in @@ -41563,28 +42755,28 @@ module Tables = struct let _3 = let (_endpos__1_, _startpos__1_, _1) = (_endpos__1_inlined2_, _startpos__1_inlined2_, _1_inlined2) in let _1 = -# 4002 "parsing/parser.mly" +# 4106 "parsing/parser.mly" ( _1 ) -# 41569 "parsing/parser.ml" +# 42761 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1114 "parsing/parser.mly" +# 1123 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 41577 "parsing/parser.ml" +# 42769 "parsing/parser.ml" in let _2 = -# 2771 "parsing/parser.mly" +# 2792 "parsing/parser.mly" ( () ) -# 41583 "parsing/parser.ml" +# 42775 "parsing/parser.ml" in -# 2801 "parsing/parser.mly" +# 2822 "parsing/parser.mly" ( Pexp_send(_1, _3) ) -# 41588 "parsing/parser.ml" +# 42780 "parsing/parser.ml" in let _endpos__1_ = _endpos__1_inlined2_ in @@ -41592,15 +42784,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1147 "parsing/parser.mly" +# 1156 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) -# 41598 "parsing/parser.ml" +# 42790 "parsing/parser.ml" in -# 2653 "parsing/parser.mly" +# 2674 "parsing/parser.mly" ( _1 ) -# 41604 "parsing/parser.ml" +# 42796 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -41632,9 +42824,9 @@ module Tables = struct } = _menhir_stack in let _3 : (Parsetree.expression) = Obj.magic _3 in let _1_inlined1 : ( -# 965 "parsing/parser.mly" +# 974 "parsing/parser.mly" (string) -# 41638 "parsing/parser.ml" +# 42830 "parsing/parser.ml" ) = Obj.magic _1_inlined1 in let _1 : (Parsetree.expression) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in @@ -41648,15 +42840,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1141 "parsing/parser.mly" +# 1150 "parsing/parser.mly" ( mkoperator ~loc:_sloc _1 ) -# 41654 "parsing/parser.ml" +# 42846 "parsing/parser.ml" in -# 2803 "parsing/parser.mly" +# 2824 "parsing/parser.mly" ( mkinfix _1 _2 _3 ) -# 41660 "parsing/parser.ml" +# 42852 "parsing/parser.ml" in let _endpos__1_ = _endpos__3_ in @@ -41664,15 +42856,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1147 "parsing/parser.mly" +# 1156 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) -# 41670 "parsing/parser.ml" +# 42862 "parsing/parser.ml" in -# 2653 "parsing/parser.mly" +# 2674 "parsing/parser.mly" ( _1 ) -# 41676 "parsing/parser.ml" +# 42868 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -41696,23 +42888,23 @@ module Tables = struct let _endpos = _endpos__1_ in let _v : (Parsetree.expression) = let _1 = let _1 = -# 2805 "parsing/parser.mly" +# 2826 "parsing/parser.mly" ( Pexp_extension _1 ) -# 41702 "parsing/parser.ml" +# 42894 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1147 "parsing/parser.mly" +# 1156 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) -# 41710 "parsing/parser.ml" +# 42902 "parsing/parser.ml" in -# 2653 "parsing/parser.mly" +# 2674 "parsing/parser.mly" ( _1 ) -# 41716 "parsing/parser.ml" +# 42908 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -41760,18 +42952,18 @@ module Tables = struct let _3 = let (_endpos__2_, _startpos__1_) = (_endpos__2_inlined1_, _startpos__1_inlined1_) in let _1 = -# 2806 "parsing/parser.mly" +# 2827 "parsing/parser.mly" (Lident "()") -# 41766 "parsing/parser.ml" +# 42958 "parsing/parser.ml" in let _endpos__1_ = _endpos__2_ in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1114 "parsing/parser.mly" +# 1123 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 41775 "parsing/parser.ml" +# 42967 "parsing/parser.ml" in let (_endpos__3_, _startpos__3_) = (_endpos__2_inlined1_, _startpos__1_inlined1_) in @@ -41781,25 +42973,25 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1114 "parsing/parser.mly" +# 1123 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 41787 "parsing/parser.ml" +# 42979 "parsing/parser.ml" in let _loc__1_ = (_startpos__1_, _endpos__1_) in -# 1827 "parsing/parser.mly" +# 1839 "parsing/parser.mly" ( let loc = make_loc _loc__1_ in let me = Mod.ident ~loc _1 in Opn.mk ~loc me ) -# 41796 "parsing/parser.ml" +# 42988 "parsing/parser.ml" in let _loc__3_ = (_startpos__3_, _endpos__3_) in -# 2807 "parsing/parser.mly" +# 2828 "parsing/parser.mly" ( Pexp_open(od, mkexp ~loc:(_loc__3_) (Pexp_construct(_3, None))) ) -# 41803 "parsing/parser.ml" +# 42995 "parsing/parser.ml" in let _endpos__1_ = _endpos__2_inlined1_ in @@ -41807,15 +42999,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1147 "parsing/parser.mly" +# 1156 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) -# 41813 "parsing/parser.ml" +# 43005 "parsing/parser.ml" in -# 2653 "parsing/parser.mly" +# 2674 "parsing/parser.mly" ( _1 ) -# 41819 "parsing/parser.ml" +# 43011 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -41870,9 +43062,9 @@ module Tables = struct let _loc__5_ = (_startpos__5_, _endpos__5_) in let _loc__3_ = (_startpos__3_, _endpos__3_) in -# 2809 "parsing/parser.mly" +# 2830 "parsing/parser.mly" ( unclosed "(" _loc__3_ ")" _loc__5_ ) -# 41876 "parsing/parser.ml" +# 43068 "parsing/parser.ml" in let _endpos__1_ = _endpos__5_ in @@ -41880,15 +43072,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1147 "parsing/parser.mly" +# 1156 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) -# 41886 "parsing/parser.ml" +# 43078 "parsing/parser.ml" in -# 2653 "parsing/parser.mly" +# 2674 "parsing/parser.mly" ( _1 ) -# 41892 "parsing/parser.ml" +# 43084 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -41927,25 +43119,25 @@ module Tables = struct let _endpos = _endpos__3_ in let _v : (Parsetree.expression) = let _1 = let _1 = -# 2811 "parsing/parser.mly" +# 2832 "parsing/parser.mly" ( let (exten, fields) = _2 in Pexp_record(fields, exten) ) -# 41934 "parsing/parser.ml" +# 43126 "parsing/parser.ml" in let _endpos__1_ = _endpos__3_ in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1147 "parsing/parser.mly" +# 1156 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) -# 41943 "parsing/parser.ml" +# 43135 "parsing/parser.ml" in -# 2653 "parsing/parser.mly" +# 2674 "parsing/parser.mly" ( _1 ) -# 41949 "parsing/parser.ml" +# 43141 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -41987,9 +43179,9 @@ module Tables = struct let _loc__3_ = (_startpos__3_, _endpos__3_) in let _loc__1_ = (_startpos__1_, _endpos__1_) in -# 2814 "parsing/parser.mly" +# 2835 "parsing/parser.mly" ( unclosed "{" _loc__1_ "}" _loc__3_ ) -# 41993 "parsing/parser.ml" +# 43185 "parsing/parser.ml" in let _endpos__1_ = _endpos__3_ in @@ -41997,15 +43189,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1147 "parsing/parser.mly" +# 1156 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) -# 42003 "parsing/parser.ml" +# 43195 "parsing/parser.ml" in -# 2653 "parsing/parser.mly" +# 2674 "parsing/parser.mly" ( _1 ) -# 42009 "parsing/parser.ml" +# 43201 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -42064,27 +43256,27 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1114 "parsing/parser.mly" +# 1123 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 42070 "parsing/parser.ml" +# 43262 "parsing/parser.ml" in let _loc__1_ = (_startpos__1_, _endpos__1_) in -# 1827 "parsing/parser.mly" +# 1839 "parsing/parser.mly" ( let loc = make_loc _loc__1_ in let me = Mod.ident ~loc _1 in Opn.mk ~loc me ) -# 42079 "parsing/parser.ml" +# 43271 "parsing/parser.ml" in let _endpos = _endpos__5_ in -# 2816 "parsing/parser.mly" +# 2837 "parsing/parser.mly" ( let (exten, fields) = _4 in Pexp_open(od, mkexp ~loc:(_startpos__3_, _endpos) (Pexp_record(fields, exten))) ) -# 42088 "parsing/parser.ml" +# 43280 "parsing/parser.ml" in let _endpos__1_ = _endpos__5_ in @@ -42092,15 +43284,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1147 "parsing/parser.mly" +# 1156 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) -# 42098 "parsing/parser.ml" +# 43290 "parsing/parser.ml" in -# 2653 "parsing/parser.mly" +# 2674 "parsing/parser.mly" ( _1 ) -# 42104 "parsing/parser.ml" +# 43296 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -42156,9 +43348,9 @@ module Tables = struct let _loc__5_ = (_startpos__5_, _endpos__5_) in let _loc__3_ = (_startpos__3_, _endpos__3_) in -# 2820 "parsing/parser.mly" +# 2841 "parsing/parser.mly" ( unclosed "{" _loc__3_ "}" _loc__5_ ) -# 42162 "parsing/parser.ml" +# 43354 "parsing/parser.ml" in let _endpos__1_ = _endpos__5_ in @@ -42166,15 +43358,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1147 "parsing/parser.mly" +# 1156 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) -# 42172 "parsing/parser.ml" +# 43364 "parsing/parser.ml" in -# 2653 "parsing/parser.mly" +# 2674 "parsing/parser.mly" ( _1 ) -# 42178 "parsing/parser.ml" +# 43370 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -42215,30 +43407,30 @@ module Tables = struct let _1 = let _1 = let _2 = -# 3086 "parsing/parser.mly" +# 3119 "parsing/parser.mly" ( es ) -# 42221 "parsing/parser.ml" +# 43413 "parsing/parser.ml" in -# 2742 "parsing/parser.mly" +# 2763 "parsing/parser.mly" ( Generic_array.Simple.Literal _2 ) -# 42226 "parsing/parser.ml" +# 43418 "parsing/parser.ml" in -# 2751 "parsing/parser.mly" +# 2772 "parsing/parser.mly" ( Generic_array.Expression.Simple _1 ) -# 42232 "parsing/parser.ml" +# 43424 "parsing/parser.ml" in -# 2822 "parsing/parser.mly" +# 2843 "parsing/parser.mly" ( Generic_array.Expression.to_desc "[|" "|]" (fun elts -> Pexp_array elts) _1 ) -# 42242 "parsing/parser.ml" +# 43434 "parsing/parser.ml" in let _endpos__1_ = _endpos__3_ in @@ -42246,15 +43438,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1147 "parsing/parser.mly" +# 1156 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) -# 42252 "parsing/parser.ml" +# 43444 "parsing/parser.ml" in -# 2653 "parsing/parser.mly" +# 2674 "parsing/parser.mly" ( _1 ) -# 42258 "parsing/parser.ml" +# 43450 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -42295,32 +43487,32 @@ module Tables = struct let _1 = let _1 = let _2 = -# 3086 "parsing/parser.mly" +# 3119 "parsing/parser.mly" ( es ) -# 42301 "parsing/parser.ml" +# 43493 "parsing/parser.ml" in let _loc__3_ = (_startpos__3_, _endpos__3_) in let _loc__1_ = (_startpos__1_, _endpos__1_) in -# 2744 "parsing/parser.mly" +# 2765 "parsing/parser.mly" ( Generic_array.Simple.Unclosed(_loc__1_,_loc__3_) ) -# 42308 "parsing/parser.ml" +# 43500 "parsing/parser.ml" in -# 2751 "parsing/parser.mly" +# 2772 "parsing/parser.mly" ( Generic_array.Expression.Simple _1 ) -# 42314 "parsing/parser.ml" +# 43506 "parsing/parser.ml" in -# 2822 "parsing/parser.mly" +# 2843 "parsing/parser.mly" ( Generic_array.Expression.to_desc "[|" "|]" (fun elts -> Pexp_array elts) _1 ) -# 42324 "parsing/parser.ml" +# 43516 "parsing/parser.ml" in let _endpos__1_ = _endpos__3_ in @@ -42328,15 +43520,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1147 "parsing/parser.mly" +# 1156 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) -# 42334 "parsing/parser.ml" +# 43526 "parsing/parser.ml" in -# 2653 "parsing/parser.mly" +# 2674 "parsing/parser.mly" ( _1 ) -# 42340 "parsing/parser.ml" +# 43532 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -42369,24 +43561,24 @@ module Tables = struct let _1 = let _1 = let _1 = -# 2746 "parsing/parser.mly" +# 2767 "parsing/parser.mly" ( Generic_array.Simple.Literal [] ) -# 42375 "parsing/parser.ml" +# 43567 "parsing/parser.ml" in -# 2751 "parsing/parser.mly" +# 2772 "parsing/parser.mly" ( Generic_array.Expression.Simple _1 ) -# 42380 "parsing/parser.ml" +# 43572 "parsing/parser.ml" in -# 2822 "parsing/parser.mly" +# 2843 "parsing/parser.mly" ( Generic_array.Expression.to_desc "[|" "|]" (fun elts -> Pexp_array elts) _1 ) -# 42390 "parsing/parser.ml" +# 43582 "parsing/parser.ml" in let _endpos__1_ = _endpos__2_ in @@ -42394,15 +43586,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1147 "parsing/parser.mly" +# 1156 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) -# 42400 "parsing/parser.ml" +# 43592 "parsing/parser.ml" in -# 2653 "parsing/parser.mly" +# 2674 "parsing/parser.mly" ( _1 ) -# 42406 "parsing/parser.ml" +# 43598 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -42456,9 +43648,9 @@ module Tables = struct let _1 = let _1 = let _4 = -# 3086 "parsing/parser.mly" +# 3119 "parsing/parser.mly" ( es ) -# 42462 "parsing/parser.ml" +# 43654 "parsing/parser.ml" in let od = let _1 = @@ -42466,36 +43658,36 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1114 "parsing/parser.mly" +# 1123 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 42472 "parsing/parser.ml" +# 43664 "parsing/parser.ml" in let _loc__1_ = (_startpos__1_, _endpos__1_) in -# 1827 "parsing/parser.mly" +# 1839 "parsing/parser.mly" ( let loc = make_loc _loc__1_ in let me = Mod.ident ~loc _1 in Opn.mk ~loc me ) -# 42481 "parsing/parser.ml" +# 43673 "parsing/parser.ml" in let _endpos = _endpos__5_ in -# 2753 "parsing/parser.mly" +# 2774 "parsing/parser.mly" ( Generic_array.Expression.Opened_literal(od, _startpos__3_, _endpos, _4) ) -# 42489 "parsing/parser.ml" +# 43681 "parsing/parser.ml" in -# 2822 "parsing/parser.mly" +# 2843 "parsing/parser.mly" ( Generic_array.Expression.to_desc "[|" "|]" (fun elts -> Pexp_array elts) _1 ) -# 42499 "parsing/parser.ml" +# 43691 "parsing/parser.ml" in let _endpos__1_ = _endpos__5_ in @@ -42503,15 +43695,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1147 "parsing/parser.mly" +# 1156 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) -# 42509 "parsing/parser.ml" +# 43701 "parsing/parser.ml" in -# 2653 "parsing/parser.mly" +# 2674 "parsing/parser.mly" ( _1 ) -# 42515 "parsing/parser.ml" +# 43707 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -42563,37 +43755,37 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1114 "parsing/parser.mly" +# 1123 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 42569 "parsing/parser.ml" +# 43761 "parsing/parser.ml" in let _loc__1_ = (_startpos__1_, _endpos__1_) in -# 1827 "parsing/parser.mly" +# 1839 "parsing/parser.mly" ( let loc = make_loc _loc__1_ in let me = Mod.ident ~loc _1 in Opn.mk ~loc me ) -# 42578 "parsing/parser.ml" +# 43770 "parsing/parser.ml" in let _endpos = _endpos__4_ in -# 2756 "parsing/parser.mly" +# 2777 "parsing/parser.mly" ( (* TODO: review the location of Pexp_array *) Generic_array.Expression.Opened_literal(od, _startpos__3_, _endpos, []) ) -# 42587 "parsing/parser.ml" +# 43779 "parsing/parser.ml" in -# 2822 "parsing/parser.mly" +# 2843 "parsing/parser.mly" ( Generic_array.Expression.to_desc "[|" "|]" (fun elts -> Pexp_array elts) _1 ) -# 42597 "parsing/parser.ml" +# 43789 "parsing/parser.ml" in let _endpos__1_ = _endpos__4_ in @@ -42601,15 +43793,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1147 "parsing/parser.mly" +# 1156 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) -# 42607 "parsing/parser.ml" +# 43799 "parsing/parser.ml" in -# 2653 "parsing/parser.mly" +# 2674 "parsing/parser.mly" ( _1 ) -# 42613 "parsing/parser.ml" +# 43805 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -42663,26 +43855,26 @@ module Tables = struct let _1 = let _1 = let _4 = -# 3086 "parsing/parser.mly" +# 3119 "parsing/parser.mly" ( es ) -# 42669 "parsing/parser.ml" +# 43861 "parsing/parser.ml" in let _loc__5_ = (_startpos__5_, _endpos__5_) in let _loc__3_ = (_startpos__3_, _endpos__3_) in -# 2761 "parsing/parser.mly" +# 2782 "parsing/parser.mly" ( Generic_array.Expression.Simple (Unclosed(_loc__3_, _loc__5_)) ) -# 42676 "parsing/parser.ml" +# 43868 "parsing/parser.ml" in -# 2822 "parsing/parser.mly" +# 2843 "parsing/parser.mly" ( Generic_array.Expression.to_desc "[|" "|]" (fun elts -> Pexp_array elts) _1 ) -# 42686 "parsing/parser.ml" +# 43878 "parsing/parser.ml" in let _endpos__1_ = _endpos__5_ in @@ -42690,15 +43882,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1147 "parsing/parser.mly" +# 1156 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) -# 42696 "parsing/parser.ml" +# 43888 "parsing/parser.ml" in -# 2653 "parsing/parser.mly" +# 2674 "parsing/parser.mly" ( _1 ) -# 42702 "parsing/parser.ml" +# 43894 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -42737,15 +43929,15 @@ module Tables = struct let _v : (Parsetree.expression) = let _1 = let _1 = let _2 = -# 3086 "parsing/parser.mly" +# 3119 "parsing/parser.mly" ( es ) -# 42743 "parsing/parser.ml" +# 43935 "parsing/parser.ml" in let _loc__3_ = (_startpos__3_, _endpos__3_) in -# 2828 "parsing/parser.mly" +# 2849 "parsing/parser.mly" ( fst (mktailexp _loc__3_ _2) ) -# 42749 "parsing/parser.ml" +# 43941 "parsing/parser.ml" in let _endpos__1_ = _endpos__3_ in @@ -42753,15 +43945,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1147 "parsing/parser.mly" +# 1156 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) -# 42759 "parsing/parser.ml" +# 43951 "parsing/parser.ml" in -# 2653 "parsing/parser.mly" +# 2674 "parsing/parser.mly" ( _1 ) -# 42765 "parsing/parser.ml" +# 43957 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -42800,16 +43992,16 @@ module Tables = struct let _v : (Parsetree.expression) = let _1 = let _1 = let _2 = -# 3086 "parsing/parser.mly" +# 3119 "parsing/parser.mly" ( es ) -# 42806 "parsing/parser.ml" +# 43998 "parsing/parser.ml" in let _loc__3_ = (_startpos__3_, _endpos__3_) in let _loc__1_ = (_startpos__1_, _endpos__1_) in -# 2830 "parsing/parser.mly" +# 2851 "parsing/parser.mly" ( unclosed "[" _loc__1_ "]" _loc__3_ ) -# 42813 "parsing/parser.ml" +# 44005 "parsing/parser.ml" in let _endpos__1_ = _endpos__3_ in @@ -42817,15 +44009,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1147 "parsing/parser.mly" +# 1156 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) -# 42823 "parsing/parser.ml" +# 44015 "parsing/parser.ml" in -# 2653 "parsing/parser.mly" +# 2674 "parsing/parser.mly" ( _1 ) -# 42829 "parsing/parser.ml" +# 44021 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -42892,24 +44084,24 @@ module Tables = struct let xs = # 253 "" ( List.rev xs ) -# 42896 "parsing/parser.ml" +# 44088 "parsing/parser.ml" in -# 1216 "parsing/parser.mly" +# 1228 "parsing/parser.mly" ( xs ) -# 42901 "parsing/parser.ml" +# 44093 "parsing/parser.ml" in -# 2723 "parsing/parser.mly" +# 2744 "parsing/parser.mly" ( Jane_syntax.Comprehensions.{ body = _2; clauses = _3 } ) -# 42907 "parsing/parser.ml" +# 44099 "parsing/parser.ml" in -# 2728 "parsing/parser.mly" +# 2749 "parsing/parser.mly" ( Jane_syntax.Comprehensions.Cexp_list_comprehension _1 ) -# 42913 "parsing/parser.ml" +# 44105 "parsing/parser.ml" in let _endpos__1_ = _endpos__4_ in @@ -42917,9 +44109,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2737 "parsing/parser.mly" +# 2758 "parsing/parser.mly" ( Jane_syntax.Comprehensions.expr_of ~loc:(make_loc _sloc) ~attrs:[] _1 ) -# 42923 "parsing/parser.ml" +# 44115 "parsing/parser.ml" in let od = @@ -42928,24 +44120,24 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1114 "parsing/parser.mly" +# 1123 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 42934 "parsing/parser.ml" +# 44126 "parsing/parser.ml" in let _loc__1_ = (_startpos__1_, _endpos__1_) in -# 1827 "parsing/parser.mly" +# 1839 "parsing/parser.mly" ( let loc = make_loc _loc__1_ in let me = Mod.ident ~loc _1 in Opn.mk ~loc me ) -# 42943 "parsing/parser.ml" +# 44135 "parsing/parser.ml" in -# 2832 "parsing/parser.mly" +# 2853 "parsing/parser.mly" ( Pexp_open(od, _3) ) -# 42949 "parsing/parser.ml" +# 44141 "parsing/parser.ml" in let _endpos__1_ = _endpos__4_ in @@ -42953,15 +44145,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1147 "parsing/parser.mly" +# 1156 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) -# 42959 "parsing/parser.ml" +# 44151 "parsing/parser.ml" in -# 2653 "parsing/parser.mly" +# 2674 "parsing/parser.mly" ( _1 ) -# 42965 "parsing/parser.ml" +# 44157 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -43028,24 +44220,24 @@ module Tables = struct let xs = # 253 "" ( List.rev xs ) -# 43032 "parsing/parser.ml" +# 44224 "parsing/parser.ml" in -# 1216 "parsing/parser.mly" +# 1228 "parsing/parser.mly" ( xs ) -# 43037 "parsing/parser.ml" +# 44229 "parsing/parser.ml" in -# 2723 "parsing/parser.mly" +# 2744 "parsing/parser.mly" ( Jane_syntax.Comprehensions.{ body = _2; clauses = _3 } ) -# 43043 "parsing/parser.ml" +# 44235 "parsing/parser.ml" in -# 2730 "parsing/parser.mly" +# 2751 "parsing/parser.mly" ( Jane_syntax.Comprehensions.Cexp_array_comprehension (Mutable, _1) ) -# 43049 "parsing/parser.ml" +# 44241 "parsing/parser.ml" in let _endpos__1_ = _endpos__4_ in @@ -43053,9 +44245,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2737 "parsing/parser.mly" +# 2758 "parsing/parser.mly" ( Jane_syntax.Comprehensions.expr_of ~loc:(make_loc _sloc) ~attrs:[] _1 ) -# 43059 "parsing/parser.ml" +# 44251 "parsing/parser.ml" in let od = @@ -43064,24 +44256,24 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1114 "parsing/parser.mly" +# 1123 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 43070 "parsing/parser.ml" +# 44262 "parsing/parser.ml" in let _loc__1_ = (_startpos__1_, _endpos__1_) in -# 1827 "parsing/parser.mly" +# 1839 "parsing/parser.mly" ( let loc = make_loc _loc__1_ in let me = Mod.ident ~loc _1 in Opn.mk ~loc me ) -# 43079 "parsing/parser.ml" +# 44271 "parsing/parser.ml" in -# 2832 "parsing/parser.mly" +# 2853 "parsing/parser.mly" ( Pexp_open(od, _3) ) -# 43085 "parsing/parser.ml" +# 44277 "parsing/parser.ml" in let _endpos__1_ = _endpos__4_ in @@ -43089,15 +44281,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1147 "parsing/parser.mly" +# 1156 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) -# 43095 "parsing/parser.ml" +# 44287 "parsing/parser.ml" in -# 2653 "parsing/parser.mly" +# 2674 "parsing/parser.mly" ( _1 ) -# 43101 "parsing/parser.ml" +# 44293 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -43164,24 +44356,24 @@ module Tables = struct let xs = # 253 "" ( List.rev xs ) -# 43168 "parsing/parser.ml" +# 44360 "parsing/parser.ml" in -# 1216 "parsing/parser.mly" +# 1228 "parsing/parser.mly" ( xs ) -# 43173 "parsing/parser.ml" +# 44365 "parsing/parser.ml" in -# 2723 "parsing/parser.mly" +# 2744 "parsing/parser.mly" ( Jane_syntax.Comprehensions.{ body = _2; clauses = _3 } ) -# 43179 "parsing/parser.ml" +# 44371 "parsing/parser.ml" in -# 2732 "parsing/parser.mly" +# 2753 "parsing/parser.mly" ( Jane_syntax.Comprehensions.Cexp_array_comprehension (Immutable, _1) ) -# 43185 "parsing/parser.ml" +# 44377 "parsing/parser.ml" in let _endpos__1_ = _endpos__4_ in @@ -43189,9 +44381,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2737 "parsing/parser.mly" +# 2758 "parsing/parser.mly" ( Jane_syntax.Comprehensions.expr_of ~loc:(make_loc _sloc) ~attrs:[] _1 ) -# 43195 "parsing/parser.ml" +# 44387 "parsing/parser.ml" in let od = @@ -43200,24 +44392,24 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1114 "parsing/parser.mly" +# 1123 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 43206 "parsing/parser.ml" +# 44398 "parsing/parser.ml" in let _loc__1_ = (_startpos__1_, _endpos__1_) in -# 1827 "parsing/parser.mly" +# 1839 "parsing/parser.mly" ( let loc = make_loc _loc__1_ in let me = Mod.ident ~loc _1 in Opn.mk ~loc me ) -# 43215 "parsing/parser.ml" +# 44407 "parsing/parser.ml" in -# 2832 "parsing/parser.mly" +# 2853 "parsing/parser.mly" ( Pexp_open(od, _3) ) -# 43221 "parsing/parser.ml" +# 44413 "parsing/parser.ml" in let _endpos__1_ = _endpos__4_ in @@ -43225,15 +44417,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1147 "parsing/parser.mly" +# 1156 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) -# 43231 "parsing/parser.ml" +# 44423 "parsing/parser.ml" in -# 2653 "parsing/parser.mly" +# 2674 "parsing/parser.mly" ( _1 ) -# 43237 "parsing/parser.ml" +# 44429 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -43286,9 +44478,9 @@ module Tables = struct let _v : (Parsetree.expression) = let _1 = let _1 = let _4 = -# 3086 "parsing/parser.mly" +# 3119 "parsing/parser.mly" ( es ) -# 43292 "parsing/parser.ml" +# 44484 "parsing/parser.ml" in let od = let _1 = @@ -43296,30 +44488,30 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1114 "parsing/parser.mly" +# 1123 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 43302 "parsing/parser.ml" +# 44494 "parsing/parser.ml" in let _loc__1_ = (_startpos__1_, _endpos__1_) in -# 1827 "parsing/parser.mly" +# 1839 "parsing/parser.mly" ( let loc = make_loc _loc__1_ in let me = Mod.ident ~loc _1 in Opn.mk ~loc me ) -# 43311 "parsing/parser.ml" +# 44503 "parsing/parser.ml" in let _endpos = _endpos__5_ in let _loc__5_ = (_startpos__5_, _endpos__5_) in -# 2834 "parsing/parser.mly" +# 2855 "parsing/parser.mly" ( let list_exp = (* TODO: review the location of list_exp *) let tail_exp, _tail_loc = mktailexp _loc__5_ _4 in mkexp ~loc:(_startpos__3_, _endpos) tail_exp in Pexp_open(od, list_exp) ) -# 43323 "parsing/parser.ml" +# 44515 "parsing/parser.ml" in let _endpos__1_ = _endpos__5_ in @@ -43327,15 +44519,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1147 "parsing/parser.mly" +# 1156 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) -# 43333 "parsing/parser.ml" +# 44525 "parsing/parser.ml" in -# 2653 "parsing/parser.mly" +# 2674 "parsing/parser.mly" ( _1 ) -# 43339 "parsing/parser.ml" +# 44531 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -43383,18 +44575,18 @@ module Tables = struct let _3 = let (_endpos__2_, _startpos__1_) = (_endpos__2_inlined1_, _startpos__1_inlined1_) in let _1 = -# 2839 "parsing/parser.mly" +# 2860 "parsing/parser.mly" (Lident "[]") -# 43389 "parsing/parser.ml" +# 44581 "parsing/parser.ml" in let _endpos__1_ = _endpos__2_ in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1114 "parsing/parser.mly" +# 1123 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 43398 "parsing/parser.ml" +# 44590 "parsing/parser.ml" in let (_endpos__3_, _startpos__3_) = (_endpos__2_inlined1_, _startpos__1_inlined1_) in @@ -43404,25 +44596,25 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1114 "parsing/parser.mly" +# 1123 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 43410 "parsing/parser.ml" +# 44602 "parsing/parser.ml" in let _loc__1_ = (_startpos__1_, _endpos__1_) in -# 1827 "parsing/parser.mly" +# 1839 "parsing/parser.mly" ( let loc = make_loc _loc__1_ in let me = Mod.ident ~loc _1 in Opn.mk ~loc me ) -# 43419 "parsing/parser.ml" +# 44611 "parsing/parser.ml" in let _loc__3_ = (_startpos__3_, _endpos__3_) in -# 2840 "parsing/parser.mly" +# 2861 "parsing/parser.mly" ( Pexp_open(od, mkexp ~loc:_loc__3_ (Pexp_construct(_3, None))) ) -# 43426 "parsing/parser.ml" +# 44618 "parsing/parser.ml" in let _endpos__1_ = _endpos__2_inlined1_ in @@ -43430,15 +44622,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1147 "parsing/parser.mly" +# 1156 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) -# 43436 "parsing/parser.ml" +# 44628 "parsing/parser.ml" in -# 2653 "parsing/parser.mly" +# 2674 "parsing/parser.mly" ( _1 ) -# 43442 "parsing/parser.ml" +# 44634 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -43491,16 +44683,16 @@ module Tables = struct let _v : (Parsetree.expression) = let _1 = let _1 = let _4 = -# 3086 "parsing/parser.mly" +# 3119 "parsing/parser.mly" ( es ) -# 43497 "parsing/parser.ml" +# 44689 "parsing/parser.ml" in let _loc__5_ = (_startpos__5_, _endpos__5_) in let _loc__3_ = (_startpos__3_, _endpos__3_) in -# 2843 "parsing/parser.mly" +# 2864 "parsing/parser.mly" ( unclosed "[" _loc__3_ "]" _loc__5_ ) -# 43504 "parsing/parser.ml" +# 44696 "parsing/parser.ml" in let _endpos__1_ = _endpos__5_ in @@ -43508,15 +44700,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1147 "parsing/parser.mly" +# 1156 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) -# 43514 "parsing/parser.ml" +# 44706 "parsing/parser.ml" in -# 2653 "parsing/parser.mly" +# 2674 "parsing/parser.mly" ( _1 ) -# 43520 "parsing/parser.ml" +# 44712 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -43609,11 +44801,11 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 3928 "parsing/parser.mly" +# 4032 "parsing/parser.mly" ( let (lid, cstrs, attrs) = package_type_of_module_type _1 in let descr = Ptyp_package (lid, cstrs) in mktyp ~loc:_sloc ~attrs descr ) -# 43617 "parsing/parser.ml" +# 44809 "parsing/parser.ml" in let _5 = @@ -43621,15 +44813,15 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4371 "parsing/parser.mly" +# 4476 "parsing/parser.mly" ( _1 ) -# 43627 "parsing/parser.ml" +# 44819 "parsing/parser.ml" in -# 4384 "parsing/parser.mly" +# 4489 "parsing/parser.mly" ( _1, _2 ) -# 43633 "parsing/parser.ml" +# 44825 "parsing/parser.ml" in let od = @@ -43638,18 +44830,18 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1114 "parsing/parser.mly" +# 1123 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 43644 "parsing/parser.ml" +# 44836 "parsing/parser.ml" in let _loc__1_ = (_startpos__1_, _endpos__1_) in -# 1827 "parsing/parser.mly" +# 1839 "parsing/parser.mly" ( let loc = make_loc _loc__1_ in let me = Mod.ident ~loc _1 in Opn.mk ~loc me ) -# 43653 "parsing/parser.ml" +# 44845 "parsing/parser.ml" in let _startpos_od_ = _startpos__1_ in @@ -43657,12 +44849,12 @@ module Tables = struct let _symbolstartpos = _startpos_od_ in let _sloc = (_symbolstartpos, _endpos) in -# 2846 "parsing/parser.mly" +# 2867 "parsing/parser.mly" ( let modexp = mkexp_attrs ~loc:(_startpos__3_, _endpos) (Pexp_constraint (ghexp ~loc:_sloc (Pexp_pack _6), _8)) _5 in Pexp_open(od, modexp) ) -# 43666 "parsing/parser.ml" +# 44858 "parsing/parser.ml" in let _endpos__1_ = _endpos__9_ in @@ -43670,15 +44862,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1147 "parsing/parser.mly" +# 1156 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) -# 43676 "parsing/parser.ml" +# 44868 "parsing/parser.ml" in -# 2653 "parsing/parser.mly" +# 2674 "parsing/parser.mly" ( _1 ) -# 43682 "parsing/parser.ml" +# 44874 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -43763,23 +44955,23 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4371 "parsing/parser.mly" +# 4476 "parsing/parser.mly" ( _1 ) -# 43769 "parsing/parser.ml" +# 44961 "parsing/parser.ml" in -# 4384 "parsing/parser.mly" +# 4489 "parsing/parser.mly" ( _1, _2 ) -# 43775 "parsing/parser.ml" +# 44967 "parsing/parser.ml" in let _loc__8_ = (_startpos__8_, _endpos__8_) in let _loc__3_ = (_startpos__3_, _endpos__3_) in -# 2852 "parsing/parser.mly" +# 2873 "parsing/parser.mly" ( unclosed "(" _loc__3_ ")" _loc__8_ ) -# 43783 "parsing/parser.ml" +# 44975 "parsing/parser.ml" in let _endpos__1_ = _endpos__8_ in @@ -43787,15 +44979,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1147 "parsing/parser.mly" +# 1156 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) -# 43793 "parsing/parser.ml" +# 44985 "parsing/parser.ml" in -# 2653 "parsing/parser.mly" +# 2674 "parsing/parser.mly" ( _1 ) -# 43799 "parsing/parser.ml" +# 44991 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -43834,20 +45026,20 @@ module Tables = struct let _v : (Parsetree.expression) = let _1 = let _1 = let _2 = -# 3086 "parsing/parser.mly" +# 3119 "parsing/parser.mly" ( es ) -# 43840 "parsing/parser.ml" +# 45032 "parsing/parser.ml" in -# 2742 "parsing/parser.mly" +# 2763 "parsing/parser.mly" ( Generic_array.Simple.Literal _2 ) -# 43845 "parsing/parser.ml" +# 45037 "parsing/parser.ml" in -# 2751 "parsing/parser.mly" +# 2772 "parsing/parser.mly" ( Generic_array.Expression.Simple _1 ) -# 43851 "parsing/parser.ml" +# 45043 "parsing/parser.ml" in let _endpos__1_ = _endpos__3_ in @@ -43855,7 +45047,7 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2658 "parsing/parser.mly" +# 2679 "parsing/parser.mly" ( Generic_array.Expression.to_expression "[:" ":]" ~loc:_sloc @@ -43865,7 +45057,7 @@ module Tables = struct (Iaexp_immutable_array elts)) _1 ) -# 43869 "parsing/parser.ml" +# 45061 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -43904,22 +45096,22 @@ module Tables = struct let _v : (Parsetree.expression) = let _1 = let _1 = let _2 = -# 3086 "parsing/parser.mly" +# 3119 "parsing/parser.mly" ( es ) -# 43910 "parsing/parser.ml" +# 45102 "parsing/parser.ml" in let _loc__3_ = (_startpos__3_, _endpos__3_) in let _loc__1_ = (_startpos__1_, _endpos__1_) in -# 2744 "parsing/parser.mly" +# 2765 "parsing/parser.mly" ( Generic_array.Simple.Unclosed(_loc__1_,_loc__3_) ) -# 43917 "parsing/parser.ml" +# 45109 "parsing/parser.ml" in -# 2751 "parsing/parser.mly" +# 2772 "parsing/parser.mly" ( Generic_array.Expression.Simple _1 ) -# 43923 "parsing/parser.ml" +# 45115 "parsing/parser.ml" in let _endpos__1_ = _endpos__3_ in @@ -43927,7 +45119,7 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2658 "parsing/parser.mly" +# 2679 "parsing/parser.mly" ( Generic_array.Expression.to_expression "[:" ":]" ~loc:_sloc @@ -43937,7 +45129,7 @@ module Tables = struct (Iaexp_immutable_array elts)) _1 ) -# 43941 "parsing/parser.ml" +# 45133 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -43968,14 +45160,14 @@ module Tables = struct let _endpos = _endpos__2_ in let _v : (Parsetree.expression) = let _1 = let _1 = -# 2746 "parsing/parser.mly" +# 2767 "parsing/parser.mly" ( Generic_array.Simple.Literal [] ) -# 43974 "parsing/parser.ml" +# 45166 "parsing/parser.ml" in -# 2751 "parsing/parser.mly" +# 2772 "parsing/parser.mly" ( Generic_array.Expression.Simple _1 ) -# 43979 "parsing/parser.ml" +# 45171 "parsing/parser.ml" in let _endpos__1_ = _endpos__2_ in @@ -43983,7 +45175,7 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2658 "parsing/parser.mly" +# 2679 "parsing/parser.mly" ( Generic_array.Expression.to_expression "[:" ":]" ~loc:_sloc @@ -43993,7 +45185,7 @@ module Tables = struct (Iaexp_immutable_array elts)) _1 ) -# 43997 "parsing/parser.ml" +# 45189 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -44045,9 +45237,9 @@ module Tables = struct let _endpos = _endpos__5_ in let _v : (Parsetree.expression) = let _1 = let _4 = -# 3086 "parsing/parser.mly" +# 3119 "parsing/parser.mly" ( es ) -# 44051 "parsing/parser.ml" +# 45243 "parsing/parser.ml" in let od = let _1 = @@ -44055,26 +45247,26 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1114 "parsing/parser.mly" +# 1123 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 44061 "parsing/parser.ml" +# 45253 "parsing/parser.ml" in let _loc__1_ = (_startpos__1_, _endpos__1_) in -# 1827 "parsing/parser.mly" +# 1839 "parsing/parser.mly" ( let loc = make_loc _loc__1_ in let me = Mod.ident ~loc _1 in Opn.mk ~loc me ) -# 44070 "parsing/parser.ml" +# 45262 "parsing/parser.ml" in let _endpos = _endpos__5_ in -# 2753 "parsing/parser.mly" +# 2774 "parsing/parser.mly" ( Generic_array.Expression.Opened_literal(od, _startpos__3_, _endpos, _4) ) -# 44078 "parsing/parser.ml" +# 45270 "parsing/parser.ml" in let _endpos__1_ = _endpos__5_ in @@ -44082,7 +45274,7 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2658 "parsing/parser.mly" +# 2679 "parsing/parser.mly" ( Generic_array.Expression.to_expression "[:" ":]" ~loc:_sloc @@ -44092,7 +45284,7 @@ module Tables = struct (Iaexp_immutable_array elts)) _1 ) -# 44096 "parsing/parser.ml" +# 45288 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -44142,27 +45334,27 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1114 "parsing/parser.mly" +# 1123 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 44148 "parsing/parser.ml" +# 45340 "parsing/parser.ml" in let _loc__1_ = (_startpos__1_, _endpos__1_) in -# 1827 "parsing/parser.mly" +# 1839 "parsing/parser.mly" ( let loc = make_loc _loc__1_ in let me = Mod.ident ~loc _1 in Opn.mk ~loc me ) -# 44157 "parsing/parser.ml" +# 45349 "parsing/parser.ml" in let _endpos = _endpos__4_ in -# 2756 "parsing/parser.mly" +# 2777 "parsing/parser.mly" ( (* TODO: review the location of Pexp_array *) Generic_array.Expression.Opened_literal(od, _startpos__3_, _endpos, []) ) -# 44166 "parsing/parser.ml" +# 45358 "parsing/parser.ml" in let _endpos__1_ = _endpos__4_ in @@ -44170,7 +45362,7 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2658 "parsing/parser.mly" +# 2679 "parsing/parser.mly" ( Generic_array.Expression.to_expression "[:" ":]" ~loc:_sloc @@ -44180,7 +45372,7 @@ module Tables = struct (Iaexp_immutable_array elts)) _1 ) -# 44184 "parsing/parser.ml" +# 45376 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -44232,16 +45424,16 @@ module Tables = struct let _endpos = _endpos__5_ in let _v : (Parsetree.expression) = let _1 = let _4 = -# 3086 "parsing/parser.mly" +# 3119 "parsing/parser.mly" ( es ) -# 44238 "parsing/parser.ml" +# 45430 "parsing/parser.ml" in let _loc__5_ = (_startpos__5_, _endpos__5_) in let _loc__3_ = (_startpos__3_, _endpos__3_) in -# 2761 "parsing/parser.mly" +# 2782 "parsing/parser.mly" ( Generic_array.Expression.Simple (Unclosed(_loc__3_, _loc__5_)) ) -# 44245 "parsing/parser.ml" +# 45437 "parsing/parser.ml" in let _endpos__1_ = _endpos__5_ in @@ -44249,7 +45441,7 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2658 "parsing/parser.mly" +# 2679 "parsing/parser.mly" ( Generic_array.Expression.to_expression "[:" ":]" ~loc:_sloc @@ -44259,7 +45451,7 @@ module Tables = struct (Iaexp_immutable_array elts)) _1 ) -# 44263 "parsing/parser.ml" +# 45455 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -44285,9 +45477,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2667 "parsing/parser.mly" +# 2688 "parsing/parser.mly" ( Constant.to_expression ~loc:_sloc _1 ) -# 44291 "parsing/parser.ml" +# 45483 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -44337,24 +45529,24 @@ module Tables = struct let xs = # 253 "" ( List.rev xs ) -# 44341 "parsing/parser.ml" +# 45533 "parsing/parser.ml" in -# 1216 "parsing/parser.mly" +# 1228 "parsing/parser.mly" ( xs ) -# 44346 "parsing/parser.ml" +# 45538 "parsing/parser.ml" in -# 2723 "parsing/parser.mly" +# 2744 "parsing/parser.mly" ( Jane_syntax.Comprehensions.{ body = _2; clauses = _3 } ) -# 44352 "parsing/parser.ml" +# 45544 "parsing/parser.ml" in -# 2728 "parsing/parser.mly" +# 2749 "parsing/parser.mly" ( Jane_syntax.Comprehensions.Cexp_list_comprehension _1 ) -# 44358 "parsing/parser.ml" +# 45550 "parsing/parser.ml" in let _endpos__1_ = _endpos__4_ in @@ -44362,15 +45554,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2737 "parsing/parser.mly" +# 2758 "parsing/parser.mly" ( Jane_syntax.Comprehensions.expr_of ~loc:(make_loc _sloc) ~attrs:[] _1 ) -# 44368 "parsing/parser.ml" +# 45560 "parsing/parser.ml" in -# 2668 "parsing/parser.mly" +# 2689 "parsing/parser.mly" ( _1 ) -# 44374 "parsing/parser.ml" +# 45566 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -44420,24 +45612,24 @@ module Tables = struct let xs = # 253 "" ( List.rev xs ) -# 44424 "parsing/parser.ml" +# 45616 "parsing/parser.ml" in -# 1216 "parsing/parser.mly" +# 1228 "parsing/parser.mly" ( xs ) -# 44429 "parsing/parser.ml" +# 45621 "parsing/parser.ml" in -# 2723 "parsing/parser.mly" +# 2744 "parsing/parser.mly" ( Jane_syntax.Comprehensions.{ body = _2; clauses = _3 } ) -# 44435 "parsing/parser.ml" +# 45627 "parsing/parser.ml" in -# 2730 "parsing/parser.mly" +# 2751 "parsing/parser.mly" ( Jane_syntax.Comprehensions.Cexp_array_comprehension (Mutable, _1) ) -# 44441 "parsing/parser.ml" +# 45633 "parsing/parser.ml" in let _endpos__1_ = _endpos__4_ in @@ -44445,15 +45637,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2737 "parsing/parser.mly" +# 2758 "parsing/parser.mly" ( Jane_syntax.Comprehensions.expr_of ~loc:(make_loc _sloc) ~attrs:[] _1 ) -# 44451 "parsing/parser.ml" +# 45643 "parsing/parser.ml" in -# 2668 "parsing/parser.mly" +# 2689 "parsing/parser.mly" ( _1 ) -# 44457 "parsing/parser.ml" +# 45649 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -44503,24 +45695,24 @@ module Tables = struct let xs = # 253 "" ( List.rev xs ) -# 44507 "parsing/parser.ml" +# 45699 "parsing/parser.ml" in -# 1216 "parsing/parser.mly" +# 1228 "parsing/parser.mly" ( xs ) -# 44512 "parsing/parser.ml" +# 45704 "parsing/parser.ml" in -# 2723 "parsing/parser.mly" +# 2744 "parsing/parser.mly" ( Jane_syntax.Comprehensions.{ body = _2; clauses = _3 } ) -# 44518 "parsing/parser.ml" +# 45710 "parsing/parser.ml" in -# 2732 "parsing/parser.mly" +# 2753 "parsing/parser.mly" ( Jane_syntax.Comprehensions.Cexp_array_comprehension (Immutable, _1) ) -# 44524 "parsing/parser.ml" +# 45716 "parsing/parser.ml" in let _endpos__1_ = _endpos__4_ in @@ -44528,15 +45720,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2737 "parsing/parser.mly" +# 2758 "parsing/parser.mly" ( Jane_syntax.Comprehensions.expr_of ~loc:(make_loc _sloc) ~attrs:[] _1 ) -# 44534 "parsing/parser.ml" +# 45726 "parsing/parser.ml" in -# 2668 "parsing/parser.mly" +# 2689 "parsing/parser.mly" ( _1 ) -# 44540 "parsing/parser.ml" +# 45732 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -44565,30 +45757,30 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1114 "parsing/parser.mly" +# 1123 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 44571 "parsing/parser.ml" +# 45763 "parsing/parser.ml" in -# 3169 "parsing/parser.mly" +# 3213 "parsing/parser.mly" ( Ppat_var (_1) ) -# 44577 "parsing/parser.ml" +# 45769 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1149 "parsing/parser.mly" +# 1158 "parsing/parser.mly" ( mkpat ~loc:_sloc _1 ) -# 44586 "parsing/parser.ml" +# 45778 "parsing/parser.ml" in -# 3170 "parsing/parser.mly" +# 3214 "parsing/parser.mly" ( _1 ) -# 44592 "parsing/parser.ml" +# 45784 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -44611,9 +45803,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Parsetree.pattern) = -# 3171 "parsing/parser.mly" +# 3215 "parsing/parser.mly" ( _1 ) -# 44617 "parsing/parser.ml" +# 45809 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -44653,9 +45845,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 3176 "parsing/parser.mly" +# 3220 "parsing/parser.mly" ( reloc_pat ~loc:_sloc _2 ) -# 44659 "parsing/parser.ml" +# 45851 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -44678,9 +45870,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Parsetree.pattern) = -# 3178 "parsing/parser.mly" +# 3222 "parsing/parser.mly" ( _1 ) -# 44684 "parsing/parser.ml" +# 45876 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -44743,9 +45935,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1114 "parsing/parser.mly" +# 1123 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 44749 "parsing/parser.ml" +# 45941 "parsing/parser.ml" in let _3 = @@ -44753,24 +45945,24 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4371 "parsing/parser.mly" +# 4476 "parsing/parser.mly" ( _1 ) -# 44759 "parsing/parser.ml" +# 45951 "parsing/parser.ml" in -# 4384 "parsing/parser.mly" +# 4489 "parsing/parser.mly" ( _1, _2 ) -# 44765 "parsing/parser.ml" +# 45957 "parsing/parser.ml" in let _endpos = _endpos__5_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 3180 "parsing/parser.mly" +# 3224 "parsing/parser.mly" ( mkpat_attrs ~loc:_sloc (Ppat_unpack _4) _3 ) -# 44774 "parsing/parser.ml" +# 45966 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -44847,11 +46039,11 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 3928 "parsing/parser.mly" +# 4032 "parsing/parser.mly" ( let (lid, cstrs, attrs) = package_type_of_module_type _1 in let descr = Ptyp_package (lid, cstrs) in mktyp ~loc:_sloc ~attrs descr ) -# 44855 "parsing/parser.ml" +# 46047 "parsing/parser.ml" in let _4 = @@ -44860,9 +46052,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1114 "parsing/parser.mly" +# 1123 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 44866 "parsing/parser.ml" +# 46058 "parsing/parser.ml" in let (_endpos__4_, _startpos__4_) = (_endpos__1_inlined3_, _startpos__1_inlined3_) in @@ -44871,15 +46063,15 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4371 "parsing/parser.mly" +# 4476 "parsing/parser.mly" ( _1 ) -# 44877 "parsing/parser.ml" +# 46069 "parsing/parser.ml" in -# 4384 "parsing/parser.mly" +# 4489 "parsing/parser.mly" ( _1, _2 ) -# 44883 "parsing/parser.ml" +# 46075 "parsing/parser.ml" in let _endpos = _endpos__7_ in @@ -44887,11 +46079,11 @@ module Tables = struct let _loc__4_ = (_startpos__4_, _endpos__4_) in let _sloc = (_symbolstartpos, _endpos) in -# 3182 "parsing/parser.mly" +# 3226 "parsing/parser.mly" ( mkpat_attrs ~loc:_sloc (Ppat_constraint(mkpat ~loc:_loc__4_ (Ppat_unpack _4), _6)) _3 ) -# 44895 "parsing/parser.ml" +# 46087 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -44915,23 +46107,23 @@ module Tables = struct let _endpos = _endpos__1_ in let _v : (Parsetree.pattern) = let _1 = let _1 = -# 3191 "parsing/parser.mly" +# 3235 "parsing/parser.mly" ( Ppat_any ) -# 44921 "parsing/parser.ml" +# 46113 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1149 "parsing/parser.mly" +# 1158 "parsing/parser.mly" ( mkpat ~loc:_sloc _1 ) -# 44929 "parsing/parser.ml" +# 46121 "parsing/parser.ml" in -# 3186 "parsing/parser.mly" +# 3230 "parsing/parser.mly" ( _1 ) -# 44935 "parsing/parser.ml" +# 46127 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -44969,24 +46161,24 @@ module Tables = struct let _endpos = _endpos__3_ in let _v : (Parsetree.pattern) = let _1 = let _1 = -# 3193 "parsing/parser.mly" +# 3237 "parsing/parser.mly" ( Ppat_interval (_1, _3) ) -# 44975 "parsing/parser.ml" +# 46167 "parsing/parser.ml" in let _endpos__1_ = _endpos__3_ in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1149 "parsing/parser.mly" +# 1158 "parsing/parser.mly" ( mkpat ~loc:_sloc _1 ) -# 44984 "parsing/parser.ml" +# 46176 "parsing/parser.ml" in -# 3186 "parsing/parser.mly" +# 3230 "parsing/parser.mly" ( _1 ) -# 44990 "parsing/parser.ml" +# 46182 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -45015,30 +46207,30 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1114 "parsing/parser.mly" +# 1123 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 45021 "parsing/parser.ml" +# 46213 "parsing/parser.ml" in -# 3195 "parsing/parser.mly" +# 3239 "parsing/parser.mly" ( Ppat_construct(_1, None) ) -# 45027 "parsing/parser.ml" +# 46219 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1149 "parsing/parser.mly" +# 1158 "parsing/parser.mly" ( mkpat ~loc:_sloc _1 ) -# 45036 "parsing/parser.ml" +# 46228 "parsing/parser.ml" in -# 3186 "parsing/parser.mly" +# 3230 "parsing/parser.mly" ( _1 ) -# 45042 "parsing/parser.ml" +# 46234 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -45062,23 +46254,23 @@ module Tables = struct let _endpos = _endpos__1_ in let _v : (Parsetree.pattern) = let _1 = let _1 = -# 3197 "parsing/parser.mly" +# 3241 "parsing/parser.mly" ( Ppat_variant(_1, None) ) -# 45068 "parsing/parser.ml" +# 46260 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1149 "parsing/parser.mly" +# 1158 "parsing/parser.mly" ( mkpat ~loc:_sloc _1 ) -# 45076 "parsing/parser.ml" +# 46268 "parsing/parser.ml" in -# 3186 "parsing/parser.mly" +# 3230 "parsing/parser.mly" ( _1 ) -# 45082 "parsing/parser.ml" +# 46274 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -45115,20 +46307,20 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1114 "parsing/parser.mly" +# 1123 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 45121 "parsing/parser.ml" +# 46313 "parsing/parser.ml" in let _1 = -# 2770 "parsing/parser.mly" +# 2791 "parsing/parser.mly" ( () ) -# 45127 "parsing/parser.ml" +# 46319 "parsing/parser.ml" in -# 3199 "parsing/parser.mly" +# 3243 "parsing/parser.mly" ( Ppat_type (_2) ) -# 45132 "parsing/parser.ml" +# 46324 "parsing/parser.ml" in let _endpos__1_ = _endpos__1_inlined1_ in @@ -45136,15 +46328,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1149 "parsing/parser.mly" +# 1158 "parsing/parser.mly" ( mkpat ~loc:_sloc _1 ) -# 45142 "parsing/parser.ml" +# 46334 "parsing/parser.ml" in -# 3186 "parsing/parser.mly" +# 3230 "parsing/parser.mly" ( _1 ) -# 45148 "parsing/parser.ml" +# 46340 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -45181,20 +46373,20 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1114 "parsing/parser.mly" +# 1123 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 45187 "parsing/parser.ml" +# 46379 "parsing/parser.ml" in let _1 = -# 2771 "parsing/parser.mly" +# 2792 "parsing/parser.mly" ( () ) -# 45193 "parsing/parser.ml" +# 46385 "parsing/parser.ml" in -# 3199 "parsing/parser.mly" +# 3243 "parsing/parser.mly" ( Ppat_type (_2) ) -# 45198 "parsing/parser.ml" +# 46390 "parsing/parser.ml" in let _endpos__1_ = _endpos__1_inlined1_ in @@ -45202,15 +46394,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1149 "parsing/parser.mly" +# 1158 "parsing/parser.mly" ( mkpat ~loc:_sloc _1 ) -# 45208 "parsing/parser.ml" +# 46400 "parsing/parser.ml" in -# 3186 "parsing/parser.mly" +# 3230 "parsing/parser.mly" ( _1 ) -# 45214 "parsing/parser.ml" +# 46406 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -45253,15 +46445,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1114 "parsing/parser.mly" +# 1123 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 45259 "parsing/parser.ml" +# 46451 "parsing/parser.ml" in -# 3201 "parsing/parser.mly" +# 3245 "parsing/parser.mly" ( Ppat_open(_1, _3) ) -# 45265 "parsing/parser.ml" +# 46457 "parsing/parser.ml" in let _endpos__1_ = _endpos__3_ in @@ -45269,15 +46461,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1149 "parsing/parser.mly" +# 1158 "parsing/parser.mly" ( mkpat ~loc:_sloc _1 ) -# 45275 "parsing/parser.ml" +# 46467 "parsing/parser.ml" in -# 3186 "parsing/parser.mly" +# 3230 "parsing/parser.mly" ( _1 ) -# 45281 "parsing/parser.ml" +# 46473 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -45325,18 +46517,18 @@ module Tables = struct let _3 = let (_endpos__2_, _startpos__1_) = (_endpos__2_inlined1_, _startpos__1_inlined1_) in let _1 = -# 3202 "parsing/parser.mly" +# 3246 "parsing/parser.mly" (Lident "[]") -# 45331 "parsing/parser.ml" +# 46523 "parsing/parser.ml" in let _endpos__1_ = _endpos__2_ in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1114 "parsing/parser.mly" +# 1123 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 45340 "parsing/parser.ml" +# 46532 "parsing/parser.ml" in let _endpos__3_ = _endpos__2_inlined1_ in @@ -45345,18 +46537,18 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1114 "parsing/parser.mly" +# 1123 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 45351 "parsing/parser.ml" +# 46543 "parsing/parser.ml" in let _endpos = _endpos__3_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 3203 "parsing/parser.mly" +# 3247 "parsing/parser.mly" ( Ppat_open(_1, mkpat ~loc:_sloc (Ppat_construct(_3, None))) ) -# 45360 "parsing/parser.ml" +# 46552 "parsing/parser.ml" in let _endpos__1_ = _endpos__2_inlined1_ in @@ -45364,15 +46556,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1149 "parsing/parser.mly" +# 1158 "parsing/parser.mly" ( mkpat ~loc:_sloc _1 ) -# 45370 "parsing/parser.ml" +# 46562 "parsing/parser.ml" in -# 3186 "parsing/parser.mly" +# 3230 "parsing/parser.mly" ( _1 ) -# 45376 "parsing/parser.ml" +# 46568 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -45420,18 +46612,18 @@ module Tables = struct let _3 = let (_endpos__2_, _startpos__1_) = (_endpos__2_inlined1_, _startpos__1_inlined1_) in let _1 = -# 3204 "parsing/parser.mly" +# 3248 "parsing/parser.mly" (Lident "()") -# 45426 "parsing/parser.ml" +# 46618 "parsing/parser.ml" in let _endpos__1_ = _endpos__2_ in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1114 "parsing/parser.mly" +# 1123 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 45435 "parsing/parser.ml" +# 46627 "parsing/parser.ml" in let _endpos__3_ = _endpos__2_inlined1_ in @@ -45440,18 +46632,18 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1114 "parsing/parser.mly" +# 1123 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 45446 "parsing/parser.ml" +# 46638 "parsing/parser.ml" in let _endpos = _endpos__3_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 3205 "parsing/parser.mly" +# 3249 "parsing/parser.mly" ( Ppat_open(_1, mkpat ~loc:_sloc (Ppat_construct(_3, None))) ) -# 45455 "parsing/parser.ml" +# 46647 "parsing/parser.ml" in let _endpos__1_ = _endpos__2_inlined1_ in @@ -45459,15 +46651,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1149 "parsing/parser.mly" +# 1158 "parsing/parser.mly" ( mkpat ~loc:_sloc _1 ) -# 45465 "parsing/parser.ml" +# 46657 "parsing/parser.ml" in -# 3186 "parsing/parser.mly" +# 3230 "parsing/parser.mly" ( _1 ) -# 45471 "parsing/parser.ml" +# 46663 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -45524,15 +46716,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1114 "parsing/parser.mly" +# 1123 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 45530 "parsing/parser.ml" +# 46722 "parsing/parser.ml" in -# 3207 "parsing/parser.mly" +# 3251 "parsing/parser.mly" ( Ppat_open (_1, _4) ) -# 45536 "parsing/parser.ml" +# 46728 "parsing/parser.ml" in let _endpos__1_ = _endpos__5_ in @@ -45540,15 +46732,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1149 "parsing/parser.mly" +# 1158 "parsing/parser.mly" ( mkpat ~loc:_sloc _1 ) -# 45546 "parsing/parser.ml" +# 46738 "parsing/parser.ml" in -# 3186 "parsing/parser.mly" +# 3230 "parsing/parser.mly" ( _1 ) -# 45552 "parsing/parser.ml" +# 46744 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -45603,9 +46795,9 @@ module Tables = struct let _loc__5_ = (_startpos__5_, _endpos__5_) in let _loc__3_ = (_startpos__3_, _endpos__3_) in -# 3209 "parsing/parser.mly" +# 3253 "parsing/parser.mly" ( unclosed "(" _loc__3_ ")" _loc__5_ ) -# 45609 "parsing/parser.ml" +# 46801 "parsing/parser.ml" in let _endpos__1_ = _endpos__5_ in @@ -45613,15 +46805,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1149 "parsing/parser.mly" +# 1158 "parsing/parser.mly" ( mkpat ~loc:_sloc _1 ) -# 45619 "parsing/parser.ml" +# 46811 "parsing/parser.ml" in -# 3186 "parsing/parser.mly" +# 3230 "parsing/parser.mly" ( _1 ) -# 45625 "parsing/parser.ml" +# 46817 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -45668,9 +46860,9 @@ module Tables = struct let _1 = let _loc__4_ = (_startpos__4_, _endpos__4_) in -# 3211 "parsing/parser.mly" +# 3255 "parsing/parser.mly" ( expecting _loc__4_ "pattern" ) -# 45674 "parsing/parser.ml" +# 46866 "parsing/parser.ml" in let _endpos__1_ = _endpos__4_ in @@ -45678,15 +46870,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1149 "parsing/parser.mly" +# 1158 "parsing/parser.mly" ( mkpat ~loc:_sloc _1 ) -# 45684 "parsing/parser.ml" +# 46876 "parsing/parser.ml" in -# 3186 "parsing/parser.mly" +# 3230 "parsing/parser.mly" ( _1 ) -# 45690 "parsing/parser.ml" +# 46882 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -45727,9 +46919,9 @@ module Tables = struct let _loc__3_ = (_startpos__3_, _endpos__3_) in let _loc__1_ = (_startpos__1_, _endpos__1_) in -# 3213 "parsing/parser.mly" +# 3257 "parsing/parser.mly" ( unclosed "(" _loc__1_ ")" _loc__3_ ) -# 45733 "parsing/parser.ml" +# 46925 "parsing/parser.ml" in let _endpos__1_ = _endpos__3_ in @@ -45737,15 +46929,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1149 "parsing/parser.mly" +# 1158 "parsing/parser.mly" ( mkpat ~loc:_sloc _1 ) -# 45743 "parsing/parser.ml" +# 46935 "parsing/parser.ml" in -# 3186 "parsing/parser.mly" +# 3230 "parsing/parser.mly" ( _1 ) -# 45749 "parsing/parser.ml" +# 46941 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -45797,24 +46989,24 @@ module Tables = struct let _endpos = _endpos__5_ in let _v : (Parsetree.pattern) = let _1 = let _1 = -# 3215 "parsing/parser.mly" +# 3259 "parsing/parser.mly" ( Ppat_constraint(_2, _4) ) -# 45803 "parsing/parser.ml" +# 46995 "parsing/parser.ml" in let _endpos__1_ = _endpos__5_ in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1149 "parsing/parser.mly" +# 1158 "parsing/parser.mly" ( mkpat ~loc:_sloc _1 ) -# 45812 "parsing/parser.ml" +# 47004 "parsing/parser.ml" in -# 3186 "parsing/parser.mly" +# 3230 "parsing/parser.mly" ( _1 ) -# 45818 "parsing/parser.ml" +# 47010 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -45869,9 +47061,9 @@ module Tables = struct let _loc__5_ = (_startpos__5_, _endpos__5_) in let _loc__1_ = (_startpos__1_, _endpos__1_) in -# 3217 "parsing/parser.mly" +# 3261 "parsing/parser.mly" ( unclosed "(" _loc__1_ ")" _loc__5_ ) -# 45875 "parsing/parser.ml" +# 47067 "parsing/parser.ml" in let _endpos__1_ = _endpos__5_ in @@ -45879,15 +47071,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1149 "parsing/parser.mly" +# 1158 "parsing/parser.mly" ( mkpat ~loc:_sloc _1 ) -# 45885 "parsing/parser.ml" +# 47077 "parsing/parser.ml" in -# 3186 "parsing/parser.mly" +# 3230 "parsing/parser.mly" ( _1 ) -# 45891 "parsing/parser.ml" +# 47083 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -45934,9 +47126,9 @@ module Tables = struct let _1 = let _loc__4_ = (_startpos__4_, _endpos__4_) in -# 3219 "parsing/parser.mly" +# 3263 "parsing/parser.mly" ( expecting _loc__4_ "type" ) -# 45940 "parsing/parser.ml" +# 47132 "parsing/parser.ml" in let _endpos__1_ = _endpos__4_ in @@ -45944,15 +47136,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1149 "parsing/parser.mly" +# 1158 "parsing/parser.mly" ( mkpat ~loc:_sloc _1 ) -# 45950 "parsing/parser.ml" +# 47142 "parsing/parser.ml" in -# 3186 "parsing/parser.mly" +# 3230 "parsing/parser.mly" ( _1 ) -# 45956 "parsing/parser.ml" +# 47148 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -46031,11 +47223,11 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 3928 "parsing/parser.mly" +# 4032 "parsing/parser.mly" ( let (lid, cstrs, attrs) = package_type_of_module_type _1 in let descr = Ptyp_package (lid, cstrs) in mktyp ~loc:_sloc ~attrs descr ) -# 46039 "parsing/parser.ml" +# 47231 "parsing/parser.ml" in let _3 = @@ -46043,23 +47235,23 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4371 "parsing/parser.mly" +# 4476 "parsing/parser.mly" ( _1 ) -# 46049 "parsing/parser.ml" +# 47241 "parsing/parser.ml" in -# 4384 "parsing/parser.mly" +# 4489 "parsing/parser.mly" ( _1, _2 ) -# 46055 "parsing/parser.ml" +# 47247 "parsing/parser.ml" in let _loc__7_ = (_startpos__7_, _endpos__7_) in let _loc__1_ = (_startpos__1_, _endpos__1_) in -# 3222 "parsing/parser.mly" +# 3266 "parsing/parser.mly" ( unclosed "(" _loc__1_ ")" _loc__7_ ) -# 46063 "parsing/parser.ml" +# 47255 "parsing/parser.ml" in let _endpos__1_ = _endpos__7_ in @@ -46067,15 +47259,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1149 "parsing/parser.mly" +# 1158 "parsing/parser.mly" ( mkpat ~loc:_sloc _1 ) -# 46073 "parsing/parser.ml" +# 47265 "parsing/parser.ml" in -# 3186 "parsing/parser.mly" +# 3230 "parsing/parser.mly" ( _1 ) -# 46079 "parsing/parser.ml" +# 47271 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -46099,23 +47291,23 @@ module Tables = struct let _endpos = _endpos__1_ in let _v : (Parsetree.pattern) = let _1 = let _1 = -# 3224 "parsing/parser.mly" +# 3268 "parsing/parser.mly" ( Ppat_extension _1 ) -# 46105 "parsing/parser.ml" +# 47297 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1149 "parsing/parser.mly" +# 1158 "parsing/parser.mly" ( mkpat ~loc:_sloc _1 ) -# 46113 "parsing/parser.ml" +# 47305 "parsing/parser.ml" in -# 3186 "parsing/parser.mly" +# 3230 "parsing/parser.mly" ( _1 ) -# 46119 "parsing/parser.ml" +# 47311 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -46141,9 +47333,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 3187 "parsing/parser.mly" +# 3231 "parsing/parser.mly" ( Constant.to_pattern _1 ~loc:_sloc ) -# 46147 "parsing/parser.ml" +# 47339 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -46162,17 +47354,17 @@ module Tables = struct MenhirLib.EngineTypes.next = _menhir_stack; } = _menhir_stack in let _1 : ( -# 928 "parsing/parser.mly" +# 937 "parsing/parser.mly" (string) -# 46168 "parsing/parser.ml" +# 47360 "parsing/parser.ml" ) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 4291 "parsing/parser.mly" +# 4396 "parsing/parser.mly" ( _1 ) -# 46176 "parsing/parser.ml" +# 47368 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -46191,17 +47383,17 @@ module Tables = struct MenhirLib.EngineTypes.next = _menhir_stack; } = _menhir_stack in let _1 : ( -# 981 "parsing/parser.mly" +# 990 "parsing/parser.mly" (string) -# 46197 "parsing/parser.ml" +# 47389 "parsing/parser.ml" ) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 4292 "parsing/parser.mly" +# 4397 "parsing/parser.mly" ( _1 ) -# 46205 "parsing/parser.ml" +# 47397 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -46224,9 +47416,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 4293 "parsing/parser.mly" +# 4398 "parsing/parser.mly" ( "and" ) -# 46230 "parsing/parser.ml" +# 47422 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -46249,9 +47441,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 4294 "parsing/parser.mly" +# 4399 "parsing/parser.mly" ( "as" ) -# 46255 "parsing/parser.ml" +# 47447 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -46274,9 +47466,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 4295 "parsing/parser.mly" +# 4400 "parsing/parser.mly" ( "assert" ) -# 46280 "parsing/parser.ml" +# 47472 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -46299,9 +47491,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 4296 "parsing/parser.mly" +# 4401 "parsing/parser.mly" ( "begin" ) -# 46305 "parsing/parser.ml" +# 47497 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -46324,9 +47516,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 4297 "parsing/parser.mly" +# 4402 "parsing/parser.mly" ( "class" ) -# 46330 "parsing/parser.ml" +# 47522 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -46349,9 +47541,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 4298 "parsing/parser.mly" +# 4403 "parsing/parser.mly" ( "constraint" ) -# 46355 "parsing/parser.ml" +# 47547 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -46374,9 +47566,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 4299 "parsing/parser.mly" +# 4404 "parsing/parser.mly" ( "do" ) -# 46380 "parsing/parser.ml" +# 47572 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -46399,9 +47591,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 4300 "parsing/parser.mly" +# 4405 "parsing/parser.mly" ( "done" ) -# 46405 "parsing/parser.ml" +# 47597 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -46424,9 +47616,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 4301 "parsing/parser.mly" +# 4406 "parsing/parser.mly" ( "downto" ) -# 46430 "parsing/parser.ml" +# 47622 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -46449,9 +47641,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 4302 "parsing/parser.mly" +# 4407 "parsing/parser.mly" ( "else" ) -# 46455 "parsing/parser.ml" +# 47647 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -46474,9 +47666,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 4303 "parsing/parser.mly" +# 4408 "parsing/parser.mly" ( "end" ) -# 46480 "parsing/parser.ml" +# 47672 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -46499,9 +47691,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 4304 "parsing/parser.mly" +# 4409 "parsing/parser.mly" ( "exception" ) -# 46505 "parsing/parser.ml" +# 47697 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -46524,9 +47716,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 4305 "parsing/parser.mly" +# 4410 "parsing/parser.mly" ( "external" ) -# 46530 "parsing/parser.ml" +# 47722 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -46549,9 +47741,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 4306 "parsing/parser.mly" +# 4411 "parsing/parser.mly" ( "false" ) -# 46555 "parsing/parser.ml" +# 47747 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -46574,9 +47766,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 4307 "parsing/parser.mly" +# 4412 "parsing/parser.mly" ( "for" ) -# 46580 "parsing/parser.ml" +# 47772 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -46599,9 +47791,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 4308 "parsing/parser.mly" +# 4413 "parsing/parser.mly" ( "fun" ) -# 46605 "parsing/parser.ml" +# 47797 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -46624,9 +47816,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 4309 "parsing/parser.mly" +# 4414 "parsing/parser.mly" ( "function" ) -# 46630 "parsing/parser.ml" +# 47822 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -46649,9 +47841,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 4310 "parsing/parser.mly" +# 4415 "parsing/parser.mly" ( "functor" ) -# 46655 "parsing/parser.ml" +# 47847 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -46674,9 +47866,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 4311 "parsing/parser.mly" +# 4416 "parsing/parser.mly" ( "if" ) -# 46680 "parsing/parser.ml" +# 47872 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -46699,9 +47891,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 4312 "parsing/parser.mly" +# 4417 "parsing/parser.mly" ( "in" ) -# 46705 "parsing/parser.ml" +# 47897 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -46724,9 +47916,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 4313 "parsing/parser.mly" +# 4418 "parsing/parser.mly" ( "include" ) -# 46730 "parsing/parser.ml" +# 47922 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -46749,9 +47941,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 4314 "parsing/parser.mly" +# 4419 "parsing/parser.mly" ( "inherit" ) -# 46755 "parsing/parser.ml" +# 47947 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -46774,9 +47966,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 4315 "parsing/parser.mly" +# 4420 "parsing/parser.mly" ( "initializer" ) -# 46780 "parsing/parser.ml" +# 47972 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -46799,9 +47991,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 4316 "parsing/parser.mly" +# 4421 "parsing/parser.mly" ( "lazy" ) -# 46805 "parsing/parser.ml" +# 47997 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -46824,9 +48016,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 4317 "parsing/parser.mly" +# 4422 "parsing/parser.mly" ( "let" ) -# 46830 "parsing/parser.ml" +# 48022 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -46849,9 +48041,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 4318 "parsing/parser.mly" +# 4423 "parsing/parser.mly" ( "local_" ) -# 46855 "parsing/parser.ml" +# 48047 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -46874,9 +48066,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 4319 "parsing/parser.mly" +# 4424 "parsing/parser.mly" ( "match" ) -# 46880 "parsing/parser.ml" +# 48072 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -46899,9 +48091,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 4320 "parsing/parser.mly" +# 4425 "parsing/parser.mly" ( "method" ) -# 46905 "parsing/parser.ml" +# 48097 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -46924,9 +48116,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 4321 "parsing/parser.mly" +# 4426 "parsing/parser.mly" ( "module" ) -# 46930 "parsing/parser.ml" +# 48122 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -46949,9 +48141,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 4322 "parsing/parser.mly" +# 4427 "parsing/parser.mly" ( "mutable" ) -# 46955 "parsing/parser.ml" +# 48147 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -46974,9 +48166,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 4323 "parsing/parser.mly" +# 4428 "parsing/parser.mly" ( "new" ) -# 46980 "parsing/parser.ml" +# 48172 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -46999,9 +48191,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 4324 "parsing/parser.mly" +# 4429 "parsing/parser.mly" ( "nonrec" ) -# 47005 "parsing/parser.ml" +# 48197 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -47024,9 +48216,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 4325 "parsing/parser.mly" +# 4430 "parsing/parser.mly" ( "object" ) -# 47030 "parsing/parser.ml" +# 48222 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -47049,9 +48241,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 4326 "parsing/parser.mly" +# 4431 "parsing/parser.mly" ( "of" ) -# 47055 "parsing/parser.ml" +# 48247 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -47074,9 +48266,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 4327 "parsing/parser.mly" +# 4432 "parsing/parser.mly" ( "open" ) -# 47080 "parsing/parser.ml" +# 48272 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -47099,9 +48291,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 4328 "parsing/parser.mly" +# 4433 "parsing/parser.mly" ( "or" ) -# 47105 "parsing/parser.ml" +# 48297 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -47124,9 +48316,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 4329 "parsing/parser.mly" +# 4434 "parsing/parser.mly" ( "private" ) -# 47130 "parsing/parser.ml" +# 48322 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -47149,9 +48341,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 4330 "parsing/parser.mly" +# 4435 "parsing/parser.mly" ( "rec" ) -# 47155 "parsing/parser.ml" +# 48347 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -47174,9 +48366,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 4331 "parsing/parser.mly" +# 4436 "parsing/parser.mly" ( "sig" ) -# 47180 "parsing/parser.ml" +# 48372 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -47199,9 +48391,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 4332 "parsing/parser.mly" +# 4437 "parsing/parser.mly" ( "struct" ) -# 47205 "parsing/parser.ml" +# 48397 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -47224,9 +48416,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 4333 "parsing/parser.mly" +# 4438 "parsing/parser.mly" ( "then" ) -# 47230 "parsing/parser.ml" +# 48422 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -47249,9 +48441,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 4334 "parsing/parser.mly" +# 4439 "parsing/parser.mly" ( "to" ) -# 47255 "parsing/parser.ml" +# 48447 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -47274,9 +48466,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 4335 "parsing/parser.mly" +# 4440 "parsing/parser.mly" ( "true" ) -# 47280 "parsing/parser.ml" +# 48472 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -47299,9 +48491,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 4336 "parsing/parser.mly" +# 4441 "parsing/parser.mly" ( "try" ) -# 47305 "parsing/parser.ml" +# 48497 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -47324,9 +48516,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 4337 "parsing/parser.mly" +# 4442 "parsing/parser.mly" ( "type" ) -# 47330 "parsing/parser.ml" +# 48522 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -47349,9 +48541,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 4338 "parsing/parser.mly" +# 4443 "parsing/parser.mly" ( "val" ) -# 47355 "parsing/parser.ml" +# 48547 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -47374,9 +48566,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 4339 "parsing/parser.mly" +# 4444 "parsing/parser.mly" ( "virtual" ) -# 47380 "parsing/parser.ml" +# 48572 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -47399,9 +48591,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 4340 "parsing/parser.mly" +# 4445 "parsing/parser.mly" ( "when" ) -# 47405 "parsing/parser.ml" +# 48597 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -47424,9 +48616,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 4341 "parsing/parser.mly" +# 4446 "parsing/parser.mly" ( "while" ) -# 47430 "parsing/parser.ml" +# 48622 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -47449,9 +48641,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 4342 "parsing/parser.mly" +# 4447 "parsing/parser.mly" ( "with" ) -# 47455 "parsing/parser.ml" +# 48647 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -47474,9 +48666,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Parsetree.type_exception * string Asttypes.loc option) = -# 3524 "parsing/parser.mly" +# 3601 "parsing/parser.mly" ( _1 ) -# 47480 "parsing/parser.ml" +# 48672 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -47550,18 +48742,18 @@ module Tables = struct let _v : (Parsetree.type_exception * string Asttypes.loc option) = let attrs = let _1 = _1_inlined5 in -# 4367 "parsing/parser.mly" +# 4472 "parsing/parser.mly" ( _1 ) -# 47556 "parsing/parser.ml" +# 48748 "parsing/parser.ml" in let _endpos_attrs_ = _endpos__1_inlined5_ in let attrs2 = let _1 = _1_inlined4 in -# 4371 "parsing/parser.mly" +# 4476 "parsing/parser.mly" ( _1 ) -# 47565 "parsing/parser.ml" +# 48757 "parsing/parser.ml" in let lid = @@ -47570,9 +48762,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1114 "parsing/parser.mly" +# 1123 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 47576 "parsing/parser.ml" +# 48768 "parsing/parser.ml" in let id = @@ -47581,30 +48773,30 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1114 "parsing/parser.mly" +# 1123 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 47587 "parsing/parser.ml" +# 48779 "parsing/parser.ml" in let attrs1 = let _1 = _1_inlined1 in -# 4371 "parsing/parser.mly" +# 4476 "parsing/parser.mly" ( _1 ) -# 47595 "parsing/parser.ml" +# 48787 "parsing/parser.ml" in let _endpos = _endpos_attrs_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 3533 "parsing/parser.mly" +# 3610 "parsing/parser.mly" ( let loc = make_loc _sloc in let docs = symbol_docs _sloc in Te.mk_exception ~attrs (Te.rebind id lid ~attrs:(attrs1 @ attrs2) ~loc ~docs) , ext ) -# 47608 "parsing/parser.ml" +# 48800 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -47634,9 +48826,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (Parsetree.expression) = -# 2997 "parsing/parser.mly" +# 3024 "parsing/parser.mly" ( _2 ) -# 47640 "parsing/parser.ml" +# 48832 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -47669,9 +48861,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2999 "parsing/parser.mly" +# 3026 "parsing/parser.mly" ( let (l, o, p) = _1 in ghexp ~loc:_sloc (Pexp_fun(l, o, p, _2)) ) -# 47675 "parsing/parser.ml" +# 48867 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -47694,9 +48886,9 @@ module Tables = struct MenhirLib.EngineTypes.endp = _endpos__4_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = xs; - MenhirLib.EngineTypes.startp = _startpos_xs_; - MenhirLib.EngineTypes.endp = _endpos_xs_; + MenhirLib.EngineTypes.semv = _3; + MenhirLib.EngineTypes.startp = _startpos__3_; + MenhirLib.EngineTypes.endp = _endpos__3_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; MenhirLib.EngineTypes.semv = _2; @@ -47715,24 +48907,104 @@ module Tables = struct } = _menhir_stack in let _5 : (Parsetree.expression) = Obj.magic _5 in let _4 : unit = Obj.magic _4 in - let xs : (string Asttypes.loc list) = Obj.magic xs in + let _3 : ((string Asttypes.loc * Asttypes.layout_annotation option) list) = Obj.magic _3 in let _2 : unit = Obj.magic _2 in let _1 : unit = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in let _endpos = _endpos__5_ in - let _v : (Parsetree.expression) = let _3 = -# 2873 "parsing/parser.mly" - ( xs ) -# 47728 "parsing/parser.ml" - in - let _endpos = _endpos__5_ in + let _v : (Parsetree.expression) = let _endpos = _endpos__5_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 3001 "parsing/parser.mly" +# 3028 "parsing/parser.mly" ( mk_newtypes ~loc:_sloc _3 _5 ) -# 47736 "parsing/parser.ml" +# 48923 "parsing/parser.ml" + in + { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = Obj.repr _v; + MenhirLib.EngineTypes.startp = _startpos; + MenhirLib.EngineTypes.endp = _endpos; + MenhirLib.EngineTypes.next = _menhir_stack; + }); + (fun _menhir_env -> + let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in + let { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _7; + MenhirLib.EngineTypes.startp = _startpos__7_; + MenhirLib.EngineTypes.endp = _endpos__7_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _6; + MenhirLib.EngineTypes.startp = _startpos__6_; + MenhirLib.EngineTypes.endp = _endpos__6_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _5; + MenhirLib.EngineTypes.startp = _startpos__5_; + MenhirLib.EngineTypes.endp = _endpos__5_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _4; + MenhirLib.EngineTypes.startp = _startpos__4_; + MenhirLib.EngineTypes.endp = _endpos__4_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _1_inlined1; + MenhirLib.EngineTypes.startp = _startpos__1_inlined1_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined1_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _2; + MenhirLib.EngineTypes.startp = _startpos__2_; + MenhirLib.EngineTypes.endp = _endpos__2_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + }; + }; + }; + }; + }; + }; + } = _menhir_stack in + let _7 : (Parsetree.expression) = Obj.magic _7 in + let _6 : unit = Obj.magic _6 in + let _5 : (Asttypes.layout_annotation) = Obj.magic _5 in + let _4 : unit = Obj.magic _4 in + let _1_inlined1 : ( +# 937 "parsing/parser.mly" + (string) +# 48984 "parsing/parser.ml" + ) = Obj.magic _1_inlined1 in + let _2 : unit = Obj.magic _2 in + let _1 : unit = Obj.magic _1 in + let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in + let _startpos = _startpos__1_ in + let _endpos = _endpos__7_ in + let _v : (Parsetree.expression) = let _3 = + let (_endpos__1_, _startpos__1_, _1) = (_endpos__1_inlined1_, _startpos__1_inlined1_, _1_inlined1) in + let _endpos = _endpos__1_ in + let _symbolstartpos = _startpos__1_ in + let _sloc = (_symbolstartpos, _endpos) in + +# 1123 "parsing/parser.mly" + ( mkrhs _1 _sloc ) +# 48999 "parsing/parser.ml" + + in + let _endpos = _endpos__7_ in + let _symbolstartpos = _startpos__1_ in + let _sloc = (_symbolstartpos, _endpos) in + +# 3030 "parsing/parser.mly" + ( mk_newtypes ~loc:_sloc [_3, Some _5] _7 ) +# 49008 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -47760,9 +49032,9 @@ module Tables = struct MenhirLib.EngineTypes.endp = _endpos__5_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = ty; - MenhirLib.EngineTypes.startp = _startpos_ty_; - MenhirLib.EngineTypes.endp = _endpos_ty_; + MenhirLib.EngineTypes.semv = inner_type; + MenhirLib.EngineTypes.startp = _startpos_inner_type_; + MenhirLib.EngineTypes.endp = _endpos_inner_type_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; MenhirLib.EngineTypes.semv = _3; @@ -47795,9 +49067,9 @@ module Tables = struct let codomain : (Parsetree.core_type) = Obj.magic codomain in let _4 : unit = Obj.magic _4 in let _5 : unit = Obj.magic _5 in - let ty : (Parsetree.core_type) = Obj.magic ty in + let inner_type : (Parsetree.core_type) = Obj.magic inner_type in let _3 : unit = Obj.magic _3 in - let xs : (Asttypes.label Asttypes.loc list) = Obj.magic xs in + let xs : ((Asttypes.label Asttypes.loc * Asttypes.layout_annotation option) list) = Obj.magic xs in let _1 : unit = Obj.magic _1 in let label : (string) = Obj.magic label in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in @@ -47809,29 +49081,29 @@ module Tables = struct let _1 = let _1 = let _1 = - let vars = + let bound_vars = let _1 = let xs = # 253 "" ( List.rev xs ) -# 47818 "parsing/parser.ml" +# 49090 "parsing/parser.ml" in -# 1216 "parsing/parser.mly" +# 1228 "parsing/parser.mly" ( xs ) -# 47823 "parsing/parser.ml" +# 49095 "parsing/parser.ml" in -# 3709 "parsing/parser.mly" +# 3798 "parsing/parser.mly" ( _1 ) -# 47829 "parsing/parser.ml" +# 49101 "parsing/parser.ml" in -# 3821 "parsing/parser.mly" - ( Ptyp_poly(vars, ty) ) -# 47835 "parsing/parser.ml" +# 3920 "parsing/parser.mly" + ( Jane_syntax.Layouts.Ltyp_poly { bound_vars; inner_type } ) +# 49107 "parsing/parser.ml" in let _endpos__1_ = _endpos__5_ in @@ -47839,40 +49111,40 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1151 "parsing/parser.mly" - ( mktyp ~loc:_sloc _1 ) -# 47845 "parsing/parser.ml" +# 1187 "parsing/parser.mly" + ( Jane_syntax.Layouts.type_of ~loc:(make_loc _sloc) ~attrs:[] _1 ) +# 49117 "parsing/parser.ml" in -# 3823 "parsing/parser.mly" +# 3922 "parsing/parser.mly" ( _1 ) -# 47851 "parsing/parser.ml" +# 49123 "parsing/parser.ml" in let _endpos__1_ = _endpos__5_ in -# 1112 "parsing/parser.mly" +# 1121 "parsing/parser.mly" ( extra_rhs_core_type _1 ~pos:_endpos__1_ ) -# 47858 "parsing/parser.ml" +# 49130 "parsing/parser.ml" in let local = -# 3814 "parsing/parser.mly" +# 3913 "parsing/parser.mly" ( false ) -# 47864 "parsing/parser.ml" +# 49136 "parsing/parser.ml" in let (_endpos_local_, _startpos_local_) = (_endpos_label_, _endpos_label_) in let label = -# 3806 "parsing/parser.mly" +# 3905 "parsing/parser.mly" ( Optional label ) -# 47870 "parsing/parser.ml" +# 49142 "parsing/parser.ml" in let _loc_local_ = (_startpos_local_, _endpos_local_) in -# 3786 "parsing/parser.mly" +# 3885 "parsing/parser.mly" ( Ptyp_arrow(label, mktyp_local_if local domain _loc_local_, codomain) ) -# 47876 "parsing/parser.ml" +# 49148 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_codomain_, _startpos_label_) in @@ -47880,15 +49152,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1151 "parsing/parser.mly" +# 1160 "parsing/parser.mly" ( mktyp ~loc:_sloc _1 ) -# 47886 "parsing/parser.ml" +# 49158 "parsing/parser.ml" in -# 3788 "parsing/parser.mly" +# 3887 "parsing/parser.mly" ( _1 ) -# 47892 "parsing/parser.ml" +# 49164 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -47935,33 +49207,33 @@ module Tables = struct let _1 = let domain = let _1 = -# 3825 "parsing/parser.mly" +# 3924 "parsing/parser.mly" ( ty ) -# 47941 "parsing/parser.ml" +# 49213 "parsing/parser.ml" in let _endpos__1_ = _endpos_ty_ in -# 1112 "parsing/parser.mly" +# 1121 "parsing/parser.mly" ( extra_rhs_core_type _1 ~pos:_endpos__1_ ) -# 47947 "parsing/parser.ml" +# 49219 "parsing/parser.ml" in let local = -# 3814 "parsing/parser.mly" +# 3913 "parsing/parser.mly" ( false ) -# 47953 "parsing/parser.ml" +# 49225 "parsing/parser.ml" in let (_endpos_local_, _startpos_local_) = (_endpos_label_, _endpos_label_) in let label = -# 3806 "parsing/parser.mly" +# 3905 "parsing/parser.mly" ( Optional label ) -# 47959 "parsing/parser.ml" +# 49231 "parsing/parser.ml" in let _loc_local_ = (_startpos_local_, _endpos_local_) in -# 3786 "parsing/parser.mly" +# 3885 "parsing/parser.mly" ( Ptyp_arrow(label, mktyp_local_if local domain _loc_local_, codomain) ) -# 47965 "parsing/parser.ml" +# 49237 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_codomain_, _startpos_label_) in @@ -47969,15 +49241,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1151 "parsing/parser.mly" +# 1160 "parsing/parser.mly" ( mktyp ~loc:_sloc _1 ) -# 47975 "parsing/parser.ml" +# 49247 "parsing/parser.ml" in -# 3788 "parsing/parser.mly" +# 3887 "parsing/parser.mly" ( _1 ) -# 47981 "parsing/parser.ml" +# 49253 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -48005,9 +49277,9 @@ module Tables = struct MenhirLib.EngineTypes.endp = _endpos__5_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = ty; - MenhirLib.EngineTypes.startp = _startpos_ty_; - MenhirLib.EngineTypes.endp = _endpos_ty_; + MenhirLib.EngineTypes.semv = inner_type; + MenhirLib.EngineTypes.startp = _startpos_inner_type_; + MenhirLib.EngineTypes.endp = _endpos_inner_type_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; MenhirLib.EngineTypes.semv = _3; @@ -48046,9 +49318,9 @@ module Tables = struct let codomain : (Parsetree.core_type) = Obj.magic codomain in let _4 : unit = Obj.magic _4 in let _5 : unit = Obj.magic _5 in - let ty : (Parsetree.core_type) = Obj.magic ty in + let inner_type : (Parsetree.core_type) = Obj.magic inner_type in let _3 : unit = Obj.magic _3 in - let xs : (Asttypes.label Asttypes.loc list) = Obj.magic xs in + let xs : ((Asttypes.label Asttypes.loc * Asttypes.layout_annotation option) list) = Obj.magic xs in let _1_inlined1 : unit = Obj.magic _1_inlined1 in let _1 : unit = Obj.magic _1 in let label : (string) = Obj.magic label in @@ -48062,29 +49334,29 @@ module Tables = struct let _1 = let _1 = let _1 = - let vars = + let bound_vars = let _1 = let xs = # 253 "" ( List.rev xs ) -# 48071 "parsing/parser.ml" +# 49343 "parsing/parser.ml" in -# 1216 "parsing/parser.mly" +# 1228 "parsing/parser.mly" ( xs ) -# 48076 "parsing/parser.ml" +# 49348 "parsing/parser.ml" in -# 3709 "parsing/parser.mly" +# 3798 "parsing/parser.mly" ( _1 ) -# 48082 "parsing/parser.ml" +# 49354 "parsing/parser.ml" in -# 3821 "parsing/parser.mly" - ( Ptyp_poly(vars, ty) ) -# 48088 "parsing/parser.ml" +# 3920 "parsing/parser.mly" + ( Jane_syntax.Layouts.Ltyp_poly { bound_vars; inner_type } ) +# 49360 "parsing/parser.ml" in let _endpos__1_ = _endpos__5_ in @@ -48092,40 +49364,40 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1151 "parsing/parser.mly" - ( mktyp ~loc:_sloc _1 ) -# 48098 "parsing/parser.ml" +# 1187 "parsing/parser.mly" + ( Jane_syntax.Layouts.type_of ~loc:(make_loc _sloc) ~attrs:[] _1 ) +# 49370 "parsing/parser.ml" in -# 3823 "parsing/parser.mly" +# 3922 "parsing/parser.mly" ( _1 ) -# 48104 "parsing/parser.ml" +# 49376 "parsing/parser.ml" in let _endpos__1_ = _endpos__5_ in -# 1112 "parsing/parser.mly" +# 1121 "parsing/parser.mly" ( extra_rhs_core_type _1 ~pos:_endpos__1_ ) -# 48111 "parsing/parser.ml" +# 49383 "parsing/parser.ml" in let local = -# 3816 "parsing/parser.mly" +# 3915 "parsing/parser.mly" ( true ) -# 48117 "parsing/parser.ml" +# 49389 "parsing/parser.ml" in let (_endpos_local_, _startpos_local_) = (_endpos__1_, _startpos__1_) in let label = -# 3806 "parsing/parser.mly" +# 3905 "parsing/parser.mly" ( Optional label ) -# 48123 "parsing/parser.ml" +# 49395 "parsing/parser.ml" in let _loc_local_ = (_startpos_local_, _endpos_local_) in -# 3786 "parsing/parser.mly" +# 3885 "parsing/parser.mly" ( Ptyp_arrow(label, mktyp_local_if local domain _loc_local_, codomain) ) -# 48129 "parsing/parser.ml" +# 49401 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_codomain_, _startpos_label_) in @@ -48133,15 +49405,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1151 "parsing/parser.mly" +# 1160 "parsing/parser.mly" ( mktyp ~loc:_sloc _1 ) -# 48139 "parsing/parser.ml" +# 49411 "parsing/parser.ml" in -# 3788 "parsing/parser.mly" +# 3887 "parsing/parser.mly" ( _1 ) -# 48145 "parsing/parser.ml" +# 49417 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -48195,33 +49467,33 @@ module Tables = struct let _1 = let domain = let _1 = -# 3825 "parsing/parser.mly" +# 3924 "parsing/parser.mly" ( ty ) -# 48201 "parsing/parser.ml" +# 49473 "parsing/parser.ml" in let _endpos__1_ = _endpos_ty_ in -# 1112 "parsing/parser.mly" +# 1121 "parsing/parser.mly" ( extra_rhs_core_type _1 ~pos:_endpos__1_ ) -# 48207 "parsing/parser.ml" +# 49479 "parsing/parser.ml" in let local = -# 3816 "parsing/parser.mly" +# 3915 "parsing/parser.mly" ( true ) -# 48213 "parsing/parser.ml" +# 49485 "parsing/parser.ml" in let (_endpos_local_, _startpos_local_) = (_endpos__1_, _startpos__1_) in let label = -# 3806 "parsing/parser.mly" +# 3905 "parsing/parser.mly" ( Optional label ) -# 48219 "parsing/parser.ml" +# 49491 "parsing/parser.ml" in let _loc_local_ = (_startpos_local_, _endpos_local_) in -# 3786 "parsing/parser.mly" +# 3885 "parsing/parser.mly" ( Ptyp_arrow(label, mktyp_local_if local domain _loc_local_, codomain) ) -# 48225 "parsing/parser.ml" +# 49497 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_codomain_, _startpos_label_) in @@ -48229,15 +49501,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1151 "parsing/parser.mly" +# 1160 "parsing/parser.mly" ( mktyp ~loc:_sloc _1 ) -# 48235 "parsing/parser.ml" +# 49507 "parsing/parser.ml" in -# 3788 "parsing/parser.mly" +# 3887 "parsing/parser.mly" ( _1 ) -# 48241 "parsing/parser.ml" +# 49513 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -48265,9 +49537,9 @@ module Tables = struct MenhirLib.EngineTypes.endp = _endpos__5_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = ty; - MenhirLib.EngineTypes.startp = _startpos_ty_; - MenhirLib.EngineTypes.endp = _endpos_ty_; + MenhirLib.EngineTypes.semv = inner_type; + MenhirLib.EngineTypes.startp = _startpos_inner_type_; + MenhirLib.EngineTypes.endp = _endpos_inner_type_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; MenhirLib.EngineTypes.semv = _3; @@ -48306,15 +49578,15 @@ module Tables = struct let codomain : (Parsetree.core_type) = Obj.magic codomain in let _4 : unit = Obj.magic _4 in let _5 : unit = Obj.magic _5 in - let ty : (Parsetree.core_type) = Obj.magic ty in + let inner_type : (Parsetree.core_type) = Obj.magic inner_type in let _3 : unit = Obj.magic _3 in - let xs : (Asttypes.label Asttypes.loc list) = Obj.magic xs in + let xs : ((Asttypes.label Asttypes.loc * Asttypes.layout_annotation option) list) = Obj.magic xs in let _1 : unit = Obj.magic _1 in let _2 : unit = Obj.magic _2 in let label : ( -# 928 "parsing/parser.mly" +# 937 "parsing/parser.mly" (string) -# 48318 "parsing/parser.ml" +# 49590 "parsing/parser.ml" ) = Obj.magic label in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos_label_ in @@ -48325,29 +49597,29 @@ module Tables = struct let _1 = let _1 = let _1 = - let vars = + let bound_vars = let _1 = let xs = # 253 "" ( List.rev xs ) -# 48334 "parsing/parser.ml" +# 49606 "parsing/parser.ml" in -# 1216 "parsing/parser.mly" +# 1228 "parsing/parser.mly" ( xs ) -# 48339 "parsing/parser.ml" +# 49611 "parsing/parser.ml" in -# 3709 "parsing/parser.mly" +# 3798 "parsing/parser.mly" ( _1 ) -# 48345 "parsing/parser.ml" +# 49617 "parsing/parser.ml" in -# 3821 "parsing/parser.mly" - ( Ptyp_poly(vars, ty) ) -# 48351 "parsing/parser.ml" +# 3920 "parsing/parser.mly" + ( Jane_syntax.Layouts.Ltyp_poly { bound_vars; inner_type } ) +# 49623 "parsing/parser.ml" in let _endpos__1_ = _endpos__5_ in @@ -48355,40 +49627,40 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1151 "parsing/parser.mly" - ( mktyp ~loc:_sloc _1 ) -# 48361 "parsing/parser.ml" +# 1187 "parsing/parser.mly" + ( Jane_syntax.Layouts.type_of ~loc:(make_loc _sloc) ~attrs:[] _1 ) +# 49633 "parsing/parser.ml" in -# 3823 "parsing/parser.mly" +# 3922 "parsing/parser.mly" ( _1 ) -# 48367 "parsing/parser.ml" +# 49639 "parsing/parser.ml" in let _endpos__1_ = _endpos__5_ in -# 1112 "parsing/parser.mly" +# 1121 "parsing/parser.mly" ( extra_rhs_core_type _1 ~pos:_endpos__1_ ) -# 48374 "parsing/parser.ml" +# 49646 "parsing/parser.ml" in let local = -# 3814 "parsing/parser.mly" +# 3913 "parsing/parser.mly" ( false ) -# 48380 "parsing/parser.ml" +# 49652 "parsing/parser.ml" in let (_endpos_local_, _startpos_local_) = (_endpos__2_, _endpos__2_) in let label = -# 3808 "parsing/parser.mly" +# 3907 "parsing/parser.mly" ( Labelled label ) -# 48386 "parsing/parser.ml" +# 49658 "parsing/parser.ml" in let _loc_local_ = (_startpos_local_, _endpos_local_) in -# 3786 "parsing/parser.mly" +# 3885 "parsing/parser.mly" ( Ptyp_arrow(label, mktyp_local_if local domain _loc_local_, codomain) ) -# 48392 "parsing/parser.ml" +# 49664 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_codomain_, _startpos_label_) in @@ -48396,15 +49668,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1151 "parsing/parser.mly" +# 1160 "parsing/parser.mly" ( mktyp ~loc:_sloc _1 ) -# 48402 "parsing/parser.ml" +# 49674 "parsing/parser.ml" in -# 3788 "parsing/parser.mly" +# 3887 "parsing/parser.mly" ( _1 ) -# 48408 "parsing/parser.ml" +# 49680 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -48451,9 +49723,9 @@ module Tables = struct let ty : (Parsetree.core_type) = Obj.magic ty in let _2 : unit = Obj.magic _2 in let label : ( -# 928 "parsing/parser.mly" +# 937 "parsing/parser.mly" (string) -# 48457 "parsing/parser.ml" +# 49729 "parsing/parser.ml" ) = Obj.magic label in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos_label_ in @@ -48462,33 +49734,33 @@ module Tables = struct let _1 = let domain = let _1 = -# 3825 "parsing/parser.mly" +# 3924 "parsing/parser.mly" ( ty ) -# 48468 "parsing/parser.ml" +# 49740 "parsing/parser.ml" in let _endpos__1_ = _endpos_ty_ in -# 1112 "parsing/parser.mly" +# 1121 "parsing/parser.mly" ( extra_rhs_core_type _1 ~pos:_endpos__1_ ) -# 48474 "parsing/parser.ml" +# 49746 "parsing/parser.ml" in let local = -# 3814 "parsing/parser.mly" +# 3913 "parsing/parser.mly" ( false ) -# 48480 "parsing/parser.ml" +# 49752 "parsing/parser.ml" in let (_endpos_local_, _startpos_local_) = (_endpos__2_, _endpos__2_) in let label = -# 3808 "parsing/parser.mly" +# 3907 "parsing/parser.mly" ( Labelled label ) -# 48486 "parsing/parser.ml" +# 49758 "parsing/parser.ml" in let _loc_local_ = (_startpos_local_, _endpos_local_) in -# 3786 "parsing/parser.mly" +# 3885 "parsing/parser.mly" ( Ptyp_arrow(label, mktyp_local_if local domain _loc_local_, codomain) ) -# 48492 "parsing/parser.ml" +# 49764 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_codomain_, _startpos_label_) in @@ -48496,15 +49768,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1151 "parsing/parser.mly" +# 1160 "parsing/parser.mly" ( mktyp ~loc:_sloc _1 ) -# 48502 "parsing/parser.ml" +# 49774 "parsing/parser.ml" in -# 3788 "parsing/parser.mly" +# 3887 "parsing/parser.mly" ( _1 ) -# 48508 "parsing/parser.ml" +# 49780 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -48532,9 +49804,9 @@ module Tables = struct MenhirLib.EngineTypes.endp = _endpos__5_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = ty; - MenhirLib.EngineTypes.startp = _startpos_ty_; - MenhirLib.EngineTypes.endp = _endpos_ty_; + MenhirLib.EngineTypes.semv = inner_type; + MenhirLib.EngineTypes.startp = _startpos_inner_type_; + MenhirLib.EngineTypes.endp = _endpos_inner_type_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; MenhirLib.EngineTypes.semv = _3; @@ -48579,16 +49851,16 @@ module Tables = struct let codomain : (Parsetree.core_type) = Obj.magic codomain in let _4 : unit = Obj.magic _4 in let _5 : unit = Obj.magic _5 in - let ty : (Parsetree.core_type) = Obj.magic ty in + let inner_type : (Parsetree.core_type) = Obj.magic inner_type in let _3 : unit = Obj.magic _3 in - let xs : (Asttypes.label Asttypes.loc list) = Obj.magic xs in + let xs : ((Asttypes.label Asttypes.loc * Asttypes.layout_annotation option) list) = Obj.magic xs in let _1_inlined1 : unit = Obj.magic _1_inlined1 in let _1 : unit = Obj.magic _1 in let _2 : unit = Obj.magic _2 in let label : ( -# 928 "parsing/parser.mly" +# 937 "parsing/parser.mly" (string) -# 48592 "parsing/parser.ml" +# 49864 "parsing/parser.ml" ) = Obj.magic label in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos_label_ in @@ -48600,29 +49872,29 @@ module Tables = struct let _1 = let _1 = let _1 = - let vars = + let bound_vars = let _1 = let xs = # 253 "" ( List.rev xs ) -# 48609 "parsing/parser.ml" +# 49881 "parsing/parser.ml" in -# 1216 "parsing/parser.mly" +# 1228 "parsing/parser.mly" ( xs ) -# 48614 "parsing/parser.ml" +# 49886 "parsing/parser.ml" in -# 3709 "parsing/parser.mly" +# 3798 "parsing/parser.mly" ( _1 ) -# 48620 "parsing/parser.ml" +# 49892 "parsing/parser.ml" in -# 3821 "parsing/parser.mly" - ( Ptyp_poly(vars, ty) ) -# 48626 "parsing/parser.ml" +# 3920 "parsing/parser.mly" + ( Jane_syntax.Layouts.Ltyp_poly { bound_vars; inner_type } ) +# 49898 "parsing/parser.ml" in let _endpos__1_ = _endpos__5_ in @@ -48630,40 +49902,40 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1151 "parsing/parser.mly" - ( mktyp ~loc:_sloc _1 ) -# 48636 "parsing/parser.ml" +# 1187 "parsing/parser.mly" + ( Jane_syntax.Layouts.type_of ~loc:(make_loc _sloc) ~attrs:[] _1 ) +# 49908 "parsing/parser.ml" in -# 3823 "parsing/parser.mly" +# 3922 "parsing/parser.mly" ( _1 ) -# 48642 "parsing/parser.ml" +# 49914 "parsing/parser.ml" in let _endpos__1_ = _endpos__5_ in -# 1112 "parsing/parser.mly" +# 1121 "parsing/parser.mly" ( extra_rhs_core_type _1 ~pos:_endpos__1_ ) -# 48649 "parsing/parser.ml" +# 49921 "parsing/parser.ml" in let local = -# 3816 "parsing/parser.mly" +# 3915 "parsing/parser.mly" ( true ) -# 48655 "parsing/parser.ml" +# 49927 "parsing/parser.ml" in let (_endpos_local_, _startpos_local_) = (_endpos__1_, _startpos__1_) in let label = -# 3808 "parsing/parser.mly" +# 3907 "parsing/parser.mly" ( Labelled label ) -# 48661 "parsing/parser.ml" +# 49933 "parsing/parser.ml" in let _loc_local_ = (_startpos_local_, _endpos_local_) in -# 3786 "parsing/parser.mly" +# 3885 "parsing/parser.mly" ( Ptyp_arrow(label, mktyp_local_if local domain _loc_local_, codomain) ) -# 48667 "parsing/parser.ml" +# 49939 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_codomain_, _startpos_label_) in @@ -48671,15 +49943,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1151 "parsing/parser.mly" +# 1160 "parsing/parser.mly" ( mktyp ~loc:_sloc _1 ) -# 48677 "parsing/parser.ml" +# 49949 "parsing/parser.ml" in -# 3788 "parsing/parser.mly" +# 3887 "parsing/parser.mly" ( _1 ) -# 48683 "parsing/parser.ml" +# 49955 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -48733,9 +50005,9 @@ module Tables = struct let _1 : unit = Obj.magic _1 in let _2 : unit = Obj.magic _2 in let label : ( -# 928 "parsing/parser.mly" +# 937 "parsing/parser.mly" (string) -# 48739 "parsing/parser.ml" +# 50011 "parsing/parser.ml" ) = Obj.magic label in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos_label_ in @@ -48744,33 +50016,33 @@ module Tables = struct let _1 = let domain = let _1 = -# 3825 "parsing/parser.mly" +# 3924 "parsing/parser.mly" ( ty ) -# 48750 "parsing/parser.ml" +# 50022 "parsing/parser.ml" in let _endpos__1_ = _endpos_ty_ in -# 1112 "parsing/parser.mly" +# 1121 "parsing/parser.mly" ( extra_rhs_core_type _1 ~pos:_endpos__1_ ) -# 48756 "parsing/parser.ml" +# 50028 "parsing/parser.ml" in let local = -# 3816 "parsing/parser.mly" +# 3915 "parsing/parser.mly" ( true ) -# 48762 "parsing/parser.ml" +# 50034 "parsing/parser.ml" in let (_endpos_local_, _startpos_local_) = (_endpos__1_, _startpos__1_) in let label = -# 3808 "parsing/parser.mly" +# 3907 "parsing/parser.mly" ( Labelled label ) -# 48768 "parsing/parser.ml" +# 50040 "parsing/parser.ml" in let _loc_local_ = (_startpos_local_, _endpos_local_) in -# 3786 "parsing/parser.mly" +# 3885 "parsing/parser.mly" ( Ptyp_arrow(label, mktyp_local_if local domain _loc_local_, codomain) ) -# 48774 "parsing/parser.ml" +# 50046 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_codomain_, _startpos_label_) in @@ -48778,15 +50050,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1151 "parsing/parser.mly" +# 1160 "parsing/parser.mly" ( mktyp ~loc:_sloc _1 ) -# 48784 "parsing/parser.ml" +# 50056 "parsing/parser.ml" in -# 3788 "parsing/parser.mly" +# 3887 "parsing/parser.mly" ( _1 ) -# 48790 "parsing/parser.ml" +# 50062 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -48814,9 +50086,9 @@ module Tables = struct MenhirLib.EngineTypes.endp = _endpos__5_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = ty; - MenhirLib.EngineTypes.startp = _startpos_ty_; - MenhirLib.EngineTypes.endp = _endpos_ty_; + MenhirLib.EngineTypes.semv = inner_type; + MenhirLib.EngineTypes.startp = _startpos_inner_type_; + MenhirLib.EngineTypes.endp = _endpos_inner_type_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; MenhirLib.EngineTypes.semv = _3; @@ -48843,9 +50115,9 @@ module Tables = struct let codomain : (Parsetree.core_type) = Obj.magic codomain in let _4 : unit = Obj.magic _4 in let _5 : unit = Obj.magic _5 in - let ty : (Parsetree.core_type) = Obj.magic ty in + let inner_type : (Parsetree.core_type) = Obj.magic inner_type in let _3 : unit = Obj.magic _3 in - let xs : (Asttypes.label Asttypes.loc list) = Obj.magic xs in + let xs : ((Asttypes.label Asttypes.loc * Asttypes.layout_annotation option) list) = Obj.magic xs in let _1 : unit = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in @@ -48856,29 +50128,29 @@ module Tables = struct let _1 = let _1 = let _1 = - let vars = + let bound_vars = let _1 = let xs = # 253 "" ( List.rev xs ) -# 48865 "parsing/parser.ml" +# 50137 "parsing/parser.ml" in -# 1216 "parsing/parser.mly" +# 1228 "parsing/parser.mly" ( xs ) -# 48870 "parsing/parser.ml" +# 50142 "parsing/parser.ml" in -# 3709 "parsing/parser.mly" +# 3798 "parsing/parser.mly" ( _1 ) -# 48876 "parsing/parser.ml" +# 50148 "parsing/parser.ml" in -# 3821 "parsing/parser.mly" - ( Ptyp_poly(vars, ty) ) -# 48882 "parsing/parser.ml" +# 3920 "parsing/parser.mly" + ( Jane_syntax.Layouts.Ltyp_poly { bound_vars; inner_type } ) +# 50154 "parsing/parser.ml" in let _endpos__1_ = _endpos__5_ in @@ -48886,40 +50158,40 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1151 "parsing/parser.mly" - ( mktyp ~loc:_sloc _1 ) -# 48892 "parsing/parser.ml" +# 1187 "parsing/parser.mly" + ( Jane_syntax.Layouts.type_of ~loc:(make_loc _sloc) ~attrs:[] _1 ) +# 50164 "parsing/parser.ml" in -# 3823 "parsing/parser.mly" +# 3922 "parsing/parser.mly" ( _1 ) -# 48898 "parsing/parser.ml" +# 50170 "parsing/parser.ml" in let _endpos__1_ = _endpos__5_ in -# 1112 "parsing/parser.mly" +# 1121 "parsing/parser.mly" ( extra_rhs_core_type _1 ~pos:_endpos__1_ ) -# 48905 "parsing/parser.ml" +# 50177 "parsing/parser.ml" in let local = -# 3814 "parsing/parser.mly" +# 3913 "parsing/parser.mly" ( false ) -# 48911 "parsing/parser.ml" +# 50183 "parsing/parser.ml" in let (_endpos_local_, _startpos_local_) = (_endpos__0_, _endpos__0_) in let label = -# 3810 "parsing/parser.mly" +# 3909 "parsing/parser.mly" ( Nolabel ) -# 48917 "parsing/parser.ml" +# 50189 "parsing/parser.ml" in let _loc_local_ = (_startpos_local_, _endpos_local_) in -# 3786 "parsing/parser.mly" +# 3885 "parsing/parser.mly" ( Ptyp_arrow(label, mktyp_local_if local domain _loc_local_, codomain) ) -# 48923 "parsing/parser.ml" +# 50195 "parsing/parser.ml" in let _endpos__1_ = _endpos_codomain_ in @@ -48927,15 +50199,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1151 "parsing/parser.mly" +# 1160 "parsing/parser.mly" ( mktyp ~loc:_sloc _1 ) -# 48933 "parsing/parser.ml" +# 50205 "parsing/parser.ml" in -# 3788 "parsing/parser.mly" +# 3887 "parsing/parser.mly" ( _1 ) -# 48939 "parsing/parser.ml" +# 50211 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -48975,33 +50247,33 @@ module Tables = struct let _1 = let domain = let _1 = -# 3825 "parsing/parser.mly" +# 3924 "parsing/parser.mly" ( ty ) -# 48981 "parsing/parser.ml" +# 50253 "parsing/parser.ml" in let _endpos__1_ = _endpos_ty_ in -# 1112 "parsing/parser.mly" +# 1121 "parsing/parser.mly" ( extra_rhs_core_type _1 ~pos:_endpos__1_ ) -# 48987 "parsing/parser.ml" +# 50259 "parsing/parser.ml" in let local = -# 3814 "parsing/parser.mly" +# 3913 "parsing/parser.mly" ( false ) -# 48993 "parsing/parser.ml" +# 50265 "parsing/parser.ml" in let (_endpos_local_, _startpos_local_) = (_endpos__0_, _endpos__0_) in let label = -# 3810 "parsing/parser.mly" +# 3909 "parsing/parser.mly" ( Nolabel ) -# 48999 "parsing/parser.ml" +# 50271 "parsing/parser.ml" in let _loc_local_ = (_startpos_local_, _endpos_local_) in -# 3786 "parsing/parser.mly" +# 3885 "parsing/parser.mly" ( Ptyp_arrow(label, mktyp_local_if local domain _loc_local_, codomain) ) -# 49005 "parsing/parser.ml" +# 50277 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_codomain_, _startpos_ty_) in @@ -49009,15 +50281,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1151 "parsing/parser.mly" +# 1160 "parsing/parser.mly" ( mktyp ~loc:_sloc _1 ) -# 49015 "parsing/parser.ml" +# 50287 "parsing/parser.ml" in -# 3788 "parsing/parser.mly" +# 3887 "parsing/parser.mly" ( _1 ) -# 49021 "parsing/parser.ml" +# 50293 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -49045,9 +50317,9 @@ module Tables = struct MenhirLib.EngineTypes.endp = _endpos__5_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = ty; - MenhirLib.EngineTypes.startp = _startpos_ty_; - MenhirLib.EngineTypes.endp = _endpos_ty_; + MenhirLib.EngineTypes.semv = inner_type; + MenhirLib.EngineTypes.startp = _startpos_inner_type_; + MenhirLib.EngineTypes.endp = _endpos_inner_type_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; MenhirLib.EngineTypes.semv = _3; @@ -49080,9 +50352,9 @@ module Tables = struct let codomain : (Parsetree.core_type) = Obj.magic codomain in let _4 : unit = Obj.magic _4 in let _5 : unit = Obj.magic _5 in - let ty : (Parsetree.core_type) = Obj.magic ty in + let inner_type : (Parsetree.core_type) = Obj.magic inner_type in let _3 : unit = Obj.magic _3 in - let xs : (Asttypes.label Asttypes.loc list) = Obj.magic xs in + let xs : ((Asttypes.label Asttypes.loc * Asttypes.layout_annotation option) list) = Obj.magic xs in let _1_inlined1 : unit = Obj.magic _1_inlined1 in let _1 : unit = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in @@ -49095,29 +50367,29 @@ module Tables = struct let _1 = let _1 = let _1 = - let vars = + let bound_vars = let _1 = let xs = # 253 "" ( List.rev xs ) -# 49104 "parsing/parser.ml" +# 50376 "parsing/parser.ml" in -# 1216 "parsing/parser.mly" +# 1228 "parsing/parser.mly" ( xs ) -# 49109 "parsing/parser.ml" +# 50381 "parsing/parser.ml" in -# 3709 "parsing/parser.mly" +# 3798 "parsing/parser.mly" ( _1 ) -# 49115 "parsing/parser.ml" +# 50387 "parsing/parser.ml" in -# 3821 "parsing/parser.mly" - ( Ptyp_poly(vars, ty) ) -# 49121 "parsing/parser.ml" +# 3920 "parsing/parser.mly" + ( Jane_syntax.Layouts.Ltyp_poly { bound_vars; inner_type } ) +# 50393 "parsing/parser.ml" in let _endpos__1_ = _endpos__5_ in @@ -49125,40 +50397,40 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1151 "parsing/parser.mly" - ( mktyp ~loc:_sloc _1 ) -# 49131 "parsing/parser.ml" +# 1187 "parsing/parser.mly" + ( Jane_syntax.Layouts.type_of ~loc:(make_loc _sloc) ~attrs:[] _1 ) +# 50403 "parsing/parser.ml" in -# 3823 "parsing/parser.mly" +# 3922 "parsing/parser.mly" ( _1 ) -# 49137 "parsing/parser.ml" +# 50409 "parsing/parser.ml" in let _endpos__1_ = _endpos__5_ in -# 1112 "parsing/parser.mly" +# 1121 "parsing/parser.mly" ( extra_rhs_core_type _1 ~pos:_endpos__1_ ) -# 49144 "parsing/parser.ml" +# 50416 "parsing/parser.ml" in let local = -# 3816 "parsing/parser.mly" +# 3915 "parsing/parser.mly" ( true ) -# 49150 "parsing/parser.ml" +# 50422 "parsing/parser.ml" in let (_endpos_local_, _startpos_local_) = (_endpos__1_, _startpos__1_) in let label = -# 3810 "parsing/parser.mly" +# 3909 "parsing/parser.mly" ( Nolabel ) -# 49156 "parsing/parser.ml" +# 50428 "parsing/parser.ml" in let _loc_local_ = (_startpos_local_, _endpos_local_) in -# 3786 "parsing/parser.mly" +# 3885 "parsing/parser.mly" ( Ptyp_arrow(label, mktyp_local_if local domain _loc_local_, codomain) ) -# 49162 "parsing/parser.ml" +# 50434 "parsing/parser.ml" in let _endpos__1_ = _endpos_codomain_ in @@ -49166,15 +50438,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1151 "parsing/parser.mly" +# 1160 "parsing/parser.mly" ( mktyp ~loc:_sloc _1 ) -# 49172 "parsing/parser.ml" +# 50444 "parsing/parser.ml" in -# 3788 "parsing/parser.mly" +# 3887 "parsing/parser.mly" ( _1 ) -# 49178 "parsing/parser.ml" +# 50450 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -49221,33 +50493,33 @@ module Tables = struct let _1 = let domain = let _1 = -# 3825 "parsing/parser.mly" +# 3924 "parsing/parser.mly" ( ty ) -# 49227 "parsing/parser.ml" +# 50499 "parsing/parser.ml" in let _endpos__1_ = _endpos_ty_ in -# 1112 "parsing/parser.mly" +# 1121 "parsing/parser.mly" ( extra_rhs_core_type _1 ~pos:_endpos__1_ ) -# 49233 "parsing/parser.ml" +# 50505 "parsing/parser.ml" in let local = -# 3816 "parsing/parser.mly" +# 3915 "parsing/parser.mly" ( true ) -# 49239 "parsing/parser.ml" +# 50511 "parsing/parser.ml" in let (_endpos_local_, _startpos_local_) = (_endpos__1_, _startpos__1_) in let label = -# 3810 "parsing/parser.mly" +# 3909 "parsing/parser.mly" ( Nolabel ) -# 49245 "parsing/parser.ml" +# 50517 "parsing/parser.ml" in let _loc_local_ = (_startpos_local_, _endpos_local_) in -# 3786 "parsing/parser.mly" +# 3885 "parsing/parser.mly" ( Ptyp_arrow(label, mktyp_local_if local domain _loc_local_, codomain) ) -# 49251 "parsing/parser.ml" +# 50523 "parsing/parser.ml" in let _endpos__1_ = _endpos_codomain_ in @@ -49255,15 +50527,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1151 "parsing/parser.mly" +# 1160 "parsing/parser.mly" ( mktyp ~loc:_sloc _1 ) -# 49261 "parsing/parser.ml" +# 50533 "parsing/parser.ml" in -# 3788 "parsing/parser.mly" +# 3887 "parsing/parser.mly" ( _1 ) -# 49267 "parsing/parser.ml" +# 50539 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -49291,9 +50563,9 @@ module Tables = struct MenhirLib.EngineTypes.endp = _endpos__5_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = ty; - MenhirLib.EngineTypes.startp = _startpos_ty_; - MenhirLib.EngineTypes.endp = _endpos_ty_; + MenhirLib.EngineTypes.semv = inner_type; + MenhirLib.EngineTypes.startp = _startpos_inner_type_; + MenhirLib.EngineTypes.endp = _endpos_inner_type_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; MenhirLib.EngineTypes.semv = _3; @@ -49326,9 +50598,9 @@ module Tables = struct let codomain : (Parsetree.core_type) = Obj.magic codomain in let _4 : unit = Obj.magic _4 in let _5 : unit = Obj.magic _5 in - let ty : (Parsetree.core_type) = Obj.magic ty in + let inner_type : (Parsetree.core_type) = Obj.magic inner_type in let _3 : unit = Obj.magic _3 in - let xs : (Asttypes.label Asttypes.loc list) = Obj.magic xs in + let xs : ((Asttypes.label Asttypes.loc * Asttypes.layout_annotation option) list) = Obj.magic xs in let _1 : unit = Obj.magic _1 in let label : (string) = Obj.magic label in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in @@ -49337,38 +50609,38 @@ module Tables = struct let _v : (Parsetree.core_type) = let _1 = let _1 = let ret_local = -# 3814 "parsing/parser.mly" +# 3913 "parsing/parser.mly" ( false ) -# 49343 "parsing/parser.ml" +# 50615 "parsing/parser.ml" in let (_endpos_ret_local_, _startpos_ret_local_) = (_endpos__4_, _endpos__4_) in let domain = let _1 = let _1 = let _1 = - let vars = + let bound_vars = let _1 = let xs = # 253 "" ( List.rev xs ) -# 49355 "parsing/parser.ml" +# 50627 "parsing/parser.ml" in -# 1216 "parsing/parser.mly" +# 1228 "parsing/parser.mly" ( xs ) -# 49360 "parsing/parser.ml" +# 50632 "parsing/parser.ml" in -# 3709 "parsing/parser.mly" +# 3798 "parsing/parser.mly" ( _1 ) -# 49366 "parsing/parser.ml" +# 50638 "parsing/parser.ml" in -# 3821 "parsing/parser.mly" - ( Ptyp_poly(vars, ty) ) -# 49372 "parsing/parser.ml" +# 3920 "parsing/parser.mly" + ( Jane_syntax.Layouts.Ltyp_poly { bound_vars; inner_type } ) +# 50644 "parsing/parser.ml" in let _endpos__1_ = _endpos__5_ in @@ -49376,45 +50648,45 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1151 "parsing/parser.mly" - ( mktyp ~loc:_sloc _1 ) -# 49382 "parsing/parser.ml" +# 1187 "parsing/parser.mly" + ( Jane_syntax.Layouts.type_of ~loc:(make_loc _sloc) ~attrs:[] _1 ) +# 50654 "parsing/parser.ml" in -# 3823 "parsing/parser.mly" +# 3922 "parsing/parser.mly" ( _1 ) -# 49388 "parsing/parser.ml" +# 50660 "parsing/parser.ml" in let _endpos__1_ = _endpos__5_ in -# 1112 "parsing/parser.mly" +# 1121 "parsing/parser.mly" ( extra_rhs_core_type _1 ~pos:_endpos__1_ ) -# 49395 "parsing/parser.ml" +# 50667 "parsing/parser.ml" in let arg_local = -# 3814 "parsing/parser.mly" +# 3913 "parsing/parser.mly" ( false ) -# 49401 "parsing/parser.ml" +# 50673 "parsing/parser.ml" in let (_endpos_arg_local_, _startpos_arg_local_) = (_endpos_label_, _endpos_label_) in let label = -# 3806 "parsing/parser.mly" +# 3905 "parsing/parser.mly" ( Optional label ) -# 49407 "parsing/parser.ml" +# 50679 "parsing/parser.ml" in let _loc_ret_local_ = (_startpos_ret_local_, _endpos_ret_local_) in let _loc_codomain_ = (_startpos_codomain_, _endpos_codomain_) in let _loc_arg_local_ = (_startpos_arg_local_, _endpos_arg_local_) in -# 3797 "parsing/parser.mly" +# 3896 "parsing/parser.mly" ( Ptyp_arrow(label, mktyp_local_if arg_local domain _loc_arg_local_, mktyp_local_if ret_local (maybe_curry_typ codomain _loc_codomain_) _loc_ret_local_) ) -# 49418 "parsing/parser.ml" +# 50690 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_codomain_, _startpos_label_) in @@ -49422,15 +50694,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1151 "parsing/parser.mly" +# 1160 "parsing/parser.mly" ( mktyp ~loc:_sloc _1 ) -# 49428 "parsing/parser.ml" +# 50700 "parsing/parser.ml" in -# 3802 "parsing/parser.mly" +# 3901 "parsing/parser.mly" ( _1 ) -# 49434 "parsing/parser.ml" +# 50706 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -49463,9 +50735,9 @@ module Tables = struct MenhirLib.EngineTypes.endp = _endpos__5_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = ty; - MenhirLib.EngineTypes.startp = _startpos_ty_; - MenhirLib.EngineTypes.endp = _endpos_ty_; + MenhirLib.EngineTypes.semv = inner_type; + MenhirLib.EngineTypes.startp = _startpos_inner_type_; + MenhirLib.EngineTypes.endp = _endpos_inner_type_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; MenhirLib.EngineTypes.semv = _3; @@ -49500,9 +50772,9 @@ module Tables = struct let _1_inlined1 : unit = Obj.magic _1_inlined1 in let _4 : unit = Obj.magic _4 in let _5 : unit = Obj.magic _5 in - let ty : (Parsetree.core_type) = Obj.magic ty in + let inner_type : (Parsetree.core_type) = Obj.magic inner_type in let _3 : unit = Obj.magic _3 in - let xs : (Asttypes.label Asttypes.loc list) = Obj.magic xs in + let xs : ((Asttypes.label Asttypes.loc * Asttypes.layout_annotation option) list) = Obj.magic xs in let _1 : unit = Obj.magic _1 in let label : (string) = Obj.magic label in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in @@ -49511,38 +50783,38 @@ module Tables = struct let _v : (Parsetree.core_type) = let _1 = let _1 = let ret_local = -# 3816 "parsing/parser.mly" +# 3915 "parsing/parser.mly" ( true ) -# 49517 "parsing/parser.ml" +# 50789 "parsing/parser.ml" in let (_endpos_ret_local_, _startpos_ret_local_) = (_endpos__1_inlined1_, _startpos__1_inlined1_) in let domain = let _1 = let _1 = let _1 = - let vars = + let bound_vars = let _1 = let xs = # 253 "" ( List.rev xs ) -# 49529 "parsing/parser.ml" +# 50801 "parsing/parser.ml" in -# 1216 "parsing/parser.mly" +# 1228 "parsing/parser.mly" ( xs ) -# 49534 "parsing/parser.ml" +# 50806 "parsing/parser.ml" in -# 3709 "parsing/parser.mly" +# 3798 "parsing/parser.mly" ( _1 ) -# 49540 "parsing/parser.ml" +# 50812 "parsing/parser.ml" in -# 3821 "parsing/parser.mly" - ( Ptyp_poly(vars, ty) ) -# 49546 "parsing/parser.ml" +# 3920 "parsing/parser.mly" + ( Jane_syntax.Layouts.Ltyp_poly { bound_vars; inner_type } ) +# 50818 "parsing/parser.ml" in let _endpos__1_ = _endpos__5_ in @@ -49550,45 +50822,45 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1151 "parsing/parser.mly" - ( mktyp ~loc:_sloc _1 ) -# 49556 "parsing/parser.ml" +# 1187 "parsing/parser.mly" + ( Jane_syntax.Layouts.type_of ~loc:(make_loc _sloc) ~attrs:[] _1 ) +# 50828 "parsing/parser.ml" in -# 3823 "parsing/parser.mly" +# 3922 "parsing/parser.mly" ( _1 ) -# 49562 "parsing/parser.ml" +# 50834 "parsing/parser.ml" in let _endpos__1_ = _endpos__5_ in -# 1112 "parsing/parser.mly" +# 1121 "parsing/parser.mly" ( extra_rhs_core_type _1 ~pos:_endpos__1_ ) -# 49569 "parsing/parser.ml" +# 50841 "parsing/parser.ml" in let arg_local = -# 3814 "parsing/parser.mly" +# 3913 "parsing/parser.mly" ( false ) -# 49575 "parsing/parser.ml" +# 50847 "parsing/parser.ml" in let (_endpos_arg_local_, _startpos_arg_local_) = (_endpos_label_, _endpos_label_) in let label = -# 3806 "parsing/parser.mly" +# 3905 "parsing/parser.mly" ( Optional label ) -# 49581 "parsing/parser.ml" +# 50853 "parsing/parser.ml" in let _loc_ret_local_ = (_startpos_ret_local_, _endpos_ret_local_) in let _loc_codomain_ = (_startpos_codomain_, _endpos_codomain_) in let _loc_arg_local_ = (_startpos_arg_local_, _endpos_arg_local_) in -# 3797 "parsing/parser.mly" +# 3896 "parsing/parser.mly" ( Ptyp_arrow(label, mktyp_local_if arg_local domain _loc_arg_local_, mktyp_local_if ret_local (maybe_curry_typ codomain _loc_codomain_) _loc_ret_local_) ) -# 49592 "parsing/parser.ml" +# 50864 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_codomain_, _startpos_label_) in @@ -49596,15 +50868,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1151 "parsing/parser.mly" +# 1160 "parsing/parser.mly" ( mktyp ~loc:_sloc _1 ) -# 49602 "parsing/parser.ml" +# 50874 "parsing/parser.ml" in -# 3802 "parsing/parser.mly" +# 3901 "parsing/parser.mly" ( _1 ) -# 49608 "parsing/parser.ml" +# 50880 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -49650,45 +50922,45 @@ module Tables = struct let _v : (Parsetree.core_type) = let _1 = let _1 = let ret_local = -# 3814 "parsing/parser.mly" +# 3913 "parsing/parser.mly" ( false ) -# 49656 "parsing/parser.ml" +# 50928 "parsing/parser.ml" in let (_endpos_ret_local_, _startpos_ret_local_) = (_endpos__4_, _endpos__4_) in let domain = let _1 = -# 3825 "parsing/parser.mly" +# 3924 "parsing/parser.mly" ( ty ) -# 49663 "parsing/parser.ml" +# 50935 "parsing/parser.ml" in let _endpos__1_ = _endpos_ty_ in -# 1112 "parsing/parser.mly" +# 1121 "parsing/parser.mly" ( extra_rhs_core_type _1 ~pos:_endpos__1_ ) -# 49669 "parsing/parser.ml" +# 50941 "parsing/parser.ml" in let arg_local = -# 3814 "parsing/parser.mly" +# 3913 "parsing/parser.mly" ( false ) -# 49675 "parsing/parser.ml" +# 50947 "parsing/parser.ml" in let (_endpos_arg_local_, _startpos_arg_local_) = (_endpos_label_, _endpos_label_) in let label = -# 3806 "parsing/parser.mly" +# 3905 "parsing/parser.mly" ( Optional label ) -# 49681 "parsing/parser.ml" +# 50953 "parsing/parser.ml" in let _loc_ret_local_ = (_startpos_ret_local_, _endpos_ret_local_) in let _loc_codomain_ = (_startpos_codomain_, _endpos_codomain_) in let _loc_arg_local_ = (_startpos_arg_local_, _endpos_arg_local_) in -# 3797 "parsing/parser.mly" +# 3896 "parsing/parser.mly" ( Ptyp_arrow(label, mktyp_local_if arg_local domain _loc_arg_local_, mktyp_local_if ret_local (maybe_curry_typ codomain _loc_codomain_) _loc_ret_local_) ) -# 49692 "parsing/parser.ml" +# 50964 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_codomain_, _startpos_label_) in @@ -49696,15 +50968,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1151 "parsing/parser.mly" +# 1160 "parsing/parser.mly" ( mktyp ~loc:_sloc _1 ) -# 49702 "parsing/parser.ml" +# 50974 "parsing/parser.ml" in -# 3802 "parsing/parser.mly" +# 3901 "parsing/parser.mly" ( _1 ) -# 49708 "parsing/parser.ml" +# 50980 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -49757,45 +51029,45 @@ module Tables = struct let _v : (Parsetree.core_type) = let _1 = let _1 = let ret_local = -# 3816 "parsing/parser.mly" +# 3915 "parsing/parser.mly" ( true ) -# 49763 "parsing/parser.ml" +# 51035 "parsing/parser.ml" in let (_endpos_ret_local_, _startpos_ret_local_) = (_endpos__1_, _startpos__1_) in let domain = let _1 = -# 3825 "parsing/parser.mly" +# 3924 "parsing/parser.mly" ( ty ) -# 49770 "parsing/parser.ml" +# 51042 "parsing/parser.ml" in let _endpos__1_ = _endpos_ty_ in -# 1112 "parsing/parser.mly" +# 1121 "parsing/parser.mly" ( extra_rhs_core_type _1 ~pos:_endpos__1_ ) -# 49776 "parsing/parser.ml" +# 51048 "parsing/parser.ml" in let arg_local = -# 3814 "parsing/parser.mly" +# 3913 "parsing/parser.mly" ( false ) -# 49782 "parsing/parser.ml" +# 51054 "parsing/parser.ml" in let (_endpos_arg_local_, _startpos_arg_local_) = (_endpos_label_, _endpos_label_) in let label = -# 3806 "parsing/parser.mly" +# 3905 "parsing/parser.mly" ( Optional label ) -# 49788 "parsing/parser.ml" +# 51060 "parsing/parser.ml" in let _loc_ret_local_ = (_startpos_ret_local_, _endpos_ret_local_) in let _loc_codomain_ = (_startpos_codomain_, _endpos_codomain_) in let _loc_arg_local_ = (_startpos_arg_local_, _endpos_arg_local_) in -# 3797 "parsing/parser.mly" +# 3896 "parsing/parser.mly" ( Ptyp_arrow(label, mktyp_local_if arg_local domain _loc_arg_local_, mktyp_local_if ret_local (maybe_curry_typ codomain _loc_codomain_) _loc_ret_local_) ) -# 49799 "parsing/parser.ml" +# 51071 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_codomain_, _startpos_label_) in @@ -49803,15 +51075,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1151 "parsing/parser.mly" +# 1160 "parsing/parser.mly" ( mktyp ~loc:_sloc _1 ) -# 49809 "parsing/parser.ml" +# 51081 "parsing/parser.ml" in -# 3802 "parsing/parser.mly" +# 3901 "parsing/parser.mly" ( _1 ) -# 49815 "parsing/parser.ml" +# 51087 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -49839,9 +51111,9 @@ module Tables = struct MenhirLib.EngineTypes.endp = _endpos__5_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = ty; - MenhirLib.EngineTypes.startp = _startpos_ty_; - MenhirLib.EngineTypes.endp = _endpos_ty_; + MenhirLib.EngineTypes.semv = inner_type; + MenhirLib.EngineTypes.startp = _startpos_inner_type_; + MenhirLib.EngineTypes.endp = _endpos_inner_type_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; MenhirLib.EngineTypes.semv = _3; @@ -49880,9 +51152,9 @@ module Tables = struct let codomain : (Parsetree.core_type) = Obj.magic codomain in let _4 : unit = Obj.magic _4 in let _5 : unit = Obj.magic _5 in - let ty : (Parsetree.core_type) = Obj.magic ty in + let inner_type : (Parsetree.core_type) = Obj.magic inner_type in let _3 : unit = Obj.magic _3 in - let xs : (Asttypes.label Asttypes.loc list) = Obj.magic xs in + let xs : ((Asttypes.label Asttypes.loc * Asttypes.layout_annotation option) list) = Obj.magic xs in let _1_inlined1 : unit = Obj.magic _1_inlined1 in let _1 : unit = Obj.magic _1 in let label : (string) = Obj.magic label in @@ -49892,9 +51164,9 @@ module Tables = struct let _v : (Parsetree.core_type) = let _1 = let _1 = let ret_local = -# 3814 "parsing/parser.mly" +# 3913 "parsing/parser.mly" ( false ) -# 49898 "parsing/parser.ml" +# 51170 "parsing/parser.ml" in let (_endpos_ret_local_, _startpos_ret_local_) = (_endpos__4_, _endpos__4_) in let domain = @@ -49902,29 +51174,29 @@ module Tables = struct let _1 = let _1 = let _1 = - let vars = + let bound_vars = let _1 = let xs = # 253 "" ( List.rev xs ) -# 49911 "parsing/parser.ml" +# 51183 "parsing/parser.ml" in -# 1216 "parsing/parser.mly" +# 1228 "parsing/parser.mly" ( xs ) -# 49916 "parsing/parser.ml" +# 51188 "parsing/parser.ml" in -# 3709 "parsing/parser.mly" +# 3798 "parsing/parser.mly" ( _1 ) -# 49922 "parsing/parser.ml" +# 51194 "parsing/parser.ml" in -# 3821 "parsing/parser.mly" - ( Ptyp_poly(vars, ty) ) -# 49928 "parsing/parser.ml" +# 3920 "parsing/parser.mly" + ( Jane_syntax.Layouts.Ltyp_poly { bound_vars; inner_type } ) +# 51200 "parsing/parser.ml" in let _endpos__1_ = _endpos__5_ in @@ -49932,45 +51204,45 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1151 "parsing/parser.mly" - ( mktyp ~loc:_sloc _1 ) -# 49938 "parsing/parser.ml" +# 1187 "parsing/parser.mly" + ( Jane_syntax.Layouts.type_of ~loc:(make_loc _sloc) ~attrs:[] _1 ) +# 51210 "parsing/parser.ml" in -# 3823 "parsing/parser.mly" +# 3922 "parsing/parser.mly" ( _1 ) -# 49944 "parsing/parser.ml" +# 51216 "parsing/parser.ml" in let _endpos__1_ = _endpos__5_ in -# 1112 "parsing/parser.mly" +# 1121 "parsing/parser.mly" ( extra_rhs_core_type _1 ~pos:_endpos__1_ ) -# 49951 "parsing/parser.ml" +# 51223 "parsing/parser.ml" in let arg_local = -# 3816 "parsing/parser.mly" +# 3915 "parsing/parser.mly" ( true ) -# 49957 "parsing/parser.ml" +# 51229 "parsing/parser.ml" in let (_endpos_arg_local_, _startpos_arg_local_) = (_endpos__1_, _startpos__1_) in let label = -# 3806 "parsing/parser.mly" +# 3905 "parsing/parser.mly" ( Optional label ) -# 49963 "parsing/parser.ml" +# 51235 "parsing/parser.ml" in let _loc_ret_local_ = (_startpos_ret_local_, _endpos_ret_local_) in let _loc_codomain_ = (_startpos_codomain_, _endpos_codomain_) in let _loc_arg_local_ = (_startpos_arg_local_, _endpos_arg_local_) in -# 3797 "parsing/parser.mly" +# 3896 "parsing/parser.mly" ( Ptyp_arrow(label, mktyp_local_if arg_local domain _loc_arg_local_, mktyp_local_if ret_local (maybe_curry_typ codomain _loc_codomain_) _loc_ret_local_) ) -# 49974 "parsing/parser.ml" +# 51246 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_codomain_, _startpos_label_) in @@ -49978,15 +51250,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1151 "parsing/parser.mly" +# 1160 "parsing/parser.mly" ( mktyp ~loc:_sloc _1 ) -# 49984 "parsing/parser.ml" +# 51256 "parsing/parser.ml" in -# 3802 "parsing/parser.mly" +# 3901 "parsing/parser.mly" ( _1 ) -# 49990 "parsing/parser.ml" +# 51262 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -50019,9 +51291,9 @@ module Tables = struct MenhirLib.EngineTypes.endp = _endpos__5_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = ty; - MenhirLib.EngineTypes.startp = _startpos_ty_; - MenhirLib.EngineTypes.endp = _endpos_ty_; + MenhirLib.EngineTypes.semv = inner_type; + MenhirLib.EngineTypes.startp = _startpos_inner_type_; + MenhirLib.EngineTypes.endp = _endpos_inner_type_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; MenhirLib.EngineTypes.semv = _3; @@ -50062,9 +51334,9 @@ module Tables = struct let _1_inlined2 : unit = Obj.magic _1_inlined2 in let _4 : unit = Obj.magic _4 in let _5 : unit = Obj.magic _5 in - let ty : (Parsetree.core_type) = Obj.magic ty in + let inner_type : (Parsetree.core_type) = Obj.magic inner_type in let _3 : unit = Obj.magic _3 in - let xs : (Asttypes.label Asttypes.loc list) = Obj.magic xs in + let xs : ((Asttypes.label Asttypes.loc * Asttypes.layout_annotation option) list) = Obj.magic xs in let _1_inlined1 : unit = Obj.magic _1_inlined1 in let _1 : unit = Obj.magic _1 in let label : (string) = Obj.magic label in @@ -50074,9 +51346,9 @@ module Tables = struct let _v : (Parsetree.core_type) = let _1 = let _1 = let ret_local = -# 3816 "parsing/parser.mly" +# 3915 "parsing/parser.mly" ( true ) -# 50080 "parsing/parser.ml" +# 51352 "parsing/parser.ml" in let (_endpos_ret_local_, _startpos_ret_local_) = (_endpos__1_inlined2_, _startpos__1_inlined2_) in let domain = @@ -50084,29 +51356,29 @@ module Tables = struct let _1 = let _1 = let _1 = - let vars = + let bound_vars = let _1 = let xs = # 253 "" ( List.rev xs ) -# 50093 "parsing/parser.ml" +# 51365 "parsing/parser.ml" in -# 1216 "parsing/parser.mly" +# 1228 "parsing/parser.mly" ( xs ) -# 50098 "parsing/parser.ml" +# 51370 "parsing/parser.ml" in -# 3709 "parsing/parser.mly" +# 3798 "parsing/parser.mly" ( _1 ) -# 50104 "parsing/parser.ml" +# 51376 "parsing/parser.ml" in -# 3821 "parsing/parser.mly" - ( Ptyp_poly(vars, ty) ) -# 50110 "parsing/parser.ml" +# 3920 "parsing/parser.mly" + ( Jane_syntax.Layouts.Ltyp_poly { bound_vars; inner_type } ) +# 51382 "parsing/parser.ml" in let _endpos__1_ = _endpos__5_ in @@ -50114,45 +51386,45 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1151 "parsing/parser.mly" - ( mktyp ~loc:_sloc _1 ) -# 50120 "parsing/parser.ml" +# 1187 "parsing/parser.mly" + ( Jane_syntax.Layouts.type_of ~loc:(make_loc _sloc) ~attrs:[] _1 ) +# 51392 "parsing/parser.ml" in -# 3823 "parsing/parser.mly" +# 3922 "parsing/parser.mly" ( _1 ) -# 50126 "parsing/parser.ml" +# 51398 "parsing/parser.ml" in let _endpos__1_ = _endpos__5_ in -# 1112 "parsing/parser.mly" +# 1121 "parsing/parser.mly" ( extra_rhs_core_type _1 ~pos:_endpos__1_ ) -# 50133 "parsing/parser.ml" +# 51405 "parsing/parser.ml" in let arg_local = -# 3816 "parsing/parser.mly" +# 3915 "parsing/parser.mly" ( true ) -# 50139 "parsing/parser.ml" +# 51411 "parsing/parser.ml" in let (_endpos_arg_local_, _startpos_arg_local_) = (_endpos__1_, _startpos__1_) in let label = -# 3806 "parsing/parser.mly" +# 3905 "parsing/parser.mly" ( Optional label ) -# 50145 "parsing/parser.ml" +# 51417 "parsing/parser.ml" in let _loc_ret_local_ = (_startpos_ret_local_, _endpos_ret_local_) in let _loc_codomain_ = (_startpos_codomain_, _endpos_codomain_) in let _loc_arg_local_ = (_startpos_arg_local_, _endpos_arg_local_) in -# 3797 "parsing/parser.mly" +# 3896 "parsing/parser.mly" ( Ptyp_arrow(label, mktyp_local_if arg_local domain _loc_arg_local_, mktyp_local_if ret_local (maybe_curry_typ codomain _loc_codomain_) _loc_ret_local_) ) -# 50156 "parsing/parser.ml" +# 51428 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_codomain_, _startpos_label_) in @@ -50160,15 +51432,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1151 "parsing/parser.mly" +# 1160 "parsing/parser.mly" ( mktyp ~loc:_sloc _1 ) -# 50166 "parsing/parser.ml" +# 51438 "parsing/parser.ml" in -# 3802 "parsing/parser.mly" +# 3901 "parsing/parser.mly" ( _1 ) -# 50172 "parsing/parser.ml" +# 51444 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -50221,45 +51493,45 @@ module Tables = struct let _v : (Parsetree.core_type) = let _1 = let _1 = let ret_local = -# 3814 "parsing/parser.mly" +# 3913 "parsing/parser.mly" ( false ) -# 50227 "parsing/parser.ml" +# 51499 "parsing/parser.ml" in let (_endpos_ret_local_, _startpos_ret_local_) = (_endpos__4_, _endpos__4_) in let domain = let _1 = -# 3825 "parsing/parser.mly" +# 3924 "parsing/parser.mly" ( ty ) -# 50234 "parsing/parser.ml" +# 51506 "parsing/parser.ml" in let _endpos__1_ = _endpos_ty_ in -# 1112 "parsing/parser.mly" +# 1121 "parsing/parser.mly" ( extra_rhs_core_type _1 ~pos:_endpos__1_ ) -# 50240 "parsing/parser.ml" +# 51512 "parsing/parser.ml" in let arg_local = -# 3816 "parsing/parser.mly" +# 3915 "parsing/parser.mly" ( true ) -# 50246 "parsing/parser.ml" +# 51518 "parsing/parser.ml" in let (_endpos_arg_local_, _startpos_arg_local_) = (_endpos__1_, _startpos__1_) in let label = -# 3806 "parsing/parser.mly" +# 3905 "parsing/parser.mly" ( Optional label ) -# 50252 "parsing/parser.ml" +# 51524 "parsing/parser.ml" in let _loc_ret_local_ = (_startpos_ret_local_, _endpos_ret_local_) in let _loc_codomain_ = (_startpos_codomain_, _endpos_codomain_) in let _loc_arg_local_ = (_startpos_arg_local_, _endpos_arg_local_) in -# 3797 "parsing/parser.mly" +# 3896 "parsing/parser.mly" ( Ptyp_arrow(label, mktyp_local_if arg_local domain _loc_arg_local_, mktyp_local_if ret_local (maybe_curry_typ codomain _loc_codomain_) _loc_ret_local_) ) -# 50263 "parsing/parser.ml" +# 51535 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_codomain_, _startpos_label_) in @@ -50267,15 +51539,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1151 "parsing/parser.mly" +# 1160 "parsing/parser.mly" ( mktyp ~loc:_sloc _1 ) -# 50273 "parsing/parser.ml" +# 51545 "parsing/parser.ml" in -# 3802 "parsing/parser.mly" +# 3901 "parsing/parser.mly" ( _1 ) -# 50279 "parsing/parser.ml" +# 51551 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -50335,45 +51607,45 @@ module Tables = struct let _v : (Parsetree.core_type) = let _1 = let _1 = let ret_local = -# 3816 "parsing/parser.mly" +# 3915 "parsing/parser.mly" ( true ) -# 50341 "parsing/parser.ml" +# 51613 "parsing/parser.ml" in let (_endpos_ret_local_, _startpos_ret_local_) = (_endpos__1_inlined1_, _startpos__1_inlined1_) in let domain = let _1 = -# 3825 "parsing/parser.mly" +# 3924 "parsing/parser.mly" ( ty ) -# 50348 "parsing/parser.ml" +# 51620 "parsing/parser.ml" in let _endpos__1_ = _endpos_ty_ in -# 1112 "parsing/parser.mly" +# 1121 "parsing/parser.mly" ( extra_rhs_core_type _1 ~pos:_endpos__1_ ) -# 50354 "parsing/parser.ml" +# 51626 "parsing/parser.ml" in let arg_local = -# 3816 "parsing/parser.mly" +# 3915 "parsing/parser.mly" ( true ) -# 50360 "parsing/parser.ml" +# 51632 "parsing/parser.ml" in let (_endpos_arg_local_, _startpos_arg_local_) = (_endpos__1_, _startpos__1_) in let label = -# 3806 "parsing/parser.mly" +# 3905 "parsing/parser.mly" ( Optional label ) -# 50366 "parsing/parser.ml" +# 51638 "parsing/parser.ml" in let _loc_ret_local_ = (_startpos_ret_local_, _endpos_ret_local_) in let _loc_codomain_ = (_startpos_codomain_, _endpos_codomain_) in let _loc_arg_local_ = (_startpos_arg_local_, _endpos_arg_local_) in -# 3797 "parsing/parser.mly" +# 3896 "parsing/parser.mly" ( Ptyp_arrow(label, mktyp_local_if arg_local domain _loc_arg_local_, mktyp_local_if ret_local (maybe_curry_typ codomain _loc_codomain_) _loc_ret_local_) ) -# 50377 "parsing/parser.ml" +# 51649 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_codomain_, _startpos_label_) in @@ -50381,15 +51653,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1151 "parsing/parser.mly" +# 1160 "parsing/parser.mly" ( mktyp ~loc:_sloc _1 ) -# 50387 "parsing/parser.ml" +# 51659 "parsing/parser.ml" in -# 3802 "parsing/parser.mly" +# 3901 "parsing/parser.mly" ( _1 ) -# 50393 "parsing/parser.ml" +# 51665 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -50417,9 +51689,9 @@ module Tables = struct MenhirLib.EngineTypes.endp = _endpos__5_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = ty; - MenhirLib.EngineTypes.startp = _startpos_ty_; - MenhirLib.EngineTypes.endp = _endpos_ty_; + MenhirLib.EngineTypes.semv = inner_type; + MenhirLib.EngineTypes.startp = _startpos_inner_type_; + MenhirLib.EngineTypes.endp = _endpos_inner_type_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; MenhirLib.EngineTypes.semv = _3; @@ -50458,15 +51730,15 @@ module Tables = struct let codomain : (Parsetree.core_type) = Obj.magic codomain in let _4 : unit = Obj.magic _4 in let _5 : unit = Obj.magic _5 in - let ty : (Parsetree.core_type) = Obj.magic ty in + let inner_type : (Parsetree.core_type) = Obj.magic inner_type in let _3 : unit = Obj.magic _3 in - let xs : (Asttypes.label Asttypes.loc list) = Obj.magic xs in + let xs : ((Asttypes.label Asttypes.loc * Asttypes.layout_annotation option) list) = Obj.magic xs in let _1 : unit = Obj.magic _1 in let _2 : unit = Obj.magic _2 in let label : ( -# 928 "parsing/parser.mly" +# 937 "parsing/parser.mly" (string) -# 50470 "parsing/parser.ml" +# 51742 "parsing/parser.ml" ) = Obj.magic label in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos_label_ in @@ -50474,38 +51746,38 @@ module Tables = struct let _v : (Parsetree.core_type) = let _1 = let _1 = let ret_local = -# 3814 "parsing/parser.mly" +# 3913 "parsing/parser.mly" ( false ) -# 50480 "parsing/parser.ml" +# 51752 "parsing/parser.ml" in let (_endpos_ret_local_, _startpos_ret_local_) = (_endpos__4_, _endpos__4_) in let domain = let _1 = let _1 = let _1 = - let vars = + let bound_vars = let _1 = let xs = # 253 "" ( List.rev xs ) -# 50492 "parsing/parser.ml" +# 51764 "parsing/parser.ml" in -# 1216 "parsing/parser.mly" +# 1228 "parsing/parser.mly" ( xs ) -# 50497 "parsing/parser.ml" +# 51769 "parsing/parser.ml" in -# 3709 "parsing/parser.mly" +# 3798 "parsing/parser.mly" ( _1 ) -# 50503 "parsing/parser.ml" +# 51775 "parsing/parser.ml" in -# 3821 "parsing/parser.mly" - ( Ptyp_poly(vars, ty) ) -# 50509 "parsing/parser.ml" +# 3920 "parsing/parser.mly" + ( Jane_syntax.Layouts.Ltyp_poly { bound_vars; inner_type } ) +# 51781 "parsing/parser.ml" in let _endpos__1_ = _endpos__5_ in @@ -50513,45 +51785,45 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1151 "parsing/parser.mly" - ( mktyp ~loc:_sloc _1 ) -# 50519 "parsing/parser.ml" +# 1187 "parsing/parser.mly" + ( Jane_syntax.Layouts.type_of ~loc:(make_loc _sloc) ~attrs:[] _1 ) +# 51791 "parsing/parser.ml" in -# 3823 "parsing/parser.mly" +# 3922 "parsing/parser.mly" ( _1 ) -# 50525 "parsing/parser.ml" +# 51797 "parsing/parser.ml" in let _endpos__1_ = _endpos__5_ in -# 1112 "parsing/parser.mly" +# 1121 "parsing/parser.mly" ( extra_rhs_core_type _1 ~pos:_endpos__1_ ) -# 50532 "parsing/parser.ml" +# 51804 "parsing/parser.ml" in let arg_local = -# 3814 "parsing/parser.mly" +# 3913 "parsing/parser.mly" ( false ) -# 50538 "parsing/parser.ml" +# 51810 "parsing/parser.ml" in let (_endpos_arg_local_, _startpos_arg_local_) = (_endpos__2_, _endpos__2_) in let label = -# 3808 "parsing/parser.mly" +# 3907 "parsing/parser.mly" ( Labelled label ) -# 50544 "parsing/parser.ml" +# 51816 "parsing/parser.ml" in let _loc_ret_local_ = (_startpos_ret_local_, _endpos_ret_local_) in let _loc_codomain_ = (_startpos_codomain_, _endpos_codomain_) in let _loc_arg_local_ = (_startpos_arg_local_, _endpos_arg_local_) in -# 3797 "parsing/parser.mly" +# 3896 "parsing/parser.mly" ( Ptyp_arrow(label, mktyp_local_if arg_local domain _loc_arg_local_, mktyp_local_if ret_local (maybe_curry_typ codomain _loc_codomain_) _loc_ret_local_) ) -# 50555 "parsing/parser.ml" +# 51827 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_codomain_, _startpos_label_) in @@ -50559,15 +51831,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1151 "parsing/parser.mly" +# 1160 "parsing/parser.mly" ( mktyp ~loc:_sloc _1 ) -# 50565 "parsing/parser.ml" +# 51837 "parsing/parser.ml" in -# 3802 "parsing/parser.mly" +# 3901 "parsing/parser.mly" ( _1 ) -# 50571 "parsing/parser.ml" +# 51843 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -50600,9 +51872,9 @@ module Tables = struct MenhirLib.EngineTypes.endp = _endpos__5_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = ty; - MenhirLib.EngineTypes.startp = _startpos_ty_; - MenhirLib.EngineTypes.endp = _endpos_ty_; + MenhirLib.EngineTypes.semv = inner_type; + MenhirLib.EngineTypes.startp = _startpos_inner_type_; + MenhirLib.EngineTypes.endp = _endpos_inner_type_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; MenhirLib.EngineTypes.semv = _3; @@ -50643,15 +51915,15 @@ module Tables = struct let _1_inlined1 : unit = Obj.magic _1_inlined1 in let _4 : unit = Obj.magic _4 in let _5 : unit = Obj.magic _5 in - let ty : (Parsetree.core_type) = Obj.magic ty in + let inner_type : (Parsetree.core_type) = Obj.magic inner_type in let _3 : unit = Obj.magic _3 in - let xs : (Asttypes.label Asttypes.loc list) = Obj.magic xs in + let xs : ((Asttypes.label Asttypes.loc * Asttypes.layout_annotation option) list) = Obj.magic xs in let _1 : unit = Obj.magic _1 in let _2 : unit = Obj.magic _2 in let label : ( -# 928 "parsing/parser.mly" +# 937 "parsing/parser.mly" (string) -# 50655 "parsing/parser.ml" +# 51927 "parsing/parser.ml" ) = Obj.magic label in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos_label_ in @@ -50659,38 +51931,38 @@ module Tables = struct let _v : (Parsetree.core_type) = let _1 = let _1 = let ret_local = -# 3816 "parsing/parser.mly" +# 3915 "parsing/parser.mly" ( true ) -# 50665 "parsing/parser.ml" +# 51937 "parsing/parser.ml" in let (_endpos_ret_local_, _startpos_ret_local_) = (_endpos__1_inlined1_, _startpos__1_inlined1_) in let domain = let _1 = let _1 = let _1 = - let vars = + let bound_vars = let _1 = let xs = # 253 "" ( List.rev xs ) -# 50677 "parsing/parser.ml" +# 51949 "parsing/parser.ml" in -# 1216 "parsing/parser.mly" +# 1228 "parsing/parser.mly" ( xs ) -# 50682 "parsing/parser.ml" +# 51954 "parsing/parser.ml" in -# 3709 "parsing/parser.mly" +# 3798 "parsing/parser.mly" ( _1 ) -# 50688 "parsing/parser.ml" +# 51960 "parsing/parser.ml" in -# 3821 "parsing/parser.mly" - ( Ptyp_poly(vars, ty) ) -# 50694 "parsing/parser.ml" +# 3920 "parsing/parser.mly" + ( Jane_syntax.Layouts.Ltyp_poly { bound_vars; inner_type } ) +# 51966 "parsing/parser.ml" in let _endpos__1_ = _endpos__5_ in @@ -50698,45 +51970,45 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1151 "parsing/parser.mly" - ( mktyp ~loc:_sloc _1 ) -# 50704 "parsing/parser.ml" +# 1187 "parsing/parser.mly" + ( Jane_syntax.Layouts.type_of ~loc:(make_loc _sloc) ~attrs:[] _1 ) +# 51976 "parsing/parser.ml" in -# 3823 "parsing/parser.mly" +# 3922 "parsing/parser.mly" ( _1 ) -# 50710 "parsing/parser.ml" +# 51982 "parsing/parser.ml" in let _endpos__1_ = _endpos__5_ in -# 1112 "parsing/parser.mly" +# 1121 "parsing/parser.mly" ( extra_rhs_core_type _1 ~pos:_endpos__1_ ) -# 50717 "parsing/parser.ml" +# 51989 "parsing/parser.ml" in let arg_local = -# 3814 "parsing/parser.mly" +# 3913 "parsing/parser.mly" ( false ) -# 50723 "parsing/parser.ml" +# 51995 "parsing/parser.ml" in let (_endpos_arg_local_, _startpos_arg_local_) = (_endpos__2_, _endpos__2_) in let label = -# 3808 "parsing/parser.mly" +# 3907 "parsing/parser.mly" ( Labelled label ) -# 50729 "parsing/parser.ml" +# 52001 "parsing/parser.ml" in let _loc_ret_local_ = (_startpos_ret_local_, _endpos_ret_local_) in let _loc_codomain_ = (_startpos_codomain_, _endpos_codomain_) in let _loc_arg_local_ = (_startpos_arg_local_, _endpos_arg_local_) in -# 3797 "parsing/parser.mly" +# 3896 "parsing/parser.mly" ( Ptyp_arrow(label, mktyp_local_if arg_local domain _loc_arg_local_, mktyp_local_if ret_local (maybe_curry_typ codomain _loc_codomain_) _loc_ret_local_) ) -# 50740 "parsing/parser.ml" +# 52012 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_codomain_, _startpos_label_) in @@ -50744,15 +52016,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1151 "parsing/parser.mly" +# 1160 "parsing/parser.mly" ( mktyp ~loc:_sloc _1 ) -# 50750 "parsing/parser.ml" +# 52022 "parsing/parser.ml" in -# 3802 "parsing/parser.mly" +# 3901 "parsing/parser.mly" ( _1 ) -# 50756 "parsing/parser.ml" +# 52028 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -50799,9 +52071,9 @@ module Tables = struct let ty : (Parsetree.core_type) = Obj.magic ty in let _2 : unit = Obj.magic _2 in let label : ( -# 928 "parsing/parser.mly" +# 937 "parsing/parser.mly" (string) -# 50805 "parsing/parser.ml" +# 52077 "parsing/parser.ml" ) = Obj.magic label in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos_label_ in @@ -50809,45 +52081,45 @@ module Tables = struct let _v : (Parsetree.core_type) = let _1 = let _1 = let ret_local = -# 3814 "parsing/parser.mly" +# 3913 "parsing/parser.mly" ( false ) -# 50815 "parsing/parser.ml" +# 52087 "parsing/parser.ml" in let (_endpos_ret_local_, _startpos_ret_local_) = (_endpos__4_, _endpos__4_) in let domain = let _1 = -# 3825 "parsing/parser.mly" +# 3924 "parsing/parser.mly" ( ty ) -# 50822 "parsing/parser.ml" +# 52094 "parsing/parser.ml" in let _endpos__1_ = _endpos_ty_ in -# 1112 "parsing/parser.mly" +# 1121 "parsing/parser.mly" ( extra_rhs_core_type _1 ~pos:_endpos__1_ ) -# 50828 "parsing/parser.ml" +# 52100 "parsing/parser.ml" in let arg_local = -# 3814 "parsing/parser.mly" +# 3913 "parsing/parser.mly" ( false ) -# 50834 "parsing/parser.ml" +# 52106 "parsing/parser.ml" in let (_endpos_arg_local_, _startpos_arg_local_) = (_endpos__2_, _endpos__2_) in let label = -# 3808 "parsing/parser.mly" +# 3907 "parsing/parser.mly" ( Labelled label ) -# 50840 "parsing/parser.ml" +# 52112 "parsing/parser.ml" in let _loc_ret_local_ = (_startpos_ret_local_, _endpos_ret_local_) in let _loc_codomain_ = (_startpos_codomain_, _endpos_codomain_) in let _loc_arg_local_ = (_startpos_arg_local_, _endpos_arg_local_) in -# 3797 "parsing/parser.mly" +# 3896 "parsing/parser.mly" ( Ptyp_arrow(label, mktyp_local_if arg_local domain _loc_arg_local_, mktyp_local_if ret_local (maybe_curry_typ codomain _loc_codomain_) _loc_ret_local_) ) -# 50851 "parsing/parser.ml" +# 52123 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_codomain_, _startpos_label_) in @@ -50855,15 +52127,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1151 "parsing/parser.mly" +# 1160 "parsing/parser.mly" ( mktyp ~loc:_sloc _1 ) -# 50861 "parsing/parser.ml" +# 52133 "parsing/parser.ml" in -# 3802 "parsing/parser.mly" +# 3901 "parsing/parser.mly" ( _1 ) -# 50867 "parsing/parser.ml" +# 52139 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -50917,9 +52189,9 @@ module Tables = struct let ty : (Parsetree.core_type) = Obj.magic ty in let _2 : unit = Obj.magic _2 in let label : ( -# 928 "parsing/parser.mly" +# 937 "parsing/parser.mly" (string) -# 50923 "parsing/parser.ml" +# 52195 "parsing/parser.ml" ) = Obj.magic label in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos_label_ in @@ -50927,45 +52199,45 @@ module Tables = struct let _v : (Parsetree.core_type) = let _1 = let _1 = let ret_local = -# 3816 "parsing/parser.mly" +# 3915 "parsing/parser.mly" ( true ) -# 50933 "parsing/parser.ml" +# 52205 "parsing/parser.ml" in let (_endpos_ret_local_, _startpos_ret_local_) = (_endpos__1_, _startpos__1_) in let domain = let _1 = -# 3825 "parsing/parser.mly" +# 3924 "parsing/parser.mly" ( ty ) -# 50940 "parsing/parser.ml" +# 52212 "parsing/parser.ml" in let _endpos__1_ = _endpos_ty_ in -# 1112 "parsing/parser.mly" +# 1121 "parsing/parser.mly" ( extra_rhs_core_type _1 ~pos:_endpos__1_ ) -# 50946 "parsing/parser.ml" +# 52218 "parsing/parser.ml" in let arg_local = -# 3814 "parsing/parser.mly" +# 3913 "parsing/parser.mly" ( false ) -# 50952 "parsing/parser.ml" +# 52224 "parsing/parser.ml" in let (_endpos_arg_local_, _startpos_arg_local_) = (_endpos__2_, _endpos__2_) in let label = -# 3808 "parsing/parser.mly" +# 3907 "parsing/parser.mly" ( Labelled label ) -# 50958 "parsing/parser.ml" +# 52230 "parsing/parser.ml" in let _loc_ret_local_ = (_startpos_ret_local_, _endpos_ret_local_) in let _loc_codomain_ = (_startpos_codomain_, _endpos_codomain_) in let _loc_arg_local_ = (_startpos_arg_local_, _endpos_arg_local_) in -# 3797 "parsing/parser.mly" +# 3896 "parsing/parser.mly" ( Ptyp_arrow(label, mktyp_local_if arg_local domain _loc_arg_local_, mktyp_local_if ret_local (maybe_curry_typ codomain _loc_codomain_) _loc_ret_local_) ) -# 50969 "parsing/parser.ml" +# 52241 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_codomain_, _startpos_label_) in @@ -50973,15 +52245,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1151 "parsing/parser.mly" +# 1160 "parsing/parser.mly" ( mktyp ~loc:_sloc _1 ) -# 50979 "parsing/parser.ml" +# 52251 "parsing/parser.ml" in -# 3802 "parsing/parser.mly" +# 3901 "parsing/parser.mly" ( _1 ) -# 50985 "parsing/parser.ml" +# 52257 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -51009,9 +52281,9 @@ module Tables = struct MenhirLib.EngineTypes.endp = _endpos__5_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = ty; - MenhirLib.EngineTypes.startp = _startpos_ty_; - MenhirLib.EngineTypes.endp = _endpos_ty_; + MenhirLib.EngineTypes.semv = inner_type; + MenhirLib.EngineTypes.startp = _startpos_inner_type_; + MenhirLib.EngineTypes.endp = _endpos_inner_type_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; MenhirLib.EngineTypes.semv = _3; @@ -51056,16 +52328,16 @@ module Tables = struct let codomain : (Parsetree.core_type) = Obj.magic codomain in let _4 : unit = Obj.magic _4 in let _5 : unit = Obj.magic _5 in - let ty : (Parsetree.core_type) = Obj.magic ty in + let inner_type : (Parsetree.core_type) = Obj.magic inner_type in let _3 : unit = Obj.magic _3 in - let xs : (Asttypes.label Asttypes.loc list) = Obj.magic xs in + let xs : ((Asttypes.label Asttypes.loc * Asttypes.layout_annotation option) list) = Obj.magic xs in let _1_inlined1 : unit = Obj.magic _1_inlined1 in let _1 : unit = Obj.magic _1 in let _2 : unit = Obj.magic _2 in let label : ( -# 928 "parsing/parser.mly" +# 937 "parsing/parser.mly" (string) -# 51069 "parsing/parser.ml" +# 52341 "parsing/parser.ml" ) = Obj.magic label in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos_label_ in @@ -51073,9 +52345,9 @@ module Tables = struct let _v : (Parsetree.core_type) = let _1 = let _1 = let ret_local = -# 3814 "parsing/parser.mly" +# 3913 "parsing/parser.mly" ( false ) -# 51079 "parsing/parser.ml" +# 52351 "parsing/parser.ml" in let (_endpos_ret_local_, _startpos_ret_local_) = (_endpos__4_, _endpos__4_) in let domain = @@ -51083,29 +52355,29 @@ module Tables = struct let _1 = let _1 = let _1 = - let vars = + let bound_vars = let _1 = let xs = # 253 "" ( List.rev xs ) -# 51092 "parsing/parser.ml" +# 52364 "parsing/parser.ml" in -# 1216 "parsing/parser.mly" +# 1228 "parsing/parser.mly" ( xs ) -# 51097 "parsing/parser.ml" +# 52369 "parsing/parser.ml" in -# 3709 "parsing/parser.mly" +# 3798 "parsing/parser.mly" ( _1 ) -# 51103 "parsing/parser.ml" +# 52375 "parsing/parser.ml" in -# 3821 "parsing/parser.mly" - ( Ptyp_poly(vars, ty) ) -# 51109 "parsing/parser.ml" +# 3920 "parsing/parser.mly" + ( Jane_syntax.Layouts.Ltyp_poly { bound_vars; inner_type } ) +# 52381 "parsing/parser.ml" in let _endpos__1_ = _endpos__5_ in @@ -51113,45 +52385,45 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1151 "parsing/parser.mly" - ( mktyp ~loc:_sloc _1 ) -# 51119 "parsing/parser.ml" +# 1187 "parsing/parser.mly" + ( Jane_syntax.Layouts.type_of ~loc:(make_loc _sloc) ~attrs:[] _1 ) +# 52391 "parsing/parser.ml" in -# 3823 "parsing/parser.mly" +# 3922 "parsing/parser.mly" ( _1 ) -# 51125 "parsing/parser.ml" +# 52397 "parsing/parser.ml" in let _endpos__1_ = _endpos__5_ in -# 1112 "parsing/parser.mly" +# 1121 "parsing/parser.mly" ( extra_rhs_core_type _1 ~pos:_endpos__1_ ) -# 51132 "parsing/parser.ml" +# 52404 "parsing/parser.ml" in let arg_local = -# 3816 "parsing/parser.mly" +# 3915 "parsing/parser.mly" ( true ) -# 51138 "parsing/parser.ml" +# 52410 "parsing/parser.ml" in let (_endpos_arg_local_, _startpos_arg_local_) = (_endpos__1_, _startpos__1_) in let label = -# 3808 "parsing/parser.mly" +# 3907 "parsing/parser.mly" ( Labelled label ) -# 51144 "parsing/parser.ml" +# 52416 "parsing/parser.ml" in let _loc_ret_local_ = (_startpos_ret_local_, _endpos_ret_local_) in let _loc_codomain_ = (_startpos_codomain_, _endpos_codomain_) in let _loc_arg_local_ = (_startpos_arg_local_, _endpos_arg_local_) in -# 3797 "parsing/parser.mly" +# 3896 "parsing/parser.mly" ( Ptyp_arrow(label, mktyp_local_if arg_local domain _loc_arg_local_, mktyp_local_if ret_local (maybe_curry_typ codomain _loc_codomain_) _loc_ret_local_) ) -# 51155 "parsing/parser.ml" +# 52427 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_codomain_, _startpos_label_) in @@ -51159,15 +52431,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1151 "parsing/parser.mly" +# 1160 "parsing/parser.mly" ( mktyp ~loc:_sloc _1 ) -# 51165 "parsing/parser.ml" +# 52437 "parsing/parser.ml" in -# 3802 "parsing/parser.mly" +# 3901 "parsing/parser.mly" ( _1 ) -# 51171 "parsing/parser.ml" +# 52443 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -51200,9 +52472,9 @@ module Tables = struct MenhirLib.EngineTypes.endp = _endpos__5_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = ty; - MenhirLib.EngineTypes.startp = _startpos_ty_; - MenhirLib.EngineTypes.endp = _endpos_ty_; + MenhirLib.EngineTypes.semv = inner_type; + MenhirLib.EngineTypes.startp = _startpos_inner_type_; + MenhirLib.EngineTypes.endp = _endpos_inner_type_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; MenhirLib.EngineTypes.semv = _3; @@ -51249,16 +52521,16 @@ module Tables = struct let _1_inlined2 : unit = Obj.magic _1_inlined2 in let _4 : unit = Obj.magic _4 in let _5 : unit = Obj.magic _5 in - let ty : (Parsetree.core_type) = Obj.magic ty in + let inner_type : (Parsetree.core_type) = Obj.magic inner_type in let _3 : unit = Obj.magic _3 in - let xs : (Asttypes.label Asttypes.loc list) = Obj.magic xs in + let xs : ((Asttypes.label Asttypes.loc * Asttypes.layout_annotation option) list) = Obj.magic xs in let _1_inlined1 : unit = Obj.magic _1_inlined1 in let _1 : unit = Obj.magic _1 in let _2 : unit = Obj.magic _2 in let label : ( -# 928 "parsing/parser.mly" +# 937 "parsing/parser.mly" (string) -# 51262 "parsing/parser.ml" +# 52534 "parsing/parser.ml" ) = Obj.magic label in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos_label_ in @@ -51266,9 +52538,9 @@ module Tables = struct let _v : (Parsetree.core_type) = let _1 = let _1 = let ret_local = -# 3816 "parsing/parser.mly" +# 3915 "parsing/parser.mly" ( true ) -# 51272 "parsing/parser.ml" +# 52544 "parsing/parser.ml" in let (_endpos_ret_local_, _startpos_ret_local_) = (_endpos__1_inlined2_, _startpos__1_inlined2_) in let domain = @@ -51276,29 +52548,29 @@ module Tables = struct let _1 = let _1 = let _1 = - let vars = + let bound_vars = let _1 = let xs = # 253 "" ( List.rev xs ) -# 51285 "parsing/parser.ml" +# 52557 "parsing/parser.ml" in -# 1216 "parsing/parser.mly" +# 1228 "parsing/parser.mly" ( xs ) -# 51290 "parsing/parser.ml" +# 52562 "parsing/parser.ml" in -# 3709 "parsing/parser.mly" +# 3798 "parsing/parser.mly" ( _1 ) -# 51296 "parsing/parser.ml" +# 52568 "parsing/parser.ml" in -# 3821 "parsing/parser.mly" - ( Ptyp_poly(vars, ty) ) -# 51302 "parsing/parser.ml" +# 3920 "parsing/parser.mly" + ( Jane_syntax.Layouts.Ltyp_poly { bound_vars; inner_type } ) +# 52574 "parsing/parser.ml" in let _endpos__1_ = _endpos__5_ in @@ -51306,45 +52578,45 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1151 "parsing/parser.mly" - ( mktyp ~loc:_sloc _1 ) -# 51312 "parsing/parser.ml" +# 1187 "parsing/parser.mly" + ( Jane_syntax.Layouts.type_of ~loc:(make_loc _sloc) ~attrs:[] _1 ) +# 52584 "parsing/parser.ml" in -# 3823 "parsing/parser.mly" +# 3922 "parsing/parser.mly" ( _1 ) -# 51318 "parsing/parser.ml" +# 52590 "parsing/parser.ml" in let _endpos__1_ = _endpos__5_ in -# 1112 "parsing/parser.mly" +# 1121 "parsing/parser.mly" ( extra_rhs_core_type _1 ~pos:_endpos__1_ ) -# 51325 "parsing/parser.ml" +# 52597 "parsing/parser.ml" in let arg_local = -# 3816 "parsing/parser.mly" +# 3915 "parsing/parser.mly" ( true ) -# 51331 "parsing/parser.ml" +# 52603 "parsing/parser.ml" in let (_endpos_arg_local_, _startpos_arg_local_) = (_endpos__1_, _startpos__1_) in let label = -# 3808 "parsing/parser.mly" +# 3907 "parsing/parser.mly" ( Labelled label ) -# 51337 "parsing/parser.ml" +# 52609 "parsing/parser.ml" in let _loc_ret_local_ = (_startpos_ret_local_, _endpos_ret_local_) in let _loc_codomain_ = (_startpos_codomain_, _endpos_codomain_) in let _loc_arg_local_ = (_startpos_arg_local_, _endpos_arg_local_) in -# 3797 "parsing/parser.mly" +# 3896 "parsing/parser.mly" ( Ptyp_arrow(label, mktyp_local_if arg_local domain _loc_arg_local_, mktyp_local_if ret_local (maybe_curry_typ codomain _loc_codomain_) _loc_ret_local_) ) -# 51348 "parsing/parser.ml" +# 52620 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_codomain_, _startpos_label_) in @@ -51352,15 +52624,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1151 "parsing/parser.mly" +# 1160 "parsing/parser.mly" ( mktyp ~loc:_sloc _1 ) -# 51358 "parsing/parser.ml" +# 52630 "parsing/parser.ml" in -# 3802 "parsing/parser.mly" +# 3901 "parsing/parser.mly" ( _1 ) -# 51364 "parsing/parser.ml" +# 52636 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -51414,9 +52686,9 @@ module Tables = struct let _1 : unit = Obj.magic _1 in let _2 : unit = Obj.magic _2 in let label : ( -# 928 "parsing/parser.mly" +# 937 "parsing/parser.mly" (string) -# 51420 "parsing/parser.ml" +# 52692 "parsing/parser.ml" ) = Obj.magic label in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos_label_ in @@ -51424,45 +52696,45 @@ module Tables = struct let _v : (Parsetree.core_type) = let _1 = let _1 = let ret_local = -# 3814 "parsing/parser.mly" +# 3913 "parsing/parser.mly" ( false ) -# 51430 "parsing/parser.ml" +# 52702 "parsing/parser.ml" in let (_endpos_ret_local_, _startpos_ret_local_) = (_endpos__4_, _endpos__4_) in let domain = let _1 = -# 3825 "parsing/parser.mly" +# 3924 "parsing/parser.mly" ( ty ) -# 51437 "parsing/parser.ml" +# 52709 "parsing/parser.ml" in let _endpos__1_ = _endpos_ty_ in -# 1112 "parsing/parser.mly" +# 1121 "parsing/parser.mly" ( extra_rhs_core_type _1 ~pos:_endpos__1_ ) -# 51443 "parsing/parser.ml" +# 52715 "parsing/parser.ml" in let arg_local = -# 3816 "parsing/parser.mly" +# 3915 "parsing/parser.mly" ( true ) -# 51449 "parsing/parser.ml" +# 52721 "parsing/parser.ml" in let (_endpos_arg_local_, _startpos_arg_local_) = (_endpos__1_, _startpos__1_) in let label = -# 3808 "parsing/parser.mly" +# 3907 "parsing/parser.mly" ( Labelled label ) -# 51455 "parsing/parser.ml" +# 52727 "parsing/parser.ml" in let _loc_ret_local_ = (_startpos_ret_local_, _endpos_ret_local_) in let _loc_codomain_ = (_startpos_codomain_, _endpos_codomain_) in let _loc_arg_local_ = (_startpos_arg_local_, _endpos_arg_local_) in -# 3797 "parsing/parser.mly" +# 3896 "parsing/parser.mly" ( Ptyp_arrow(label, mktyp_local_if arg_local domain _loc_arg_local_, mktyp_local_if ret_local (maybe_curry_typ codomain _loc_codomain_) _loc_ret_local_) ) -# 51466 "parsing/parser.ml" +# 52738 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_codomain_, _startpos_label_) in @@ -51470,15 +52742,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1151 "parsing/parser.mly" +# 1160 "parsing/parser.mly" ( mktyp ~loc:_sloc _1 ) -# 51476 "parsing/parser.ml" +# 52748 "parsing/parser.ml" in -# 3802 "parsing/parser.mly" +# 3901 "parsing/parser.mly" ( _1 ) -# 51482 "parsing/parser.ml" +# 52754 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -51539,9 +52811,9 @@ module Tables = struct let _1 : unit = Obj.magic _1 in let _2 : unit = Obj.magic _2 in let label : ( -# 928 "parsing/parser.mly" +# 937 "parsing/parser.mly" (string) -# 51545 "parsing/parser.ml" +# 52817 "parsing/parser.ml" ) = Obj.magic label in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos_label_ in @@ -51549,45 +52821,45 @@ module Tables = struct let _v : (Parsetree.core_type) = let _1 = let _1 = let ret_local = -# 3816 "parsing/parser.mly" +# 3915 "parsing/parser.mly" ( true ) -# 51555 "parsing/parser.ml" +# 52827 "parsing/parser.ml" in let (_endpos_ret_local_, _startpos_ret_local_) = (_endpos__1_inlined1_, _startpos__1_inlined1_) in let domain = let _1 = -# 3825 "parsing/parser.mly" +# 3924 "parsing/parser.mly" ( ty ) -# 51562 "parsing/parser.ml" +# 52834 "parsing/parser.ml" in let _endpos__1_ = _endpos_ty_ in -# 1112 "parsing/parser.mly" +# 1121 "parsing/parser.mly" ( extra_rhs_core_type _1 ~pos:_endpos__1_ ) -# 51568 "parsing/parser.ml" +# 52840 "parsing/parser.ml" in let arg_local = -# 3816 "parsing/parser.mly" +# 3915 "parsing/parser.mly" ( true ) -# 51574 "parsing/parser.ml" +# 52846 "parsing/parser.ml" in let (_endpos_arg_local_, _startpos_arg_local_) = (_endpos__1_, _startpos__1_) in let label = -# 3808 "parsing/parser.mly" +# 3907 "parsing/parser.mly" ( Labelled label ) -# 51580 "parsing/parser.ml" +# 52852 "parsing/parser.ml" in let _loc_ret_local_ = (_startpos_ret_local_, _endpos_ret_local_) in let _loc_codomain_ = (_startpos_codomain_, _endpos_codomain_) in let _loc_arg_local_ = (_startpos_arg_local_, _endpos_arg_local_) in -# 3797 "parsing/parser.mly" +# 3896 "parsing/parser.mly" ( Ptyp_arrow(label, mktyp_local_if arg_local domain _loc_arg_local_, mktyp_local_if ret_local (maybe_curry_typ codomain _loc_codomain_) _loc_ret_local_) ) -# 51591 "parsing/parser.ml" +# 52863 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_codomain_, _startpos_label_) in @@ -51595,15 +52867,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1151 "parsing/parser.mly" +# 1160 "parsing/parser.mly" ( mktyp ~loc:_sloc _1 ) -# 51601 "parsing/parser.ml" +# 52873 "parsing/parser.ml" in -# 3802 "parsing/parser.mly" +# 3901 "parsing/parser.mly" ( _1 ) -# 51607 "parsing/parser.ml" +# 52879 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -51631,9 +52903,9 @@ module Tables = struct MenhirLib.EngineTypes.endp = _endpos__5_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = ty; - MenhirLib.EngineTypes.startp = _startpos_ty_; - MenhirLib.EngineTypes.endp = _endpos_ty_; + MenhirLib.EngineTypes.semv = inner_type; + MenhirLib.EngineTypes.startp = _startpos_inner_type_; + MenhirLib.EngineTypes.endp = _endpos_inner_type_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; MenhirLib.EngineTypes.semv = _3; @@ -51660,9 +52932,9 @@ module Tables = struct let codomain : (Parsetree.core_type) = Obj.magic codomain in let _4 : unit = Obj.magic _4 in let _5 : unit = Obj.magic _5 in - let ty : (Parsetree.core_type) = Obj.magic ty in + let inner_type : (Parsetree.core_type) = Obj.magic inner_type in let _3 : unit = Obj.magic _3 in - let xs : (Asttypes.label Asttypes.loc list) = Obj.magic xs in + let xs : ((Asttypes.label Asttypes.loc * Asttypes.layout_annotation option) list) = Obj.magic xs in let _1 : unit = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in @@ -51670,38 +52942,38 @@ module Tables = struct let _v : (Parsetree.core_type) = let _1 = let _1 = let ret_local = -# 3814 "parsing/parser.mly" +# 3913 "parsing/parser.mly" ( false ) -# 51676 "parsing/parser.ml" +# 52948 "parsing/parser.ml" in let (_endpos_ret_local_, _startpos_ret_local_) = (_endpos__4_, _endpos__4_) in let domain = let _1 = let _1 = let _1 = - let vars = + let bound_vars = let _1 = let xs = # 253 "" ( List.rev xs ) -# 51688 "parsing/parser.ml" +# 52960 "parsing/parser.ml" in -# 1216 "parsing/parser.mly" +# 1228 "parsing/parser.mly" ( xs ) -# 51693 "parsing/parser.ml" +# 52965 "parsing/parser.ml" in -# 3709 "parsing/parser.mly" +# 3798 "parsing/parser.mly" ( _1 ) -# 51699 "parsing/parser.ml" +# 52971 "parsing/parser.ml" in -# 3821 "parsing/parser.mly" - ( Ptyp_poly(vars, ty) ) -# 51705 "parsing/parser.ml" +# 3920 "parsing/parser.mly" + ( Jane_syntax.Layouts.Ltyp_poly { bound_vars; inner_type } ) +# 52977 "parsing/parser.ml" in let _endpos__1_ = _endpos__5_ in @@ -51709,45 +52981,45 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1151 "parsing/parser.mly" - ( mktyp ~loc:_sloc _1 ) -# 51715 "parsing/parser.ml" +# 1187 "parsing/parser.mly" + ( Jane_syntax.Layouts.type_of ~loc:(make_loc _sloc) ~attrs:[] _1 ) +# 52987 "parsing/parser.ml" in -# 3823 "parsing/parser.mly" +# 3922 "parsing/parser.mly" ( _1 ) -# 51721 "parsing/parser.ml" +# 52993 "parsing/parser.ml" in let _endpos__1_ = _endpos__5_ in -# 1112 "parsing/parser.mly" +# 1121 "parsing/parser.mly" ( extra_rhs_core_type _1 ~pos:_endpos__1_ ) -# 51728 "parsing/parser.ml" +# 53000 "parsing/parser.ml" in let arg_local = -# 3814 "parsing/parser.mly" +# 3913 "parsing/parser.mly" ( false ) -# 51734 "parsing/parser.ml" +# 53006 "parsing/parser.ml" in let (_endpos_arg_local_, _startpos_arg_local_) = (_endpos__0_, _endpos__0_) in let label = -# 3810 "parsing/parser.mly" +# 3909 "parsing/parser.mly" ( Nolabel ) -# 51740 "parsing/parser.ml" +# 53012 "parsing/parser.ml" in let _loc_ret_local_ = (_startpos_ret_local_, _endpos_ret_local_) in let _loc_codomain_ = (_startpos_codomain_, _endpos_codomain_) in let _loc_arg_local_ = (_startpos_arg_local_, _endpos_arg_local_) in -# 3797 "parsing/parser.mly" +# 3896 "parsing/parser.mly" ( Ptyp_arrow(label, mktyp_local_if arg_local domain _loc_arg_local_, mktyp_local_if ret_local (maybe_curry_typ codomain _loc_codomain_) _loc_ret_local_) ) -# 51751 "parsing/parser.ml" +# 53023 "parsing/parser.ml" in let _endpos__1_ = _endpos_codomain_ in @@ -51755,15 +53027,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1151 "parsing/parser.mly" +# 1160 "parsing/parser.mly" ( mktyp ~loc:_sloc _1 ) -# 51761 "parsing/parser.ml" +# 53033 "parsing/parser.ml" in -# 3802 "parsing/parser.mly" +# 3901 "parsing/parser.mly" ( _1 ) -# 51767 "parsing/parser.ml" +# 53039 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -51796,9 +53068,9 @@ module Tables = struct MenhirLib.EngineTypes.endp = _endpos__5_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = ty; - MenhirLib.EngineTypes.startp = _startpos_ty_; - MenhirLib.EngineTypes.endp = _endpos_ty_; + MenhirLib.EngineTypes.semv = inner_type; + MenhirLib.EngineTypes.startp = _startpos_inner_type_; + MenhirLib.EngineTypes.endp = _endpos_inner_type_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; MenhirLib.EngineTypes.semv = _3; @@ -51827,9 +53099,9 @@ module Tables = struct let _1_inlined1 : unit = Obj.magic _1_inlined1 in let _4 : unit = Obj.magic _4 in let _5 : unit = Obj.magic _5 in - let ty : (Parsetree.core_type) = Obj.magic ty in + let inner_type : (Parsetree.core_type) = Obj.magic inner_type in let _3 : unit = Obj.magic _3 in - let xs : (Asttypes.label Asttypes.loc list) = Obj.magic xs in + let xs : ((Asttypes.label Asttypes.loc * Asttypes.layout_annotation option) list) = Obj.magic xs in let _1 : unit = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in @@ -51837,38 +53109,38 @@ module Tables = struct let _v : (Parsetree.core_type) = let _1 = let _1 = let ret_local = -# 3816 "parsing/parser.mly" +# 3915 "parsing/parser.mly" ( true ) -# 51843 "parsing/parser.ml" +# 53115 "parsing/parser.ml" in let (_endpos_ret_local_, _startpos_ret_local_) = (_endpos__1_inlined1_, _startpos__1_inlined1_) in let domain = let _1 = let _1 = let _1 = - let vars = + let bound_vars = let _1 = let xs = # 253 "" ( List.rev xs ) -# 51855 "parsing/parser.ml" +# 53127 "parsing/parser.ml" in -# 1216 "parsing/parser.mly" +# 1228 "parsing/parser.mly" ( xs ) -# 51860 "parsing/parser.ml" +# 53132 "parsing/parser.ml" in -# 3709 "parsing/parser.mly" +# 3798 "parsing/parser.mly" ( _1 ) -# 51866 "parsing/parser.ml" +# 53138 "parsing/parser.ml" in -# 3821 "parsing/parser.mly" - ( Ptyp_poly(vars, ty) ) -# 51872 "parsing/parser.ml" +# 3920 "parsing/parser.mly" + ( Jane_syntax.Layouts.Ltyp_poly { bound_vars; inner_type } ) +# 53144 "parsing/parser.ml" in let _endpos__1_ = _endpos__5_ in @@ -51876,45 +53148,45 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1151 "parsing/parser.mly" - ( mktyp ~loc:_sloc _1 ) -# 51882 "parsing/parser.ml" +# 1187 "parsing/parser.mly" + ( Jane_syntax.Layouts.type_of ~loc:(make_loc _sloc) ~attrs:[] _1 ) +# 53154 "parsing/parser.ml" in -# 3823 "parsing/parser.mly" +# 3922 "parsing/parser.mly" ( _1 ) -# 51888 "parsing/parser.ml" +# 53160 "parsing/parser.ml" in let _endpos__1_ = _endpos__5_ in -# 1112 "parsing/parser.mly" +# 1121 "parsing/parser.mly" ( extra_rhs_core_type _1 ~pos:_endpos__1_ ) -# 51895 "parsing/parser.ml" +# 53167 "parsing/parser.ml" in let arg_local = -# 3814 "parsing/parser.mly" +# 3913 "parsing/parser.mly" ( false ) -# 51901 "parsing/parser.ml" +# 53173 "parsing/parser.ml" in let (_endpos_arg_local_, _startpos_arg_local_) = (_endpos__0_, _endpos__0_) in let label = -# 3810 "parsing/parser.mly" +# 3909 "parsing/parser.mly" ( Nolabel ) -# 51907 "parsing/parser.ml" +# 53179 "parsing/parser.ml" in let _loc_ret_local_ = (_startpos_ret_local_, _endpos_ret_local_) in let _loc_codomain_ = (_startpos_codomain_, _endpos_codomain_) in let _loc_arg_local_ = (_startpos_arg_local_, _endpos_arg_local_) in -# 3797 "parsing/parser.mly" +# 3896 "parsing/parser.mly" ( Ptyp_arrow(label, mktyp_local_if arg_local domain _loc_arg_local_, mktyp_local_if ret_local (maybe_curry_typ codomain _loc_codomain_) _loc_ret_local_) ) -# 51918 "parsing/parser.ml" +# 53190 "parsing/parser.ml" in let _endpos__1_ = _endpos_codomain_ in @@ -51922,15 +53194,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1151 "parsing/parser.mly" +# 1160 "parsing/parser.mly" ( mktyp ~loc:_sloc _1 ) -# 51928 "parsing/parser.ml" +# 53200 "parsing/parser.ml" in -# 3802 "parsing/parser.mly" +# 3901 "parsing/parser.mly" ( _1 ) -# 51934 "parsing/parser.ml" +# 53206 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -51969,45 +53241,45 @@ module Tables = struct let _v : (Parsetree.core_type) = let _1 = let _1 = let ret_local = -# 3814 "parsing/parser.mly" +# 3913 "parsing/parser.mly" ( false ) -# 51975 "parsing/parser.ml" +# 53247 "parsing/parser.ml" in let (_endpos_ret_local_, _startpos_ret_local_) = (_endpos__4_, _endpos__4_) in let domain = let _1 = -# 3825 "parsing/parser.mly" +# 3924 "parsing/parser.mly" ( ty ) -# 51982 "parsing/parser.ml" +# 53254 "parsing/parser.ml" in let _endpos__1_ = _endpos_ty_ in -# 1112 "parsing/parser.mly" +# 1121 "parsing/parser.mly" ( extra_rhs_core_type _1 ~pos:_endpos__1_ ) -# 51988 "parsing/parser.ml" +# 53260 "parsing/parser.ml" in let arg_local = -# 3814 "parsing/parser.mly" +# 3913 "parsing/parser.mly" ( false ) -# 51994 "parsing/parser.ml" +# 53266 "parsing/parser.ml" in let (_endpos_arg_local_, _startpos_arg_local_) = (_endpos__0_, _endpos__0_) in let label = -# 3810 "parsing/parser.mly" +# 3909 "parsing/parser.mly" ( Nolabel ) -# 52000 "parsing/parser.ml" +# 53272 "parsing/parser.ml" in let _loc_ret_local_ = (_startpos_ret_local_, _endpos_ret_local_) in let _loc_codomain_ = (_startpos_codomain_, _endpos_codomain_) in let _loc_arg_local_ = (_startpos_arg_local_, _endpos_arg_local_) in -# 3797 "parsing/parser.mly" +# 3896 "parsing/parser.mly" ( Ptyp_arrow(label, mktyp_local_if arg_local domain _loc_arg_local_, mktyp_local_if ret_local (maybe_curry_typ codomain _loc_codomain_) _loc_ret_local_) ) -# 52011 "parsing/parser.ml" +# 53283 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_codomain_, _startpos_ty_) in @@ -52015,15 +53287,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1151 "parsing/parser.mly" +# 1160 "parsing/parser.mly" ( mktyp ~loc:_sloc _1 ) -# 52021 "parsing/parser.ml" +# 53293 "parsing/parser.ml" in -# 3802 "parsing/parser.mly" +# 3901 "parsing/parser.mly" ( _1 ) -# 52027 "parsing/parser.ml" +# 53299 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -52069,45 +53341,45 @@ module Tables = struct let _v : (Parsetree.core_type) = let _1 = let _1 = let ret_local = -# 3816 "parsing/parser.mly" +# 3915 "parsing/parser.mly" ( true ) -# 52075 "parsing/parser.ml" +# 53347 "parsing/parser.ml" in let (_endpos_ret_local_, _startpos_ret_local_) = (_endpos__1_, _startpos__1_) in let domain = let _1 = -# 3825 "parsing/parser.mly" +# 3924 "parsing/parser.mly" ( ty ) -# 52082 "parsing/parser.ml" +# 53354 "parsing/parser.ml" in let _endpos__1_ = _endpos_ty_ in -# 1112 "parsing/parser.mly" +# 1121 "parsing/parser.mly" ( extra_rhs_core_type _1 ~pos:_endpos__1_ ) -# 52088 "parsing/parser.ml" +# 53360 "parsing/parser.ml" in let arg_local = -# 3814 "parsing/parser.mly" +# 3913 "parsing/parser.mly" ( false ) -# 52094 "parsing/parser.ml" +# 53366 "parsing/parser.ml" in let (_endpos_arg_local_, _startpos_arg_local_) = (_endpos__0_, _endpos__0_) in let label = -# 3810 "parsing/parser.mly" +# 3909 "parsing/parser.mly" ( Nolabel ) -# 52100 "parsing/parser.ml" +# 53372 "parsing/parser.ml" in let _loc_ret_local_ = (_startpos_ret_local_, _endpos_ret_local_) in let _loc_codomain_ = (_startpos_codomain_, _endpos_codomain_) in let _loc_arg_local_ = (_startpos_arg_local_, _endpos_arg_local_) in -# 3797 "parsing/parser.mly" +# 3896 "parsing/parser.mly" ( Ptyp_arrow(label, mktyp_local_if arg_local domain _loc_arg_local_, mktyp_local_if ret_local (maybe_curry_typ codomain _loc_codomain_) _loc_ret_local_) ) -# 52111 "parsing/parser.ml" +# 53383 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_codomain_, _startpos_ty_) in @@ -52115,15 +53387,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1151 "parsing/parser.mly" +# 1160 "parsing/parser.mly" ( mktyp ~loc:_sloc _1 ) -# 52121 "parsing/parser.ml" +# 53393 "parsing/parser.ml" in -# 3802 "parsing/parser.mly" +# 3901 "parsing/parser.mly" ( _1 ) -# 52127 "parsing/parser.ml" +# 53399 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -52151,9 +53423,9 @@ module Tables = struct MenhirLib.EngineTypes.endp = _endpos__5_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = ty; - MenhirLib.EngineTypes.startp = _startpos_ty_; - MenhirLib.EngineTypes.endp = _endpos_ty_; + MenhirLib.EngineTypes.semv = inner_type; + MenhirLib.EngineTypes.startp = _startpos_inner_type_; + MenhirLib.EngineTypes.endp = _endpos_inner_type_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; MenhirLib.EngineTypes.semv = _3; @@ -52186,9 +53458,9 @@ module Tables = struct let codomain : (Parsetree.core_type) = Obj.magic codomain in let _4 : unit = Obj.magic _4 in let _5 : unit = Obj.magic _5 in - let ty : (Parsetree.core_type) = Obj.magic ty in + let inner_type : (Parsetree.core_type) = Obj.magic inner_type in let _3 : unit = Obj.magic _3 in - let xs : (Asttypes.label Asttypes.loc list) = Obj.magic xs in + let xs : ((Asttypes.label Asttypes.loc * Asttypes.layout_annotation option) list) = Obj.magic xs in let _1_inlined1 : unit = Obj.magic _1_inlined1 in let _1 : unit = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in @@ -52197,9 +53469,9 @@ module Tables = struct let _v : (Parsetree.core_type) = let _1 = let _1 = let ret_local = -# 3814 "parsing/parser.mly" +# 3913 "parsing/parser.mly" ( false ) -# 52203 "parsing/parser.ml" +# 53475 "parsing/parser.ml" in let (_endpos_ret_local_, _startpos_ret_local_) = (_endpos__4_, _endpos__4_) in let domain = @@ -52207,29 +53479,29 @@ module Tables = struct let _1 = let _1 = let _1 = - let vars = + let bound_vars = let _1 = let xs = # 253 "" ( List.rev xs ) -# 52216 "parsing/parser.ml" +# 53488 "parsing/parser.ml" in -# 1216 "parsing/parser.mly" +# 1228 "parsing/parser.mly" ( xs ) -# 52221 "parsing/parser.ml" +# 53493 "parsing/parser.ml" in -# 3709 "parsing/parser.mly" +# 3798 "parsing/parser.mly" ( _1 ) -# 52227 "parsing/parser.ml" +# 53499 "parsing/parser.ml" in -# 3821 "parsing/parser.mly" - ( Ptyp_poly(vars, ty) ) -# 52233 "parsing/parser.ml" +# 3920 "parsing/parser.mly" + ( Jane_syntax.Layouts.Ltyp_poly { bound_vars; inner_type } ) +# 53505 "parsing/parser.ml" in let _endpos__1_ = _endpos__5_ in @@ -52237,45 +53509,45 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1151 "parsing/parser.mly" - ( mktyp ~loc:_sloc _1 ) -# 52243 "parsing/parser.ml" +# 1187 "parsing/parser.mly" + ( Jane_syntax.Layouts.type_of ~loc:(make_loc _sloc) ~attrs:[] _1 ) +# 53515 "parsing/parser.ml" in -# 3823 "parsing/parser.mly" +# 3922 "parsing/parser.mly" ( _1 ) -# 52249 "parsing/parser.ml" +# 53521 "parsing/parser.ml" in let _endpos__1_ = _endpos__5_ in -# 1112 "parsing/parser.mly" +# 1121 "parsing/parser.mly" ( extra_rhs_core_type _1 ~pos:_endpos__1_ ) -# 52256 "parsing/parser.ml" +# 53528 "parsing/parser.ml" in let arg_local = -# 3816 "parsing/parser.mly" +# 3915 "parsing/parser.mly" ( true ) -# 52262 "parsing/parser.ml" +# 53534 "parsing/parser.ml" in let (_endpos_arg_local_, _startpos_arg_local_) = (_endpos__1_, _startpos__1_) in let label = -# 3810 "parsing/parser.mly" +# 3909 "parsing/parser.mly" ( Nolabel ) -# 52268 "parsing/parser.ml" +# 53540 "parsing/parser.ml" in let _loc_ret_local_ = (_startpos_ret_local_, _endpos_ret_local_) in let _loc_codomain_ = (_startpos_codomain_, _endpos_codomain_) in let _loc_arg_local_ = (_startpos_arg_local_, _endpos_arg_local_) in -# 3797 "parsing/parser.mly" +# 3896 "parsing/parser.mly" ( Ptyp_arrow(label, mktyp_local_if arg_local domain _loc_arg_local_, mktyp_local_if ret_local (maybe_curry_typ codomain _loc_codomain_) _loc_ret_local_) ) -# 52279 "parsing/parser.ml" +# 53551 "parsing/parser.ml" in let _endpos__1_ = _endpos_codomain_ in @@ -52283,15 +53555,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1151 "parsing/parser.mly" +# 1160 "parsing/parser.mly" ( mktyp ~loc:_sloc _1 ) -# 52289 "parsing/parser.ml" +# 53561 "parsing/parser.ml" in -# 3802 "parsing/parser.mly" +# 3901 "parsing/parser.mly" ( _1 ) -# 52295 "parsing/parser.ml" +# 53567 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -52324,9 +53596,9 @@ module Tables = struct MenhirLib.EngineTypes.endp = _endpos__5_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = ty; - MenhirLib.EngineTypes.startp = _startpos_ty_; - MenhirLib.EngineTypes.endp = _endpos_ty_; + MenhirLib.EngineTypes.semv = inner_type; + MenhirLib.EngineTypes.startp = _startpos_inner_type_; + MenhirLib.EngineTypes.endp = _endpos_inner_type_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; MenhirLib.EngineTypes.semv = _3; @@ -52361,9 +53633,9 @@ module Tables = struct let _1_inlined2 : unit = Obj.magic _1_inlined2 in let _4 : unit = Obj.magic _4 in let _5 : unit = Obj.magic _5 in - let ty : (Parsetree.core_type) = Obj.magic ty in + let inner_type : (Parsetree.core_type) = Obj.magic inner_type in let _3 : unit = Obj.magic _3 in - let xs : (Asttypes.label Asttypes.loc list) = Obj.magic xs in + let xs : ((Asttypes.label Asttypes.loc * Asttypes.layout_annotation option) list) = Obj.magic xs in let _1_inlined1 : unit = Obj.magic _1_inlined1 in let _1 : unit = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in @@ -52372,9 +53644,9 @@ module Tables = struct let _v : (Parsetree.core_type) = let _1 = let _1 = let ret_local = -# 3816 "parsing/parser.mly" +# 3915 "parsing/parser.mly" ( true ) -# 52378 "parsing/parser.ml" +# 53650 "parsing/parser.ml" in let (_endpos_ret_local_, _startpos_ret_local_) = (_endpos__1_inlined2_, _startpos__1_inlined2_) in let domain = @@ -52382,29 +53654,29 @@ module Tables = struct let _1 = let _1 = let _1 = - let vars = + let bound_vars = let _1 = let xs = # 253 "" ( List.rev xs ) -# 52391 "parsing/parser.ml" +# 53663 "parsing/parser.ml" in -# 1216 "parsing/parser.mly" +# 1228 "parsing/parser.mly" ( xs ) -# 52396 "parsing/parser.ml" +# 53668 "parsing/parser.ml" in -# 3709 "parsing/parser.mly" +# 3798 "parsing/parser.mly" ( _1 ) -# 52402 "parsing/parser.ml" +# 53674 "parsing/parser.ml" in -# 3821 "parsing/parser.mly" - ( Ptyp_poly(vars, ty) ) -# 52408 "parsing/parser.ml" +# 3920 "parsing/parser.mly" + ( Jane_syntax.Layouts.Ltyp_poly { bound_vars; inner_type } ) +# 53680 "parsing/parser.ml" in let _endpos__1_ = _endpos__5_ in @@ -52412,45 +53684,45 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1151 "parsing/parser.mly" - ( mktyp ~loc:_sloc _1 ) -# 52418 "parsing/parser.ml" +# 1187 "parsing/parser.mly" + ( Jane_syntax.Layouts.type_of ~loc:(make_loc _sloc) ~attrs:[] _1 ) +# 53690 "parsing/parser.ml" in -# 3823 "parsing/parser.mly" +# 3922 "parsing/parser.mly" ( _1 ) -# 52424 "parsing/parser.ml" +# 53696 "parsing/parser.ml" in let _endpos__1_ = _endpos__5_ in -# 1112 "parsing/parser.mly" +# 1121 "parsing/parser.mly" ( extra_rhs_core_type _1 ~pos:_endpos__1_ ) -# 52431 "parsing/parser.ml" +# 53703 "parsing/parser.ml" in let arg_local = -# 3816 "parsing/parser.mly" +# 3915 "parsing/parser.mly" ( true ) -# 52437 "parsing/parser.ml" +# 53709 "parsing/parser.ml" in let (_endpos_arg_local_, _startpos_arg_local_) = (_endpos__1_, _startpos__1_) in let label = -# 3810 "parsing/parser.mly" +# 3909 "parsing/parser.mly" ( Nolabel ) -# 52443 "parsing/parser.ml" +# 53715 "parsing/parser.ml" in let _loc_ret_local_ = (_startpos_ret_local_, _endpos_ret_local_) in let _loc_codomain_ = (_startpos_codomain_, _endpos_codomain_) in let _loc_arg_local_ = (_startpos_arg_local_, _endpos_arg_local_) in -# 3797 "parsing/parser.mly" +# 3896 "parsing/parser.mly" ( Ptyp_arrow(label, mktyp_local_if arg_local domain _loc_arg_local_, mktyp_local_if ret_local (maybe_curry_typ codomain _loc_codomain_) _loc_ret_local_) ) -# 52454 "parsing/parser.ml" +# 53726 "parsing/parser.ml" in let _endpos__1_ = _endpos_codomain_ in @@ -52458,15 +53730,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1151 "parsing/parser.mly" +# 1160 "parsing/parser.mly" ( mktyp ~loc:_sloc _1 ) -# 52464 "parsing/parser.ml" +# 53736 "parsing/parser.ml" in -# 3802 "parsing/parser.mly" +# 3901 "parsing/parser.mly" ( _1 ) -# 52470 "parsing/parser.ml" +# 53742 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -52512,45 +53784,45 @@ module Tables = struct let _v : (Parsetree.core_type) = let _1 = let _1 = let ret_local = -# 3814 "parsing/parser.mly" +# 3913 "parsing/parser.mly" ( false ) -# 52518 "parsing/parser.ml" +# 53790 "parsing/parser.ml" in let (_endpos_ret_local_, _startpos_ret_local_) = (_endpos__4_, _endpos__4_) in let domain = let _1 = -# 3825 "parsing/parser.mly" +# 3924 "parsing/parser.mly" ( ty ) -# 52525 "parsing/parser.ml" +# 53797 "parsing/parser.ml" in let _endpos__1_ = _endpos_ty_ in -# 1112 "parsing/parser.mly" +# 1121 "parsing/parser.mly" ( extra_rhs_core_type _1 ~pos:_endpos__1_ ) -# 52531 "parsing/parser.ml" +# 53803 "parsing/parser.ml" in let arg_local = -# 3816 "parsing/parser.mly" +# 3915 "parsing/parser.mly" ( true ) -# 52537 "parsing/parser.ml" +# 53809 "parsing/parser.ml" in let (_endpos_arg_local_, _startpos_arg_local_) = (_endpos__1_, _startpos__1_) in let label = -# 3810 "parsing/parser.mly" +# 3909 "parsing/parser.mly" ( Nolabel ) -# 52543 "parsing/parser.ml" +# 53815 "parsing/parser.ml" in let _loc_ret_local_ = (_startpos_ret_local_, _endpos_ret_local_) in let _loc_codomain_ = (_startpos_codomain_, _endpos_codomain_) in let _loc_arg_local_ = (_startpos_arg_local_, _endpos_arg_local_) in -# 3797 "parsing/parser.mly" +# 3896 "parsing/parser.mly" ( Ptyp_arrow(label, mktyp_local_if arg_local domain _loc_arg_local_, mktyp_local_if ret_local (maybe_curry_typ codomain _loc_codomain_) _loc_ret_local_) ) -# 52554 "parsing/parser.ml" +# 53826 "parsing/parser.ml" in let _endpos__1_ = _endpos_codomain_ in @@ -52558,15 +53830,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1151 "parsing/parser.mly" +# 1160 "parsing/parser.mly" ( mktyp ~loc:_sloc _1 ) -# 52564 "parsing/parser.ml" +# 53836 "parsing/parser.ml" in -# 3802 "parsing/parser.mly" +# 3901 "parsing/parser.mly" ( _1 ) -# 52570 "parsing/parser.ml" +# 53842 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -52619,45 +53891,45 @@ module Tables = struct let _v : (Parsetree.core_type) = let _1 = let _1 = let ret_local = -# 3816 "parsing/parser.mly" +# 3915 "parsing/parser.mly" ( true ) -# 52625 "parsing/parser.ml" +# 53897 "parsing/parser.ml" in let (_endpos_ret_local_, _startpos_ret_local_) = (_endpos__1_inlined1_, _startpos__1_inlined1_) in let domain = let _1 = -# 3825 "parsing/parser.mly" +# 3924 "parsing/parser.mly" ( ty ) -# 52632 "parsing/parser.ml" +# 53904 "parsing/parser.ml" in let _endpos__1_ = _endpos_ty_ in -# 1112 "parsing/parser.mly" +# 1121 "parsing/parser.mly" ( extra_rhs_core_type _1 ~pos:_endpos__1_ ) -# 52638 "parsing/parser.ml" +# 53910 "parsing/parser.ml" in let arg_local = -# 3816 "parsing/parser.mly" +# 3915 "parsing/parser.mly" ( true ) -# 52644 "parsing/parser.ml" +# 53916 "parsing/parser.ml" in let (_endpos_arg_local_, _startpos_arg_local_) = (_endpos__1_, _startpos__1_) in let label = -# 3810 "parsing/parser.mly" +# 3909 "parsing/parser.mly" ( Nolabel ) -# 52650 "parsing/parser.ml" +# 53922 "parsing/parser.ml" in let _loc_ret_local_ = (_startpos_ret_local_, _endpos_ret_local_) in let _loc_codomain_ = (_startpos_codomain_, _endpos_codomain_) in let _loc_arg_local_ = (_startpos_arg_local_, _endpos_arg_local_) in -# 3797 "parsing/parser.mly" +# 3896 "parsing/parser.mly" ( Ptyp_arrow(label, mktyp_local_if arg_local domain _loc_arg_local_, mktyp_local_if ret_local (maybe_curry_typ codomain _loc_codomain_) _loc_ret_local_) ) -# 52661 "parsing/parser.ml" +# 53933 "parsing/parser.ml" in let _endpos__1_ = _endpos_codomain_ in @@ -52665,15 +53937,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1151 "parsing/parser.mly" +# 1160 "parsing/parser.mly" ( mktyp ~loc:_sloc _1 ) -# 52671 "parsing/parser.ml" +# 53943 "parsing/parser.ml" in -# 3802 "parsing/parser.mly" +# 3901 "parsing/parser.mly" ( _1 ) -# 52677 "parsing/parser.ml" +# 53949 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -52700,39 +53972,39 @@ module Tables = struct let ys = # 260 "" ( List.flatten xss ) -# 52704 "parsing/parser.ml" +# 53976 "parsing/parser.ml" in let xs = let items = -# 1184 "parsing/parser.mly" +# 1196 "parsing/parser.mly" ( [] ) -# 52710 "parsing/parser.ml" +# 53982 "parsing/parser.ml" in -# 1613 "parsing/parser.mly" +# 1625 "parsing/parser.mly" ( items ) -# 52715 "parsing/parser.ml" +# 53987 "parsing/parser.ml" in # 267 "" ( xs @ ys ) -# 52721 "parsing/parser.ml" +# 53993 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_xss_, _startpos_xss_) in let _endpos = _endpos__1_ in let _startpos = _startpos__1_ in -# 1106 "parsing/parser.mly" +# 1115 "parsing/parser.mly" ( extra_str _startpos _endpos _1 ) -# 52730 "parsing/parser.ml" +# 54002 "parsing/parser.ml" in -# 1606 "parsing/parser.mly" +# 1618 "parsing/parser.mly" ( _1 ) -# 52736 "parsing/parser.ml" +# 54008 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -52773,7 +54045,7 @@ module Tables = struct let ys = # 260 "" ( List.flatten xss ) -# 52777 "parsing/parser.ml" +# 54049 "parsing/parser.ml" in let xs = let items = @@ -52781,65 +54053,65 @@ module Tables = struct let _1 = let _1 = let attrs = -# 4367 "parsing/parser.mly" +# 4472 "parsing/parser.mly" ( _1 ) -# 52787 "parsing/parser.ml" +# 54059 "parsing/parser.ml" in -# 1620 "parsing/parser.mly" +# 1632 "parsing/parser.mly" ( mkstrexp e attrs ) -# 52792 "parsing/parser.ml" +# 54064 "parsing/parser.ml" in let _startpos__1_ = _startpos_e_ in let _startpos = _startpos__1_ in -# 1118 "parsing/parser.mly" +# 1127 "parsing/parser.mly" ( text_str _startpos @ [_1] ) -# 52800 "parsing/parser.ml" +# 54072 "parsing/parser.ml" in let _startpos__1_ = _startpos_e_ in let _endpos = _endpos__1_ in let _startpos = _startpos__1_ in -# 1137 "parsing/parser.mly" +# 1146 "parsing/parser.mly" ( mark_rhs_docs _startpos _endpos; _1 ) -# 52810 "parsing/parser.ml" +# 54082 "parsing/parser.ml" in -# 1186 "parsing/parser.mly" +# 1198 "parsing/parser.mly" ( x ) -# 52816 "parsing/parser.ml" +# 54088 "parsing/parser.ml" in -# 1613 "parsing/parser.mly" +# 1625 "parsing/parser.mly" ( items ) -# 52822 "parsing/parser.ml" +# 54094 "parsing/parser.ml" in # 267 "" ( xs @ ys ) -# 52828 "parsing/parser.ml" +# 54100 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_xss_, _startpos_e_) in let _endpos = _endpos__1_ in let _startpos = _startpos__1_ in -# 1106 "parsing/parser.mly" +# 1115 "parsing/parser.mly" ( extra_str _startpos _endpos _1 ) -# 52837 "parsing/parser.ml" +# 54109 "parsing/parser.ml" in -# 1606 "parsing/parser.mly" +# 1618 "parsing/parser.mly" ( _1 ) -# 52843 "parsing/parser.ml" +# 54115 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -52865,9 +54137,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1635 "parsing/parser.mly" +# 1647 "parsing/parser.mly" ( val_of_let_bindings ~loc:_sloc _1 ) -# 52871 "parsing/parser.ml" +# 54143 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -52901,9 +54173,9 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4367 "parsing/parser.mly" +# 4472 "parsing/parser.mly" ( _1 ) -# 52907 "parsing/parser.ml" +# 54179 "parsing/parser.ml" in let _endpos__2_ = _endpos__1_inlined1_ in @@ -52911,10 +54183,10 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1638 "parsing/parser.mly" +# 1650 "parsing/parser.mly" ( let docs = symbol_docs _sloc in Pstr_extension (_1, add_docs_attrs docs _2) ) -# 52918 "parsing/parser.ml" +# 54190 "parsing/parser.ml" in let _endpos__1_ = _endpos__1_inlined1_ in @@ -52922,15 +54194,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1153 "parsing/parser.mly" +# 1162 "parsing/parser.mly" ( mkstr ~loc:_sloc _1 ) -# 52928 "parsing/parser.ml" +# 54200 "parsing/parser.ml" in -# 1667 "parsing/parser.mly" +# 1679 "parsing/parser.mly" ( _1 ) -# 52934 "parsing/parser.ml" +# 54206 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -52954,23 +54226,23 @@ module Tables = struct let _endpos = _endpos__1_ in let _v : (Parsetree.structure_item) = let _1 = let _1 = -# 1641 "parsing/parser.mly" +# 1653 "parsing/parser.mly" ( Pstr_attribute _1 ) -# 52960 "parsing/parser.ml" +# 54232 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1153 "parsing/parser.mly" +# 1162 "parsing/parser.mly" ( mkstr ~loc:_sloc _1 ) -# 52968 "parsing/parser.ml" +# 54240 "parsing/parser.ml" in -# 1667 "parsing/parser.mly" +# 1679 "parsing/parser.mly" ( _1 ) -# 52974 "parsing/parser.ml" +# 54246 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -52994,23 +54266,23 @@ module Tables = struct let _endpos = _endpos__1_ in let _v : (Parsetree.structure_item) = let _1 = let _1 = -# 1645 "parsing/parser.mly" +# 1657 "parsing/parser.mly" ( pstr_primitive _1 ) -# 53000 "parsing/parser.ml" +# 54272 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1170 "parsing/parser.mly" +# 1179 "parsing/parser.mly" ( wrap_mkstr_ext ~loc:_sloc _1 ) -# 53008 "parsing/parser.ml" +# 54280 "parsing/parser.ml" in -# 1667 "parsing/parser.mly" +# 1679 "parsing/parser.mly" ( _1 ) -# 53014 "parsing/parser.ml" +# 54286 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -53034,23 +54306,23 @@ module Tables = struct let _endpos = _endpos__1_ in let _v : (Parsetree.structure_item) = let _1 = let _1 = -# 1647 "parsing/parser.mly" +# 1659 "parsing/parser.mly" ( pstr_primitive _1 ) -# 53040 "parsing/parser.ml" +# 54312 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1170 "parsing/parser.mly" +# 1179 "parsing/parser.mly" ( wrap_mkstr_ext ~loc:_sloc _1 ) -# 53048 "parsing/parser.ml" +# 54320 "parsing/parser.ml" in -# 1667 "parsing/parser.mly" +# 1679 "parsing/parser.mly" ( _1 ) -# 53054 "parsing/parser.ml" +# 54326 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -53085,26 +54357,26 @@ module Tables = struct let _1 = let _1 = let _1 = -# 1345 "parsing/parser.mly" +# 1357 "parsing/parser.mly" ( let (x, b) = a in x, b :: bs ) -# 53091 "parsing/parser.ml" +# 54363 "parsing/parser.ml" in -# 3353 "parsing/parser.mly" +# 3397 "parsing/parser.mly" ( _1 ) -# 53096 "parsing/parser.ml" +# 54368 "parsing/parser.ml" in -# 3336 "parsing/parser.mly" +# 3380 "parsing/parser.mly" ( _1 ) -# 53102 "parsing/parser.ml" +# 54374 "parsing/parser.ml" in -# 1649 "parsing/parser.mly" +# 1661 "parsing/parser.mly" ( pstr_type _1 ) -# 53108 "parsing/parser.ml" +# 54380 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_bs_, _startpos_a_) in @@ -53112,15 +54384,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1170 "parsing/parser.mly" +# 1179 "parsing/parser.mly" ( wrap_mkstr_ext ~loc:_sloc _1 ) -# 53118 "parsing/parser.ml" +# 54390 "parsing/parser.ml" in -# 1667 "parsing/parser.mly" +# 1679 "parsing/parser.mly" ( _1 ) -# 53124 "parsing/parser.ml" +# 54396 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -53205,16 +54477,16 @@ module Tables = struct let attrs2 = let _1 = _1_inlined3 in -# 4367 "parsing/parser.mly" +# 4472 "parsing/parser.mly" ( _1 ) -# 53211 "parsing/parser.ml" +# 54483 "parsing/parser.ml" in let _endpos_attrs2_ = _endpos__1_inlined3_ in let cs = -# 1337 "parsing/parser.mly" +# 1349 "parsing/parser.mly" ( List.rev xs ) -# 53218 "parsing/parser.ml" +# 54490 "parsing/parser.ml" in let tid = let (_endpos__1_, _startpos__1_, _1) = (_endpos__1_inlined2_, _startpos__1_inlined2_, _1_inlined2) in @@ -53222,46 +54494,46 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1114 "parsing/parser.mly" +# 1123 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 53228 "parsing/parser.ml" +# 54500 "parsing/parser.ml" in let _4 = -# 4202 "parsing/parser.mly" +# 4307 "parsing/parser.mly" ( Recursive ) -# 53234 "parsing/parser.ml" +# 54506 "parsing/parser.ml" in let attrs1 = let _1 = _1_inlined1 in -# 4371 "parsing/parser.mly" +# 4476 "parsing/parser.mly" ( _1 ) -# 53241 "parsing/parser.ml" +# 54513 "parsing/parser.ml" in let _endpos = _endpos_attrs2_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 3634 "parsing/parser.mly" +# 3719 "parsing/parser.mly" ( let docs = symbol_docs _sloc in let attrs = attrs1 @ attrs2 in Te.mk tid cs ~params ~priv ~attrs ~docs, ext ) -# 53253 "parsing/parser.ml" +# 54525 "parsing/parser.ml" in -# 3617 "parsing/parser.mly" +# 3702 "parsing/parser.mly" ( _1 ) -# 53259 "parsing/parser.ml" +# 54531 "parsing/parser.ml" in -# 1651 "parsing/parser.mly" +# 1663 "parsing/parser.mly" ( pstr_typext _1 ) -# 53265 "parsing/parser.ml" +# 54537 "parsing/parser.ml" in let _endpos__1_ = _endpos__1_inlined3_ in @@ -53269,15 +54541,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1170 "parsing/parser.mly" +# 1179 "parsing/parser.mly" ( wrap_mkstr_ext ~loc:_sloc _1 ) -# 53275 "parsing/parser.ml" +# 54547 "parsing/parser.ml" in -# 1667 "parsing/parser.mly" +# 1679 "parsing/parser.mly" ( _1 ) -# 53281 "parsing/parser.ml" +# 54553 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -53369,16 +54641,16 @@ module Tables = struct let attrs2 = let _1 = _1_inlined4 in -# 4367 "parsing/parser.mly" +# 4472 "parsing/parser.mly" ( _1 ) -# 53375 "parsing/parser.ml" +# 54647 "parsing/parser.ml" in let _endpos_attrs2_ = _endpos__1_inlined4_ in let cs = -# 1337 "parsing/parser.mly" +# 1349 "parsing/parser.mly" ( List.rev xs ) -# 53382 "parsing/parser.ml" +# 54654 "parsing/parser.ml" in let tid = let (_endpos__1_, _startpos__1_, _1) = (_endpos__1_inlined3_, _startpos__1_inlined3_, _1_inlined3) in @@ -53386,9 +54658,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1114 "parsing/parser.mly" +# 1123 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 53392 "parsing/parser.ml" +# 54664 "parsing/parser.ml" in let _4 = @@ -53397,41 +54669,41 @@ module Tables = struct let _startpos = _startpos__1_ in let _loc = (_startpos, _endpos) in -# 4204 "parsing/parser.mly" +# 4309 "parsing/parser.mly" ( not_expecting _loc "nonrec flag" ) -# 53403 "parsing/parser.ml" +# 54675 "parsing/parser.ml" in let attrs1 = let _1 = _1_inlined1 in -# 4371 "parsing/parser.mly" +# 4476 "parsing/parser.mly" ( _1 ) -# 53411 "parsing/parser.ml" +# 54683 "parsing/parser.ml" in let _endpos = _endpos_attrs2_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 3634 "parsing/parser.mly" +# 3719 "parsing/parser.mly" ( let docs = symbol_docs _sloc in let attrs = attrs1 @ attrs2 in Te.mk tid cs ~params ~priv ~attrs ~docs, ext ) -# 53423 "parsing/parser.ml" +# 54695 "parsing/parser.ml" in -# 3617 "parsing/parser.mly" +# 3702 "parsing/parser.mly" ( _1 ) -# 53429 "parsing/parser.ml" +# 54701 "parsing/parser.ml" in -# 1651 "parsing/parser.mly" +# 1663 "parsing/parser.mly" ( pstr_typext _1 ) -# 53435 "parsing/parser.ml" +# 54707 "parsing/parser.ml" in let _endpos__1_ = _endpos__1_inlined4_ in @@ -53439,15 +54711,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1170 "parsing/parser.mly" +# 1179 "parsing/parser.mly" ( wrap_mkstr_ext ~loc:_sloc _1 ) -# 53445 "parsing/parser.ml" +# 54717 "parsing/parser.ml" in -# 1667 "parsing/parser.mly" +# 1679 "parsing/parser.mly" ( _1 ) -# 53451 "parsing/parser.ml" +# 54723 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -53471,23 +54743,23 @@ module Tables = struct let _endpos = _endpos__1_ in let _v : (Parsetree.structure_item) = let _1 = let _1 = -# 1653 "parsing/parser.mly" +# 1665 "parsing/parser.mly" ( pstr_exception _1 ) -# 53477 "parsing/parser.ml" +# 54749 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1170 "parsing/parser.mly" +# 1179 "parsing/parser.mly" ( wrap_mkstr_ext ~loc:_sloc _1 ) -# 53485 "parsing/parser.ml" +# 54757 "parsing/parser.ml" in -# 1667 "parsing/parser.mly" +# 1679 "parsing/parser.mly" ( _1 ) -# 53491 "parsing/parser.ml" +# 54763 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -53550,9 +54822,9 @@ module Tables = struct let attrs2 = let _1 = _1_inlined3 in -# 4367 "parsing/parser.mly" +# 4472 "parsing/parser.mly" ( _1 ) -# 53556 "parsing/parser.ml" +# 54828 "parsing/parser.ml" in let _endpos_attrs2_ = _endpos__1_inlined3_ in @@ -53562,36 +54834,36 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1114 "parsing/parser.mly" +# 1123 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 53568 "parsing/parser.ml" +# 54840 "parsing/parser.ml" in let attrs1 = let _1 = _1_inlined1 in -# 4371 "parsing/parser.mly" +# 4476 "parsing/parser.mly" ( _1 ) -# 53576 "parsing/parser.ml" +# 54848 "parsing/parser.ml" in let _endpos = _endpos_attrs2_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1688 "parsing/parser.mly" +# 1700 "parsing/parser.mly" ( let docs = symbol_docs _sloc in let loc = make_loc _sloc in let attrs = attrs1 @ attrs2 in let body = Mb.mk name body ~attrs ~loc ~docs in Pstr_module body, ext ) -# 53589 "parsing/parser.ml" +# 54861 "parsing/parser.ml" in -# 1655 "parsing/parser.mly" +# 1667 "parsing/parser.mly" ( _1 ) -# 53595 "parsing/parser.ml" +# 54867 "parsing/parser.ml" in let _endpos__1_ = _endpos__1_inlined3_ in @@ -53599,15 +54871,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1170 "parsing/parser.mly" +# 1179 "parsing/parser.mly" ( wrap_mkstr_ext ~loc:_sloc _1 ) -# 53605 "parsing/parser.ml" +# 54877 "parsing/parser.ml" in -# 1667 "parsing/parser.mly" +# 1679 "parsing/parser.mly" ( _1 ) -# 53611 "parsing/parser.ml" +# 54883 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -53686,9 +54958,9 @@ module Tables = struct let attrs2 = let _1 = _1_inlined3 in -# 4367 "parsing/parser.mly" +# 4472 "parsing/parser.mly" ( _1 ) -# 53692 "parsing/parser.ml" +# 54964 "parsing/parser.ml" in let _endpos_attrs2_ = _endpos__1_inlined3_ in @@ -53698,24 +54970,24 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1114 "parsing/parser.mly" +# 1123 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 53704 "parsing/parser.ml" +# 54976 "parsing/parser.ml" in let attrs1 = let _1 = _1_inlined1 in -# 4371 "parsing/parser.mly" +# 4476 "parsing/parser.mly" ( _1 ) -# 53712 "parsing/parser.ml" +# 54984 "parsing/parser.ml" in let _endpos = _endpos_attrs2_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1723 "parsing/parser.mly" +# 1735 "parsing/parser.mly" ( let loc = make_loc _sloc in let attrs = attrs1 @ attrs2 in @@ -53723,25 +54995,25 @@ module Tables = struct ext, Mb.mk name body ~attrs ~loc ~docs ) -# 53727 "parsing/parser.ml" +# 54999 "parsing/parser.ml" in -# 1345 "parsing/parser.mly" +# 1357 "parsing/parser.mly" ( let (x, b) = a in x, b :: bs ) -# 53733 "parsing/parser.ml" +# 55005 "parsing/parser.ml" in -# 1711 "parsing/parser.mly" +# 1723 "parsing/parser.mly" ( _1 ) -# 53739 "parsing/parser.ml" +# 55011 "parsing/parser.ml" in -# 1657 "parsing/parser.mly" +# 1669 "parsing/parser.mly" ( pstr_recmodule _1 ) -# 53745 "parsing/parser.ml" +# 55017 "parsing/parser.ml" in let _endpos__1_ = _endpos_bs_ in @@ -53749,15 +55021,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1170 "parsing/parser.mly" +# 1179 "parsing/parser.mly" ( wrap_mkstr_ext ~loc:_sloc _1 ) -# 53755 "parsing/parser.ml" +# 55027 "parsing/parser.ml" in -# 1667 "parsing/parser.mly" +# 1679 "parsing/parser.mly" ( _1 ) -# 53761 "parsing/parser.ml" +# 55033 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -53781,23 +55053,23 @@ module Tables = struct let _endpos = _endpos__1_ in let _v : (Parsetree.structure_item) = let _1 = let _1 = -# 1659 "parsing/parser.mly" +# 1671 "parsing/parser.mly" ( let (body, ext) = _1 in (Pstr_modtype body, ext) ) -# 53787 "parsing/parser.ml" +# 55059 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1170 "parsing/parser.mly" +# 1179 "parsing/parser.mly" ( wrap_mkstr_ext ~loc:_sloc _1 ) -# 53795 "parsing/parser.ml" +# 55067 "parsing/parser.ml" in -# 1667 "parsing/parser.mly" +# 1679 "parsing/parser.mly" ( _1 ) -# 53801 "parsing/parser.ml" +# 55073 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -53821,23 +55093,23 @@ module Tables = struct let _endpos = _endpos__1_ in let _v : (Parsetree.structure_item) = let _1 = let _1 = -# 1661 "parsing/parser.mly" +# 1673 "parsing/parser.mly" ( let (body, ext) = _1 in (Pstr_open body, ext) ) -# 53827 "parsing/parser.ml" +# 55099 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1170 "parsing/parser.mly" +# 1179 "parsing/parser.mly" ( wrap_mkstr_ext ~loc:_sloc _1 ) -# 53835 "parsing/parser.ml" +# 55107 "parsing/parser.ml" in -# 1667 "parsing/parser.mly" +# 1679 "parsing/parser.mly" ( _1 ) -# 53841 "parsing/parser.ml" +# 55113 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -53907,9 +55179,9 @@ module Tables = struct let _1_inlined3 : (Parsetree.attributes) = Obj.magic _1_inlined3 in let body : (Parsetree.class_expr) = Obj.magic body in let _1_inlined2 : ( -# 928 "parsing/parser.mly" +# 937 "parsing/parser.mly" (string) -# 53913 "parsing/parser.ml" +# 55185 "parsing/parser.ml" ) = Obj.magic _1_inlined2 in let params : ((Parsetree.core_type * (Asttypes.variance * Asttypes.injectivity)) list) = Obj.magic params in let virt : (Asttypes.virtual_flag) = Obj.magic virt in @@ -53927,9 +55199,9 @@ module Tables = struct let attrs2 = let _1 = _1_inlined3 in -# 4367 "parsing/parser.mly" +# 4472 "parsing/parser.mly" ( _1 ) -# 53933 "parsing/parser.ml" +# 55205 "parsing/parser.ml" in let _endpos_attrs2_ = _endpos__1_inlined3_ in @@ -53939,24 +55211,24 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1114 "parsing/parser.mly" +# 1123 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 53945 "parsing/parser.ml" +# 55217 "parsing/parser.ml" in let attrs1 = let _1 = _1_inlined1 in -# 4371 "parsing/parser.mly" +# 4476 "parsing/parser.mly" ( _1 ) -# 53953 "parsing/parser.ml" +# 55225 "parsing/parser.ml" in let _endpos = _endpos_attrs2_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2077 "parsing/parser.mly" +# 2089 "parsing/parser.mly" ( let attrs = attrs1 @ attrs2 in let loc = make_loc _sloc in @@ -53964,25 +55236,25 @@ module Tables = struct ext, Ci.mk id body ~virt ~params ~attrs ~loc ~docs ) -# 53968 "parsing/parser.ml" +# 55240 "parsing/parser.ml" in -# 1345 "parsing/parser.mly" +# 1357 "parsing/parser.mly" ( let (x, b) = a in x, b :: bs ) -# 53974 "parsing/parser.ml" +# 55246 "parsing/parser.ml" in -# 2066 "parsing/parser.mly" +# 2078 "parsing/parser.mly" ( _1 ) -# 53980 "parsing/parser.ml" +# 55252 "parsing/parser.ml" in -# 1663 "parsing/parser.mly" +# 1675 "parsing/parser.mly" ( let (ext, l) = _1 in (Pstr_class l, ext) ) -# 53986 "parsing/parser.ml" +# 55258 "parsing/parser.ml" in let _endpos__1_ = _endpos_bs_ in @@ -53990,15 +55262,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1170 "parsing/parser.mly" +# 1179 "parsing/parser.mly" ( wrap_mkstr_ext ~loc:_sloc _1 ) -# 53996 "parsing/parser.ml" +# 55268 "parsing/parser.ml" in -# 1667 "parsing/parser.mly" +# 1679 "parsing/parser.mly" ( _1 ) -# 54002 "parsing/parser.ml" +# 55274 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -54022,23 +55294,23 @@ module Tables = struct let _endpos = _endpos__1_ in let _v : (Parsetree.structure_item) = let _1 = let _1 = -# 1665 "parsing/parser.mly" +# 1677 "parsing/parser.mly" ( let (ext, l) = _1 in (Pstr_class_type l, ext) ) -# 54028 "parsing/parser.ml" +# 55300 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1170 "parsing/parser.mly" +# 1179 "parsing/parser.mly" ( wrap_mkstr_ext ~loc:_sloc _1 ) -# 54036 "parsing/parser.ml" +# 55308 "parsing/parser.ml" in -# 1667 "parsing/parser.mly" +# 1679 "parsing/parser.mly" ( _1 ) -# 54042 "parsing/parser.ml" +# 55314 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -54092,22 +55364,22 @@ module Tables = struct let attrs2 = let _1 = _1_inlined1 in -# 4367 "parsing/parser.mly" +# 4472 "parsing/parser.mly" ( _1 ) -# 54098 "parsing/parser.ml" +# 55370 "parsing/parser.ml" in let _endpos_attrs2_ = _endpos__1_inlined1_ in let attrs1 = -# 4371 "parsing/parser.mly" +# 4476 "parsing/parser.mly" ( _1 ) -# 54105 "parsing/parser.ml" +# 55377 "parsing/parser.ml" in let _endpos = _endpos_attrs2_ in let _symbolstartpos = _startpos_is_functor_ in let _sloc = (_symbolstartpos, _endpos) in -# 1767 "parsing/parser.mly" +# 1779 "parsing/parser.mly" ( let attrs = attrs1 @ attrs2 in let loc = make_loc _sloc in @@ -54115,7 +55387,7 @@ module Tables = struct let incl = Incl.mk thing ~attrs ~loc ~docs in is_functor, incl, ext ) -# 54119 "parsing/parser.ml" +# 55391 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos__1_inlined1_, _startpos_is_functor_) in @@ -54123,7 +55395,7 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1669 "parsing/parser.mly" +# 1681 "parsing/parser.mly" ( let is_functor, incl, ext = _1 in let item = if is_functor @@ -54133,7 +55405,7 @@ module Tables = struct in wrap_str_ext ~loc:_sloc item ext ) -# 54137 "parsing/parser.ml" +# 55409 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -54156,9 +55428,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 4276 "parsing/parser.mly" +# 4381 "parsing/parser.mly" ( "-" ) -# 54162 "parsing/parser.ml" +# 55434 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -54181,9 +55453,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 4277 "parsing/parser.mly" +# 4382 "parsing/parser.mly" ( "-." ) -# 54187 "parsing/parser.ml" +# 55459 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -54236,9 +55508,9 @@ module Tables = struct let _v : (Parsetree.row_field) = let _5 = let _1 = _1_inlined1 in -# 4371 "parsing/parser.mly" +# 4476 "parsing/parser.mly" ( _1 ) -# 54242 "parsing/parser.ml" +# 55514 "parsing/parser.ml" in let _endpos__5_ = _endpos__1_inlined1_ in @@ -54247,18 +55519,18 @@ module Tables = struct let xs = # 253 "" ( List.rev xs ) -# 54251 "parsing/parser.ml" +# 55523 "parsing/parser.ml" in -# 1248 "parsing/parser.mly" +# 1260 "parsing/parser.mly" ( xs ) -# 54256 "parsing/parser.ml" +# 55528 "parsing/parser.ml" in -# 3958 "parsing/parser.mly" +# 4062 "parsing/parser.mly" ( _1 ) -# 54262 "parsing/parser.ml" +# 55534 "parsing/parser.ml" in let _1 = @@ -54266,20 +55538,20 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1114 "parsing/parser.mly" +# 1123 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 54272 "parsing/parser.ml" +# 55544 "parsing/parser.ml" in let _endpos = _endpos__5_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 3944 "parsing/parser.mly" +# 4048 "parsing/parser.mly" ( let info = symbol_info _endpos in let attrs = add_info_attrs info _5 in Rf.tag ~loc:(make_loc _sloc) ~attrs _1 _3 _4 ) -# 54283 "parsing/parser.ml" +# 55555 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -54311,9 +55583,9 @@ module Tables = struct let _v : (Parsetree.row_field) = let _2 = let _1 = _1_inlined1 in -# 4371 "parsing/parser.mly" +# 4476 "parsing/parser.mly" ( _1 ) -# 54317 "parsing/parser.ml" +# 55589 "parsing/parser.ml" in let _endpos__2_ = _endpos__1_inlined1_ in @@ -54322,20 +55594,20 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1114 "parsing/parser.mly" +# 1123 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 54328 "parsing/parser.ml" +# 55600 "parsing/parser.ml" in let _endpos = _endpos__2_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 3948 "parsing/parser.mly" +# 4052 "parsing/parser.mly" ( let info = symbol_info _endpos in let attrs = add_info_attrs info _2 in Rf.tag ~loc:(make_loc _sloc) ~attrs _1 true [] ) -# 54339 "parsing/parser.ml" +# 55611 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -54367,7 +55639,7 @@ module Tables = struct let _v : (Parsetree.toplevel_phrase) = let arg = # 124 "" ( None ) -# 54371 "parsing/parser.ml" +# 55643 "parsing/parser.ml" in let _endpos_arg_ = _endpos__1_inlined1_ in let dir = @@ -54376,23 +55648,23 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1114 "parsing/parser.mly" +# 1123 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 54382 "parsing/parser.ml" +# 55654 "parsing/parser.ml" in let _1 = -# 2770 "parsing/parser.mly" +# 2791 "parsing/parser.mly" ( () ) -# 54388 "parsing/parser.ml" +# 55660 "parsing/parser.ml" in let _endpos = _endpos_arg_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 4165 "parsing/parser.mly" +# 4270 "parsing/parser.mly" ( mk_directive ~loc:_sloc dir arg ) -# 54396 "parsing/parser.ml" +# 55668 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -54423,9 +55695,9 @@ module Tables = struct }; } = _menhir_stack in let _1_inlined2 : ( -# 968 "parsing/parser.mly" +# 977 "parsing/parser.mly" (string * Location.t * string option) -# 54429 "parsing/parser.ml" +# 55701 "parsing/parser.ml" ) = Obj.magic _1_inlined2 in let _1_inlined1 : (Asttypes.label) = Obj.magic _1_inlined1 in let _1 : unit = Obj.magic _1 in @@ -54436,23 +55708,23 @@ module Tables = struct let (_endpos__1_, _startpos__1_, _1) = (_endpos__1_inlined2_, _startpos__1_inlined2_, _1_inlined2) in let x = let _1 = -# 4169 "parsing/parser.mly" +# 4274 "parsing/parser.mly" ( let (s, _, _) = _1 in Pdir_string s ) -# 54442 "parsing/parser.ml" +# 55714 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1175 "parsing/parser.mly" +# 1184 "parsing/parser.mly" ( mk_directive_arg ~loc:_sloc _1 ) -# 54450 "parsing/parser.ml" +# 55722 "parsing/parser.ml" in # 126 "" ( Some x ) -# 54456 "parsing/parser.ml" +# 55728 "parsing/parser.ml" in let _endpos_arg_ = _endpos__1_inlined2_ in @@ -54462,23 +55734,23 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1114 "parsing/parser.mly" +# 1123 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 54468 "parsing/parser.ml" +# 55740 "parsing/parser.ml" in let _1 = -# 2770 "parsing/parser.mly" +# 2791 "parsing/parser.mly" ( () ) -# 54474 "parsing/parser.ml" +# 55746 "parsing/parser.ml" in let _endpos = _endpos_arg_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 4165 "parsing/parser.mly" +# 4270 "parsing/parser.mly" ( mk_directive ~loc:_sloc dir arg ) -# 54482 "parsing/parser.ml" +# 55754 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -54509,9 +55781,9 @@ module Tables = struct }; } = _menhir_stack in let _1_inlined2 : ( -# 912 "parsing/parser.mly" +# 921 "parsing/parser.mly" (string * char option) -# 54515 "parsing/parser.ml" +# 55787 "parsing/parser.ml" ) = Obj.magic _1_inlined2 in let _1_inlined1 : (Asttypes.label) = Obj.magic _1_inlined1 in let _1 : unit = Obj.magic _1 in @@ -54522,23 +55794,23 @@ module Tables = struct let (_endpos__1_, _startpos__1_, _1) = (_endpos__1_inlined2_, _startpos__1_inlined2_, _1_inlined2) in let x = let _1 = -# 4170 "parsing/parser.mly" +# 4275 "parsing/parser.mly" ( let (n, m) = _1 in Pdir_int (n ,m) ) -# 54528 "parsing/parser.ml" +# 55800 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1175 "parsing/parser.mly" +# 1184 "parsing/parser.mly" ( mk_directive_arg ~loc:_sloc _1 ) -# 54536 "parsing/parser.ml" +# 55808 "parsing/parser.ml" in # 126 "" ( Some x ) -# 54542 "parsing/parser.ml" +# 55814 "parsing/parser.ml" in let _endpos_arg_ = _endpos__1_inlined2_ in @@ -54548,23 +55820,23 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1114 "parsing/parser.mly" +# 1123 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 54554 "parsing/parser.ml" +# 55826 "parsing/parser.ml" in let _1 = -# 2770 "parsing/parser.mly" +# 2791 "parsing/parser.mly" ( () ) -# 54560 "parsing/parser.ml" +# 55832 "parsing/parser.ml" in let _endpos = _endpos_arg_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 4165 "parsing/parser.mly" +# 4270 "parsing/parser.mly" ( mk_directive ~loc:_sloc dir arg ) -# 54568 "parsing/parser.ml" +# 55840 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -54604,23 +55876,23 @@ module Tables = struct let (_endpos__1_, _startpos__1_, _1) = (_endpos__1_inlined2_, _startpos__1_inlined2_, _1_inlined2) in let x = let _1 = -# 4171 "parsing/parser.mly" +# 4276 "parsing/parser.mly" ( Pdir_ident _1 ) -# 54610 "parsing/parser.ml" +# 55882 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1175 "parsing/parser.mly" +# 1184 "parsing/parser.mly" ( mk_directive_arg ~loc:_sloc _1 ) -# 54618 "parsing/parser.ml" +# 55890 "parsing/parser.ml" in # 126 "" ( Some x ) -# 54624 "parsing/parser.ml" +# 55896 "parsing/parser.ml" in let _endpos_arg_ = _endpos__1_inlined2_ in @@ -54630,23 +55902,23 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1114 "parsing/parser.mly" +# 1123 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 54636 "parsing/parser.ml" +# 55908 "parsing/parser.ml" in let _1 = -# 2770 "parsing/parser.mly" +# 2791 "parsing/parser.mly" ( () ) -# 54642 "parsing/parser.ml" +# 55914 "parsing/parser.ml" in let _endpos = _endpos_arg_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 4165 "parsing/parser.mly" +# 4270 "parsing/parser.mly" ( mk_directive ~loc:_sloc dir arg ) -# 54650 "parsing/parser.ml" +# 55922 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -54686,23 +55958,23 @@ module Tables = struct let (_endpos__1_, _startpos__1_, _1) = (_endpos__1_inlined2_, _startpos__1_inlined2_, _1_inlined2) in let x = let _1 = -# 4172 "parsing/parser.mly" +# 4277 "parsing/parser.mly" ( Pdir_ident _1 ) -# 54692 "parsing/parser.ml" +# 55964 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1175 "parsing/parser.mly" +# 1184 "parsing/parser.mly" ( mk_directive_arg ~loc:_sloc _1 ) -# 54700 "parsing/parser.ml" +# 55972 "parsing/parser.ml" in # 126 "" ( Some x ) -# 54706 "parsing/parser.ml" +# 55978 "parsing/parser.ml" in let _endpos_arg_ = _endpos__1_inlined2_ in @@ -54712,23 +55984,23 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1114 "parsing/parser.mly" +# 1123 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 54718 "parsing/parser.ml" +# 55990 "parsing/parser.ml" in let _1 = -# 2770 "parsing/parser.mly" +# 2791 "parsing/parser.mly" ( () ) -# 54724 "parsing/parser.ml" +# 55996 "parsing/parser.ml" in let _endpos = _endpos_arg_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 4165 "parsing/parser.mly" +# 4270 "parsing/parser.mly" ( mk_directive ~loc:_sloc dir arg ) -# 54732 "parsing/parser.ml" +# 56004 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -54768,23 +56040,23 @@ module Tables = struct let (_endpos__1_, _startpos__1_) = (_endpos__1_inlined2_, _startpos__1_inlined2_) in let x = let _1 = -# 4173 "parsing/parser.mly" +# 4278 "parsing/parser.mly" ( Pdir_bool false ) -# 54774 "parsing/parser.ml" +# 56046 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1175 "parsing/parser.mly" +# 1184 "parsing/parser.mly" ( mk_directive_arg ~loc:_sloc _1 ) -# 54782 "parsing/parser.ml" +# 56054 "parsing/parser.ml" in # 126 "" ( Some x ) -# 54788 "parsing/parser.ml" +# 56060 "parsing/parser.ml" in let _endpos_arg_ = _endpos__1_inlined2_ in @@ -54794,23 +56066,23 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1114 "parsing/parser.mly" +# 1123 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 54800 "parsing/parser.ml" +# 56072 "parsing/parser.ml" in let _1 = -# 2770 "parsing/parser.mly" +# 2791 "parsing/parser.mly" ( () ) -# 54806 "parsing/parser.ml" +# 56078 "parsing/parser.ml" in let _endpos = _endpos_arg_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 4165 "parsing/parser.mly" +# 4270 "parsing/parser.mly" ( mk_directive ~loc:_sloc dir arg ) -# 54814 "parsing/parser.ml" +# 56086 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -54850,23 +56122,23 @@ module Tables = struct let (_endpos__1_, _startpos__1_) = (_endpos__1_inlined2_, _startpos__1_inlined2_) in let x = let _1 = -# 4174 "parsing/parser.mly" +# 4279 "parsing/parser.mly" ( Pdir_bool true ) -# 54856 "parsing/parser.ml" +# 56128 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1175 "parsing/parser.mly" +# 1184 "parsing/parser.mly" ( mk_directive_arg ~loc:_sloc _1 ) -# 54864 "parsing/parser.ml" +# 56136 "parsing/parser.ml" in # 126 "" ( Some x ) -# 54870 "parsing/parser.ml" +# 56142 "parsing/parser.ml" in let _endpos_arg_ = _endpos__1_inlined2_ in @@ -54876,23 +56148,23 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1114 "parsing/parser.mly" +# 1123 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 54882 "parsing/parser.ml" +# 56154 "parsing/parser.ml" in let _1 = -# 2770 "parsing/parser.mly" +# 2791 "parsing/parser.mly" ( () ) -# 54888 "parsing/parser.ml" +# 56160 "parsing/parser.ml" in let _endpos = _endpos_arg_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 4165 "parsing/parser.mly" +# 4270 "parsing/parser.mly" ( mk_directive ~loc:_sloc dir arg ) -# 54896 "parsing/parser.ml" +# 56168 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -54924,7 +56196,7 @@ module Tables = struct let _v : (Parsetree.toplevel_phrase) = let arg = # 124 "" ( None ) -# 54928 "parsing/parser.ml" +# 56200 "parsing/parser.ml" in let _endpos_arg_ = _endpos__1_inlined1_ in let dir = @@ -54933,23 +56205,23 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1114 "parsing/parser.mly" +# 1123 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 54939 "parsing/parser.ml" +# 56211 "parsing/parser.ml" in let _1 = -# 2771 "parsing/parser.mly" +# 2792 "parsing/parser.mly" ( () ) -# 54945 "parsing/parser.ml" +# 56217 "parsing/parser.ml" in let _endpos = _endpos_arg_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 4165 "parsing/parser.mly" +# 4270 "parsing/parser.mly" ( mk_directive ~loc:_sloc dir arg ) -# 54953 "parsing/parser.ml" +# 56225 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -54980,9 +56252,9 @@ module Tables = struct }; } = _menhir_stack in let _1_inlined2 : ( -# 968 "parsing/parser.mly" +# 977 "parsing/parser.mly" (string * Location.t * string option) -# 54986 "parsing/parser.ml" +# 56258 "parsing/parser.ml" ) = Obj.magic _1_inlined2 in let _1_inlined1 : (Asttypes.label) = Obj.magic _1_inlined1 in let _1 : unit = Obj.magic _1 in @@ -54993,23 +56265,23 @@ module Tables = struct let (_endpos__1_, _startpos__1_, _1) = (_endpos__1_inlined2_, _startpos__1_inlined2_, _1_inlined2) in let x = let _1 = -# 4169 "parsing/parser.mly" +# 4274 "parsing/parser.mly" ( let (s, _, _) = _1 in Pdir_string s ) -# 54999 "parsing/parser.ml" +# 56271 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1175 "parsing/parser.mly" +# 1184 "parsing/parser.mly" ( mk_directive_arg ~loc:_sloc _1 ) -# 55007 "parsing/parser.ml" +# 56279 "parsing/parser.ml" in # 126 "" ( Some x ) -# 55013 "parsing/parser.ml" +# 56285 "parsing/parser.ml" in let _endpos_arg_ = _endpos__1_inlined2_ in @@ -55019,23 +56291,23 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1114 "parsing/parser.mly" +# 1123 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 55025 "parsing/parser.ml" +# 56297 "parsing/parser.ml" in let _1 = -# 2771 "parsing/parser.mly" +# 2792 "parsing/parser.mly" ( () ) -# 55031 "parsing/parser.ml" +# 56303 "parsing/parser.ml" in let _endpos = _endpos_arg_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 4165 "parsing/parser.mly" +# 4270 "parsing/parser.mly" ( mk_directive ~loc:_sloc dir arg ) -# 55039 "parsing/parser.ml" +# 56311 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -55066,9 +56338,9 @@ module Tables = struct }; } = _menhir_stack in let _1_inlined2 : ( -# 912 "parsing/parser.mly" +# 921 "parsing/parser.mly" (string * char option) -# 55072 "parsing/parser.ml" +# 56344 "parsing/parser.ml" ) = Obj.magic _1_inlined2 in let _1_inlined1 : (Asttypes.label) = Obj.magic _1_inlined1 in let _1 : unit = Obj.magic _1 in @@ -55079,23 +56351,23 @@ module Tables = struct let (_endpos__1_, _startpos__1_, _1) = (_endpos__1_inlined2_, _startpos__1_inlined2_, _1_inlined2) in let x = let _1 = -# 4170 "parsing/parser.mly" +# 4275 "parsing/parser.mly" ( let (n, m) = _1 in Pdir_int (n ,m) ) -# 55085 "parsing/parser.ml" +# 56357 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1175 "parsing/parser.mly" +# 1184 "parsing/parser.mly" ( mk_directive_arg ~loc:_sloc _1 ) -# 55093 "parsing/parser.ml" +# 56365 "parsing/parser.ml" in # 126 "" ( Some x ) -# 55099 "parsing/parser.ml" +# 56371 "parsing/parser.ml" in let _endpos_arg_ = _endpos__1_inlined2_ in @@ -55105,23 +56377,23 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1114 "parsing/parser.mly" +# 1123 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 55111 "parsing/parser.ml" +# 56383 "parsing/parser.ml" in let _1 = -# 2771 "parsing/parser.mly" +# 2792 "parsing/parser.mly" ( () ) -# 55117 "parsing/parser.ml" +# 56389 "parsing/parser.ml" in let _endpos = _endpos_arg_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 4165 "parsing/parser.mly" +# 4270 "parsing/parser.mly" ( mk_directive ~loc:_sloc dir arg ) -# 55125 "parsing/parser.ml" +# 56397 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -55161,23 +56433,23 @@ module Tables = struct let (_endpos__1_, _startpos__1_, _1) = (_endpos__1_inlined2_, _startpos__1_inlined2_, _1_inlined2) in let x = let _1 = -# 4171 "parsing/parser.mly" +# 4276 "parsing/parser.mly" ( Pdir_ident _1 ) -# 55167 "parsing/parser.ml" +# 56439 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1175 "parsing/parser.mly" +# 1184 "parsing/parser.mly" ( mk_directive_arg ~loc:_sloc _1 ) -# 55175 "parsing/parser.ml" +# 56447 "parsing/parser.ml" in # 126 "" ( Some x ) -# 55181 "parsing/parser.ml" +# 56453 "parsing/parser.ml" in let _endpos_arg_ = _endpos__1_inlined2_ in @@ -55187,23 +56459,23 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1114 "parsing/parser.mly" +# 1123 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 55193 "parsing/parser.ml" +# 56465 "parsing/parser.ml" in let _1 = -# 2771 "parsing/parser.mly" +# 2792 "parsing/parser.mly" ( () ) -# 55199 "parsing/parser.ml" +# 56471 "parsing/parser.ml" in let _endpos = _endpos_arg_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 4165 "parsing/parser.mly" +# 4270 "parsing/parser.mly" ( mk_directive ~loc:_sloc dir arg ) -# 55207 "parsing/parser.ml" +# 56479 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -55243,23 +56515,23 @@ module Tables = struct let (_endpos__1_, _startpos__1_, _1) = (_endpos__1_inlined2_, _startpos__1_inlined2_, _1_inlined2) in let x = let _1 = -# 4172 "parsing/parser.mly" +# 4277 "parsing/parser.mly" ( Pdir_ident _1 ) -# 55249 "parsing/parser.ml" +# 56521 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1175 "parsing/parser.mly" +# 1184 "parsing/parser.mly" ( mk_directive_arg ~loc:_sloc _1 ) -# 55257 "parsing/parser.ml" +# 56529 "parsing/parser.ml" in # 126 "" ( Some x ) -# 55263 "parsing/parser.ml" +# 56535 "parsing/parser.ml" in let _endpos_arg_ = _endpos__1_inlined2_ in @@ -55269,23 +56541,23 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1114 "parsing/parser.mly" +# 1123 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 55275 "parsing/parser.ml" +# 56547 "parsing/parser.ml" in let _1 = -# 2771 "parsing/parser.mly" +# 2792 "parsing/parser.mly" ( () ) -# 55281 "parsing/parser.ml" +# 56553 "parsing/parser.ml" in let _endpos = _endpos_arg_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 4165 "parsing/parser.mly" +# 4270 "parsing/parser.mly" ( mk_directive ~loc:_sloc dir arg ) -# 55289 "parsing/parser.ml" +# 56561 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -55325,23 +56597,23 @@ module Tables = struct let (_endpos__1_, _startpos__1_) = (_endpos__1_inlined2_, _startpos__1_inlined2_) in let x = let _1 = -# 4173 "parsing/parser.mly" +# 4278 "parsing/parser.mly" ( Pdir_bool false ) -# 55331 "parsing/parser.ml" +# 56603 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1175 "parsing/parser.mly" +# 1184 "parsing/parser.mly" ( mk_directive_arg ~loc:_sloc _1 ) -# 55339 "parsing/parser.ml" +# 56611 "parsing/parser.ml" in # 126 "" ( Some x ) -# 55345 "parsing/parser.ml" +# 56617 "parsing/parser.ml" in let _endpos_arg_ = _endpos__1_inlined2_ in @@ -55351,23 +56623,23 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1114 "parsing/parser.mly" +# 1123 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 55357 "parsing/parser.ml" +# 56629 "parsing/parser.ml" in let _1 = -# 2771 "parsing/parser.mly" +# 2792 "parsing/parser.mly" ( () ) -# 55363 "parsing/parser.ml" +# 56635 "parsing/parser.ml" in let _endpos = _endpos_arg_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 4165 "parsing/parser.mly" +# 4270 "parsing/parser.mly" ( mk_directive ~loc:_sloc dir arg ) -# 55371 "parsing/parser.ml" +# 56643 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -55407,23 +56679,23 @@ module Tables = struct let (_endpos__1_, _startpos__1_) = (_endpos__1_inlined2_, _startpos__1_inlined2_) in let x = let _1 = -# 4174 "parsing/parser.mly" +# 4279 "parsing/parser.mly" ( Pdir_bool true ) -# 55413 "parsing/parser.ml" +# 56685 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1175 "parsing/parser.mly" +# 1184 "parsing/parser.mly" ( mk_directive_arg ~loc:_sloc _1 ) -# 55421 "parsing/parser.ml" +# 56693 "parsing/parser.ml" in # 126 "" ( Some x ) -# 55427 "parsing/parser.ml" +# 56699 "parsing/parser.ml" in let _endpos_arg_ = _endpos__1_inlined2_ in @@ -55433,23 +56705,23 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1114 "parsing/parser.mly" +# 1123 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 55439 "parsing/parser.ml" +# 56711 "parsing/parser.ml" in let _1 = -# 2771 "parsing/parser.mly" +# 2792 "parsing/parser.mly" ( () ) -# 55445 "parsing/parser.ml" +# 56717 "parsing/parser.ml" in let _endpos = _endpos_arg_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 4165 "parsing/parser.mly" +# 4270 "parsing/parser.mly" ( mk_directive ~loc:_sloc dir arg ) -# 55453 "parsing/parser.ml" +# 56725 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -55489,37 +56761,37 @@ module Tables = struct let _1 = let _1 = let attrs = -# 4367 "parsing/parser.mly" +# 4472 "parsing/parser.mly" ( _1 ) -# 55495 "parsing/parser.ml" +# 56767 "parsing/parser.ml" in -# 1620 "parsing/parser.mly" +# 1632 "parsing/parser.mly" ( mkstrexp e attrs ) -# 55500 "parsing/parser.ml" +# 56772 "parsing/parser.ml" in let _startpos__1_ = _startpos_e_ in let _startpos = _startpos__1_ in -# 1118 "parsing/parser.mly" +# 1127 "parsing/parser.mly" ( text_str _startpos @ [_1] ) -# 55508 "parsing/parser.ml" +# 56780 "parsing/parser.ml" in let _startpos__1_ = _startpos_e_ in let _endpos = _endpos__1_ in let _startpos = _startpos__1_ in -# 1106 "parsing/parser.mly" +# 1115 "parsing/parser.mly" ( extra_str _startpos _endpos _1 ) -# 55517 "parsing/parser.ml" +# 56789 "parsing/parser.ml" in -# 1385 "parsing/parser.mly" +# 1397 "parsing/parser.mly" ( Ptop_def _1 ) -# 55523 "parsing/parser.ml" +# 56795 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -55552,21 +56824,21 @@ module Tables = struct let _1 = # 260 "" ( List.flatten xss ) -# 55556 "parsing/parser.ml" +# 56828 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_xss_, _startpos_xss_) in let _endpos = _endpos__1_ in let _startpos = _startpos__1_ in -# 1106 "parsing/parser.mly" +# 1115 "parsing/parser.mly" ( extra_str _startpos _endpos _1 ) -# 55564 "parsing/parser.ml" +# 56836 "parsing/parser.ml" in -# 1389 "parsing/parser.mly" +# 1401 "parsing/parser.mly" ( Ptop_def _1 ) -# 55570 "parsing/parser.ml" +# 56842 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -55596,9 +56868,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (Parsetree.toplevel_phrase) = -# 1393 "parsing/parser.mly" +# 1405 "parsing/parser.mly" ( _1 ) -# 55602 "parsing/parser.ml" +# 56874 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -55621,9 +56893,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Parsetree.toplevel_phrase) = -# 1396 "parsing/parser.mly" +# 1408 "parsing/parser.mly" ( raise End_of_file ) -# 55627 "parsing/parser.ml" +# 56899 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -55646,9 +56918,9 @@ module Tables = struct let _startpos = _startpos_ty_ in let _endpos = _endpos_ty_ in let _v : (Parsetree.core_type) = -# 3835 "parsing/parser.mly" +# 3934 "parsing/parser.mly" ( ty ) -# 55652 "parsing/parser.ml" +# 56924 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -55676,18 +56948,18 @@ module Tables = struct let xs = # 253 "" ( List.rev xs ) -# 55680 "parsing/parser.ml" +# 56952 "parsing/parser.ml" in -# 1276 "parsing/parser.mly" +# 1288 "parsing/parser.mly" ( xs ) -# 55685 "parsing/parser.ml" +# 56957 "parsing/parser.ml" in -# 3838 "parsing/parser.mly" +# 3937 "parsing/parser.mly" ( Ptyp_tuple tys ) -# 55691 "parsing/parser.ml" +# 56963 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_xs_, _startpos_xs_) in @@ -55695,15 +56967,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1151 "parsing/parser.mly" +# 1160 "parsing/parser.mly" ( mktyp ~loc:_sloc _1 ) -# 55701 "parsing/parser.ml" +# 56973 "parsing/parser.ml" in -# 3840 "parsing/parser.mly" +# 3939 "parsing/parser.mly" ( _1 ) -# 55707 "parsing/parser.ml" +# 56979 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -55733,9 +57005,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (Parsetree.core_type option * Parsetree.core_type option) = -# 3089 "parsing/parser.mly" +# 3122 "parsing/parser.mly" ( (Some _2, None) ) -# 55739 "parsing/parser.ml" +# 57011 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -55779,9 +57051,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__4_ in let _v : (Parsetree.core_type option * Parsetree.core_type option) = -# 3090 "parsing/parser.mly" +# 3123 "parsing/parser.mly" ( (Some _2, Some _4) ) -# 55785 "parsing/parser.ml" +# 57057 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -55811,9 +57083,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (Parsetree.core_type option * Parsetree.core_type option) = -# 3091 "parsing/parser.mly" +# 3124 "parsing/parser.mly" ( (None, Some _2) ) -# 55817 "parsing/parser.ml" +# 57089 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -55843,9 +57115,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (Parsetree.core_type option * Parsetree.core_type option) = -# 3092 "parsing/parser.mly" +# 3125 "parsing/parser.mly" ( syntax_error() ) -# 55849 "parsing/parser.ml" +# 57121 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -55875,9 +57147,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (Parsetree.core_type option * Parsetree.core_type option) = -# 3093 "parsing/parser.mly" +# 3126 "parsing/parser.mly" ( syntax_error() ) -# 55881 "parsing/parser.ml" +# 57153 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -55893,9 +57165,9 @@ module Tables = struct let _startpos = _menhir_stack.MenhirLib.EngineTypes.endp in let _endpos = _startpos in let _v : (Parsetree.type_kind * Asttypes.private_flag * Parsetree.core_type option) = -# 3427 "parsing/parser.mly" +# 3473 "parsing/parser.mly" ( (Ptype_abstract, Public, None) ) -# 55899 "parsing/parser.ml" +# 57171 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -55925,9 +57197,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (Parsetree.type_kind * Asttypes.private_flag * Parsetree.core_type option) = -# 3429 "parsing/parser.mly" +# 3475 "parsing/parser.mly" ( _2 ) -# 55931 "parsing/parser.ml" +# 57203 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -55950,9 +57222,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Longident.t) = -# 4126 "parsing/parser.mly" +# 4230 "parsing/parser.mly" ( _1 ) -# 55956 "parsing/parser.ml" +# 57228 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -55965,14 +57237,92 @@ module Tables = struct let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in let { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _1_inlined1; - MenhirLib.EngineTypes.startp = _startpos__1_inlined1_; - MenhirLib.EngineTypes.endp = _endpos__1_inlined1_; + MenhirLib.EngineTypes.semv = _1_inlined2; + MenhirLib.EngineTypes.startp = _startpos__1_inlined2_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined2_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _2; - MenhirLib.EngineTypes.startp = _startpos__2_; - MenhirLib.EngineTypes.endp = _endpos__2_; + MenhirLib.EngineTypes.semv = tyvar; + MenhirLib.EngineTypes.startp = _startpos_tyvar_; + MenhirLib.EngineTypes.endp = _endpos_tyvar_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _1_inlined1; + MenhirLib.EngineTypes.startp = _startpos__1_inlined1_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined1_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + }; + }; + }; + } = _menhir_stack in + let _1_inlined2 : (Parsetree.attributes) = Obj.magic _1_inlined2 in + let tyvar : (Asttypes.label) = Obj.magic tyvar in + let _1_inlined1 : unit = Obj.magic _1_inlined1 in + let _1 : (Asttypes.variance * Asttypes.injectivity) = Obj.magic _1 in + let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in + let _startpos = _startpos__1_ in + let _endpos = _endpos__1_inlined2_ in + let _v : (Parsetree.core_type * (Asttypes.variance * Asttypes.injectivity)) = let _3 = + let _1 = _1_inlined2 in + +# 4476 "parsing/parser.mly" + ( _1 ) +# 57276 "parsing/parser.ml" + + in + let _2 = + let _startpos__1_ = _startpos__1_inlined1_ in + let _1 = + let _1 = +# 3533 "parsing/parser.mly" + ( Ptyp_var tyvar ) +# 57285 "parsing/parser.ml" + in + let _endpos__1_ = _endpos_tyvar_ in + let _endpos = _endpos__1_ in + let _symbolstartpos = _startpos__1_ in + let _sloc = (_symbolstartpos, _endpos) in + +# 1160 "parsing/parser.mly" + ( mktyp ~loc:_sloc _1 ) +# 57294 "parsing/parser.ml" + + in + +# 3536 "parsing/parser.mly" + ( _1 ) +# 57300 "parsing/parser.ml" + + in + +# 3527 "parsing/parser.mly" + ( {_2 with ptyp_attributes = _3}, _1 ) +# 57306 "parsing/parser.ml" + in + { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = Obj.repr _v; + MenhirLib.EngineTypes.startp = _startpos; + MenhirLib.EngineTypes.endp = _endpos; + MenhirLib.EngineTypes.next = _menhir_stack; + }); + (fun _menhir_env -> + let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in + let { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _1_inlined2; + MenhirLib.EngineTypes.startp = _startpos__1_inlined2_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined2_; + MenhirLib.EngineTypes.next = { + MenhirLib.EngineTypes.state = _; + MenhirLib.EngineTypes.semv = _1_inlined1; + MenhirLib.EngineTypes.startp = _startpos__1_inlined1_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined1_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _menhir_s; MenhirLib.EngineTypes.semv = _1; @@ -55982,24 +57332,47 @@ module Tables = struct }; }; } = _menhir_stack in - let _1_inlined1 : (Parsetree.attributes) = Obj.magic _1_inlined1 in - let _2 : (Parsetree.core_type) = Obj.magic _2 in + let _1_inlined2 : (Parsetree.attributes) = Obj.magic _1_inlined2 in + let _1_inlined1 : unit = Obj.magic _1_inlined1 in let _1 : (Asttypes.variance * Asttypes.injectivity) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in - let _endpos = _endpos__1_inlined1_ in + let _endpos = _endpos__1_inlined2_ in let _v : (Parsetree.core_type * (Asttypes.variance * Asttypes.injectivity)) = let _3 = - let _1 = _1_inlined1 in + let _1 = _1_inlined2 in -# 4371 "parsing/parser.mly" +# 4476 "parsing/parser.mly" + ( _1 ) +# 57347 "parsing/parser.ml" + + in + let _2 = + let (_endpos__1_, _startpos__1_) = (_endpos__1_inlined1_, _startpos__1_inlined1_) in + let _1 = + let _1 = +# 3535 "parsing/parser.mly" + ( Ptyp_any ) +# 57356 "parsing/parser.ml" + in + let _endpos = _endpos__1_ in + let _symbolstartpos = _startpos__1_ in + let _sloc = (_symbolstartpos, _endpos) in + +# 1160 "parsing/parser.mly" + ( mktyp ~loc:_sloc _1 ) +# 57364 "parsing/parser.ml" + + in + +# 3536 "parsing/parser.mly" ( _1 ) -# 55997 "parsing/parser.ml" +# 57370 "parsing/parser.ml" in -# 3458 "parsing/parser.mly" +# 3527 "parsing/parser.mly" ( {_2 with ptyp_attributes = _3}, _1 ) -# 56003 "parsing/parser.ml" +# 57376 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -56015,9 +57388,9 @@ module Tables = struct let _startpos = _menhir_stack.MenhirLib.EngineTypes.endp in let _endpos = _startpos in let _v : ((Parsetree.core_type * (Asttypes.variance * Asttypes.injectivity)) list) = -# 3437 "parsing/parser.mly" +# 3483 "parsing/parser.mly" ( [] ) -# 56021 "parsing/parser.ml" +# 57394 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -56040,9 +57413,9 @@ module Tables = struct let _startpos = _startpos_p_ in let _endpos = _endpos_p_ in let _v : ((Parsetree.core_type * (Asttypes.variance * Asttypes.injectivity)) list) = -# 3439 "parsing/parser.mly" +# 3485 "parsing/parser.mly" ( [p] ) -# 56046 "parsing/parser.ml" +# 57419 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -56082,106 +57455,18 @@ module Tables = struct let xs = # 253 "" ( List.rev xs ) -# 56086 "parsing/parser.ml" +# 57459 "parsing/parser.ml" in -# 1248 "parsing/parser.mly" +# 1260 "parsing/parser.mly" ( xs ) -# 56091 "parsing/parser.ml" +# 57464 "parsing/parser.ml" in -# 3443 "parsing/parser.mly" +# 3489 "parsing/parser.mly" ( ps ) -# 56097 "parsing/parser.ml" - in - { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = Obj.repr _v; - MenhirLib.EngineTypes.startp = _startpos; - MenhirLib.EngineTypes.endp = _endpos; - MenhirLib.EngineTypes.next = _menhir_stack; - }); - (fun _menhir_env -> - let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in - let { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = tyvar; - MenhirLib.EngineTypes.startp = _startpos_tyvar_; - MenhirLib.EngineTypes.endp = _endpos_tyvar_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; - MenhirLib.EngineTypes.next = _menhir_stack; - }; - } = _menhir_stack in - let tyvar : (Asttypes.label) = Obj.magic tyvar in - let _1 : unit = Obj.magic _1 in - let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in - let _startpos = _startpos__1_ in - let _endpos = _endpos_tyvar_ in - let _v : (Parsetree.core_type) = let _1 = - let _1 = -# 3464 "parsing/parser.mly" - ( Ptyp_var tyvar ) -# 56130 "parsing/parser.ml" - in - let _endpos__1_ = _endpos_tyvar_ in - let _endpos = _endpos__1_ in - let _symbolstartpos = _startpos__1_ in - let _sloc = (_symbolstartpos, _endpos) in - -# 1151 "parsing/parser.mly" - ( mktyp ~loc:_sloc _1 ) -# 56139 "parsing/parser.ml" - - in - -# 3467 "parsing/parser.mly" - ( _1 ) -# 56145 "parsing/parser.ml" - in - { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = Obj.repr _v; - MenhirLib.EngineTypes.startp = _startpos; - MenhirLib.EngineTypes.endp = _endpos; - MenhirLib.EngineTypes.next = _menhir_stack; - }); - (fun _menhir_env -> - let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in - let { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; - MenhirLib.EngineTypes.next = _menhir_stack; - } = _menhir_stack in - let _1 : unit = Obj.magic _1 in - let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in - let _startpos = _startpos__1_ in - let _endpos = _endpos__1_ in - let _v : (Parsetree.core_type) = let _1 = - let _1 = -# 3466 "parsing/parser.mly" - ( Ptyp_any ) -# 56171 "parsing/parser.ml" - in - let _endpos = _endpos__1_ in - let _symbolstartpos = _startpos__1_ in - let _sloc = (_symbolstartpos, _endpos) in - -# 1151 "parsing/parser.mly" - ( mktyp ~loc:_sloc _1 ) -# 56179 "parsing/parser.ml" - - in - -# 3467 "parsing/parser.mly" - ( _1 ) -# 56185 "parsing/parser.ml" +# 57470 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -56197,9 +57482,9 @@ module Tables = struct let _startpos = _menhir_stack.MenhirLib.EngineTypes.endp in let _endpos = _startpos in let _v : (Asttypes.variance * Asttypes.injectivity) = -# 3471 "parsing/parser.mly" +# 3547 "parsing/parser.mly" ( NoVariance, NoInjectivity ) -# 56203 "parsing/parser.ml" +# 57488 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -56222,9 +57507,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Asttypes.variance * Asttypes.injectivity) = -# 3472 "parsing/parser.mly" +# 3548 "parsing/parser.mly" ( Covariant, NoInjectivity ) -# 56228 "parsing/parser.ml" +# 57513 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -56247,9 +57532,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Asttypes.variance * Asttypes.injectivity) = -# 3473 "parsing/parser.mly" +# 3549 "parsing/parser.mly" ( Contravariant, NoInjectivity ) -# 56253 "parsing/parser.ml" +# 57538 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -56272,9 +57557,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Asttypes.variance * Asttypes.injectivity) = -# 3474 "parsing/parser.mly" +# 3550 "parsing/parser.mly" ( NoVariance, Injective ) -# 56278 "parsing/parser.ml" +# 57563 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -56304,9 +57589,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (Asttypes.variance * Asttypes.injectivity) = -# 3475 "parsing/parser.mly" +# 3551 "parsing/parser.mly" ( Covariant, Injective ) -# 56310 "parsing/parser.ml" +# 57595 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -56336,9 +57621,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (Asttypes.variance * Asttypes.injectivity) = -# 3475 "parsing/parser.mly" +# 3551 "parsing/parser.mly" ( Covariant, Injective ) -# 56342 "parsing/parser.ml" +# 57627 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -56368,9 +57653,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (Asttypes.variance * Asttypes.injectivity) = -# 3476 "parsing/parser.mly" +# 3552 "parsing/parser.mly" ( Contravariant, Injective ) -# 56374 "parsing/parser.ml" +# 57659 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -56400,9 +57685,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (Asttypes.variance * Asttypes.injectivity) = -# 3476 "parsing/parser.mly" +# 3552 "parsing/parser.mly" ( Contravariant, Injective ) -# 56406 "parsing/parser.ml" +# 57691 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -56421,20 +57706,20 @@ module Tables = struct MenhirLib.EngineTypes.next = _menhir_stack; } = _menhir_stack in let _1 : ( -# 904 "parsing/parser.mly" +# 913 "parsing/parser.mly" (string) -# 56427 "parsing/parser.ml" +# 57712 "parsing/parser.ml" ) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Asttypes.variance * Asttypes.injectivity) = let _loc__1_ = (_startpos__1_, _endpos__1_) in -# 3478 "parsing/parser.mly" +# 3554 "parsing/parser.mly" ( if _1 = "+!" then Covariant, Injective else if _1 = "-!" then Contravariant, Injective else expecting _loc__1_ "type_variance" ) -# 56438 "parsing/parser.ml" +# 57723 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -56453,20 +57738,20 @@ module Tables = struct MenhirLib.EngineTypes.next = _menhir_stack; } = _menhir_stack in let _1 : ( -# 953 "parsing/parser.mly" +# 962 "parsing/parser.mly" (string) -# 56459 "parsing/parser.ml" +# 57744 "parsing/parser.ml" ) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Asttypes.variance * Asttypes.injectivity) = let _loc__1_ = (_startpos__1_, _endpos__1_) in -# 3482 "parsing/parser.mly" +# 3558 "parsing/parser.mly" ( if _1 = "!+" then Covariant, Injective else if _1 = "!-" then Contravariant, Injective else expecting _loc__1_ "type_variance" ) -# 56470 "parsing/parser.ml" +# 57755 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -56485,9 +57770,9 @@ module Tables = struct MenhirLib.EngineTypes.next = _menhir_stack; } = _menhir_stack in let _1 : ( -# 913 "parsing/parser.mly" +# 922 "parsing/parser.mly" (string * char option) -# 56491 "parsing/parser.ml" +# 57776 "parsing/parser.ml" ) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in @@ -56496,9 +57781,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 4015 "parsing/parser.mly" +# 4119 "parsing/parser.mly" ( unboxed_int _sloc _sloc Positive _1 ) -# 56502 "parsing/parser.ml" +# 57787 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -56517,9 +57802,9 @@ module Tables = struct MenhirLib.EngineTypes.next = _menhir_stack; } = _menhir_stack in let _1 : ( -# 890 "parsing/parser.mly" +# 899 "parsing/parser.mly" (string * char option) -# 56523 "parsing/parser.ml" +# 57808 "parsing/parser.ml" ) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in @@ -56528,9 +57813,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 4016 "parsing/parser.mly" +# 4120 "parsing/parser.mly" ( unboxed_float _sloc Positive _1 ) -# 56534 "parsing/parser.ml" +# 57819 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -56564,39 +57849,39 @@ module Tables = struct let ys = # 260 "" ( List.flatten xss ) -# 56568 "parsing/parser.ml" +# 57853 "parsing/parser.ml" in let xs = let _1 = -# 1184 "parsing/parser.mly" +# 1196 "parsing/parser.mly" ( [] ) -# 56574 "parsing/parser.ml" +# 57859 "parsing/parser.ml" in -# 1416 "parsing/parser.mly" +# 1428 "parsing/parser.mly" ( _1 ) -# 56579 "parsing/parser.ml" +# 57864 "parsing/parser.ml" in # 267 "" ( xs @ ys ) -# 56585 "parsing/parser.ml" +# 57870 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_xss_, _startpos_xss_) in let _endpos = _endpos__1_ in let _startpos = _startpos__1_ in -# 1110 "parsing/parser.mly" +# 1119 "parsing/parser.mly" ( extra_def _startpos _endpos _1 ) -# 56594 "parsing/parser.ml" +# 57879 "parsing/parser.ml" in -# 1409 "parsing/parser.mly" +# 1421 "parsing/parser.mly" ( _1 ) -# 56600 "parsing/parser.ml" +# 57885 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -56644,7 +57929,7 @@ module Tables = struct let ys = # 260 "" ( List.flatten xss ) -# 56648 "parsing/parser.ml" +# 57933 "parsing/parser.ml" in let xs = let _1 = @@ -56652,61 +57937,61 @@ module Tables = struct let _1 = let _1 = let attrs = -# 4367 "parsing/parser.mly" +# 4472 "parsing/parser.mly" ( _1 ) -# 56658 "parsing/parser.ml" +# 57943 "parsing/parser.ml" in -# 1620 "parsing/parser.mly" +# 1632 "parsing/parser.mly" ( mkstrexp e attrs ) -# 56663 "parsing/parser.ml" +# 57948 "parsing/parser.ml" in -# 1128 "parsing/parser.mly" +# 1137 "parsing/parser.mly" ( Ptop_def [_1] ) -# 56669 "parsing/parser.ml" +# 57954 "parsing/parser.ml" in let _startpos__1_ = _startpos_e_ in let _startpos = _startpos__1_ in -# 1126 "parsing/parser.mly" +# 1135 "parsing/parser.mly" ( text_def _startpos @ [_1] ) -# 56677 "parsing/parser.ml" +# 57962 "parsing/parser.ml" in -# 1186 "parsing/parser.mly" +# 1198 "parsing/parser.mly" ( x ) -# 56683 "parsing/parser.ml" +# 57968 "parsing/parser.ml" in -# 1416 "parsing/parser.mly" +# 1428 "parsing/parser.mly" ( _1 ) -# 56689 "parsing/parser.ml" +# 57974 "parsing/parser.ml" in # 267 "" ( xs @ ys ) -# 56695 "parsing/parser.ml" +# 57980 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_xss_, _startpos_e_) in let _endpos = _endpos__1_ in let _startpos = _startpos__1_ in -# 1110 "parsing/parser.mly" +# 1119 "parsing/parser.mly" ( extra_def _startpos _endpos _1 ) -# 56704 "parsing/parser.ml" +# 57989 "parsing/parser.ml" in -# 1409 "parsing/parser.mly" +# 1421 "parsing/parser.mly" ( _1 ) -# 56710 "parsing/parser.ml" +# 57995 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -56743,9 +58028,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : (Asttypes.label) = -# 4045 "parsing/parser.mly" +# 4149 "parsing/parser.mly" ( _2 ) -# 56749 "parsing/parser.ml" +# 58034 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -56784,9 +58069,9 @@ module Tables = struct let _v : (Asttypes.label) = let _loc__3_ = (_startpos__3_, _endpos__3_) in let _loc__1_ = (_startpos__1_, _endpos__1_) in -# 4046 "parsing/parser.mly" +# 4150 "parsing/parser.mly" ( unclosed "(" _loc__1_ ")" _loc__3_ ) -# 56790 "parsing/parser.ml" +# 58075 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -56817,9 +58102,9 @@ module Tables = struct let _endpos = _endpos__2_ in let _v : (Asttypes.label) = let _loc__2_ = (_startpos__2_, _endpos__2_) in -# 4047 "parsing/parser.mly" +# 4151 "parsing/parser.mly" ( expecting _loc__2_ "operator" ) -# 56823 "parsing/parser.ml" +# 58108 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -56857,9 +58142,9 @@ module Tables = struct let _endpos = _endpos__3_ in let _v : (Asttypes.label) = let _loc__3_ = (_startpos__3_, _endpos__3_) in -# 4048 "parsing/parser.mly" +# 4152 "parsing/parser.mly" ( expecting _loc__3_ "module-expr" ) -# 56863 "parsing/parser.ml" +# 58148 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -56878,17 +58163,17 @@ module Tables = struct MenhirLib.EngineTypes.next = _menhir_stack; } = _menhir_stack in let _1 : ( -# 928 "parsing/parser.mly" +# 937 "parsing/parser.mly" (string) -# 56884 "parsing/parser.ml" +# 58169 "parsing/parser.ml" ) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Asttypes.label) = -# 4051 "parsing/parser.mly" +# 4155 "parsing/parser.mly" ( _1 ) -# 56892 "parsing/parser.ml" +# 58177 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -56911,9 +58196,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Asttypes.label) = -# 4052 "parsing/parser.mly" +# 4156 "parsing/parser.mly" ( _1 ) -# 56917 "parsing/parser.ml" +# 58202 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -56936,9 +58221,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Longident.t) = -# 4120 "parsing/parser.mly" +# 4224 "parsing/parser.mly" ( _1 ) -# 56942 "parsing/parser.ml" +# 58227 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -56983,9 +58268,9 @@ module Tables = struct let ty : (Parsetree.core_type) = Obj.magic ty in let _5 : unit = Obj.magic _5 in let _1_inlined1 : ( -# 928 "parsing/parser.mly" +# 937 "parsing/parser.mly" (string) -# 56989 "parsing/parser.ml" +# 58274 "parsing/parser.ml" ) = Obj.magic _1_inlined1 in let mutable_ : (Asttypes.mutable_flag) = Obj.magic mutable_ in let _1 : (Parsetree.attributes) = Obj.magic _1 in @@ -56997,33 +58282,33 @@ module Tables = struct Parsetree.attributes) = let label = let (_endpos__1_, _startpos__1_, _1) = (_endpos__1_inlined1_, _startpos__1_inlined1_, _1_inlined1) in let _1 = -# 4002 "parsing/parser.mly" +# 4106 "parsing/parser.mly" ( _1 ) -# 57003 "parsing/parser.ml" +# 58288 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1114 "parsing/parser.mly" +# 1123 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 57011 "parsing/parser.ml" +# 58296 "parsing/parser.ml" in let attrs = -# 4371 "parsing/parser.mly" +# 4476 "parsing/parser.mly" ( _1 ) -# 57017 "parsing/parser.ml" +# 58302 "parsing/parser.ml" in let _1 = -# 4269 "parsing/parser.mly" +# 4374 "parsing/parser.mly" ( Fresh ) -# 57022 "parsing/parser.ml" +# 58307 "parsing/parser.ml" in -# 2217 "parsing/parser.mly" +# 2229 "parsing/parser.mly" ( (label, mutable_, Cfk_virtual ty), attrs ) -# 57027 "parsing/parser.ml" +# 58312 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -57068,9 +58353,9 @@ module Tables = struct let _6 : (Parsetree.expression) = Obj.magic _6 in let _5 : unit = Obj.magic _5 in let _1_inlined1 : ( -# 928 "parsing/parser.mly" +# 937 "parsing/parser.mly" (string) -# 57074 "parsing/parser.ml" +# 58359 "parsing/parser.ml" ) = Obj.magic _1_inlined1 in let _3 : (Asttypes.mutable_flag) = Obj.magic _3 in let _1 : (Parsetree.attributes) = Obj.magic _1 in @@ -57082,33 +58367,33 @@ module Tables = struct Parsetree.attributes) = let _4 = let (_endpos__1_, _startpos__1_, _1) = (_endpos__1_inlined1_, _startpos__1_inlined1_, _1_inlined1) in let _1 = -# 4002 "parsing/parser.mly" +# 4106 "parsing/parser.mly" ( _1 ) -# 57088 "parsing/parser.ml" +# 58373 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1114 "parsing/parser.mly" +# 1123 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 57096 "parsing/parser.ml" +# 58381 "parsing/parser.ml" in let _2 = -# 4371 "parsing/parser.mly" +# 4476 "parsing/parser.mly" ( _1 ) -# 57102 "parsing/parser.ml" +# 58387 "parsing/parser.ml" in let _1 = -# 4272 "parsing/parser.mly" +# 4377 "parsing/parser.mly" ( Fresh ) -# 57107 "parsing/parser.ml" +# 58392 "parsing/parser.ml" in -# 2219 "parsing/parser.mly" +# 2231 "parsing/parser.mly" ( (_4, _3, Cfk_concrete (_1, _6)), _2 ) -# 57112 "parsing/parser.ml" +# 58397 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -57159,9 +58444,9 @@ module Tables = struct let _6 : (Parsetree.expression) = Obj.magic _6 in let _5 : unit = Obj.magic _5 in let _1_inlined2 : ( -# 928 "parsing/parser.mly" +# 937 "parsing/parser.mly" (string) -# 57165 "parsing/parser.ml" +# 58450 "parsing/parser.ml" ) = Obj.magic _1_inlined2 in let _3 : (Asttypes.mutable_flag) = Obj.magic _3 in let _1_inlined1 : (Parsetree.attributes) = Obj.magic _1_inlined1 in @@ -57174,36 +58459,36 @@ module Tables = struct Parsetree.attributes) = let _4 = let (_endpos__1_, _startpos__1_, _1) = (_endpos__1_inlined2_, _startpos__1_inlined2_, _1_inlined2) in let _1 = -# 4002 "parsing/parser.mly" +# 4106 "parsing/parser.mly" ( _1 ) -# 57180 "parsing/parser.ml" +# 58465 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1114 "parsing/parser.mly" +# 1123 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 57188 "parsing/parser.ml" +# 58473 "parsing/parser.ml" in let _2 = let _1 = _1_inlined1 in -# 4371 "parsing/parser.mly" +# 4476 "parsing/parser.mly" ( _1 ) -# 57196 "parsing/parser.ml" +# 58481 "parsing/parser.ml" in let _1 = -# 4273 "parsing/parser.mly" +# 4378 "parsing/parser.mly" ( Override ) -# 57202 "parsing/parser.ml" +# 58487 "parsing/parser.ml" in -# 2219 "parsing/parser.mly" +# 2231 "parsing/parser.mly" ( (_4, _3, Cfk_concrete (_1, _6)), _2 ) -# 57207 "parsing/parser.ml" +# 58492 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -57255,9 +58540,9 @@ module Tables = struct let _6 : unit = Obj.magic _6 in let _5 : (Parsetree.core_type option * Parsetree.core_type option) = Obj.magic _5 in let _1_inlined1 : ( -# 928 "parsing/parser.mly" +# 937 "parsing/parser.mly" (string) -# 57261 "parsing/parser.ml" +# 58546 "parsing/parser.ml" ) = Obj.magic _1_inlined1 in let _3 : (Asttypes.mutable_flag) = Obj.magic _3 in let _1 : (Parsetree.attributes) = Obj.magic _1 in @@ -57269,30 +58554,30 @@ module Tables = struct Parsetree.attributes) = let _4 = let (_endpos__1_, _startpos__1_, _1) = (_endpos__1_inlined1_, _startpos__1_inlined1_, _1_inlined1) in let _1 = -# 4002 "parsing/parser.mly" +# 4106 "parsing/parser.mly" ( _1 ) -# 57275 "parsing/parser.ml" +# 58560 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1114 "parsing/parser.mly" +# 1123 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 57283 "parsing/parser.ml" +# 58568 "parsing/parser.ml" in let _startpos__4_ = _startpos__1_inlined1_ in let _2 = -# 4371 "parsing/parser.mly" +# 4476 "parsing/parser.mly" ( _1 ) -# 57290 "parsing/parser.ml" +# 58575 "parsing/parser.ml" in let (_endpos__2_, _startpos__2_) = (_endpos__1_, _startpos__1_) in let _1 = -# 4272 "parsing/parser.mly" +# 4377 "parsing/parser.mly" ( Fresh ) -# 57296 "parsing/parser.ml" +# 58581 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos__0_, _endpos__0_) in let _endpos = _endpos__7_ in @@ -57308,11 +58593,11 @@ module Tables = struct _startpos__4_ in let _sloc = (_symbolstartpos, _endpos) in -# 2222 "parsing/parser.mly" +# 2234 "parsing/parser.mly" ( let e = mkexp_constraint ~loc:_sloc _7 _5 in (_4, _3, Cfk_concrete (_1, e)), _2 ) -# 57316 "parsing/parser.ml" +# 58601 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -57370,9 +58655,9 @@ module Tables = struct let _6 : unit = Obj.magic _6 in let _5 : (Parsetree.core_type option * Parsetree.core_type option) = Obj.magic _5 in let _1_inlined2 : ( -# 928 "parsing/parser.mly" +# 937 "parsing/parser.mly" (string) -# 57376 "parsing/parser.ml" +# 58661 "parsing/parser.ml" ) = Obj.magic _1_inlined2 in let _3 : (Asttypes.mutable_flag) = Obj.magic _3 in let _1_inlined1 : (Parsetree.attributes) = Obj.magic _1_inlined1 in @@ -57385,33 +58670,33 @@ module Tables = struct Parsetree.attributes) = let _4 = let (_endpos__1_, _startpos__1_, _1) = (_endpos__1_inlined2_, _startpos__1_inlined2_, _1_inlined2) in let _1 = -# 4002 "parsing/parser.mly" +# 4106 "parsing/parser.mly" ( _1 ) -# 57391 "parsing/parser.ml" +# 58676 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1114 "parsing/parser.mly" +# 1123 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 57399 "parsing/parser.ml" +# 58684 "parsing/parser.ml" in let _startpos__4_ = _startpos__1_inlined2_ in let _2 = let _1 = _1_inlined1 in -# 4371 "parsing/parser.mly" +# 4476 "parsing/parser.mly" ( _1 ) -# 57408 "parsing/parser.ml" +# 58693 "parsing/parser.ml" in let (_endpos__2_, _startpos__2_) = (_endpos__1_inlined1_, _startpos__1_inlined1_) in let _1 = -# 4273 "parsing/parser.mly" +# 4378 "parsing/parser.mly" ( Override ) -# 57415 "parsing/parser.ml" +# 58700 "parsing/parser.ml" in let _endpos = _endpos__7_ in let _symbolstartpos = if _startpos__1_ != _endpos__1_ then @@ -57426,11 +58711,11 @@ module Tables = struct _startpos__4_ in let _sloc = (_symbolstartpos, _endpos) in -# 2222 "parsing/parser.mly" +# 2234 "parsing/parser.mly" ( let e = mkexp_constraint ~loc:_sloc _7 _5 in (_4, _3, Cfk_concrete (_1, e)), _2 ) -# 57434 "parsing/parser.ml" +# 58719 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -57449,17 +58734,17 @@ module Tables = struct MenhirLib.EngineTypes.next = _menhir_stack; } = _menhir_stack in let _1 : ( -# 912 "parsing/parser.mly" +# 921 "parsing/parser.mly" (string * char option) -# 57455 "parsing/parser.ml" +# 58740 "parsing/parser.ml" ) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Parsetree.constant) = -# 4008 "parsing/parser.mly" +# 4112 "parsing/parser.mly" ( let (n, m) = _1 in Pconst_integer (n, m) ) -# 57463 "parsing/parser.ml" +# 58748 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -57478,17 +58763,17 @@ module Tables = struct MenhirLib.EngineTypes.next = _menhir_stack; } = _menhir_stack in let _1 : ( -# 867 "parsing/parser.mly" +# 876 "parsing/parser.mly" (char) -# 57484 "parsing/parser.ml" +# 58769 "parsing/parser.ml" ) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Parsetree.constant) = -# 4009 "parsing/parser.mly" +# 4113 "parsing/parser.mly" ( Pconst_char _1 ) -# 57492 "parsing/parser.ml" +# 58777 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -57507,18 +58792,18 @@ module Tables = struct MenhirLib.EngineTypes.next = _menhir_stack; } = _menhir_stack in let _1 : ( -# 968 "parsing/parser.mly" +# 977 "parsing/parser.mly" (string * Location.t * string option) -# 57513 "parsing/parser.ml" +# 58798 "parsing/parser.ml" ) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Parsetree.constant) = -# 4010 "parsing/parser.mly" +# 4114 "parsing/parser.mly" ( let (s, strloc, d) = _1 in Pconst_string (s, strloc, d) ) -# 57522 "parsing/parser.ml" +# 58807 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -57537,17 +58822,17 @@ module Tables = struct MenhirLib.EngineTypes.next = _menhir_stack; } = _menhir_stack in let _1 : ( -# 889 "parsing/parser.mly" +# 898 "parsing/parser.mly" (string * char option) -# 57543 "parsing/parser.ml" +# 58828 "parsing/parser.ml" ) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Parsetree.constant) = -# 4012 "parsing/parser.mly" +# 4116 "parsing/parser.mly" ( let (f, m) = _1 in Pconst_float (f, m) ) -# 57551 "parsing/parser.ml" +# 58836 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -57614,9 +58899,9 @@ module Tables = struct let _v : (Parsetree.value_description * string Asttypes.loc option) = let attrs2 = let _1 = _1_inlined3 in -# 4367 "parsing/parser.mly" +# 4472 "parsing/parser.mly" ( _1 ) -# 57620 "parsing/parser.ml" +# 58905 "parsing/parser.ml" in let _endpos_attrs2_ = _endpos__1_inlined3_ in @@ -57626,30 +58911,30 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1114 "parsing/parser.mly" +# 1123 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 57632 "parsing/parser.ml" +# 58917 "parsing/parser.ml" in let attrs1 = let _1 = _1_inlined1 in -# 4371 "parsing/parser.mly" +# 4476 "parsing/parser.mly" ( _1 ) -# 57640 "parsing/parser.ml" +# 58925 "parsing/parser.ml" in let _endpos = _endpos_attrs2_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 3298 "parsing/parser.mly" +# 3342 "parsing/parser.mly" ( let attrs = attrs1 @ attrs2 in let loc = make_loc _sloc in let docs = symbol_docs _sloc in Val.mk id ty ~attrs ~loc ~docs, ext ) -# 57653 "parsing/parser.ml" +# 58938 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -57665,9 +58950,9 @@ module Tables = struct let _startpos = _menhir_stack.MenhirLib.EngineTypes.endp in let _endpos = _startpos in let _v : (Asttypes.virtual_flag) = -# 4233 "parsing/parser.mly" +# 4338 "parsing/parser.mly" ( Concrete ) -# 57671 "parsing/parser.ml" +# 58956 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -57690,9 +58975,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Asttypes.virtual_flag) = -# 4234 "parsing/parser.mly" +# 4339 "parsing/parser.mly" ( Virtual ) -# 57696 "parsing/parser.ml" +# 58981 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -57715,9 +59000,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Asttypes.mutable_flag) = -# 4257 "parsing/parser.mly" +# 4362 "parsing/parser.mly" ( Immutable ) -# 57721 "parsing/parser.ml" +# 59006 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -57747,9 +59032,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (Asttypes.mutable_flag) = -# 4258 "parsing/parser.mly" +# 4363 "parsing/parser.mly" ( Mutable ) -# 57753 "parsing/parser.ml" +# 59038 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -57779,9 +59064,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (Asttypes.mutable_flag) = -# 4259 "parsing/parser.mly" +# 4364 "parsing/parser.mly" ( Mutable ) -# 57785 "parsing/parser.ml" +# 59070 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -57804,9 +59089,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Asttypes.private_flag) = -# 4264 "parsing/parser.mly" +# 4369 "parsing/parser.mly" ( Public ) -# 57810 "parsing/parser.ml" +# 59095 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -57836,9 +59121,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (Asttypes.private_flag) = -# 4265 "parsing/parser.mly" +# 4370 "parsing/parser.mly" ( Private ) -# 57842 "parsing/parser.ml" +# 59127 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -57868,9 +59153,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (Asttypes.private_flag) = -# 4266 "parsing/parser.mly" +# 4371 "parsing/parser.mly" ( Private ) -# 57874 "parsing/parser.ml" +# 59159 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -57932,27 +59217,27 @@ module Tables = struct let xs = # 253 "" ( List.rev xs ) -# 57936 "parsing/parser.ml" +# 59221 "parsing/parser.ml" in -# 1198 "parsing/parser.mly" +# 1210 "parsing/parser.mly" ( xs ) -# 57941 "parsing/parser.ml" +# 59226 "parsing/parser.ml" in -# 3398 "parsing/parser.mly" +# 3444 "parsing/parser.mly" ( _1 ) -# 57947 "parsing/parser.ml" +# 59232 "parsing/parser.ml" in let _endpos__6_ = _endpos_xs_ in let _5 = let _1 = _1_inlined2 in -# 3748 "parsing/parser.mly" +# 3839 "parsing/parser.mly" ( _1 ) -# 57956 "parsing/parser.ml" +# 59241 "parsing/parser.ml" in let _3 = @@ -57961,16 +59246,16 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1114 "parsing/parser.mly" +# 1123 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 57967 "parsing/parser.ml" +# 59252 "parsing/parser.ml" in let _endpos = _endpos__6_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 3667 "parsing/parser.mly" +# 3753 "parsing/parser.mly" ( let lident = loc_last _3 in Pwith_type (_3, @@ -57980,7 +59265,7 @@ module Tables = struct ~manifest:_5 ~priv:_4 ~loc:(make_loc _sloc))) ) -# 57984 "parsing/parser.ml" +# 59269 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -58033,9 +59318,9 @@ module Tables = struct let _v : (Parsetree.with_constraint) = let _5 = let _1 = _1_inlined2 in -# 3748 "parsing/parser.mly" +# 3839 "parsing/parser.mly" ( _1 ) -# 58039 "parsing/parser.ml" +# 59324 "parsing/parser.ml" in let _endpos__5_ = _endpos__1_inlined2_ in @@ -58045,16 +59330,16 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1114 "parsing/parser.mly" +# 1123 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 58051 "parsing/parser.ml" +# 59336 "parsing/parser.ml" in let _endpos = _endpos__5_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 3680 "parsing/parser.mly" +# 3766 "parsing/parser.mly" ( let lident = loc_last _3 in Pwith_typesubst (_3, @@ -58062,7 +59347,7 @@ module Tables = struct ~params:_2 ~manifest:_5 ~loc:(make_loc _sloc))) ) -# 58066 "parsing/parser.ml" +# 59351 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -58111,9 +59396,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1114 "parsing/parser.mly" +# 1123 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 58117 "parsing/parser.ml" +# 59402 "parsing/parser.ml" in let _2 = @@ -58122,15 +59407,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1114 "parsing/parser.mly" +# 1123 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 58128 "parsing/parser.ml" +# 59413 "parsing/parser.ml" in -# 3688 "parsing/parser.mly" +# 3774 "parsing/parser.mly" ( Pwith_module (_2, _4) ) -# 58134 "parsing/parser.ml" +# 59419 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -58179,9 +59464,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1114 "parsing/parser.mly" +# 1123 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 58185 "parsing/parser.ml" +# 59470 "parsing/parser.ml" in let _2 = @@ -58190,15 +59475,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1114 "parsing/parser.mly" +# 1123 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 58196 "parsing/parser.ml" +# 59481 "parsing/parser.ml" in -# 3690 "parsing/parser.mly" +# 3776 "parsing/parser.mly" ( Pwith_modsubst (_2, _4) ) -# 58202 "parsing/parser.ml" +# 59487 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -58254,15 +59539,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1114 "parsing/parser.mly" +# 1123 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 58260 "parsing/parser.ml" +# 59545 "parsing/parser.ml" in -# 3692 "parsing/parser.mly" +# 3778 "parsing/parser.mly" ( Pwith_modtype (l, rhs) ) -# 58266 "parsing/parser.ml" +# 59551 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -58318,15 +59603,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1114 "parsing/parser.mly" +# 1123 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 58324 "parsing/parser.ml" +# 59609 "parsing/parser.ml" in -# 3694 "parsing/parser.mly" +# 3780 "parsing/parser.mly" ( Pwith_modtypesubst (l, rhs) ) -# 58330 "parsing/parser.ml" +# 59615 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -58349,9 +59634,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Asttypes.private_flag) = -# 3697 "parsing/parser.mly" +# 3783 "parsing/parser.mly" ( Public ) -# 58355 "parsing/parser.ml" +# 59640 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -58381,9 +59666,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (Asttypes.private_flag) = -# 3698 "parsing/parser.mly" +# 3784 "parsing/parser.mly" ( Private ) -# 58387 "parsing/parser.ml" +# 59672 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -58411,59 +59696,59 @@ end let use_file = fun lexer lexbuf -> - (Obj.magic (MenhirInterpreter.entry `Simplified 2112 lexer lexbuf) : (Parsetree.toplevel_phrase list)) + (Obj.magic (MenhirInterpreter.entry `Simplified 2199 lexer lexbuf) : (Parsetree.toplevel_phrase list)) and toplevel_phrase = fun lexer lexbuf -> - (Obj.magic (MenhirInterpreter.entry `Simplified 2084 lexer lexbuf) : (Parsetree.toplevel_phrase)) + (Obj.magic (MenhirInterpreter.entry `Simplified 2171 lexer lexbuf) : (Parsetree.toplevel_phrase)) and parse_val_longident = fun lexer lexbuf -> - (Obj.magic (MenhirInterpreter.entry `Simplified 2078 lexer lexbuf) : (Longident.t)) + (Obj.magic (MenhirInterpreter.entry `Simplified 2165 lexer lexbuf) : (Longident.t)) and parse_pattern = fun lexer lexbuf -> - (Obj.magic (MenhirInterpreter.entry `Simplified 2074 lexer lexbuf) : (Parsetree.pattern)) + (Obj.magic (MenhirInterpreter.entry `Simplified 2161 lexer lexbuf) : (Parsetree.pattern)) and parse_mty_longident = fun lexer lexbuf -> - (Obj.magic (MenhirInterpreter.entry `Simplified 2070 lexer lexbuf) : (Longident.t)) + (Obj.magic (MenhirInterpreter.entry `Simplified 2157 lexer lexbuf) : (Longident.t)) and parse_module_type = fun lexer lexbuf -> - (Obj.magic (MenhirInterpreter.entry `Simplified 2066 lexer lexbuf) : (Parsetree.module_type)) + (Obj.magic (MenhirInterpreter.entry `Simplified 2153 lexer lexbuf) : (Parsetree.module_type)) and parse_module_expr = fun lexer lexbuf -> - (Obj.magic (MenhirInterpreter.entry `Simplified 2062 lexer lexbuf) : (Parsetree.module_expr)) + (Obj.magic (MenhirInterpreter.entry `Simplified 2149 lexer lexbuf) : (Parsetree.module_expr)) and parse_mod_longident = fun lexer lexbuf -> - (Obj.magic (MenhirInterpreter.entry `Simplified 2058 lexer lexbuf) : (Longident.t)) + (Obj.magic (MenhirInterpreter.entry `Simplified 2145 lexer lexbuf) : (Longident.t)) and parse_mod_ext_longident = fun lexer lexbuf -> - (Obj.magic (MenhirInterpreter.entry `Simplified 2054 lexer lexbuf) : (Longident.t)) + (Obj.magic (MenhirInterpreter.entry `Simplified 2141 lexer lexbuf) : (Longident.t)) and parse_expression = fun lexer lexbuf -> - (Obj.magic (MenhirInterpreter.entry `Simplified 2050 lexer lexbuf) : (Parsetree.expression)) + (Obj.magic (MenhirInterpreter.entry `Simplified 2137 lexer lexbuf) : (Parsetree.expression)) and parse_core_type = fun lexer lexbuf -> - (Obj.magic (MenhirInterpreter.entry `Simplified 2046 lexer lexbuf) : (Parsetree.core_type)) + (Obj.magic (MenhirInterpreter.entry `Simplified 2133 lexer lexbuf) : (Parsetree.core_type)) and parse_constr_longident = fun lexer lexbuf -> - (Obj.magic (MenhirInterpreter.entry `Simplified 2042 lexer lexbuf) : (Longident.t)) + (Obj.magic (MenhirInterpreter.entry `Simplified 2129 lexer lexbuf) : (Longident.t)) and parse_any_longident = fun lexer lexbuf -> - (Obj.magic (MenhirInterpreter.entry `Simplified 2024 lexer lexbuf) : (Longident.t)) + (Obj.magic (MenhirInterpreter.entry `Simplified 2111 lexer lexbuf) : (Longident.t)) and interface = fun lexer lexbuf -> - (Obj.magic (MenhirInterpreter.entry `Simplified 2020 lexer lexbuf) : (Parsetree.signature)) + (Obj.magic (MenhirInterpreter.entry `Simplified 2107 lexer lexbuf) : (Parsetree.signature)) and implementation = fun lexer lexbuf -> @@ -58473,59 +59758,59 @@ module Incremental = struct let use_file = fun initial_position -> - (Obj.magic (MenhirInterpreter.start 2112 initial_position) : (Parsetree.toplevel_phrase list) MenhirInterpreter.checkpoint) + (Obj.magic (MenhirInterpreter.start 2199 initial_position) : (Parsetree.toplevel_phrase list) MenhirInterpreter.checkpoint) and toplevel_phrase = fun initial_position -> - (Obj.magic (MenhirInterpreter.start 2084 initial_position) : (Parsetree.toplevel_phrase) MenhirInterpreter.checkpoint) + (Obj.magic (MenhirInterpreter.start 2171 initial_position) : (Parsetree.toplevel_phrase) MenhirInterpreter.checkpoint) and parse_val_longident = fun initial_position -> - (Obj.magic (MenhirInterpreter.start 2078 initial_position) : (Longident.t) MenhirInterpreter.checkpoint) + (Obj.magic (MenhirInterpreter.start 2165 initial_position) : (Longident.t) MenhirInterpreter.checkpoint) and parse_pattern = fun initial_position -> - (Obj.magic (MenhirInterpreter.start 2074 initial_position) : (Parsetree.pattern) MenhirInterpreter.checkpoint) + (Obj.magic (MenhirInterpreter.start 2161 initial_position) : (Parsetree.pattern) MenhirInterpreter.checkpoint) and parse_mty_longident = fun initial_position -> - (Obj.magic (MenhirInterpreter.start 2070 initial_position) : (Longident.t) MenhirInterpreter.checkpoint) + (Obj.magic (MenhirInterpreter.start 2157 initial_position) : (Longident.t) MenhirInterpreter.checkpoint) and parse_module_type = fun initial_position -> - (Obj.magic (MenhirInterpreter.start 2066 initial_position) : (Parsetree.module_type) MenhirInterpreter.checkpoint) + (Obj.magic (MenhirInterpreter.start 2153 initial_position) : (Parsetree.module_type) MenhirInterpreter.checkpoint) and parse_module_expr = fun initial_position -> - (Obj.magic (MenhirInterpreter.start 2062 initial_position) : (Parsetree.module_expr) MenhirInterpreter.checkpoint) + (Obj.magic (MenhirInterpreter.start 2149 initial_position) : (Parsetree.module_expr) MenhirInterpreter.checkpoint) and parse_mod_longident = fun initial_position -> - (Obj.magic (MenhirInterpreter.start 2058 initial_position) : (Longident.t) MenhirInterpreter.checkpoint) + (Obj.magic (MenhirInterpreter.start 2145 initial_position) : (Longident.t) MenhirInterpreter.checkpoint) and parse_mod_ext_longident = fun initial_position -> - (Obj.magic (MenhirInterpreter.start 2054 initial_position) : (Longident.t) MenhirInterpreter.checkpoint) + (Obj.magic (MenhirInterpreter.start 2141 initial_position) : (Longident.t) MenhirInterpreter.checkpoint) and parse_expression = fun initial_position -> - (Obj.magic (MenhirInterpreter.start 2050 initial_position) : (Parsetree.expression) MenhirInterpreter.checkpoint) + (Obj.magic (MenhirInterpreter.start 2137 initial_position) : (Parsetree.expression) MenhirInterpreter.checkpoint) and parse_core_type = fun initial_position -> - (Obj.magic (MenhirInterpreter.start 2046 initial_position) : (Parsetree.core_type) MenhirInterpreter.checkpoint) + (Obj.magic (MenhirInterpreter.start 2133 initial_position) : (Parsetree.core_type) MenhirInterpreter.checkpoint) and parse_constr_longident = fun initial_position -> - (Obj.magic (MenhirInterpreter.start 2042 initial_position) : (Longident.t) MenhirInterpreter.checkpoint) + (Obj.magic (MenhirInterpreter.start 2129 initial_position) : (Longident.t) MenhirInterpreter.checkpoint) and parse_any_longident = fun initial_position -> - (Obj.magic (MenhirInterpreter.start 2024 initial_position) : (Longident.t) MenhirInterpreter.checkpoint) + (Obj.magic (MenhirInterpreter.start 2111 initial_position) : (Longident.t) MenhirInterpreter.checkpoint) and interface = fun initial_position -> - (Obj.magic (MenhirInterpreter.start 2020 initial_position) : (Parsetree.signature) MenhirInterpreter.checkpoint) + (Obj.magic (MenhirInterpreter.start 2107 initial_position) : (Parsetree.signature) MenhirInterpreter.checkpoint) and implementation = fun initial_position -> @@ -58533,12 +59818,12 @@ module Incremental = struct end -# 4409 "parsing/parser.mly" +# 4514 "parsing/parser.mly" -# 58540 "parsing/parser.ml" +# 59825 "parsing/parser.ml" # 269 "" -# 58545 "parsing/parser.ml" +# 59830 "parsing/parser.ml" diff --git a/compilerlibs/Makefile.compilerlibs b/compilerlibs/Makefile.compilerlibs index f24d2b7fb35..8d006f87e8c 100644 --- a/compilerlibs/Makefile.compilerlibs +++ b/compilerlibs/Makefile.compilerlibs @@ -60,6 +60,7 @@ PARSING = \ parsing/location.cmo \ parsing/longident.cmo \ parsing/docstrings.cmo \ + parsing/printast.cmo \ parsing/syntaxerr.cmo \ parsing/ast_helper.cmo \ parsing/jane_syntax_parsing.cmo parsing/jane_syntax.cmo \ @@ -70,7 +71,6 @@ PARSING = \ parsing/parser.cmo \ parsing/lexer.cmo \ parsing/parse.cmo \ - parsing/printast.cmo \ parsing/ast_mapper.cmo \ parsing/attr_helper.cmo \ parsing/ast_invariants.cmo \ diff --git a/driver/compenv.ml b/driver/compenv.ml index 005c9588f33..561ccf4b682 100644 --- a/driver/compenv.ml +++ b/driver/compenv.ml @@ -273,6 +273,7 @@ let read_one_param ppf position name v = | "unboxed-types" -> set "unboxed-types" [ unboxed_types ] v | "unsafe" -> set "unsafe" [ unsafe ] v | "verbose" -> set "verbose" [ verbose ] v + | "verbose-types" -> set "verbose_types" [ verbose_types ] v | "nopervasives" -> set "nopervasives" [ nopervasives ] v | "slash" -> set "slash" [ force_slash ] v (* for ocamldep *) | "keep-docs" -> set "keep-docs" [ Clflags.keep_docs ] v diff --git a/driver/main_args.ml b/driver/main_args.ml index 09143ea4678..05239b2081f 100644 --- a/driver/main_args.ml +++ b/driver/main_args.ml @@ -632,6 +632,14 @@ let mk_verbose f = "-verbose", Arg.Unit f, " Print calls to external commands" ;; +let mk_verbose_types f = + "-verbose-types", Arg.Unit f, " Print detailed information within types" +;; + +let mk_no_verbose_types f = + "-no-verbose-types", Arg.Unit f, + " Omit expert information within types (default)" + let mk_version f = "-version", Arg.Unit f, " Print version and exit" ;; @@ -1009,6 +1017,8 @@ module type Common_options = sig val _unboxed_types : unit -> unit val _no_unboxed_types : unit -> unit val _unsafe_string : unit -> unit + val _verbose_types : unit -> unit + val _no_verbose_types : unit -> unit val _version : unit -> unit val _vnum : unit -> unit val _w : string -> unit @@ -1320,6 +1330,8 @@ struct mk_use_runtime_2 F._use_runtime; mk_v F._v; mk_verbose F._verbose; + mk_verbose_types F._verbose_types; + mk_no_verbose_types F._no_verbose_types; mk_version F._version; mk__version F._version; mk_vmthread F._vmthread; @@ -1396,6 +1408,8 @@ struct mk_no_unboxed_types F._no_unboxed_types; mk_unsafe F._unsafe; mk_unsafe_string F._unsafe_string; + mk_verbose_types F._verbose_types; + mk_no_verbose_types F._no_verbose_types; mk_version F._version; mk__version F._version; mk_no_version F._no_version; @@ -1537,6 +1551,8 @@ struct mk_unsafe_string F._unsafe_string; mk_v F._v; mk_verbose F._verbose; + mk_verbose_types F._verbose_types; + mk_no_verbose_types F._no_verbose_types; mk_version F._version; mk__version F._version; mk_vnum F._vnum; @@ -1659,6 +1675,8 @@ module Make_opttop_options (F : Opttop_options) = struct mk_unsafe F._unsafe; mk_unsafe_string F._unsafe_string; mk_verbose F._verbose; + mk_verbose_types F._verbose_types; + mk_no_verbose_types F._no_verbose_types; mk_version F._version; mk__version F._version; mk_no_version F._no_version; @@ -1745,6 +1763,8 @@ struct mk_unsafe_string F._unsafe_string; mk_v F._v; mk_verbose F._verbose; + mk_verbose_types F._verbose_types; + mk_no_verbose_types F._no_verbose_types; mk_version F._version; mk__version F._version; mk_vmthread F._vmthread; @@ -1818,6 +1838,7 @@ module Default = struct let _no_strict_formats = clear strict_formats let _no_strict_sequence = clear strict_sequence let _no_unboxed_types = clear unboxed_types + let _no_verbose_types = clear verbose_types let _disable_all_extensions = Language_extension.disallow_extensions let _only_erasable_extensions = Language_extension.restrict_to_erasable_extensions @@ -1835,6 +1856,7 @@ module Default = struct let _strict_sequence = set strict_sequence let _unboxed_types = set unboxed_types let _unsafe_string = set unsafe_string + let _verbose_types = set verbose_types let _w s = Warnings.parse_options false s |> Option.iter Location.(prerr_alert none) let _debug_ocaml = set debug_ocaml diff --git a/driver/main_args.mli b/driver/main_args.mli index adb0eb8b147..7f12f5e3103 100644 --- a/driver/main_args.mli +++ b/driver/main_args.mli @@ -47,6 +47,8 @@ module type Common_options = sig val _unboxed_types : unit -> unit val _no_unboxed_types : unit -> unit val _unsafe_string : unit -> unit + val _verbose_types : unit -> unit + val _no_verbose_types : unit -> unit val _version : unit -> unit val _vnum : unit -> unit val _w : string -> unit diff --git a/dune b/dune index 7ad57363583..f2a37c2b12f 100644 --- a/dune +++ b/dune @@ -62,11 +62,10 @@ language_extension_kernel language_extension ;; PARSING - location longident docstrings syntaxerr ast_helper camlinternalMenhirLib - ast_iterator parser lexer parse printast pprintast ast_mapper attr_helper - builtin_attributes ast_invariants depend jane_syntax_parsing jane_syntax - ; manual update: mli only files - asttypes parsetree + location longident docstrings printast syntaxerr ast_helper + camlinternalMenhirLib ast_iterator parser lexer parse pprintast ast_mapper + attr_helper builtin_attributes ast_invariants depend jane_syntax_parsing + jane_syntax ; manual update: mli only files asttypes parsetree ;; TYPING ident path layouts primitive shape types btype oprint subst predef datarepr @@ -246,13 +245,13 @@ (location.mli as compiler-libs/location.mli) (longident.mli as compiler-libs/longident.mli) (docstrings.mli as compiler-libs/docstrings.mli) + (printast.mli as compiler-libs/printast.mli) (syntaxerr.mli as compiler-libs/syntaxerr.mli) (ast_helper.mli as compiler-libs/ast_helper.mli) (camlinternalMenhirLib.mli as compiler-libs/camlinternalMenhirLib.mli) (parser.mli as compiler-libs/parser.mli) (lexer.mli as compiler-libs/lexer.mli) (parse.mli as compiler-libs/parse.mli) - (printast.mli as compiler-libs/printast.mli) (pprintast.mli as compiler-libs/pprintast.mli) (ast_mapper.mli as compiler-libs/ast_mapper.mli) (ast_iterator.mli as compiler-libs/ast_iterator.mli) diff --git a/ocamldoc/.depend b/ocamldoc/.depend index 582725c46a1..b97a2db8d09 100644 --- a/ocamldoc/.depend +++ b/ocamldoc/.depend @@ -126,6 +126,7 @@ odoc_ast.cmo : \ odoc_env.cmi \ odoc_class.cmo \ ../parsing/location.cmi \ + ../parsing/jane_syntax.cmi \ ../typing/ident.cmi \ ../typing/btype.cmi \ ../parsing/asttypes.cmi \ @@ -149,6 +150,7 @@ odoc_ast.cmx : \ odoc_env.cmx \ odoc_class.cmx \ ../parsing/location.cmx \ + ../parsing/jane_syntax.cmx \ ../typing/ident.cmx \ ../typing/btype.cmx \ ../parsing/asttypes.cmi \ @@ -662,6 +664,7 @@ odoc_sig.cmo : \ ../parsing/longident.cmi \ ../parsing/location.cmi \ ../typing/layouts.cmi \ + ../parsing/jane_syntax.cmi \ ../typing/ident.cmi \ ../typing/ctype.cmi \ ../typing/btype.cmi \ @@ -687,6 +690,7 @@ odoc_sig.cmx : \ ../parsing/longident.cmx \ ../parsing/location.cmx \ ../typing/layouts.cmx \ + ../parsing/jane_syntax.cmx \ ../typing/ident.cmx \ ../typing/ctype.cmx \ ../typing/btype.cmx \ diff --git a/otherlibs/dynlink/Makefile b/otherlibs/dynlink/Makefile index 5ab9e4f2176..7cffceb21b3 100644 --- a/otherlibs/dynlink/Makefile +++ b/otherlibs/dynlink/Makefile @@ -98,6 +98,7 @@ COMPILERLIBS_SOURCES=\ parsing/location.ml \ parsing/longident.ml \ parsing/docstrings.ml \ + parsing/printast.ml \ parsing/syntaxerr.ml \ parsing/ast_helper.ml \ parsing/jane_syntax_parsing.ml \ diff --git a/otherlibs/dynlink/dune b/otherlibs/dynlink/dune index c4a1a679b2c..7870e0bc618 100644 --- a/otherlibs/dynlink/dune +++ b/otherlibs/dynlink/dune @@ -43,6 +43,7 @@ location longident docstrings + printast syntaxerr jane_syntax_parsing jane_syntax @@ -128,6 +129,7 @@ (copy_files ../../parsing/location.ml) (copy_files ../../parsing/longident.ml) (copy_files ../../parsing/docstrings.ml) +(copy_files ../../parsing/printast.ml) (copy_files ../../parsing/syntaxerr.ml) (copy_files ../../parsing/jane_syntax_parsing.ml) (copy_files ../../parsing/jane_syntax.ml) @@ -186,6 +188,7 @@ (copy_files ../../parsing/location.mli) (copy_files ../../parsing/longident.mli) (copy_files ../../parsing/docstrings.mli) +(copy_files ../../parsing/printast.mli) (copy_files ../../parsing/syntaxerr.mli) (copy_files ../../parsing/jane_syntax_parsing.mli) (copy_files ../../parsing/jane_syntax.mli) @@ -282,6 +285,7 @@ .dynlink_compilerlibs.objs/byte/dynlink_compilerlibs__Symbol.cmo .dynlink_compilerlibs.objs/byte/dynlink_compilerlibs__Path.cmo .dynlink_compilerlibs.objs/byte/dynlink_compilerlibs__Docstrings.cmo + .dynlink_compilerlibs.objs/byte/dynlink_compilerlibs__Printast.cmo .dynlink_compilerlibs.objs/byte/dynlink_compilerlibs__Syntaxerr.cmo .dynlink_compilerlibs.objs/byte/dynlink_compilerlibs__Lazy_backtrack.cmo .dynlink_compilerlibs.objs/byte/dynlink_compilerlibs__Ast_helper.cmo @@ -356,6 +360,7 @@ .dynlink_compilerlibs.objs/native/dynlink_compilerlibs__Path.cmx .dynlink_compilerlibs.objs/native/dynlink_compilerlibs__Lazy_backtrack.cmx .dynlink_compilerlibs.objs/native/dynlink_compilerlibs__Docstrings.cmx + .dynlink_compilerlibs.objs/native/dynlink_compilerlibs__Printast.cmx .dynlink_compilerlibs.objs/native/dynlink_compilerlibs__Syntaxerr.cmx .dynlink_compilerlibs.objs/native/dynlink_compilerlibs__Ast_helper.cmx .dynlink_compilerlibs.objs/native/dynlink_compilerlibs__Jane_syntax_parsing.cmx diff --git a/parsing/ast_helper.ml b/parsing/ast_helper.ml index 13e981f72cb..1968d9ac197 100644 --- a/parsing/ast_helper.ml +++ b/parsing/ast_helper.ml @@ -82,7 +82,7 @@ module Typ = struct let check_variable vl loc v = if List.mem v vl then raise Syntaxerr.(Error(Variable_in_scope(loc,v))) in - let var_names = List.map (fun v -> v.txt) var_names in + let var_names = List.map Location.get_txt var_names in let rec loop t = let desc = (* This *ought* to match on [Jane_syntax.Core_type.ast_of] first, but @@ -108,6 +108,10 @@ module Typ = struct Ptyp_object (List.map loop_object_field lst, o) | Ptyp_class (longident, lst) -> Ptyp_class (longident, List.map loop lst) + (* A Ptyp_alias might be a layout annotation (that is, it might have + attributes which mean it should be interpreted as a + [Jane_syntax.Layouts.Ltyp_alias]), but the code here still has the + correct behavior. *) | Ptyp_alias(core_type, string) -> check_variable var_names t.ptyp_loc string; Ptyp_alias(loop core_type, string) @@ -517,11 +521,13 @@ module Type = struct let mk ?(loc = !default_loc) ?(attrs = []) ?(docs = empty_docs) ?(text = []) ?(params = []) + ?layout ?(cstrs = []) ?(kind = Ptype_abstract) ?(priv = Public) ?manifest name = + let layout_attrs = Option.to_list layout in { ptype_name = name; ptype_params = params; @@ -530,7 +536,7 @@ module Type = struct ptype_private = priv; ptype_manifest = manifest; ptype_attributes = - add_text_attrs text (add_docs_attrs docs attrs); + layout_attrs @ add_text_attrs text (add_docs_attrs docs attrs); ptype_loc = loc; } diff --git a/parsing/ast_helper.mli b/parsing/ast_helper.mli index 8e778e8c433..24d68c0e093 100644 --- a/parsing/ast_helper.mli +++ b/parsing/ast_helper.mli @@ -92,7 +92,8 @@ module Typ : any of nullary type constructor [tc] is replaced by type variable of the same name, if [tc]'s name appears in [newtypes]. Raise [Syntaxerr.Variable_in_scope] if any type variable inside [te] - appears in [newtypes]. + appears in [newtypes]. Used to translate [type a. a -> a] to + ['a. 'a -> 'a] during parsing. @since 4.05 *) end @@ -206,6 +207,7 @@ module Type: sig val mk: ?loc:loc -> ?attrs:attrs -> ?docs:docs -> ?text:text -> ?params:(core_type * (variance * injectivity)) list -> + ?layout:attribute -> ?cstrs:(core_type * core_type * loc) list -> ?kind:type_kind -> ?priv:private_flag -> ?manifest:core_type -> str -> type_declaration diff --git a/parsing/ast_invariants.ml b/parsing/ast_invariants.ml index bb392b1e614..3671b36ddc1 100644 --- a/parsing/ast_invariants.ml +++ b/parsing/ast_invariants.ml @@ -80,7 +80,7 @@ let iterator = empty_comprehension loc | Jexp_comprehension _ | Jexp_immutable_array _ - | Jexp_unboxed_constant _ + | Jexp_layout _ -> () in let expr self exp = diff --git a/parsing/ast_iterator.ml b/parsing/ast_iterator.ml index 206c42ea189..10ba17f1a7b 100644 --- a/parsing/ast_iterator.ml +++ b/parsing/ast_iterator.ml @@ -47,6 +47,7 @@ type iterator = { include_declaration: iterator -> include_declaration -> unit; include_description: iterator -> include_description -> unit; label_declaration: iterator -> label_declaration -> unit; + layout_annotation:iterator -> Asttypes.const_layout -> unit; location: iterator -> Location.t -> unit; module_binding: iterator -> module_binding -> unit; module_declaration: iterator -> module_declaration -> unit; @@ -90,6 +91,9 @@ let iter_tuple3 f1 f2 f3 (x, y, z) = f1 x; f2 y; f3 z let iter_opt f = function None -> () | Some x -> f x let iter_loc sub {loc; txt = _} = sub.location sub loc +let iter_loc_txt sub f { loc; txt } = + sub.location sub loc; + f sub txt module T = struct (* Type expressions for the core language *) @@ -116,8 +120,25 @@ module T = struct | Otag (_, t) -> sub.typ sub t | Oinherit t -> sub.typ sub t - let iter_jst _sub : Jane_syntax.Core_type.t -> _ = function - | _ -> . + let layout_annotation sub = + iter_loc_txt sub sub.layout_annotation + + let bound_var sub (_, layout) = match layout with + | None -> () + | Some annot -> layout_annotation sub annot + + let iter_jst_layout sub : Jane_syntax.Layouts.core_type -> _ = function + | Ltyp_var { name = _; layout } -> + iter_loc_txt sub sub.layout_annotation layout + | Ltyp_poly { bound_vars; inner_type } -> + List.iter (bound_var sub) bound_vars; + sub.typ sub inner_type + | Ltyp_alias { aliased_type; name = _; layout } -> + sub.typ sub aliased_type; + iter_loc_txt sub sub.layout_annotation layout + + let iter_jst sub : Jane_syntax.Core_type.t -> _ = function + | Jtyp_layout typ -> iter_jst_layout sub typ let iter sub ({ptyp_desc = desc; ptyp_loc = loc; ptyp_attributes = attrs} as typ) = @@ -143,7 +164,8 @@ module T = struct | Ptyp_alias (t, _) -> sub.typ sub t | Ptyp_variant (rl, _b, _ll) -> List.iter (row_field sub) rl - | Ptyp_poly (_, t) -> sub.typ sub t + | Ptyp_poly (_, t) -> + sub.typ sub t; | Ptyp_package (lid, l) -> iter_loc sub lid; List.iter (iter_tuple (iter_loc sub) (sub.typ sub)) l @@ -197,16 +219,19 @@ module T = struct sub.attributes sub ptyexn_attributes let iter_extension_constructor_kind sub = function - Pext_decl(vars, ctl, cto) -> + Pext_decl(vars, ctl, cto )-> List.iter (iter_loc sub) vars; iter_constructor_arguments sub ctl; iter_opt (sub.typ sub) cto | Pext_rebind li -> iter_loc sub li - let iter_extension_constructor_jst _sub : + let iter_extension_constructor_jst sub : Jane_syntax.Extension_constructor.t -> _ = function - | _ -> . + | Jext_layout (Lext_decl (vls, ctl, cto)) -> + List.iter (bound_var sub) vls; + iter_constructor_arguments sub ctl; + iter_opt (sub.typ sub) cto let iter_extension_constructor sub ({pext_name; @@ -408,6 +433,7 @@ module E = struct module C = Jane_syntax.Comprehensions module IA = Jane_syntax.Immutable_arrays + module L = Jane_syntax.Layouts let iter_iterator sub : C.iterator -> _ = function | Range { start; stop; direction = _ } -> @@ -439,10 +465,16 @@ module E = struct | Iaexp_immutable_array elts -> List.iter (sub.expr sub) elts + let iter_layout_exp sub : L.expression -> _ = function + | Lexp_constant _ -> iter_constant + | Lexp_newtype (_str, layout, inner_expr) -> + iter_loc_txt sub sub.layout_annotation layout; + sub.expr sub inner_expr + let iter_jst sub : Jane_syntax.Expression.t -> _ = function | Jexp_comprehension comp_exp -> iter_comp_exp sub comp_exp | Jexp_immutable_array iarr_exp -> iter_iarr_exp sub iarr_exp - | Jexp_unboxed_constant _ -> iter_constant + | Jexp_layout layout_exp -> iter_layout_exp sub layout_exp let iter sub ({pexp_loc = loc; pexp_desc = desc; pexp_attributes = attrs} as expr)= @@ -545,7 +577,7 @@ module P = struct let iter_jst sub : Jane_syntax.Pattern.t -> _ = function | Jpat_immutable_array iapat -> iter_iapat sub iapat - | Jpat_unboxed_constant _ -> iter_constant + | Jpat_layout (Lpat_constant _) -> iter_constant let iter sub ({ppat_desc = desc; ppat_loc = loc; ppat_attributes = attrs} as pat) = @@ -768,14 +800,22 @@ let default_iterator = constructor_declaration = - (fun this {pcd_name; pcd_vars; pcd_args; - pcd_res; pcd_loc; pcd_attributes} -> + (fun this ({pcd_name; pcd_vars; pcd_args; + pcd_res; pcd_loc; pcd_attributes} as pcd) -> iter_loc this pcd_name; - List.iter (iter_loc this) pcd_vars; + let attrs = + match Jane_syntax.Layouts.of_constructor_declaration pcd with + | None -> + List.iter (iter_loc this) pcd_vars; + pcd_attributes + | Some (vars_layouts, attrs) -> + List.iter (T.bound_var this) vars_layouts; + attrs + in T.iter_constructor_arguments this pcd_args; iter_opt (this.typ this) pcd_res; this.location this pcd_loc; - this.attributes this pcd_attributes + this.attributes this attrs ); label_declaration = @@ -810,4 +850,6 @@ let default_iterator = | PTyp x -> this.typ this x | PPat (x, g) -> this.pat this x; iter_opt (this.expr this) g ); + + layout_annotation = (fun _this _l -> ()); } diff --git a/parsing/ast_iterator.mli b/parsing/ast_iterator.mli index 0d63a0cf7c7..0ef7f98e12d 100644 --- a/parsing/ast_iterator.mli +++ b/parsing/ast_iterator.mli @@ -50,6 +50,7 @@ type iterator = { include_declaration: iterator -> include_declaration -> unit; include_description: iterator -> include_description -> unit; label_declaration: iterator -> label_declaration -> unit; + layout_annotation: iterator -> Asttypes.const_layout -> unit; location: iterator -> Location.t -> unit; module_binding: iterator -> module_binding -> unit; module_declaration: iterator -> module_declaration -> unit; diff --git a/parsing/ast_mapper.ml b/parsing/ast_mapper.ml index 8935600296b..d0c2a026155 100644 --- a/parsing/ast_mapper.ml +++ b/parsing/ast_mapper.ml @@ -52,6 +52,7 @@ type mapper = { include_declaration: mapper -> include_declaration -> include_declaration; include_description: mapper -> include_description -> include_description; label_declaration: mapper -> label_declaration -> label_declaration; + layout_annotation: mapper -> Asttypes.const_layout -> Asttypes.const_layout; location: mapper -> Location.t -> Location.t; module_binding: mapper -> module_binding -> module_binding; module_declaration: mapper -> module_declaration -> module_declaration; @@ -100,6 +101,8 @@ let map_tuple3 f1 f2 f3 (x, y, z) = (f1 x, f2 y, f3 z) let map_opt f = function None -> None | Some x -> Some (f x) let map_loc sub {loc; txt} = {loc = sub.location sub loc; txt} +let map_loc_txt sub f {loc; txt} = + {loc = sub.location sub loc; txt = f sub txt} module C = struct (* Constants *) @@ -143,9 +146,33 @@ module T = struct in Of.mk ~loc ~attrs desc - let map_jst _sub : Jane_syntax.Core_type.t -> Jane_syntax.Core_type.t = + let var_layout sub (name, layout_opt) = + let name = map_loc sub name in + let layout_opt = + map_opt (map_loc_txt sub sub.layout_annotation) layout_opt + in + (name, layout_opt) + + let map_bound_vars sub bound_vars = List.map (var_layout sub) bound_vars + + let map_jst_layouts sub : + Jane_syntax.Layouts.core_type -> Jane_syntax.Layouts.core_type = function - | _ -> . + | Ltyp_var { name; layout } -> + let layout = map_loc_txt sub sub.layout_annotation layout in + Ltyp_var { name; layout } + | Ltyp_poly { bound_vars; inner_type } -> + let bound_vars = map_bound_vars sub bound_vars in + let inner_type = sub.typ sub inner_type in + Ltyp_poly { bound_vars; inner_type } + | Ltyp_alias { aliased_type; name; layout } -> + let aliased_type = sub.typ sub aliased_type in + let layout = map_loc_txt sub sub.layout_annotation layout in + Ltyp_alias { aliased_type; name; layout } + + let map_jst sub : Jane_syntax.Core_type.t -> Jane_syntax.Core_type.t = + function + | Jtyp_layout typ -> Jtyp_layout (map_jst_layouts sub typ) let map sub ({ptyp_desc = desc; ptyp_loc = loc; ptyp_attributes = attrs} as typ) = @@ -154,10 +181,8 @@ module T = struct match Jane_syntax.Core_type.of_ast typ with | Some (jtyp, attrs) -> begin let attrs = sub.attributes sub attrs in - let typ = match sub.typ_jane_syntax sub jtyp with - | _ -> . - in - { typ with ptyp_attributes = attrs @ typ.ptyp_attributes } + match sub.typ_jane_syntax sub jtyp with + | Jtyp_layout l -> Jane_syntax.Layouts.type_of ~loc ~attrs l end | None -> let attrs = sub.attributes sub attrs in @@ -234,9 +259,14 @@ module T = struct Te.mk_exception ~loc ~attrs (sub.extension_constructor sub ptyexn_constructor) - let map_extension_constructor_jst _sub : - Jane_syntax.Extension_constructor.t -> _ = function - | _ -> . + let map_extension_constructor_jst sub : + Jane_syntax.Extension_constructor.t -> Jane_syntax.Extension_constructor.t = + function + | Jext_layout (Lext_decl(vars, args, res)) -> + let vars = map_bound_vars sub vars in + let args = map_constructor_arguments sub args in + let res = map_opt (sub.typ sub) res in + Jext_layout (Lext_decl(vars, args, res)) let map_extension_constructor_kind sub = function Pext_decl(vars, ctl, cto) -> @@ -254,11 +284,11 @@ module T = struct let loc = sub.location sub pext_loc in let name = map_loc sub pext_name in match Jane_syntax.Extension_constructor.of_ast ext with - | Some (jext, attrs) -> begin - let _attrs = sub.attributes sub attrs in - match sub.extension_constructor_jane_syntax sub jext with - | _ -> . - end + | Some (jext, attrs) -> + let attrs = sub.attributes sub attrs in + let jext = sub.extension_constructor_jane_syntax sub jext in + Jane_syntax.Extension_constructor.extension_constructor_of + ~loc ~name ~attrs jext | None -> let attrs = sub.attributes sub pext_attributes in Te.constructor ~loc ~attrs @@ -483,7 +513,7 @@ module E = struct module C = Jane_syntax.Comprehensions module IA = Jane_syntax.Immutable_arrays - module UC = Jane_syntax.Unboxed_constants + module L = Jane_syntax.Layouts let map_iterator sub : C.iterator -> C.iterator = function | Range { start; stop; direction } -> @@ -516,18 +546,25 @@ module E = struct | Iaexp_immutable_array elts -> Iaexp_immutable_array (List.map (sub.expr sub) elts) - let map_unboxed_constant_exp _sub : UC.expression -> UC.expression = function + let map_unboxed_constant_exp _sub : L.constant -> L.constant = function (* We can't reasonably call [sub.constant] because it might return a kind of constant we don't know how to unbox. *) - | Float _ | Integer _ as x -> x + | (Float _ | Integer _) as x -> x + + let map_layout_exp sub : L.expression -> L.expression = function + | Lexp_constant x -> Lexp_constant (map_unboxed_constant_exp sub x) + | Lexp_newtype (str, layout, inner_expr) -> + let str = map_loc sub str in + let layout = map_loc_txt sub sub.layout_annotation layout in + let inner_expr = sub.expr sub inner_expr in + Lexp_newtype (str, layout, inner_expr) let map_jst sub : Jane_syntax.Expression.t -> Jane_syntax.Expression.t = function | Jexp_comprehension x -> Jexp_comprehension (map_cexp sub x) | Jexp_immutable_array x -> Jexp_immutable_array (map_iaexp sub x) - | Jexp_unboxed_constant x -> - Jexp_unboxed_constant (map_unboxed_constant_exp sub x) + | Jexp_layout x -> Jexp_layout (map_layout_exp sub x) let map sub ({pexp_loc = loc; pexp_desc = desc; pexp_attributes = attrs} as exp) = @@ -630,13 +667,13 @@ module P = struct (* Patterns *) module IA = Jane_syntax.Immutable_arrays - module UC = Jane_syntax.Unboxed_constants + module L = Jane_syntax.Layouts let map_iapat sub : IA.pattern -> IA.pattern = function | Iapat_immutable_array elts -> Iapat_immutable_array (List.map (sub.pat sub) elts) - let map_unboxed_constant_pat _sub : UC.pattern -> UC.pattern = function + let map_unboxed_constant_pat _sub : L.constant -> L.constant = function (* We can't reasonably call [sub.constant] because it might return a kind of constant we don't know how to unbox. *) @@ -644,8 +681,8 @@ module P = struct let map_jst sub : Jane_syntax.Pattern.t -> Jane_syntax.Pattern.t = function | Jpat_immutable_array x -> Jpat_immutable_array (map_iapat sub x) - | Jpat_unboxed_constant x -> - Jpat_unboxed_constant (map_unboxed_constant_pat sub x) + | Jpat_layout (Lpat_constant x) -> + Jpat_layout (Lpat_constant (map_unboxed_constant_pat sub x)) let map sub ({ppat_desc = desc; ppat_loc = loc; ppat_attributes = attrs} as pat) = @@ -878,15 +915,23 @@ let default_mapper = constructor_declaration = - (fun this {pcd_name; pcd_vars; pcd_args; - pcd_res; pcd_loc; pcd_attributes} -> - Type.constructor - (map_loc this pcd_name) - ~vars:(List.map (map_loc this) pcd_vars) - ~args:(T.map_constructor_arguments this pcd_args) - ?res:(map_opt (this.typ this) pcd_res) - ~loc:(this.location this pcd_loc) - ~attrs:(this.attributes this pcd_attributes) + (fun this ({pcd_name; pcd_vars; pcd_args; + pcd_res; pcd_loc; pcd_attributes} as pcd) -> + let name = map_loc this pcd_name in + let args = T.map_constructor_arguments this pcd_args in + let res = map_opt (this.typ this) pcd_res in + let loc = this.location this pcd_loc in + match Jane_syntax.Layouts.of_constructor_declaration pcd with + | None -> + let vars = List.map (map_loc this) pcd_vars in + let attrs = this.attributes this pcd_attributes in + Type.constructor name ~vars ~args ?res ~loc ~attrs + | Some (vars_layouts, attributes) -> + let vars_layouts = List.map (T.var_layout this) vars_layouts in + let attrs = this.attributes this attributes in + Jane_syntax.Layouts.constructor_declaration_of + name ~vars_layouts ~args ~res ~loc ~attrs + ~info:Docstrings.empty_info ); label_declaration = @@ -930,6 +975,8 @@ let default_mapper = | PPat (x, g) -> PPat (this.pat this x, map_opt (this.expr this) g) ); + layout_annotation = (fun _this l -> l); + expr_jane_syntax = E.map_jst; extension_constructor_jane_syntax = T.map_extension_constructor_jst; module_type_jane_syntax = MT.map_jane_syntax; @@ -937,7 +984,6 @@ let default_mapper = signature_item_jane_syntax = MT.map_signature_item_jst; structure_item_jane_syntax = M.map_structure_item_jst; typ_jane_syntax = T.map_jst; - } let extension_of_error {kind; main; sub} = diff --git a/parsing/ast_mapper.mli b/parsing/ast_mapper.mli index f9d03340565..06e8ba0c518 100644 --- a/parsing/ast_mapper.mli +++ b/parsing/ast_mapper.mli @@ -90,6 +90,7 @@ type mapper = { type *) label_declaration: mapper -> label_declaration -> label_declaration; + layout_annotation: mapper -> Asttypes.const_layout -> Asttypes.const_layout; location: mapper -> Location.t -> Location.t; module_binding: mapper -> module_binding -> module_binding; module_declaration: mapper -> module_declaration -> module_declaration; diff --git a/parsing/asttypes.mli b/parsing/asttypes.mli index 8c8b7310828..83a070268df 100644 --- a/parsing/asttypes.mli +++ b/parsing/asttypes.mli @@ -48,6 +48,11 @@ type global_flag = | Global | Nothing +type 'a loc = 'a Location.loc = { + txt : 'a; + loc : Location.t; +} + (* constant layouts are parsed as layout annotations, and also used in the type checker as already-inferred (i.e. non-variable) layouts *) type const_layout = @@ -58,6 +63,8 @@ type const_layout = | Immediate | Float64 +type layout_annotation = const_layout loc + type label = string type arg_label = @@ -65,12 +72,6 @@ type arg_label = | Labelled of string (** [label:T -> ...] *) | Optional of string (** [?label:T -> ...] *) -type 'a loc = 'a Location.loc = { - txt : 'a; - loc : Location.t; -} - - type variance = | Covariant | Contravariant @@ -79,3 +80,4 @@ type variance = type injectivity = | Injective | NoInjectivity + diff --git a/parsing/builtin_attributes.mli b/parsing/builtin_attributes.mli index 05b9eda1cb1..f761a5b74fc 100644 --- a/parsing/builtin_attributes.mli +++ b/parsing/builtin_attributes.mli @@ -198,5 +198,5 @@ val tailcall : Parsetree.attributes -> (* CR layouts: we should eventually be able to delete ~legacy_immediate (after we turn on layouts by default). *) val layout : legacy_immediate:bool -> Parsetree.attributes -> - (Asttypes.const_layout Location.loc option, - Asttypes.const_layout Location.loc) result + (Asttypes.layout_annotation option, + Asttypes.layout_annotation) result diff --git a/parsing/depend.ml b/parsing/depend.ml index 175e43130fa..4d33fcc1c9b 100644 --- a/parsing/depend.ml +++ b/parsing/depend.ml @@ -95,6 +95,14 @@ let handle_extension ext = | _ -> () +(* CR layouts: Remember to add this when layouts can have module + prefixes. *) +let add_layout _bv (_layout : Asttypes.layout_annotation) = () + +let add_vars_layouts bv vars_layouts = + let add_one (_, layout) = Option.iter (add_layout bv) layout in + List.iter add_one vars_layouts + let rec add_type bv ty = match Jane_syntax.Core_type.of_ast ty with | Some (jty, _attrs) -> add_type_jst bv jty @@ -122,8 +130,18 @@ let rec add_type bv ty = | Ptyp_package pt -> add_package_type bv pt | Ptyp_extension e -> handle_extension e -and add_type_jst _bv : Jane_syntax.Core_type.t -> _ = function - | _ -> . +and add_type_jst bv : Jane_syntax.Core_type.t -> _ = function + | Jtyp_layout typ -> add_type_jst_layouts bv typ + +and add_type_jst_layouts bv : Jane_syntax.Layouts.core_type -> _ = function + | Ltyp_var { name = _; layout } -> + add_layout bv layout + | Ltyp_poly { bound_vars; inner_type } -> + add_vars_layouts bv bound_vars; + add_type bv inner_type + | Ltyp_alias { aliased_type; name = _; layout } -> + add_type bv aliased_type; + add_layout bv layout and add_package_type bv (lid, l) = add bv lid; @@ -155,13 +173,16 @@ let add_type_declaration bv td = | Ptype_open -> () in add_tkind td.ptype_kind -let add_extension_constructor_jst _bv _attrs : +let add_extension_constructor_jst bv : Jane_syntax.Extension_constructor.t -> _ = function - | _ -> . + | Jext_layout (Lext_decl (vars_layouts, args, res)) -> + add_vars_layouts bv vars_layouts; + add_constructor_arguments bv args; + Option.iter (add_type bv) res let add_extension_constructor bv ext = match Jane_syntax.Extension_constructor.of_ast ext with - | Some (jext, attrs) -> add_extension_constructor_jst bv attrs jext + | Some (jext, _attrs) -> add_extension_constructor_jst bv jext | None -> match ext.pext_kind with Pext_decl(_, args, rty) -> @@ -215,7 +236,7 @@ let rec add_pattern bv pat = and add_pattern_jane_syntax bv : Jane_syntax.Pattern.t -> _ = function | Jpat_immutable_array (Iapat_immutable_array pl) -> List.iter (add_pattern bv) pl - | Jpat_unboxed_constant _ -> add_constant + | Jpat_layout (Lpat_constant _) -> add_constant let add_pattern bv pat = pattern_bv := bv; @@ -301,7 +322,7 @@ let rec add_expr bv exp = and add_expr_jane_syntax bv : Jane_syntax.Expression.t -> _ = function | Jexp_comprehension x -> add_comprehension_expr bv x | Jexp_immutable_array x -> add_immutable_array_expr bv x - | Jexp_unboxed_constant _ -> add_constant + | Jexp_layout x -> add_layout_expr bv x and add_comprehension_expr bv : Jane_syntax.Comprehensions.expression -> _ = function @@ -340,6 +361,12 @@ and add_immutable_array_expr bv : Jane_syntax.Immutable_arrays.expression -> _ = function | Iaexp_immutable_array exprs -> List.iter (add_expr bv) exprs +and add_layout_expr bv : Jane_syntax.Layouts.expression -> _ = function + | Lexp_constant _ -> add_constant + | Lexp_newtype (_, layout, inner_expr) -> + add_layout bv layout; + add_expr bv inner_expr + and add_cases bv cases = List.iter (add_case bv) cases diff --git a/parsing/jane_syntax.ml b/parsing/jane_syntax.ml index 3a43afb2c4f..b42f3001099 100644 --- a/parsing/jane_syntax.ml +++ b/parsing/jane_syntax.ml @@ -2,6 +2,78 @@ open Asttypes open Parsetree open Jane_syntax_parsing +(****************************************) +(* Helpers used just within this module *) + +module type Extension_string = sig + val feature : Feature.t + val extension_string : string +end + +module Ast_of (AST : AST) + (Ext : Extension_string) : sig + (* Wrap a bit of AST with a jane-syntax annotation *) + val wrap_jane_syntax : + string list -> (* these strings describe the bit of new syntax *) + ?payload:payload -> + AST.ast -> + AST.ast +end = struct + let wrap_jane_syntax suffixes ?payload to_be_wrapped = + AST.make_jane_syntax Ext.feature suffixes ?payload to_be_wrapped +end + +module Of_ast (Ext : Extension_string) : sig + (* Find and remove a jane-syntax attribute marker, throwing an exception + if the attribute name does not have the right format or extension. *) + val unwrap_jane_syntax_attributes : + loc:Location.t -> + attributes -> + string list * payload * attributes +end = struct + module Desugaring_error = struct + type error = + | Not_this_embedding of Embedded_name.t + | Non_embedding + + let report_error ~loc = function + | Not_this_embedding name -> + Location.errorf ~loc + "Tried to desugar the embedded term %a@ \ + as belonging to the %s extension" + Embedded_name.pp_quoted_name name Ext.extension_string + | Non_embedding -> + Location.errorf ~loc + "Tried to desugar a non-embedded expression@ \ + as belonging to the %s extension" + Ext.extension_string + + exception Error of Location.t * error + + let () = + Location.register_error_of_exn + (function + | Error(loc, err) -> + Some (report_error ~loc err) + | _ -> None) + + let raise ~loc err = + raise (Error(loc, err)) + end + + let unwrap_jane_syntax_attributes ~loc attrs = + match find_and_remove_jane_syntax_attribute attrs with + | Some (ext_name, _loc, payload, attrs) -> begin + match Jane_syntax_parsing.Embedded_name.components ext_name with + | extension_occur :: names + when String.equal extension_occur Ext.extension_string -> + names, payload, attrs + | _ -> + Desugaring_error.raise ~loc (Not_this_embedding ext_name) + end + | None -> Desugaring_error.raise ~loc Non_embedding +end + (******************************************************************************) (** Individual language extension modules *) @@ -43,8 +115,15 @@ open Jane_syntax_parsing (** List and array comprehensions *) module Comprehensions = struct - let feature : Feature.t = Language_extension Comprehensions - let extension_string = Feature.extension_component feature + module Ext = struct + let feature : Feature.t = Language_extension Comprehensions + let extension_string = Feature.extension_component feature + end + + module Ast_of = Ast_of (Expression) (Ext) + module Of_ast = Of_ast (Ext) + + include Ext type iterator = | Range of { start : expression @@ -92,15 +171,13 @@ module Comprehensions = struct v} *) - let comprehension_expr names x = Expression.make_jane_syntax feature names x - (** First, we define how to go from the nice AST to the OCaml AST; this is the [expr_of_...] family of expressions, culminating in [expr_of_comprehension_expr]. *) let expr_of_iterator = function | Range { start; stop; direction } -> - comprehension_expr + Ast_of.wrap_jane_syntax [ "for" ; "range" ; match direction with @@ -108,20 +185,20 @@ module Comprehensions = struct | Downto -> "downto" ] (Ast_helper.Exp.tuple [start; stop]) | In seq -> - comprehension_expr ["for"; "in"] seq + Ast_of.wrap_jane_syntax ["for"; "in"] seq let expr_of_clause_binding { pattern; iterator; attributes } = Ast_helper.Vb.mk ~attrs:attributes pattern (expr_of_iterator iterator) let expr_of_clause clause rest = match clause with | For iterators -> - comprehension_expr + Ast_of.wrap_jane_syntax ["for"] (Ast_helper.Exp.let_ Nonrecursive (List.map expr_of_clause_binding iterators) rest) | When cond -> - comprehension_expr ["when"] (Ast_helper.Exp.sequence cond rest) + Ast_of.wrap_jane_syntax ["when"] (Ast_helper.Exp.sequence cond rest) let expr_of_comprehension ~type_ { body; clauses } = (* We elect to wrap the body in a new AST node (here, [Pexp_lazy]) @@ -131,13 +208,13 @@ module Comprehensions = struct part of its contract is threading through the user-written attributes on the outermost node. *) - comprehension_expr + Ast_of.wrap_jane_syntax type_ (Ast_helper.Exp.lazy_ (List.fold_right expr_of_clause clauses - (comprehension_expr ["body"] body))) + (Ast_of.wrap_jane_syntax ["body"] body))) let expr_of ~loc ~attrs cexpr = (* See Note [Wrapping with make_entire_jane_syntax] *) @@ -162,21 +239,15 @@ module Comprehensions = struct module Desugaring_error = struct type error = - | Non_comprehension_embedding of Embedded_name.t - | Non_embedding + | Has_payload of payload | Bad_comprehension_embedding of string list | No_clauses let report_error ~loc = function - | Non_comprehension_embedding name -> - Location.errorf ~loc - "Tried to desugar the non-comprehension embedded term %a@ \ - as part of a comprehension expression" - Embedded_name.pp_quoted_name name - | Non_embedding -> + | Has_payload payload -> Location.errorf ~loc - "Tried to desugar a non-embedded expression@ \ - as part of a comprehension expression" + "Comprehensions attribute has an unexpected payload:@;%a" + (Printast.payload 0) payload | Bad_comprehension_embedding subparts -> Location.errorf ~loc "Unknown, unexpected, or malformed@ comprehension embedded term %a" @@ -200,17 +271,12 @@ module Comprehensions = struct (* Returns the expression node with the outermost Jane Syntax-related attribute removed. *) let expand_comprehension_extension_expr expr = - match find_and_remove_jane_syntax_attribute expr.pexp_attributes with - | Some (ext_name, attributes) -> begin - match Jane_syntax_parsing.Embedded_name.components ext_name with - | comprehensions :: names - when String.equal comprehensions extension_string -> - names, { expr with pexp_attributes = attributes } - | _ :: _ -> - Desugaring_error.raise expr (Non_comprehension_embedding ext_name) - end - | None -> - Desugaring_error.raise expr Non_embedding + let names, payload, attributes = + Of_ast.unwrap_jane_syntax_attributes ~loc:expr.pexp_loc expr.pexp_attributes + in + match payload with + | PStr [] -> names, { expr with pexp_attributes = attributes } + | _ -> Desugaring_error.raise expr (Has_payload payload) let iterator_of_expr expr = match expand_comprehension_extension_expr expr with @@ -362,55 +428,484 @@ module Strengthen = struct | _ -> failwith "Malformed strengthened module type" end -module Unboxed_constants = struct - type t = +(** Layouts *) +module Layouts = struct + module Ext = struct + let feature : Feature.t = Language_extension Layouts + let extension_string = Feature.extension_component feature + end + + include Ext + + module Of_ast = Of_ast (Ext) + + type constant = | Float of string * char option | Integer of string * char - type expression = t - type pattern = t + type nonrec expression = + | Lexp_constant of constant + | Lexp_newtype of string loc * layout_annotation * expression + + type nonrec pattern = + | Lpat_constant of constant + + type nonrec core_type = + | Ltyp_var of { name : string option + ; layout : Asttypes.layout_annotation } + | Ltyp_poly of { bound_vars : (string loc * layout_annotation option) list + ; inner_type : core_type } + | Ltyp_alias of { aliased_type : core_type + ; name : string option + ; layout : Asttypes.layout_annotation } + + type nonrec extension_constructor = + | Lext_decl of (string Location.loc * + Asttypes.layout_annotation option) list * + constructor_arguments * + Parsetree.core_type option + + (*******************************************************) + (* Errors *) + + module Desugaring_error = struct + type error = + | Not_a_layout of Parsetree.payload + | Unexpected_wrapped_type of Parsetree.core_type + | Unexpected_wrapped_ext of Parsetree.extension_constructor + | Unexpected_attribute of string list + | Wrong_number_of_layouts of int * layout_annotation option list + | No_integer_suffix + | Unexpected_constant of Parsetree.constant + | Unexpected_wrapped_expr of Parsetree.expression + | Unexpected_wrapped_pat of Parsetree.pattern + + let report_error ~loc = function + | Not_a_layout payload -> + Location.errorf ~loc + "Layout attribute does not name a layout:@;%a" + (Printast.payload 0) payload + | Unexpected_wrapped_type typ -> + Location.errorf ~loc + "Layout attribute on wrong core type:@;%a" + (Printast.core_type 0) typ + | Unexpected_wrapped_ext ext -> + Location.errorf ~loc + "Layout attribute on wrong extension constructor:@;%a" + (Printast.extension_constructor 0) ext + | Unexpected_attribute names -> + Location.errorf ~loc + "Layout extension does not understand these attribute names:@;[%a]" + (Format.pp_print_list + ~pp_sep:(fun ppf () -> Format.fprintf ppf ";@ ") + Format.pp_print_text) names + | Wrong_number_of_layouts (n, layouts) -> + Location.errorf ~loc + "Wrong number of layouts in an layout attribute;@;\ + expecting %i but got this list:@;%a" + n + (Format.pp_print_list + (Format.pp_print_option + ~none:(fun ppf () -> Format.fprintf ppf "None") + (Printast.layout_annotation 0))) + layouts + | No_integer_suffix -> + Location.errorf ~loc + "All unboxed integers require a suffix to determine their size." + | Unexpected_constant c -> + Location.errorf ~loc + "Unexpected unboxed constant:@ %a" + (Printast.constant) c + | Unexpected_wrapped_expr expr -> + Location.errorf ~loc + "Layout attribute on wrong expression:@;%a" + (Printast.expression 0) expr + | Unexpected_wrapped_pat pat -> + Location.errorf ~loc + "Layout attribute on wrong pattern:@;%a" + (Printast.pattern 0) pat + + exception Error of Location.t * error + + let () = + Location.register_error_of_exn + (function + | Error(loc, err) -> Some (report_error ~loc err) + | _ -> None) + + let raise ~loc err = raise (Error(loc, err)) + end + + (*******************************************************) + (* Conversions with a payload *) + + module Encode : sig + val as_payload : layout_annotation -> payload + val option_list_as_payload : layout_annotation option list -> payload + end = struct + let as_expr layout = + (* CR layouts v1.5: revise when moving layout recognition away from parser*) + let layout_string = match layout.txt with + | Any -> "any" + | Value -> "value" + | Void -> "void" + | Immediate64 -> "immediate64" + | Immediate -> "immediate" + | Float64 -> "float64" + in + Ast_helper.Exp.ident + (Location.mkloc (Longident.Lident layout_string) layout.loc) + + let structure_item_of_expr expr = + { pstr_desc = Pstr_eval (expr, []); pstr_loc = Location.none } + + let structure_item_of_none = + { pstr_desc = Pstr_attribute { attr_name = Location.mknoloc "none" + ; attr_payload = PStr [] + ; attr_loc = Location.none } + ; pstr_loc = Location.none } + + let as_payload layout = + let expr = as_expr layout in + PStr [ structure_item_of_expr expr ] + + let option_list_as_payload layouts = + let items = + List.map (function + | None -> structure_item_of_none + | Some layout -> structure_item_of_expr (as_expr layout)) + layouts + in + PStr items + end - let feature : Feature.t = Language_extension Layouts + module Decode : sig + val from_payload : loc:Location.t -> payload -> layout_annotation + val bound_vars_from_vars_and_payload : + loc:Location.t -> string Location.loc list -> payload -> + (string Location.loc * layout_annotation option) list + end = struct + exception Unexpected + + let from_expr = function + | { pexp_desc = Pexp_ident layout_lid; _ } -> + (* CR layouts v1.5: revise when moving layout recognition away from parser*) + let layout = match Longident.last layout_lid.txt with + | "any" -> Any + | "value" -> Value + | "void" -> Void + | "immediate" -> Immediate + | "immediate64" -> Immediate64 + | "float64" -> Float64 + | _ -> raise Unexpected + in + Location.mkloc layout layout_lid.loc + | _ -> raise Unexpected + + let expr_of_structure_item = function + | { pstr_desc = Pstr_eval (expr, _) } -> expr + | _ -> raise Unexpected + + let is_none_structure_item = function + | { pstr_desc = Pstr_attribute { attr_name = { txt = "none" } } } -> true + | _ -> false + + let from_payload ~loc payload = + try + match payload with + | PStr [ item ] -> from_expr (expr_of_structure_item item) + | _ -> raise Unexpected + with + Unexpected -> Desugaring_error.raise ~loc (Not_a_layout payload) + + let option_list_from_payload ~loc payload = + try + match payload with + | PStr items -> + List.map (fun item -> + if is_none_structure_item item + then None + else Some (from_expr (expr_of_structure_item item))) + items + | _ -> raise Unexpected + with + Unexpected -> Desugaring_error.raise ~loc (Not_a_layout payload) + + let bound_vars_from_vars_and_payload ~loc var_names payload = + let layouts = option_list_from_payload ~loc payload in + try + List.combine var_names layouts + with + (* seems silly to check the length in advance when [combine] does *) + Invalid_argument _ -> + Desugaring_error.raise ~loc + (Wrong_number_of_layouts(List.length var_names, layouts)) + end - let fail_malformed ~loc = - Location.raise_errorf ~loc "Malformed unboxed numeric literal" + (*******************************************************) + (* Constants *) + + let constant_of = function + | Float (x, suffix) -> Pconst_float (x, suffix) + | Integer (x, suffix) -> Pconst_integer (x, Some suffix) let of_constant ~loc = function | Pconst_float (x, suffix) -> Float (x, suffix) | Pconst_integer (x, Some suffix) -> Integer (x, suffix) | Pconst_integer (_, None) -> - Location.raise_errorf ~loc - "Malformed unboxed int literal: suffix required" - | _ -> fail_malformed ~loc + Desugaring_error.raise ~loc No_integer_suffix + | const -> Desugaring_error.raise ~loc (Unexpected_constant const) + (*******************************************************) + (* Encoding expressions *) + + let expr_of ~loc ~attrs expr = + let module Ast_of = Ast_of (Expression) (Ext) in + (* See Note [Wrapping with make_entire_jane_syntax] *) + Expression.make_entire_jane_syntax ~loc feature begin fun () -> + match expr with + | Lexp_constant c -> + let constant = constant_of c in + Ast_of.wrap_jane_syntax ["unboxed"] @@ + Ast_helper.Exp.constant ~attrs constant + | Lexp_newtype (name, layout, inner_expr) -> + let payload = Encode.as_payload layout in + Ast_of.wrap_jane_syntax ["newtype"] ~payload @@ + Ast_helper.Exp.newtype ~attrs name inner_expr + end + + (*******************************************************) + (* Desugaring expressions *) - (* Returns remaining unconsumed attributes *) let of_expr expr = let loc = expr.pexp_loc in - match expr.pexp_desc with - | Pexp_constant const -> of_constant ~loc const, expr.pexp_attributes - | _ -> fail_malformed ~loc + let names, payload, attributes = + Of_ast.unwrap_jane_syntax_attributes ~loc expr.pexp_attributes + in + let lexpr = match names with + | [ "unboxed" ] -> + begin match expr.pexp_desc with + | Pexp_constant const -> Lexp_constant (of_constant ~loc const) + | _ -> Desugaring_error.raise ~loc (Unexpected_wrapped_expr expr) + end + | [ "newtype" ] -> + let layout = Decode.from_payload ~loc payload in + begin match expr.pexp_desc with + | Pexp_newtype (name, inner_expr) -> + Lexp_newtype (name, layout, inner_expr) + | _ -> Desugaring_error.raise ~loc (Unexpected_wrapped_expr expr) + end + | _ -> Desugaring_error.raise ~loc (Unexpected_attribute names) + in + lexpr, attributes + + (*******************************************************) + (* Encoding patterns *) + + let pat_of ~loc ~attrs t = + Pattern.make_entire_jane_syntax ~loc feature begin fun () -> + match t with + | Lpat_constant c -> + let constant = constant_of c in + Ast_helper.Pat.constant ~attrs constant + end + + (*******************************************************) + (* Desugaring patterns *) - (* Returns remaining unconsumed attributes *) let of_pat pat = let loc = pat.ppat_loc in - match pat.ppat_desc with - | Ppat_constant const -> of_constant ~loc const, pat.ppat_attributes - | _ -> fail_malformed ~loc + let lpat = match pat.ppat_desc with + | Ppat_constant const -> Lpat_constant (of_constant ~loc const) + | _ -> Desugaring_error.raise ~loc (Unexpected_wrapped_pat pat) + in + lpat, pat.ppat_attributes - let constant_of = function - | Float (x, suffix) -> Pconst_float (x, suffix) - | Integer (x, suffix) -> Pconst_integer (x, Some suffix) + (*******************************************************) + (* Encoding types *) - let expr_of ~loc ~attrs t = - let constant = constant_of t in - Expression.make_entire_jane_syntax ~loc feature (fun () -> - Ast_helper.Exp.constant ~attrs constant) + module Type_of = Ast_of (Core_type) (Ext) - let pat_of ~loc ~attrs t = - let constant = constant_of t in - Pattern.make_entire_jane_syntax ~loc feature (fun () -> - Ast_helper.Pat.constant ~attrs constant) + let type_of ~loc ~attrs typ = + let exception No_wrap_necessary of Parsetree.core_type in + try + (* See Note [Wrapping with make_entire_jane_syntax] *) + Core_type.make_entire_jane_syntax ~loc feature begin fun () -> + match typ with + | Ltyp_var { name; layout } -> + let payload = Encode.as_payload layout in + Type_of.wrap_jane_syntax ["var"] ~payload @@ + begin match name with + | None -> Ast_helper.Typ.any ~loc ~attrs () + | Some name -> Ast_helper.Typ.var ~loc ~attrs name + end + | Ltyp_poly { bound_vars; inner_type } -> + let var_names, layouts = List.split bound_vars in + (* Pass the loc because we don't want a ghost location here *) + let tpoly = Ast_helper.Typ.poly ~loc ~attrs var_names inner_type in + if List.for_all Option.is_none layouts + then raise (No_wrap_necessary tpoly) + else + let payload = Encode.option_list_as_payload layouts in + Type_of.wrap_jane_syntax ["poly"] ~payload tpoly + + | Ltyp_alias { aliased_type; name; layout } -> + let payload = Encode.as_payload layout in + let has_name, inner_typ = match name with + | None -> "anon", { aliased_type with + ptyp_attributes = + aliased_type.ptyp_attributes @ attrs } + | Some name -> "named", Ast_helper.Typ.alias aliased_type name + in + Type_of.wrap_jane_syntax ["alias"; has_name] ~payload inner_typ + end + with + No_wrap_necessary result_type -> result_type + + (*******************************************************) + (* Desugaring types *) + + let of_type typ = + let loc = typ.ptyp_loc in + let names, payload, attributes = + Of_ast.unwrap_jane_syntax_attributes ~loc typ.ptyp_attributes + in + let lty = match names with + | [ "var" ] -> + let layout = Decode.from_payload ~loc payload in + begin match typ.ptyp_desc with + | Ptyp_any -> + Ltyp_var { name = None; layout } + | Ptyp_var name -> + Ltyp_var { name = Some name; layout } + | _ -> Desugaring_error.raise ~loc (Unexpected_wrapped_type typ) + end + + | [ "poly" ] -> + begin match typ.ptyp_desc with + | Ptyp_poly (var_names, inner_type) -> + let bound_vars = + Decode.bound_vars_from_vars_and_payload ~loc var_names payload + in + Ltyp_poly { bound_vars; inner_type } + | _ -> Desugaring_error.raise ~loc (Unexpected_wrapped_type typ) + end + + | [ "alias"; "anon" ] -> + let layout = Decode.from_payload ~loc payload in + Ltyp_alias { aliased_type = { typ with ptyp_attributes = attributes } + ; name = None + ; layout } + + | [ "alias"; "named" ] -> + let layout = Decode.from_payload ~loc payload in + begin match typ.ptyp_desc with + | Ptyp_alias (inner_typ, name) -> + Ltyp_alias { aliased_type = inner_typ + ; name = Some name + ; layout } + + | _ -> Desugaring_error.raise ~loc (Unexpected_wrapped_type typ) + end + + | _ -> + Desugaring_error.raise ~loc (Unexpected_attribute names) + in + lty, attributes + + (*******************************************************) + (* Encoding extension constructor *) + + module Ext_ctor_of = Ast_of (Extension_constructor) (Ext) + + let extension_constructor_of ~loc ~name ~attrs ?info ?docs ext = + (* using optional parameters to hook into existing defaulting + in [Ast_helper.Te.decl], which seems unwise to duplicate *) + let exception No_wrap_necessary of Parsetree.extension_constructor in + try + (* See Note [Wrapping with make_entire_jane_syntax] *) + Extension_constructor.make_entire_jane_syntax ~loc feature + begin fun () -> + match ext with + | Lext_decl (bound_vars, args, res) -> + let vars, layouts = List.split bound_vars in + let ext_ctor = + (* Pass ~loc here, because the constructor declaration is + not a ghost *) + Ast_helper.Te.decl ~loc ~attrs ~vars ~args ?info ?docs ?res name + in + if List.for_all Option.is_none layouts + then raise (No_wrap_necessary ext_ctor) + else + let payload = Encode.option_list_as_payload layouts in + Ext_ctor_of.wrap_jane_syntax ["ext"] ~payload ext_ctor + end + with + No_wrap_necessary ext_ctor -> ext_ctor + + (*******************************************************) + (* Desugaring extension constructor *) + + let of_extension_constructor ext = + let loc = ext.pext_loc in + let names, payload, attributes = + Of_ast.unwrap_jane_syntax_attributes ~loc ext.pext_attributes + in + let lext = match names with + | [ "ext" ] -> + begin match ext.pext_kind with + | Pext_decl (var_names, args, res) -> + let bound_vars = + Decode.bound_vars_from_vars_and_payload ~loc var_names payload + in + Lext_decl (bound_vars, args, res) + | _ -> Desugaring_error.raise ~loc (Unexpected_wrapped_ext ext) + end + + | _ -> + Desugaring_error.raise ~loc (Unexpected_attribute names) + in + lext, attributes + + (*********************************************************) + (* Constructing a [constructor_declaration] with layouts *) + + module Ctor_decl_of = Ast_of (Constructor_declaration) (Ext) + + let constructor_declaration_of ~loc ~attrs ~info ~vars_layouts ~args + ~res name = + let vars, layouts = List.split vars_layouts in + let ctor_decl = + Ast_helper.Type.constructor ~loc ~attrs ~info ~vars ~args ?res name + in + if List.for_all Option.is_none layouts + then ctor_decl + else + let payload = Encode.option_list_as_payload layouts in + Constructor_declaration.make_entire_jane_syntax ~loc feature + begin fun () -> + Ctor_decl_of.wrap_jane_syntax ["vars"] ~payload ctor_decl + end + + let of_constructor_declaration_internal (feat : Feature.t) ctor_decl = + match feat with + | Language_extension Layouts -> + let loc = ctor_decl.pcd_loc in + let names, payload, attributes = + Of_ast.unwrap_jane_syntax_attributes ~loc ctor_decl.pcd_attributes + in + let vars_layouts = match names with + | [ "vars" ] -> + Decode.bound_vars_from_vars_and_payload + ~loc ctor_decl.pcd_vars payload + | _ -> Desugaring_error.raise ~loc (Unexpected_attribute names) + in + Some (vars_layouts, attributes) + | _ -> None + + let of_constructor_declaration = + Constructor_declaration.make_of_ast + ~of_ast_internal:of_constructor_declaration_internal end (******************************************************************************) @@ -424,9 +919,13 @@ module type AST = sig end module Core_type = struct - type t = | + type t = + | Jtyp_layout of Layouts.core_type - let of_ast_internal (feat : Feature.t) _typ = match feat with + let of_ast_internal (feat : Feature.t) typ = match feat with + | Language_extension Layouts -> + let typ, attrs = Layouts.of_type typ in + Some (Jtyp_layout typ, attrs) | _ -> None let of_ast = Core_type.make_of_ast ~of_ast_internal @@ -443,9 +942,9 @@ end module Expression = struct type t = - | Jexp_comprehension of Comprehensions.expression + | Jexp_comprehension of Comprehensions.expression | Jexp_immutable_array of Immutable_arrays.expression - | Jexp_unboxed_constant of Unboxed_constants.expression + | Jexp_layout of Layouts.expression let of_ast_internal (feat : Feature.t) expr = match feat with | Language_extension Comprehensions -> @@ -455,37 +954,37 @@ module Expression = struct let expr, attrs = Immutable_arrays.of_expr expr in Some (Jexp_immutable_array expr, attrs) | Language_extension Layouts -> - let expr, attrs = Unboxed_constants.of_expr expr in - Some (Jexp_unboxed_constant expr, attrs) + let expr, attrs = Layouts.of_expr expr in + Some (Jexp_layout expr, attrs) | _ -> None let of_ast = Expression.make_of_ast ~of_ast_internal let expr_of ~loc ~attrs = function - | Jexp_comprehension x -> Comprehensions.expr_of ~loc ~attrs x - | Jexp_immutable_array x -> Immutable_arrays.expr_of ~loc ~attrs x - | Jexp_unboxed_constant x -> Unboxed_constants.expr_of ~loc ~attrs x + | Jexp_comprehension x -> Comprehensions.expr_of ~loc ~attrs x + | Jexp_immutable_array x -> Immutable_arrays.expr_of ~loc ~attrs x + | Jexp_layout x -> Layouts.expr_of ~loc ~attrs x end module Pattern = struct type t = | Jpat_immutable_array of Immutable_arrays.pattern - | Jpat_unboxed_constant of Unboxed_constants.pattern + | Jpat_layout of Layouts.pattern let of_ast_internal (feat : Feature.t) pat = match feat with | Language_extension Immutable_arrays -> let expr, attrs = Immutable_arrays.of_pat pat in Some (Jpat_immutable_array expr, attrs) | Language_extension Layouts -> - let pat, attrs = Unboxed_constants.of_pat pat in - Some (Jpat_unboxed_constant pat, attrs) + let pat, attrs = Layouts.of_pat pat in + Some (Jpat_layout pat, attrs) | _ -> None let of_ast = Pattern.make_of_ast ~of_ast_internal let pat_of ~loc ~attrs = function | Jpat_immutable_array x -> Immutable_arrays.pat_of ~loc ~attrs x - | Jpat_unboxed_constant x -> Unboxed_constants.pat_of ~loc ~attrs x + | Jpat_layout x -> Layouts.pat_of ~loc ~attrs x end module Module_type = struct @@ -528,10 +1027,19 @@ module Structure_item = struct end module Extension_constructor = struct - type t = | + type t = + | Jext_layout of Layouts.extension_constructor - let of_ast_internal (feat : Feature.t) _ext = match feat with + let of_ast_internal (feat : Feature.t) ext = match feat with + | Language_extension Layouts -> + let ext, attrs = Layouts.of_extension_constructor ext in + Some (Jext_layout ext, attrs) | _ -> None let of_ast = Extension_constructor.make_of_ast ~of_ast_internal + + let extension_constructor_of ~loc ~name ~attrs ?info ?docs = function + | Jext_layout lext -> + Layouts.extension_constructor_of ~loc ~name ~attrs ?info ?docs lext end + diff --git a/parsing/jane_syntax.mli b/parsing/jane_syntax.mli index ceaa6aa9f31..0c62dd67e8f 100644 --- a/parsing/jane_syntax.mli +++ b/parsing/jane_syntax.mli @@ -110,14 +110,62 @@ module Strengthen : sig module_type -> Parsetree.module_type end -(** The ASTs for unboxed literals, like #4.0 *) -module Unboxed_constants : sig - type t = +(** The ASTs for layouts and other unboxed-types features *) +module Layouts : sig + type constant = | Float of string * char option | Integer of string * char - type expression = t - type pattern = t + type nonrec expression = + (* examples: [ #2.0 ] or [ #42L ] *) + (* This is represented as an attribute wrapping a [Pexp_constant] node. *) + | Lexp_constant of constant + + (* [fun (type a : immediate) -> ...] *) + (* This is represented as an attribute wrapping a [Pexp_newtype] node. *) + | Lexp_newtype of + string Location.loc * Asttypes.layout_annotation * Parsetree.expression + + type nonrec pattern = + (* examples: [ #2.0 ] or [ #42L ] *) + (* This is represented as an attribute wrapping a [Ppat_constant] node. *) + | Lpat_constant of constant + + type nonrec core_type = + (* ['a : immediate] or [_ : float64] *) + (* This is represented by an attribute wrapping either a [Ptyp_any] or + a [Ptyp_var] node. *) + | Ltyp_var of { name : string option + ; layout : Asttypes.layout_annotation } + + (* [('a : immediate) 'b 'c ('d : value). 'a -> 'b -> 'c -> 'd] *) + (* This is represented by an attribute wrapping a [Ptyp_poly] node. *) + (* This is used instead of [Ptyp_poly] only where there is at least one + actual layout annotation. If there is a polytype with no layout + annotations at all, [Ptyp_poly] is used instead. This saves space in the + parsed representation and guarantees that we don't accidentally try to + require the layouts extension. *) + | Ltyp_poly of { bound_vars : (string Location.loc * + Asttypes.layout_annotation option) list + ; inner_type : Parsetree.core_type } + + (* [ty as ('a : immediate)] *) + (* This is represented by an attribute wrapping either a [Ptyp_alias] node + or, in the [ty as (_ : layout)] case, the annotated type itself, with no + intervening [type_desc]. *) + | Ltyp_alias of { aliased_type : Parsetree.core_type + ; name : string option + ; layout : Asttypes.layout_annotation } + + type nonrec extension_constructor = + (* [ 'a ('b : immediate) ('c : float64). 'a * 'b * 'c -> exception ] *) + (* This is represented as an attribute on a [Pext_decl] node. *) + (* Like [Ltyp_poly], this is used only when there is at least one layout + annotation. Otherwise, we will have a [Pext_decl]. *) + | Lext_decl of (string Location.loc * + Asttypes.layout_annotation option) list * + Parsetree.constructor_arguments * + Parsetree.core_type option val expr_of : loc:Location.t -> attrs:Parsetree.attributes -> @@ -126,6 +174,37 @@ module Unboxed_constants : sig val pat_of : loc:Location.t -> attrs:Parsetree.attributes -> pattern -> Parsetree.pattern + + val type_of : + loc:Location.t -> attrs:Parsetree.attributes -> + core_type -> Parsetree.core_type + + val extension_constructor_of : + loc:Location.t -> + name:string Location.loc -> + attrs:Parsetree.attributes -> + ?info:Docstrings.info -> + ?docs:Docstrings.docs -> + extension_constructor -> + Parsetree.extension_constructor + + (** See also [Ast_helper.Type.constructor], which is a direct inspiration for + the interface here. It's meant to be able to be a drop-in replacement. *) + val constructor_declaration_of : + loc:Location.t -> attrs:Parsetree.attributes -> info:Docstrings.info -> + vars_layouts:(string Location.loc * + Asttypes.layout_annotation option) list -> + args:Parsetree.constructor_arguments -> res:Parsetree.core_type option -> + string Location.loc -> Parsetree.constructor_declaration + + (** Extract the layouts from a [constructor_declaration]; returns leftover + attributes along with the annotated variables. Unlike other pieces + of jane-syntax, users of this function will still have to process + the remaining pieces of the original [constructor_declaration]. *) + val of_constructor_declaration : + Parsetree.constructor_declaration -> + ((string Location.loc * Asttypes.layout_annotation option) list * + Parsetree.attributes) option end (******************************************) @@ -206,7 +285,8 @@ end (** Novel syntax in types *) module Core_type : sig - type t = | + type t = + | Jtyp_layout of Layouts.core_type include AST with type t := t * Parsetree.attributes @@ -226,9 +306,9 @@ end (** Novel syntax in expressions *) module Expression : sig type t = - | Jexp_comprehension of Comprehensions.expression - | Jexp_immutable_array of Immutable_arrays.expression - | Jexp_unboxed_constant of Unboxed_constants.expression + | Jexp_comprehension of Comprehensions.expression + | Jexp_immutable_array of Immutable_arrays.expression + | Jexp_layout of Layouts.expression include AST with type t := t * Parsetree.attributes @@ -242,7 +322,7 @@ end module Pattern : sig type t = | Jpat_immutable_array of Immutable_arrays.pattern - | Jpat_unboxed_constant of Unboxed_constants.pattern + | Jpat_layout of Layouts.pattern include AST with type t := t * Parsetree.attributes @@ -280,8 +360,14 @@ end (** Novel syntax in extension constructors *) module Extension_constructor : sig - type t = | + type t = + | Jext_layout of Layouts.extension_constructor include AST with type t := t * Parsetree.attributes and type ast := Parsetree.extension_constructor + + val extension_constructor_of : + loc:Location.t -> name:string Location.loc -> attrs:Parsetree.attributes -> + ?info:Docstrings.info -> ?docs:Docstrings.docs -> t -> + Parsetree.extension_constructor end diff --git a/parsing/jane_syntax_parsing.ml b/parsing/jane_syntax_parsing.ml index 6e7d5a65135..545d0025675 100644 --- a/parsing/jane_syntax_parsing.ml +++ b/parsing/jane_syntax_parsing.ml @@ -149,7 +149,7 @@ end = struct end (** Was this embedded as an [[%extension_node]] or an [[@attribute]]? Not - exported. *) + exported. Used only for error messages. *) module Embedding_syntax = struct type t = | Extension_node @@ -335,15 +335,11 @@ end (******************************************************************************) module Error = struct - (** Someone used [[%jane.*.FEATNAME]]/[[@jane.*.FEATNAME]] wrong *) - type malformed_embedding = - | Has_payload of payload - (** An error triggered when desugaring a language extension from an OCaml AST; should always be fatal *) type error = - | Malformed_embedding of - Embedding_syntax.t * Embedded_name.t * malformed_embedding + | Introduction_has_payload of + Embedding_syntax.t * Embedded_name.t * payload | Unknown_extension of Embedding_syntax.t * Erasability.t * string | Disabled_extension : { ext : _ Language_extension.t @@ -374,16 +370,13 @@ let assert_extension_enabled ;; let report_error ~loc = function - | Malformed_embedding(what, name, malformed) -> begin - match malformed with - | Has_payload _payload -> - Location.errorf + | Introduction_has_payload (what, name, _payload) -> + Location.errorf ~loc "@[Modular syntax %s are not allowed to have a payload,@ \ but %a does@]" (Embedding_syntax.name_plural what) Embedded_name.pp_quoted_name name - end | Unknown_extension (what, erasability, name) -> let embedded_name = { Embedded_name.erasability; components = [name] } in Location.errorf @@ -472,37 +465,28 @@ module type AST_internal = sig val embedding_syntax : Embedding_syntax.t - val make_jane_syntax : Embedded_name.t -> ast -> ast + val make_jane_syntax : + Embedded_name.t -> ?payload:payload -> ast -> ast (** Given an AST node, check if it's a representation of a term from one of - our novel syntactic features; if it is, split it back up into its name and - the body. If the embedded term is malformed in any way, raises an error; - if the input isn't an embedding of one of our novel syntactic features, - returns [None]. Partial inverse of [make_jane_syntax]. *) - val match_jane_syntax : ast -> (Embedded_name.t * ast) option + our novel syntactic features; if it is, split it back up into its name, + the location of the extension/attribute, any payload, and the body. If + the embedded term is malformed in any way, raises an error; if the input + isn't an embedding of one of our novel syntactic features, returns [None]. + Partial inverse of [make_jane_syntax]. *) + val match_jane_syntax : + ast -> (Embedded_name.t * Location.t * Parsetree.payload * ast) option end (* Parses the embedded name from an embedding, raising if - the embedding is malformed. Malformed means either: - - 1. The embedding has a payload; attribute payloads must - be empty, so other ppxes can traverse "into" them. - - 2. NAME is missing; e.g. the attribute is just [[@jane]]. + the embedding is malformed. Malformed means that + NAME is missing; e.g. the attribute is just [[@jane]]. *) -let parse_embedding_exn ~loc ~payload ~name ~embedding_syntax = +let parse_embedding_exn ~loc ~name ~embedding_syntax = let raise_error err = raise (Error (loc, err)) in match Embedded_name.of_string name with - | Some (Ok name) -> begin - let raise_malformed err = - raise_error (Malformed_embedding (embedding_syntax, name, err)) - in - match payload with - | PStr [] -> Some name - | _ -> raise_malformed (Has_payload payload) - end - | Some (Error err) -> - raise_error (Misnamed_embedding (err, name, embedding_syntax)) + | Some (Ok name) -> Some name + | Some (Error err) -> raise_error (Misnamed_embedding (err, name, embedding_syntax)) | None -> None let find_and_remove_jane_syntax_attribute = @@ -517,17 +501,26 @@ let find_and_remove_jane_syntax_attribute = match parse_embedding_exn ~loc:attr_loc - ~payload:attr_payload ~name ~embedding_syntax:Attribute with | None -> loop rest ~rev_prefix:(attr :: rev_prefix) - | Some name -> Some (name, List.rev_append rev_prefix rest) + | Some name -> Some (name, attr_loc, attr_payload, + List.rev_append rev_prefix rest) end in fun attributes -> loop attributes ~rev_prefix:[] ;; +let make_jane_syntax_attribute name payload = + { attr_name = + { txt = Embedded_name.to_string name + ; loc = !Ast_helper.default_loc + } + ; attr_loc = !Ast_helper.default_loc + ; attr_payload = payload + } + (** For a syntactic category, produce translations into and out of our novel syntax, using parsetree attributes as the encoding. *) @@ -543,22 +536,15 @@ module Make_with_attribute let embedding_syntax = Embedding_syntax.Attribute - let make_jane_syntax name ast = - let attr = - { attr_name = - { txt = Embedded_name.to_string name - ; loc = !Ast_helper.default_loc - } - ; attr_loc = !Ast_helper.default_loc - ; attr_payload = PStr [] - } - in + let make_jane_syntax name ?(payload = PStr []) ast = + let attr = make_jane_syntax_attribute name payload in with_attributes ast (attr :: attributes ast) let match_jane_syntax ast = match find_and_remove_jane_syntax_attribute (attributes ast) with | None -> None - | Some (name, attrs) -> Some (name, with_attributes ast attrs) + | Some (name, loc, payload, attrs) -> + Some (name, loc, payload, with_attributes ast attrs) end (** For a syntactic category, produce translations into and out of @@ -594,14 +580,14 @@ module Make_with_extension_node let embedding_syntax = Embedding_syntax.Extension_node - let make_jane_syntax name ast = + let make_jane_syntax name ?(payload = PStr []) ast = make_extension_use ast ~extension_node: (make_extension_node ({ txt = Embedded_name.to_string name ; loc = !Ast_helper.default_loc }, - PStr [])) + payload)) let match_jane_syntax ast = match match_extension_use ast with @@ -610,16 +596,27 @@ module Make_with_extension_node match parse_embedding_exn ~loc:ext_loc - ~payload:ext_payload ~name ~embedding_syntax with | None -> None - | Some name -> Some (name, body) + | Some name -> Some (name, ext_loc, ext_payload, body) end -(** The AST parameters for every subset of types; embedded as - [[[%jane.FEATNAME] * BODY]]. *) +(********************************************************) +(* Modules representing individual syntactic categories *) + +(* Note [Hiding internal details] + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + Each such module is first written with a '0' suffix. These '0' + modules are used internally as arguments to [Make_ast] to produce + non-'0' modules which are exported. This approach allows us to + hide details of these modules necessary for [Make_ast] but + unnecessary for external uses. +*) + +(** The AST parameters for every subset of types; embedded with attributes. *) module Type_AST_syntactic_category = struct type ast = core_type @@ -632,7 +629,7 @@ module Type_AST_syntactic_category = struct let with_attributes typ ptyp_attributes = { typ with ptyp_attributes } end -(** Types; embedded as [[[%jane.FEATNAME] * BODY]]. *) +(** Types; embedded with attributes. *) module Core_type0 = Make_with_attribute (struct include Type_AST_syntactic_category @@ -764,25 +761,41 @@ module Structure_item0 = Make_with_extension_node (struct | _ -> None end) + +(** Constructor declarations; embedded with attributes. *) +module Constructor_declaration0 = Make_with_attribute(struct + type ast = Parsetree.constructor_declaration + + let plural = "constructor declarations" + let location pcd = pcd.pcd_loc + let with_location pcd loc = { pcd with pcd_loc = loc } + + let attributes pcd = pcd.pcd_attributes + let with_attributes pcd pcd_attributes = { pcd with pcd_attributes } +end) + (******************************************************************************) (* Main exports *) module type AST = sig type ast - val make_jane_syntax : Feature.t -> string list -> ast -> ast + val make_jane_syntax : + Feature.t -> string list -> ?payload:payload -> ast -> ast val make_entire_jane_syntax : loc:Location.t -> Feature.t -> (unit -> ast) -> ast val make_of_ast : of_ast_internal:(Feature.t -> ast -> 'a option) -> (ast -> 'a option) end +(* See Note [Hiding internal details] *) module Make_ast (AST : AST_internal) : AST with type ast = AST.ast = struct include AST - let make_jane_syntax feature trailing_components ast = + let make_jane_syntax feature trailing_components ?payload ast = AST.make_jane_syntax (Embedded_name.of_feature feature trailing_components) + ?payload ast let make_entire_jane_syntax ~loc feature ast = @@ -795,30 +808,42 @@ module Make_ast (AST : AST_internal) : AST with type ast = AST.ast = struct let make_of_ast ~of_ast_internal = let of_ast ast = let loc = AST.location ast in - let raise_error err = raise (Error (loc, err)) in + let raise_error loc err = raise (Error (loc, err)) in match AST.match_jane_syntax ast with - | Some ({ erasability; components = [name] }, ast) -> begin + | Some ({ erasability; components = [name] } as embedded_name, syntax_loc, payload, ast) -> begin + begin match payload with + | PStr [] -> () + | _ -> raise_error syntax_loc + (Introduction_has_payload + (AST.embedding_syntax, embedded_name, payload)) + end; match Feature.of_component name with | Ok feat -> begin match of_ast_internal feat ast with | Some ext_ast -> Some ext_ast | None -> - raise_error (Wrong_syntactic_category(feat, AST.plural)) + raise_error loc (Wrong_syntactic_category(feat, AST.plural)) end - | Error err -> raise_error begin match err with + | Error err -> raise_error loc begin match err with | Disabled_extension ext -> Disabled_extension { ext; maturity = None } | Unknown_extension name -> Unknown_extension (AST.embedding_syntax, erasability, name) end end - | Some ({ components = _ :: _ :: _; _ } as name, _) -> - raise_error (Bad_introduction(AST.embedding_syntax, name)) + | Some ({ components = _ :: _ :: _; _ } as name, _, _, _) -> + raise_error loc (Bad_introduction(AST.embedding_syntax, name)) | None -> None in of_ast end +let make_jane_syntax_attribute feature trailing_components payload = + make_jane_syntax_attribute + (Embedded_name.of_feature feature trailing_components) + payload + +(* See Note [Hiding internal details] *) module Expression = Make_ast(Expression0) module Pattern = Make_ast(Pattern0) module Module_type = Make_ast(Module_type0) @@ -827,3 +852,4 @@ module Structure_item = Make_ast(Structure_item0) module Core_type = Make_ast(Core_type0) module Constructor_argument = Make_ast(Constructor_argument0) module Extension_constructor = Make_ast(Extension_constructor0) +module Constructor_declaration = Make_ast(Constructor_declaration0) diff --git a/parsing/jane_syntax_parsing.mli b/parsing/jane_syntax_parsing.mli index 650f4a7e0fe..1f0aee570ae 100644 --- a/parsing/jane_syntax_parsing.mli +++ b/parsing/jane_syntax_parsing.mli @@ -141,7 +141,6 @@ end corresponding module of this module type. We're adding these lazily as we need them. When you add another one, make sure also to add special handling in [Ast_iterator] and [Ast_mapper]. - *) module type AST = sig (** The AST type (e.g., [Parsetree.expression]) *) @@ -154,6 +153,7 @@ module type AST = sig val make_jane_syntax : Feature.t -> string list + -> ?payload:Parsetree.payload -> ast -> ast @@ -217,6 +217,9 @@ module Constructor_argument : module Extension_constructor : AST with type ast = Parsetree.extension_constructor +module Constructor_declaration : + AST with type ast = Parsetree.constructor_declaration + (** Require that an extension is enabled for at least the provided level, or else throw an exception (of an abstract type) at the provided location saying otherwise. This is intended to be used in [jane_syntax.ml] when a @@ -238,15 +241,21 @@ val assert_extension_enabled : *) (** Extracts the first attribute (in list order) that was inserted by the Jane Syntax framework, and returns the rest of the attributes in the - same relative order as was input. + same relative order as was input, along with the location of the removed + attribute and its payload. This can be used by [Jane_syntax] to peel off individual attributes in order to process a Jane Syntax element that consists of multiple nested ASTs. *) -val find_and_remove_jane_syntax_attribute - : Parsetree.attributes - -> (Embedded_name.t * Parsetree.attributes) option +val find_and_remove_jane_syntax_attribute : + Parsetree.attributes -> + (Embedded_name.t * Location.t * + Parsetree.payload * Parsetree.attributes) option + +(** Creates an attribute used for encoding syntax from the given [Feature.t] *) +val make_jane_syntax_attribute : + Feature.t -> string list -> Parsetree.payload -> Parsetree.attribute (** Errors around the representation of our extended ASTs. These should mostly just be fatal, but they're needed for one test case diff --git a/parsing/location.ml b/parsing/location.ml index 5d77c90d4e4..029463821b4 100644 --- a/parsing/location.ml +++ b/parsing/location.ml @@ -83,6 +83,8 @@ type 'a loc = { let mkloc txt loc = { txt ; loc } let mknoloc txt = mkloc txt none let get_txt { txt } = txt +let map f { txt; loc} = {txt = f txt; loc} +let compare_txt f { txt=t1 } { txt=t2 } = f t1 t2 (******************************************************************************) (* Input info *) diff --git a/parsing/location.mli b/parsing/location.mli index 5bda0f5361a..9b04565325a 100644 --- a/parsing/location.mli +++ b/parsing/location.mli @@ -91,6 +91,8 @@ type 'a loc = { val mknoloc : 'a -> 'a loc val mkloc : 'a -> t -> 'a loc val get_txt : 'a loc -> 'a +val map : ('a -> 'b) -> 'a loc -> 'b loc +val compare_txt : ('a -> 'b -> 'c) -> 'a loc -> 'b loc -> 'c (** {1 Input info} *) diff --git a/parsing/parse.ml b/parsing/parse.ml index cf703060f4a..2ba6a6f5b64 100644 --- a/parsing/parse.ml +++ b/parsing/parse.ml @@ -104,46 +104,3 @@ let constr_ident= wrap Parser.parse_constr_longident let extended_module_path = wrap Parser.parse_mod_ext_longident let simple_module_path = wrap Parser.parse_mod_longident let type_ident = wrap Parser.parse_mty_longident - -(* Error reporting for Syntaxerr *) -(* The code has been moved here so that one can reuse Pprintast.tyvar *) - -let prepare_error err = - let open Syntaxerr in - match err with - | Unclosed(opening_loc, opening, closing_loc, closing) -> - Location.errorf - ~loc:closing_loc - ~sub:[ - Location.msg ~loc:opening_loc - "This '%s' might be unmatched" opening - ] - "Syntax error: '%s' expected" closing - - | Expecting (loc, nonterm) -> - Location.errorf ~loc "Syntax error: %s expected." nonterm - | Not_expecting (loc, nonterm) -> - Location.errorf ~loc "Syntax error: %s not expected." nonterm - | Applicative_path loc -> - Location.errorf ~loc - "Syntax error: applicative paths of the form F(X).t \ - are not supported when the option -no-app-func is set." - | Variable_in_scope (loc, var) -> - Location.errorf ~loc - "In this scoped type, variable %a \ - is reserved for the local type %s." - Pprintast.tyvar var var - | Other loc -> - Location.errorf ~loc "Syntax error" - | Ill_formed_ast (loc, s) -> - Location.errorf ~loc - "broken invariant in parsetree: %s" s - | Invalid_package_type (loc, s) -> - Location.errorf ~loc "invalid package type: %s" s - -let () = - Location.register_error_of_exn - (function - | Syntaxerr.Error err -> Some (prepare_error err) - | _ -> None - ) diff --git a/parsing/parser.mly b/parsing/parser.mly index d62f19d4b93..8f090cbe7b4 100644 --- a/parsing/parser.mly +++ b/parsing/parser.mly @@ -47,7 +47,7 @@ let ghost_loc (startpos, endpos) = { } let mktyp ~loc ?attrs d = Typ.mk ~loc:(make_loc loc) ?attrs d -let mkpat ~loc d = Pat.mk ~loc:(make_loc loc) d +let mkpat ~loc ?attrs d = Pat.mk ~loc:(make_loc loc) ?attrs d let mkexp ~loc ?attrs d = Exp.mk ~loc:(make_loc loc) ?attrs d let mkmty ~loc ?attrs d = Mty.mk ~loc:(make_loc loc) ?attrs d let mksig ~loc d = Sig.mk ~loc:(make_loc loc) d @@ -114,7 +114,7 @@ let mkpatvar ~loc name = (* See commentary about ghost locations at the declaration of Location.t *) let ghexp ~loc d = Exp.mk ~loc:(ghost_loc loc) d let ghpat ~loc d = Pat.mk ~loc:(ghost_loc loc) d -let ghtyp ~loc d = Typ.mk ~loc:(ghost_loc loc) d +let ghtyp ~loc ?attrs d = Typ.mk ~loc:(ghost_loc loc) ?attrs d let ghloc ~loc d = { txt = d; loc = ghost_loc loc } let ghstr ~loc d = Str.mk ~loc:(ghost_loc loc) d let ghsig ~loc d = Sig.mk ~loc:(ghost_loc loc) d @@ -353,8 +353,10 @@ let ppat_iarray loc elts = ~loc:(make_loc loc) ~attrs:[] (Iapat_immutable_array elts) -let expecting loc nonterm = - raise Syntaxerr.(Error(Expecting(make_loc loc, nonterm))) +let expecting_loc (loc : Location.t) (nonterm : string) = + raise Syntaxerr.(Error(Expecting(loc, nonterm))) +let expecting (loc : Lexing.position * Lexing.position) nonterm = + expecting_loc (make_loc loc) nonterm (* Using the function [not_expecting] in a semantic action means that this syntactic form is recognized by the parser but is in fact incorrect. This @@ -505,23 +507,19 @@ let lapply ~loc p1 p2 = else raise (Syntaxerr.Error( Syntaxerr.Applicative_path (make_loc loc))) -(* [loc_map] could be [Location.map]. *) -let loc_map (f : 'a -> 'b) (x : 'a Location.loc) : 'b Location.loc = - { x with txt = f x.txt } - let make_ghost x = if x.loc.loc_ghost then x (* Save an allocation *) else { x with loc = Location.ghostify x.loc } let loc_last (id : Longident.t Location.loc) : string Location.loc = - loc_map Longident.last id + Location.map Longident.last id let loc_lident (id : string Location.loc) : Longident.t Location.loc = - loc_map (fun x -> Lident x) id + Location.map (fun x -> Lident x) id let exp_of_longident lid = - let lid = loc_map (fun id -> Lident (Longident.last id)) lid in + let lid = Location.map (fun id -> Lident (Longident.last id)) lid in Exp.mk ~loc:lid.loc (Pexp_ident lid) let exp_of_label lbl = @@ -531,16 +529,26 @@ let pat_of_label lbl = Pat.mk ~loc:lbl.loc (Ppat_var (loc_last lbl)) let mk_newtypes ~loc newtypes exp = - let mkexp = mkexp ~loc in - List.fold_right (fun newtype exp -> mkexp (Pexp_newtype (newtype, exp))) - newtypes exp + let mk_one (name, layout) exp = + match layout with + | None -> mkexp ~loc (Pexp_newtype (name, exp)) + | Some layout -> + Jane_syntax.Layouts.expr_of ~loc:(make_loc loc) ~attrs:[] + (Lexp_newtype (name, layout, exp)) + in + List.fold_right mk_one newtypes exp let wrap_type_annotation ~loc newtypes core_type body = - let mkexp, ghtyp = mkexp ~loc, ghtyp ~loc in let mk_newtypes = mk_newtypes ~loc in - let exp = mkexp(Pexp_constraint(body,core_type)) in + let exp = mkexp ~loc (Pexp_constraint(body,core_type)) in let exp = mk_newtypes newtypes exp in - (exp, ghtyp(Ptyp_poly(newtypes, Typ.varify_constructors newtypes core_type))) + let inner_type = Typ.varify_constructors (List.map fst newtypes) core_type in + let ltyp = + Jane_syntax.Layouts.Ltyp_poly { bound_vars = newtypes; inner_type } + in + (exp, + Jane_syntax.Layouts.type_of + ~loc:(Location.ghostify (make_loc loc)) ~attrs:[] ltyp) let wrap_exp_attrs ~loc body (ext, attrs) = let ghexp = ghexp ~loc in @@ -550,8 +558,8 @@ let wrap_exp_attrs ~loc body (ext, attrs) = | None -> body | Some id -> ghexp(Pexp_extension (id, PStr [mkstrexp body []])) -let mkexp_attrs ~loc d attrs = - wrap_exp_attrs ~loc (mkexp ~loc d) attrs +let mkexp_attrs ~loc d ext_attrs = + wrap_exp_attrs ~loc (mkexp ~loc d) ext_attrs let wrap_typ_attrs ~loc typ (ext, attrs) = (* todo: keep exact location for the entire attribute *) @@ -754,14 +762,15 @@ let mk_directive ~loc name arg = pdir_loc = make_loc loc; } -let check_layout loc id = - begin - match id with - | ("any" | "value" | "void" | "immediate64" | "immediate" | "float64") -> () - | _ -> expecting loc "layout" - end; - let loc = make_loc loc in - Attr.mk ~loc (mkloc id loc) (PStr []) +let check_layout ~loc id : const_layout = + match id with + | "any" -> Any + | "value" -> Value + | "void" -> Void + | "immediate64" -> Immediate64 + | "immediate" -> Immediate + | "float64" -> Float64 + | _ -> expecting_loc loc "layout" (* Unboxed literals *) @@ -773,18 +782,18 @@ let unboxed_literals_extension = Language_extension.Layouts module Constant : sig type t = private | Value of constant - | Unboxed of Jane_syntax.Unboxed_constants.t + | Unboxed of Jane_syntax.Layouts.constant type loc := Lexing.position * Lexing.position val value : Parsetree.constant -> t - val unboxed : loc:loc -> Jane_syntax.Unboxed_constants.t -> t + val unboxed : loc:loc -> Jane_syntax.Layouts.constant -> t val to_expression : loc:loc -> t -> expression val to_pattern : loc:loc -> t -> pattern end = struct type t = | Value of constant - | Unboxed of Jane_syntax.Unboxed_constants.t + | Unboxed of Jane_syntax.Layouts.constant let value x = Value x @@ -800,15 +809,15 @@ end = struct | Value const_value -> mkexp ~loc (Pexp_constant const_value) | Unboxed const_unboxed -> - Jane_syntax.Unboxed_constants.expr_of - ~loc:(make_loc loc) ~attrs:[] const_unboxed + Jane_syntax.Layouts.expr_of + ~loc:(make_loc loc) ~attrs:[] (Lexp_constant const_unboxed) let to_pattern ~loc : t -> pattern = function | Value const_value -> mkpat ~loc (Ppat_constant const_value) | Unboxed const_unboxed -> - Jane_syntax.Unboxed_constants.pat_of - ~loc:(make_loc loc) ~attrs:[] const_unboxed + Jane_syntax.Layouts.pat_of + ~loc:(make_loc loc) ~attrs:[] (Lpat_constant const_unboxed) end type sign = Positive | Negative @@ -1174,6 +1183,9 @@ The precedences must be listed from low to high. %inline mk_directive_arg(symb): symb { mk_directive_arg ~loc:$sloc $1 } +%inline mktyp_jane_syntax_ltyp(symb): symb + { Jane_syntax.Layouts.type_of ~loc:(make_loc $sloc) ~attrs:[] $1 } + /* Generic definitions */ (* [iloption(X)] recognizes either nothing or [X]. Assuming [X] produces @@ -2240,7 +2252,7 @@ method_: let loc = ($startpos($6), $endpos($8)) in ghexp ~loc (Pexp_poly($8, Some $6)) in ($4, $3, Cfk_concrete ($1, poly_exp)), $2 } - | override_flag attributes private_flag mkrhs(label) COLON TYPE lident_list + | override_flag attributes private_flag mkrhs(label) COLON TYPE newtypes DOT core_type EQUAL seq_expr { let poly_exp_loc = ($startpos($7), $endpos($11)) in let poly_exp = @@ -2491,7 +2503,10 @@ label_let_pattern: lab, mkpat ~loc:$sloc (Ppat_constraint (pat, cty)) } | x = label_var COLON - cty = mktyp (vars = typevar_list DOT ty = core_type { Ptyp_poly(vars, ty) }) + cty = mktyp_jane_syntax_ltyp (bound_vars = typevar_list + DOT + inner_type = core_type + { Jane_syntax.Layouts.Ltyp_poly { bound_vars; inner_type } }) { let lab, pat = x in lab, mkpat ~loc:$sloc (Ppat_constraint (pat, cty)) } @@ -2513,8 +2528,10 @@ let_pattern: mkpat( pat = pattern COLON - cty = mktyp(vars = typevar_list DOT ty = core_type - { Ptyp_poly(vars, ty) }) + cty = mktyp_jane_syntax_ltyp(bound_vars = typevar_list + DOT + inner_type = core_type + { Jane_syntax.Layouts.Ltyp_poly { bound_vars; inner_type } }) { Ppat_constraint(pat, cty) }) { $1 } ; @@ -2565,6 +2582,12 @@ expr: { mk_indexop_expr builtin_indexing_operators ~loc:$sloc $1 } | indexop_expr(qualified_dotop, expr_semi_list, LESSMINUS v=expr {Some v}) { mk_indexop_expr user_indexing_operators ~loc:$sloc $1 } + | FUN ext_attributes LPAREN TYPE newtypes RPAREN fun_def + { let loc = $sloc in + wrap_exp_attrs ~loc (mk_newtypes ~loc $5 $7) $2 } + | FUN ext_attributes LPAREN TYPE mkrhs(LIDENT) COLON layout_annotation RPAREN fun_def + { let loc = $sloc in + wrap_exp_attrs ~loc (mk_newtypes ~loc:$sloc [$5, Some $7] $9) $2 } | expr attribute { Exp.attr $1 $2 } /* BEGIN AVOID */ @@ -2590,8 +2613,6 @@ expr: | FUN ext_attributes labeled_simple_pattern fun_def { let (l,o,p) = $3 in Pexp_fun(l, o, p, $4), $2 } - | FUN ext_attributes LPAREN TYPE lident_list RPAREN fun_def - { (mk_newtypes ~loc:$sloc $5 $7).pexp_desc, $2 } | MATCH ext_attributes seq_expr WITH match_cases { Pexp_match($3, $5), $2 } | TRY ext_attributes seq_expr WITH match_cases @@ -2902,15 +2923,21 @@ let_binding_body_no_punning: (pat, exp) } | optional_local let_ident COLON poly(core_type) EQUAL seq_expr { let patloc = ($startpos($2), $endpos($4)) in + let bound_vars, inner_type = $4 in + let ltyp = Jane_syntax.Layouts.Ltyp_poly { bound_vars; inner_type } in + let typ_loc = Location.ghostify (make_loc $loc($4)) in + let typ = + Jane_syntax.Layouts.type_of ~loc:typ_loc ~attrs:[] ltyp + in let pat = mkpat_local_if $1 (ghpat ~loc:patloc - (Ppat_constraint($2, ghtyp ~loc:($loc($4)) $4))) + (Ppat_constraint($2, typ))) $loc($1) in let exp = mkexp_local_if $1 ~loc:$sloc ~kwd_loc:($loc($1)) $6 in (pat, exp) } - | let_ident COLON TYPE lident_list DOT core_type EQUAL seq_expr + | let_ident COLON TYPE newtypes DOT core_type EQUAL seq_expr { let exp, poly = wrap_type_annotation ~loc:$sloc $4 $6 $8 in let loc = ($startpos($1), $endpos($6)) in @@ -2997,8 +3024,10 @@ strict_binding: { $2 } | labeled_simple_pattern fun_binding { let (l, o, p) = $1 in ghexp ~loc:$sloc (Pexp_fun(l, o, p, $2)) } - | LPAREN TYPE lident_list RPAREN fun_binding + | LPAREN TYPE newtypes RPAREN fun_binding { mk_newtypes ~loc:$sloc $3 $5 } + | LPAREN TYPE mkrhs(LIDENT) COLON layout_annotation RPAREN fun_binding + { mk_newtypes ~loc:$sloc [$3, Some $5] $7 } ; local_fun_binding: local_strict_binding @@ -3011,8 +3040,10 @@ local_strict_binding: { $2 } | labeled_simple_pattern local_fun_binding { let (l, o, p) = $1 in ghexp ~loc:$sloc (Pexp_fun(l, o, p, $2)) } - | LPAREN TYPE lident_list RPAREN local_fun_binding + | LPAREN TYPE newtypes RPAREN local_fun_binding { mk_newtypes ~loc:$sloc $3 $5 } + | LPAREN TYPE mkrhs(LIDENT) COLON layout_annotation RPAREN fun_binding + { mk_newtypes ~loc:$sloc [$3, Some $5] $7 } ; %inline match_cases: xs = preceded_or_separated_nonempty_llist(BAR, match_case) @@ -3038,8 +3069,10 @@ fun_def: let (l,o,p) = $1 in ghexp ~loc:$sloc (Pexp_fun(l, o, p, $2)) } - | LPAREN TYPE lident_list RPAREN fun_def + | LPAREN TYPE newtypes RPAREN fun_def { mk_newtypes ~loc:$sloc $3 $5 } + | LPAREN TYPE mkrhs(LIDENT) COLON layout_annotation RPAREN fun_def + { mk_newtypes ~loc:$sloc [$3, Some $5] $7 } ; %inline expr_comma_list: es = separated_nontrivial_llist(COMMA, expr) @@ -3093,6 +3126,17 @@ type_constraint: | COLONGREATER error { syntax_error() } ; +(* the thing between the [type] and the [.] in + [let : type <>. 'a -> 'a = ...] *) +newtypes: (* : (string with_loc * layout_annotation option) list *) + newtype+ + { $1 } + +newtype: (* : string with_loc * layout_annotation option *) + mkrhs(LIDENT) { $1, None } + | LPAREN name=mkrhs(LIDENT) COLON layout=layout_annotation RPAREN + { name, Some layout } + /* Patterns */ (* Whereas [pattern] is an arbitrary pattern, [pattern_no_exn] is a pattern @@ -3364,6 +3408,7 @@ generic_type_declaration(flag, kind): flag = flag params = type_parameters id = mkrhs(LIDENT) + layout = layout_attr? kind_priv_manifest = kind cstrs = constraints attrs2 = post_item_attributes @@ -3373,7 +3418,7 @@ generic_type_declaration(flag, kind): let attrs = attrs1 @ attrs2 in let loc = make_loc $sloc in (flag, ext), - Type.mk id ~params ~cstrs ~kind ~priv ?manifest ~attrs ~loc ~docs + Type.mk id ~params ?layout ~cstrs ~kind ~priv ?manifest ~attrs ~loc ~docs } ; %inline generic_and_type_declaration(kind): @@ -3381,6 +3426,7 @@ generic_type_declaration(flag, kind): attrs1 = attributes params = type_parameters id = mkrhs(LIDENT) + layout = layout_attr? kind_priv_manifest = kind cstrs = constraints attrs2 = post_item_attributes @@ -3390,7 +3436,7 @@ generic_type_declaration(flag, kind): let attrs = attrs1 @ attrs2 in let loc = make_loc $sloc in let text = symbol_text $symbolstartpos in - Type.mk id ~params ~cstrs ~kind ~priv ?manifest ~attrs ~loc ~docs ~text + Type.mk id ~params ?layout ~cstrs ~kind ~priv ?manifest ~attrs ~loc ~docs ~text } ; %inline constraints: @@ -3443,14 +3489,37 @@ type_parameters: { ps } ; -layout: - ident { check_layout $loc($1) $1 } +layout_annotation: (* : layout_annotation *) + ident { let loc = make_loc $sloc in + mkloc (check_layout ~loc $1) loc } +; + +layout_string: (* : string with_loc *) + (* the [check_layout] just ensures this is the name of a layout *) + ident { let loc = make_loc $sloc in + ignore (check_layout ~loc $1 : const_layout); + mkloc $1 loc } +; + +layout_attr: + COLON + layout=layout_string + { Attr.mk ~loc:layout.loc layout (PStr []) } +; + +%inline type_param_with_layout: + name=tyvar_name_or_underscore + attrs=attributes + COLON + layout=layout_annotation + { Jane_syntax.Layouts.type_of ~loc:(make_loc $sloc) ~attrs + (Ltyp_var { name; layout }) } ; parenthesized_type_parameter: type_parameter { $1 } - | type_variance type_variable COLON layout - { {$2 with ptyp_attributes = [$4]}, $1 } + | type_variance type_param_with_layout + { $2, $1 } ; type_parameter: @@ -3458,7 +3527,7 @@ type_parameter: { {$2 with ptyp_attributes = $3}, $1 } ; -type_variable: +%inline type_variable: mktyp( QUOTE tyvar = ident { Ptyp_var tyvar } @@ -3467,6 +3536,13 @@ type_variable: ) { $1 } ; +%inline tyvar_name_or_underscore: + QUOTE ident + { Some $2 } + | UNDERSCORE + { None } +; + type_variance: /* empty */ { NoVariance, NoInjectivity } | PLUS { Covariant, NoInjectivity } @@ -3515,8 +3591,9 @@ generic_constructor_declaration(opening): %inline constructor_declaration(opening): d = generic_constructor_declaration(opening) { - let cid, vars, args, res, attrs, loc, info = d in - Type.constructor cid ~vars ~args ?res ~attrs ~loc ~info + let cid, vars_layouts, args, res, attrs, loc, info = d in + Jane_syntax.Layouts.constructor_declaration_of + cid ~vars_layouts ~args ~res ~attrs ~loc ~info } ; str_exception_declaration: @@ -3544,18 +3621,26 @@ sig_exception_declaration: vars_args_res = generalized_constructor_arguments attrs2 = attributes attrs = post_item_attributes - { let vars, args, res = vars_args_res in + { let vars_layouts, args, res = vars_args_res in let loc = make_loc ($startpos, $endpos(attrs2)) in let docs = symbol_docs $sloc in - Te.mk_exception ~attrs - (Te.decl id ~vars ~args ?res ~attrs:(attrs1 @ attrs2) ~loc ~docs) - , ext } + let ext_ctor = + Jane_syntax.Layouts.extension_constructor_of + ~loc ~name:id ~attrs:(attrs1 @ attrs2) ~docs + (Lext_decl (vars_layouts, args, res)) + in + Te.mk_exception ~attrs ext_ctor, ext } ; %inline let_exception_declaration: mkrhs(constr_ident) generalized_constructor_arguments attributes - { let vars, args, res = $2 in - Te.decl $1 ~vars ~args ?res ~attrs:$3 ~loc:(make_loc $sloc) } + { let vars_layouts, args, res = $2 in + Jane_syntax.Layouts.extension_constructor_of + ~loc:(make_loc $sloc) + ~name:$1 + ~attrs:$3 + (Lext_decl (vars_layouts, args, res)) } ; + generalized_constructor_arguments: /*empty*/ { ([],Pcstr_tuple [],None) } | OF constructor_arguments { ([],$2,None) } @@ -3645,8 +3730,9 @@ label_declaration_semi: %inline extension_constructor_declaration(opening): d = generic_constructor_declaration(opening) { - let cid, vars, args, res, attrs, loc, info = d in - Te.decl cid ~vars ~args ?res ~attrs ~loc ~info + let name, vars_layouts, args, res, attrs, loc, info = d in + Jane_syntax.Layouts.extension_constructor_of + ~loc ~attrs ~info ~name (Lext_decl(vars_layouts, args, res)) } ; extension_constructor_rebind(opening): @@ -3700,23 +3786,28 @@ with_type_binder: /* Polymorphic types */ -%inline typevar: - QUOTE mkrhs(ident) - { $2 } +%inline typevar: (* : string with_loc * layout_annotation option *) + QUOTE mkrhs(ident) + { ($2, None) } + | LPAREN QUOTE tyvar=mkrhs(ident) COLON layout=layout_annotation RPAREN + { (tyvar, Some layout) } ; %inline typevar_list: + (* : (string with_loc * layout_annotation option) list *) nonempty_llist(typevar) { $1 } ; %inline poly(X): typevar_list DOT X - { Ptyp_poly($1, $3) } + { ($1, $3) } ; possibly_poly(X): X { $1 } -| mktyp(poly(X)) - { $1 } +| poly(X) + { let bound_vars, inner_type = $1 in + Jane_syntax.Layouts.type_of ~loc:(make_loc $sloc) ~attrs:[] + (Ltyp_poly { bound_vars; inner_type }) } ; %inline poly_type: possibly_poly(core_type) @@ -3758,8 +3849,16 @@ alias_type: | mktyp( ty = alias_type AS QUOTE tyvar = ident { Ptyp_alias(ty, tyvar) } - ) - { $1 } + ) + { $1 } + | aliased_type = alias_type AS + LPAREN + name = tyvar_name_or_underscore + COLON + layout = layout_annotation + RPAREN + { Jane_syntax.Layouts.type_of ~loc:(make_loc $sloc) ~attrs:[] + (Ltyp_alias { aliased_type; name; layout }) } ; (* Function types include: @@ -3816,9 +3915,9 @@ strict_function_type: { true } ; %inline param_type: - | mktyp( - LPAREN vars = typevar_list DOT ty = core_type RPAREN - { Ptyp_poly(vars, ty) } + | mktyp_jane_syntax_ltyp( + LPAREN bound_vars = typevar_list DOT inner_type = core_type RPAREN + { Jane_syntax.Layouts.Ltyp_poly { bound_vars; inner_type } } ) { $1 } | ty = tuple_type @@ -3903,7 +4002,13 @@ atomic_type: { Ptyp_extension $1 } ) { $1 } /* end mktyp group */ -; + | LPAREN QUOTE name=ident COLON layout=layout_annotation RPAREN + { Jane_syntax.Layouts.type_of ~loc:(make_loc $sloc) ~attrs:[] @@ + Ltyp_var { name = Some name; layout } } + | LPAREN UNDERSCORE COLON layout=layout_annotation RPAREN + { Jane_syntax.Layouts.type_of ~loc:(make_loc $sloc) ~attrs:[] @@ + Ltyp_var { name = None; layout } } + (* This is the syntax of the actual type parameters in an application of a type constructor, such as int, int list, or (int, bool) Hashtbl.t. @@ -3922,7 +4027,6 @@ atomic_type: { [ty] } | LPAREN tys = separated_nontrivial_llist(COMMA, core_type) RPAREN { tys } -; %inline package_type: module_type { let (lid, cstrs, attrs) = package_type_of_module_type $1 in @@ -4125,6 +4229,7 @@ label_longident: type_longident: mk_longident(mod_ext_longident, LIDENT) { $1 } ; + mod_longident: mk_longident(mod_longident, UIDENT) { $1 } ; diff --git a/parsing/pprintast.ml b/parsing/pprintast.ml index a0cf94920c0..815faaa72b2 100644 --- a/parsing/pprintast.ml +++ b/parsing/pprintast.ml @@ -287,13 +287,18 @@ let iter_loc f ctxt {txt; loc = _} = f ctxt txt let constant_string f s = pp f "%S" s -let tyvar ppf s = - if String.length s >= 2 && s.[1] = '\'' then - (* without the space, this would be parsed as - a character literal *) - Format.fprintf ppf "' %s" s - else - Format.fprintf ppf "'%s" s +let tyvar = Printast.tyvar +let layout_annotation = Printast.layout_annotation 0 + +let tyvar_layout_loc ~print_quote f (str,layout) = + let pptv = + if print_quote + then tyvar + else fun ppf s -> Format.fprintf ppf "%s" s + in + match layout with + | None -> pptv f str.txt + | Some lay -> Format.fprintf f "(%a : %a)" pptv str.txt layout_annotation lay let tyvar_loc f str = tyvar f str.txt let string_quot f x = pp f "`%s" x @@ -332,7 +337,7 @@ and core_type ctxt f x = pp f "@[<2>%a@;->@;%a@]" (* FIXME remove parens later *) (type_with_label ctxt) (l,ct1) (return_type ctxt) ct2 | Ptyp_alias (ct, s) -> - pp f "@[<2>%a@;as@;%a@]" (core_type1 ctxt) ct tyvar s + pp f "@[<2>%a@;as@;%a@]" (core_type1 ctxt) ct tyvar s | Ptyp_poly ([], ct) -> core_type ctxt f ct | Ptyp_poly (sl, ct) -> @@ -427,13 +432,31 @@ and core_type1 ctxt f x = | Ptyp_extension e -> extension ctxt f e | _ -> paren true (core_type ctxt) f x -and core_type1_jane_syntax _ctxt _attrs _f : Jane_syntax.Core_type.t -> _ = - function - | _ -> . +and core_type_jane_syntax ctxt attrs f (x : Jane_syntax.Core_type.t) = + let filtered_attrs = filter_curry_attrs attrs in + if filtered_attrs <> [] then begin + pp f "((%a)%a)" (core_type_jane_syntax ctxt []) x + (attributes ctxt) filtered_attrs + end + else match x with + | Jtyp_layout (Ltyp_alias { aliased_type; name; layout }) -> + pp f "@[<2>%a@;as@;(%a :@ %a)@]" + (core_type1 ctxt) aliased_type + tyvar_option name + layout_annotation layout + | _ -> pp f "@[<2>%a@]" (core_type1_jane_syntax ctxt attrs) x + +and core_type1_jane_syntax ctxt attrs f (x : Jane_syntax.Core_type.t) = + if has_non_curry_attr attrs then core_type_jane_syntax ctxt attrs f x + else + match x with + | Jtyp_layout (Ltyp_var { name; layout }) -> + pp f "(%a@;:@;%a)" tyvar_option name layout_annotation layout + | _ -> paren true (core_type_jane_syntax ctxt attrs) f x -and core_type_jane_syntax _ctxt _attrs _f : Jane_syntax.Core_type.t -> _ = - function - | _ -> . +and tyvar_option f = function + | None -> pp f "_" + | Some name -> tyvar f name and return_type ctxt f x = if x.ptyp_attributes <> [] then maybe_local_type core_type1 ctxt f x @@ -553,7 +576,7 @@ and simple_pattern ctxt (f:Format.formatter) (x:pattern) : unit = match Jane_syntax.Pattern.of_ast p with | Some (jpat, _attrs) -> begin match jpat with | Jpat_immutable_array (Iapat_immutable_array _) -> false - | Jpat_unboxed_constant _ -> false + | Jpat_layout (Lpat_constant _) -> false end | None -> match p.ppat_desc with | Ppat_array _ | Ppat_record _ @@ -571,7 +594,7 @@ and pattern_jane_syntax ctxt attrs f (pat : Jane_syntax.Pattern.t) = match pat with | Jpat_immutable_array (Iapat_immutable_array l) -> pp f "@[<2>[:%a:]@]" (list (pattern1 ctxt) ~sep:";") l - | Jpat_unboxed_constant c -> unboxed_constant ctxt f c + | Jpat_layout (Lpat_constant c) -> unboxed_constant ctxt f c and maybe_local_pat ctxt is_local f p = if is_local then @@ -1382,7 +1405,15 @@ and pp_print_pexp_function ctxt sep f x = let attrs, _ = check_local_attr x.pexp_attributes in let x = { x with pexp_attributes = attrs } in if x.pexp_attributes <> [] then pp f "%s@;%a" sep (expression ctxt) x - else match x.pexp_desc with + else + match Jane_syntax.Expression.of_ast x with + | Some (Jexp_layout (Lexp_newtype (str,lay,e)), _attrs) -> + pp f "@[(type@ %s :@ %a)@]@ %a" + str.txt + layout_annotation lay + (pp_print_pexp_function ctxt sep) e + | _ -> + match x.pexp_desc with | Pexp_fun (label, eo, p, e) -> pp f "%a@ %a" (label_exp ctxt) (label,eo,p) (pp_print_pexp_function ctxt sep) e @@ -1405,6 +1436,8 @@ and binding ctxt f {pvb_pat=p; pvb_expr=x; _} = | _ -> None in let rec gadt_exp tyvars e = match e with + (* no need to handle layout annotations here; the extracted variables + don't get printed -- they're just used to decide how to print *) | {pexp_desc=Pexp_newtype (tyvar, e); pexp_attributes=[]} -> gadt_exp (tyvar :: tyvars) e | {pexp_desc=Pexp_constraint (e, ct); pexp_attributes=[]} -> @@ -1712,9 +1745,13 @@ and type_declaration ctxt f x = in let constructor_declaration f pcd = pp f "|@;"; + let vars_layouts, attrs = + match Jane_syntax.Layouts.of_constructor_declaration pcd with + | None -> List.map (fun v -> v, None) pcd.pcd_vars, pcd.pcd_attributes + | Some stuff -> stuff + in constructor_declaration ctxt f - (pcd.pcd_name.txt, pcd.pcd_vars, - pcd.pcd_args, pcd.pcd_res, pcd.pcd_attributes) + (pcd.pcd_name.txt, vars_layouts, pcd.pcd_args, pcd.pcd_res, attrs) in let repr f = let intro f = @@ -1757,15 +1794,17 @@ and type_extension ctxt f x = x.ptyext_constructors (item_attributes ctxt) x.ptyext_attributes -and constructor_declaration ctxt f (name, vars, args, res, attrs) = +and constructor_declaration ctxt f (name, vars_layouts, args, res, attrs) = let name = match name with | "::" -> "(::)" | s -> s in - let pp_vars f vs = - match vs with + let pp_vars f vls = + match vls with | [] -> () - | vs -> pp f "%a@;.@;" (list tyvar_loc ~sep:"@;") vs in + | _ -> pp f "%a@;.@;" (list (tyvar_layout_loc ~print_quote:true) ~sep:"@;") + vls + in match res with | None -> pp f "%s%a@;%a" name @@ -1778,7 +1817,7 @@ and constructor_declaration ctxt f (name, vars, args, res, attrs) = (attributes ctxt) attrs | Some r -> pp f "%s:@;%a%a@;%a" name - pp_vars vars + pp_vars vars_layouts (fun f -> function | Pcstr_tuple [] -> core_type1 ctxt f r | Pcstr_tuple l -> pp f "%a@;->@;%a" @@ -1793,20 +1832,22 @@ and constructor_declaration ctxt f (name, vars, args, res, attrs) = and extension_constructor ctxt f x = (* Cf: #7200 *) match Jane_syntax.Extension_constructor.of_ast x with - | Some (jext, attrs) -> extension_constructor_jst ctxt f attrs jext + | Some (jext, attrs) -> + extension_constructor_jst ctxt f x.pext_name attrs jext | None -> match x.pext_kind with | Pext_decl(v, l, r) -> constructor_declaration ctxt f - (x.pext_name.txt, v, l, r, x.pext_attributes) + (x.pext_name.txt, List.map (fun v -> v, None) v, l, r, x.pext_attributes) | Pext_rebind li -> pp f "%s@;=@;%a%a" x.pext_name.txt longident_loc li (attributes ctxt) x.pext_attributes -and extension_constructor_jst _ctxt _f _attrs : +and extension_constructor_jst ctxt f name attrs : Jane_syntax.Extension_constructor.t -> _ = function - | _ -> . + | Jext_layout (Lext_decl(vl, l, r)) -> + constructor_declaration ctxt f (name.txt, vl, l, r, attrs) and case_list ctxt f l : unit = let aux f {pc_lhs; pc_guard; pc_rhs} = @@ -1847,9 +1888,9 @@ and jane_syntax_expr ctxt attrs f (jexp : Jane_syntax.Expression.t) = pp f "((%a)@,%a)" (jane_syntax_expr ctxt []) jexp (attributes ctxt) attrs else match jexp with - | Jexp_comprehension x -> comprehension_expr ctxt f x - | Jexp_immutable_array x -> immutable_array_expr ctxt f x - | Jexp_unboxed_constant x -> unboxed_constant ctxt f x + | Jexp_comprehension x -> comprehension_expr ctxt f x + | Jexp_immutable_array x -> immutable_array_expr ctxt f x + | Jexp_layout x -> layout_expr ctxt f x and comprehension_expr ctxt f (cexp : Jane_syntax.Comprehensions.expression) = let punct, comp = match cexp with @@ -1902,7 +1943,19 @@ and immutable_array_expr ctxt f (x : Jane_syntax.Immutable_arrays.expression) = pp f "@[<0>@[<2>[:%a:]@]@]" (list (simple_expr (under_semi ctxt)) ~sep:";") elts -and unboxed_constant _ctxt f (x : Jane_syntax.Unboxed_constants.t) +and layout_expr ctxt f (x : Jane_syntax.Layouts.expression) = + match x with + (* see similar case in [expression] *) + | Lexp_newtype _ when ctxt.pipe || ctxt.semi -> + paren true (layout_expr reset_ctxt) f x + | Lexp_constant x -> unboxed_constant ctxt f x + | Lexp_newtype (lid, layout, inner_expr) -> + pp f "@[<2>fun@;(type@;%s :@;%a)@;%a@]" + lid.txt + layout_annotation layout + (pp_print_pexp_function ctxt "->") inner_expr + +and unboxed_constant _ctxt f (x : Jane_syntax.Layouts.constant) = match x with | Float (x, suffix) -> pp f "#%a" constant (Pconst_float (x, suffix)) diff --git a/parsing/pprintast.mli b/parsing/pprintast.mli index 42acd5f15c4..b5c7dafe9de 100644 --- a/parsing/pprintast.mli +++ b/parsing/pprintast.mli @@ -49,7 +49,3 @@ val structure_item: Format.formatter -> Parsetree.structure_item -> unit val signature_item: Format.formatter -> Parsetree.signature_item -> unit val binding: Format.formatter -> Parsetree.value_binding -> unit val payload: Format.formatter -> Parsetree.payload -> unit - -val tyvar: Format.formatter -> string -> unit - (** Print a type variable name, taking care of the special treatment - required for the single quote character in second position. *) diff --git a/parsing/printast.ml b/parsing/printast.ml index cf6c965a008..4f238918d6d 100644 --- a/parsing/printast.ml +++ b/parsing/printast.ml @@ -19,6 +19,14 @@ open Lexing;; open Location;; open Parsetree;; +let const_layout_to_string = function + | Any -> "any" + | Value -> "value" + | Immediate -> "immediate" + | Immediate64 -> "immediate64" + | Void -> "void" + | Float64 -> "float64" + let fmt_position with_name f l = let fname = if with_name then l.pos_fname else "" in if l.pos_lnum = -1 @@ -147,8 +155,22 @@ let arg_label i ppf = function | Labelled s -> line i ppf "Labelled \"%s\"\n" s ;; +let tyvar ppf s = + if String.length s >= 2 && s.[1] = '\'' then + (* without the space, this would be parsed as + a character literal *) + Format.fprintf ppf "' %s" s + else + Format.fprintf ppf "'%s" s + +let const_layout ppf lay = + Format.fprintf ppf "%s" (const_layout_to_string lay) + +let layout_annotation i ppf layout = + line i ppf "%a" const_layout layout.txt + let typevars ppf vs = - List.iter (fun x -> fprintf ppf " %a" Pprintast.tyvar x.txt) vs + List.iter (fun x -> fprintf ppf " %a" tyvar x.txt) vs let rec core_type i ppf x = line i ppf "core_type %a\n" fmt_location x.ptyp_loc; @@ -981,3 +1003,5 @@ let interface ppf x = list 0 signature_item ppf x;; let implementation ppf x = list 0 structure_item ppf x;; let top_phrase ppf x = toplevel_phrase 0 ppf x;; + +let constant = fmt_constant;; diff --git a/parsing/printast.mli b/parsing/printast.mli index 8215654826b..45728b57d8e 100644 --- a/parsing/printast.mli +++ b/parsing/printast.mli @@ -26,7 +26,18 @@ open Format;; val interface : formatter -> signature_item list -> unit;; val implementation : formatter -> structure_item list -> unit;; val top_phrase : formatter -> toplevel_phrase -> unit;; +val constant: formatter -> constant -> unit;; val expression: int -> formatter -> expression -> unit +val pattern: int -> formatter -> pattern -> unit val structure: int -> formatter -> structure -> unit val payload: int -> formatter -> payload -> unit +val core_type: int -> formatter -> core_type -> unit +val extension_constructor: int -> formatter -> extension_constructor -> unit + +val layout_annotation: int -> formatter -> Asttypes.layout_annotation -> unit +val const_layout_to_string: Asttypes.const_layout -> string + +val tyvar: Format.formatter -> string -> unit + (** Print a type variable name, taking care of the special treatment + required for the single quote character in second position. *) diff --git a/parsing/syntaxerr.ml b/parsing/syntaxerr.ml index 49372b9edf2..cf1e4920492 100644 --- a/parsing/syntaxerr.ml +++ b/parsing/syntaxerr.ml @@ -41,3 +41,42 @@ let location_of_error = function let ill_formed_ast loc s = raise (Error (Ill_formed_ast (loc, s))) + +let prepare_error err = + match err with + | Unclosed(opening_loc, opening, closing_loc, closing) -> + Location.errorf + ~loc:closing_loc + ~sub:[ + Location.msg ~loc:opening_loc + "This '%s' might be unmatched" opening + ] + "Syntax error: '%s' expected" closing + + | Expecting (loc, nonterm) -> + Location.errorf ~loc "Syntax error: %s expected." nonterm + | Not_expecting (loc, nonterm) -> + Location.errorf ~loc "Syntax error: %s not expected." nonterm + | Applicative_path loc -> + Location.errorf ~loc + "Syntax error: applicative paths of the form F(X).t \ + are not supported when the option -no-app-func is set." + | Variable_in_scope (loc, var) -> + Location.errorf ~loc + "In this scoped type, variable %a \ + is reserved for the local type %s." + Printast.tyvar var var + | Other loc -> + Location.errorf ~loc "Syntax error" + | Ill_formed_ast (loc, s) -> + Location.errorf ~loc + "broken invariant in parsetree: %s" s + | Invalid_package_type (loc, s) -> + Location.errorf ~loc "invalid package type: %s" s + +let () = + Location.register_error_of_exn + (function + | Error err -> Some (prepare_error err) + | _ -> None + ) diff --git a/testsuite/tests/letrec-check/unboxed.ml b/testsuite/tests/letrec-check/unboxed.ml index d98f9f87f49..b1b86167e0d 100644 --- a/testsuite/tests/letrec-check/unboxed.ml +++ b/testsuite/tests/letrec-check/unboxed.ml @@ -23,7 +23,7 @@ Error: This kind of expression is not allowed as right-hand side of `let rec' type r = A of r [@@unboxed] [@@value] let rec y = A y;; [%%expect{| -type r = A of r [@@value] [@@unboxed] +type r : value = A of r [@@unboxed] Line 2, characters 12-15: 2 | let rec y = A y;; ^^^ diff --git a/testsuite/tests/typing-immediate/immediate.ml b/testsuite/tests/typing-immediate/immediate.ml index 47dcbb2b1cf..fe942adcba4 100644 --- a/testsuite/tests/typing-immediate/immediate.ml +++ b/testsuite/tests/typing-immediate/immediate.ml @@ -5,7 +5,7 @@ module type S = sig type t [@@immediate] end;; module F (M : S) : S = M;; [%%expect{| -module type S = sig type t [@@immediate] end +module type S = sig type t : immediate end module F : functor (M : S) -> S |}];; @@ -37,14 +37,14 @@ end;; [%%expect{| module A : sig - type t [@@immediate] - type s = t [@@immediate] + type t : immediate + type s = t type r = s - type p = q [@@immediate] + type p = q and q = int - type o = Foo | Bar | Baz [@@immediate] - type m = int [@@immediate64] - type n = m [@@immediate] + type o = Foo | Bar | Baz + type m = int + type n = m end |}];; @@ -55,7 +55,7 @@ module Z = ((Y : X with type t = int) : sig type t [@@immediate] end);; [%%expect{| module type X = sig type t end module Y : sig type t = int end -module Z : sig type t [@@immediate] end +module Z : sig type t : immediate end |}];; (* Valid using an explicit signature *) @@ -82,8 +82,8 @@ end;; [%%expect{| module Unboxed_valid : sig - type t = { x : int; } [@@immediate] [@@unboxed] - type u = { x : s; } [@@immediate] [@@unboxed] + type t : immediate = { x : int; } [@@unboxed] + type u : immediate = { x : s; } [@@unboxed] and s = int end |}];; @@ -102,7 +102,7 @@ module Bar : sig type t [@@immediate] val x : t ref end = struct let x = ref 0 end;; [%%expect{| -module Bar : sig type t [@@immediate] val x : t ref end +module Bar : sig type t : immediate val x : t ref end |}];; let test f = @@ -193,11 +193,11 @@ Error: Signature mismatch: Modules do not match: sig type t = string end is not included in - sig type t [@@immediate] end + sig type t : immediate end Type declarations do not match: type t = string is not included in - type t [@@immediate] + type t : immediate the first has layout value, which is not a sublayout of immediate. |}];; @@ -213,7 +213,7 @@ Error: Signature mismatch: Type declarations do not match: type t = string is not included in - type t [@@immediate] + type t : immediate the first has layout value, which is not a sublayout of immediate. |}];; @@ -235,7 +235,7 @@ type 'a id = 'a type s = int id [@@immediate] [%%expect{| type 'a id = 'a -type s = int id [@@immediate] +type s = int id |}];; module F (X : sig type t end) = X module I = struct type t = int end @@ -243,7 +243,7 @@ type t = F(I).t [@@immediate] [%%expect{| module F : functor (X : sig type t end) -> sig type t = X.t end module I : sig type t = int end -type t = F(I).t [@@immediate] +type t = F(I).t |}];; module F (X : sig type t end) = X module I : sig type t = private int end = struct type t = int end @@ -251,7 +251,7 @@ type t = F(I).t [@@immediate] [%%expect{| module F : functor (X : sig type t end) -> sig type t = X.t end module I : sig type t = private int end -type t = F(I).t [@@immediate] +type t = F(I).t |}];; module type T = sig type t type s = t end module F (X : T with type t = int) = struct @@ -260,8 +260,7 @@ end [%%expect{| module type T = sig type t type s = t end module F : - functor (X : sig type t = int type s = t end) -> - sig type t = X.s [@@immediate] end + functor (X : sig type t = int type s = t end) -> sig type t = X.s end |}];; module type T = sig type t type s = t end module F (X : T with type t = private int) = struct @@ -271,10 +270,10 @@ end module type T = sig type t type s = t end module F : functor (X : sig type t = private int type s = t end) -> - sig type t = X.s [@@immediate] end + sig type t = X.s end |}];; type t = int s [@@immediate] and 'a s = 'a [%%expect{| -type t = int s [@@immediate] +type t = int s and 'a s = 'a |}];; diff --git a/testsuite/tests/typing-layouts-float64/basics_alpha.ml b/testsuite/tests/typing-layouts-float64/basics_alpha.ml index e23d19f33a2..189a085064c 100644 --- a/testsuite/tests/typing-layouts-float64/basics_alpha.ml +++ b/testsuite/tests/typing-layouts-float64/basics_alpha.ml @@ -20,10 +20,10 @@ let f1_1 (x : t_float64) = x;; let f1_2 (x : 'a t_float64_id) = x;; let f1_3 (x : float#) = x;; [%%expect{| -type t_float64 [@@float64] +type t_float64 : float64 type ('a : float64) t_float64_id = 'a val f1_1 : t_float64 -> t_float64 = -val f1_2 : 'a t_float64_id -> 'a t_float64_id = +val f1_2 : ('a : float64). 'a t_float64_id -> 'a t_float64_id = val f1_3 : float# -> float# = |}];; @@ -42,7 +42,7 @@ let f2_3 (x : float#) = y;; [%%expect{| val f2_1 : t_float64 -> t_float64 = -val f2_2 : 'a t_float64_id -> 'a t_float64_id = +val f2_2 : ('a : float64). 'a t_float64_id -> 'a t_float64_id = val f2_3 : float# -> float# = |}];; @@ -344,7 +344,7 @@ let make_floatu () : float# = assert false let id_value x = x;; [%%expect{| val make_t_float64 : unit -> t_float64 = -val make_t_float64_id : unit -> 'a t_float64_id = +val make_t_float64_id : ('a : float64). unit -> 'a t_float64_id = val make_floatu : unit -> float# = val id_value : 'a -> 'a = |}];; @@ -389,10 +389,12 @@ let f9_2 () = twice f1_2 (make_t_float64_id ()) let f9_3 () = twice f1_3 (make_floatu ());; [%%expect{| val twice : - ('a t_float64_id -> 'a t_float64_id) -> 'a t_float64_id -> 'a t_float64_id = + ('a : float64). + ('a t_float64_id -> 'a t_float64_id) -> + 'a t_float64_id -> 'a t_float64_id = val f9_1 : unit -> t_float64 t_float64_id = -val f9_2 : unit -> 'a t_float64_id = +val f9_2 : ('a : float64). unit -> 'a t_float64_id = val f9_3 : unit -> float# t_float64_id = |}];; diff --git a/testsuite/tests/typing-layouts-float64/unboxed_floats.compilers.reference b/testsuite/tests/typing-layouts-float64/unboxed_floats.compilers.reference index c89d2a2a147..aa33a7c1b14 100644 --- a/testsuite/tests/typing-layouts-float64/unboxed_floats.compilers.reference +++ b/testsuite/tests/typing-layouts-float64/unboxed_floats.compilers.reference @@ -1,4 +1,5 @@ File "unboxed_floats.ml", line 74, characters 11-18: 74 | type ('a : float64) t_float64 = 'a ^^^^^^^ -Error: Layout float64 is used here, but the appropriate layouts extension is not enabled +Error: Layout float64 is more experimental than allowed by -extension layouts. + You must enable -extension layouts_alpha to use this feature. diff --git a/testsuite/tests/typing-layouts-float64/unboxed_floats_beta.compilers.reference b/testsuite/tests/typing-layouts-float64/unboxed_floats_beta.compilers.reference index 003bda1cb3b..cadb7e5bd21 100644 --- a/testsuite/tests/typing-layouts-float64/unboxed_floats_beta.compilers.reference +++ b/testsuite/tests/typing-layouts-float64/unboxed_floats_beta.compilers.reference @@ -1,4 +1,5 @@ File "unboxed_floats_beta.ml", line 74, characters 11-18: 74 | type ('a : float64) t_float64 = 'a ^^^^^^^ -Error: Layout float64 is used here, but the appropriate layouts extension is not enabled +Error: Layout float64 is more experimental than allowed by -extension layouts_beta. + You must enable -extension layouts_alpha to use this feature. diff --git a/testsuite/tests/typing-layouts-missing-cmi/c.ml b/testsuite/tests/typing-layouts-missing-cmi/c.ml index 60dd8714e12..40e130a9754 100644 --- a/testsuite/tests/typing-layouts-missing-cmi/c.ml +++ b/testsuite/tests/typing-layouts-missing-cmi/c.ml @@ -20,9 +20,9 @@ script = "rm -f a.cmi" open B -type 'a [@immediate] imm_arg -type 'b [@value] value_arg -(* type 'c [@void] void_arg *) +type ('a : immediate) imm_arg +type ('b : value) value_arg +(* type ('c : @void) void_arg *) (* These should work *) type foo = b_imm imm_arg diff --git a/testsuite/tests/typing-layouts/annots-failing.ml b/testsuite/tests/typing-layouts/annots-failing.ml new file mode 100644 index 00000000000..db322b9fe4f --- /dev/null +++ b/testsuite/tests/typing-layouts/annots-failing.ml @@ -0,0 +1,45 @@ +(* TEST + * skip + reason = "bugs not fixed yet" + ** expect + flags = "-extension layouts_alpha" +*) + +(* CR layouts v1.5: merge this with annots.ml after these all pass *) + +class c : object + val f : 'a -> 'a +end = object + val f = fun (x : ('a : immediate)) -> x +end +;; +[%%expect {| +fail +|}] + +class c : object + method m : ('a : immediate). 'a -> 'a + val f : ('a : immediate) -> 'a +end = object + method m : type (a : immediate). a -> a = fun x -> x + val f = fun (x : ('a : immediate)) -> x +end + +[%%expect {| +success with both types quantified over immediates +|}] + +type _ g = | MkG : ('a : immediate) ('b : void). 'a -> 'b g + +type ('a : void) t3 = .. +type _ t3 += MkG : ('a : immediate) 'b. 'a -> 'b t3 + +[%%expect {| +success (I think) +|}] + +let f_gadt : ('a : value). 'a -> 'a g -> 'a = fun x MkG -> f_imm x + +[%%expect {| +success +|}] diff --git a/testsuite/tests/typing-layouts/annots.ml b/testsuite/tests/typing-layouts/annots.ml new file mode 100644 index 00000000000..a40c545e65c --- /dev/null +++ b/testsuite/tests/typing-layouts/annots.ml @@ -0,0 +1,436 @@ +(* TEST + * expect + flags = "-extension layouts" +*) + + +type t_value : value +type t_imm : immediate +type t_imm64 : immediate64 +;; +[%%expect{| +type t_value : value +type t_imm : immediate +type t_imm64 : immediate64 +|}];; + +type t_any : any;; + +[%%expect{| +Line 1, characters 13-16: +1 | type t_any : any;; + ^^^ +Error: Layout any is used here, but the appropriate layouts extension is not enabled +|}] + +type t_void : void + +[%%expect{| +Line 1, characters 14-18: +1 | type t_void : void + ^^^^ +Error: Layout void is used here, but the appropriate layouts extension is not enabled +|}] + +(***************************************) +(* Test 1: annotation on type variable *) + +let x : int as ('a : value) = 5 +let x : int as ('a : immediate) = 5 +;; +[%%expect {| +val x : int = 5 +Line 2, characters 21-30: +2 | let x : int as ('a : immediate) = 5 + ^^^^^^^^^ +Error: Layout immediate is more experimental than allowed by -extension layouts. + You must enable -extension layouts_beta to use this feature. +|}] +(* CR layouts: fix when [immediate] becomes available in [layouts] *) + +let x : int as ('a : any) = 5;; + +[%%expect{| +Line 1, characters 21-24: +1 | let x : int as ('a : any) = 5;; + ^^^ +Error: Layout any is more experimental than allowed by -extension layouts. + You must enable -extension layouts_beta to use this feature. +|}] +(* CR layouts: fix when [any] becomes available in [layouts] *) + +let x : (int as ('a : immediate)) list as ('b : value) = [3;4;5] +;; +[%%expect {| +Line 1, characters 22-31: +1 | let x : (int as ('a : immediate)) list as ('b : value) = [3;4;5] + ^^^^^^^^^ +Error: Layout immediate is more experimental than allowed by -extension layouts. + You must enable -extension layouts_beta to use this feature. +|}] + +let x : int list as ('a : immediate) = [3;4;5] +;; +[%%expect {| +Line 1, characters 26-35: +1 | let x : int list as ('a : immediate) = [3;4;5] + ^^^^^^^^^ +Error: Layout immediate is more experimental than allowed by -extension layouts. + You must enable -extension layouts_beta to use this feature. +|}] + +(****************************************) +(* Test 2: Annotation on type parameter *) + +(* CR layouts: move over beta tests once [immediate] is allowed in [layouts] *) + +type ('a : value) t2 +type (_ : value) t2' +type t3 = int t2 +type t4 = bool t2 +;; +[%%expect {| +type 'a t2 +type _ t2' +type t3 = int t2 +type t4 = bool t2 +|}] + +module M1 : sig + type ('a : value) t +end = struct + type (_ : value) t +end + +module M2 : sig + type (_ : value) t +end = struct + type ('a : value) t +end + +[%%expect {| +module M1 : sig type 'a t end +module M2 : sig type _ t end +|}] + +type t = string t2 +;; +[%%expect {| +type t = string t2 +|}] + +(********************************************) +(* Test 3: Annotation on types in functions *) + +let f : ('a : any) -> 'a = fun x -> x +;; +[%%expect {| +Line 1, characters 14-17: +1 | let f : ('a : any) -> 'a = fun x -> x + ^^^ +Error: Layout any is more experimental than allowed by -extension layouts. + You must enable -extension layouts_beta to use this feature. +|}] + +let f : ('a : any). 'a -> 'a = fun x -> x +;; +[%%expect {| +Line 1, characters 14-17: +1 | let f : ('a : any). 'a -> 'a = fun x -> x + ^^^ +Error: Layout any is more experimental than allowed by -extension layouts. + You must enable -extension layouts_beta to use this feature. +|}] +(* CR layouts: fix when [any] becomes available in [layouts] *) + +(********************************************) +(* Test 4: Annotation on record field types *) + +type r = { field : ('a : immediate). 'a -> 'a } + +[%%expect{| +Line 1, characters 25-34: +1 | type r = { field : ('a : immediate). 'a -> 'a } + ^^^^^^^^^ +Error: Layout immediate is more experimental than allowed by -extension layouts. + You must enable -extension layouts_beta to use this feature. +|}] +(* CR layouts: fix when we allow annotations on field types in [layouts] *) + +(********************) +(* Test 5: newtypes *) + +let f = fun (type (a : value)) (x : a) -> x +;; +[%%expect {| +val f : 'a -> 'a = +|}] + +let f = fun (type (a : immediate)) (x : a) -> x +;; +[%%expect {| +Line 1, characters 23-32: +1 | let f = fun (type (a : immediate)) (x : a) -> x + ^^^^^^^^^ +Error: Layout immediate is more experimental than allowed by -extension layouts. + You must enable -extension layouts_beta to use this feature. +|}] + +let f = fun (type (a : any)) (x : a) -> x +;; +[%%expect {| +Line 1, characters 23-26: +1 | let f = fun (type (a : any)) (x : a) -> x + ^^^ +Error: Layout any is more experimental than allowed by -extension layouts. + You must enable -extension layouts_beta to use this feature. +|}] +(* CR layouts: fix when we allow annotations on newtypes in [layouts] *) + +(****************************************) +(* Test 6: abstract universal variables *) + +let f : type (a : value). a -> a = fun x -> x +;; +[%%expect {| +val f : 'a -> 'a = +|}] + +let f : type (a : immediate). a -> a = fun x -> x +;; +[%%expect {| +Line 1, characters 18-27: +1 | let f : type (a : immediate). a -> a = fun x -> x + ^^^^^^^^^ +Error: Layout immediate is more experimental than allowed by -extension layouts. + You must enable -extension layouts_beta to use this feature. +|}] + +let f : type (a : any). a -> a = fun x -> x +;; +[%%expect {| +Line 1, characters 18-21: +1 | let f : type (a : any). a -> a = fun x -> x + ^^^ +Error: Layout any is more experimental than allowed by -extension layouts. + You must enable -extension layouts_beta to use this feature. +|}] +(* CR layouts: fix when we allow annotations on newtypes in [layouts] *) + +(**************************************************) +(* Test 7: Defaulting universal variable to value *) + +(********************************************) +(* Test 8: Annotation on universal variable *) + +module type S = sig + val f : ('a : value). 'a t2 -> 'a t2 +end +;; +[%%expect {| +module type S = sig val f : 'a t2 -> 'a t2 end +|}] + +module type S = sig + val f : 'a t2 -> 'a t2 + val g : ('a : immediate). 'a t2 -> 'a t2 +end +;; +[%%expect {| +Line 3, characters 16-25: +3 | val g : ('a : immediate). 'a t2 -> 'a t2 + ^^^^^^^^^ +Error: Layout immediate is more experimental than allowed by -extension layouts. + You must enable -extension layouts_beta to use this feature. +|}] +(* CR layouts: fix when we allow annotations on universals in [layouts] *) + +(************************************************************) +(* Test 9: Annotation on universal in polymorphic parameter *) + +let f (x : ('a : value). 'a -> 'a) = x "string", x 5 + +[%%expect {| +val f : ('a. 'a -> 'a) -> string * int = +|}] + +let f (x : ('a : immediate). 'a -> 'a) = x "string" + +[%%expect {| +Line 1, characters 17-26: +1 | let f (x : ('a : immediate). 'a -> 'a) = x "string" + ^^^^^^^^^ +Error: Layout immediate is more experimental than allowed by -extension layouts. + You must enable -extension layouts_beta to use this feature. +|}] +(* CR layouts: fix when we allow annotations on universals in [layouts] *) + +(**************************************) +(* Test 10: Parsing & pretty-printing *) + +let f (type a : immediate) (x : a) = x + +[%%expect{| +Line 1, characters 16-25: +1 | let f (type a : immediate) (x : a) = x + ^^^^^^^^^ +Error: Layout immediate is more experimental than allowed by -extension layouts. + You must enable -extension layouts_beta to use this feature. +|}] + +let f = fun (type a : immediate) (x : a) -> x + +[%%expect{| +Line 1, characters 22-31: +1 | let f = fun (type a : immediate) (x : a) -> x + ^^^^^^^^^ +Error: Layout immediate is more experimental than allowed by -extension layouts. + You must enable -extension layouts_beta to use this feature. +|}] + +let f = fun (type a : value) (x : a) -> x + +[%%expect{| +val f : 'a -> 'a = +|}] + +let o = object + method m : type (a : immediate). a -> a = fun x -> x +end + +[%%expect{| +Line 2, characters 23-32: +2 | method m : type (a : immediate). a -> a = fun x -> x + ^^^^^^^^^ +Error: Layout immediate is more experimental than allowed by -extension layouts. + You must enable -extension layouts_beta to use this feature. +|}] + +let f : type (a : immediate). a -> a = fun x -> x + +[%%expect{| +Line 1, characters 18-27: +1 | let f : type (a : immediate). a -> a = fun x -> x + ^^^^^^^^^ +Error: Layout immediate is more experimental than allowed by -extension layouts. + You must enable -extension layouts_beta to use this feature. +|}] + +let f x = + let local_ g (type a : immediate) (x : a) = x in + g x [@nontail] + +[%%expect{| +Line 2, characters 25-34: +2 | let local_ g (type a : immediate) (x : a) = x in + ^^^^^^^^^ +Error: Layout immediate is more experimental than allowed by -extension layouts. + You must enable -extension layouts_beta to use this feature. +|}] + +let f = fun x y (type (a : immediate)) (z : a) -> z + +[%%expect{| +Line 1, characters 27-36: +1 | let f = fun x y (type (a : immediate)) (z : a) -> z + ^^^^^^^^^ +Error: Layout immediate is more experimental than allowed by -extension layouts. + You must enable -extension layouts_beta to use this feature. +|}] + +let f = fun x y (type a : immediate) (z : a) -> z + +[%%expect{| +Line 1, characters 26-35: +1 | let f = fun x y (type a : immediate) (z : a) -> z + ^^^^^^^^^ +Error: Layout immediate is more experimental than allowed by -extension layouts. + You must enable -extension layouts_beta to use this feature. +|}] + +external f : ('a : immediate). 'a -> 'a = "%identity" + +[%%expect{| +Line 1, characters 19-28: +1 | external f : ('a : immediate). 'a -> 'a = "%identity" + ^^^^^^^^^ +Error: Layout immediate is more experimental than allowed by -extension layouts. + You must enable -extension layouts_beta to use this feature. +|}] + +type (_ : any) t2_any + +[%%expect{| +Line 1, characters 10-13: +1 | type (_ : any) t2_any + ^^^ +Error: Layout any is more experimental than allowed by -extension layouts. + You must enable -extension layouts_beta to use this feature. +|}] + +exception E : ('a : immediate) ('b : any). 'b t2_any * 'a list -> exn + +[%%expect{| +Line 1, characters 20-29: +1 | exception E : ('a : immediate) ('b : any). 'b t2_any * 'a list -> exn + ^^^^^^^^^ +Error: Layout immediate is more experimental than allowed by -extension layouts. + You must enable -extension layouts_beta to use this feature. +|}] + +let f (x : ('a : immediate). 'a -> 'a) = x 3, x true + +[%%expect {| +Line 1, characters 17-26: +1 | let f (x : ('a : immediate). 'a -> 'a) = x 3, x true + ^^^^^^^^^ +Error: Layout immediate is more experimental than allowed by -extension layouts. + You must enable -extension layouts_beta to use this feature. +|}] + +type _ a = Mk : [> ] * ('a : immediate) -> int a + +[%%expect {| +Line 1, characters 29-38: +1 | type _ a = Mk : [> ] * ('a : immediate) -> int a + ^^^^^^^^^ +Error: Layout immediate is more experimental than allowed by -extension layouts. + You must enable -extension layouts_beta to use this feature. +|}] + +let f_imm : ('a : immediate). 'a -> 'a = fun x -> x + +[%%expect {| +Line 1, characters 18-27: +1 | let f_imm : ('a : immediate). 'a -> 'a = fun x -> x + ^^^^^^^^^ +Error: Layout immediate is more experimental than allowed by -extension layouts. + You must enable -extension layouts_beta to use this feature. +|}] + +let f_val : ('a : value). 'a -> 'a = fun x -> x + +[%%expect {| +val f_val : 'a -> 'a = +|}] + +type (_ : value) g = + | MkG : ('a : immediate). 'a g + +[%%expect {| +Line 2, characters 16-25: +2 | | MkG : ('a : immediate). 'a g + ^^^^^^^^^ +Error: Layout immediate is more experimental than allowed by -extension layouts. + You must enable -extension layouts_beta to use this feature. +|}] + +type t = int as (_ : immediate) + +[%%expect {| +Line 1, characters 21-30: +1 | type t = int as (_ : immediate) + ^^^^^^^^^ +Error: Layout immediate is more experimental than allowed by -extension layouts. + You must enable -extension layouts_beta to use this feature. +|}] diff --git a/testsuite/tests/typing-layouts/annots_beta.ml b/testsuite/tests/typing-layouts/annots_beta.ml new file mode 100644 index 00000000000..8c6477aca09 --- /dev/null +++ b/testsuite/tests/typing-layouts/annots_beta.ml @@ -0,0 +1,508 @@ +(* TEST + flags = "-extension layouts_beta" + * expect +*) + +type t_value : value +type t_imm : immediate +type t_imm64 : immediate64 +type t_any : any;; + +[%%expect{| +type t_value : value +type t_imm : immediate +type t_imm64 : immediate64 +Line 4, characters 13-16: +4 | type t_any : any;; + ^^^ +Error: Layout any is used here, but the appropriate layouts extension is not enabled +|}] +(* CR layouts v1.5: the above test should be accepted; fix. *) + +type t_void : void;; + +[%%expect{| +Line 1, characters 14-18: +1 | type t_void : void;; + ^^^^ +Error: Layout void is used here, but the appropriate layouts extension is not enabled +|}] + +(***************************************) +(* Test 1: annotation on type variable *) + +let x : int as ('a: value) = 5 +let x : int as ('a : immediate) = 5 +let x : int as ('a : any) = 5;; + +[%%expect{| +val x : int = 5 +val x : int = 5 +val x : int = 5 +|}] + +let x : (int as ('a : immediate)) list as ('b : value) = [3;4;5] +;; +[%%expect {| +val x : int list = [3; 4; 5] +|}] + +let x : int list as ('a : immediate) = [3;4;5] +;; +[%%expect {| +Line 1, characters 8-36: +1 | let x : int list as ('a : immediate) = [3;4;5] + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +Error: This alias is bound to type int list + but is used as an instance of type ('a : immediate) + int list has layout value, which is not a sublayout of immediate. +|}] +(* CR layouts: error message could be phrased better *) + +(****************************************) +(* Test 2: Annotation on type parameter *) + +type ('a : immediate) t2_imm +type (_ : immediate) t2_imm' +type t1 = int t2_imm +type t2 = bool t2_imm + +[%%expect {| +type ('a : immediate) t2_imm +type (_ : immediate) t2_imm' +type t1 = int t2_imm +type t2 = bool t2_imm +|}] + +module M1 : sig + type ('a : immediate) t +end = struct + type (_ : immediate) t +end + +module M2 : sig + type (_ : immediate) t +end = struct + type ('a : immediate) t +end + +[%%expect {| +module M1 : sig type ('a : immediate) t end +module M2 : sig type (_ : immediate) t end +|}] + +type t = string t2_imm +;; +[%%expect {| +Line 1, characters 9-15: +1 | type t = string t2_imm + ^^^^^^ +Error: This type string should be an instance of type ('a : immediate) + string has layout value, which is not a sublayout of immediate. +|}] + +let f : 'a t2_imm -> 'a t2_imm = fun x -> x +;; +[%%expect {| +val f : ('a : immediate). 'a t2_imm -> 'a t2_imm = +|}] + +let f : ('a : immediate) t2_imm -> ('a : value) t2_imm = fun x -> x +;; +[%%expect {| +val f : ('a : immediate). 'a t2_imm -> 'a t2_imm = +|}] + +let f : ('a : value) t2_imm -> ('a : value) t2_imm = fun x -> x +;; +[%%expect {| +val f : ('a : immediate). 'a t2_imm -> 'a t2_imm = +|}] + +let f : ('a : immediate). 'a t2_imm -> 'a t2_imm = fun x -> x +;; +[%%expect {| +val f : ('a : immediate). 'a t2_imm -> 'a t2_imm = +|}] + +let f : ('a : value). 'a t2_imm -> 'a t2_imm = fun x -> x +;; +[%%expect {| +Line 1, characters 8-44: +1 | let f : ('a : value). 'a t2_imm -> 'a t2_imm = fun x -> x + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +Error: The universal type variable 'a was declared to have + layout value, but was inferred to have layout immediate. +|}] + +type 'a t = 'a t2_imm +;; +[%%expect {| +type ('a : immediate) t = 'a t2_imm +|}] + +type ('a : value) t = 'a t2_imm +;; +[%%expect {| +type ('a : immediate) t = 'a t2_imm +|}] + +type ('a : immediate) t = 'a t2_imm +;; +[%%expect {| +type ('a : immediate) t = 'a t2_imm +|}] + +let f : (_ : value) t2_imm -> unit = fun _ -> () +let g : (_ : immediate) t2_imm -> unit = fun _ -> () + +[%%expect {| +val f : ('a : immediate). 'a t2_imm -> unit = +val g : ('a : immediate). 'a t2_imm -> unit = +|}] + +let f : (_ : immediate) -> unit = fun _ -> () +let g : (_ : value) -> unit = fun _ -> () + +[%%expect {| +val f : ('a : immediate). 'a -> unit = +val g : 'a -> unit = +|}] + +let f : (_ : immediate) -> (_ : value) = fun _ -> assert false +let g : (_ : value) -> (_ : immediate) = fun _ -> assert false + +[%%expect {| +val f : 'b ('a : immediate). 'a -> 'b = +val g : ('b : immediate) 'a. 'a -> 'b = +|}] + +(********************************************) +(* Test 3: Annotation on types in functions *) + +let f : ('a : any) -> 'a = fun x -> x +;; +[%%expect {| +val f : 'a -> 'a = +|}] + +let f : ('a : any). 'a -> 'a = fun x -> x +;; +[%%expect {| +Line 1, characters 8-28: +1 | let f : ('a : any). 'a -> 'a = fun x -> x + ^^^^^^^^^^^^^^^^^^^^ +Error: The universal type variable 'a was declared to have + layout any, but was inferred to have a representable layout. +|}] +(* CR layouts v2.5: This error message should change to complain + about the [fun x], not the arrow type. *) + +(********************************************) +(* Test 4: Annotation on record field types *) + +type r = { field : ('a : immediate). 'a -> 'a } +let f { field } = field 5 +;; +[%%expect {| +type r = { field : ('a : immediate). 'a -> 'a; } +val f : r -> int = +|}] + +let f { field } = field "hello" +;; +[%%expect {| +Line 1, characters 24-31: +1 | let f { field } = field "hello" + ^^^^^^^ +Error: This expression has type string but an expression was expected of type + ('a : immediate) + string has layout value, which is not a sublayout of immediate. +|}] + +let r = { field = fun x -> x } +let r = { field = Fun.id } +;; +[%%expect {| +val r : r = {field = } +val r : r = {field = } +|}] + +let r = { field = fun (type (a : immediate)) (x : a) -> x } +;; +[%%expect {| +val r : r = {field = } +|}] + +let r = { field = fun (type (a : value)) (x : a) -> x } +;; +[%%expect {| +val r : r = {field = } +|}] + +type r_value = { field : 'a. 'a -> 'a } +let r = { field = fun (type a : immediate) (x : a) -> x } + +[%%expect{| +type r_value = { field : 'a. 'a -> 'a; } +Line 2, characters 18-55: +2 | let r = { field = fun (type a : immediate) (x : a) -> x } + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +Error: This field value has type 'b -> 'b which is less general than + 'a. 'a -> 'a + 'a has layout value, which is not a sublayout of immediate. +|}] +(* CR layouts v1.5: that's a pretty awful error message *) + +type ('a : immediate) t_imm + +type s = { f : ('a : value). 'a -> 'a u } +and 'a u = 'a t_imm + +[%%expect{| +type ('a : immediate) t_imm +Line 3, characters 15-39: +3 | type s = { f : ('a : value). 'a -> 'a u } + ^^^^^^^^^^^^^^^^^^^^^^^^ +Error: Type 'a has layout value, which is not a sublayout of immediate. +|}] +(* CR layouts v1.5: the location on that message is wrong. But it's hard + to improve, because it comes from re-checking typedtree, where we don't + have locations any more. I conjecture the same location problem exists + when constraints aren't satisfied. *) + +(********************) +(* Test 5: newtypes *) + +let f = fun (type (a : value)) (x : a) -> x +;; +[%%expect {| +val f : 'a -> 'a = +|}] + +let f = fun (type (a : immediate)) (x : a) -> x +;; +[%%expect {| +val f : ('a : immediate). 'a -> 'a = +|}] + +let f = fun (type (a : any)) (x : a) -> x +;; +[%%expect {| +Line 1, characters 29-36: +1 | let f = fun (type (a : any)) (x : a) -> x + ^^^^^^^ +Error: This pattern matches values of type a + but a pattern was expected which matches values of type + ('a : '_representable_layout_1) + a has layout any, which is not representable. +|}] + +(****************************************) +(* Test 6: abstract universal variables *) + +let f : type (a : value). a -> a = fun x -> x +;; +[%%expect {| +val f : 'a -> 'a = +|}] + +let f : type (a : immediate). a -> a = fun x -> x +;; +[%%expect {| +val f : ('a : immediate). 'a -> 'a = +|}] + +let f : type (a : any). a -> a = fun x -> x +;; +[%%expect {| +Line 1, characters 4-43: +1 | let f : type (a : any). a -> a = fun x -> x + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +Error: The universal type variable 'a was declared to have + layout any, but was inferred to have a representable layout. +|}] +(* CR layouts v2.5: This error message will change to complain + about the fun x, not the arrow type. *) + +(**************************************************) +(* Test 7: Defaulting universal variable to value *) + +module type S = sig + val f : 'a. 'a t2_imm -> 'a t2_imm +end +;; +[%%expect {| +Line 2, characters 10-36: +2 | val f : 'a. 'a t2_imm -> 'a t2_imm + ^^^^^^^^^^^^^^^^^^^^^^^^^^ +Error: The universal type variable 'a was defaulted to have + layout value, but was inferred to have layout immediate. +|}] + +let f : 'a. 'a t2_imm -> 'a t2_imm = fun x -> x + +[%%expect {| +Line 1, characters 8-34: +1 | let f : 'a. 'a t2_imm -> 'a t2_imm = fun x -> x + ^^^^^^^^^^^^^^^^^^^^^^^^^^ +Error: The universal type variable 'a was defaulted to have + layout value, but was inferred to have layout immediate. +|}] + +(********************************************) +(* Test 8: Annotation on universal variable *) + +module type S = sig + val f : ('a : value). 'a t2_imm -> 'a t2_imm +end +;; +[%%expect {| +Line 2, characters 10-46: +2 | val f : ('a : value). 'a t2_imm -> 'a t2_imm + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +Error: The universal type variable 'a was declared to have + layout value, but was inferred to have layout immediate. +|}] + +module type S = sig + val f : 'a t2_imm -> 'a t2_imm + val g : ('a : immediate). 'a t2_imm -> 'a t2_imm +end +;; +[%%expect {| +module type S = + sig + val f : ('a : immediate). 'a t2_imm -> 'a t2_imm + val g : ('a : immediate). 'a t2_imm -> 'a t2_imm + end +|}] + +(************************************************************) +(* Test 9: Annotation on universal in polymorphic parameter *) + +let f (x : ('a : immediate). 'a -> 'a) = x "string" + +[%%expect {| +Line 1, characters 43-51: +1 | let f (x : ('a : immediate). 'a -> 'a) = x "string" + ^^^^^^^^ +Error: This expression has type string but an expression was expected of type + ('a : immediate) + string has layout value, which is not a sublayout of immediate. +|}] + +(**************************************) +(* Test 10: Parsing & pretty-printing *) + +let f (type a : immediate) (x : a) = x + +[%%expect{| +val f : ('a : immediate). 'a -> 'a = +|}] + +let f = fun (type a : immediate) (x : a) -> x + +[%%expect{| +val f : ('a : immediate). 'a -> 'a = +|}] + +let f = fun (type a : value) (x : a) -> x + +[%%expect{| +val f : 'a -> 'a = +|}] + +let o = object + method m : type (a : immediate). a -> a = fun x -> x +end + +[%%expect{| +val o : < m : ('a : immediate). 'a -> 'a > = +|}] + +let f : type (a : immediate). a -> a = fun x -> x + +[%%expect{| +val f : ('a : immediate). 'a -> 'a = +|}] + +let f x = + let local_ g (type a : immediate) (x : a) = x in + g x [@nontail] + +[%%expect{| +val f : ('a : immediate). 'a -> 'a = +|}] + +let f = fun x y (type (a : immediate)) (z : a) -> z + +[%%expect{| +val f : ('a : immediate) 'c 'b. 'b -> 'c -> 'a -> 'a = +|}] + +let f = fun x y (type a : immediate) (z : a) -> z + +[%%expect{| +val f : ('a : immediate) 'c 'b. 'b -> 'c -> 'a -> 'a = +|}] +(* CR layouts: canonicalizing the order of quantification here + would reduce wibbles in error messages *) + +external f : ('a : immediate). 'a -> 'a = "%identity" + +[%%expect{| +external f : ('a : immediate). 'a -> 'a = "%identity" +|}] + + +type (_ : any) t2_any +exception E : ('a : immediate) ('b : any). 'b t2_any * 'a list -> exn + +[%%expect{| +type (_ : any) t2_any +exception E : ('a : immediate) ('b : any). 'b t2_any * 'a list -> exn +|}] + + +let f (x : ('a : immediate). 'a -> 'a) = x 3, x true + +[%%expect{| +val f : (('a : immediate). 'a -> 'a) -> int * bool = +|}] + +type _ a = Mk : [> ] * ('a : immediate) -> int a + +[%%expect {| +type _ a = Mk : ('a : immediate). [> ] * 'a -> int a +|}] + +let f_imm : ('a : immediate). 'a -> 'a = fun x -> x + +[%%expect {| +val f_imm : ('a : immediate). 'a -> 'a = +|}] + +let f_val : ('a : value). 'a -> 'a = fun x -> f_imm x + +[%%expect {| +Line 1, characters 37-53: +1 | let f_val : ('a : value). 'a -> 'a = fun x -> f_imm x + ^^^^^^^^^^^^^^^^ +Error: This definition has type 'b -> 'b which is less general than + 'a. 'a -> 'a + 'a has layout value, which is not a sublayout of immediate. +|}] + +type (_ : value) g = + | MkG : ('a : immediate). 'a g + +[%%expect {| +type _ g = MkG : ('a : immediate). 'a g +|}] + +type t = int as (_ : immediate) + +[%%expect {| +type t = int +|}] diff --git a/testsuite/tests/typing-layouts/basics.ml b/testsuite/tests/typing-layouts/basics.ml index 08239ff724c..94566fa56bb 100644 --- a/testsuite/tests/typing-layouts/basics.ml +++ b/testsuite/tests/typing-layouts/basics.ml @@ -1,29 +1,30 @@ (* TEST * expect + flags = "-extension layouts" *) -type t_value [@@value] -type t_imm [@@immediate] -type t_imm64 [@@immediate64];; +type t_value : value +type t_imm : immediate +type t_imm64 : immediate64;; [%%expect{| -type t_value [@@value] -type t_imm [@@immediate] -type t_imm64 [@@immediate64] +type t_value : value +type t_imm : immediate +type t_imm64 : immediate64 |}] -type t_any [@@any];; +type t_any : any;; [%%expect{| -Line 1, characters 13-20: -1 | type t_any [@@any];; - ^^^^^^^ +Line 1, characters 15-18: +1 | type t_any : any;; + ^^^ Error: Layout any is used here, but the appropriate layouts extension is not enabled |}];; -type t_void [@@void];; +type t_void : void;; [%%expect{| -Line 1, characters 13-21: -1 | type t_void [@@void];; - ^^^^^^^^ +Line 1, characters 15-19: +1 | type t_void : void;; + ^^^^ Error: Layout void is used here, but the appropriate layouts extension is not enabled |}];; @@ -53,12 +54,13 @@ module type S = sig val f1 : t_value -> t_value val f2 : t_imm -> t_imm64 end (* CR layouts: mostly moved to [basics_beta.ml]. Bring back here when we allow annotations on parameters by default. *) -type 'a [@immediate] imm_id = 'a;; +type ('a : immediate) imm_id = 'a;; [%%expect{| -Line 1, characters 8-20: -1 | type 'a [@immediate] imm_id = 'a;; - ^^^^^^^^^^^^ -Error: Layout immediate is used here, but the appropriate layouts extension is not enabled +Line 1, characters 11-20: +1 | type ('a : immediate) imm_id = 'a;; + ^^^^^^^^^ +Error: Layout immediate is more experimental than allowed by -extension layouts. + You must enable -extension layouts_beta to use this feature. |}];; (************************************) @@ -121,7 +123,8 @@ end;; Line 4, characters 13-22: 4 | type ('a : immediate) t = 'a ^^^^^^^^^ -Error: Layout immediate is used here, but the appropriate layouts extension is not enabled +Error: Layout immediate is more experimental than allowed by -extension layouts. + You must enable -extension layouts_beta to use this feature. |}] (**************************************************************) @@ -139,7 +142,8 @@ end;; Line 2, characters 13-17: 2 | type ('a : void) t = { x : int; v : 'a } ^^^^ -Error: Layout void is used here, but the appropriate layouts extension is not enabled +Error: Layout void is more experimental than allowed by -extension layouts. + You must enable -extension layouts_alpha to use this feature. |}] (*******************************************************************) @@ -178,11 +182,11 @@ and foo14 = string (* CR layouts: This test moved to [basics_alpha.ml] as it needs a non-value sort. Bring back here when we have one enabled by default. *) -type 'a t_void_16 [@@void];; +type 'a t_void_16 : void;; [%%expect{| -Line 1, characters 18-26: -1 | type 'a t_void_16 [@@void];; - ^^^^^^^^ +Line 1, characters 20-24: +1 | type 'a t_void_16 : void;; + ^^^^ Error: Layout void is used here, but the appropriate layouts extension is not enabled |}];; @@ -239,11 +243,11 @@ val f18 : 'a -> 'a = (* CR layouts: This test moved to [basics_alpha.ml] as it needs a non-value sort. Bring back here when we have one enabled by default. *) -type t_void [@@void];; +type t_void : void;; [%%expect{| -Line 1, characters 12-20: -1 | type t_void [@@void];; - ^^^^^^^^ +Line 1, characters 14-18: +1 | type t_void : void;; + ^^^^ Error: Layout void is used here, but the appropriate layouts extension is not enabled |}];; @@ -303,13 +307,13 @@ Error: Layout void is used here, but the appropriate layouts extension is not en (**************************************************) (* Test 31: checking that #poly_var patterns work *) -(* CR layouts: This test moves to [basics_alpha.ml] as it needs a non-value +(* CR layouts: This test moved to [basics_alpha.ml] as it needs a non-value sort. Bring back here when we have one enabled by default. *) (*********************************************************) (* Test 32: Polymorphic variant constructors take values *) -(* CR layouts: This test moves to [basics_alpha.ml] as it needs a non-value +(* CR layouts: This test moved to [basics_alpha.ml] as it needs a non-value sort. Bring back here when we have one enabled by default. *) (******************************************************) @@ -318,3 +322,9 @@ Error: Layout void is used here, but the appropriate layouts extension is not en (* CR layouts v2.5: This test moved to [basics_alpha.ml] as it needs a non-representable layout. Bring it back here when we can mention [t_any] in [-extension layouts]. *) + +(****************************************************) +(* Test 34: Layout clash in polymorphic record type *) + +(* CR layouts: This test moved to [basics_beta.ml] as it needs an immediate + type parameter. Bring back here when we have one enabled by default. *) diff --git a/testsuite/tests/typing-layouts/basics_alpha.ml b/testsuite/tests/typing-layouts/basics_alpha.ml index 1822bbdd703..014d3334559 100644 --- a/testsuite/tests/typing-layouts/basics_alpha.ml +++ b/testsuite/tests/typing-layouts/basics_alpha.ml @@ -3,22 +3,22 @@ * expect *) -type t_any [@@any] -type t_value [@@value] -type t_imm [@@immediate] -type t_imm64 [@@immediate64] -type t_void [@@void] +type t_any : any +type t_value : value +type t_imm : immediate +type t_imm64 : immediate64 +type t_void : void type void_variant = VV of t_void type void_record = {vr_void : t_void; vr_int : int} type void_unboxed_record = { vur_void : t_void } [@@unboxed];; [%%expect{| -type t_any [@@any] -type t_value [@@value] -type t_imm [@@immediate] -type t_imm64 [@@immediate64] -type t_void [@@void] +type t_any : any +type t_value : value +type t_imm : immediate +type t_imm64 : immediate64 +type t_void : void type void_variant = VV of t_void type void_record = { vr_void : t_void; vr_int : int; } type void_unboxed_record = { vur_void : t_void; } [@@unboxed] @@ -49,7 +49,7 @@ Error: Function argument types must have a representable layout. |}];; module type S1 = sig - type t [@@any] + type t : any type 'a s = 'a -> int constraint 'a = t end;; @@ -63,7 +63,7 @@ Error: The type constraints are not consistent. |}] module type S1 = sig - type t [@@any] + type t : any type 'a s = int -> 'a constraint 'a = t end;; @@ -139,13 +139,13 @@ module type S2 = sig val f : int -> void_unboxed_record end |}];; module type S2 = sig - type t [@@void] + type t : void type s = r -> int and r = t end;; [%%expect{| -module type S2 = sig type t [@@void] type s = r -> int and r = t end +module type S2 = sig type t : void type s = r -> int and r = t end |}] module type S2 = sig @@ -156,13 +156,12 @@ module type S2 = sig val f : int -> t_void end |}];; module type S = sig - type t [@@void] + type t : void type 'a s = 'a -> int constraint 'a = t end;; [%%expect{| -module type S = - sig type t [@@void] type 'a s = 'a -> int constraint 'a = t end +module type S = sig type t : void type 'a s = 'a -> int constraint 'a = t end |}] module F2 (X : sig val x : t_void end) = struct @@ -190,7 +189,7 @@ Error: Non-value layout void detected in [Typeopt.layout] as sort for type (**************************************) (* Test 3: basic annotated parameters *) -type 'a [@immediate] imm_id = 'a +type ('a : immediate) imm_id = 'a [%%expect{| type ('a : immediate) imm_id = 'a @@ -220,7 +219,7 @@ let id_for_imms (x : 'a imm_id) = x let three = id_for_imms 3 let true_ = id_for_imms true;; [%%expect{| -val id_for_imms : 'a imm_id -> 'a imm_id = +val id_for_imms : ('a : immediate). 'a imm_id -> 'a imm_id = val three : int imm_id = 3 val true_ : bool imm_id = true |}] @@ -237,7 +236,7 @@ Error: This expression has type string but an expression was expected of type (************************************) (* Test 4: parameters and recursion *) -type 'a [@immediate] t4 +type ('a : immediate) t4 and s4 = string t4;; [%%expect{| @@ -249,7 +248,7 @@ Error: This type string should be an instance of type ('a : immediate) |}];; type s4 = string t4 -and 'a [@immediate] t4;; +and ('a : immediate) t4;; [%%expect{| Line 1, characters 10-16: @@ -260,7 +259,7 @@ Error: This type string should be an instance of type ('a : immediate) |}] type s4 = int t4 -and 'a [@immediate] t4;; +and ('a : immediate) t4;; [%%expect{| type s4 = int t4 @@ -268,7 +267,7 @@ and ('a : immediate) t4 |}] type s4 = s5 t4 -and 'a [@immediate] t4 +and ('a : immediate) t4 and s5 = int;; [%%expect{| @@ -278,7 +277,7 @@ and s5 = int |}] type s4 = s5 t4 -and 'a [@immediate] t4 +and ('a : immediate) t4 and s5 = string;; [%%expect{| @@ -290,7 +289,7 @@ Error: |}] (* CR layouts v2.9: improve error, which will require layout histories *) -type 'a [@any] t4 = 'a +type ('a : any) t4 = 'a and s4 = string t4;; [%%expect{| type ('a : any) t4 = 'a @@ -298,7 +297,7 @@ and s4 = string t4 |}];; type s4 = string t4 -and 'a [@any] t4;; +and ('a : any) t4;; [%%expect{| type s4 = string t4 and ('a : any) t4 @@ -310,8 +309,8 @@ and ('a : any) t4 (* CR layouts v5: these tests should be updated to allow returning void, and moved to [basics_beta.ml]. *) -type 'a [@void] void5 = Void5 of 'a -type 'a [@any] any5 = Any5 of 'a +type ('a : void) void5 = Void5 of 'a +type ('a : any) any5 = Any5 of 'a let id5 : 'a void5 -> 'a void5 = function | Void5 x -> Void5 x @@ -422,7 +421,7 @@ Error: This method has type 'b -> unit which is less general than (*****************************************) (* Test 7: the layout check in unify_var *) -type 'a [@immediate] t7 = Foo7 of 'a +type ('a : immediate) t7 = Foo7 of 'a type t7' = (int * int) t7;; [%%expect{| @@ -649,10 +648,17 @@ Lines 3-9, characters 6-3: 9 | end.. Error: Signature mismatch: Modules do not match: - sig type ('a : immediate) t = 'a val f : 'a t -> 'a val x : 'a end + sig + type ('a : immediate) t = 'a + val f : ('a : immediate). 'a t -> 'a + val x : ('a : immediate). 'a + end is not included in sig val x : string end - Values do not match: val x : 'a is not included in val x : string + Values do not match: + val x : ('a : immediate). 'a + is not included in + val x : string The type string is not compatible with the type string string has layout value, which is not a sublayout of immediate. |}];; @@ -681,12 +687,15 @@ Error: Signature mismatch: Modules do not match: sig type ('a : immediate) t = 'a - val f : 'a t -> 'a t - val x : 'a t + val f : ('a : immediate). 'a t -> 'a t + val x : ('a : immediate). 'a t end is not included in sig val x : string end - Values do not match: val x : 'a t is not included in val x : string + Values do not match: + val x : ('a : immediate). 'a t + is not included in + val x : string The type string t = string is not compatible with the type string string has layout value, which is not a sublayout of immediate. |}] @@ -1049,11 +1058,11 @@ type ('a : void, 'b) foo15 = 'a t15 -> 'a t15 constraint 'b = 'a (********************************************************) (* Test 16: seperability: [msig_of_external_type] logic *) -type 'a t_void_16 [@@void] +type 'a t_void_16 : void type t_16 = T_16 : 'a t_void_16 -> t_16 [@@unboxed];; [%%expect{| -type 'a t_void_16 [@@void] +type 'a t_void_16 : void type t_16 = T_16 : 'a t_void_16 -> t_16 [@@unboxed] |}];; @@ -1139,15 +1148,15 @@ Error: Non-value layout void detected in [Typeopt.layout] as sort for type (***************************************************************) (* Test 22: approx_type catch-all can't be restricted to value *) -type t_void [@@void] +type t_void : void -type ('a [@void]) r = { x : int; y : 'a } +type ('a : void) r = { x : int; y : 'a } let f () = let rec g { x = x ; y = y } : _ r = g { x; y } in g (failwith "foo");; [%%expect{| -type t_void [@@void] +type t_void : void type ('a : void) r = { x : int; y : 'a; } Lines 5-7, characters 6-20: 5 | ......() = @@ -1161,14 +1170,14 @@ Error: Non-value detected in [value_kind]. (********************************************************************) (* Test 23: checking the error message from impossible GADT matches *) -type (_ [@any], _ [@any]) eq = Refl : ('a, 'a) eq +type (_ : any, _ : any) eq = Refl : ('a, 'a) eq module M : sig - type t_void [@@void] - type t_imm [@@immediate] + type t_void : void + type t_imm : immediate end = struct - type t_void [@@void] - type t_imm [@@immediate] + type t_void : void + type t_imm : immediate end (* these are abstract, so the only trouble with unifying them in a GADT match is around their layouts *) @@ -1178,8 +1187,8 @@ let f (x : (M.t_void, M.t_imm) eq) = | Refl -> () [%%expect{| -type (_ : any, _ : any) eq = Refl : ('a, 'a) eq -module M : sig type t_void [@@void] type t_imm [@@immediate] end +type (_ : any, _ : any) eq = Refl : ('a : any). ('a, 'a) eq +module M : sig type t_void : void type t_imm : immediate end Line 15, characters 4-8: 15 | | Refl -> () ^^^^ @@ -1195,12 +1204,12 @@ Error: This pattern matches values of type (M.t_void, M.t_void) eq (*****************************************************) (* Test 24: Polymorphic parameter with exotic layout *) -type 'a t2_void [@@void] +type 'a t2_void : void let f (x : 'a. 'a t2_void) = x [%%expect{| -type 'a t2_void [@@void] +type 'a t2_void : void Line 3, characters 6-30: 3 | let f (x : 'a. 'a t2_void) = x ^^^^^^^^^^^^^^^^^^^^^^^^ @@ -1476,3 +1485,8 @@ Error: This type signature for foo33 is not a value type. foo33 has layout any, which is not a sublayout of value. |}] + +(****************************************************) +(* Test 34: Layout clash in polymorphic record type *) + +(* tested elsewhere *) diff --git a/testsuite/tests/typing-layouts/basics_beta.ml b/testsuite/tests/typing-layouts/basics_beta.ml index 15b4c0ceda9..3d203aad952 100644 --- a/testsuite/tests/typing-layouts/basics_beta.ml +++ b/testsuite/tests/typing-layouts/basics_beta.ml @@ -3,29 +3,29 @@ * expect *) -type t_value [@@value] -type t_imm [@@immediate] -type t_imm64 [@@immediate64];; +type t_value : value +type t_imm : immediate +type t_imm64 : immediate64;; [%%expect{| -type t_value [@@value] -type t_imm [@@immediate] -type t_imm64 [@@immediate64] +type t_value : value +type t_imm : immediate +type t_imm64 : immediate64 |}] -type t_any [@@any];; +type t_any : any;; [%%expect{| -Line 1, characters 13-20: -1 | type t_any [@@any];; - ^^^^^^^ +Line 1, characters 15-18: +1 | type t_any : any;; + ^^^ Error: Layout any is used here, but the appropriate layouts extension is not enabled |}];; -type t_void [@@void];; +type t_void : void;; [%%expect{| -Line 1, characters 13-21: -1 | type t_void [@@void];; - ^^^^^^^^ +Line 1, characters 15-19: +1 | type t_void : void;; + ^^^^ Error: Layout void is used here, but the appropriate layouts extension is not enabled |}];; @@ -51,7 +51,7 @@ module type S = sig val f1 : t_value -> t_value val f2 : t_imm -> t_imm64 end (**************************************) (* Test 3: basic annotated parameters *) -type 'a [@immediate] imm_id = 'a +type ('a : immediate) imm_id = 'a [%%expect{| type ('a : immediate) imm_id = 'a @@ -81,7 +81,7 @@ let id_for_imms (x : 'a imm_id) = x let three = id_for_imms 3 let true_ = id_for_imms true;; [%%expect{| -val id_for_imms : 'a imm_id -> 'a imm_id = +val id_for_imms : ('a : immediate). 'a imm_id -> 'a imm_id = val three : int imm_id = 3 val true_ : bool imm_id = true |}] @@ -98,7 +98,7 @@ Error: This expression has type string but an expression was expected of type (************************************) (* Test 4: parameters and recursion *) -type 'a [@immediate] t4 +type ('a : immediate) t4 and s4 = string t4;; [%%expect{| @@ -110,7 +110,7 @@ Error: This type string should be an instance of type ('a : immediate) |}];; type s4 = string t4 -and 'a [@immediate] t4;; +and ('a : immediate) t4;; [%%expect{| Line 1, characters 10-16: @@ -121,7 +121,7 @@ Error: This type string should be an instance of type ('a : immediate) |}] type s4 = int t4 -and 'a [@immediate] t4;; +and ('a : immediate) t4;; [%%expect{| type s4 = int t4 @@ -129,7 +129,7 @@ and ('a : immediate) t4 |}] type s4 = s5 t4 -and 'a [@immediate] t4 +and ('a : immediate) t4 and s5 = int;; [%%expect{| @@ -139,7 +139,7 @@ and s5 = int |}] type s4 = s5 t4 -and 'a [@immediate] t4 +and ('a : immediate) t4 and s5 = string;; [%%expect{| @@ -151,40 +151,34 @@ Error: |}] (* CR layouts v2.9: improve error, which requires layout histories *) -(* CR layouts: bring [@any] and [@void] bits back here from [basics_alpha.ml] when we allow +(* CR layouts: bring [: any] and [: void] bits back here from [basics_alpha.ml] when we allow them in beta. *) -type 'a [@any] t4 = 'a +type ('a : any) t4 = 'a and s4 = string t4;; [%%expect{| -Line 1, characters 8-14: -1 | type 'a [@any] t4 = 'a - ^^^^^^ -Error: Layout any is used here, but the appropriate layouts extension is not enabled +type ('a : any) t4 = 'a +and s4 = string t4 |}];; type s4 = string t4 -and 'a [@any] t4;; +and ('a : any) t4;; [%%expect{| -Line 2, characters 7-13: -2 | and 'a [@any] t4;; - ^^^^^^ -Error: Layout any is used here, but the appropriate layouts extension is not enabled +type s4 = string t4 +and ('a : any) t4 |}];; -type 'a [@void] void4 = Void4 of 'a;; +type ('a : void) void4 = Void4 of 'a;; [%%expect{| -Line 1, characters 8-15: -1 | type 'a [@void] void4 = Void4 of 'a;; - ^^^^^^^ -Error: Layout void is used here, but the appropriate layouts extension is not enabled +Line 1, characters 11-15: +1 | type ('a : void) void4 = Void4 of 'a;; + ^^^^ +Error: Layout void is more experimental than allowed by -extension layouts_beta. + You must enable -extension layouts_alpha to use this feature. |}];; -type 'a [@any] any4 = Any4 of 'a +type ('a : any) any4 = Any4 of 'a [%%expect{| -Line 1, characters 8-14: -1 | type 'a [@any] any4 = Any4 of 'a - ^^^^^^ -Error: Layout any is used here, but the appropriate layouts extension is not enabled +type 'a any4 = Any4 of 'a |}];; (************************************************************) @@ -238,7 +232,7 @@ Error: This method has type 'b -> unit which is less general than (*****************************************) (* Test 7: the layout check in unify_var *) -type 'a [@immediate] t7 = Foo7 of 'a +type ('a : immediate) t7 = Foo7 of 'a type t7' = (int * int) t7;; [%%expect{| @@ -290,10 +284,17 @@ Lines 3-9, characters 6-3: 9 | end.. Error: Signature mismatch: Modules do not match: - sig type ('a : immediate) t = 'a val f : 'a t -> 'a val x : 'a end + sig + type ('a : immediate) t = 'a + val f : ('a : immediate). 'a t -> 'a + val x : ('a : immediate). 'a + end is not included in sig val x : string end - Values do not match: val x : 'a is not included in val x : string + Values do not match: + val x : ('a : immediate). 'a + is not included in + val x : string The type string is not compatible with the type string string has layout value, which is not a sublayout of immediate. |}];; @@ -322,12 +323,15 @@ Error: Signature mismatch: Modules do not match: sig type ('a : immediate) t = 'a - val f : 'a t -> 'a t - val x : 'a t + val f : ('a : immediate). 'a t -> 'a t + val x : ('a : immediate). 'a t end is not included in sig val x : string end - Values do not match: val x : 'a t is not included in val x : string + Values do not match: + val x : ('a : immediate). 'a t + is not included in + val x : string The type string t = string is not compatible with the type string string has layout value, which is not a sublayout of immediate. |}] @@ -348,7 +352,8 @@ end;; Line 2, characters 13-17: 2 | type ('a : void) t = { x : int; v : 'a } ^^^^ -Error: Layout void is used here, but the appropriate layouts extension is not enabled +Error: Layout void is more experimental than allowed by -extension layouts_beta. + You must enable -extension layouts_alpha to use this feature. |}] (*******************************************************************) @@ -389,11 +394,11 @@ and foo14 = string (* CR layouts v2.5: This test moved to [basics_alpha.ml] as it needs a non-value sort. Bring back here when we have one. *) -type 'a t_void_16 [@@void];; +type 'a t_void_16 : void;; [%%expect{| -Line 1, characters 18-26: -1 | type 'a t_void_16 [@@void];; - ^^^^^^^^ +Line 1, characters 20-24: +1 | type 'a t_void_16 : void;; + ^^^^ Error: Layout void is used here, but the appropriate layouts extension is not enabled |}];; @@ -450,11 +455,11 @@ val f18 : 'a -> 'a = (* CR layouts: This test moved to [basics_alpha.ml] as it needs a non-value sort. Bring back here when we have one. *) -type t_void [@@void];; +type t_void : void;; [%%expect{| -Line 1, characters 12-20: -1 | type t_void [@@void];; - ^^^^^^^^ +Line 1, characters 14-18: +1 | type t_void : void;; + ^^^^ Error: Layout void is used here, but the appropriate layouts extension is not enabled |}];; @@ -524,3 +529,19 @@ Error: Layout void is used here, but the appropriate layouts extension is not en (* CR layouts v5: This test moved to [basics_alpha.ml] as it needs a non-representable layout. Bring it back here when we can mention [t_any] in [-extension layouts_beta]. *) + +(****************************************************) +(* Test 34: Layout clash in polymorphic record type *) + +type ('a : immediate) t2_imm + +type s = { f : ('a : value) . 'a -> 'a u } +and 'a u = 'a t2_imm + +[%%expect {| +type ('a : immediate) t2_imm +Line 3, characters 15-40: +3 | type s = { f : ('a : value) . 'a -> 'a u } + ^^^^^^^^^^^^^^^^^^^^^^^^^ +Error: Type 'a has layout value, which is not a sublayout of immediate. +|}] diff --git a/testsuite/tests/typing-layouts/datatypes.ml b/testsuite/tests/typing-layouts/datatypes.ml index 031634f5257..76cf4b8effd 100644 --- a/testsuite/tests/typing-layouts/datatypes.ml +++ b/testsuite/tests/typing-layouts/datatypes.ml @@ -1,31 +1,32 @@ (* TEST * expect + flags = "-extension layouts" *) (* Tests for layouts in algebraic datatypes *) (* CR layouts v5: add mixed block restriction tests. *) -type t_value [@@value] -type t_immediate [@@immediate];; +type t_value : value +type t_immediate : immediate;; [%%expect {| -type t_value [@@value] -type t_immediate [@@immediate] +type t_value : value +type t_immediate : immediate |}];; -type t_any [@@any];; +type t_any : any;; [%%expect{| -Line 1, characters 11-18: -1 | type t_any [@@any];; - ^^^^^^^ +Line 1, characters 13-16: +1 | type t_any : any;; + ^^^ Error: Layout any is used here, but the appropriate layouts extension is not enabled |}];; -type t_void [@@void];; +type t_void : void;; [%%expect{| -Line 1, characters 12-20: -1 | type t_void [@@void];; - ^^^^^^^^ +Line 1, characters 14-18: +1 | type t_void : void;; + ^^^^ Error: Layout void is used here, but the appropriate layouts extension is not enabled |}];; @@ -72,5 +73,16 @@ type t6 = { fld6 : float; } Line 2, characters 11-20: 2 | type ('a : immediate) s6 = S6 of 'a ^^^^^^^^^ -Error: Layout immediate is used here, but the appropriate layouts extension is not enabled +Error: Layout immediate is more experimental than allowed by -extension layouts. + You must enable -extension layouts_beta to use this feature. |}] + +(*****************************************************) +(* Test 7: Recursive propagation of immediacy checks *) + +(* CR layouts: copy test from datatypes_alpha with float64 when available *) + +(***********************************************************************) +(* Test 8: Type parameters in the presence of recursive concrete usage *) + +(* CR layouts: copy test from datatypes_alpha with float64 when available *) diff --git a/testsuite/tests/typing-layouts/datatypes_alpha.ml b/testsuite/tests/typing-layouts/datatypes_alpha.ml index d71a925e84d..460860d670b 100644 --- a/testsuite/tests/typing-layouts/datatypes_alpha.ml +++ b/testsuite/tests/typing-layouts/datatypes_alpha.ml @@ -7,10 +7,10 @@ (* CR layouts v5: add mixed block restriction tests. *) -type t_void [@@void] -type t_any [@@any] -type t_value [@@value] -type t_immediate [@@immediate];; +type t_void : void +type t_any : any +type t_value : value +type t_immediate : immediate;; (***************************************************) (* Test 1: constructor arguments may have any sort *) @@ -22,10 +22,10 @@ type t1_mixed1 = T1_mixed1 of t_void * t_immediate type t1_mixed2 = T1_mixed2 of t_immediate * t_value * t_void type t1_mixed3 = T1_mixed3 of t_value * t_immediate [%%expect {| -type t_void [@@void] -type t_any [@@any] -type t_value [@@value] -type t_immediate [@@immediate] +type t_void : void +type t_any : any +type t_value : value +type t_immediate : immediate type t1_void = T1_void of t_void type t1_value = T1_value of t_value type t1_immediate = T1_immediate of t_immediate @@ -77,8 +77,9 @@ Line 2, characters 0-29: 2 | and 'b t1_constraint' = t_any ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Error: - 'a t1_constraint' has layout any, which is not representable. + 'b t1_constraint' has layout any, which is not representable. |}] +(* CR layouts errors: this error is blamed on the wrong piece *) (******************************************************) (* Test 3: void allowed in records, but not by itself *) @@ -291,13 +292,38 @@ Error: This expression has type float but an expression was expected of type (* See Note [Default layouts in transl_declaration] in Typedecl. *) type t7 = A | B | C | D of t7_void and t7_2 = { x : t7 } [@@unboxed] -and t7_void [@@void] +and t7_void : void -type t7_3 = t7_2 [@@immediate] +type t7_3 : immediate = t7_2 [%%expect{| type t7 = A | B | C | D of t7_void and t7_2 = { x : t7; } [@@unboxed] -and t7_void [@@void] -type t7_3 = t7_2 [@@immediate] +and t7_void : void +type t7_3 = t7_2 +|}] + +(***********************************************************************) +(* Test 8: Type parameters in the presence of recursive concrete usage *) + +type ('a : void) void_t + +[%%expect {| +type ('a : void) void_t +|}] + +type 'b t = 'b void_t * t2 +and t2 = t_void void_t + +[%%expect {| +type ('b : void) t = 'b void_t * t2 +and t2 = t_void void_t +|}] + +type 'b t = 'b void_t * t2 +and t2 = Mk1 of t_void t | Mk2 + +[%%expect {| +type ('b : void) t = 'b void_t * t2 +and t2 = Mk1 of t_void t | Mk2 |}] diff --git a/testsuite/tests/typing-layouts/datatypes_beta.ml b/testsuite/tests/typing-layouts/datatypes_beta.ml index 1c03383a7cc..d3d3a696376 100644 --- a/testsuite/tests/typing-layouts/datatypes_beta.ml +++ b/testsuite/tests/typing-layouts/datatypes_beta.ml @@ -7,26 +7,26 @@ (* CR layouts v5: add mixed block restriction tests. *) -type t_value [@@value] -type t_immediate [@@immediate];; +type t_value : value +type t_immediate : immediate;; [%%expect {| -type t_value [@@value] -type t_immediate [@@immediate] +type t_value : value +type t_immediate : immediate |}];; -type t_any [@@any];; +type t_any : any;; [%%expect{| -Line 1, characters 11-18: -1 | type t_any [@@any];; - ^^^^^^^ +Line 1, characters 13-16: +1 | type t_any : any;; + ^^^ Error: Layout any is used here, but the appropriate layouts extension is not enabled |}];; -type t_void [@@void];; +type t_void : void;; [%%expect{| -Line 1, characters 12-20: -1 | type t_void [@@void];; - ^^^^^^^^ +Line 1, characters 14-18: +1 | type t_void : void;; + ^^^^ Error: Layout void is used here, but the appropriate layouts extension is not enabled |}];; @@ -81,3 +81,13 @@ Error: This expression has type float but an expression was expected of type ('a : immediate) float has layout value, which is not a sublayout of immediate. |}];; + +(*****************************************************) +(* Test 7: Recursive propagation of immediacy checks *) + +(* CR layouts: copy test from datatypes_alpha with float64 when available *) + +(***********************************************************************) +(* Test 8: Type parameters in the presence of recursive concrete usage *) + +(* CR layouts: copy test from datatypes_alpha with float64 when available *) diff --git a/testsuite/tests/typing-layouts/modules.ml b/testsuite/tests/typing-layouts/modules.ml index c74cf36f0c1..9fd3426b7f3 100644 --- a/testsuite/tests/typing-layouts/modules.ml +++ b/testsuite/tests/typing-layouts/modules.ml @@ -1,29 +1,30 @@ (* TEST * expect + flags = "-extension layouts" *) -type t_value [@@value] -type t_imm [@@immediate] -type t_imm64 [@@immediate64];; +type t_value : value +type t_imm : immediate +type t_imm64 : immediate64;; [%%expect {| -type t_value [@@value] -type t_imm [@@immediate] -type t_imm64 [@@immediate64] +type t_value : value +type t_imm : immediate +type t_imm64 : immediate64 |}];; -type t_any [@@any];; +type t_any : any;; [%%expect{| -Line 1, characters 13-20: -1 | type t_any [@@any];; - ^^^^^^^ +Line 1, characters 15-18: +1 | type t_any : any;; + ^^^ Error: Layout any is used here, but the appropriate layouts extension is not enabled |}];; -type t_void [@@void];; +type t_void : void;; [%%expect{| -Line 1, characters 13-21: -1 | type t_void [@@void];; - ^^^^^^^^ +Line 1, characters 15-19: +1 | type t_void : void;; + ^^^^ Error: Layout void is used here, but the appropriate layouts extension is not enabled |}];; @@ -34,14 +35,15 @@ Error: Layout void is used here, but the appropriate layouts extension is not en need a non-value layout. Bring back here when we have one enabled by default. *) module type S1 = sig - type 'a [@void] t + type ('a : void) t type s end;; [%%expect {| -Line 2, characters 10-17: -2 | type 'a [@void] t - ^^^^^^^ -Error: Layout void is used here, but the appropriate layouts extension is not enabled +Line 2, characters 13-17: +2 | type ('a : void) t + ^^^^ +Error: Layout void is more experimental than allowed by -extension layouts. + You must enable -extension layouts_alpha to use this feature. |}];; (* CR layouts: parts of this test moved to [modules_beta.ml] because they need @@ -54,7 +56,8 @@ end;; Line 2, characters 13-22: 2 | type ('a : immediate) t ^^^^^^^^^ -Error: Layout immediate is used here, but the appropriate layouts extension is not enabled +Error: Layout immediate is more experimental than allowed by -extension layouts. + You must enable -extension layouts_beta to use this feature. |}];; (************************************************************************) @@ -65,13 +68,14 @@ Error: Layout immediate is used here, but the appropriate layouts extension is n annotations on type parameters. Bring back here when we turn that on by default. *) module type S2 = sig - type 'a [@immediate] t + type ('a : immediate) t end;; [%%expect{| -Line 2, characters 10-22: -2 | type 'a [@immediate] t - ^^^^^^^^^^^^ -Error: Layout immediate is used here, but the appropriate layouts extension is not enabled +Line 2, characters 13-22: +2 | type ('a : immediate) t + ^^^^^^^^^ +Error: Layout immediate is more experimental than allowed by -extension layouts. + You must enable -extension layouts_beta to use this feature. |}];; (******************************************************************) @@ -102,49 +106,49 @@ end = struct end and Bar3 : sig - type t [@@void] + type t : void end = struct - type t [@@void] + type t : void end;; [%%expect {| -Line 8, characters 9-17: -8 | type t [@@void] - ^^^^^^^^ +Line 8, characters 11-15: +8 | type t : void + ^^^^ Error: Layout void is used here, but the appropriate layouts extension is not enabled |}];; module rec Foo3 : sig - type t = Bar3.t [@@immediate] + type t : immediate = Bar3.t end = struct type t = Bar3.t end and Bar3 : sig - type t [@@value] + type t : value end = struct type t = A end;; [%%expect {| -Line 2, characters 2-31: -2 | type t = Bar3.t [@@immediate] - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +Line 2, characters 2-29: +2 | type t : immediate = Bar3.t + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ Error: Type Bar3.t has layout value, which is not a sublayout of immediate. |}];; module rec Foo3 : sig - type t = Bar3.t [@@immediate] + type t : immediate = Bar3.t end = struct type t = Bar3.t end and Bar3 : sig - type t [@@immediate] + type t : immediate end = struct type t = A end;; [%%expect {| -module rec Foo3 : sig type t = Bar3.t [@@immediate] end -and Bar3 : sig type t [@@immediate] end +module rec Foo3 : sig type t = Bar3.t end +and Bar3 : sig type t : immediate end |}];; (* CR layouts: more bits moved to [modules_alpha.ml] from down here. *) @@ -165,12 +169,12 @@ and Bar3 : sig type t [@@immediate] end without extensions. *) module type S3_2 = sig - type t [@@immediate] + type t : immediate end module type S3_2' = S3_2 with type t := string;; [%%expect{| -module type S3_2 = sig type t [@@immediate] end +module type S3_2 = sig type t : immediate end Line 5, characters 30-46: 5 | module type S3_2' = S3_2 with type t := string;; ^^^^^^^^^^^^^^^^ @@ -184,25 +188,25 @@ Error: Type string has layout value, which is not a sublayout of immediate. been moved to modules_alpha.ml. Bring it back once we have a non-value layout enabled by default. *) module type S6_1 = sig - type t [@@void] + type t : void end [%%expect{| -Line 2, characters 9-17: -2 | type t [@@void] - ^^^^^^^^ +Line 2, characters 11-15: +2 | type t : void + ^^^^ Error: Layout void is used here, but the appropriate layouts extension is not enabled |}] module type S6_5 = sig - type t [@@immediate] + type t : immediate end module type S6_6 = sig val m : (module S6_5 with type t = string) end [%%expect{| -module type S6_5 = sig type t [@@immediate] end +module type S6_5 = sig type t : immediate end Line 6, characters 10-44: 6 | val m : (module S6_5 with type t = string) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -211,7 +215,7 @@ Error: In this `with' constraint, the new definition of t Type declarations do not match: type t is not included in - type t [@@immediate] + type t : immediate the first has layout value, which is not a sublayout of immediate. |}];; @@ -228,7 +232,7 @@ Error: In this `with' constraint, the new definition of t Type declarations do not match: type t is not included in - type t [@@immediate] + type t : immediate the first has layout value, which is not a sublayout of immediate. |}];; @@ -249,7 +253,7 @@ Error: In this `with' constraint, the new definition of t Type declarations do not match: type t is not included in - type t [@@immediate] + type t : immediate the first has layout value, which is not a sublayout of immediate. |}];; diff --git a/testsuite/tests/typing-layouts/modules_alpha.ml b/testsuite/tests/typing-layouts/modules_alpha.ml index d10ae52b80e..7325686413e 100644 --- a/testsuite/tests/typing-layouts/modules_alpha.ml +++ b/testsuite/tests/typing-layouts/modules_alpha.ml @@ -3,28 +3,28 @@ * expect *) -type t_any [@@any] -type t_value [@@value] -type t_imm [@@immediate] -type t_imm64 [@@immediate64] -type t_void [@@void];; +type t_any : any +type t_value : value +type t_imm : immediate +type t_imm64 : immediate64 +type t_void : void;; (*********************************************************) (* Test 1: Simple with type constraints respect layouts. *) module type S1 = sig - type 'a [@void] t + type ('a : void) t type s end;; -type 'a [@void] t1;; +type ('a : void) t1;; module type S1' = S1 with type 'a t = t_void t1 and type s = t_void t1;; [%%expect {| -type t_any [@@any] -type t_value [@@value] -type t_imm [@@immediate] -type t_imm64 [@@immediate64] -type t_void [@@void] +type t_any : any +type t_value : value +type t_imm : immediate +type t_imm64 : immediate64 +type t_void : void module type S1 = sig type ('a : void) t type s end type ('a : void) t1 module type S1' = sig type ('a : void) t = t_void t1 type s = t_void t1 end @@ -93,11 +93,11 @@ Error: Signature mismatch: (* Test 2: with type constraints for fixed types (the complicated case of Type_mod.merge_constraint) *) module type S2 = sig - type 'a [@immediate] t + type ('a : immediate) t end -type 'a [@immediate] r2 = R -type 'a [@immediate] s2 = private [> `A of 'a r2] +type ('a : immediate) r2 = R +type ('a : immediate) s2 = private [> `A of 'a r2] module type T2 = S2 with type 'a t = 'a s2 @@ -109,10 +109,11 @@ module type S2 = sig type ('a : immediate) t end type ('a : immediate) r2 = R type (!'a : immediate) s2 = private [> `A of 'a r2 ] module type T2 = sig type ('a : immediate) t = 'a s2 end -module F2 : functor (X : T2) -> sig val f : unit -> 'a X.t end +module F2 : + functor (X : T2) -> sig val f : ('a : immediate). unit -> 'a X.t end |}] -type 'a [@immediate] s2' = private [> `B of 'a] +type ('a : immediate) s2' = private [> `B of 'a] module type T2' = S2 with type 'a t = 'a s2' module F2' (X : T2') = struct @@ -154,9 +155,9 @@ end = struct end and Bar3 : sig - type t [@@void] + type t : void end = struct - type t [@@void] + type t : void end;; [%%expect {| Line 4, characters 13-19: @@ -167,37 +168,37 @@ Error: Non-value layout void detected in [Typeopt.layout] as sort for type |}];; module rec Foo3 : sig - type t = Bar3.t [@@immediate] + type t : immediate = Bar3.t end = struct type t = Bar3.t end and Bar3 : sig - type t [@@value] + type t : value end = struct type t = A end;; [%%expect {| -Line 2, characters 2-31: -2 | type t = Bar3.t [@@immediate] - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +Line 2, characters 2-29: +2 | type t : immediate = Bar3.t + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ Error: Type Bar3.t has layout value, which is not a sublayout of immediate. |}];; module rec Foo3 : sig - type t = Bar3.t [@@immediate] + type t : immediate = Bar3.t end = struct type t = Bar3.t end and Bar3 : sig - type t [@@immediate] + type t : immediate end = struct type t = A end;; [%%expect {| -module rec Foo3 : sig type t = Bar3.t [@@immediate] end -and Bar3 : sig type t [@@immediate] end +module rec Foo3 : sig type t = Bar3.t end +and Bar3 : sig type t : immediate end |}];; module rec Foo3 : sig @@ -207,7 +208,7 @@ end = struct end and Bar3 : sig - type 'a [@void] t + type ('a : void) t end = struct type 'a t end;; @@ -222,7 +223,7 @@ Error: This type ('a : void) should be an instance of type ('b : value) (* One downside of the current approach - this could be allowed, but isn't. You need to annotate types declared in recursive modules if they need to have layouts other than value, even if it's obvious from the manifest *) -type t3 [@@void] +type t3 : void module rec Foo3 : sig type t = t3 @@ -231,15 +232,15 @@ end = struct end and Bar3 : sig - type 'a [@void] t + type ('a : void) t type s = Foo3.t t end = struct - type 'a [@void] t + type ('a : void) t type s = Foo3.t t end;; [%%expect {| -type t3 [@@void] +type t3 : void Line 12, characters 11-17: 12 | type s = Foo3.t t ^^^^^^ @@ -249,21 +250,21 @@ Error: This type Foo3.t should be an instance of type ('a : void) (* Previous example works with annotation *) module rec Foo3 : sig - type t = t3 [@@void] + type t : void = t3 end = struct type t = t3 end and Bar3 : sig - type 'a [@void] t + type ('a : void) t type s = Foo3.t t end = struct - type 'a [@void] t + type ('a : void) t type s = Foo3.t t end;; [%%expect {| -module rec Foo3 : sig type t = t3 [@@void] end +module rec Foo3 : sig type t = t3 end and Bar3 : sig type ('a : void) t type s = Foo3.t t end |}];; @@ -276,8 +277,8 @@ end module M4 = F4(struct type t = T end) -type 'a [@value] t4_val -type 'a [@void] t4_void +type ('a : value) t4_val +type ('a : void) t4_void type t4 = M4.s t4_val;; [%%expect {| @@ -297,20 +298,20 @@ Error: This type M4.s should be an instance of type ('a : void) M4.s has layout value, which is not a sublayout of void. |}] -module F4'(X : sig type t [@@immediate] end) = struct - type s = Foo of X.t [@@unboxed] [@@immediate] +module F4'(X : sig type t : immediate end) = struct + type s : immediate = Foo of X.t [@@unboxed] end module M4' = F4'(struct type t = T end) -type 'a [@immediate] t4_imm +type ('a : immediate) t4_imm type t4 = M4'.s t4_imm;; [%%expect{| module F4' : - functor (X : sig type t [@@immediate] end) -> - sig type s = Foo of X.t [@@immediate] [@@unboxed] end -module M4' : sig type s [@@immediate] end + functor (X : sig type t : immediate end) -> + sig type s : immediate = Foo of X.t [@@unboxed] end +module M4' : sig type s : immediate end type ('a : immediate) t4_imm type t4 = M4'.s t4_imm |}];; @@ -341,8 +342,9 @@ let x3 = M3_1.f 42 let x3' = M3_1.f "test";; [%%expect{| -module type S3_1 = sig type ('a : immediate) t val f : 'a -> 'a t end -module type S3_1' = sig val f : 'a -> 'a list end +module type S3_1 = + sig type ('a : immediate) t val f : ('a : immediate). 'a -> 'a t end +module type S3_1' = sig val f : ('a : immediate). 'a -> 'a list end module M3_1 : S3_1' val x3 : int list = [42] Line 14, characters 17-23: @@ -354,12 +356,12 @@ Error: This expression has type string but an expression was expected of type |}] module type S3_2 = sig - type t [@@immediate] + type t : immediate end module type S3_2' = S3_2 with type t := string;; [%%expect{| -module type S3_2 = sig type t [@@immediate] end +module type S3_2 = sig type t : immediate end Line 5, characters 30-46: 5 | module type S3_2' = S3_2 with type t := string;; ^^^^^^^^^^^^^^^^ @@ -369,14 +371,14 @@ Error: Type string has layout value, which is not a sublayout of immediate. (*****************************************) (* Test 6: With constraints on packages. *) module type S6_1 = sig - type t [@@void] + type t : void end module type S6_2 = sig val m : (module S6_1 with type t = int) end;; [%%expect{| -module type S6_1 = sig type t [@@void] end +module type S6_1 = sig type t : void end Line 6, characters 10-41: 6 | val m : (module S6_1 with type t = int) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -385,19 +387,19 @@ Error: In this `with' constraint, the new definition of t Type declarations do not match: type t is not included in - type t [@@void] + type t : void the first has layout value, which is not a sublayout of void. |}];; module type S6_3 = sig - type t [@@value] + type t : value end module type S6_4 = sig val m : (module S6_3 with type t = t_void) end;; [%%expect{| -module type S6_3 = sig type t [@@value] end +module type S6_3 = sig type t : value end Line 6, characters 33-34: 6 | val m : (module S6_3 with type t = t_void) ^ @@ -406,14 +408,14 @@ Error: Signature package constraint types must have layout value. |}];; module type S6_5 = sig - type t [@@immediate] + type t : immediate end module type S6_6 = sig val m : (module S6_5 with type t = string) end [%%expect{| -module type S6_5 = sig type t [@@immediate] end +module type S6_5 = sig type t : immediate end Line 6, characters 10-44: 6 | val m : (module S6_5 with type t = string) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -422,7 +424,7 @@ Error: In this `with' constraint, the new definition of t Type declarations do not match: type t is not included in - type t [@@immediate] + type t : immediate the first has layout value, which is not a sublayout of immediate. |}];; @@ -439,7 +441,7 @@ Error: In this `with' constraint, the new definition of t Type declarations do not match: type t is not included in - type t [@@immediate] + type t : immediate the first has layout value, which is not a sublayout of immediate. |}];; @@ -457,7 +459,7 @@ Error: In this `with' constraint, the new definition of t Type declarations do not match: type t is not included in - type t [@@immediate] + type t : immediate the first has layout value, which is not a sublayout of immediate. |}];; diff --git a/testsuite/tests/typing-layouts/modules_beta.ml b/testsuite/tests/typing-layouts/modules_beta.ml index feaaa0671a8..f0c5319fa42 100644 --- a/testsuite/tests/typing-layouts/modules_beta.ml +++ b/testsuite/tests/typing-layouts/modules_beta.ml @@ -3,28 +3,28 @@ * expect *) -type t_value [@@value] -type t_imm [@@immediate] -type t_imm64 [@@immediate64];; +type t_value : value +type t_imm : immediate +type t_imm64 : immediate64;; [%%expect {| -type t_value [@@value] -type t_imm [@@immediate] -type t_imm64 [@@immediate64] +type t_value : value +type t_imm : immediate +type t_imm64 : immediate64 |}];; -type t_any [@@any];; +type t_any : any;; [%%expect{| -Line 1, characters 13-20: -1 | type t_any [@@any];; - ^^^^^^^ +Line 1, characters 15-18: +1 | type t_any : any;; + ^^^ Error: Layout any is used here, but the appropriate layouts extension is not enabled |}];; -type t_void [@@void];; +type t_void : void;; [%%expect{| -Line 1, characters 13-21: -1 | type t_void [@@void];; - ^^^^^^^^ +Line 1, characters 15-19: +1 | type t_void : void;; + ^^^^ Error: Layout void is used here, but the appropriate layouts extension is not enabled |}];; @@ -34,14 +34,15 @@ Error: Layout void is used here, but the appropriate layouts extension is not en (* CR layouts v2.5: parts of this test moved to [modules_alpha.ml] because they need a non-value layout. Bring back here when we have one. *) module type S1 = sig - type 'a [@void] t + type ('a : void) t type s end;; [%%expect {| -Line 2, characters 10-17: -2 | type 'a [@void] t - ^^^^^^^ -Error: Layout void is used here, but the appropriate layouts extension is not enabled +Line 2, characters 13-17: +2 | type ('a : void) t + ^^^^ +Error: Layout void is more experimental than allowed by -extension layouts_beta. + You must enable -extension layouts_alpha to use this feature. |}];; module type S1_2 = sig @@ -110,11 +111,11 @@ Error: Signature mismatch: (* Test 2: with type constraints for fixed types (the complicated case of Type_mod.merge_constraint) *) module type S2 = sig - type 'a [@immediate] t + type ('a : immediate) t end -type 'a [@immediate] r2 = R -type 'a [@immediate] s2 = private [> `A of 'a r2] +type ('a : immediate) r2 = R +type ('a : immediate) s2 = private [> `A of 'a r2] module type T2 = S2 with type 'a t = 'a s2 @@ -126,10 +127,11 @@ module type S2 = sig type ('a : immediate) t end type ('a : immediate) r2 = R type (!'a : immediate) s2 = private [> `A of 'a r2 ] module type T2 = sig type ('a : immediate) t = 'a s2 end -module F2 : functor (X : T2) -> sig val f : unit -> 'a X.t end +module F2 : + functor (X : T2) -> sig val f : ('a : immediate). unit -> 'a X.t end |}] -type 'a [@immediate] s2' = private [> `B of 'a] +type ('a : immediate) s2' = private [> `B of 'a] module type T2' = S2 with type 'a t = 'a s2' module F2' (X : T2') = struct @@ -173,49 +175,49 @@ end = struct end and Bar3 : sig - type t [@@void] + type t : void end = struct - type t [@@void] + type t : void end;; [%%expect {| -Line 8, characters 9-17: -8 | type t [@@void] - ^^^^^^^^ +Line 8, characters 11-15: +8 | type t : void + ^^^^ Error: Layout void is used here, but the appropriate layouts extension is not enabled |}];; module rec Foo3 : sig - type t = Bar3.t [@@immediate] + type t : immediate = Bar3.t end = struct type t = Bar3.t end and Bar3 : sig - type t [@@value] + type t : value end = struct type t = A end;; [%%expect {| -Line 2, characters 2-31: -2 | type t = Bar3.t [@@immediate] - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +Line 2, characters 2-29: +2 | type t : immediate = Bar3.t + ^^^^^^^^^^^^^^^^^^^^^^^^^^^ Error: Type Bar3.t has layout value, which is not a sublayout of immediate. |}];; module rec Foo3 : sig - type t = Bar3.t [@@immediate] + type t : immediate = Bar3.t end = struct type t = Bar3.t end and Bar3 : sig - type t [@@immediate] + type t : immediate end = struct type t = A end;; [%%expect {| -module rec Foo3 : sig type t = Bar3.t [@@immediate] end -and Bar3 : sig type t [@@immediate] end +module rec Foo3 : sig type t = Bar3.t end +and Bar3 : sig type t : immediate end |}];; (* CR layouts v2.5: more bits moved to [modules_alpha.ml] from down here. *) @@ -233,8 +235,8 @@ end module M4 = F4(struct type t = T end) -type 'a [@value] t4_val -(* type 'a [@void] t4_void *) +type ('a : value) t4_val +(* type ('a : void) t4_void *) type t4 = M4.s t4_val;; [%%expect {| @@ -254,20 +256,20 @@ Error: This type M4.s should be an instance of type ('a : void) M4.s has layout value, which is not a sublayout of void. |}] *) -module F4'(X : sig type t [@@immediate] end) = struct - type s = Foo of X.t [@@unboxed] [@@immediate] +module F4'(X : sig type t : immediate end) = struct + type s : immediate = Foo of X.t [@@unboxed] end module M4' = F4'(struct type t = T end) -type 'a [@immediate] t4_imm +type ('a : immediate) t4_imm type t4 = M4'.s t4_imm;; [%%expect{| module F4' : - functor (X : sig type t [@@immediate] end) -> - sig type s = Foo of X.t [@@immediate] [@@unboxed] end -module M4' : sig type s [@@immediate] end + functor (X : sig type t : immediate end) -> + sig type s : immediate = Foo of X.t [@@unboxed] end +module M4' : sig type s : immediate end type ('a : immediate) t4_imm type t4 = M4'.s t4_imm |}];; @@ -300,8 +302,9 @@ let x3 = M3_1.f 42 let x3' = M3_1.f "test";; [%%expect{| -module type S3_1 = sig type ('a : immediate) t val f : 'a -> 'a t end -module type S3_1' = sig val f : 'a -> 'a list end +module type S3_1 = + sig type ('a : immediate) t val f : ('a : immediate). 'a -> 'a t end +module type S3_1' = sig val f : ('a : immediate). 'a -> 'a list end module M3_1 : S3_1' val x3 : int list = [42] Line 14, characters 17-23: @@ -313,12 +316,12 @@ Error: This expression has type string but an expression was expected of type |}] module type S3_2 = sig - type t [@@immediate] + type t : immediate end module type S3_2' = S3_2 with type t := string;; [%%expect{| -module type S3_2 = sig type t [@@immediate] end +module type S3_2 = sig type t : immediate end Line 5, characters 30-46: 5 | module type S3_2' = S3_2 with type t := string;; ^^^^^^^^^^^^^^^^ @@ -332,24 +335,24 @@ Error: Type string has layout value, which is not a sublayout of immediate. been moved to modules_alpha.ml. Bring it back once we have a non-value layout. *) module type S6_1 = sig - type t [@@void] + type t : void end [%%expect{| -Line 2, characters 9-17: -2 | type t [@@void] - ^^^^^^^^ +Line 2, characters 11-15: +2 | type t : void + ^^^^ Error: Layout void is used here, but the appropriate layouts extension is not enabled |}] module type S6_5 = sig - type t [@@immediate] + type t : immediate end module type S6_6 = sig val m : (module S6_5 with type t = string) end [%%expect{| -module type S6_5 = sig type t [@@immediate] end +module type S6_5 = sig type t : immediate end Line 6, characters 10-44: 6 | val m : (module S6_5 with type t = string) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -358,7 +361,7 @@ Error: In this `with' constraint, the new definition of t Type declarations do not match: type t is not included in - type t [@@immediate] + type t : immediate the first has layout value, which is not a sublayout of immediate. |}];; @@ -375,7 +378,7 @@ Error: In this `with' constraint, the new definition of t Type declarations do not match: type t is not included in - type t [@@immediate] + type t : immediate the first has layout value, which is not a sublayout of immediate. |}];; @@ -393,7 +396,7 @@ Error: In this `with' constraint, the new definition of t Type declarations do not match: type t is not included in - type t [@@immediate] + type t : immediate the first has layout value, which is not a sublayout of immediate. |}];; diff --git a/testsuite/tests/typing-layouts/parsing.compilers.reference b/testsuite/tests/typing-layouts/parsing.compilers.reference index 98d9ccef51a..dba6a57c62f 100644 --- a/testsuite/tests/typing-layouts/parsing.compilers.reference +++ b/testsuite/tests/typing-layouts/parsing.compilers.reference @@ -2,11 +2,13 @@ type 'a t0 = 'a list Line 2, characters 11-20: 2 | type ('a : immediate) t0 = 'a list;; ^^^^^^^^^ -Error: Layout immediate is used here, but the appropriate layouts extension is not enabled +Error: Layout immediate is more experimental than allowed by -extension layouts. + You must enable -extension layouts_beta to use this feature. Line 2, characters 11-15: 2 | type ('a : void) t0 = 'a list;; ^^^^ -Error: Layout void is used here, but the appropriate layouts extension is not enabled +Error: Layout void is more experimental than allowed by -extension layouts. + You must enable -extension layouts_alpha to use this feature. Line 2, characters 11-15: 2 | type ('a : valu) t0 = 'a list;; ^^^^ diff --git a/testsuite/tests/typing-layouts/parsing.ml b/testsuite/tests/typing-layouts/parsing.ml index 1ef584e50cb..5da5f7b332d 100644 --- a/testsuite/tests/typing-layouts/parsing.ml +++ b/testsuite/tests/typing-layouts/parsing.ml @@ -1,5 +1,6 @@ (* TEST * toplevel + flags = "-extension layouts" *) type ('a : value) t0 = 'a list;; diff --git a/testsuite/tests/typing-layouts/parsing_beta.compilers.reference b/testsuite/tests/typing-layouts/parsing_beta.compilers.reference index e4a7ed773b4..fbc80531717 100644 --- a/testsuite/tests/typing-layouts/parsing_beta.compilers.reference +++ b/testsuite/tests/typing-layouts/parsing_beta.compilers.reference @@ -3,7 +3,8 @@ type ('a : immediate) t0 = 'a list Line 2, characters 11-15: 2 | type ('a : void) t0 = 'a list;; ^^^^ -Error: Layout void is used here, but the appropriate layouts extension is not enabled +Error: Layout void is more experimental than allowed by -extension layouts_beta. + You must enable -extension layouts_alpha to use this feature. Line 2, characters 11-15: 2 | type ('a : valu) t0 = 'a list;; ^^^^ diff --git a/testsuite/tests/typing-layouts/printing.ml b/testsuite/tests/typing-layouts/printing.ml new file mode 100644 index 00000000000..8f6df2553e2 --- /dev/null +++ b/testsuite/tests/typing-layouts/printing.ml @@ -0,0 +1,29 @@ +(* TEST + * expect + flags = "-verbose-types" +*) + +module M : sig + val f : int -> bool -> char +end = struct + let f () _ = () +end + +[%%expect{| +Lines 3-5, characters 6-3: +3 | ......struct +4 | let f () _ = () +5 | end +Error: Signature mismatch: + Modules do not match: + sig val f : ('a : '_representable_layout_1). unit -> 'a -> unit end + is not included in + sig val f : int -> bool -> char end + Values do not match: + val f : ('a : '_representable_layout_1). unit -> 'a -> unit + is not included in + val f : int -> bool -> char + The type unit -> 'a -> unit is not compatible with the type + int -> bool -> char + Type unit is not compatible with type int +|}] diff --git a/testsuite/tests/typing-layouts/void.ml b/testsuite/tests/typing-layouts/void.ml index caf0b564895..8d793660169 100644 --- a/testsuite/tests/typing-layouts/void.ml +++ b/testsuite/tests/typing-layouts/void.ml @@ -4,10 +4,10 @@ (* CR layouts: all tests from this file moved to [void_alpha.ml]. Move back here when the stuff from v5 no longer needs extension flags. *) -type t_void [@@void];; +type t_void : void;; [%%expect {| -Line 1, characters 12-20: -1 | type t_void [@@void];; - ^^^^^^^^ +Line 1, characters 14-18: +1 | type t_void : void;; + ^^^^ Error: Layout void is used here, but the appropriate layouts extension is not enabled |}] diff --git a/testsuite/tests/typing-layouts/void_alpha.ml b/testsuite/tests/typing-layouts/void_alpha.ml index 6c5914a1ede..c9c9a3f1cb7 100644 --- a/testsuite/tests/typing-layouts/void_alpha.ml +++ b/testsuite/tests/typing-layouts/void_alpha.ml @@ -8,11 +8,11 @@ (* CR layouts v5: eliminate various restructions about how void is used from this file. *) -type t_void [@@void] +type t_void : void type void_rec = { v : t_void } [@@unboxed];; [%%expect{| -type t_void [@@void] +type t_void : void type void_rec = { v : t_void; } [@@unboxed] |}] diff --git a/testsuite/tests/typing-layouts/void_beta.ml b/testsuite/tests/typing-layouts/void_beta.ml index 7566fc0bedb..2164494df26 100644 --- a/testsuite/tests/typing-layouts/void_beta.ml +++ b/testsuite/tests/typing-layouts/void_beta.ml @@ -5,10 +5,10 @@ (* CR layouts v5: all tests from this file moved to [void_alpha.ml]. Move back here. *) -type t_void [@@void];; +type t_void : void;; [%%expect {| -Line 1, characters 12-20: -1 | type t_void [@@void];; - ^^^^^^^^ +Line 1, characters 14-18: +1 | type t_void : void;; + ^^^^ Error: Layout void is used here, but the appropriate layouts extension is not enabled |}] diff --git a/testsuite/tests/typing-local/crossing.ml b/testsuite/tests/typing-local/crossing.ml index a650ef4e790..3d868970149 100644 --- a/testsuite/tests/typing-local/crossing.ml +++ b/testsuite/tests/typing-local/crossing.ml @@ -339,7 +339,7 @@ let f : local_ _ -> M.t = let f : local_ _ -> t2 = fun x -> x [%%expect{| -module M : sig type t [@@immediate] end +module M : sig type t : immediate end type t2 = { x : int; } [@@unboxed] val f : local_ M.t -> M.t = val f : local_ t2 -> t2 = diff --git a/testsuite/tests/typing-local/crossing_64.ml b/testsuite/tests/typing-local/crossing_64.ml index e38011d1db1..f2d0737bc0d 100644 --- a/testsuite/tests/typing-local/crossing_64.ml +++ b/testsuite/tests/typing-local/crossing_64.ml @@ -9,6 +9,6 @@ end [%%expect{| module F : - functor (M : sig type t [@@immediate64] end) -> + functor (M : sig type t : immediate64 end) -> sig val f : local_ M.t -> M.t end |}] diff --git a/testsuite/tests/typing-unboxed-types/test.ml b/testsuite/tests/typing-unboxed-types/test.ml index 2afad67fc43..a7ab0392658 100644 --- a/testsuite/tests/typing-unboxed-types/test.ml +++ b/testsuite/tests/typing-unboxed-types/test.ml @@ -94,7 +94,7 @@ Error: This type cannot be unboxed because (* let rec must be rejected *) type t10 = A of t10 [@@ocaml.unboxed] [@@value];; [%%expect{| -type t10 = A of t10 [@@value] [@@unboxed] +type t10 : value = A of t10 [@@unboxed] |}];; let rec x = A x;; [%%expect{| @@ -283,7 +283,7 @@ in assert (f x = L 3.14);; (* Check for a potential infinite loop in the typing algorithm. *) type 'a t12 = M of 'a t12 [@@ocaml.unboxed] [@@value];; [%%expect{| -type 'a t12 = M of 'a t12 [@@value] [@@unboxed] +type 'a t12 : value = M of 'a t12 [@@unboxed] |}];; let f (a : int t12 array) = a.(0);; [%%expect{| @@ -342,7 +342,7 @@ end = struct type t = A of int [@@ocaml.unboxed] end;; [%%expect{| -module T : sig type t [@@immediate] end +module T : sig type t : immediate end |}];; (* Another corner case *) @@ -372,7 +372,7 @@ val h : f = {field = []} type 'a t [@@immediate];; type u = U : 'a t -> u [@@unboxed];; [%%expect{| -type 'a t [@@immediate] +type 'a t : immediate type u = U : 'a t -> u [@@unboxed] |}];; diff --git a/testsuite/tests/typing-unboxed/test.ml b/testsuite/tests/typing-unboxed/test.ml index cf0d1bd3b27..702ae1fd02d 100644 --- a/testsuite/tests/typing-unboxed/test.ml +++ b/testsuite/tests/typing-unboxed/test.ml @@ -744,7 +744,7 @@ Error: The native code version of the primitive is mandatory (* PR#7424 *) type 'a b = B of 'a b b [@@unboxed] [@@value];; [%%expect{| -type 'a b = B of 'a b b [@@value] [@@unboxed] +type 'a b : value = B of 'a b b [@@unboxed] |}] diff --git a/testsuite/tests/warnings/w53.compilers.reference b/testsuite/tests/warnings/w53.compilers.reference index 5e9b7bf5160..c2012bb4103 100644 --- a/testsuite/tests/warnings/w53.compilers.reference +++ b/testsuite/tests/warnings/w53.compilers.reference @@ -578,7 +578,7 @@ File "w53.ml", line 346, characters 39-43: 346 | external z : int64 -> int64 = "x" [@@poll error] (* rejected *) ^^^^ Warning 53 [misplaced-attribute]: the "poll" attribute cannot appear in this context -File "w53.ml", line 359, characters 17-22: -359 | let f3 = fun [@boxed] (type a) (x : a) -> x (* rejected *) +File "w53.ml", line 356, characters 17-22: +356 | let f2 = fun [@boxed] (type a) (x : a) -> x (* rejected *) ^^^^^ Warning 53 [misplaced-attribute]: the "boxed" attribute cannot appear in this context diff --git a/testsuite/tests/warnings/w53.ml b/testsuite/tests/warnings/w53.ml index 578fb251ece..24154928963 100644 --- a/testsuite/tests/warnings/w53.ml +++ b/testsuite/tests/warnings/w53.ml @@ -353,8 +353,5 @@ module TestNewtypeAttr = struct (* Check for handling of attributes on Pexp_newtype *) let f1 = fun [@inline] (type a) (x : a) -> x (* accepted *) - let f2 = fun [@value] (type a) (x : a) -> x - (* accepted (it's a layout annotation) *) - - let f3 = fun [@boxed] (type a) (x : a) -> x (* rejected *) + let f2 = fun [@boxed] (type a) (x : a) -> x (* rejected *) end diff --git a/testsuite/tests/warnings/w53_marshalled.compilers.reference b/testsuite/tests/warnings/w53_marshalled.compilers.reference index 14a87380609..3676847046c 100644 --- a/testsuite/tests/warnings/w53_marshalled.compilers.reference +++ b/testsuite/tests/warnings/w53_marshalled.compilers.reference @@ -574,7 +574,7 @@ File "w53.ml", line 346, characters 39-43: 346 | external z : int64 -> int64 = "x" [@@poll error] (* rejected *) ^^^^ Warning 53 [misplaced-attribute]: the "poll" attribute cannot appear in this context -File "w53.ml", line 359, characters 17-22: -359 | let f3 = fun [@boxed] (type a) (x : a) -> x (* rejected *) +File "w53.ml", line 356, characters 17-22: +356 | let f2 = fun [@boxed] (type a) (x : a) -> x (* rejected *) ^^^^^ Warning 53 [misplaced-attribute]: the "boxed" attribute cannot appear in this context diff --git a/tools/.depend b/tools/.depend index 748f63dfac6..8f70cfff831 100644 --- a/tools/.depend +++ b/tools/.depend @@ -84,6 +84,7 @@ lintapidiff.cmo : \ ../parsing/parse.cmi \ ../utils/misc.cmi \ ../parsing/location.cmi \ + ../parsing/jane_syntax.cmi \ ../typing/ident.cmi lintapidiff.cmx : \ ../typing/printtyp.cmx \ @@ -93,6 +94,7 @@ lintapidiff.cmx : \ ../parsing/parse.cmx \ ../utils/misc.cmx \ ../parsing/location.cmx \ + ../parsing/jane_syntax.cmx \ ../typing/ident.cmx make_opcodes.cmo : make_opcodes.cmx : diff --git a/tools/Makefile b/tools/Makefile index 464a5600dee..21dbee04955 100644 --- a/tools/Makefile +++ b/tools/Makefile @@ -85,7 +85,7 @@ ocamldep.opt$(EXE): $(call byte2native, $(OCAMLDEP)) OCAMLPROF=config.cmo build_path_prefix_map.cmo misc.cmo identifiable.cmo \ numbers.cmo arg_helper.cmo clflags.cmo debug.cmo terminfo.cmo \ warnings.cmo location.cmo longident.cmo docstrings.cmo \ - syntaxerr.cmo ast_helper.cmo \ + printast.cmo syntaxerr.cmo ast_helper.cmo \ language_extension_kernel.cmo language_extension.cmo \ jane_syntax_parsing.cmo jane_syntax.cmo \ ast_iterator.cmo builtin_attributes.cmo \ diff --git a/tools/ocamlprof.ml b/tools/ocamlprof.ml index 9c3ab1d52d8..91943e19f85 100644 --- a/tools/ocamlprof.ml +++ b/tools/ocamlprof.ml @@ -312,7 +312,8 @@ and rw_exp iflag sexp = and rewrite_exp_jane_syntax iflag : Jane_syntax.Expression.t -> _ = function | Jexp_comprehension x -> rewrite_comprehension_exp iflag x | Jexp_immutable_array x -> rewrite_immutable_array_exp iflag x - | Jexp_unboxed_constant _ -> rewrite_constant + | Jexp_layout (Lexp_constant _) -> rewrite_constant + | Jexp_layout (Lexp_newtype (_, _, sexp)) -> rewrite_exp iflag sexp and rewrite_comprehension_exp iflag : Jane_syntax.Comprehensions.expression -> _ = function diff --git a/typing/ctype.ml b/typing/ctype.ml index 4e4629153ce..46b1e3d72fd 100644 --- a/typing/ctype.ml +++ b/typing/ctype.ml @@ -141,8 +141,6 @@ exception Cannot_subst exception Cannot_unify_universal_variables -exception Matches_failure of Env.t * unification_error - exception Incompatible (**** Type level management ****) @@ -153,8 +151,11 @@ let global_level = s_ref 1 let saved_level = s_ref [] type levels = - { current_level: int; nongen_level: int; global_level: int; - saved_level: (int * int) list; } + { current_level: int; + nongen_level: int; + global_level: int; (* level assigned to a fresh 'a in user code *) + saved_level: (int * int) list; + } let save_levels () = { current_level = !current_level; nongen_level = !nongen_level; @@ -542,7 +543,7 @@ let really_closed = ref None are expanded to check whether the apparently-free variable would vanish during expansion. - We collect both type variables and row variables, paired with a boolean - that is [true] if we have a row variable. + that is [false] if we have a row variable. - We do not count "virtual" free variables -- free variables stored in the abbreviation of an object type that has been expanded (we store the abbreviations for use when displaying the type). @@ -581,23 +582,30 @@ let rec free_vars_rec real ty = | _ -> iter_type_expr (free_vars_rec true) ty -let free_vars ?env ty = +let free_vars ?env tyl = free_variables := []; really_closed := env; - free_vars_rec true ty; + List.iter (free_vars_rec true) tyl; let res = !free_variables in free_variables := []; really_closed := None; res let free_variables ?env ty = - let tl = List.map fst (free_vars ?env ty) in + let tl = List.map fst (free_vars ?env [ty]) in unmark_type ty; tl +let free_non_row_variables_of_list tyl = + let tl = List.filter_map (fun (v, not_row) -> if not_row then Some v else None) + (free_vars tyl) + in + List.iter unmark_type tyl; + tl + let closed_type ty = remove_mode_and_layout_variables ty; - match free_vars ty with + match free_vars [ty] with [] -> () | (v, real) :: _ -> raise (Non_closed (v, real)) @@ -631,10 +639,7 @@ let closed_type_decl decl = remove_mode_and_layout_variables l.ld_type) l end; remove_mode_and_layout_variables res_ty - | None -> - match cd_args with - | Cstr_tuple l -> List.iter (fun (ty, _) -> closed_type ty) l - | Cstr_record l -> List.iter (fun l -> closed_type l.ld_type) l + | None -> List.iter closed_type (tys_of_constr_args cd_args) ) v | Type_record(r, _rep) -> @@ -4625,6 +4630,23 @@ let is_moregeneral env inst_nongen pat_sch subj_sch = | () -> true | exception Moregen _ -> false +let all_distinct_vars env vars = + let tys = ref TypeSet.empty in + List.for_all + (fun ty -> + let ty = expand_head env ty in + if TypeSet.mem ty !tys then false else begin + tys := TypeSet.add ty !tys; + is_Tvar ty + end) + vars + +type matches_result = + | Unification_failure of Errortrace.unification_error + | Layout_mismatch of { original_layout : layout; inferred_layout : layout + ; ty : type_expr } + | All_good + (* Alternative approach: "rigidify" a type scheme, and check validity after unification *) (* Simpler, no? *) @@ -4632,8 +4654,8 @@ let is_moregeneral env inst_nongen pat_sch subj_sch = let rec rigidify_rec vars ty = if try_mark_node ty then begin match get_desc ty with - | Tvar _ -> - if not (TypeSet.mem ty !vars) then vars := TypeSet.add ty !vars + | Tvar { layout } -> + vars := TypeMap.add ty layout !vars | Tvariant row -> let Row {more; name; closed} = row_repr row in if is_Tvar more && not (has_fixed_explanation row) then begin @@ -4651,45 +4673,71 @@ let rec rigidify_rec vars ty = iter_type_expr (rigidify_rec vars) ty end +(* remember free variables in a type so we can make sure they aren't unified; + should be paired with a call to [all_distinct_vars_with_original__layouts] + later. *) let rigidify ty = - let vars = ref TypeSet.empty in + let vars = ref TypeMap.empty in rigidify_rec vars ty; unmark_type ty; - TypeSet.elements !vars - -let all_distinct_vars env vars = + List.map (fun (trans_expr, lay) -> Transient_expr.type_expr trans_expr, lay) + (TypeMap.bindings !vars) + +(* this version doesn't carry the unification error, which is computed after + the error is detected *) +module No_trace = struct + type matches_result_ = + | Unification_failure + | Layout_mismatch of { original_layout : layout; inferred_layout : layout + ; ty : type_expr } + | All_good +end + +let all_distinct_vars_with_original_layouts env vars_layouts = + let open No_trace in let tys = ref TypeSet.empty in - List.for_all - (fun ty -> - let ty = expand_head env ty in - if TypeSet.mem ty !tys then false else - (tys := TypeSet.add ty !tys; is_Tvar ty)) - vars + let folder acc (ty, original_layout) = + match acc with + | Unification_failure | Layout_mismatch _ -> acc + | All_good -> + let open No_trace in + let ty = expand_head env ty in + if TypeSet.mem ty !tys then Unification_failure else begin + tys := TypeSet.add ty !tys; + match get_desc ty with + | Tvar { layout = inferred_layout } -> + if Layout.equate inferred_layout original_layout + then All_good + else Layout_mismatch { original_layout; inferred_layout; ty } + | _ -> Unification_failure + end + in + List.fold_left folder All_good vars_layouts let matches ~expand_error_trace env ty ty' = let snap = snapshot () in - let vars = rigidify ty in + let vars_layouts = rigidify ty in cleanup_abbrev (); match unify env ty ty' with | () -> - if not (all_distinct_vars env vars) then begin - backtrack snap; + let result = + match all_distinct_vars_with_original_layouts env vars_layouts with + | Unification_failure -> let diff = - if expand_error_trace - then expanded_diff env ~got:ty ~expected:ty' - else unexpanded_diff ~got:ty ~expected:ty' + if expand_error_trace + then expanded_diff env ~got:ty ~expected:ty' + else unexpanded_diff ~got:ty ~expected:ty' in - raise (Matches_failure (env, unification_error ~trace:[diff])) - end; - backtrack snap + Unification_failure (unification_error ~trace:[diff]) + | Layout_mismatch { original_layout; inferred_layout; ty } -> + Layout_mismatch { original_layout; inferred_layout; ty } + | All_good -> All_good + in + backtrack snap; + result | exception Unify err -> backtrack snap; - raise (Matches_failure (env, err)) - -let does_match env ty ty' = - match matches ~expand_error_trace:false env ty ty' with - | () -> true - | exception Matches_failure (_, _) -> false + Unification_failure err (*********************************************) (* Equivalence between parameterized types *) diff --git a/typing/ctype.mli b/typing/ctype.mli index 60846b8440e..878fcc27b44 100644 --- a/typing/ctype.mli +++ b/typing/ctype.mli @@ -29,8 +29,6 @@ exception Escape of type_expr Errortrace.escape exception Tags of label * label exception Cannot_expand exception Cannot_apply -exception Matches_failure of Env.t * Errortrace.unification_error - (* Raised from [matches], hence the odd name *) exception Incompatible (* Raised from [mcomp] *) @@ -280,17 +278,20 @@ val deep_occur: type_expr -> type_expr -> bool val moregeneral: Env.t -> bool -> type_expr -> type_expr -> unit (* Check if the first type scheme is more general than the second. *) val is_moregeneral: Env.t -> bool -> type_expr -> type_expr -> bool -val rigidify: type_expr -> type_expr list - (* "Rigidify" a type and return its type variable *) val all_distinct_vars: Env.t -> type_expr list -> bool (* Check those types are all distinct type variables *) -val matches: expand_error_trace:bool -> Env.t -> type_expr -> type_expr -> unit + +type matches_result = + | Unification_failure of Errortrace.unification_error + | Layout_mismatch of { original_layout : layout; inferred_layout : layout + ; ty : type_expr } + | All_good +val matches: expand_error_trace:bool -> Env.t -> + type_expr -> type_expr -> matches_result (* Same as [moregeneral false], implemented using the two above functions and backtracking. Ignore levels. The [expand_error_trace] flag controls whether the error raised performs expansion; this should almost always be [true]. *) -val does_match: Env.t -> type_expr -> type_expr -> bool - (* Same as [matches], but returns a [bool] *) val reify_univars : Env.t -> Types.type_expr -> Types.type_expr (* Replaces all the variables of a type by a univar. *) @@ -443,7 +444,11 @@ val nongen_class_declaration: class_declaration -> bool Uses the empty environment. *) val free_variables: ?env:Env.t -> type_expr -> type_expr list - (* If env present, then check for incomplete definitions too *) + (* If env present, then check for incomplete definitions too; + returns both normal variables and row variables*) +val free_non_row_variables_of_list: type_expr list -> type_expr list + (* gets only non-row variables *) + val closed_type_decl: type_declaration -> type_expr option val closed_extension_constructor: extension_constructor -> type_expr option val closed_class: @@ -491,6 +496,9 @@ val tvariant_not_immediate : row_desc -> bool (* Cheap upper bound on layout. Will not expand unboxed types - call [type_layout] if that's needed. *) val estimate_type_layout : Env.t -> type_expr -> layout + +(* Get the layout of a type, expanding it and looking through [[@@unboxed]] + types. *) val type_layout : Env.t -> type_expr -> layout (* Find a type's sort (constraining it to be an arbitrary sort variable, if diff --git a/typing/datarepr.ml b/typing/datarepr.ml index 6f349ffa64a..0cf75038ade 100644 --- a/typing/datarepr.ml +++ b/typing/datarepr.ml @@ -47,11 +47,7 @@ let free_vars ?(param=false) ty = let newgenconstr path tyl = newgenty (Tconstr (path, tyl, ref Mnil)) let constructor_existentials cd_args cd_res = - let tyl = - match cd_args with - | Cstr_tuple l -> List.map (fun (ty, _) -> ty) l - | Cstr_record l -> List.map (fun l -> l.ld_type) l - in + let tyl = tys_of_constr_args cd_args in let existentials = match cd_res with | None -> [] diff --git a/typing/layouts.ml b/typing/layouts.ml index ea4a99015fe..3a0b9c7f9f8 100644 --- a/typing/layouts.ml +++ b/typing/layouts.ml @@ -234,7 +234,6 @@ type sort = Sort.t module Layout = struct (*** reasons for layouts **) - type concrete_layout_reason = | Match | Constructor_declaration of int @@ -316,9 +315,13 @@ module Layout = struct type annotation_context = | Type_declaration of Path.t - | Type_parameter of Path.t * string + | Type_parameter of Path.t * string option | With_constraint of string | Newtype_declaration of string + | Constructor_type_parameter of Path.t * string + | Univar of string + | Type_variable of string + | Type_wildcard of Location.t type creation_reason = | Annotated of annotation_context * Location.t @@ -426,7 +429,25 @@ module Layout = struct | Immediate, Immediate64 -> Sub | (Any | Void | Value | Immediate64 | Immediate | Float64), _ -> Not_sub - (******************************) + (******************************) + (*** user errors ***) + type error = + | Insufficient_level of annotation_context * Asttypes.const_layout + + exception User_error of Location.t * error + + let raise ~loc err = raise (User_error(loc, err)) + + (*** extension requirements ***) + let get_required_layouts_level + (context : annotation_context) (layout : const) : + Language_extension.maturity = + match context, layout with + | _, Value -> Stable + | _, (Immediate | Immediate64 | Any) -> Beta + | _, (Void | Float64) -> Alpha + + (******************************) (* construction *) let of_new_sort_var ~why = @@ -443,18 +464,30 @@ module Layout = struct | Void -> fresh_layout (Sort Sort.void) ~why | Float64 -> fresh_layout (Sort Sort.float64) ~why - let of_attributes ~legacy_immediate ~reason attrs = - match Builtin_attributes.layout ~legacy_immediate attrs with - | Ok None as a -> a - | Ok (Some l) -> Ok (Some (of_const ~why:(Annotated (reason, l.loc)) - l.txt)) - | Error _ as e -> e + (* CR layouts v1.5: remove legacy_immediate *) + let of_annotation ?(legacy_immediate=false) ~context Location.{ loc; txt = const } = + begin match const with + | Immediate | Immediate64 | Value when legacy_immediate -> () + | _ -> + let required_layouts_level = get_required_layouts_level context const in + if not (Language_extension.is_at_least Layouts required_layouts_level) + then raise ~loc (Insufficient_level (context, const)) + end; + of_const ~why:(Annotated (context, loc)) const - let of_attributes_default ~legacy_immediate ~reason ~default attrs = - match of_attributes ~legacy_immediate ~reason attrs with - | Ok None -> Ok default - | Ok (Some l) -> Ok l - | Error _ as e -> e + let of_annotation_option ?legacy_immediate ~context = + Option.map (of_annotation ?legacy_immediate ~context) + + let of_annotation_option_default ?legacy_immediate ~default ~context = + Option.fold ~none:default ~some:(of_annotation ?legacy_immediate ~context) + + let of_attributes ~legacy_immediate ~context attrs = + Builtin_attributes.layout ~legacy_immediate attrs |> + Result.map (of_annotation_option ~legacy_immediate ~context) + + let of_attributes_default ~legacy_immediate ~context ~default attrs = + Builtin_attributes.layout ~legacy_immediate attrs |> + Result.map (of_annotation_option_default ~legacy_immediate ~default ~context) let for_boxed_record ~all_void = if all_void then immediate ~why:Empty_record else value ~why:Boxed_record @@ -636,14 +669,26 @@ module Layout = struct fprintf ppf "the declaration of the type %a" !printtyp_path p | Type_parameter (path, var) -> + let var_string = match var with None -> "_" | Some v -> "'" ^ v in fprintf ppf "@[%s@ in the declaration of the type@ %a@]" - var + var_string !printtyp_path path | With_constraint s -> fprintf ppf "the `with` constraint for %s" s | Newtype_declaration name -> fprintf ppf "the abstract type declaration for %s" name + | Constructor_type_parameter (cstr, name) -> + fprintf ppf "@[%s@ in the declaration of constructor@ %a@]" + name + !printtyp_path cstr + | Univar name -> + fprintf ppf "the universal variable %s" + name + | Type_variable name -> + fprintf ppf "the type variable %s" name + | Type_wildcard loc -> + fprintf ppf "the wildcard _ at %a" Location.print_loc loc let format_any_creation_reason ppf : any_creation_reason -> unit = function | Missing_cmi p -> @@ -1078,11 +1123,21 @@ module Layout = struct | Type_declaration p -> fprintf ppf "Type_declaration %a" Path.print p | Type_parameter (p, var) -> - fprintf ppf "Type_parameter (%a, %S)" Path.print p var + fprintf ppf "Type_parameter (%a, %a)" + Path.print p + (Misc.Stdlib.Option.print Misc.Stdlib.String.print) var | With_constraint s -> fprintf ppf "With_constraint %S" s | Newtype_declaration name -> fprintf ppf "Newtype_declaration %s" name + | Constructor_type_parameter (cstr, name) -> + fprintf ppf "Constructor_type_parameter (%a, %S)" Path.print cstr name + | Univar name -> + fprintf ppf "Univar %S" name + | Type_variable name -> + fprintf ppf "Type_variable %S" name + | Type_wildcard loc -> + fprintf ppf "Type_wildcard (%a)" Location.print_loc loc let any_creation_reason ppf : any_creation_reason -> unit = function | Missing_cmi p -> fprintf ppf "Missing_cmi %a" Path.print p @@ -1202,6 +1257,37 @@ module Layout = struct internal layout history h end + + (*** formatting user errors ***) + let report_error ~loc = function + | Insufficient_level (context, layout) -> + let required_layouts_level = get_required_layouts_level context layout in + let hint ppf = + Format.fprintf ppf "You must enable -extension %s to use this feature." + (Language_extension.to_command_line_string + Layouts required_layouts_level) + in + match Language_extension.get_command_line_string_if_enabled Layouts with + | None -> + Location.errorf ~loc + "@[The appropriate layouts extension is not enabled.@;%t@]" + hint + | Some cmd_line_string -> + Location.errorf ~loc + (* CR layouts errors: use the context to produce a better error message. + When RAE tried this, some types got printed like [t/2], but the + [/2] shouldn't be there. Investigate and fix. *) + "@[Layout %s is more experimental than allowed by -extension %s.@;%t@]" + (string_of_const layout) + cmd_line_string + hint + + let () = + Location.register_error_of_exn + (function + | User_error(loc, err) -> + Some (report_error ~loc err) + | _ -> None) end type layout = Layout.t diff --git a/typing/layouts.mli b/typing/layouts.mli index c888c9a3d55..9da31984ac9 100644 --- a/typing/layouts.mli +++ b/typing/layouts.mli @@ -149,9 +149,13 @@ module Layout : sig type annotation_context = | Type_declaration of Path.t - | Type_parameter of Path.t * string + | Type_parameter of Path.t * string option | With_constraint of string | Newtype_declaration of string + | Constructor_type_parameter of Path.t * string + | Univar of string + | Type_variable of string + | Type_wildcard of Location.t type value_creation_reason = | Class_let_binding @@ -322,18 +326,28 @@ module Layout : sig val of_sort : why:concrete_layout_reason -> sort -> t val of_const : why:creation_reason -> const -> t + (* CR layouts v1.5: remove legacy_immediate when the old attributes mechanism + is rerouted away from the new annotations mechanism *) + val of_annotation : + ?legacy_immediate:bool -> context:annotation_context -> Asttypes.layout_annotation -> t + + val of_annotation_option_default : + ?legacy_immediate:bool -> + default:t -> context:annotation_context -> + Asttypes.layout_annotation option -> t + (** Find a layout in attributes. Returns error if a disallowed layout is present, but always allows immediate attributes if ~legacy_immediate is true. See comment on [Builtin_attributes.layout]. *) val of_attributes : - legacy_immediate:bool -> reason:annotation_context -> Parsetree.attributes -> + legacy_immediate:bool -> context:annotation_context -> Parsetree.attributes -> (t option, const Location.loc) result (** Find a layout in attributes, defaulting to ~default. Returns error if a disallowed layout is present, but always allows immediate if ~legacy_immediate is true. See comment on [Builtin_attributes.layout]. *) val of_attributes_default : - legacy_immediate:bool -> reason:annotation_context -> + legacy_immediate:bool -> context:annotation_context -> default:t -> Parsetree.attributes -> (t, const Location.loc) result diff --git a/typing/oprint.ml b/typing/oprint.ml index 7a0807df4cd..217a41efd5d 100644 --- a/typing/oprint.ml +++ b/typing/oprint.ml @@ -269,10 +269,24 @@ let rec print_list pr sep ppf = let pr_present = print_list (fun ppf s -> fprintf ppf "`%s" s) (fun ppf -> fprintf ppf "@ ") -let pr_var = Pprintast.tyvar +let pr_var = Printast.tyvar -let pr_vars = - print_list pr_var (fun ppf -> fprintf ppf "@ ") +let print_out_layout ppf = function + | Olay_const lay -> fprintf ppf "%s" (Layouts.Layout.string_of_const lay) + | Olay_var v -> fprintf ppf "%s" v + +let print_out_layout_annot ppf = function + | None -> () + | Some lay -> fprintf ppf "@ : %a" print_out_layout lay + +let pr_var_layout ppf (v, l) = match l with + | None -> pr_var ppf v + | Some lay -> fprintf ppf "(%a : %a)" + pr_var v + print_out_layout lay + +let pr_var_layouts = + print_list pr_var_layout (fun ppf -> fprintf ppf "@ ") let join_modes rm1 am2 = match rm1, am2 with @@ -282,21 +296,15 @@ let join_modes rm1 am2 = | _, Oam_unknown -> Oam_unknown | Oam_global, Oam_global -> Oam_global -let print_out_layout ppf = function - | Olay_const lay -> fprintf ppf "%s" (Layouts.Layout.string_of_const lay) - | Olay_var v -> fprintf ppf "%s" v - -let print_out_layout_option ppf = function - | None -> () - | Some lay -> fprintf ppf "@ : %a" print_out_layout lay - let rec print_out_type_0 mode ppf = function | Otyp_alias (ty, s) -> fprintf ppf "@[%a@ as %a@]" (print_out_type_0 mode) ty pr_var s + | Otyp_poly ([], ty) -> + print_out_type_0 mode ppf ty (* no "." if there are no vars *) | Otyp_poly (sl, ty) -> fprintf ppf "@[%a.@ %a@]" - pr_vars sl + pr_var_layouts sl (print_out_type_0 mode) ty | ty -> print_out_type_1 mode ppf ty @@ -490,7 +498,7 @@ let type_parameter ~in_parens ppf (match var with Covariant -> "+" | Contravariant -> "-" | NoVariance -> "") (match inj with Injective -> "!" | NoInjectivity -> "") print_type_parameter ty - print_out_layout_option lay + print_out_layout_annot lay let print_out_class_params ppf = function @@ -709,8 +717,9 @@ and print_out_sig_item ppf = | Orec_first -> "type" | Orec_next -> "and") ppf td - | Osig_value vd -> - let kwd = if vd.oval_prims = [] then "val" else "external" in + | Osig_value { oval_name; oval_type; + oval_prims; oval_attributes } -> + let kwd = if oval_prims = [] then "val" else "external" in let pr_prims ppf = function [] -> () @@ -718,10 +727,11 @@ and print_out_sig_item ppf = fprintf ppf "@ = \"%s\"" s; List.iter (fun s -> fprintf ppf "@ \"%s\"" s) sl in - fprintf ppf "@[<2>%s %a :@ %a%a%a@]" kwd value_ident vd.oval_name - !out_type vd.oval_type pr_prims vd.oval_prims + fprintf ppf "@[<2>%s %a :@ %a%a%a@]" kwd value_ident oval_name + !out_type oval_type + pr_prims oval_prims (fun ppf -> List.iter (fun a -> fprintf ppf "@ [@@@@%s]" a.oattr_name)) - vd.oval_attributes + oval_attributes | Osig_ellipsis -> fprintf ppf "..." @@ -762,11 +772,6 @@ and print_out_type_decl kwd ppf td = Asttypes.Private -> fprintf ppf " private" | Asttypes.Public -> () in - let print_layout ppf = - match td.otype_layout with - | None -> () - | Some lay -> fprintf ppf " [%@%@%s]" (Layouts.Layout.string_of_const lay) - in let print_unboxed ppf = if td.otype_unboxed then fprintf ppf " [%@%@unboxed]" else () in @@ -791,11 +796,11 @@ and print_out_type_decl kwd ppf td = print_private td.otype_private !out_type ty in - fprintf ppf "@[<2>@[%t%a@]%t%t%t@]" + fprintf ppf "@[<2>@[%t%a%a@]%t%t@]" print_name_params + print_out_layout_annot td.otype_layout print_out_tkind ty print_constraints - print_layout print_unboxed and print_simple_out_gf_type ppf (ty, gf) = @@ -835,12 +840,17 @@ and print_out_constr ppf constr = fprintf ppf "@[<2>%s of@ %a@]" name print_out_constr_args tyl end - | Some ret_type -> + | Some (vars_layouts, ret_type) -> + fprintf ppf "@[<2>%s :@ " name; + begin match vars_layouts with + | [] -> () + | _ -> fprintf ppf "@[%a.@]@ " pr_var_layouts vars_layouts + end; begin match tyl with | [] -> - fprintf ppf "@[<2>%s :@ %a@]" name print_simple_out_type ret_type + fprintf ppf "%a@]" print_simple_out_type ret_type | _ -> - fprintf ppf "@[<2>%s :@ %a -> %a@]" name + fprintf ppf "%a -> %a@]" print_out_constr_args tyl print_simple_out_type ret_type end diff --git a/typing/outcometree.mli b/typing/outcometree.mli index d968cdc6169..42184dcf7db 100644 --- a/typing/outcometree.mli +++ b/typing/outcometree.mli @@ -75,6 +75,9 @@ type out_global = | Ogf_global | Ogf_unrestricted +(* should be empty if all the layout annotations are missing *) +type out_vars_layouts = (string * out_layout option) list + type out_type = | Otyp_abstract | Otyp_open @@ -91,7 +94,7 @@ type out_type = | Otyp_var of bool * string | Otyp_variant of bool * out_variant * bool * (string list) option - | Otyp_poly of string list * out_type + | Otyp_poly of out_vars_layouts * out_type | Otyp_module of out_ident * (string * out_type) list | Otyp_attribute of out_type * out_attribute | Otyp_layout_annot of out_type * out_layout @@ -101,7 +104,7 @@ type out_type = and out_constructor = { ocstr_name: string; ocstr_args: (out_type * out_global) list; - ocstr_return_type: out_type option; + ocstr_return_type: (out_vars_layouts * out_type) option; } and out_variant = @@ -146,7 +149,11 @@ and out_type_decl = otype_params: out_type_param list; otype_type: out_type; otype_private: Asttypes.private_flag; - otype_layout: Asttypes.const_layout option; + + (* Some <=> we should print this annotation; + see Note [When to print layout annotations] in Printtyp, Case (C1) *) + otype_layout: out_layout option; + otype_unboxed: bool; otype_cstrs: (out_type * out_type) list } and out_extension_constructor = @@ -154,7 +161,7 @@ and out_extension_constructor = oext_type_name: string; oext_type_params: string list; oext_args: (out_type * out_global) list; - oext_ret_type: out_type option; + oext_ret_type: (out_vars_layouts * out_type) option; oext_private: Asttypes.private_flag } and out_type_extension = { otyext_name: string; diff --git a/typing/primitive.ml b/typing/primitive.ml index 8b30453a960..84dfb4a30a0 100644 --- a/typing/primitive.ml +++ b/typing/primitive.ml @@ -227,6 +227,8 @@ let add_attribute_list ty attrs = let rec add_native_repr_attributes ty attrs = match ty, attrs with + (* Otyp_poly case might have been added in e.g. tree_of_value_description *) + | Otyp_poly (vars, ty), _ -> Otyp_poly (vars, add_native_repr_attributes ty attrs) | Otyp_arrow (label, am, a, rm, r), attr_l :: rest -> let r = add_native_repr_attributes r rest in let a = add_attribute_list a attr_l in diff --git a/typing/printtyp.ml b/typing/printtyp.ml index 6d6f55e493c..7df050c54f9 100644 --- a/typing/printtyp.ml +++ b/typing/printtyp.ml @@ -29,6 +29,85 @@ open Outcometree module String = Misc.Stdlib.String module Int = Misc.Stdlib.Int +(* Note [When to print layout annotations] + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Layout annotations are only occasionally necessary to write + (compilation can often infer layouts), so when should we print + them? This Note addresses all the cases. + + Case (C1). The layout on a type declaration, like + [type 'a t : <> = ...]. + + We print the layout when it cannot be inferred from the rest of what is + printed. Specifically, we print the user-written layout in both of these + cases: + + (C1.1) The type declaration is abstract and has no manifest (i.e., + it's written without any [=]-signs). + + In this case, there is no way to know the layout without the annotation. + It is possible we might print a redundant [ : value ] annotation, but if the + user included this, they are probably happy to have it be printed, too. + + (C1.2) The type is [@@unboxed]. If an [@@unboxed] type is recursive, it can + be impossible to deduce the layout. We thus defer to the user in determining + whether to print the layout annotation. + + Case (C2). The layout on a type parameter to a type, like + [type ('a : <>) t = ...]. + + This layout is printed if both of the following are true: + + (C2.1) The layout is something other than the default [value]. + (* CR layouts reisenberg: update when the default changes *) + + (C2.2) The variable has no constraints on it. (If there is a constraint, + the constraint determines the layout, so printing the layout is + redundant.) + + We *could*, in theory, print this only when it cannot be inferred. + But this amounts to repeating inference. The heuristic also runs into + trouble when considering the possibility of a recursive type. So, in + order to keep the pretty-printer simple, we just always print the + (non-default) annotation. + + Another design possibility is to pass in verbosity level as some kind + of flag. + + Case (C3). The layout on a universal type variable, like + [val f : ('a : <>). 'a -> 'a]. + + We should print this layout annotation whenever it is neither the + default [value] nor an unfilled sort variable. (But see (X1) below.) + (* CR layouts reisenberg: update when the default changes *) + This is a challenge, though, because the type in a [val] does not + explicitly quantify its free variables. So we must collect the free + variables, look to see whether any have interesting layouts, and + print the whole set of variables if any of them do. This is all + implemented in [extract_qtvs], used also in a number of other places + we do quantification (e.g. gadt-syntax constructors). + + Exception (X1). When we are still in the process of inferring a type, + there may be an unfilled sort variable. Here is an example: + + {[ + module M : sig + val f : int -> bool -> char + end = struct + let f true _ = () + end + ]} + + The problem is that [f]'s first parameter is conflicted between being + [int] and [bool]. But the second parameter in the [struct] will have + type ['a : <>]. We generally do not want to print this, + however, and so we don't -- except when [-verbose-types] is set. + + We imagine that merlin, when run verbosely, will set [-verbose-types]. + This will allow an informative type to be printed for e.g. [let f x = x], + which can work with any sort. +*) + (* Print a long identifier *) let rec longident ppf = function @@ -1098,6 +1177,17 @@ let add_type_to_preparation = prepare_type (* Disabled in classic mode when printing an unification error *) let print_labels = ref true +(* returns None for [value], according to (C2.1) from + Note [When to print layout annotations] *) +let out_layout_option_of_layout layout = + match Layout.get layout with + | Const Value -> None + | Const clay -> Some (Olay_const clay) + | Var v -> (* This handles (X1). *) + if !Clflags.verbose_types + then Some (Olay_var (Sort.var_name v)) + else None + let rec tree_of_typexp mode ty = let px = proxy ty in if List.memq px !printed_aliases && not (List.memq px !delayed) then @@ -1204,18 +1294,16 @@ let rec tree_of_typexp mode ty = (*let print_names () = List.iter (fun (_, name) -> prerr_string (name ^ " ")) !names; prerr_string "; " in *) - if tyl = [] then tree_of_typexp mode ty else begin - let tyl = List.map Transient_expr.repr tyl in - let old_delayed = !delayed in - (* Make the names delayed, so that the real type is - printed once when used as proxy *) - List.iter add_delayed tyl; - let tl = List.map (Names.name_of_type Names.new_name) tyl in - let tr = Otyp_poly (tl, tree_of_typexp mode ty) in - (* Forget names when we leave scope *) - Names.remove_names tyl; - delayed := old_delayed; tr - end + let tyl = List.map Transient_expr.repr tyl in + let old_delayed = !delayed in + (* Make the names delayed, so that the real type is + printed once when used as proxy *) + List.iter add_delayed tyl; + let tl = tree_of_qtvs tyl in + let tr = Otyp_poly (tl, tree_of_typexp mode ty) in + (* Forget names when we leave scope *) + Names.remove_names tyl; + delayed := old_delayed; tr | Tunivar _ -> Otyp_var (false, Names.name_of_type Names.new_name tty) | Tpackage (p, fl) -> @@ -1233,6 +1321,20 @@ let rec tree_of_typexp mode ty = Otyp_alias (pr_typ (), Names.name_of_type Names.new_name px) end else pr_typ () +(* qtvs = quantified type variables *) +(* this silently drops any arguments that are not generic Tvar or Tunivar *) +and tree_of_qtvs qtvs = + let tree_of_qtv v : (string * out_layout option) option = + let tree layout = Some (Names.name_of_type Names.new_name v, + out_layout_option_of_layout layout) + in + match v.desc with + | Tvar { layout } when v.level = generic_level -> tree layout + | Tunivar { layout } -> tree layout + | _ -> None + in + List.filter_map tree_of_qtv qtvs + and tree_of_row_field mode (l, f) = match row_field_repr f with | Rpresent None | Reither(true, [], _) -> (l, false, []) @@ -1361,19 +1463,29 @@ let filter_params tyl = [] tyl in List.rev params -let prepare_type_constructor_arguments = function - | Cstr_tuple l -> List.iter (fun (ty, _) -> prepare_type ty) l - | Cstr_record l -> List.iter (fun l -> prepare_type l.ld_type) l +let prepare_type_constructor_arguments args = + List.iter prepare_type (tys_of_constr_args args) + +(* returns an empty list if no variables in the list have a layout annotation *) +let zap_qtvs_if_boring qtvs = + if List.exists (fun (_v, l) -> Option.is_some l) qtvs + then qtvs + else [] + +(* get the free variables with their layouts; do this *after* converting the + type itself, so that the type names are available. + This implements Case (C3) from Note [When to print layout annotations]. *) +let extract_qtvs tyl = + let fvs = Ctype.free_non_row_variables_of_list tyl in + let tfvs = List.map Transient_expr.repr fvs in + let vars_layouts = tree_of_qtvs tfvs in + zap_qtvs_if_boring vars_layouts let param_layout ty = match get_desc ty with | Tvar { layout; _ } | Tunivar { layout; _ } -> - begin match Layouts.Layout.get layout with - | Const Value -> None - | Const clay -> Some (Olay_const clay) - | Var v -> Some (Olay_var (Sort.var_name v)) - end - | _ -> None + out_layout_option_of_layout layout + | _ -> None (* this is (C2.2) from Note [When to print layout annotations] *) let rec tree_of_type_decl id decl = @@ -1482,14 +1594,6 @@ let rec tree_of_type_decl id decl = in let (name, args) = type_defined decl in let constraints = tree_of_constraints params in - let lay = - (* Here we're just printing, so we ignore whether the layout annotation was - allowed or not. *) - match Builtin_attributes.layout ~legacy_immediate:true decl.type_attributes - with - | Ok l -> l - | Error l_loc -> Some l_loc - in let ty, priv, unboxed = match decl.type_kind with | Type_abstract -> @@ -1515,12 +1619,29 @@ let rec tree_of_type_decl id decl = tree_of_manifest Otyp_open, decl.type_private, false + in + (* The algorithm for setting [lay] here is described as Case (C1) in + Note [When to print layout annotations] *) + let lay = match ty, unboxed with + | (Otyp_abstract, _) | (_, true) -> + (* (C1.1) from the Note corresponds to Otyp_abstract. Anything + but the default must be user-written, so we just look in the + attributes. Similarly, look in the attributes for (C1.2), the + unboxed case. Because this is just printing, we liberally + allow [@@immediate]. *) + begin match + Builtin_attributes.layout ~legacy_immediate:true decl.type_attributes + with + | Ok annot -> annot + | Error annot -> Some annot (* don't care here about extensions *) + end + | _ -> None (* other cases have no layout annotation *) in { otype_name = name; otype_params = args; otype_type = ty; otype_private = priv; - otype_layout = Option.map Location.get_txt lay; + otype_layout = Option.map (fun { txt } -> Olay_const txt) lay; otype_unboxed = unboxed; otype_cstrs = constraints } @@ -1528,24 +1649,23 @@ and tree_of_constructor_arguments = function | Cstr_tuple l -> List.map tree_of_typ_gf l | Cstr_record l -> [ Otyp_record (List.map tree_of_label l), Ogf_unrestricted ] -and tree_of_constructor cd = - let name = Ident.name cd.cd_id in - let arg () = tree_of_constructor_arguments cd.cd_args in - match cd.cd_res with - | None -> { - ocstr_name = name; - ocstr_args = arg (); - ocstr_return_type = None; - } +and tree_of_constructor_args_and_ret_type args ret_type = + match ret_type with + | None -> (tree_of_constructor_arguments args, None) | Some res -> Names.with_local_names (fun () -> - let ret = tree_of_typexp Type res in - let args = arg () in - { - ocstr_name = name; - ocstr_args = args; - ocstr_return_type = Some ret; - }) + let out_ret = tree_of_typexp Type res in + let out_args = tree_of_constructor_arguments args in + let qtvs = extract_qtvs (res :: tys_of_constr_args args) in + (out_args, Some (qtvs, out_ret))) + +and tree_of_constructor cd = + let name = Ident.name cd.cd_id in + let args, ret = tree_of_constructor_args_and_ret_type cd.cd_args cd.cd_res in + { ocstr_name = name; + ocstr_args = args; + ocstr_return_type = ret + } and tree_of_label l = let gom = @@ -1579,15 +1699,6 @@ let constructor_arguments ppf a = (* Print an extension declaration *) -let extension_constructor_args_and_ret_type_subtree ext_args ext_ret_type = - match ext_ret_type with - | None -> (tree_of_constructor_arguments ext_args, None) - | Some res -> - Names.with_local_names (fun () -> - let ret = tree_of_typexp Type res in - let args = tree_of_constructor_arguments ext_args in - (args, Some ret)) - let tree_of_extension_constructor id ext es = reset_except_context (); let ty_name = Path.name ext.ext_type_path in @@ -1607,7 +1718,7 @@ let tree_of_extension_constructor id ext es = in let name = Ident.name id in let args, ret = - extension_constructor_args_and_ret_type_subtree + tree_of_constructor_args_and_ret_type ext.ext_args ext.ext_ret_type in @@ -1636,7 +1747,7 @@ let extension_only_constructor id ppf ext = Option.iter prepare_type ext.ext_ret_type; let name = Ident.name id in let args, ret = - extension_constructor_args_and_ret_type_subtree + tree_of_constructor_args_and_ret_type ext.ext_args ext.ext_ret_type in @@ -1653,9 +1764,12 @@ let tree_of_value_description id decl = (* Format.eprintf "@[%a@]@." raw_type_expr decl.val_type; *) let id = Ident.name id in let ty = tree_of_type_scheme decl.val_type in + (* Important: process the fvs *after* the type; tree_of_type_scheme + resets the naming context *) + let qtvs = extract_qtvs [decl.val_type] in let vd = { oval_name = id; - oval_type = ty; + oval_type = Otyp_poly(qtvs, ty); oval_prims = []; oval_attributes = [] } in @@ -1683,10 +1797,13 @@ let prepare_method _lab (priv, _virt, ty) = let tree_of_method mode (lab, priv, virt, ty) = let (ty, tyl) = method_type priv ty in let tty = tree_of_typexp mode ty in - Names.remove_names (List.map Transient_expr.repr tyl); + let tyl = List.map Transient_expr.repr tyl in + let qtvs = tree_of_qtvs tyl in + let qtvs = zap_qtvs_if_boring qtvs in + Names.remove_names tyl; let priv = priv <> Mpublic in let virt = virt = Virtual in - Ocsg_method (lab, priv, virt, tty) + Ocsg_method (lab, priv, virt, Otyp_poly(qtvs, tty)) let rec prepare_class_type params = function | Cty_constr (_p, tyl, cty) -> @@ -1774,11 +1891,11 @@ let class_type ppf cty = prepare_class_type [] cty; !Oprint.out_class_type ppf (tree_of_class_type Type [] cty) -let tree_of_class_param param variance = +let tree_of_class_param param var_inj = let variance, injectivity = if is_Tvar param then Asttypes.(NoVariance, NoInjectivity) - else variance + else var_inj in { oparam_name = begin match tree_of_typexp Type_scheme param with | Otyp_var (_, s) -> s @@ -1786,6 +1903,8 @@ let tree_of_class_param param variance = end; oparam_variance = variance; oparam_injectivity = injectivity; + (* CR layouts: fix next line when adding support for layout + annotations on class type parameters *) oparam_layout = param_layout param } let class_variance = diff --git a/typing/printtyped.ml b/typing/printtyped.ml index d16fc148a18..639de0fa009 100644 --- a/typing/printtyped.ml +++ b/typing/printtyped.ml @@ -155,8 +155,20 @@ let arg_label i ppf = function | Labelled s -> line i ppf "Labelled \"%s\"\n" s ;; +let typevar_layout ~print_quote ppf (v, l) = + let pptv = + if print_quote + then Printast.tyvar + else fun ppf s -> fprintf ppf "%s" s + in + match l with + | None -> fprintf ppf " %a" pptv v + | Some lay -> fprintf ppf " (%a : %s)" + pptv v + (Printast.const_layout_to_string lay) + let typevars ppf vs = - List.iter (fun x -> fprintf ppf " %a" Pprintast.tyvar x.txt) vs + List.iter (typevar_layout ~print_quote:true ppf) vs ;; let layout_array i ppf layouts = @@ -196,13 +208,17 @@ let attributes i ppf l = Printast.payload (i + 1) ppf a.Parsetree.attr_payload ) l +let layout_annotation i ppf layout = + line i ppf "%s" (Layouts.Layout.string_of_const layout) + let rec core_type i ppf x = line i ppf "core_type %a\n" fmt_location x.ctyp_loc; attributes i ppf x.ctyp_attributes; let i = i+1 in match x.ctyp_desc with - | Ttyp_any -> line i ppf "Ttyp_any\n"; - | Ttyp_var (s) -> line i ppf "Ttyp_var %s\n" s; + | Ttyp_var (s, layout) -> + line i ppf "Ttyp_var %s\n" (Option.value ~default:"_" s); + option i layout_annotation ppf layout | Ttyp_arrow (l, ct1, ct2) -> line i ppf "Ttyp_arrow\n"; arg_label i ppf l; @@ -234,12 +250,13 @@ let rec core_type i ppf x = | Ttyp_class (li, _, l) -> line i ppf "Ttyp_class %a\n" fmt_path li; list i core_type ppf l; - | Ttyp_alias (ct, s) -> - line i ppf "Ttyp_alias \"%s\"\n" s; + | Ttyp_alias (ct, s, layout) -> + line i ppf "Ttyp_alias \"%s\"\n" (Option.value s ~default:"_"); core_type i ppf ct; + option i layout_annotation ppf layout | Ttyp_poly (sl, ct) -> line i ppf "Ttyp_poly%a\n" - (fun ppf -> List.iter (fun x -> fprintf ppf " '%s" x)) sl; + (fun ppf -> List.iter (typevar_layout ~print_quote:true ppf)) sl; core_type i ppf ct; | Ttyp_package { pack_path = s; pack_fields = l } -> line i ppf "Ttyp_package %a\n" fmt_path s; @@ -335,8 +352,8 @@ and expression_extra i ppf (x,_,attrs) = line i ppf "Texp_poly\n"; attributes i ppf attrs; option i core_type ppf cto; - | Texp_newtype s -> - line i ppf "Texp_newtype \"%s\"\n" s; + | Texp_newtype (s, lay) -> + line i ppf "Texp_newtype %a\n" (typevar_layout ~print_quote:false) (s, lay); attributes i ppf attrs; and alloc_mode i ppf m = diff --git a/typing/tast_iterator.ml b/typing/tast_iterator.ml index b54dd1b4601..34294478afd 100644 --- a/typing/tast_iterator.ml +++ b/typing/tast_iterator.ml @@ -32,6 +32,7 @@ type iterator = env: iterator -> Env.t -> unit; expr: iterator -> expression -> unit; extension_constructor: iterator -> extension_constructor -> unit; + layout_annotation: iterator -> const_layout -> unit; module_binding: iterator -> module_binding -> unit; module_coercion: iterator -> module_coercion -> unit; module_declaration: iterator -> module_declaration -> unit; @@ -457,8 +458,8 @@ let class_type_field sub {ctf_desc; _} = let typ sub {ctyp_desc; ctyp_env; _} = sub.env sub ctyp_env; match ctyp_desc with - | Ttyp_any -> () - | Ttyp_var _ -> () + | Ttyp_var (_, layout) -> + Option.iter (sub.layout_annotation sub) layout | Ttyp_arrow (_, ct1, ct2) -> sub.typ sub ct1; sub.typ sub ct2 @@ -466,9 +467,13 @@ let typ sub {ctyp_desc; ctyp_env; _} = | Ttyp_constr (_, _, list) -> List.iter (sub.typ sub) list | Ttyp_object (list, _) -> List.iter (sub.object_field sub) list | Ttyp_class (_, _, list) -> List.iter (sub.typ sub) list - | Ttyp_alias (ct, _) -> sub.typ sub ct + | Ttyp_alias (ct, _, layout) -> + sub.typ sub ct; + Option.iter (sub.layout_annotation sub) layout | Ttyp_variant (list, _, _) -> List.iter (sub.row_field sub) list - | Ttyp_poly (_, ct) -> sub.typ sub ct + | Ttyp_poly (vars, ct) -> + List.iter (fun (_, l) -> Option.iter (sub.layout_annotation sub) l) vars; + sub.typ sub ct | Ttyp_package pack -> sub.package_type sub pack let class_structure sub {cstr_self; cstr_fields; _} = @@ -512,6 +517,8 @@ let value_binding sub {vb_pat; vb_expr; _} = let env _sub _ = () +let layout_annotation _sub _ = () + let default_iterator = { binding_op; @@ -528,6 +535,7 @@ let default_iterator = env; expr; extension_constructor; + layout_annotation; module_binding; module_coercion; module_declaration; diff --git a/typing/tast_iterator.mli b/typing/tast_iterator.mli index e126128edf7..332481d3484 100644 --- a/typing/tast_iterator.mli +++ b/typing/tast_iterator.mli @@ -36,6 +36,7 @@ type iterator = env: iterator -> Env.t -> unit; expr: iterator -> expression -> unit; extension_constructor: iterator -> extension_constructor -> unit; + layout_annotation: iterator -> const_layout -> unit; module_binding: iterator -> module_binding -> unit; module_coercion: iterator -> module_coercion -> unit; module_declaration: iterator -> module_declaration -> unit; diff --git a/typing/tast_mapper.ml b/typing/tast_mapper.ml index b39623f5ead..c3678f67dea 100644 --- a/typing/tast_mapper.ml +++ b/typing/tast_mapper.ml @@ -37,6 +37,7 @@ type mapper = expr: mapper -> expression -> expression; extension_constructor: mapper -> extension_constructor -> extension_constructor; + layout_annotation: mapper -> const_layout -> const_layout; module_binding: mapper -> module_binding -> module_binding; module_coercion: mapper -> module_coercion -> module_coercion; module_declaration: mapper -> module_declaration -> module_declaration; @@ -201,11 +202,14 @@ let type_exception sub x = in {x with tyexn_constructor} +let var_layout sub (v, l) = v, Option.map (sub.layout_annotation sub) l + let extension_constructor sub x = let ext_kind = match x.ext_kind with Text_decl(v, ctl, cto) -> - Text_decl(v, constructor_args sub ctl, Option.map (sub.typ sub) cto) + Text_decl(List.map (var_layout sub) v, + constructor_args sub ctl, Option.map (sub.typ sub) cto) | Text_rebind _ as d -> d in {x with ext_kind} @@ -689,8 +693,9 @@ let typ sub x = let ctyp_env = sub.env sub x.ctyp_env in let ctyp_desc = match x.ctyp_desc with - | Ttyp_any - | Ttyp_var _ as d -> d + | Ttyp_var (_,None) as d -> d + | Ttyp_var (s, Some layout) -> + Ttyp_var (s, Some (sub.layout_annotation sub layout)) | Ttyp_arrow (label, ct1, ct2) -> Ttyp_arrow (label, sub.typ sub ct1, sub.typ sub ct2) | Ttyp_tuple list -> Ttyp_tuple (List.map (sub.typ sub) list) @@ -704,12 +709,13 @@ let typ sub x = lid, List.map (sub.typ sub) list ) - | Ttyp_alias (ct, s) -> - Ttyp_alias (sub.typ sub ct, s) + | Ttyp_alias (ct, s, layout) -> + Ttyp_alias (sub.typ sub ct, s, + Option.map (sub.layout_annotation sub) layout) | Ttyp_variant (list, closed, labels) -> Ttyp_variant (List.map (sub.row_field sub) list, closed, labels) - | Ttyp_poly (sl, ct) -> - Ttyp_poly (sl, sub.typ sub ct) + | Ttyp_poly (vars, ct) -> + Ttyp_poly (List.map (var_layout sub) vars, sub.typ sub ct) | Ttyp_package pack -> Ttyp_package (sub.package_type sub pack) in @@ -779,6 +785,8 @@ let value_binding sub x = let env _sub x = x +let layout_annotation _sub l = l + let default = { binding_op; @@ -795,6 +803,7 @@ let default = env; expr; extension_constructor; + layout_annotation; module_binding; module_coercion; module_declaration; diff --git a/typing/tast_mapper.mli b/typing/tast_mapper.mli index ea6543d04fd..a665e7b6bb6 100644 --- a/typing/tast_mapper.mli +++ b/typing/tast_mapper.mli @@ -36,6 +36,7 @@ type mapper = expr: mapper -> expression -> expression; extension_constructor: mapper -> extension_constructor -> extension_constructor; + layout_annotation: mapper -> const_layout -> const_layout; module_binding: mapper -> module_binding -> module_binding; module_coercion: mapper -> module_coercion -> module_coercion; module_declaration: mapper -> module_declaration -> module_declaration; diff --git a/typing/typeclass.ml b/typing/typeclass.ml index 17388e4c032..303c30e5286 100644 --- a/typing/typeclass.ml +++ b/typing/typeclass.ml @@ -325,7 +325,9 @@ let rec class_type_field env sign self_scope ctf = Ctype.newvar (Layout.value ~why:Object_field) in add_method loc env lab priv virt expected_ty sign; - let returned_cty = ctyp Ttyp_any (Ctype.newty Tnil) env loc in + let returned_cty = + ctyp (Ttyp_var (None, None)) (Ctype.newty Tnil) env loc + in delayed_meth_specs := Warnings.mk_lazy (fun () -> let cty = transl_simple_type_univars env sty' in @@ -1613,7 +1615,13 @@ let class_infos define_class kind let ci_params = let make_param (sty, v) = try - (transl_type_param env sty (Layout.value ~why:Class_argument), v) + let param = transl_type_param env (Pident ty_id) sty in + (* CR layouts: we require class type parameters to be values, but + we should lift this restriction. Doing so causes bad error messages + today, so we wait for tomorrow. *) + Ctype.unify env param.ctyp_type + (Ctype.newvar (Layout.value ~why:Class_argument)); + (param, v) with Already_bound -> raise(Error(sty.ptyp_loc, env, Repeated_parameter)) in diff --git a/typing/typecore.ml b/typing/typecore.ml index d3aed6392b3..8072a18d2c7 100644 --- a/typing/typecore.ml +++ b/typing/typecore.ml @@ -189,7 +189,6 @@ type error = | Bad_tail_annotation of [`Conflict|`Not_a_tailcall] | Optional_poly_param | Exclave_in_nontail_position - | Layout_not_enabled of Layout.const | Unboxed_int_literals_not_supported | Unboxed_float_literals_not_supported | Function_type_not_rep of type_expr * Layout.Violation.t @@ -525,7 +524,7 @@ let type_constant = function | Const_nativeint _ -> instance Predef.type_nativeint let type_constant_unboxed env loc - : Jane_syntax.Unboxed_constants.expression -> _ = function + : Jane_syntax.Layouts.constant -> _ = function | Float _ -> raise (Error (loc, env, Unboxed_float_literals_not_supported)) (* CR layouts v2.5: This should be [instance Predef.type_unboxed_float] *) | Integer _ -> raise (Error (loc, env, Unboxed_int_literals_not_supported)) @@ -568,7 +567,7 @@ let constant_or_raise env loc cst = | Error err -> raise (Error (loc, env, err)) let unboxed_constant : - type a. Jane_syntax.Unboxed_constants.expression -> (a, error) result + type a. Jane_syntax.Layouts.constant -> (a, error) result = function | Float (_, None) -> Error Unboxed_float_literals_not_supported | Float (x, Some c) -> Error (Unknown_literal ("#" ^ x, c)) @@ -1981,7 +1980,7 @@ let rec has_literal_pattern p = and has_literal_pattern_jane_syntax : Jane_syntax.Pattern.t -> _ = function | Jpat_immutable_array (Iapat_immutable_array ps) -> List.exists has_literal_pattern ps - | Jpat_unboxed_constant _ -> true + | Jpat_layout (Lpat_constant _) -> true let check_scope_escape loc env level ty = try Ctype.check_scope_escape env level ty @@ -2301,7 +2300,7 @@ and type_pat_aux match jpat with | Jpat_immutable_array (Iapat_immutable_array spl) -> type_pat_array Immutable spl attrs - | Jpat_unboxed_constant cst -> + | Jpat_layout (Lpat_constant cst) -> let desc = unboxed_constant_or_raise !env loc cst in rvp k @@ solve_expected { pat_desc = desc; @@ -2956,7 +2955,7 @@ let rec pat_tuple_arity spat = | Ppat_constraint(p, _) | Ppat_open(_, p) | Ppat_alias(p, _) -> pat_tuple_arity p and pat_tuple_arity_jane_syntax : Jane_syntax.Pattern.t -> _ = function | Jpat_immutable_array (Iapat_immutable_array _) -> Not_local_tuple - | Jpat_unboxed_constant _ -> Not_local_tuple + | Jpat_layout (Lpat_constant _) -> Not_local_tuple let rec cases_tuple_arity cases = match cases with @@ -3511,7 +3510,8 @@ let is_local_returning_expr e = match jexp with | Jexp_comprehension _ -> false, e.pexp_loc | Jexp_immutable_array _ -> false, e.pexp_loc - | Jexp_unboxed_constant _ -> false, e.pexp_loc + | Jexp_layout (Lexp_constant _) -> false, e.pexp_loc + | Jexp_layout (Lexp_newtype (_, _, e)) -> loop e end | None -> match e.pexp_desc with @@ -3555,7 +3555,7 @@ let rec is_an_uncurried_function e = match e.pexp_desc, e.pexp_attributes with | (Pexp_fun _ | Pexp_function _), _ -> true | Pexp_poly (e, _), _ - | Pexp_newtype (_, e), _ + | Pexp_newtype (_, e), _ (* also works correctly for Lexp_newtype *) | Pexp_coerce (e, _, _), _ | Pexp_constraint (e, _), _ -> is_an_uncurried_function e | Pexp_let (Nonrecursive, _, e), @@ -3589,6 +3589,14 @@ let is_local_returning_function cases = (* Approximate the type of an expression, for better recursion *) +(* CR layouts v5: This any is fine because we don't allow you to make types + that could be matched on and have anys in them. But once we do, this + should probably be sort variable. See Test 22 in typing-layouts/basics.ml + (which mentions approx_type) for why it can't be value. *) +(* CR layouts v2: RAE thinks this any is fine in perpetuity. Before changing + this, let's talk. *) +let approx_type_default () = newvar (Layout.any ~why:Dummy_layout) + let rec approx_type env sty = match Jane_syntax.Core_type.of_ast sty with | Some (jty, attrs) -> approx_type_jst env attrs jty @@ -3631,18 +3639,16 @@ let rec approx_type env sty = let tyl = List.map (approx_type env) ctl in newconstr path tyl end - (* CR layouts v5: This any is fine because we don't allow you to make types - that could be matched on and have anys in them. But once we do, this - should probably be sort variable. See Test 22 in typing-layouts/basics.ml - (which mentions approx_type) for why it can't be value. *) - | _ -> newvar (Layout.any ~why:Dummy_layout) + | _ -> approx_type_default () and approx_type_jst _env _attrs : Jane_syntax.Core_type.t -> _ = function - | _ -> . + | Jtyp_layout (Ltyp_var _) -> approx_type_default () + | Jtyp_layout (Ltyp_poly _) -> approx_type_default () + | Jtyp_layout (Ltyp_alias _) -> approx_type_default () let type_pattern_approx_jane_syntax : Jane_syntax.Pattern.t -> _ = function | Jpat_immutable_array _ - | Jpat_unboxed_constant _ -> () + | Jpat_layout (Lpat_constant _) -> () let type_pattern_approx env spat ty_expected = match Jane_syntax.Pattern.of_ast spat with @@ -3748,7 +3754,8 @@ and type_approx_aux env sexp in_function ty_expected = and type_approx_aux_jane_syntax : Jane_syntax.Expression.t -> _ = function | Jexp_comprehension _ | Jexp_immutable_array _ - | Jexp_unboxed_constant _ -> () + | Jexp_layout (Lexp_constant _) + | Jexp_layout (Lexp_newtype _) -> () let type_approx env sexp ty = type_approx_aux env sexp None ty @@ -3963,7 +3970,7 @@ let contains_variant_either ty = let shallow_iter_ppat_jane_syntax f : Jane_syntax.Pattern.t -> _ = function | Jpat_immutable_array (Iapat_immutable_array pats) -> List.iter f pats - | Jpat_unboxed_constant _ -> () + | Jpat_layout (Lpat_constant _) -> () let shallow_iter_ppat f p = match Jane_syntax.Pattern.of_ast p with @@ -4115,7 +4122,7 @@ let rec is_inferred sexp = and is_inferred_jane_syntax : Jane_syntax.Expression.t -> _ = function | Jexp_comprehension _ | Jexp_immutable_array _ - | Jexp_unboxed_constant _ -> false + | Jexp_layout (Lexp_constant _ | Lexp_newtype _) -> false (* check if the type of %apply or %revapply matches the type expected by the specialized typing rule for those primitives. @@ -4208,9 +4215,10 @@ and type_expect_ ~expected_mode ~ty_expected ~explanation + ~rue ~attributes jexp - | None -> match sexp.pexp_desc with + | None -> match sexp.pexp_desc with | Pexp_ident lid -> let path, mode, desc, kind = type_ident env ~recarg lid in let exp_desc = @@ -5448,53 +5456,8 @@ and type_expect_ re { exp with exp_extra = (Texp_poly cty, loc, sexp.pexp_attributes) :: exp.exp_extra } | Pexp_newtype({txt=name}, sbody) -> - let layout = - match Layout.of_attributes_default ~legacy_immediate:false - ~reason:(Newtype_declaration name) - ~default:(Layout.value ~why:Univar) sexp.pexp_attributes - with - | Ok l -> l - | Error { loc; txt } -> - raise (Error (loc, env, Layout_not_enabled txt)) - in - let ty = - if Typetexp.valid_tyvar_name name then - newvar ~name layout - else - newvar layout - in - (* remember original level *) - begin_def (); - (* Create a fake abstract type declaration for name. *) - let decl = new_local_type ~loc layout in - let scope = create_scope () in - let (id, new_env) = Env.enter_type ~scope name decl env in - - let body = type_exp new_env expected_mode sbody in - (* Replace every instance of this type constructor in the resulting - type. *) - let seen = Hashtbl.create 8 in - let rec replace t = - if Hashtbl.mem seen (get_id t) then () - else begin - Hashtbl.add seen (get_id t) (); - match get_desc t with - | Tconstr (Path.Pident id', _, _) when id == id' -> link_type t ty - | _ -> Btype.iter_type_expr replace t - end - in - let ety = Subst.type_expr Subst.identity body.exp_type in - replace ety; - (* back to original level *) - end_def (); - (* lower the levels of the result type *) - (* unify_var env ty ety; *) - - (* non-expansive if the body is non-expansive, so we don't introduce - any new extra node in the typed AST. *) - rue { body with exp_loc = loc; exp_type = ety; - exp_extra = - (Texp_newtype name, loc, sexp.pexp_attributes) :: body.exp_extra } + type_newtype ~loc ~env ~expected_mode ~rue ~attributes:sexp.pexp_attributes + name None sbody | Pexp_pack m -> let (p, fl) = match get_desc (Ctype.expand_head env (instance ty_expected)) with @@ -6983,6 +6946,52 @@ and type_cases end; cases, partial +and type_newtype ~loc ~env ~expected_mode ~rue ~attributes + name layout_annot_opt sbody = + let layout = + Layout.of_annotation_option_default ~context:(Newtype_declaration name) + ~default:(Layout.value ~why:Univar) layout_annot_opt + in + let ty = + if Typetexp.valid_tyvar_name name then + newvar ~name layout + else + newvar layout + in + (* remember original level *) + begin_def (); + (* Create a fake abstract type declaration for name. *) + let decl = new_local_type ~loc layout in + let scope = create_scope () in + let (id, new_env) = Env.enter_type ~scope name decl env in + + let body = type_exp new_env expected_mode sbody in + (* Replace every instance of this type constructor in the resulting + type. *) + let seen = Hashtbl.create 8 in + let rec replace t = + if Hashtbl.mem seen (get_id t) then () + else begin + Hashtbl.add seen (get_id t) (); + match get_desc t with + | Tconstr (Path.Pident id', _, _) when id == id' -> link_type t ty + | _ -> Btype.iter_type_expr replace t + end + in + let ety = Subst.type_expr Subst.identity body.exp_type in + replace ety; + (* back to original level *) + end_def (); + (* lower the levels of the result type *) + (* unify_var env ty ety; *) + + (* non-expansive if the body is non-expansive, so we don't introduce + any new extra node in the typed AST. *) + rue { body with exp_loc = loc; exp_type = ety; + exp_extra = + (Texp_newtype (name, Option.map Location.get_txt layout_annot_opt), + loc, attributes) :: body.exp_extra } + (* Typing of let bindings *) and type_let @@ -7018,7 +7027,8 @@ and type_let and jexp_is_fun : Jane_syntax.Expression.t -> _ = function | Jexp_comprehension _ | Jexp_immutable_array _ - | Jexp_unboxed_constant _ -> false + | Jexp_layout (Lexp_constant _) -> false + | Jexp_layout (Lexp_newtype (_, _, e)) -> sexp_is_fun e in let vb_is_fun { pvb_expr = sexp; _ } = sexp_is_fun sexp in let entirely_functions = List.for_all vb_is_fun spat_sexp_list in @@ -7413,17 +7423,17 @@ and type_generic_array exp_env = env } and type_expect_jane_syntax - ~loc ~env ~expected_mode ~ty_expected ~explanation ~attributes + ~loc ~env ~expected_mode ~ty_expected ~explanation ~rue ~attributes : Jane_syntax.Expression.t -> _ = function | Jexp_comprehension x -> type_comprehension_expr - ~loc ~env ~expected_mode ~ty_expected ~explanation ~attributes x + ~loc ~env ~expected_mode ~ty_expected ~explanation ~rue ~attributes x | Jexp_immutable_array x -> type_immutable_array - ~loc ~env ~expected_mode ~ty_expected ~explanation ~attributes x - | Jexp_unboxed_constant x -> - type_unboxed_constant - ~loc ~env ~expected_mode ~ty_expected ~explanation ~attributes x + ~loc ~env ~expected_mode ~ty_expected ~explanation ~rue ~attributes x + | Jexp_layout x -> + type_layout_expr + ~loc ~env ~expected_mode ~ty_expected ~explanation ~rue ~attributes x (* What modes should comprehensions use? Let us be generic over the sequence type we use for comprehensions, calling it [sequence] (standing for either @@ -7501,7 +7511,8 @@ and type_expect_jane_syntax this comment by its incipit (the initial question, right at the start). *) and type_comprehension_expr - ~loc ~env ~expected_mode:_ ~ty_expected ~explanation:_ ~attributes cexpr = + ~loc ~env ~expected_mode:_ ~ty_expected ~explanation:_ ~rue:_~attributes + cexpr = let open Jane_syntax.Comprehensions in (* - [comprehension_type]: For printing nicer error messages. @@ -7672,7 +7683,7 @@ and type_comprehension_iterator Texp_comp_in { pattern; sequence } and type_immutable_array - ~loc ~env ~expected_mode ~ty_expected ~explanation ~attributes + ~loc ~env ~expected_mode ~ty_expected ~explanation ~rue:_ ~attributes : Jane_syntax.Immutable_arrays.expression -> _ = function | Iaexp_immutable_array elts -> type_generic_array @@ -7685,14 +7696,15 @@ and type_immutable_array ~attributes elts -and type_unboxed_constant - ~loc ~env ~expected_mode:_ ~ty_expected ~explanation ~attributes cst - = - let rue exp = - with_explanation explanation (fun () -> - unify_exp env (re exp) (instance ty_expected)); - exp - in +and type_layout_expr + ~loc ~env ~expected_mode ~ty_expected:_ ~explanation:_ ~rue ~attributes + : Jane_syntax.Layouts.expression -> _ = function + | Lexp_constant x -> type_unboxed_constant ~loc ~env ~rue ~attributes x + | Lexp_newtype ({txt=name}, layout_annot, sbody) -> + type_newtype ~loc ~env ~expected_mode ~rue ~attributes + name (Some layout_annot) sbody + +and type_unboxed_constant ~loc ~env ~rue ~attributes cst = rue { exp_desc = unboxed_constant_or_raise env loc cst; exp_loc = loc; @@ -8415,11 +8427,6 @@ let report_error ~loc env = function Location.errorf ~loc "@[This application is local-returning, but is at the tail @ \ position of a function that is not local-returning@]" - | Layout_not_enabled c -> - Location.errorf ~loc - "@[Layout %s is used here, but the appropriate layouts extension is \ - not enabled@]" - (Layout.string_of_const c) | Unboxed_int_literals_not_supported -> Location.errorf ~loc "@[Unboxed int literals aren't supported yet.@]" diff --git a/typing/typecore.mli b/typing/typecore.mli index 84b1054a070..f02d7e5377f 100644 --- a/typing/typecore.mli +++ b/typing/typecore.mli @@ -266,7 +266,6 @@ type error = | Bad_tail_annotation of [`Conflict|`Not_a_tailcall] | Optional_poly_param | Exclave_in_nontail_position - | Layout_not_enabled of Layout.const | Unboxed_int_literals_not_supported | Unboxed_float_literals_not_supported | Function_type_not_rep of type_expr * Layout.Violation.t diff --git a/typing/typedecl.ml b/typing/typedecl.ml index 80d33290af3..fd1aeaa11b4 100644 --- a/typing/typedecl.ml +++ b/typing/typedecl.ml @@ -63,8 +63,8 @@ type error = | Multiple_native_repr_attributes | Cannot_unbox_or_untag_type of native_repr_kind | Deep_unbox_or_untag_attribute of native_repr_kind - | Layout_coherence_check of type_expr * Layout.Violation.t - | Layout_update_check of Path.t * Layout.Violation.t + | Layout_mismatch_of_type of type_expr * Layout.Violation.t + | Layout_mismatch_of_path of Path.t * Layout.Violation.t | Layout_sort of { lloc : layout_sort_loc ; typ : type_expr @@ -85,13 +85,13 @@ open Typedtree exception Error of Location.t * error -let layout_of_attributes ~legacy_immediate ~reason attrs = - match Layout.of_attributes ~legacy_immediate ~reason attrs with +let layout_of_attributes ~legacy_immediate ~context attrs = + match Layout.of_attributes ~legacy_immediate ~context attrs with | Ok l -> l | Error { loc; txt } -> raise (Error (loc, Layout_not_enabled txt)) -let layout_of_attributes_default ~legacy_immediate ~reason ~default attrs = - match Layout.of_attributes_default ~legacy_immediate ~reason ~default attrs with +let layout_of_attributes_default ~legacy_immediate ~context ~default attrs = + match Layout.of_attributes_default ~legacy_immediate ~context ~default attrs with | Ok l -> l | Error { loc; txt } -> raise (Error (loc, Layout_not_enabled txt)) @@ -104,13 +104,18 @@ let get_unboxed_from_attributes sdecl = | false, true -> Some true | false, false -> None -(* Used for layout error reporting *) -(* CR aspectorzabusky: This feels like it must exist somewhere *) -let parameter_name sty = match sty.ptyp_desc with - | Ptyp_any -> "_" - | Ptyp_var name -> "'" ^ name - | _ -> Misc.fatal_error - "Type parameter was neither [Ptyp_any] nor [Ptyp_var _]" +(* [make_params] creates sort variables - these can be defaulted away (as in + transl_type_decl) or unified with existing sort-variable-free types (as in + transl_with_constraint). *) +let make_params env path params = + TyVarEnv.reset (); (* [transl_type_param] binds type variables *) + let make_param (sty, v) = + try + (transl_type_param env path sty, v) + with Already_bound -> + raise(Error(sty.ptyp_loc, Repeated_parameter)) + in + List.map make_param params (* Enter all declared types in the environment as abstract types *) @@ -189,56 +194,28 @@ let enter_type rec_flag env sdecl (id, uid) = layout of the variable put in manifests here is updated when constraints are checked and then unified with the real manifest and checked against the kind. *) - let layout = + let type_layout = (* We set ~legacy_immediate to true because we're looking at a declaration that was already allowed to be [@@immediate] *) layout_of_attributes_default - ~legacy_immediate:true ~reason:(Type_declaration path) + ~legacy_immediate:true ~context:(Type_declaration path) ~default:(Layout.any ~why:Initial_typedecl_env) sdecl.ptype_attributes in + let type_params = + List.map (fun (param, _) -> + let name = get_type_param_name param in + let layout = get_type_param_layout path param in + Btype.newgenvar ?name layout) + sdecl.ptype_params + in let decl = - { type_params = - (* CR layouts: At the moment, we're defaulting type parameters in - recursive type declarations to layout value. We could probably allow - (Sort 'l) and default to value if it's not determined by use. - - Richard supplies the following example: - - (* setup: *) - type t_void [@@void] - type ('a : void) void_t - - (* case 1: *) - type 'b t = 'b void_t * t2 - and t2 = t_void void_t - - (* case 2: *) - type 'b t = 'b void_t * t2 - and t2 = t_void t - - Case 1 is accepted and case 2 is rejected, which isn't the end of the - world, but could perhaps be improved. - *) - (* CR layouts v1.5: Actually, RAE thinks this is just wrong now, because - make_params defaults to a sort variable and this defaults to value. - I'm worried that the value here will propagate somewhere and then - conflict with an inferred e.g. float64 somewhere. *) - List.map - (fun (param, _) -> - let layout = - layout_of_attributes_default ~legacy_immediate:false - ~reason:(Type_parameter (path, parameter_name param)) - ~default:(Layout.value ~why:Type_argument) - param.ptyp_attributes - in - Btype.newgenvar layout) - sdecl.ptype_params; + { type_params; type_arity = arity; type_kind = Type_abstract; - type_layout = layout; + type_layout; type_private = sdecl.ptype_private; - type_manifest = Some (Ctype.newvar layout); + type_manifest = Some (Ctype.newvar type_layout); type_variance = Variance.unknown_signature ~injective:false ~arity; type_separability = Types.Separability.default_signature ~arity; type_is_newtype = false; @@ -298,6 +275,9 @@ let is_float env ty = let is_fixed_type sd = let rec has_row_var sty = match sty.ptyp_desc with + (* CR layouts upstreaming: The Ptyp_alias case also covers the case for a + layout annotation, conveniently. When upstreaming layouts, this + function will need a case for layout-annotation aliases. *) Ptyp_alias (sty, _) -> has_row_var sty | Ptyp_class _ | Ptyp_object (_, Open) @@ -347,29 +327,6 @@ let set_private_row env loc p decl = (* Translate one type declaration *) -(* [make_params] creates sort variables - these can be defaulted away (as in - transl_type_decl) or unified with existing sort-variable-free types (as in - transl_with_constraint). *) -let make_params env path params = - (* Our choice for now is that if you want a parameter of layout any, you have - to ask for it with an annotation. Some restriction here seems necessary - for backwards compatibility (e.g., we wouldn't want [type 'a id = 'a] to - have layout any). But it might be possible to infer any in some cases. *) - let make_param (sty, v) = - try - let layout = - layout_of_attributes_default ~legacy_immediate:false - ~reason:(Type_parameter (path, parameter_name sty)) - ~default:(Layout.of_new_sort_var ~why:Unannotated_type_parameter) - sty.ptyp_attributes - in - (transl_type_param env sty layout, v) - with Already_bound -> - raise(Error(sty.ptyp_loc, Repeated_parameter)) - in - List.map make_param params - - let transl_global_flags loc attrs = let transl_global_flag loc (r : (bool,unit) result) = match r with @@ -451,23 +408,35 @@ let transl_constructor_arguments env univars closed = function type declaration to compute accurate layouts in the presence of recursively defined types. It is updated later by [update_constructor_arguments_layouts] *) -let make_constructor env loc type_path type_params svars sargs sret_type = +let make_constructor + env loc ~cstr_path ~type_path type_params (svars : _ Either.t) + sargs sret_type = + let tvars = match svars with + | Left vars_only -> List.map (fun v -> v.txt, None) vars_only + | Right vars_layouts -> + List.map (fun (v, l) -> v.txt, Option.map Location.get_txt l) vars_layouts + in match sret_type with | None -> let args, targs = transl_constructor_arguments env None true sargs in - targs, None, args, None + tvars, targs, None, args, None | Some sret_type -> TyVarEnv.with_local_scope begin fun () -> (* if it's a generalized constructor we must work in a narrowed context so as to not introduce any new constraints *) TyVarEnv.reset (); let univars, closed = match svars with - | [] -> None, false - | vs -> + | Left [] | Right [] -> None, false + | Left vars_only -> + Ctype.begin_def(); + Some (TyVarEnv.make_poly_univars vars_only), true + | Right vars_layouts -> Ctype.begin_def(); - Some (TyVarEnv.make_poly_univars (List.map (fun v -> v.txt) vs)), true + Some (TyVarEnv.make_poly_univars_layouts + ~context:(fun v -> Constructor_type_parameter (cstr_path, v)) + vars_layouts), true in let args, targs = transl_constructor_arguments env univars closed sargs @@ -504,7 +473,7 @@ let make_constructor env loc type_path type_params svars sargs sret_type = Btype.iter_type_expr_cstr_args set_level args; set_level ret_type; end; - targs, Some tret_type, args, Some ret_type + tvars, targs, Some tret_type, args, Some ret_type end let verify_unboxed_attr unboxed_attr sdecl = @@ -626,7 +595,8 @@ let transl_declaration env sdecl (id, uid) = (* Bind type parameters *) TyVarEnv.reset (); Ctype.begin_def (); - let tparams = make_params env (Pident id) sdecl.ptype_params in + let path = Path.Pident id in + let tparams = make_params env path sdecl.ptype_params in let params = List.map (fun (cty, _) -> cty.ctyp_type) tparams in let cstrs = List.map (fun (sty, sty', loc) -> @@ -648,7 +618,7 @@ let transl_declaration env sdecl (id, uid) = let layout_annotation = (* We set legacy_immediate to true because you were already allowed to write [@@immediate] on declarations. *) - layout_of_attributes ~legacy_immediate:true ~reason:(Type_declaration (Pident id)) + layout_of_attributes ~legacy_immediate:true ~context:(Type_declaration path) sdecl.ptype_attributes in let (tman, man) = match sdecl.ptype_manifest with @@ -687,25 +657,35 @@ let transl_declaration env sdecl (id, uid) = raise(Error(sdecl.ptype_loc, Too_many_constructors)); let make_cstr scstr = let name = Ident.create_local scstr.pcd_name.txt in - let targs, tret_type, args, ret_type = - make_constructor env scstr.pcd_loc (Path.Pident id) params - scstr.pcd_vars scstr.pcd_args scstr.pcd_res + let svars, attributes = + match Jane_syntax.Layouts.of_constructor_declaration scstr with + | None -> + Either.Left scstr.pcd_vars, + scstr.pcd_attributes + | Some (vars_layouts, attributes) -> + Either.Right vars_layouts, + attributes + in + let tvars, targs, tret_type, args, ret_type = + make_constructor env scstr.pcd_loc + ~cstr_path:(Path.Pident name) ~type_path:path params + svars scstr.pcd_args scstr.pcd_res in let tcstr = { cd_id = name; cd_name = scstr.pcd_name; - cd_vars = scstr.pcd_vars; + cd_vars = tvars; cd_args = targs; cd_res = tret_type; cd_loc = scstr.pcd_loc; - cd_attributes = scstr.pcd_attributes } + cd_attributes = attributes } in let cstr = { Types.cd_id = name; cd_args = args; cd_res = ret_type; cd_loc = scstr.pcd_loc; - cd_attributes = scstr.pcd_attributes; + cd_attributes = attributes; cd_uid = Uid.mk ~current_unit:(Env.get_unit_name ()) } in tcstr, cstr @@ -816,7 +796,6 @@ let transl_declaration env sdecl (id, uid) = typ_kind = tkind; typ_private = sdecl.ptype_private; typ_attributes = sdecl.ptype_attributes; - typ_layout_annotation = layout_annotation; } (* Generalize a type declaration *) @@ -849,9 +828,14 @@ let rec check_constraints_rec env loc visited ty = *already* violate the constraints -- we need to report a problem with the unexpanded types, or we get errors that talk about the same type twice. This is generally true for constraint errors. *) - try Ctype.matches ~expand_error_trace:false env ty ty' - with Ctype.Matches_failure (env, err) -> + match Ctype.matches ~expand_error_trace:false env ty ty' with + | Unification_failure err -> raise (Error(loc, Constraint_failed (env, err))) + | Layout_mismatch { original_layout; inferred_layout; ty } -> + raise (Error(loc, Layout_mismatch_of_type (ty, + (Layout.Violation.of_ (Not_a_sublayout + (original_layout, inferred_layout)))))) + | All_good -> () end; List.iter (check_constraints_rec env loc visited) args | Tpoly (ty, tl) -> @@ -1001,7 +985,7 @@ let check_coherence env loc dpath decl = begin match Layout.sub_with_history layout' decl.type_layout with | Ok layout' -> { decl with type_layout = layout' } | Error v -> - raise (Error (loc, Layout_coherence_check (ty,v))) + raise (Error (loc, Layout_mismatch_of_type (ty,v))) end | { type_manifest = None } -> decl @@ -1176,7 +1160,8 @@ let update_decl_layout env dpath decl = if new_layout != decl.type_layout then begin match Layout.sub new_layout decl.type_layout with | Ok () -> () - | Error err -> raise(Error(decl.type_loc, Layout_update_check (dpath,err))) + | Error err -> + raise(Error(decl.type_loc, Layout_mismatch_of_path (dpath,err))) end; new_decl @@ -1556,36 +1541,46 @@ let transl_type_decl env rec_flag sdecl_list = (final_decls, final_env) (* Translating type extensions *) -let transl_extension_constructor_jst ~scope:_ _env _type_path _type_params - _typext_params _priv _id _attrs : Jane_syntax.Extension_constructor.t -> _ = - function - | _ -> . +let transl_extension_constructor_decl + env type_path typext_params loc id svars sargs sret_type = + let tvars, targs, tret_type, args, ret_type = + make_constructor env loc + ~cstr_path:(Pident id) ~type_path typext_params + svars sargs sret_type + in + let num_args = + match targs with + | Cstr_tuple args -> List.length args + | Cstr_record _ -> 1 + in + let layouts = Array.make num_args (Layout.any ~why:Dummy_layout) in + let args, constant = + update_constructor_arguments_layouts env loc args layouts + in + args, layouts, constant, ret_type, + Text_decl(tvars, targs, tret_type) + +let transl_extension_constructor_jst env type_path _type_params + typext_params _priv loc id _attrs : + Jane_syntax.Extension_constructor.t -> _ = function + | Jext_layout (Lext_decl(vars_layouts, args, res)) -> + transl_extension_constructor_decl + env type_path typext_params loc id (Right vars_layouts) args res let transl_extension_constructor ~scope env type_path type_params typext_params priv sext = let id = Ident.create_scoped ~scope sext.pext_name.txt in + let loc = sext.pext_loc in let args, arg_layouts, constant, ret_type, kind = match Jane_syntax.Extension_constructor.of_ast sext with | Some (jext, attrs) -> transl_extension_constructor_jst - ~scope env type_path type_params typext_params priv id attrs jext + env type_path type_params typext_params priv loc id attrs jext | None -> match sext.pext_kind with Pext_decl(svars, sargs, sret_type) -> - let targs, tret_type, args, ret_type = - make_constructor env sext.pext_loc type_path typext_params - svars sargs sret_type - in - let num_args = - match targs with - | Cstr_tuple args -> List.length args - | Cstr_record _ -> 1 - in - let layouts = Array.make num_args (Layout.any ~why:Dummy_layout) in - let args, constant = - update_constructor_arguments_layouts env sext.pext_loc args layouts - in - args, layouts, constant, ret_type, Text_decl(svars, targs, tret_type) + transl_extension_constructor_decl + env type_path typext_params loc id (Left svars) sargs sret_type | Pext_rebind lid -> let usage : Env.constructor_usage = if priv = Public then Env.Exported else Env.Exported_private @@ -1753,7 +1748,9 @@ let transl_type_extension extend env loc styext = | None -> () | Some err -> raise (Error(loc, Extension_mismatch (type_path, env, err))) end; - let ttype_params = make_params env type_path styext.ptyext_params in + let ttype_params = + make_params env type_path styext.ptyext_params + in let type_params = List.map (fun (cty, _) -> cty.ctyp_type) ttype_params in List.iter2 (Ctype.unify_var env) (Ctype.instance_list type_decl.type_params) @@ -2210,12 +2207,6 @@ let transl_with_constraint id ?fixed_row_path ~sig_env ~sig_decl ~outer_env type_variance = new_type_variance; type_separability = new_type_separability; } in - let layout_annotation = - layout_of_attributes - ~legacy_immediate:false - ~reason:(With_constraint sdecl.ptype_name.txt) - sdecl.ptype_attributes - in Ctype.end_def(); generalize_decl new_sig_decl; { @@ -2229,7 +2220,6 @@ let transl_with_constraint id ?fixed_row_path ~sig_env ~sig_decl ~outer_env typ_kind = Ttype_abstract; typ_private = sdecl.ptype_private; typ_attributes = sdecl.ptype_attributes; - typ_layout_annotation = layout_annotation; } (* Approximate a type declaration: just make all types abstract *) @@ -2263,21 +2253,18 @@ let approx_type_decl sdecl_list = List.map (fun sdecl -> let id = Ident.create_scoped ~scope sdecl.ptype_name.txt in + let path = Path.Pident id in let injective = sdecl.ptype_kind <> Ptype_abstract in let layout = (* We set legacy_immediate to true because you were already allowed to write [@@immediate] on declarations. *) layout_of_attributes_default ~legacy_immediate:true - ~reason:(Type_declaration (Pident id)) + ~context:(Type_declaration path) ~default:(Layout.value ~why:Default_type_layout) sdecl.ptype_attributes in let params = - List.map (fun (styp,_) -> - layout_of_attributes_default ~legacy_immediate:false - ~reason:(Type_parameter (Pident id, parameter_name styp)) - ~default:(Layout.value ~why:Type_argument) - styp.ptyp_attributes) + List.map (fun (param, _) -> get_type_param_layout path param) sdecl.ptype_params in (id, abstract_type_decl ~injective layout params)) @@ -2338,11 +2325,6 @@ let explain_unbound_single ppf tv ty = "case" (fun (lab,_) -> "`" ^ lab ^ " of ") | _ -> trivial ty - -let tys_of_constr_args = function - | Types.Cstr_tuple tl -> List.map fst tl - | Types.Cstr_record lbls -> List.map (fun l -> l.Types.ld_type) lbls - let report_error ppf = function | Repeated_parameter -> fprintf ppf "A type parameter occurs several times" @@ -2542,12 +2524,12 @@ let report_error ppf = function a direct argument or result of the primitive,@ \ it should not occur deeply into its type.@]" (match kind with Unboxed -> "@unboxed" | Untagged -> "@untagged") - | Layout_update_check (dpath,v) -> + | Layout_mismatch_of_path (dpath,v) -> (* the type is always printed just above, so print out just the head of the path instead of something like [t/3] *) let offender ppf = fprintf ppf "Type %s" (Ident.name (Path.head dpath)) in Layout.Violation.report_with_offender ~offender ppf v - | Layout_coherence_check (ty,v) -> + | Layout_mismatch_of_type (ty,v) -> let offender ppf = fprintf ppf "Type %a" Printtyp.type_expr ty in Layout.Violation.report_with_offender ~offender ppf v | Layout_sort {lloc; typ; err} -> @@ -2578,7 +2560,7 @@ let report_error ppf = function fprintf ppf "an unnamed existential variable" | Some str -> fprintf ppf "the existential variable %a" - Pprintast.tyvar str in + Printast.tyvar str in fprintf ppf "@[This type cannot be unboxed because@ \ it might contain both float and non-float values,@ \ depending on the instantiation of %a.@ \ diff --git a/typing/typedecl.mli b/typing/typedecl.mli index 8a8cf46300f..9e68d427797 100644 --- a/typing/typedecl.mli +++ b/typing/typedecl.mli @@ -50,8 +50,7 @@ val transl_with_constraint: val abstract_type_decl: injective:bool -> layout -> layout list -> type_declaration val approx_type_decl: - Parsetree.type_declaration list -> - (Ident.t * type_declaration) list + Parsetree.type_declaration list -> (Ident.t * type_declaration) list val check_recmod_typedecl: Env.t -> Location.t -> Ident.t list -> Path.t -> type_declaration -> unit @@ -102,8 +101,8 @@ type error = | Multiple_native_repr_attributes | Cannot_unbox_or_untag_type of native_repr_kind | Deep_unbox_or_untag_attribute of native_repr_kind - | Layout_coherence_check of type_expr * Layout.Violation.t - | Layout_update_check of Path.t * Layout.Violation.t + | Layout_mismatch_of_type of type_expr * Layout.Violation.t + | Layout_mismatch_of_path of Path.t * Layout.Violation.t | Layout_sort of { lloc : layout_sort_loc ; typ : type_expr diff --git a/typing/typedtree.ml b/typing/typedtree.ml index d4ccd1ddbbc..4a6ddb83522 100644 --- a/typing/typedtree.ml +++ b/typing/typedtree.ml @@ -96,7 +96,7 @@ and exp_extra = | Texp_constraint of core_type | Texp_coerce of core_type option * core_type | Texp_poly of core_type option - | Texp_newtype of string + | Texp_newtype of string * const_layout option and fun_curry_state = @@ -526,16 +526,15 @@ and core_type = } and core_type_desc = - Ttyp_any - | Ttyp_var of string + | Ttyp_var of string option * const_layout option | Ttyp_arrow of arg_label * core_type * core_type | Ttyp_tuple of core_type list | Ttyp_constr of Path.t * Longident.t loc * core_type list | Ttyp_object of object_field list * closed_flag | Ttyp_class of Path.t * Longident.t loc * core_type list - | Ttyp_alias of core_type * string + | Ttyp_alias of core_type * string option * const_layout option | Ttyp_variant of row_field list * closed_flag * label list option - | Ttyp_poly of string list * core_type + | Ttyp_poly of (string * const_layout option) list * core_type | Ttyp_package of package_type and package_type = { @@ -586,7 +585,6 @@ and type_declaration = typ_manifest: core_type option; typ_loc: Location.t; typ_attributes: attribute list; - typ_layout_annotation: layout option; } and type_kind = @@ -610,7 +608,7 @@ and constructor_declaration = { cd_id: Ident.t; cd_name: string loc; - cd_vars: string loc list; + cd_vars: (string * const_layout option) list; cd_args: constructor_arguments; cd_res: core_type option; cd_loc: Location.t; @@ -650,7 +648,9 @@ and extension_constructor = } and extension_constructor_kind = - Text_decl of string loc list * constructor_arguments * core_type option + Text_decl of (string * const_layout option) list * + constructor_arguments * + core_type option | Text_rebind of Path.t * Longident.t loc and class_type = diff --git a/typing/typedtree.mli b/typing/typedtree.mli index a1dffe4d3d8..c7a874064e7 100644 --- a/typing/typedtree.mli +++ b/typing/typedtree.mli @@ -171,8 +171,8 @@ and exp_extra = *) | Texp_poly of core_type option (** Used for method bodies. *) - | Texp_newtype of string - (** fun (type t) -> *) + | Texp_newtype of string * const_layout option + (** fun (type t : immediate) -> *) and fun_curry_state = | More_args of { partial_mode : Types.alloc_mode } @@ -715,16 +715,15 @@ and core_type = } and core_type_desc = - Ttyp_any - | Ttyp_var of string + | Ttyp_var of string option * const_layout option | Ttyp_arrow of arg_label * core_type * core_type | Ttyp_tuple of core_type list | Ttyp_constr of Path.t * Longident.t loc * core_type list | Ttyp_object of object_field list * closed_flag | Ttyp_class of Path.t * Longident.t loc * core_type list - | Ttyp_alias of core_type * string + | Ttyp_alias of core_type * string option * const_layout option | Ttyp_variant of row_field list * closed_flag * label list option - | Ttyp_poly of string list * core_type + | Ttyp_poly of (string * Asttypes.const_layout option) list * core_type | Ttyp_package of package_type and package_type = { @@ -776,7 +775,6 @@ and type_declaration = typ_manifest: core_type option; typ_loc: Location.t; typ_attributes: attributes; - typ_layout_annotation: Layouts.layout option; } and type_kind = @@ -800,7 +798,7 @@ and constructor_declaration = { cd_id: Ident.t; cd_name: string loc; - cd_vars: string loc list; + cd_vars: (string * const_layout option) list; cd_args: constructor_arguments; cd_res: core_type option; cd_loc: Location.t; @@ -840,7 +838,9 @@ and extension_constructor = } and extension_constructor_kind = - Text_decl of string loc list * constructor_arguments * core_type option + Text_decl of (string * const_layout option) list * + constructor_arguments * + core_type option | Text_rebind of Path.t * Longident.t loc and class_type = diff --git a/typing/typemod.ml b/typing/typemod.ml index aa4cd5849b1..957366eeb4d 100644 --- a/typing/typemod.ml +++ b/typing/typemod.ml @@ -503,21 +503,30 @@ let check_well_formed_module env loc context mty = let () = Env.check_well_formed_module := check_well_formed_module let type_decl_is_alias sdecl = (* assuming no explicit constraint *) + let eq_vars x y = + match Jane_syntax.Core_type.of_ast x, Jane_syntax.Core_type.of_ast y with + (* a layout annotation on either type variable might mean this definition + is not an alias. Example: {v + type ('a : value) t + type ('a : immediate) t2 = ('a : immediate) t + v} + But the only way to know that t2 isn't an alias is to look at + layouts in the environment, which is hard to do here. So we + conservatively say that any layout annotations block alias + detection. + *) + | (Some _, _) | (_, Some _) -> false + | None, None -> + match x.ptyp_desc, y.ptyp_desc with + | Ptyp_var sx, Ptyp_var sy -> sx = sy + | _, _ -> false + in match sdecl.ptype_manifest with | Some {ptyp_desc = Ptyp_constr (lid, stl)} when List.length stl = List.length sdecl.ptype_params -> - begin - match - List.iter2 (fun x (y, _) -> - match x, y with - {ptyp_desc=Ptyp_var sx}, {ptyp_desc=Ptyp_var sy} - when sx = sy -> () - | _, _ -> raise Exit) - stl sdecl.ptype_params; - with - | exception Exit -> None - | () -> Some lid - end + if List.for_all2 (fun x (y, _) -> eq_vars x y) stl sdecl.ptype_params + then Some lid + else None | _ -> None ;; diff --git a/typing/types.ml b/typing/types.ml index eec5dcc12dd..d427dc319ae 100644 --- a/typing/types.ml +++ b/typing/types.ml @@ -294,6 +294,10 @@ and type_transparence = | Type_new (* "new" type *) | Type_private (* private type *) +let tys_of_constr_args = function + | Cstr_tuple tl -> List.map fst tl + | Cstr_record lbls -> List.map (fun l -> l.ld_type) lbls + (* Type expressions for the class language *) type class_type = diff --git a/typing/types.mli b/typing/types.mli index c67e8b52878..160d186da9d 100644 --- a/typing/types.mli +++ b/typing/types.mli @@ -576,6 +576,8 @@ and constructor_arguments = | Cstr_tuple of (type_expr * global_flag) list | Cstr_record of label_declaration list +val tys_of_constr_args : constructor_arguments -> type_expr list + val decl_is_abstract : type_declaration -> bool (* Returns the inner type, if unboxed. *) diff --git a/typing/typetexp.ml b/typing/typetexp.ml index bc802549bde..2dfe6114e50 100644 --- a/typing/typetexp.ml +++ b/typing/typetexp.ml @@ -33,6 +33,19 @@ type value_loc = type sort_loc = Fun_arg | Fun_ret +type cannot_quantify_reason = + | Unified of type_expr + | Univar + | Scope_escape + +(* a description of the layout on an explicitly quantified universal + variable, containing whether the layout was a default + (e.g. [let f : 'a. 'a -> 'a = ...]) or explicit + (e.g. [let f : ('a : immediate). ...]) and what the layout was; + it is original as compared to the inferred layout after processing + the body of the type *) +type layout_info = { original_layout : layout; defaulted : bool } + type error = | Unbound_type_variable of string * string list | No_type_wildcards @@ -49,7 +62,9 @@ type error = | Not_a_variant of type_expr | Variant_tags of string * string | Invalid_variable_name of string - | Cannot_quantify of string * type_expr + | Cannot_quantify of string * cannot_quantify_reason + | Bad_univar_layout of + { name : string; layout_info : layout_info; inferred_layout : layout } | Multiple_constraints_on_type of Longident.t | Method_mismatch of string * type_expr * type_expr | Opened_object of Path.t option @@ -60,6 +75,7 @@ type error = {vloc : value_loc; typ : type_expr; err : Layout.Violation.t} | Non_sort of {vloc : sort_loc; typ : type_expr; err : Layout.Violation.t} + | Bad_layout_annot of type_expr * Layout.Violation.t exception Error of Location.t * Env.t * error exception Error_forward of Location.error @@ -80,7 +96,12 @@ module TyVarEnv : sig val with_univars : poly_univars -> (unit -> 'a) -> 'a (* evaluate with a locally extended set of univars *) - val make_poly_univars : string list -> poly_univars + val make_poly_univars : string Location.loc list -> poly_univars + (* a version of [make_poly_univars_layouts] that doesn't take layouts *) + + val make_poly_univars_layouts : + context:(string -> Layout.annotation_context) -> + (string Location.loc * layout_annotation option) list -> poly_univars (* see mli file *) val check_poly_univars : Env.t -> Location.t -> poly_univars -> type_expr list @@ -147,16 +168,6 @@ end = struct let used_variables = ref (TyVarMap.empty : (type_expr * Location.t) TyVarMap.t) - (* These are variables we expect to become univars (they were introduced with - e.g. ['a .]), but we need to make sure they don't unify first. Why not - just birth them as univars? Because they might successfully unify with a - row variable in the ['a. < m : ty; .. > as 'a] idiom. They are like the - [used_variables], but will not be globalized in [globalize_used_variables]. - *) - let univars = ref ([] : (string * type_expr) list) - let assert_not_generic uvs = - assert (List.for_all (fun (_name, v) -> not_generic v) uvs) - (* These are variables that will become univars when we're done with the current type. Used to force free variables in method types to become univars. @@ -197,7 +208,24 @@ end = struct TyVarMap.fold add_name !type_variables [] (*****) - type poly_univars = (string * type_expr) list + type poly_univars = (string * type_expr * layout_info) list + + (* These are variables we expect to become univars (they were introduced with + e.g. ['a .]), but we need to make sure they don't unify first. Why not + just birth them as univars? Because they might successfully unify with a + row variable in the ['a. < m : ty; .. > as 'a] idiom. They are like the + [used_variables], but will not be globalized in [globalize_used_variables]. + *) + let univars = ref ([] : poly_univars) + let assert_not_generic uvs = + assert (List.for_all (fun (_name, v, _lay) -> not_generic v) uvs) + + let rec find_poly_univars name = function + | [] -> raise Not_found + | (n, t, _) :: rest -> + if String.equal name n + then t + else find_poly_univars name rest let with_univars new_ones f = assert_not_generic new_ones; @@ -207,18 +235,50 @@ end = struct f ~finally:(fun () -> univars := old_univars) + let mk_poly_univars_triple_with_layout ~context var layout = + let name = var.txt in + let original_layout = Layout.of_annotation ~context:(context name) layout in + let layout_info = { original_layout; defaulted = false } in + name, newvar ~name original_layout, layout_info + + let mk_poly_univars_triple_without_layout var = + let name = var.txt in + let original_layout = Layout.value ~why:Univar in + let layout_info = { original_layout; defaulted = true } in + name, newvar ~name original_layout, layout_info + let make_poly_univars vars = - List.map (fun name -> name, newvar ~name (Layout.value ~why:Univar)) vars + List.map mk_poly_univars_triple_without_layout vars + + let make_poly_univars_layouts ~context vars_layouts = + let mk_trip = function + | (v, None) -> mk_poly_univars_triple_without_layout v + | (v, Some l) -> mk_poly_univars_triple_with_layout ~context v l + in + List.map mk_trip vars_layouts let check_poly_univars env loc vars = - vars |> List.iter (fun (_, v) -> generalize v); - vars |> List.map (fun (name, ty1) -> + vars |> List.iter (fun (_, v, _) -> generalize v); + vars |> List.map (fun (name, ty1, + ({ original_layout; _ } as layout_info)) -> let v = Btype.proxy ty1 in + let cant_quantify reason = + raise (Error (loc, env, Cannot_quantify(name, reason))) + in begin match get_desc v with - | Tvar { name; layout } when get_level v = Btype.generic_level -> + | Tvar { layout } when not (Layout.equate layout original_layout) -> + let reason = + Bad_univar_layout { name; layout_info; inferred_layout = layout } + in + raise (Error (loc, env, reason)) + | Tvar _ when get_level v <> Btype.generic_level -> + cant_quantify Scope_escape + | Tvar { name; layout } -> set_type_desc v (Tunivar { name; layout }) + | Tunivar _ -> + cant_quantify Univar | _ -> - raise (Error (loc, env, Cannot_quantify(name, v))) + cant_quantify (Unified v) end; v) @@ -240,7 +300,7 @@ end = struct (* throws Not_found if the variable is not in scope *) let lookup_local name = try - List.assoc name !univars + find_poly_univars name !univars with Not_found -> instance (fst (TyVarMap.find name !used_variables)) (* This call to instance might be redundant; all variables @@ -365,36 +425,72 @@ let newvar ?name layout = let valid_tyvar_name name = name <> "" && name.[0] <> '_' -(* Here we take a layout argument and ignore any layout annotations in the styp. - The expectation is most callers will get the layout from the annotation, but - in some cases (objects) we don't want to support those annotations, so it - makes sense for the caller to do this. *) -let transl_type_param env styp layout = +let transl_type_param_var env loc attrs name_opt + (layout : layout) (layout_annot : const_layout option) = + let tvar = Ttyp_var (name_opt, layout_annot) in + let name = + match name_opt with + | None -> "_" + | Some name -> + if not (valid_tyvar_name name) then + raise (Error (loc, Env.empty, Invalid_variable_name ("'" ^ name))); + if TyVarEnv.is_in_scope name then + raise Already_bound; + name + in + let ty = new_global_var ~name layout in + Option.iter (fun name -> TyVarEnv.add name ty) name_opt; + { ctyp_desc = tvar; ctyp_type = ty; ctyp_env = env; + ctyp_loc = loc; ctyp_attributes = attrs } + +let transl_type_param_jst env loc attrs path : + Jane_syntax.Core_type.t -> _ = + function + | Jtyp_layout (Ltyp_var { name; layout = annot }) -> + let layout = + Layout.of_annotation ~context:(Type_parameter (path, name)) annot + in + transl_type_param_var env loc attrs name layout (Some annot.txt) + | Jtyp_layout (Ltyp_poly _ | Ltyp_alias _) -> + Misc.fatal_error "non-type-variable in transl_type_param_jst" + +let transl_type_param env path styp = let loc = styp.ptyp_loc in + match Jane_syntax.Core_type.of_ast styp with + | Some (etyp, attrs) -> transl_type_param_jst env loc attrs path etyp + | None -> + (* Our choice for now is that if you want a parameter of layout any, you have + to ask for it with an annotation. Some restriction here seems necessary + for backwards compatibility (e.g., we wouldn't want [type 'a id = 'a] to + have layout any). But it might be possible to infer any in some cases. *) + let layout = Layout.of_new_sort_var ~why:Unannotated_type_parameter in + let attrs = styp.ptyp_attributes in match styp.ptyp_desc with - Ptyp_any -> - let ty = new_global_var ~name:"_" layout in - { ctyp_desc = Ttyp_any; ctyp_type = ty; ctyp_env = env; - ctyp_loc = loc; ctyp_attributes = styp.ptyp_attributes; } + Ptyp_any -> transl_type_param_var env loc attrs None layout None | Ptyp_var name -> - let ty = - if not (valid_tyvar_name name) then - raise (Error (loc, Env.empty, Invalid_variable_name ("'" ^ name))); - if TyVarEnv.is_in_scope name then - raise Already_bound; - let v = new_global_var ~name layout in - TyVarEnv.add name v; - v - in - { ctyp_desc = Ttyp_var name; ctyp_type = ty; ctyp_env = env; - ctyp_loc = loc; ctyp_attributes = styp.ptyp_attributes; } + transl_type_param_var env loc attrs (Some name) layout None | _ -> assert false -let transl_type_param env styp layout = +let transl_type_param env path styp = (* Currently useless, since type parameters cannot hold attributes (but this could easily be lifted in the future). *) Builtin_attributes.warning_scope styp.ptyp_attributes - (fun () -> transl_type_param env styp layout) + (fun () -> transl_type_param env path styp) + +let get_type_param_layout path styp = + match Jane_syntax.Core_type.of_ast styp with + | None -> Layout.of_new_sort_var ~why:Unannotated_type_parameter + | Some (Jtyp_layout (Ltyp_var { name; layout }), _attrs) -> + Layout.of_annotation ~context:(Type_parameter (path, name)) layout + | Some _ -> Misc.fatal_error "non-type-variable in get_type_param_layout" + +let get_type_param_name styp = + (* We don't need to check for jane-syntax here, just to get the + name. *) + match styp.ptyp_desc with + | Ptyp_any -> None + | Ptyp_var name -> Some name + | _ -> Misc.fatal_error "non-type-variable in get_type_param_name" let get_alloc_mode styp = match Builtin_attributes.has_local styp.ptyp_attributes with @@ -426,6 +522,19 @@ let check_arg_type styp = | _ -> () end +(* translate the ['a 'b ('c : immediate) .] part of a polytype, + returning something suitable as the first argument of Ttyp_poly and + a [poly_univars] *) +let transl_bound_vars : (_, _) Either.t -> _ = + let mk_one v = v.txt, None in + let mk_pair (v, l) = v.txt, Option.map Location.get_txt l in + function + | Left vars_only -> List.map mk_one vars_only, + TyVarEnv.make_poly_univars vars_only + | Right vars_layouts -> List.map mk_pair vars_layouts, + TyVarEnv.make_poly_univars_layouts + ~context:(fun v -> Univar v) vars_layouts + let rec transl_type env policy mode styp = Builtin_attributes.warning_scope styp.ptyp_attributes (fun () -> transl_type_aux env policy mode styp) @@ -437,28 +546,19 @@ and transl_type_aux env policy mode styp = ctyp_loc = loc; ctyp_attributes = styp.ptyp_attributes } in match Jane_syntax.Core_type.of_ast styp with - | Some (etyp, attrs) -> transl_type_aux_jst env policy mode attrs etyp + | Some (etyp, attrs) -> + let desc, typ = transl_type_aux_jst env policy mode attrs loc etyp in + ctyp desc typ | None -> match styp.ptyp_desc with Ptyp_any -> let ty = - TyVarEnv.new_anon_var styp.ptyp_loc env (Layout.any ~why:Wildcard) policy + TyVarEnv.new_anon_var loc env (Layout.any ~why:Wildcard) policy in - ctyp Ttyp_any ty + ctyp (Ttyp_var (None, None)) ty | Ptyp_var name -> - let ty = - if not (valid_tyvar_name name) then - raise (Error (styp.ptyp_loc, env, Invalid_variable_name ("'" ^ name))); - begin try - TyVarEnv.lookup_local name - with Not_found -> - let v = TyVarEnv.new_var ~name - (Layout.any ~why:Unification_var) policy in - TyVarEnv.remember_used name v styp.ptyp_loc; - v - end - in - ctyp (Ttyp_var name) ty + let desc, typ = transl_type_var env policy styp.ptyp_loc name None in + ctyp desc typ | Ptyp_arrow _ -> let args, ret, ret_mode = extract_params styp in let rec loop acc_mode args = @@ -635,40 +735,8 @@ and transl_type_aux env policy mode styp = in ctyp (Ttyp_class (path, lid, args)) ty | Ptyp_alias(st, alias) -> - let cty = - try - let t = TyVarEnv.lookup_local alias in - let ty = transl_type env policy mode st in - begin try unify_var env t ty.ctyp_type with Unify err -> - let err = Errortrace.swap_unification_error err in - raise(Error(styp.ptyp_loc, env, Alias_type_mismatch err)) - end; - ty - with Not_found -> - if !Clflags.principal then begin_def (); - let t = newvar (Layout.any ~why:Dummy_layout) in - TyVarEnv.remember_used alias t styp.ptyp_loc; - let ty = transl_type env policy mode st in - begin try unify_var env t ty.ctyp_type with Unify err -> - let err = Errortrace.swap_unification_error err in - raise(Error(styp.ptyp_loc, env, Alias_type_mismatch err)) - end; - if !Clflags.principal then begin - end_def (); - generalize_structure t; - end; - let t = instance t in - let px = Btype.proxy t in - begin match get_desc px with - | Tvar { name = None; layout } -> - set_type_desc px (Tvar { name = Some alias; layout }) - | Tunivar { name = None; layout } -> - set_type_desc px (Tunivar {name = Some alias; layout}) - | _ -> () - end; - { ty with ctyp_type = t } - in - ctyp (Ttyp_alias (cty, alias)) cty.ctyp_type + let desc, typ = transl_type_alias env policy mode loc st (Some alias) None in + ctyp desc typ | Ptyp_variant(fields, closed, present) -> let name = ref None in let mkfield l f = @@ -782,22 +850,10 @@ and transl_type_aux env policy mode styp = let ty = newty (Tvariant (make_row more)) in ctyp (Ttyp_variant (tfields, closed, present)) ty | Ptyp_poly(vars, st) -> - (* CR layouts v1.5: probably some work to do here when we add layout - annotations on type parameters *) - let vars = List.map (fun v -> v.txt) vars in - begin_def(); - let new_univars = TyVarEnv.make_poly_univars vars in - let cty = TyVarEnv.with_univars new_univars begin fun () -> - transl_type env policy mode st - end in - let ty = cty.ctyp_type in - end_def(); - generalize ty; - let ty_list = TyVarEnv.check_poly_univars env styp.ptyp_loc new_univars in - let ty_list = List.filter (fun v -> deep_occur v ty) ty_list in - let ty' = Btype.newgenty (Tpoly(ty, ty_list)) in - unify_var env (newvar (Layout.any ~why:Dummy_layout)) ty'; - ctyp (Ttyp_poly (vars, cty)) ty' + let desc, typ = + transl_type_poly env policy mode styp.ptyp_loc (Either.Left vars) st + in + ctyp desc typ | Ptyp_package (p, l) -> (* CR layouts: right now we're doing a real gross hack where we demand everything in a package type with constraint be value. @@ -836,9 +892,140 @@ and transl_type_aux env policy mode styp = | Ptyp_extension ext -> raise (Error_forward (Builtin_attributes.error_of_extension ext)) -and transl_type_aux_jst _env _policy _mode _attrs - : Jane_syntax.Core_type.t -> _ = function - | _ -> . +and transl_type_aux_jst env policy mode _attrs loc : + Jane_syntax.Core_type.t -> _ = function + | Jtyp_layout typ -> transl_type_aux_jst_layout env policy mode loc typ + +and transl_type_aux_jst_layout env policy mode loc : + Jane_syntax.Layouts.core_type -> _ = function + | Ltyp_var { name = None; layout } -> + let tlayout = Layout.of_annotation ~context:(Type_wildcard loc) layout in + Ttyp_var (None, Some layout.txt), + TyVarEnv.new_anon_var loc env tlayout policy + | Ltyp_var { name = Some name; layout } -> + transl_type_var env policy loc name (Some layout) + | Ltyp_poly { bound_vars; inner_type } -> + transl_type_poly env policy mode loc (Either.Right bound_vars) inner_type + | Ltyp_alias { aliased_type; name; layout } -> + transl_type_alias env policy mode loc aliased_type name (Some layout) + +and transl_type_var env policy loc name layout_annot_opt = + let print_name = "'" ^ name in + if not (valid_tyvar_name name) then + raise (Error (loc, env, Invalid_variable_name print_name)); + let of_annot = Layout.of_annotation ~context:(Type_variable print_name) in + let ty = try + let ty = TyVarEnv.lookup_local name in + begin match layout_annot_opt with + | None -> () + | Some layout_annot -> + let layout = of_annot layout_annot in + match constrain_type_layout env ty layout with + | Ok () -> () + | Error err -> + raise (Error(layout_annot.loc, env, Bad_layout_annot (ty, err))) + end; + ty + with Not_found -> + let layout = match layout_annot_opt with + | None -> Layout.any ~why:Unification_var + | Some layout_annot -> of_annot layout_annot + in + let ty = TyVarEnv.new_var ~name layout policy in + TyVarEnv.remember_used name ty loc; + ty + in + Ttyp_var (Some name, Option.map Location.get_txt layout_annot_opt), ty + +and transl_type_poly env policy mode loc (vars : (_, _) Either.t) st = + begin_def(); + let typed_vars, new_univars = transl_bound_vars vars in + let cty = TyVarEnv.with_univars new_univars begin fun () -> + transl_type env policy mode st + end in + let ty = cty.ctyp_type in + end_def(); + generalize ty; + let ty_list = TyVarEnv.check_poly_univars env loc new_univars in + let ty_list = List.filter (fun v -> deep_occur v ty) ty_list in + let ty' = Btype.newgenty (Tpoly(ty, ty_list)) in + unify_var env (newvar (Layout.any ~why:Dummy_layout)) ty'; + Ttyp_poly (typed_vars, cty), ty' + +and transl_type_alias env policy mode alias_loc styp name_opt layout_annot_opt = + let cty = match name_opt with + | Some alias -> + begin try + let t = TyVarEnv.lookup_local alias in + let cty = transl_type env policy mode styp in + begin try unify_var env t cty.ctyp_type with Unify err -> + let err = Errortrace.swap_unification_error err in + raise(Error(alias_loc, env, Alias_type_mismatch err)) + end; + begin match layout_annot_opt with + | None -> () + | Some layout_annot -> + let layout = + Layout.of_annotation ~context:(Type_variable alias) layout_annot + in + begin match constrain_type_layout env t layout with + | Ok () -> () + | Error err -> + raise (Error(layout_annot.loc, env, Bad_layout_annot(t, err))) + end + end; + cty + with Not_found -> + if !Clflags.principal then begin_def (); + let layout = + Layout.(of_annotation_option_default + ~default:(any ~why:Dummy_layout) + ~context:(Type_variable alias) + layout_annot_opt) + in + let t = newvar layout in + TyVarEnv.remember_used alias t alias_loc; + let cty = transl_type env policy mode styp in + begin try unify_var env t cty.ctyp_type with Unify err -> + let err = Errortrace.swap_unification_error err in + raise(Error(alias_loc, env, Alias_type_mismatch err)) + end; + if !Clflags.principal then begin + end_def (); + generalize_structure t; + end; + let t = instance t in + let px = Btype.proxy t in + begin match get_desc px with + | Tvar { name = None; layout } -> + set_type_desc px (Tvar { name = Some alias; layout }) + | Tunivar { name = None; layout } -> + set_type_desc px (Tunivar {name = Some alias; layout}) + | _ -> () + end; + { cty with ctyp_type = t } + end + | None -> + let cty = transl_type env policy mode styp in + let cty_expr = cty.ctyp_type in + let layout_annot = match layout_annot_opt with + | None -> Misc.fatal_error "anonymous alias without layout annotation" + | Some layout_annot -> layout_annot + in + let layout = + Layout.of_annotation + ~context:(Type_wildcard layout_annot.loc) layout_annot + in + begin match constrain_type_layout env cty_expr layout with + | Ok () -> () + | Error err -> + raise (Error(layout_annot.loc, env, + Bad_layout_annot(cty_expr, err))) + end; + cty + in + Ttyp_alias (cty, name_opt, Option.map Location.get_txt layout_annot_opt), + cty.ctyp_type and transl_fields env policy o fields = let hfields = Hashtbl.create 17 in @@ -984,34 +1171,52 @@ let transl_simple_type_delayed env mode styp = generalize typ.ctyp_type; (typ, instance typ.ctyp_type, force) +let transl_type_scheme_mono env styp = + begin_def(); + let typ = transl_simple_type env ~closed:false Alloc_mode.Global styp in + end_def(); + (* This next line is very important: it stops [val] and [external] + declarations from having undefaulted layout variables. Without + this line, we might accidentally export a layout-flexible definition + from a compilation unit, which would lead to miscompilation. *) + remove_mode_and_layout_variables typ.ctyp_type; + generalize typ.ctyp_type; + typ + +let transl_type_scheme_poly env attrs loc vars inner_type = + begin_def(); + let typed_vars, univars = transl_bound_vars vars in + let typ = + transl_simple_type env ~univars ~closed:true Alloc_mode.Global inner_type + in + end_def(); + generalize typ.ctyp_type; + let _ = TyVarEnv.instance_poly_univars env loc univars in + { ctyp_desc = Ttyp_poly (typed_vars, typ); + ctyp_type = typ.ctyp_type; + ctyp_env = env; + ctyp_loc = loc; + ctyp_attributes = attrs } + +let transl_type_scheme_jst env styp attrs loc : Jane_syntax.Core_type.t -> _ = + function + | Jtyp_layout (Ltyp_poly { bound_vars; inner_type }) -> + transl_type_scheme_poly env attrs loc (Right bound_vars) inner_type + | Jtyp_layout (Ltyp_var _ | Ltyp_alias _) -> + transl_type_scheme_mono env styp + let transl_type_scheme env styp = TyVarEnv.reset (); + match Jane_syntax.Core_type.of_ast styp with + | Some (etyp, attrs) -> + transl_type_scheme_jst env styp attrs styp.ptyp_loc etyp + | None -> match styp.ptyp_desc with | Ptyp_poly (vars, st) -> - begin_def(); - let vars = List.map (fun v -> v.txt) vars in - let univars = TyVarEnv.make_poly_univars vars in - let typ = transl_simple_type env ~univars ~closed:true Alloc_mode.Global st in - end_def(); - generalize typ.ctyp_type; - let _ = TyVarEnv.instance_poly_univars env styp.ptyp_loc univars in - { ctyp_desc = Ttyp_poly (vars, typ); - ctyp_type = typ.ctyp_type; - ctyp_env = env; - ctyp_loc = styp.ptyp_loc; - ctyp_attributes = styp.ptyp_attributes } + transl_type_scheme_poly env styp.ptyp_attributes + styp.ptyp_loc (Either.Left vars) st | _ -> - begin_def(); - let typ = transl_simple_type env ~closed:false Alloc_mode.Global styp in - end_def(); - (* This next line is very important: it stops [val] and [external] - declarations from having undefaulted layout variables. Without - this line, we might accidentally export a layout-flexible definition - from a compilation unit, which would lead to miscompilation. *) - remove_mode_and_layout_variables typ.ctyp_type; - generalize typ.ctyp_type; - typ - + transl_type_scheme_mono env styp (* Error report *) @@ -1034,7 +1239,7 @@ let report_error env ppf = function but is here applied to %i argument(s)@]" longident lid expected provided | Bound_type_variable name -> - fprintf ppf "Already bound type parameter %a" Pprintast.tyvar name + fprintf ppf "Already bound type parameter %a" Printast.tyvar name | Recursive_type -> fprintf ppf "This type is recursive" | Unbound_row_variable lid -> @@ -1087,17 +1292,29 @@ let report_error env ppf = function lab1 lab2 "Change one of them." | Invalid_variable_name name -> fprintf ppf "The type variable name %s is not allowed in programs" name - | Cannot_quantify (name, v) -> + | Cannot_quantify (name, reason) -> fprintf ppf "@[The universal type variable %a cannot be generalized:@ " - Pprintast.tyvar name; - if Btype.is_Tvar v then - fprintf ppf "it escapes its scope" - else if Btype.is_Tunivar v then + Printast.tyvar name; + begin match reason with + | Unified v -> + fprintf ppf "it is bound to@ %a" Printtyp.type_expr v + | Univar -> fprintf ppf "it is already bound to another variable" - else - fprintf ppf "it is bound to@ %a" Printtyp.type_expr v; + | Scope_escape -> + fprintf ppf "it escapes its scope" + end; fprintf ppf ".@]"; + | Bad_univar_layout { name; layout_info; inferred_layout } -> + fprintf ppf + "@[The universal type variable %a was %s to have@ \ + layout %a, but was inferred to have %t.@]" + Printast.tyvar name + (if layout_info.defaulted then "defaulted" else "declared") + Layout.format layout_info.original_layout + (fun ppf -> match Layout.get inferred_layout with + | Const c -> fprintf ppf "layout %s" (Layout.string_of_const c) + | Var _ -> fprintf ppf "a representable layout") | Multiple_constraints_on_type s -> fprintf ppf "Multiple constraints for type %a" longident s | Method_mismatch (l, ty, ty') -> @@ -1139,6 +1356,10 @@ let report_error env ppf = function fprintf ppf "@[%s types must have a representable layout.@ \ %a@]" s (Layout.Violation.report_with_offender ~offender:(fun ppf -> Printtyp.type_expr ppf typ)) err + | Bad_layout_annot(ty, violation) -> + fprintf ppf "@[Bad layout annotation:@ %a@]" + (Layout.Violation.report_with_offender + ~offender:(fun ppf -> Printtyp.type_expr ppf ty)) violation let () = Location.register_error_of_exn diff --git a/typing/typetexp.mli b/typing/typetexp.mli index 07dc1187630..0057719ef2e 100644 --- a/typing/typetexp.mli +++ b/typing/typetexp.mli @@ -29,7 +29,14 @@ module TyVarEnv : sig (** Evaluate in a narrowed type-variable scope *) type poly_univars - val make_poly_univars : string list -> poly_univars + val make_poly_univars : string Location.loc list -> poly_univars + (** A variant of [make_poly_univars_layouts] that gets variables + without layout annotations *) + + val make_poly_univars_layouts : + context:(string -> Layout.annotation_context) -> + (string Location.loc * Asttypes.layout_annotation option) list -> + poly_univars (** remember that a list of strings connotes univars; this must always be paired with a [check_poly_univars]. *) @@ -62,7 +69,12 @@ val transl_simple_type_delayed val transl_type_scheme: Env.t -> Parsetree.core_type -> Typedtree.core_type val transl_type_param: - Env.t -> Parsetree.core_type -> layout -> Typedtree.core_type + Env.t -> Path.t -> Parsetree.core_type -> Typedtree.core_type +(* the Path.t above is of the type/class whose param we are processing; + the level defaults to the current level *) + +val get_type_param_layout: Path.t -> Parsetree.core_type -> layout +val get_type_param_name: Parsetree.core_type -> string option val get_alloc_mode : Parsetree.core_type -> alloc_mode_const @@ -74,6 +86,8 @@ type value_loc = type sort_loc = Fun_arg | Fun_ret +type cannot_quantify_reason +type layout_info type error = | Unbound_type_variable of string * string list | No_type_wildcards @@ -90,7 +104,9 @@ type error = | Not_a_variant of type_expr | Variant_tags of string * string | Invalid_variable_name of string - | Cannot_quantify of string * type_expr + | Cannot_quantify of string * cannot_quantify_reason + | Bad_univar_layout of + { name : string; layout_info : layout_info; inferred_layout : layout } | Multiple_constraints_on_type of Longident.t | Method_mismatch of string * type_expr * type_expr | Opened_object of Path.t option @@ -101,6 +117,7 @@ type error = {vloc : value_loc; typ : type_expr; err : Layout.Violation.t} | Non_sort of {vloc : sort_loc; typ : type_expr; err : Layout.Violation.t} + | Bad_layout_annot of type_expr * Layout.Violation.t exception Error of Location.t * Env.t * error diff --git a/typing/untypeast.ml b/typing/untypeast.ml index f10866552f0..4d5f624d242 100644 --- a/typing/untypeast.ml +++ b/typing/untypeast.ml @@ -147,6 +147,10 @@ let attribute sub a = { let attributes sub l = List.map (sub.attribute sub) l +let var_layout ~loc (var, layout) = + let add_loc x = mkloc x loc in + add_loc var, Option.map add_loc layout + let structure sub str = List.map (sub.structure_item sub) str.str_items @@ -261,10 +265,12 @@ let constructor_arguments sub = function let constructor_declaration sub cd = let loc = sub.location sub cd.cd_loc in let attrs = sub.attributes sub cd.cd_attributes in - Type.constructor ~loc ~attrs - ~vars:cd.cd_vars + let vars_layouts = List.map (var_layout ~loc) cd.cd_vars in + Jane_syntax.Layouts.constructor_declaration_of ~loc ~attrs + ~vars_layouts ~args:(constructor_arguments sub cd.cd_args) - ?res:(Option.map (sub.typ sub) cd.cd_res) + ~res:(Option.map (sub.typ sub) cd.cd_res) + ~info:Docstrings.empty_info (map_loc sub cd.cd_name) let label_declaration sub ld = @@ -291,14 +297,16 @@ let type_exception sub tyexn = let extension_constructor sub ext = let loc = sub.location sub ext.ext_loc in let attrs = sub.attributes sub ext.ext_attributes in - Te.constructor ~loc ~attrs - (map_loc sub ext.ext_name) - (match ext.ext_kind with - | Text_decl (vs, args, ret) -> - Pext_decl (vs, constructor_arguments sub args, - Option.map (sub.typ sub) ret) - | Text_rebind (_p, lid) -> Pext_rebind (map_loc sub lid) - ) + let name = map_loc sub ext.ext_name in + match ext.ext_kind with + | Text_decl (vs, args, ret) -> + let vs = List.map (var_layout ~loc) vs in + let args = constructor_arguments sub args in + let ret = Option.map (sub.typ sub) ret in + Jane_syntax.Layouts.extension_constructor_of + ~loc ~name ~attrs (Lext_decl (vs, args, ret)) + | Text_rebind (_p, lid) -> + Te.constructor ~loc ~attrs name (Pext_rebind (map_loc sub lid)) let pattern : type k . _ -> k T.general_pattern -> _ = fun sub pat -> let loc = sub.location sub pat.pat_loc in @@ -397,6 +405,16 @@ let pattern : type k . _ -> k T.general_pattern -> _ = fun sub pat -> let exp_extra sub (extra, loc, attrs) sexp = let loc = sub.location sub loc in let attrs = sub.attributes sub attrs in + let attrs = ref attrs in + (* Hack so we can return an extra value out of the [match] expression for Jane + Street internal expressions without needing to modify every case, which + would open us up to more merge conflicts. + *) + let add_jane_syntax_attributes { pexp_attributes; pexp_desc; _ } = + attrs := pexp_attributes @ !attrs; + pexp_desc + in + let add_loc x = mkloc x loc in let desc = match extra with Texp_coerce (cty1, cty2) -> @@ -406,9 +424,14 @@ let exp_extra sub (extra, loc, attrs) sexp = | Texp_constraint cty -> Pexp_constraint (sexp, sub.typ sub cty) | Texp_poly cto -> Pexp_poly (sexp, Option.map (sub.typ sub) cto) - | Texp_newtype s -> Pexp_newtype (mkloc s loc, sexp) + | Texp_newtype (s, None) -> + Pexp_newtype (add_loc s, sexp) + | Texp_newtype (s, Some layout) -> + Jane_syntax.Layouts.expr_of ~loc ~attrs:[] + (Lexp_newtype(add_loc s, add_loc layout, sexp)) + |> add_jane_syntax_attributes in - Exp.mk ~loc ~attrs desc + Exp.mk ~loc ~attrs:!attrs desc let case : type k . mapper -> k case -> _ = fun sub {c_lhs; c_guard; c_rhs} -> { @@ -892,9 +915,22 @@ let class_type_field sub ctf = let core_type sub ct = let loc = sub.location sub ct.ctyp_loc in let attrs = sub.attributes sub ct.ctyp_attributes in + let attrs = ref attrs in + (* Hack so we can return an extra value out of the [match] expression for Jane + Street internal expressions without needing to modify every case, which + would open us up to more merge conflicts. + *) + let add_jane_syntax_attributes { ptyp_attributes; ptyp_desc; _ } = + attrs := ptyp_attributes @ !attrs; + ptyp_desc + in let desc = match ct.ctyp_desc with - Ttyp_any -> Ptyp_any - | Ttyp_var s -> Ptyp_var s + | Ttyp_var (None, None) -> Ptyp_any + | Ttyp_var (Some s, None) -> Ptyp_var s + | Ttyp_var (name, Some layout) -> + Jane_syntax.Layouts.type_of ~loc ~attrs:[] + (Ltyp_var { name; layout = mkloc layout loc }) |> + add_jane_syntax_attributes | Ttyp_arrow (label, ct1, ct2) -> Ptyp_arrow (label, sub.typ sub ct1, sub.typ sub ct2) | Ttyp_tuple list -> Ptyp_tuple (List.map (sub.typ sub) list) @@ -906,16 +942,25 @@ let core_type sub ct = (List.map (sub.object_field sub) list, o) | Ttyp_class (_path, lid, list) -> Ptyp_class (map_loc sub lid, List.map (sub.typ sub) list) - | Ttyp_alias (ct, s) -> + | Ttyp_alias (ct, Some s, None) -> Ptyp_alias (sub.typ sub ct, s) + | Ttyp_alias (ct, s, Some layout) -> + Jane_syntax.Layouts.type_of ~loc ~attrs:[] + (Ltyp_alias { aliased_type = sub.typ sub ct; name = s; + layout = mkloc layout loc }) |> + add_jane_syntax_attributes + | Ttyp_alias (_, None, None) -> + Misc.fatal_error "anonymous alias without layout annotation in Untypeast" | Ttyp_variant (list, bool, labels) -> Ptyp_variant (List.map (sub.row_field sub) list, bool, labels) | Ttyp_poly (list, ct) -> - let list = List.map (fun v -> mkloc v loc) list in - Ptyp_poly (list, sub.typ sub ct) + let bound_vars = List.map (var_layout ~loc) list in + Jane_syntax.Layouts.type_of ~loc ~attrs:[] + (Ltyp_poly { bound_vars; inner_type = sub.typ sub ct }) |> + add_jane_syntax_attributes | Ttyp_package pack -> Ptyp_package (sub.package_type sub pack) in - Typ.mk ~loc ~attrs desc + Typ.mk ~loc ~attrs:!attrs desc let class_structure sub cs = let rec remove_self = function diff --git a/utils/clflags.ml b/utils/clflags.ml index 3dfb525e094..1ba4425bc3c 100644 --- a/utils/clflags.ml +++ b/utils/clflags.ml @@ -72,6 +72,7 @@ let binary_annotations_cms = ref false (* -bin-annot-cms *) and use_threads = ref false (* -thread *) and noassert = ref false (* -noassert *) and verbose = ref false (* -verbose *) +and verbose_types = ref false (* -verbose-types *) and noversion = ref false (* -no-version *) and noprompt = ref false (* -noprompt *) and nopromptcont = ref false (* -nopromptcont *) diff --git a/utils/clflags.mli b/utils/clflags.mli index 053fd630b02..4bff8e1247e 100644 --- a/utils/clflags.mli +++ b/utils/clflags.mli @@ -85,6 +85,7 @@ val binary_annotations_cms : bool ref val use_threads : bool ref val noassert : bool ref val verbose : bool ref +val verbose_types : bool ref val noprompt : bool ref val nopromptcont : bool ref val init_file : string option ref diff --git a/utils/language_extension.ml b/utils/language_extension.ml index 141e8b7f7bf..f592c1381fd 100644 --- a/utils/language_extension.ml +++ b/utils/language_extension.ml @@ -58,6 +58,10 @@ type exist = Exist.t = Pack : _ t -> exist (**********************************) (* string conversions *) +let to_command_line_string : type a. a t -> a -> string = fun extn level -> + let (module Ops) = get_level_ops extn in + to_string extn ^ Ops.to_command_line_suffix level + let pair_of_string_exn extn_name = match pair_of_string extn_name with | Some pair -> pair | None -> @@ -265,15 +269,23 @@ let is_enabled extn = in check !extensions +let get_command_line_string_if_enabled extn = + let rec find = function + | [] -> None + | (Pair (e, v) :: _) when equal e extn -> Some (to_command_line_string e v) + | (_ :: es) -> find es + in + find !extensions + +(********************************************) +(* existentially packed extension *) module Exist = struct include Exist let to_command_line_strings (Pack extn) = let (module Ops) = get_level_ops extn in - List.map - (fun level -> to_string extn ^ Ops.to_command_line_suffix level) - Ops.all + List.map (to_command_line_string extn) Ops.all let to_string : t -> string = function | Pack extn -> to_string extn diff --git a/utils/language_extension.mli b/utils/language_extension.mli index e685e349596..d5d9125b7db 100644 --- a/utils/language_extension.mli +++ b/utils/language_extension.mli @@ -53,10 +53,15 @@ val is_erasable : 'a t -> bool (** Print and parse language extensions; parsing is case-insensitive *) val to_string : 'a t -> string +val to_command_line_string : 'a t -> 'a -> string val of_string : string -> Exist.t option val maturity_to_string : maturity -> string +(** Get the command line string enabling the given extension, if it's + enabled; otherwise None *) +val get_command_line_string_if_enabled : 'a t -> string option + (** Enable and disable according to command-line strings; these raise an exception if the input string is invalid. *) val enable_of_string_exn : string -> unit