From 8357ecf60accfd0a0b6f11869502c06d8fbac2ce Mon Sep 17 00:00:00 2001 From: Zesen Qian Date: Sun, 9 Jul 2023 16:50:34 +0100 Subject: [PATCH 1/8] uniqueness extension, up to ae1cd95 --- native_toplevel/opttoploop.ml | 2 +- ocaml/.depend | 87 +- ocaml/boot/menhir/parser.ml | 15526 ++++++++-------- ocaml/boot/menhir/parser.mli | 2 + ocaml/compilerlibs/Makefile.compilerlibs | 2 + ocaml/dune | 4 +- ocaml/lambda/lambda.ml | 21 +- ocaml/lambda/lambda.mli | 10 +- ocaml/lambda/translcore.ml | 29 +- ocaml/lambda/translmode.ml | 15 +- ocaml/lambda/translmode.mli | 8 +- ocaml/lambda/translprim.ml | 18 +- ocaml/lambda/translprim.mli | 4 +- ocaml/otherlibs/dynlink/Makefile | 1 + ocaml/otherlibs/dynlink/dune | 5 + ocaml/parsing/builtin_attributes.ml | 15 + ocaml/parsing/builtin_attributes.mli | 4 + ocaml/parsing/lexer.mll | 2 + ocaml/parsing/location.ml | 4 +- ocaml/parsing/parser.mly | 238 +- ...test_locations.dlocations.ocamlc.reference | 16 +- ...t_locations.dno-locations.ocamlc.reference | 16 +- .../testsuite/tests/typing-local/crossing.ml | 2 +- ocaml/testsuite/tests/typing-local/exclave.ml | 11 +- ocaml/testsuite/tests/typing-local/local.ml | 28 +- ocaml/testsuite/tests/typing-unique/unique.ml | 618 + .../tests/typing-unique/unique_analysis.ml | 782 + .../tests/typing-unique/unique_mod_class.ml | 153 + .../tests/typing-unique/unique_typedecl.ml | 69 + ocaml/toplevel/native/topeval.ml | 2 +- ocaml/toplevel/topdirs.ml | 4 +- ocaml/typing/cmt2annot.ml | 2 +- ocaml/typing/ctype.ml | 53 +- ocaml/typing/ctype.mli | 10 +- ocaml/typing/env.ml | 217 +- ocaml/typing/env.mli | 56 +- ocaml/typing/includecore.ml | 8 +- ocaml/typing/mode.ml | 1139 ++ ocaml/typing/mode.mli | 349 + ocaml/typing/oprint.ml | 173 +- ocaml/typing/outcometree.mli | 21 +- ocaml/typing/parmatch.ml | 6 +- ocaml/typing/patterns.ml | 4 +- ocaml/typing/patterns.mli | 4 +- ocaml/typing/printtyp.ml | 41 +- ocaml/typing/printtyped.ml | 27 +- ocaml/typing/rec_check.ml | 10 +- ocaml/typing/tast_iterator.ml | 2 +- ocaml/typing/tast_mapper.ml | 6 +- ocaml/typing/typeclass.ml | 101 +- ocaml/typing/typecore.ml | 966 +- ocaml/typing/typecore.mli | 17 +- ocaml/typing/typedecl.ml | 27 +- ocaml/typing/typedtree.ml | 55 +- ocaml/typing/typedtree.mli | 62 +- ocaml/typing/typemod.ml | 7 +- ocaml/typing/types.ml | 504 +- ocaml/typing/types.mli | 164 +- ocaml/typing/typetexp.ml | 66 +- ocaml/typing/typetexp.mli | 7 +- ocaml/typing/uniqueness_analysis.ml | 1536 ++ ocaml/typing/uniqueness_analysis.mli | 22 + ocaml/typing/untypeast.ml | 4 +- ocaml/utils/language_extension.ml | 4 +- ocaml/utils/language_extension.mli | 1 + ocaml/utils/language_extension_kernel.ml | 5 + ocaml/utils/language_extension_kernel.mli | 1 + 67 files changed, 14401 insertions(+), 8974 deletions(-) create mode 100644 ocaml/testsuite/tests/typing-unique/unique.ml create mode 100644 ocaml/testsuite/tests/typing-unique/unique_analysis.ml create mode 100644 ocaml/testsuite/tests/typing-unique/unique_mod_class.ml create mode 100644 ocaml/testsuite/tests/typing-unique/unique_typedecl.ml create mode 100644 ocaml/typing/mode.ml create mode 100644 ocaml/typing/mode.mli create mode 100644 ocaml/typing/uniqueness_analysis.ml create mode 100644 ocaml/typing/uniqueness_analysis.mli diff --git a/native_toplevel/opttoploop.ml b/native_toplevel/opttoploop.ml index 5d24c22b7e8..adfa88f6413 100644 --- a/native_toplevel/opttoploop.ml +++ b/native_toplevel/opttoploop.ml @@ -378,7 +378,7 @@ let name_expression ~loc ~attrs sort exp = in let sg = [Sig_value(id, vd, Exported)] in let pat = - { pat_desc = Tpat_var(id, mknoloc name, Types.Value_mode.global); + { pat_desc = Tpat_var(id, mknoloc name, Mode.Value.legacy); pat_loc = loc; pat_extra = []; pat_type = exp.exp_type; diff --git a/ocaml/.depend b/ocaml/.depend index 3a83bf5dcf6..5ebeda3af08 100644 --- a/ocaml/.depend +++ b/ocaml/.depend @@ -684,6 +684,7 @@ typing/ctype.cmo : \ typing/primitive.cmi \ typing/predef.cmi \ typing/path.cmi \ + typing/mode.cmi \ utils/misc.cmi \ parsing/longident.cmi \ parsing/location.cmi \ @@ -702,6 +703,7 @@ typing/ctype.cmx : \ typing/primitive.cmx \ typing/predef.cmx \ typing/path.cmx \ + typing/mode.cmx \ utils/misc.cmx \ parsing/longident.cmx \ parsing/location.cmx \ @@ -718,6 +720,7 @@ typing/ctype.cmi : \ typing/types.cmi \ typing/primitive.cmi \ typing/path.cmi \ + typing/mode.cmi \ parsing/longident.cmi \ parsing/location.cmi \ typing/layouts.cmi \ @@ -758,6 +761,7 @@ typing/env.cmo : \ typing/persistent_env.cmi \ typing/path.cmi \ parsing/parsetree.cmi \ + typing/mode.cmi \ utils/misc.cmi \ parsing/longident.cmi \ parsing/location.cmi \ @@ -784,6 +788,7 @@ typing/env.cmx : \ typing/persistent_env.cmx \ typing/path.cmx \ parsing/parsetree.cmi \ + typing/mode.cmx \ utils/misc.cmx \ parsing/longident.cmx \ parsing/location.cmx \ @@ -808,6 +813,7 @@ typing/env.cmi : \ typing/shape.cmi \ typing/path.cmi \ parsing/parsetree.cmi \ + typing/mode.cmi \ utils/misc.cmi \ parsing/longident.cmi \ parsing/location.cmi \ @@ -897,6 +903,7 @@ typing/includecore.cmo : \ typing/printtyp.cmi \ typing/primitive.cmi \ typing/path.cmi \ + typing/mode.cmi \ utils/misc.cmi \ typing/layouts.cmi \ typing/ident.cmi \ @@ -914,6 +921,7 @@ typing/includecore.cmx : \ typing/printtyp.cmx \ typing/primitive.cmx \ typing/path.cmx \ + typing/mode.cmx \ utils/misc.cmx \ typing/layouts.cmx \ typing/ident.cmx \ @@ -1051,6 +1059,13 @@ typing/layouts.cmi : \ parsing/location.cmi \ typing/ident.cmi \ parsing/asttypes.cmi +typing/mode.cmo : \ + utils/misc.cmi \ + typing/mode.cmi +typing/mode.cmx : \ + utils/misc.cmx \ + typing/mode.cmi +typing/mode.cmi : typing/mtype.cmo : \ typing/types.cmi \ typing/subst.cmi \ @@ -1111,6 +1126,7 @@ typing/parmatch.cmo : \ typing/patterns.cmi \ typing/path.cmi \ parsing/parsetree.cmi \ + typing/mode.cmi \ utils/misc.cmi \ parsing/longident.cmi \ parsing/location.cmi \ @@ -1136,6 +1152,7 @@ typing/parmatch.cmx : \ typing/patterns.cmx \ typing/path.cmx \ parsing/parsetree.cmi \ + typing/mode.cmx \ utils/misc.cmx \ parsing/longident.cmx \ parsing/location.cmx \ @@ -1169,6 +1186,7 @@ typing/path.cmi : \ typing/patterns.cmo : \ typing/types.cmi \ typing/typedtree.cmi \ + typing/mode.cmi \ parsing/longident.cmi \ parsing/location.cmi \ typing/ident.cmi \ @@ -1179,6 +1197,7 @@ typing/patterns.cmo : \ typing/patterns.cmx : \ typing/types.cmx \ typing/typedtree.cmx \ + typing/mode.cmx \ parsing/longident.cmx \ parsing/location.cmx \ typing/ident.cmx \ @@ -1189,6 +1208,7 @@ typing/patterns.cmx : \ typing/patterns.cmi : \ typing/types.cmi \ typing/typedtree.cmi \ + typing/mode.cmi \ parsing/longident.cmi \ typing/ident.cmi \ parsing/asttypes.cmi @@ -1299,6 +1319,7 @@ typing/printtyp.cmo : \ parsing/parsetree.cmi \ typing/outcometree.cmi \ typing/oprint.cmi \ + typing/mode.cmi \ utils/misc.cmi \ parsing/longident.cmi \ parsing/location.cmi \ @@ -1323,6 +1344,7 @@ typing/printtyp.cmx : \ parsing/parsetree.cmi \ typing/outcometree.cmi \ typing/oprint.cmx \ + typing/mode.cmx \ utils/misc.cmx \ parsing/longident.cmx \ parsing/location.cmx \ @@ -1353,6 +1375,7 @@ typing/printtyped.cmo : \ parsing/printast.cmi \ typing/path.cmi \ parsing/parsetree.cmi \ + typing/mode.cmi \ parsing/longident.cmi \ parsing/location.cmi \ typing/layouts.cmi \ @@ -1366,6 +1389,7 @@ typing/printtyped.cmx : \ parsing/printast.cmx \ typing/path.cmx \ parsing/parsetree.cmi \ + typing/mode.cmx \ parsing/longident.cmx \ parsing/location.cmx \ typing/layouts.cmx \ @@ -1524,6 +1548,7 @@ typing/typeclass.cmo : \ typing/path.cmi \ parsing/parsetree.cmi \ typing/oprint.cmi \ + typing/mode.cmi \ parsing/longident.cmi \ parsing/location.cmi \ typing/layouts.cmi \ @@ -1553,6 +1578,7 @@ typing/typeclass.cmx : \ typing/path.cmx \ parsing/parsetree.cmi \ typing/oprint.cmx \ + typing/mode.cmx \ parsing/longident.cmx \ parsing/location.cmx \ typing/layouts.cmx \ @@ -1582,6 +1608,7 @@ typing/typeclass.cmi : \ parsing/asttypes.cmi typing/typecore.cmo : \ utils/warnings.cmi \ + typing/uniqueness_analysis.cmi \ typing/typetexp.cmi \ typing/types.cmi \ typing/typedtree.cmi \ @@ -1598,6 +1625,7 @@ typing/typecore.cmo : \ parsing/parsetree.cmi \ typing/parmatch.cmi \ typing/mtype.cmi \ + typing/mode.cmi \ utils/misc.cmi \ parsing/longident.cmi \ parsing/location.cmi \ @@ -1618,6 +1646,7 @@ typing/typecore.cmo : \ typing/typecore.cmi typing/typecore.cmx : \ utils/warnings.cmx \ + typing/uniqueness_analysis.cmx \ typing/typetexp.cmx \ typing/types.cmx \ typing/typedtree.cmx \ @@ -1634,6 +1663,7 @@ typing/typecore.cmx : \ parsing/parsetree.cmi \ typing/parmatch.cmx \ typing/mtype.cmx \ + typing/mode.cmx \ utils/misc.cmx \ parsing/longident.cmx \ parsing/location.cmx \ @@ -1658,6 +1688,7 @@ typing/typecore.cmi : \ typing/shape.cmi \ typing/path.cmi \ parsing/parsetree.cmi \ + typing/mode.cmi \ parsing/longident.cmi \ parsing/location.cmi \ typing/layouts.cmi \ @@ -1681,6 +1712,7 @@ typing/typedecl.cmo : \ typing/path.cmi \ parsing/parsetree.cmi \ typing/oprint.cmi \ + typing/mode.cmi \ utils/misc.cmi \ parsing/longident.cmi \ parsing/location.cmi \ @@ -1715,6 +1747,7 @@ typing/typedecl.cmx : \ typing/path.cmx \ parsing/parsetree.cmi \ typing/oprint.cmx \ + typing/mode.cmx \ utils/misc.cmx \ parsing/longident.cmx \ parsing/location.cmx \ @@ -1831,6 +1864,7 @@ typing/typedtree.cmo : \ typing/primitive.cmi \ typing/path.cmi \ parsing/parsetree.cmi \ + typing/mode.cmi \ parsing/longident.cmi \ parsing/location.cmi \ typing/layouts.cmi \ @@ -1845,6 +1879,7 @@ typing/typedtree.cmx : \ typing/primitive.cmx \ typing/path.cmx \ parsing/parsetree.cmi \ + typing/mode.cmx \ parsing/longident.cmx \ parsing/location.cmx \ typing/layouts.cmx \ @@ -1859,6 +1894,7 @@ typing/typedtree.cmi : \ typing/primitive.cmi \ typing/path.cmi \ parsing/parsetree.cmi \ + typing/mode.cmi \ parsing/longident.cmi \ parsing/location.cmi \ typing/layouts.cmi \ @@ -1882,6 +1918,7 @@ typing/typemod.cmo : \ parsing/parsetree.cmi \ parsing/parse.cmi \ typing/mtype.cmi \ + typing/mode.cmi \ utils/misc.cmi \ parsing/longident.cmi \ parsing/location.cmi \ @@ -1924,6 +1961,7 @@ typing/typemod.cmx : \ parsing/parsetree.cmi \ parsing/parse.cmx \ typing/mtype.cmx \ + typing/mode.cmx \ utils/misc.cmx \ parsing/longident.cmx \ parsing/location.cmx \ @@ -2015,6 +2053,7 @@ typing/types.cmo : \ typing/primitive.cmi \ typing/path.cmi \ parsing/parsetree.cmi \ + typing/mode.cmi \ utils/misc.cmi \ parsing/longident.cmi \ parsing/location.cmi \ @@ -2029,6 +2068,7 @@ typing/types.cmx : \ typing/primitive.cmx \ typing/path.cmx \ parsing/parsetree.cmi \ + typing/mode.cmx \ utils/misc.cmx \ parsing/longident.cmx \ parsing/location.cmx \ @@ -2043,6 +2083,7 @@ typing/types.cmi : \ typing/primitive.cmi \ typing/path.cmi \ parsing/parsetree.cmi \ + typing/mode.cmi \ parsing/longident.cmi \ parsing/location.cmi \ typing/layouts.cmi \ @@ -2057,6 +2098,7 @@ typing/typetexp.cmo : \ typing/path.cmi \ parsing/parsetree.cmi \ typing/oprint.cmi \ + typing/mode.cmi \ utils/misc.cmi \ parsing/longident.cmi \ parsing/location.cmi \ @@ -2081,6 +2123,7 @@ typing/typetexp.cmx : \ typing/path.cmx \ parsing/parsetree.cmi \ typing/oprint.cmx \ + typing/mode.cmx \ utils/misc.cmx \ parsing/longident.cmx \ parsing/location.cmx \ @@ -2101,6 +2144,7 @@ typing/typetexp.cmi : \ typing/typedtree.cmi \ typing/path.cmi \ parsing/parsetree.cmi \ + typing/mode.cmi \ parsing/longident.cmi \ parsing/location.cmi \ typing/layouts.cmi \ @@ -2108,6 +2152,34 @@ typing/typetexp.cmi : \ typing/errortrace.cmi \ typing/env.cmi \ parsing/asttypes.cmi +typing/uniqueness_analysis.cmo : \ + typing/types.cmi \ + typing/typedtree.cmi \ + typing/tast_iterator.cmi \ + typing/printtyp.cmi \ + typing/path.cmi \ + typing/mode.cmi \ + parsing/longident.cmi \ + parsing/location.cmi \ + typing/ident.cmi \ + typing/env.cmi \ + parsing/asttypes.cmi \ + typing/uniqueness_analysis.cmi +typing/uniqueness_analysis.cmx : \ + typing/types.cmx \ + typing/typedtree.cmx \ + typing/tast_iterator.cmx \ + typing/printtyp.cmx \ + typing/path.cmx \ + typing/mode.cmx \ + parsing/longident.cmx \ + parsing/location.cmx \ + typing/ident.cmx \ + typing/env.cmx \ + parsing/asttypes.cmi \ + typing/uniqueness_analysis.cmi +typing/uniqueness_analysis.cmi : \ + typing/typedtree.cmi typing/untypeast.cmo : \ typing/typedtree.cmi \ typing/path.cmi \ @@ -4075,6 +4147,7 @@ lambda/translcore.cmo : \ typing/path.cmi \ parsing/parsetree.cmi \ typing/parmatch.cmi \ + typing/mode.cmi \ utils/misc.cmi \ lambda/matching.cmi \ parsing/longident.cmi \ @@ -4110,6 +4183,7 @@ lambda/translcore.cmx : \ typing/path.cmx \ parsing/parsetree.cmi \ typing/parmatch.cmx \ + typing/mode.cmx \ utils/misc.cmx \ lambda/matching.cmx \ parsing/longident.cmx \ @@ -4198,15 +4272,15 @@ lambda/translmod.cmi : \ typing/ident.cmi \ utils/compilation_unit.cmi lambda/translmode.cmo : \ - typing/types.cmi \ + typing/mode.cmi \ lambda/lambda.cmi \ lambda/translmode.cmi lambda/translmode.cmx : \ - typing/types.cmx \ + typing/mode.cmx \ lambda/lambda.cmx \ lambda/translmode.cmi lambda/translmode.cmi : \ - typing/types.cmi \ + typing/mode.cmi \ lambda/lambda.cmi lambda/translobj.cmo : \ typing/primitive.cmi \ @@ -4245,6 +4319,7 @@ lambda/translprim.cmo : \ typing/primitive.cmi \ typing/predef.cmi \ typing/path.cmi \ + typing/mode.cmi \ utils/misc.cmi \ lambda/matching.cmi \ parsing/location.cmi \ @@ -4266,6 +4341,7 @@ lambda/translprim.cmx : \ typing/primitive.cmx \ typing/predef.cmx \ typing/path.cmx \ + typing/mode.cmx \ utils/misc.cmx \ lambda/matching.cmx \ parsing/location.cmx \ @@ -4284,6 +4360,7 @@ lambda/translprim.cmi : \ typing/typedtree.cmi \ typing/primitive.cmi \ typing/path.cmi \ + typing/mode.cmi \ parsing/location.cmi \ lambda/lambda.cmi \ typing/ident.cmi \ @@ -6869,6 +6946,7 @@ toplevel/topdirs.cmo : \ typing/predef.cmi \ typing/path.cmi \ parsing/parsetree.cmi \ + typing/mode.cmi \ utils/misc.cmi \ parsing/longident.cmi \ parsing/location.cmi \ @@ -6894,6 +6972,7 @@ toplevel/topdirs.cmx : \ typing/predef.cmx \ typing/path.cmx \ parsing/parsetree.cmi \ + typing/mode.cmx \ utils/misc.cmx \ parsing/longident.cmx \ parsing/location.cmx \ @@ -7127,6 +7206,7 @@ toplevel/native/topeval.cmo : \ typing/predef.cmi \ parsing/parsetree.cmi \ typing/outcometree.cmi \ + typing/mode.cmi \ utils/misc.cmi \ parsing/location.cmi \ utils/load_path.cmi \ @@ -7160,6 +7240,7 @@ toplevel/native/topeval.cmx : \ typing/predef.cmx \ parsing/parsetree.cmi \ typing/outcometree.cmi \ + typing/mode.cmx \ utils/misc.cmx \ parsing/location.cmx \ utils/load_path.cmx \ diff --git a/ocaml/boot/menhir/parser.ml b/ocaml/boot/menhir/parser.ml index 8527874612d..116fa245e60 100644 --- a/ocaml/boot/menhir/parser.ml +++ b/ocaml/boot/menhir/parser.ml @@ -14,11 +14,12 @@ module MenhirBasics = struct | WHEN | VIRTUAL | VAL + | UNIQUE | UNDERSCORE | UIDENT of ( -# 990 "parsing/parser.mly" +# 1068 "parsing/parser.mly" (string) -# 22 "parsing/parser.ml" +# 23 "parsing/parser.ml" ) | TYPE | TRY @@ -28,9 +29,9 @@ module MenhirBasics = struct | THEN | STRUCT | STRING of ( -# 977 "parsing/parser.mly" +# 1055 "parsing/parser.mly" (string * Location.t * string option) -# 34 "parsing/parser.ml" +# 35 "parsing/parser.ml" ) | STAR | SIG @@ -41,22 +42,22 @@ module MenhirBasics = struct | RBRACKET | RBRACE | QUOTED_STRING_ITEM of ( -# 981 "parsing/parser.mly" +# 1059 "parsing/parser.mly" (string * Location.t * string * Location.t * string option) -# 47 "parsing/parser.ml" +# 48 "parsing/parser.ml" ) | QUOTED_STRING_EXPR of ( -# 979 "parsing/parser.mly" +# 1057 "parsing/parser.mly" (string * Location.t * string * Location.t * string option) -# 52 "parsing/parser.ml" +# 53 "parsing/parser.ml" ) | QUOTE | QUESTION | PRIVATE | PREFIXOP of ( -# 962 "parsing/parser.mly" +# 1040 "parsing/parser.mly" (string) -# 60 "parsing/parser.ml" +# 61 "parsing/parser.ml" ) | PLUSEQ | PLUSDOT @@ -64,11 +65,12 @@ module MenhirBasics = struct | PERCENT | OR | OPTLABEL of ( -# 955 "parsing/parser.mly" +# 1033 "parsing/parser.mly" (string) -# 70 "parsing/parser.ml" +# 71 "parsing/parser.ml" ) | OPEN + | ONCE | OF | OBJECT | NONREC @@ -83,14 +85,14 @@ module MenhirBasics = struct | LPAREN | LOCAL | LIDENT of ( -# 937 "parsing/parser.mly" +# 1014 "parsing/parser.mly" (string) -# 89 "parsing/parser.ml" +# 91 "parsing/parser.ml" ) | LETOP of ( -# 917 "parsing/parser.mly" +# 994 "parsing/parser.mly" (string) -# 94 "parsing/parser.ml" +# 96 "parsing/parser.ml" ) | LET | LESSMINUS @@ -109,60 +111,60 @@ module MenhirBasics = struct | LBRACE | LAZY | LABEL of ( -# 923 "parsing/parser.mly" +# 1000 "parsing/parser.mly" (string) -# 115 "parsing/parser.ml" +# 117 "parsing/parser.ml" ) | INT of ( -# 921 "parsing/parser.mly" +# 998 "parsing/parser.mly" (string * char option) -# 120 "parsing/parser.ml" +# 122 "parsing/parser.ml" ) | INITIALIZER | INHERIT | INFIXOP4 of ( -# 915 "parsing/parser.mly" +# 992 "parsing/parser.mly" (string) -# 127 "parsing/parser.ml" +# 129 "parsing/parser.ml" ) | INFIXOP3 of ( -# 914 "parsing/parser.mly" +# 991 "parsing/parser.mly" (string) -# 132 "parsing/parser.ml" +# 134 "parsing/parser.ml" ) | INFIXOP2 of ( -# 913 "parsing/parser.mly" +# 990 "parsing/parser.mly" (string) -# 137 "parsing/parser.ml" +# 139 "parsing/parser.ml" ) | INFIXOP1 of ( -# 912 "parsing/parser.mly" +# 989 "parsing/parser.mly" (string) -# 142 "parsing/parser.ml" +# 144 "parsing/parser.ml" ) | INFIXOP0 of ( -# 911 "parsing/parser.mly" +# 988 "parsing/parser.mly" (string) -# 147 "parsing/parser.ml" +# 149 "parsing/parser.ml" ) | INCLUDE | IN | IF | HASH_SUFFIX | HASH_INT of ( -# 922 "parsing/parser.mly" +# 999 "parsing/parser.mly" (string * char option) -# 156 "parsing/parser.ml" +# 158 "parsing/parser.ml" ) | HASH_FLOAT of ( -# 899 "parsing/parser.mly" +# 976 "parsing/parser.mly" (string * char option) -# 161 "parsing/parser.ml" +# 163 "parsing/parser.ml" ) | HASHOP of ( -# 974 "parsing/parser.mly" +# 1052 "parsing/parser.mly" (string) -# 166 "parsing/parser.ml" +# 168 "parsing/parser.ml" ) | HASH | GREATERRBRACKET @@ -174,9 +176,9 @@ module MenhirBasics = struct | FUN | FOR | FLOAT of ( -# 898 "parsing/parser.mly" +# 975 "parsing/parser.mly" (string * char option) -# 180 "parsing/parser.ml" +# 182 "parsing/parser.ml" ) | FALSE | EXTERNAL @@ -189,24 +191,24 @@ module MenhirBasics = struct | ELSE | DOWNTO | DOTOP of ( -# 916 "parsing/parser.mly" +# 993 "parsing/parser.mly" (string) -# 195 "parsing/parser.ml" +# 197 "parsing/parser.ml" ) | DOTDOT | DOT | DONE | DOCSTRING of ( -# 998 "parsing/parser.mly" +# 1077 "parsing/parser.mly" (Docstrings.docstring) -# 203 "parsing/parser.ml" +# 205 "parsing/parser.ml" ) | DO | CONSTRAINT | COMMENT of ( -# 997 "parsing/parser.mly" +# 1076 "parsing/parser.mly" (string * Location.t) -# 210 "parsing/parser.ml" +# 212 "parsing/parser.ml" ) | COMMA | COLONRBRACKET @@ -216,9 +218,9 @@ module MenhirBasics = struct | COLON | CLASS | CHAR of ( -# 876 "parsing/parser.mly" +# 953 "parsing/parser.mly" (char) -# 222 "parsing/parser.ml" +# 224 "parsing/parser.ml" ) | BEGIN | BARRBRACKET @@ -229,9 +231,9 @@ module MenhirBasics = struct | ASSERT | AS | ANDOP of ( -# 918 "parsing/parser.mly" +# 995 "parsing/parser.mly" (string) -# 235 "parsing/parser.ml" +# 237 "parsing/parser.ml" ) | AND | AMPERSAND @@ -367,43 +369,120 @@ let mkuplus ~oploc name arg = | _ -> Pexp_apply(mkoperator ~loc:oploc ("~" ^ name), [Nolabel, arg]), [] - -let local_ext_loc loc = mkloc "extension.local" loc - let mk_attr ~loc name payload = Builtin_attributes.(register_attr Parser name); Attr.mk ~loc name payload +let local_ext_loc loc = mkloc "extension.local" loc +let unique_ext_loc loc = mkloc "extension.unique" loc +let once_ext_loc loc = mkloc "extension.once" loc + let local_attr loc = mk_attr ~loc (local_ext_loc loc) (PStr []) +let unique_attr loc = + mk_attr ~loc (unique_ext_loc loc) (PStr []) + +let once_attr loc = + mk_attr ~loc (once_ext_loc loc) (PStr []) + let local_extension loc = Exp.mk ~loc:Location.none (Pexp_extension(local_ext_loc loc, PStr [])) +let unique_extension loc = + Exp.mk ~loc:Location.none (Pexp_extension(unique_ext_loc loc, PStr [])) + +let once_extension loc = + Exp.mk ~loc:Location.none (Pexp_extension(once_ext_loc loc, PStr [])) + let mkexp_stack ~loc ~kwd_loc exp = - ghexp ~loc (Pexp_apply(local_extension (make_loc kwd_loc), [Nolabel, exp])) + let loc = make_loc loc in + Exp.mk ~loc (Pexp_apply(local_extension (make_loc kwd_loc), [Nolabel, exp])) + +let mkexp_unique ~loc ~kwd_loc exp = + let loc = make_loc loc in + Exp.mk ~loc (Pexp_apply(unique_extension (make_loc kwd_loc), [Nolabel, exp])) + +let mkexp_once ~loc ~kwd_loc exp = + let loc = make_loc loc in + Exp.mk ~loc (Pexp_apply(once_extension (make_loc kwd_loc), [Nolabel, exp])) let mkpat_stack pat loc = - {pat with ppat_attributes = local_attr loc :: pat.ppat_attributes} + {pat with + ppat_attributes = local_attr (make_loc loc) :: pat.ppat_attributes} + +let mkpat_unique pat loc = + {pat with + ppat_attributes = unique_attr (make_loc loc) :: pat.ppat_attributes} + +let mkpat_once pat loc = + {pat with + ppat_attributes = once_attr (make_loc loc) :: pat.ppat_attributes} let mktyp_stack typ loc = - {typ with ptyp_attributes = local_attr loc :: typ.ptyp_attributes} + {typ with + ptyp_attributes = local_attr (make_loc loc) :: typ.ptyp_attributes} + +let mktyp_unique typ loc = + {typ with + ptyp_attributes = unique_attr (make_loc loc) :: typ.ptyp_attributes} + +let mktyp_once typ loc = + {typ with + ptyp_attributes = once_attr (make_loc loc) :: typ.ptyp_attributes} let wrap_exp_stack exp loc = - {exp with pexp_attributes = local_attr loc :: exp.pexp_attributes} + {exp with + pexp_attributes = local_attr (make_loc loc) :: exp.pexp_attributes} + +let wrap_exp_unique exp loc = + {exp with + pexp_attributes = unique_attr (make_loc loc) :: exp.pexp_attributes} + +let wrap_exp_once exp loc = + {exp with + pexp_attributes = once_attr (make_loc loc) :: exp.pexp_attributes} + +type modes = Local | Unique | Once + +let mkexp_with_mode ~loc ~kwd_loc flag exp = + match flag with + | Local -> mkexp_stack exp ~loc ~kwd_loc + | Unique -> mkexp_unique exp ~loc ~kwd_loc + | Once -> mkexp_once exp ~loc ~kwd_loc -let mkexp_local_if p ~loc ~kwd_loc exp = - if p then mkexp_stack ~loc ~kwd_loc exp else exp +let mkexp_with_modes flags exp loc = + List.fold_left + (fun exp (flag, kwd_loc) -> mkexp_with_mode flag exp ~loc ~kwd_loc) + exp flags -let mkpat_local_if p pat loc = - if p then mkpat_stack pat (make_loc loc) else pat +let mkpat_with_mode flag pat loc = + match flag with + | Local -> mkpat_stack pat loc + | Unique -> mkpat_unique pat loc + | Once -> mkpat_once pat loc -let mktyp_local_if p typ loc = - if p then mktyp_stack typ (make_loc loc) else typ +let mkpat_with_modes flags pat = + List.fold_left (fun pat (flag, loc) -> mkpat_with_mode flag pat loc) pat flags -let wrap_exp_local_if p exp loc = - if p then wrap_exp_stack exp (make_loc loc) else exp +let mktyp_with_mode flag typ loc = + match flag with + | Local -> mktyp_stack typ loc + | Unique -> mktyp_unique typ loc + | Once -> mktyp_once typ loc + +let mktyp_with_modes flags typ = + List.fold_left (fun typ (flag, loc) -> mktyp_with_mode flag typ loc) typ flags + +let wrap_exp_with_mode flag exp loc = + match flag with + | Local -> wrap_exp_stack exp loc + | Unique -> wrap_exp_unique exp loc + | Once -> wrap_exp_once exp loc + +let wrap_exp_with_modes flags exp = + List.fold_left (fun exp (flag, loc) -> wrap_exp_with_mode flag exp loc) exp flags let exclave_ext_loc loc = mkloc "extension.exclave" loc @@ -1073,7 +1152,7 @@ let unboxed_float_type sloc tys = assert_unboxed_float_type ~loc:(make_loc sloc); Ptyp_constr (mkloc (Lident "float#") (make_loc sloc), tys) -# 1077 "parsing/parser.ml" +# 1156 "parsing/parser.ml" module Tables = struct @@ -1083,256 +1162,260 @@ module Tables = struct fun _tok -> match _tok with | AMPERAMPER -> - 131 + 133 | AMPERSAND -> - 130 + 132 | AND -> - 129 + 131 | ANDOP _ -> - 128 + 130 | AS -> - 127 + 129 | ASSERT -> - 126 + 128 | BACKQUOTE -> - 125 + 127 | BANG -> - 124 + 126 | BAR -> - 123 + 125 | BARBAR -> - 122 + 124 | BARRBRACKET -> - 121 + 123 | BEGIN -> - 120 + 122 | CHAR _ -> - 119 + 121 | CLASS -> - 118 + 120 | COLON -> - 117 + 119 | COLONCOLON -> - 116 + 118 | COLONEQUAL -> - 115 + 117 | COLONGREATER -> - 114 + 116 | COLONRBRACKET -> - 113 + 115 | COMMA -> - 112 + 114 | COMMENT _ -> - 111 + 113 | CONSTRAINT -> - 110 + 112 | DO -> - 109 + 111 | DOCSTRING _ -> - 108 + 110 | DONE -> - 107 + 109 | DOT -> - 106 + 108 | DOTDOT -> - 105 + 107 | DOTOP _ -> - 104 + 106 | DOWNTO -> - 103 + 105 | ELSE -> - 102 + 104 | END -> - 101 + 103 | EOF -> - 100 + 102 | EOL -> - 99 + 101 | EQUAL -> - 98 + 100 | EXCEPTION -> - 97 + 99 | EXCLAVE -> - 96 + 98 | EXTERNAL -> - 95 + 97 | FALSE -> - 94 + 96 | FLOAT _ -> - 93 + 95 | FOR -> - 92 + 94 | FUN -> - 91 + 93 | FUNCTION -> - 90 + 92 | FUNCTOR -> - 89 + 91 | GLOBAL -> - 88 + 90 | GREATER -> - 87 + 89 | GREATERRBRACE -> - 86 + 88 | GREATERRBRACKET -> - 85 + 87 | HASH -> - 84 + 86 | HASHOP _ -> - 83 + 85 | HASH_FLOAT _ -> - 82 + 84 | HASH_INT _ -> - 81 + 83 | HASH_SUFFIX -> - 80 + 82 | IF -> - 79 + 81 | IN -> - 78 + 80 | INCLUDE -> - 77 + 79 | INFIXOP0 _ -> - 76 + 78 | INFIXOP1 _ -> - 75 + 77 | INFIXOP2 _ -> - 74 + 76 | INFIXOP3 _ -> - 73 + 75 | INFIXOP4 _ -> - 72 + 74 | INHERIT -> - 71 + 73 | INITIALIZER -> - 70 + 72 | INT _ -> - 69 + 71 | LABEL _ -> - 68 + 70 | LAZY -> - 67 + 69 | LBRACE -> - 66 + 68 | LBRACELESS -> - 65 + 67 | LBRACKET -> - 64 + 66 | LBRACKETAT -> - 63 + 65 | LBRACKETATAT -> - 62 + 64 | LBRACKETATATAT -> - 61 + 63 | LBRACKETBAR -> - 60 + 62 | LBRACKETCOLON -> - 59 + 61 | LBRACKETGREATER -> - 58 + 60 | LBRACKETLESS -> - 57 + 59 | LBRACKETPERCENT -> - 56 + 58 | LBRACKETPERCENTPERCENT -> - 55 + 57 | LESS -> - 54 + 56 | LESSMINUS -> - 53 + 55 | LET -> - 52 + 54 | LETOP _ -> - 51 + 53 | LIDENT _ -> - 50 + 52 | LOCAL -> - 49 + 51 | LPAREN -> - 48 + 50 | MATCH -> - 47 + 49 | METHOD -> - 46 + 48 | MINUS -> - 45 + 47 | MINUSDOT -> - 44 + 46 | MINUSGREATER -> - 43 + 45 | MODULE -> - 42 + 44 | MUTABLE -> - 41 + 43 | NEW -> - 40 + 42 | NONREC -> - 39 + 41 | OBJECT -> - 38 + 40 | OF -> - 37 + 39 + | ONCE -> + 38 | OPEN -> - 36 + 37 | OPTLABEL _ -> - 35 + 36 | OR -> - 34 + 35 | PERCENT -> - 33 + 34 | PLUS -> - 32 + 33 | PLUSDOT -> - 31 + 32 | PLUSEQ -> - 30 + 31 | PREFIXOP _ -> - 29 + 30 | PRIVATE -> - 28 + 29 | QUESTION -> - 27 + 28 | QUOTE -> - 26 + 27 | QUOTED_STRING_EXPR _ -> - 25 + 26 | QUOTED_STRING_ITEM _ -> - 24 + 25 | RBRACE -> - 23 + 24 | RBRACKET -> - 22 + 23 | REC -> - 21 + 22 | RPAREN -> - 20 + 21 | SEMI -> - 19 + 20 | SEMISEMI -> - 18 + 19 | SIG -> - 17 + 18 | STAR -> - 16 + 17 | STRING _ -> - 15 + 16 | STRUCT -> - 14 + 15 | THEN -> - 13 + 14 | TILDE -> - 12 + 13 | TO -> - 11 + 12 | TRUE -> - 10 + 11 | TRY -> - 9 + 10 | TYPE -> - 8 + 9 | UIDENT _ -> - 7 + 8 | UNDERSCORE -> + 7 + | UNIQUE -> 6 | VAL -> 5 @@ -1541,6 +1624,8 @@ module Tables = struct Obj.repr () | OF -> Obj.repr () + | ONCE -> + Obj.repr () | OPEN -> Obj.repr () | OPTLABEL _v -> @@ -1603,6 +1688,8 @@ module Tables = struct Obj.repr _v | UNDERSCORE -> Obj.repr () + | UNIQUE -> + Obj.repr () | VAL -> Obj.repr () | VIRTUAL -> @@ -1615,22 +1702,22 @@ module Tables = struct Obj.repr () and default_reduction = - (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") + (16, "\000\000\000\000\000\000\003]\003\\\003[\003Z\003Y\003+\003X\003W\003V\003U\003T\003S\003R\003Q\003P\003O\003N\003M\003L\003K\003J\003I\003H\003G\003F\003E\003*\003D\003C\003B\003A\003@\003?\003>\003=\003<\003;\003:\0039\0038\0037\0036\0035\0034\0033\0032\0031\0030\003/\003.\003-\003,\000\000\000\000\0003\000\205\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\207\001\225\001\204\001\222\001\221\001\220\001\226\001\230\000\000\003\208\001\224\001\223\001\205\001\228\001\219\001\218\001\217\001\216\001\215\001\213\001\229\001\227\000\000\000\000\000\000\000\242\000\000\000\000\001\208\000\000\000\000\000\000\001\210\000\000\000\000\000\000\001\212\001\234\001\231\001\214\001\206\001\232\001\233\000\000\003\206\003\205\003\209\000\000\000\000\000\000\000\000\000\000\001\179\001\181\001\180\000\028\001l\000\207\000\000\000\236\000\237\000\000\000\000\000\000\002\002\002\001\000\000\000\000\000\000\000\000\0001\001\021\000\000\000\000\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\200\000\000\003\195\000\000\000\000\003\197\000\000\003\199\000\000\003\196\003\198\000\000\000\000\000\000\000\000\002\016\000\000\001<\000\000\000\000\000\000\000\000\002\015\002\014\000\000\003\190\000\000\002z\002y\000\000\000\000\003\187\000\000\000\000\003\186\000\000\000\000\000\000\001\022\001\023\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\199\001x\000\000\000\000\000\000\003\219\000\000\000\000\000\000\000\000\000\000\003\023\000\000\002\183\002\178\002\179\002\184\000\000\002\181\002\176\002\177\002\182\000\000\000\000\000\000\000\000\000\000\001\143\001\142\000\000\003\021\000\000\000\000\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\245\000\017\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001v\000\000\000\000\001y\001w\001\127\000K\002\219\003\155\003\154\000\000\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\254\000\000\002\186\002\185\000\000\000\000\000\000\001\238\000\000\000\000\000,\000\000\000\000\000\000\001j\000\000\000\000\001~\000\000\001}\000\000\001m\001|\000\000\001k\000l\000%\000\000\000\000\001\170\000\000\000\029\000\000\000\000\000\000\003m\000\000\000\000\003\185\000/\000\000\000\000\000&\000\000\000\030\000\000\000\000\000\221\000\000\000\000\000\000\000'\000\000\000\031\000\000\000\000\000\000\000\000\000\000\002j\000\000\000\000\000\000\000\000\000\000\002k\000\000\000\018\000\000\000\000\000\000\000\000\003n\000\000\000\000\000\000\000\000\003o\000\000\000\000\000\000\000\000\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\025\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\000\000\000\000\000\000\000\000\000\000\003f\000\000\000\000\000\000\000\000\000\000\003g\000\000\000\000\000\000\000\000\002\135\002u\000\000\000)\000\000\002v\000\000\000\000\001\235\000\000\000\000\000\000\000\000\003\156\000\000\003\157\000\000\000\000\000(\000\000\000\000\000\000\000*\000\000\000+\000\000\000-\000\000\000\000\000.\002g\002f\000\000\000\000\000\000\000\000\000\000\000\000\003\217\000\000\003\028\003\201\003\202\000\000\003\027\003\220\000w\003\218\002\180\003\017\003\210\002\175\003\018\0020\003\020\000\000\000\000\000\000\000\000\003\024\003)\003\026\000\000\000\000\000\000\003\"\003\031\000\000\000\000\000\000\002,\002\030\000\000\000\000\000\000\000\000\002\"\000\000\002\029\000\000\002/\003(\000\000\000\000\000\000\000\000\001\175\000\000\000\000\002.\003\025\000\127\000\000\000\000\000~\000\000\003#\003\019\000\000\002(\000\000\000\000\003&\000\000\003%\003$\000\000\002$\000\000\000\000\002 \002\031\002-\002%\000\000\000}\000\000\003!\003 \000\000\003\030\000\000\002\188\002\187\000\000\000\000\002\145\003\029\000\000\000\000\000\000\000\000\001\240\001W\001X\002\191\000\000\002\190\002\189\002\194\000\000\002\193\002\192\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\012\000\000\001\011\001\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\000\222\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\153\000\000\000\000\000\000\000\000\000\000\000\000\003\237\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\189\000\000\000\000\000\000\000\000\000\000\001\152\000\000\000\000\000\000\001u\001\159\001t\001\156\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002s\000\000\000\000\002t\002c\002b\000\000\001\151\001\150\000\000\000\223\000\000\000\000\001\136\000\000\000\000\001\140\000\000\002\006\002\005\000\000\000\000\002\004\002\003\001\139\001\137\000\000\001\141\000\000\000\000\000\000\000\000\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\225\001z\000t\002\229\002\227\000\000\000\000\000\000\002\241\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\006\000\000\003\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\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\t\000\000\000\000\001\b\002:\001\n\000\000\000\000\000\000\000\000\000\000\000\000\001\172\000\000\000\000\000\000\000\000\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\238\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\182\000\000\000\000\003\181\000\000\000\000\000\000\000\000\001\002\001\001\000\000\001\003\000\000\000\000\000\000\002\237\000\000\000\000\000\000\002\207\002\198\000\000\000\000\000\000\000\000\003\211\002\240\002\226\003\r\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\152\002\151\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\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\018\000\000\000\000\001\015\000\000\000\000\002h\000\000\000\000\000\000\000\000\000\000\002i\000\000\000\000\000\000\001\019\001\014\000\000\003`\000\000\000\000\000\214\000\213\001\016\000\000\003a\003c\001\173\000\000\000\000\003b\000\000\001\171\001\183\000\000\000\000\000\000\000\000\000\000\001\020\000\000\000\000\001\017\000\000\000\000\000\000\000\000\000\000\000\000\001\031\000\000\000\000\000\000\000\000\001\029\000\000\000\000\001\027\001\026\000\000\000\000\000\000\000\000\001!\000\000\000\000\001 \000\000\002+\000\000\000\000\0027\000\000\000\000\0029\000\000\000\000\0025\0024\0022\0023\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\030\000\000\000\000\001\028\001\"\001\024\000\000\000\000\001B\000\022\001$\000\000\000\000\000\000\002\209\002\200\000\000\000\000\002\208\002\199\000\000\000\000\000\000\000\000\002\211\002\202\000\000\000\000\002\139\000\000\000\000\002\215\002\206\000\000\000\000\002\213\002\204\002\233\000\000\000\000\000\000\000\000\000\000\002\210\000\000\000\000\000\000\000\000\000\000\002\214\000\000\000\000\000\000\000\000\000\000\002\212\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\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\156\000\000\002\201\000\000\000\000\002\205\000\000\000\000\002\203\000\203\000\000\000\138\000\139\000\000\000\000\000\000\000\000\000\153\000\215\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\216\000\000\000\217\000\219\000\000\000\000\000\218\000\197\000\000\000\000\000\196\000\000\000\146\000\000\000\000\001Z\000\000\001[\001Y\002m\000\000\000\000\002n\002l\000\000\000\000\000\000\000\000\000\000\001-\000\000\000\000\001.\000\000\000\000\000\183\000\000\0010\001/\000\000\000\000\002\242\002\234\000\000\003\011\000\000\003\012\003\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\000o\002r\002q\000\000\003\001\002a\002`\000\000\002\251\000\000\002\252\002\250\000\000\000\000\003\000\000\000\003\003\000\000\003\004\003\002\000\000\000\000\002\255\000\000\000\000\002\236\002\235\000\000\000\000\000\000\002Q\000\000\002\000\000\000\000\000\000\000\002\148\002P\000\000\002\246\002\245\000\000\000\000\000\000\001{\000\000\002\217\000\000\002\218\002\216\000\000\002\244\002\243\000\000\000\000\000\000\002\142\002\232\000\000\002\231\002\230\000\000\002\254\002\253\000\000\000\000\003\014\002\249\000\000\002\248\002\247\000\000\000\000\003\015\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\130\000\000\000\000\000\000\000y\000\000\000\000\000z\000\000\000\000\000\000\000\000\001\163\001\164\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\247\000\000\000\000\000\133\000\000\000\250\000\248\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\000\000\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\002O\000\000\000\000\001#\001\254\000\000\001\006\000\000\000\000\001\005\001\007\001+\000\000\000\200\003\t\000\000\003\b\003\007\000\000\000\000\003\016\002\228\000\000\000\000\000\000\000\000\002\220\000\000\002\222\000\000\002\221\000\000\002\196\002\195\000\000\002\197\000\000\000\000\000\000\000\202\000\000\002\r\002\007\000\000\002\012\000\000\002\n\000\000\002\011\000\000\002\b\000\000\000\000\002\t\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\000\000\001\157\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0018\003\148\000\000\000\000\003\147\000\000\000\000\000\000\000\000\000\000\002@\000\000\000\000\000\000\000\240\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\185\000\000\002F\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\153\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\203\000\000\000\000\000\000\001\202\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\158\000\000\000\000\000\000\000\000\001\145\000\000\001\144\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001:\002\167\000\000\000\000\000\000\002\165\000\000\000\000\000\000\002\164\000\000\001\132\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\223\000\000\000\000\002{\000\000\000\212\000\000\002|\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000O\000\000\000\000\000\000\000\000\001\169\000\000\001\168\000\000\000\000\000\000\000\000\000R\000\000\000\000\000\000\002M\000\000\002L\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\001K\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0016\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\0014\002\171\002\157\000\000\002\163\002\158\002\170\002\169\002\168\002\166\001E\000\000\002\155\000\000\000\000\000\000\000\000\002\173\000\000\000\000\000\000\000\000\000\000\000\000\002^\000\000\000\000\001>\001\242\002\159\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\196\001\192\000\000\000\000\000\000\000\230\000\000\000\000\002T\002^\000\000\000\000\001@\002R\002S\000\000\000\000\000\000\000\000\000\000\001\199\001\195\001\191\000\000\000\000\000\231\000\000\000\000\001\198\001\194\001\190\001\188\002\160\002\156\002\172\001D\002=\002\154\000\000\000\000\000\000\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\161\000\000\000\000\000\000\003\214\000\000\000\000\003\216\000\000\000@\000\000\000\000\003\226\000\000\003\225\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\213\000\000\000\000\003\215\000\000\000\000\000\000\002H\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001i\000\000\000\000\001g\001e\000\000\000A\000\000\000\000\003\229\000\000\003\228\000\000\000\000\000\000\001c\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001h\000\000\000\000\001f\001d\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\244\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\001M\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\0012\003\151\003\142\000\000\000\000\003\146\003^\003\141\003\150\003\149\001I\000\000\000\000\003\139\000\000\000\000\000\000\000\000\003\153\000\000\003\143\003\140\003\152\002<\000\000\000\000\003\137\0004\003\136\000\000\000\000\000\210\000\000\000\244\000\000\000\000\001H\001G\000\000\002E\000\235\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\208\000\000\003\145\002Y\002Z\002U\002W\002V\002X\000\000\000\000\000\000\000\209\000\000\000\000\000\000\002^\000\000\000\234\000\000\000\000\000\000\000\000\003\144\000\000\001\134\001\133\000\000\000\000\003'\003\022\000\000\000L\000\000\000\000\000M\000\000\000\000\002\224\002\223\000\000\000\000\000\149\000\000\000\201\000\000\000\206\000\000\000\000\000\000\000\000\000\000\000\000\003l\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001b\001\\\000\000\000\000\001]\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\000\000\000\000\000\000\000\000\000\000\003j\000\000\000\000\000\000\000\000\000\000\003k\000\000\000\000\000\000\000\000\001\197\001\193\000\000\001\189\003\184\000\000\002^\000\000\000\233\000\000\000\000\000\000\000\000\002\162\002]\002[\002\\\000\000\000\000\000\000\000\000\002^\000\000\000\232\000\000\000\000\000\000\000\000\002\161\000\000\001\147\001\146\000\000\000\026\000\000\003\221\000\000\0005\000\000\000\000\000\000\000\000\000\152\000\000\000\238\000\001\000\000\000\000\000\243\000\002\000\000\000\000\000\000\001o\001p\000\003\000\000\000\000\000\000\000\000\001r\001s\001q\000\023\001n\000\024\000\000\002\017\000\000\000\004\000\000\002\018\000\000\000\005\000\000\002\019\000\000\000\000\002\020\000\006\000\000\000\007\000\000\002\021\000\000\000\b\000\000\002\022\000\000\000\t\000\000\002\023\000\000\000\n\000\000\002\024\000\000\000\011\000\000\002\025\000\000\000\000\002\026\000\012\000\000\000\000\002\027\000\r\000\000\000\000\000\000\000\000\000\000\003\171\003\166\003\167\003\170\003\168\000\000\000\000\000\000\003\164\003\159\003\160\003\163\003\161\000\000\003\175\000\014\000\000\003\174\000\000\001O\000\000\000\000\003\172\000\000\003\173\000\000\000\000\000\000\000\000\001S\001T\000\000\000\000\001R\001Q\000\015\000\000\000\000\000\000\003\204\000\000\003\203") 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\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") + (134, "'\240\144b\198\171~g=\001X\015\242\000\000\227\128\142\194\000\139\138\141\248\153\244\001`>\128\000\001\142\007\207\178 A_\141\160\000L\028\001\237\028X\n\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\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000+\253l\222\179\186\255\153\223\242^\135\252B y\224|\251\"\004\021\248\218\000\004\193\192\030\209\197\128\160\208\000\000\000\000\000\000\000\000\000\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\236 \b\176\168\223\137\159@\022\003\232\000\000\024\224|\251\"\004\021\248\218\000\004\193\192\030\209\197\128\160\208\159\194E\171\026\173\249\156\244\005`?\192\000\007\142\000\000\000\000\002\000\002\128\004\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(\000\000\000\000\000\000\000\000\000\002\000\001\000\015\192,\018\000\000\248\017\000 \128\016(\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\000\000\000\000\000\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\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\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\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\004\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\016\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\002@\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\002\000\000\016\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\002 \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\002\000\000\016\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\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\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\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\004\000\0008\000\003\128\160\003\139\130\000\000 \000\000\000\000\000\000\228 \012\016\128N/\139@\014\128d\000\000\016@\003\144\1280B\0018\190-\000:\001\144\000\000A\000\014B\000\193\b\004\226\248\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\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\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\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!0\023t\001\003*\144p0h\144\022\194\"!\020\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\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\003\128\0008\n\b8\184 \000\002\000\000\000\000\000\000\002\001\016\000\000\016 \001\000\000\b\000\000\000\132\001\000\b\000\000\000\000\000\128\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\b\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000 \017\004\000\001\n\000\016\000\000\128\000\002\b@\016\000\128\000\000\000\000\b\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\bL\005\221\000@\202\164\028\012\026$\005\176\138\136E\000 \b\b\b\002\n\b\016\000\000\004\000\000\000\000\000\000\128 \000\b( @\000\000\016\000\000\000\000\000\002\000\128\128\000 \160\128\000\000\000@\000\000\000\000\012D\001T\000@\194$\028\000\018 \005\176\128\200\001!\016\004\016\001\002\000\016P\000@\000\020@\000 \000\132@\016@\004\b\000A\000\001\000\000Q\000\000\128\000\006\000\000I\129\004\160\001\000 \000\000\000\000\000\b\000\024\000\001$\004\018\128\004\000\128\000\000\000\000\000 \000`\000\004\144\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\004\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\004\144\000J\000\000\002\000\000\000\000\000\000\128\001\000\000\016\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\016\000\001$\000\016\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\001\000\000\016@\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\000\000\000\000\000\000\004\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\132\000\000\b\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\175\245\191\254\206\251\254\255\255\201\250\127\243\016\161\231\144\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\016\000\000\000\000\000\b@\000\000\000\004\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\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\016\000\001$\000\016\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\004\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\016\000\000\000\128\004\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\128\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\002\000\004\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\002\000\000\000\000\000\000\000\000\000\000\132@\017A\004\b\000A\128\001\000\000[\000\133\128\016\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\132@\017@\004\b\000A\128\001\000\000[\000\132\128\016\014@\000\240(\000\226\224\160\000\b\002\000@\000\016\bD\001\020\000P\130$\028\000\018 \0050\136\024A\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\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\0009\000\003\128\160\003\139\130\128\000 \b\001\000\000@\000\224\001\014\002\130\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\002\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\b\004A\000\000B\128\004\000\000 \000\000\130\016\004\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\012L\005\220\000@\200\164\028\012\018$\005\176\n\152E\128\224\000\012\000\128\014.\b\000\000\128\000\000\000\000\000\003\128\0008\n\b8\184 \000\002\000\000\000\000\000\000\006\000\000\192\000\000\162\224\128\000\t\000\000@\000\000\0008\000\003\128\160\131\139\130\000\000 \000\000\000\000\000\000 \000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\128D\000\000\004\b\000@\000\002\000\000\000!\000@\014\000\000\224( \226\224\128\000\b\000\000\000\000\000\007\207\178 A_\141\160\000L\028\001\237\028X\n\r\t\252$Z\177\170\223\153\207@V\003\252\000\000x\224#\176\128\"\194\163~&=\000X\015\160\000\000c\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\b\236 \b\184\168\223\137\159@\022\003\232\000\000\024\224#\176\128\"\194\163~&}\000X\015\160\000\000c\128\142\194\000\139\n\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$ \b\128(\n\t\142@\006\000`\000\000\024\192\132\000\000@ \000\160A@\192\000\000\001\000\128\000\002\016\000\001\000\000\002\129\005\003\000\000\000\004\002\000\000\b@\000\004\000\000\n\004\016\012\000\000\000\016\b\000\000\000d \b\016\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\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\000\000\000\000\000\000\000\000\000\000\016\001\128\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 d1\b\252\002\203)\139O\143\144f\b\001\146\203\128\000\004\000\000\000\000\000\001\000\024\001\000\000\000\000\002\006\000\000\000\128\000\000\001\000\000\000\000\000\000\000\000\000\024\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\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\128 \000\b( \000\000\000\016\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\016\000\000\000\000\000\000\000\000\000\000\000\000 @\b\000\000\b\b\016\000\000\004\000\000\000\000\000\000\129\000 \000\000 \000\000\000\016\000\000\000\000\002\159\194A\139\026\173\249\157\244\005`?\196\000\003\142\n\127\t\006,j\183\230s\208\021\128\255\016\000\0148\000`\000\004\152\016J\000\016\002\000\000\000\000\000\000\128\001\128\000\018@A(\000@\b\000\000\000\000\000\002\000\006\000\000I\001\004\160\000\000 \000\000\000\000\000\b\000\024\000\001$\000\018\128\000\000\128\000\000\000\000\000 \000 \000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\132@\017A\004\b\002A\128\001\"\000[\000\129\128\018\017\000E\000\016 \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!\016\004P\001\002\000\144`\000H\128\020\192 \004|\251\"\004\021\248\218\000\004\193\192\030\209\197\128\160\208\159\194E\171\026\173\249\156\244\005`?\192\000\007\142\n\127\t\022,j\183\230s\208\021\128\2550\000\0148\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\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\002\002\000\002\002\004\000\000\001\000\000\000\000 \000 @\b\b\000\b\b\016\000\000\004\000\000\000\000\000\000\129\000 \000\000 @\000\000\016\000\000\000\000\000\002\004\000\128\000\000\128\128\000\000\000@\000\000\000\000\000H\016\002\000\000\002\002\000\000\000\001\000\000\000\000\000\b\236 \b\176\168\223\137\159@\022\003\232\000\000\024\224#\176\128\"\194\163~&=\000X\015\160\000\000c\128\142\194\000\139\n\141\248\152\244\001`>\128\000\001\142\000\b\000\000\002\000\000\128\004\000\000\000\000\000\000\000\000\000 \000\000\000\000\002\000\016\000\000\000\000\000\000\000\000\000\128\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\128\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\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\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\236 \b\184\168\223\137\159@\022\003\232\000\000\024\224#\176\128\"\194\163~&}\000X\015\160\000\000c\128\142\194\000\139\n\141\248\152\244\001`>\128\000\001\142\n;\012B?*\183\234c\211\229\196\250\130\000f\186\224$!\b\128(\n\t\142@\006\000`\000\000\024\192#\176\128\"\194\163~&=\000X\015\160\000\016c\128\142\194\000\139\n\141\248\152\244\001`>\128\000\001\142\rM\237\222\191\202\250\190\127\191\251\236=\190\219\255\243\200\236 \b\176\168\223\137\143@\022\003\232\000\000\024\224\001\144\128 @\001(&-\000:\001\128\000\000A\000\006B\000\129\000\004\160\152\180\000\232\006@\000A\004\000\025\b\002\004\000\018\130b\208\003\160\025\000\000\005\016\000d H\016\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\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\b\000\000\136\000\000\000\000\000\000\000\000\000\128\000\016\000\000\224\000\014\002\128\014.\b\000\000\128\000\000\000\000\000\003\128\0008\n\0008\184 \000\002\000\000\000\000\005\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0008\000\003\128\160\003\139\130\000\000 \000\000\000\000\016\000\224\000N\002\128\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\000\014\000\000\224(\000\226\224\128\000\b\000\000\000\000\004\0008\000\003\128\160\003\139\130\000\000 \000\000\000\000P\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\128\000\000\000\000\000\000 \000\000\b\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\004\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\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\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\014\000\000\224(\000\226\224\128\000\b\000\000\000\000\004\000\b\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\196\192]\192\004\012\138A\192\193\162@[\000\168\132X\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\012D\001\220\000@\200$\028\012\018$\005\176\n\136E\128\224\000\014\002\128\014.\b\000\000\128\000\000\000\000\000\196@\029\192\004\012\130A\192\193\"@[\000\168\132X\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\012D\005\220\000@\200$\028\012\018$\005\176\n\136E\128`\000\012\000\000\n.\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\012L\005\220\000@\200\164\028\012\018$\005\176\n\136E\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\003\019\001w\000\0162)\007\003\006\137\001l\002\162\017`\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\224\000\012\000\128\014.\b\000\000\128\000\000\000\000\000\003\128\0008\n\b8\184 \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\002\000\000\000 \000\000\000\000\002\000\000\000\000\128\000\000\000\000\000\000\128\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\012L\005\220\000@\200\164\028\012\026$\005\176\n\136E\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\128\0008\n\0008\184 \000\002\000\000\000\000\000\000\006\000\000\192\000\000\162\224\128\000\b\000\000\000\000\000\0008\000\003\128\160\131\139\130\000\000 \000\000\000\000\000\000\000\000\004\000\000\b\000\000\000\000\000\000\002\000\000\000\000\128\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\001\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\001\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\003\128\0008\n\0008\184 \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\004\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\128\0008\n\0008\184 \000\002\000\000\000\000\000\003\017\000w\000\0162\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\012\000\000\n.\b\000\000\128\000\000\000\000\000\196@\029\192\004\012\130A\192\193\"@[\000\168\132X\014\000\000\224(\000\226\224\128\000\b\000\000\000\000\000\012D\001\220\000@\200$\028\012\018$\005\176\n\136E\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\128\0000\000\000(\184 \000\002\000\000\000\000\000\003\017\000w\000\0162\t\007\003\004\137\001l\002\162\017lL\005\220\000@\200\164\028\012\018$\005\176\n\136E\128`\000\012\000\000\n.\b\000\000\128\000\000\000\000\000\196\192]\192\004\012\138A\192\193\"@[\000\168\132X\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\012D\001\220\000@\200$\028\012\018$\005\176\n\136E\000\000\000\004\000\000\b\000\000\000\000\000\000\000\000\000\000\000\128\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\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\128\000\000\000\000\b\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\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\001\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\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\0008\000\003\128\160\003\139\130\000\000 \000\000\000\000\000\000\000\001\000\000\000\000\000\016\000\000\000\000\000\b\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\001\000\000\000\000\000\000\128\000\000\000\000\001\000\000\002\000\000\000\000\000\000\000\128\000\000\000\224\000\014\002\128\014.\b\000\000\128\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\016\000\000\000\000\000\000\000\000\000\000\0008\000\003\128\160\003\139\130\000\000 \000\000\000\000\0001\016\007p\001\003 \144p0H\144\022\192*!\022\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\006\000\000\192\000\000\162\224\128\000\b\000\000\000\000\000\012D\001\220\000@\200$\028\012\018$\005\176\n\136E\128\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\003\128\0008\n\0008\184 \000\002\000\000\000\000\000\003\017\000w\000\0162\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\012\000\000\n.\b\000\000\128\000\000\000\000\000\196@\029\192\004\012\130A\192\193\"@[\000\168\132X\006\000\000\192\000\000\162\224\128\000\b\000\000\000\000\000\0008\000\003\128\160\131\139\130\000\000 \000\000\000\000\000\000\000\000\004\000\000\b\000\000\000\000\000\000\002\000\000\000\003\128\0008\n\0008\184 \000\002\000\000\000\000\000\000\000\000\016\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\224\000\014\002\128\014.\b\000\000\128\000\000\000\000\000\196@\029\192\004\012\130A\192\193\"@[\000\168\132X\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\024\000\003\000\000\002\139\130\000\000 \000\000\000\000\0001\016\007p\001\003 \144p0H\144\022\192*!\022\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\014\000\000\224(\000\226\224\128\000\b\000\000\000\000\000\012D\001\220\000@\200$\028\012\018$\005\176\n\136E\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\128\0000\000\000(\184 \000\002\000\000\000\000\000\003\017\000w\000\0162\t\007\003\004\137\001l\002\162\017`\024\000\003\000\000\002\139\130\000\000 \000\000\000\000\0001\016\007p\001\003 \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\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\003\128\0008\n\0008\184 \000\002\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\016\000\016\000\000\004\000\000\004\000\000\000\000@\000\224\000\014\002\128\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\000\014\000\000\224(\000\226\224\128\000\b\000\000\000\000\000\000\000\000\016\000\000\000\000\004\000\000\004\000\000\000\000@\128\224\000\014\002\128\014.\b\000\000\128\000\000\000\000\000\000\000\001\000\000\000\000\000@\000\000@\000\000\000\004H\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\004\000\000\004\000\000\000\000D\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\004\000\000\000\004\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\001\000\003\128\0008\n\0008\184 \000\002\000\000\000\000\001\000\000\000\004\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\001\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\001\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\001\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\000\000\128\000\b\128\000\000\000\000@\000\000\000\b\000\000\000\002\000\000\"\000\000\000\000\000\000\000\000\000 \000\000\000\000\025\b\002\004\000\018\130b\208\003\160\025\000\000\004\016\000d \b\024\000J\t\154@\014\128`\000\000\016@\001\144\128 @\001(&i\000:\001\128\000\000A\000\006B\000\129\000\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\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\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\000\000\000$e#j\018\001J\t\154\192.\128b\132\014\213P\000\000\128\000@\001\000\000\001\000\000\001\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\016\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\t\025H\218\132\128R\130f\240\011\160\025\160\131\181T\000 \000\000\000\000\b\001\138\000\000\000\000\000\000\000\000\129\144\132 @\001(&-\000:\001\144\000\002A\000\000\000\000\000\000\000\000\000\000\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 \b\024\000J\t\155@\014\128d\000\000\016@\001\144\128 @\001(&m\000:\001\144\000\000A\000\006B\000\129\000\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\144\000\r\128\000\004\000\000@\000\128\000\n\0003\020@\006B\000\129\000\004\160\152\180\000\232\006@\000\001\004\t\000\000\216\000\000@\000\004\000\b\000\000\160\0031D d \b\016\000J\t\139@\014\128d\000\000\016@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002@\0006\000\000\016\000\001\000\002\000\000(\000\204Q\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000$d#h\016\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\t\025\b\218\004\000R\130f\208\011\160\025\160\0035T t1\b\252\002\203)\139O\143\144f\b\001\146\203\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\000\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\001\144\128 @\001(&)\000:\001\128\000\000A\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\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\004\000\000\000\000\000\001\000\024\001\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\001\000\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\b\025\b\002\004\000\018\130b\208\003\160\025\000\000\004\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\144\000\r\128\000\004\000\000@\000\128\000\n\0003\020B\014\000\000\224(\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\001\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\b\025\b\002\004\000\018\130b\208\003\160\025\000\000\004\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\144\000\r\128\000\004\000\000@\000\128\000\n\0003\020B\000\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\000\000\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\004\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\000d H\016\000J\t\139@\014\128d\000\000\016@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\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\128\000\t\000\000\000\000\000@\000\000\000\000\0002\020B\006B\004\129\000\004\160\152\180\000\232\006@\000AD\000\000\000\000\000\000\000\000\000\000\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\128\000\000\000\000@\000\000\000\000\000\"\004B\000\000\"\000\000\000\000\000\000\000\000\000\000\000\000\000\b\024\000\b\000\000\000\128\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\000\000\000\128\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\000\000\000\000\000\000\000\128\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\000e \n\018\000J\t\154\192.\128b\000\b\209X\000\000\000\000\000\000(\000\000\000\000\000\000\000\000\000\000\b\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\128\000\016\000\000\224\000\014\002\128\014.\b\000\000\128\000\000\000\000\000\000\000\000\016\000\000 \000\000\000\000\000\000\b\000\000\000\014\000\000\224(\000\226\224\128\000\b\000\000\000\000\000\000\000\000@\000\000\000\000\004\000\000\000\000\128\000\000\000\000\000\001\000\000\000\000\000\016\000\000\000\002\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\000\000\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\000\000\000\000\002\128\000\000\000\000\000\000\000\000\000\000\128\000\000\000\128\006\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\016\000\000\000\000\000\000\000\000\000 \000\000\000\002;\b\002,*7\226c\208\005\128\250\000\000\0068\000\228 \136\025\130N\t\155@\014\128d\000\000\016@\000\129\000 \000 @\000\000\016\000\000\000\002\000\002\004\000\128\128\000\128\129\000\000\000@\000\000\000\000\000\b\016\002\000\000\002\002\004\000\000\001\000\000\000\000\000\000 @\b\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\128\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\000\000\000\000\000\000\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\002\000\128\128\000 \160\128\000\000\000@\000\000\000\000\000\b\002\002\000\000\130\130\000\000\000\001\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 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\128\000\000\000\000\000\000\000\000\000\000\b\002\002\000\000\130\130\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\196@\021@\004\012\002A\192\001\"\000[\000\b\128\016\001\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\024\000\001$\000\018\128\000\000\128\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\b\000\004\000\000\014\000\000\240(\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\224\000\014\002\128\014.\b\000\000\128\000\000\000\000\000\196@\021@\004\012\002A\192\001\"\000[\000\b\128P\014\000\000\224(\000\226\224\128\000\b\000\000\000\000\000\012D\001T\000@\192$\028\000\018 \005\176\b\136\0051\016\005P\001\003\000\144p\000H\128\022\192\" \004\003\128\0008\n\0008\184 \000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000 \000\000\000\0008\000\003\128\160\003\139\130\000\000 \000\000\000\000\0001\016\005P\001\003\000\144p\000H\128\022\192\" \004\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\b\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\002\000\001\000\000\000\128 \000\b( \000\000\000\016\000\000\000\000\003\017\000U\000\0160\t\007\000\004\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\000\b\000\000\000\000\000\000\002\000\000\000\000\128\000\000\000\000\b\000\000\000\000\000\000\000\000\000\003\017\000U\000\0160\137\007\000\004\136\001l 2\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\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\002\002\000\000\130\130\000\000\000\001\000\000\000\000\0001\016\005P\001\003\000\144p\000H\128\022\192\002 \004\000\128 \000\b( \000\000\000\016\000\000\000\000\003\017\000U\000\0160\t\007\000\004\136\001l\000\"\000@\000\000\000\000\000\000\000\000\000\000\000\000\128\128@\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\196@\021@\004\012\"A\192\001\"\000[\b\b\128\016\002\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\0001\016\005P\001\003\b\144p\000H\128\022\194\002 \004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\017\000U\000\0160\t\007\000\004\136\001l\000\"\000@\004\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\012\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\001\000\000\016\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\001\b\000\000\000\000\000\000\000\000\000\000\000\129\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\012D\001T\000@\194$\028\000\026 \005\176\000\152\001\001 A\b\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\002\000\000\016\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\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128 \000\b( \000\000\000\016\000\000\000\000\003\000\000\016\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\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\012D\001T\000@\194$\028\000\026 \005\176\128\152\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\000\000\000\000\000\142\194\000\139\n\141\248\152\244\001`>\128\000\001\142\002;\b\002,*7\226c\208\005\128\250\000\000\0078\b\236 H\176\168\223\137\143@\022\003\232\000\000\024\224\000\000\000\000\000\000\b\000\000\000\000\128\000\000\000\000\002\000\000 \000\000\000\000\000\000\000\002\000 \000\000\000\002;\b\002,*7\226c\208\005\128\250\000\000\0068\000$ \b\128(\n\t\142@\006\000`\000\000\024\192\192\000\b\128\000\000\000\000\000\000&\000\b(\t\000\000\142\194\000\139\138\141\248\153\244\001`>\132\000\001\142\002;\b\002,*7\226g\208\005\128\250\016\000\0068\b\236 \b\176\168\223\137\143@\022\003\232@\000\024\224\000\144\128\" \160(&y\000\024\001\128\000\000c\000\002B\000\136\002\128\160\153\228\000`\006\000\000\001\140\000\t\b\002 \n\002\130c\144\001\128\024\000\000\0060\000$ \b\128(\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\000\rM\237\222\191\202\250\174\127\191\251\236=\190\219\255\247\192 \000\000\000\000\n\001\142\000\000\000\000\000\000\000\000\163\176\196#\242\171~\166=>\\O\168 \006k\172\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\n;\bB,*7\226c\208\005\128\250\000\000\0068(\236!\b\176\168\223\137\143@\022\003\232\000\000\024\224\128\129\000 \000 @\000\000\016\000\000\000\000\000\002\004\000\128\000\000\128\129\000\000\000@\000\000\000\000\000\b\016\002\000\000\002\002\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\b\000\016\000\000\000\000\000\000@\000\128\128 \000\b( \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\004\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\163\176\132\"\194\163~&=\000X\015\160\000\000c\130\142\194\016\139\n\141\248\152\244\001`>\128\000\001\142\b\025\bB\004\000\018\130b\208\003\160\024\000\000\004\016\000\000\000\000\000\000\000\000\016\000\000\000\002\000\b\193\016\003\128\0008\n\0008\184 \000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000 \000\000\000\002;\b\002,*7\226c\208\005\128\250\000\000\0068\b\236 \b\184\168\223\137\159@\022\003\232\000\000\024\224#\176\128\"\194\163~&}\000X\015\160\000\000c\128\142\194\000\139\n\141\248\152\244\001`>\128\000\001\142\000\025\b\002\006\000\018\130f\208\003\160\025\000\000\004P\000d \b\016\000J\t\155@\014\128d\000\000\017@\001\144\128 @\001(&-\000:\001\144\000\000E\000\006B\000\129\000\004\160\152\180\000\232\006@\000\001\004\001\000\000\000\000\000@\000\004\000\000\000\000\000\002 D\b\236 \b\176\168\223\137\143@\022\003\232\000\000\024\224\001\148\128(h\001(&k\000:\001\128\000\000A\000\006R\000\161 \004\160\153\172\000\232\006\000\000\001\004\000\025H\002\132\128\018\130b\176\003\160\024\000\000\004\016\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\014B\000\129\b\004\224\152\180\000\232\006@\000\001\004\000\000\000@\000\000\000\000\004\000\000\000\000\128\0020D\000\224\000\014\002\128\014.\b\000\000\128\000\000\000\000\000\000\000\000\016\000\000 \000\000\000\000\000\000\b\000\000\000\014\000\000\224(\000\226\224\128\000\b\000\000\000\000\000\000\000\000@\000\000\000\000\004\000\000\000\000\128\000\000\000\000\000\001\000\000\000\000\000\016\000\000\000\002\000\000\000\000\001\144\128 @\001(&-\000:\001\144\000\000A\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\004\000\000\000\000\000\000\000\000\000\b\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\002\015C\016\143\200,\242\152\180\248\249\006`\128\025,\176\000\000\000\000\000\002\128\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\001\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\004\000\000\000(\000\000\000\000\000\000\000\001\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\000e \n\018\001J\t\138\192\014\128`\000\000P@#\176\128\"\194\163~&=\000X\015\160\000\000c\128\006B\000\129\128\004\160\153\180\000\232\006@\000\001\004\000\025\b\002\004\000\018\130f\208\003\160\025\000\000\004\016\000d \b\016\000J\t\139@\014\128d\000\000\016@\000\000\000\000\000\000\000\000@\000\000\000\b\000\"\004@\142\194\000\139\n\141\248\152\244\001`>\128\000\001\142\002;\b\002,*7\226c\208\005\128\250\000\000\0068\000$ \b\136(\n\t\158@\006\000`\000\000\024\192\000\144\128\"\000\160(&y\000\024\001\128\000\000c\000\002B\000\136\002\128\160\152\228\000`\006\000\000\001\140\rD\165\220\031@\248,\028\015\250l%\190\219\249\195\192\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\002B\000\136\002\128\160\152\228\000`\006\000\000\001\140\rM\237\222\191\202\250\174\127\191\251\236=\190\219\255\247\192\000\000\000\000\000\b\000\n\000\000\000\000\000\000\000\000#\176\128\"\194\163~&=\000X\015\160\000\000c\128\142\194\000\139\n\141\248\152\244\001`>\128\000\001\142\rM\237\222\191\202\250\174\127\191\251\236=\190\219\255\243\192\000\000\000\000\000\n\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\b8\000\003\128\160\003\139\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\128\000\012\128\000\000\000\000@\000\000\000\b\000\000\000\002\014\000\000\224(\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\003 \000\000\000\000\016\000\000\000\002\000\002\000\000\003\128\0008\n\0008\184 \000\002\000\000\000\000\000\002\000\0002\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$ \b\128(\n\t\142@\006\000`\000\000\024\192\212\222\221\235\252\175\170\231\251\255\190\195\219\237\191\255|\000\000\000\000\000\000 \000\000\000\000\000\000\000\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\n\000\000\000\000\000\000\000\000#\176\128\"\194\163~&=\000X\015\160\000\000c\130\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\212J]\193\244\015\130\193\192\255\162\194[\197\191\156<\142\194\000\139\n\141\248\152\244\001`>\128\000\001\142\rM\237\222\191\202\250\174\127\191\251\236=\190\219\255\243\245\018\151p}\003\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\000\000\128\000\000\000\000\000\016\142\194\000\139\n\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\0005\018\151p}\003\224\176p?\232\176\150\241o\231\015#\176\128\"\194\163~&=\000X\015\160\000\000c\131Q)w\007\208>\011\007\003\254\139\to\022\254p\242;\b\002,*7\226c\208\005\128\250\000\000\00685\018\151p}\003\224\176p?\232\176\150\241o\231\015\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003S{w\175\242\190\171\159\239\254\251\015o\182\255\252\253D\165\220\031@\248,\028\015\250l%\190\219\249\195\200\236 \b\176\168\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\003\223\235w\143\218\191\251\159\247\255\235?\239\022\255\254\247\207\178 A_\141\160\000L\028\001\237\028X\n\r\b\236 \b\176\168\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\002;\b\002,*7\226c\208\005\128\250\000\000\00685\018\151p}\003\224\176p?\232\176\150\241o\231\015#\176\128\"\194\163~&=\000X\015\160\000\000c\131Q)w\007\208>\011\007\003\254\139\to\022\254p\242;\b\002,*7\226c\208\005\128\250\000\000\00685\018\151p}\003\224\176p?\232\176\150\241o\231\015#\176\128\"\194\163~&=\000X\015\160\000\000c\131Q)w\007\208>\011\007\003\254\139\to\022\254p\242;\b\002,*7\226c\208\005\128\250\000\000\00685\018\151p}\003\224\176p?\232\176\150\241o\231\015#\176\128\"\194\163~&=\000X\015\160\000\000c\131Q)w\007\208>\011\007\003\254\139\to\022\254p\242;\b\002,*7\226c\208\005\128\250\000\000\00685\018\151p}\003\224\176p?\232\176\150\241o\231\015#\176\128\"\194\163~&=\000X\015\160\000\000c\131Q)w\007\208>\011\007\003\254\139\to\022\254p\242;\b\002,*7\226c\208\005\128\250\000\000\00685\018\151p}\003\224\176p?\232\176\150\241o\231\015#\176\128\"\194\163~&=\000X\015\160\000\000c\131Q)w\007\208>\011\007\003\254\139\to\022\254p\242;\b\002,*7\226c\208\005\128\250\000\000\00685\018\151p}\003\224\176p?\232\176\150\241o\231\015#\176\128\"\194\163~&=\000X\015\160\000\000c\131Q)w\007\208>\011\007\003\254\139\to\022\254p\242;\b\002,*7\226c\208\005\128\250\000\000\00685\018\151p}\003\224\176p?\232\176\150\241o\231\015#\176\128\"\194\163~&=\000X\015\160\000\000c\131Q)w\007\208>\011\007\003\254\139\to\022\254p\242;\b\002,*7\226c\208\005\128\250\000\000\00685\018\151p}\003\224\176p?\232\176\150\241o\231\015#\176\128\"\194\163~&=\000X\015\160\000\000c\131Q)w\007\208>\011\007\003\254\139\to\022\254p\242;\b\002,*7\226c\208\005\128\250\000\000\00685\018\151p}\003\224\176p?\232\176\150\241o\231\015#\176\128\"\194\163~&=\000X\015\160\000\000c\131Q)w\007\208>\011\007\003\254\139\to\022\254p\242;\b\002,*7\226c\208\005\128\250\000\000\00685\018\151p}\003\224\176p?\232\176\150\241o\231\015#\176\128\"\194\163~&=\000X\015\160\000\000c\131Q)w\007\208>\011\007\003\254\139\to\022\254p\2409\b\002\004 \019\130f\208\003\160\024\000\000\004\016\000\228 \b\016\128N\t\139@\014\128`\000\000\016@\133\212\145hL\t*g\235\001\186\001\219\000+\197R\015C\016\143\200,\242\152\180\248\249\006`\128\025,\176\000\000\000\000\000\002\128\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\n\000\000\000\000\000\000\000\000@\000\000\128\000\000\000\000\b\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\025H\002\132\128\018\130b\176\003\160\024\128\000\148\016\000d \b\016\000J\t\138@\014\128`\000\000\016@\131\144\196#\242\011<\166->>A\152 \006K.\000\000\016\000\000\000\000\001\000\000\000\000\000\000\140\017\b8\000\003\128\160\003\139\130\000\000 \000\000\000\000\000\000\000\000\004\000\000\b\000\000\000\000\000\000\002\000\000\000\003\128\0008\n\0008\184 \000\002\000\000\000\000\000\000\000\000\016\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\000d \b\016\000J\t\139@\014\128d\000\000\016@\000\000\004\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\001\000\000\002\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\b\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\128\000\000\000\000\b\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\004\000\000\b\000\000\000\000\000\000\002\000\000\000\003\128\0008\n\0008\184 \000\002\000\000\000\000\000\000\000\000\016\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#\176\128\"\194\163~&=\000X\015\160\000\000c\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\128\000\000\000\b\236 \b\176\168\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\000e \n\018\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\000\000\000\000\000\000\000\000\000\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\001\148\128(H\001(&+\000:\001\136\000\tA\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\000\002\128\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\002\000\000\016\000\000\000\000\001\000\000\000\000\000\000\140\017\b8\000\003\128\160\003\139\130\000\000 \000\000\000\000\000\000\000\000\004\000\000\b\000\000\000\000\000\000\002\000\000\000\003\128\0008\n\0008\184 \000\002\000\000\000\000\000\000\000\000\016\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\000d \b\016\000J\t\139@\014\128d\000\000\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\000\000\000\000\000\b<\000\003\128\160\003\139\130\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\b\000\000\000\014\000\000\224(\000\226\224\128\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\000\000\128\000\000\000\b\236 \b\176\168\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\128\000\000\000\000\000\000 \000\000\0008\000\003\128\160\003\139\130\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\000\002\000\000\000\000#\176\128\"\194\163~&=\000X\015\160\000\000c\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\128\000\000\000\b\236 \b\176\168\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\004\000\000\000\000\128\0020D\000\224\000\014\002\128\014.\b\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\000\000\b\000\000\000\000\142\194\000\139\n\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\016\000\000\000\002\000\b\129\016#\176\128\"\194\163~&=\000X\015\160\000\000c\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\025\b\002\004\000\018\130b\208\003\160\025\000\000\004\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\b\000\"\004B\006B\000\129\000\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\016\000\000\000\002\000\b\129\016\129\144\128 @\001(&-\000:\001\144\000\000A\000\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\128\002 D \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\000\000@\000\000\000\b\000\"\004@\006B\000\129\000\004\160\152\180\000\232\006@\000\001\004\000\000\000\000\000\000\000\000\004\000\000\000\000\128\002 D\000\000\000\000\000\000\n\000\000\000\000\000\000\000\000\000\000\001\148\128(H\001(&+\000:\001\136\000\tA\002\014\000\000\224(\000\226\224\128\000\b\000\000\000\000\000\000\000\000\001\000\000\002\000\000\000\000\000\000\000\128\000\000\000\224\000\014\002\128\014.\b\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\000\000\b\000\000\000\000\142\194\000\139\n\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\002\000\000\000\000#\176\128\"\194\163~&=\000X\015\160\000\000c\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\132@\017@\004\b\002A\128\001\162\000S\000\000\128\018\017\000E\000\016\"\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\003Q)w\007\208>\011\007\003\254\139\to\022\254p\242;\b\002,*7\226c\208\005\128\250\000\000\0068 \000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\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;\b\002,*7\226c\208\005\128\250\000\000\0068 \000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\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\128\000\000\000\000\000\000\000\000\b\000\n\000\000\000\000\000\000\000\000#\176\128\"\194\163~&=\000X\015\160\000\000c\130\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\128\000M\129\240\003\000\128@>\000@\b\0006\024\014\142\194\022\139\n\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\b\236 \b\176\168\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\b\236 \b\176\168\223\137\143@\022\003\232\000\000\024\224\128\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\144\128\"\000\160(&9\000\024\001\128\000\000c\003S{w\175\242\190\171\159\239\254\251\015o\182\255\253\240\000\000\000\000\000\002\000\002\128\000\000\000\000\000\000\000\b\236 \b\176\168\223\137\143@\022\003\232\000\000\024\224\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\rM\237\222\191\202\250\190\127\191\251\236=\190\219\255\243\200\236 \b\176\168\223\137\143@\022\003\232\000\000\024\224\212J]\193\244\015\130\193\192\255\162\194[\197\191\156<\142\194\000\139\n\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\212\222\221\235\252\175\171\231\251\255\190\195\219\237\191\255<\142\194\000\139\n\141\248\152\244\001`>\128\000\001\142\rD\165\220\031@\248,\028\015\250,%\188[\249\195\200\236 \b\176\168\223\137\143@\022\003\232\000\000\024\224\128\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\rM\237\222\191\202\250\190\127\191\251\236=\190\219\255\243\200\236 \b\176\168\223\137\143@\022\003\232\000\000\024\224\212J]\193\244\015\130\193\192\255\162\194[\197\191\156<\002\000\000\000\000\000\160\000\160\000\000\000\000\000\000\000\002;\b\002,*7\226c\208\005\128\250\000\000\0068 \000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\212\222\221\235\252\175\171\231\251\255\190\195\219\237\191\255<\142\194\000\139\n\141\248\152\244\001`>\128\000\001\142\rD\165\220\031@\248,\028\015\250,%\188[\249\195\200\236 \b\176\168\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\003S{w\175\242\190\175\159\239\254\251\015o\182\255\252\242;\b\002,*7\226c\208\005\128\250\000\000\00685\018\151p}\003\224\176p?\232\176\150\241o\231\015#\176\128\"\194\163~&=\000X\015\160\000\000c\130\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\rM\237\222\191\202\250\190\127\191\251\236=\190\219\255\243\200\236 \b\176\168\223\137\143@\022\003\232\000\000\024\224\212J]\193\244\015\130\193\192\255\162\194[\197\191\156<\000\000\000\000\000\000\000\000\000\000\000\000\000\160\000\000\000\000\000\000\000\000\002\000\002\128\000\000\000\000\000\000\000\b\236 \b\176\168\223\137\143@\022\003\232\000\000\024\224\128\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\003S{w\175\242\190\175\159\239\254\251\015o\182\255\252\242;\b\002,*7\226c\208\005\128\250\000\000\00685\018\151p}\003\224\176p?\232\176\150\241o\231\015#\176\128\"\194\163~&=\000X\015\160\000\000c\130\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\rM\237\222\191\202\250\190\127\191\251\236=\190\219\255\243\200\236 \b\176\168\223\137\143@\022\003\232\000\000\024\224\212J]\193\244\015\130\193\192\255\162\194[\197\191\156<\142\194\000\139\n\141\248\152\244\001`>\128\000\001\142\b\000\000\b\000\000\000\000\000\000\000\000\000\000\000\000\00057\183z\255+\234\249\254\255\239\176\246\251o\255\207#\176\128\"\194\163~&=\000X\015\160\000\000c\131Q)w\007\208>\011\007\003\254\139\to\022\254p\253M\237\222\191\202\250\190\127\191\251\236=\190\219\255\243\200\236 \b\176\168\223\137\143@\022\003\232\000\000\024\224\212J]\193\244\015\130\193\192\255\162\194[\197\191\156?S{w\175\242\190\171\159\239\254\251\015o\182\255\253\253M\237\222\191\202\250\174\127\191\251\172=\188[\255\243\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\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#\176\128\"\194\163~&=\000X\015\160\000\000c\130\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\b\236 \b\176\168\223\137\143@\022\003\232\000\000\024\224\128\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\002\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\002;\b\002,*7\226c\208\005\128\250\000\000\0068\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\000#\176\128\"\194\163~&=\000X\015\160\000\000c\128\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\131\208\196#\242\011<\166->>A\152 \006K,\000\000\000\000\000\000\160\000\000\000\000\000\000\000\000\000\000\000\000@\000\000\002\128\000\000\000\000\000\000\000\016\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\006R\000\161 \020\160\152\172\000\232\006\000\000\005\004\000\024\000\003\000\000\002\139\130\000\000 \000\000\000\000\000\000 \000\000\000\001\002\000\000\000\000\128\000\000\000\000\000#\176\128\"\194\163~&=\000X\015\160\000\000c\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\025H\002\132\128R\130b\176\003\160\024\000\000\020\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\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\025H\002\132\128R\130b\176\003\160\024\000\000\020\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\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\025H\002\132\128R\130b\176\003\160\024\000\000\020\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\148\128(H\005(&+\000:\001\128\000\001A\000\000\000\000\000\000\000\000\000\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\236 \b\176\168\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\142\194\000\139\n\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\003Q)w\007\208>\011\007\003\254\139\to\022\254p\240\025\b\002\004\000\018\130b\208\003\160\025\000\000\004\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\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002;\b\002,*7\226c\208\005\128\250\000\000\00685\018\151p}\003\224\176p?\232\176\150\241o\231\015#\176\128\"\194\163~&=\000X\015\160\000\000c\131Q)w\007\208>\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\016\000\000\000\002\000\b\129\016#\176\128\"\194\163~&=\000X\015\160\000\000c\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\b\000\000\000\000\000\002\b\236 \b\176\168\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\006B\000\129\000\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\000\128\144\132\"\000\160(&9\000\024\001\128\000\000c\002\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#\176\128\"\194\163~&=\000X\015\160\000\016c\128\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\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@\001 \007\192\012\002\001\000\248\001\b \000\216 2;\b\002,*7\226c\208\005\128\250\000\000\0068\004\000\016@|\000\192 \016\015\128\016\130\000\r\134\003\001\144\128 @\0018&m\000:\001\144\000\000A\000@\000\004\000\000\000\000\000\000\000\000\b\000\000@@@\025\b\002\004\000\019\130f\208\003\160\025\000\000\004\016\000d \b\016\000N\t\139@\014\128d\000\000\016@\001\144\128 @\001(&-\000:\001\144\000\000A\000\000\000\000\000\000\000\000\001\000\002\000\000\000\000\136\017\002;\b\002,*7\226c\208\005\128\250\000\000\0068\004\000\016@|\000\192 \016\015\128\016\130\000\r\134\007\000\000\000\000\000\000\000\000@\000\128\000\b\000\"\004@\142\194\000\139\n\141\248\152\244\001`>\128\000\001\142\001\000\004\016\031\0000\b\004\003\224\004 \128\003a\129\200\236 \b\176\168\223\137\143@\022\003\232\000\000\024\224\000\b@\001\240\003\000\128@>\000@\b@&\b\012\142\194\000\139\n\141\248\152\244\001`>\128\000\001\142\001\000\004\016\031\0000\b\004\003\224\004 \128\003a\129\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\001\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\000\000\000\002;\b\002,*7\226c\208\005\128\250\000\000\0078\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\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\018\000|\000\192 \016\015\128\016\130\000\t\134\003\016\000\000\000\000\000\000\000\000\000\000\002\000\000\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002;\b\018,*7\226c\208\005\128\250\000\000\0068\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\000$\000\018@|\000\192 \016\015\128\016\130\000\t\130\003\016\000\001\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\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\t\b\002 \n\002\130c\144\001\128\024\000\000\0060\016\000\000\000\000\000\000\000\000\000\t\128\000\n\000\000\000\000\128\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\b\000\000\136\000\000\000\000\000\000\000\000\000\128\000\144\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\b\128\000\000\000\000\000\000\000\000\b\000\000\000\002\000\000\"\000\000\000\000\000\000\000\000\000\000\000\000\000\b\b\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\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\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\002\000\000\000\000\000\160\024\224\000\000\000\000\000\000\000\012\000\000\136\000\000\000\000\000\000\002`\000\130\128\144\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\212J]\193\244\015\130\193\192\255\166\194[\237\191\156<\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\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\002\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\128\000H\129\240\003\000\128@>\000\192\b\000&\b\014\000\000 \000\000\000\000\000\000\000\002\000\000\000\000\000\b\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\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\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\000$\000\018@|\000\192 \016\015\128\016\130\000\t\130\003\016\000\001\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\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\t\000\004\128\031\0000\b\004\003\224\004 \128\002a\128\196\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\000\b\016\002\000\000\002\002\004\000\000\001\000\000\000\000\000\000 @\b\000\000\b\b\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000 \000@\000\128\000\000\000\000\000\000\142\194\000\139\n\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\b\000\000\000\016\000\000\000\000\000\000\000\000\001\128\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\002\000\000\000\000\000\000\128\000\016\000\000 @\b\000\000\b\b\000\000\000\004\000\000\000\000\000\132@\017@\004\b\"A\192\001\162\000S\000\000\128\016\002\000\128\128\000 \160\128\000\000\000@\000\000\000\000\004\000\000\000\000\000@\000\004\000\000\000\000\128\000\000\000\000 @\b\000\000\b\b\000\000\000\004\000\000\000\000\000\132@\017@\004\b\"A\192\001\162\000S\000\000\128\016\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\002;\b\002,*7\226c\208\005\128\250\000\000\0068\000\000\000\000\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\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\t\000\000\002\000\002\000\006\000\000\000\b\000\000\000\000\000$\000\000\000\000\b\000\024\000\000\000 \000\000\000\000\000\144\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\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\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\000\000\004\000\b\000\000\000\000\016\000\000`\000\012\000\000\n.\n\000\000\136\000\000\000\000\000\000\000\000\000\000\016\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\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\001\000\000\014\000\000\224(\000\226\224\128\000\b\000\000\000\000\000\000\000\000\001\000\000\002\000\000\000\000\000\000\000\128\000\000\000\224\000\014\002\128\014.\b\000\000\128\000\000\000\000\000\000\000\b\128\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\136\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \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\000\"\000\000\000\000\001\000\000\001\000\000\000\000\001\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\128\000\016\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\012\000\000\n.\b\000\000\128\000\000\000\000\000\132\192Q@\004\012\nA\192\001\162\000S\000\128\132\016\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\024\000\003\000\000\002\139\130\000\000\"\000\000\000\000\000\000`\000\012\000\000\n.\b\000\000\128\000\000\000\000\000\132\192Q@\004\012\nA\192\001\162\000S\000\128\132\018\019\001E\000\0160)\007\000\006\136\001L\002\002\016@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000!0\020P\001\002\002\144p\000h\128\020\192 !\004\001\128\0000\000\000(\184(\000\002 \000\000\000\000\000\014\000\000\224( \226\224\128\000\b\000\000\000\000\000\000\b\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000\000 \017\000\000\001\002\000\016\000\000\128\000\000\b@\016\000\000\000\016\000\000 \000\000\000\000\000\000\b\000\000\000\006\000\000\192\000\000\162\224\160\000\b\128\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\n.\b\000\000\128\000\000\000\000\000\132\192\017@\004\b\nA\192\001\162\000S\000\128\132\018\019\001E\000\0160)\007\000\006\136\001L\002\002\016@\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000`\000\012\000\000\n.\b\000\000\128\000\000\000\000\000\132\192\017@\004\b\nA\192\001\162\000S\000\128\132\018\019\001E\000\0160)\007\000\006\136\001L\002\002\016@\000\000\000\000\000\000\000\004\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000#\176\128\"\194\163~&=\000X\015\160\000\000c\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\228 \136\016\128N\t\155@\014\128`\000\000\016@\003\144\130 B\0018&-\000:\001\128\000\000A\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0009\b\002\004 \019\130b\208\003\160\024\000\000\004\016!\016\004P\001\002\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\000\000\004\000\000\000\000\000\000\000\000\000\b\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\003Q)w\007\208>\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\128\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\018\000|\000\192 \016\015\128\016\130\000\r\130\003\016\000\000\000\000\000\000\000\000\000\000\002\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\b\000\b\b\016\000\000\004\000\000\000\000\000\000\129\000 \000\000 @\000\000\016\000\000\000\000\000\002\004\000\128\000\000\128\128\000\000\000@\000\000\000\000\000\000\000@\000\000\002\000\004\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\128\128 \000\b( \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\004\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\128\000\004\000\000\000\000\000\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\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\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\025\b\002\004\000\018\130b\208\003\160\025\000\000\004P5\018\151p}\003\224\176p?\232\176\150\241o\231\015\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\001\016\007\192\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\000\128\128 \000\b( \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\004\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\128\128 \000\b( \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\004\000\000@\000\000@\000\004\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\128 \000\b( \000\000\000\016\000\000\000\000\001\000\000\016\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!\016\004P\001\002\b\144p\000H\128\020\192\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\004\000\128\000\000\128\129\000\000\000@\000\000\000\000\000\b\016\002\000\000\002\002\000\000\000\001\000\000\000\000\000!\016\004P\001\002\b\144p\000H\128\020\192\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\007\000\b\000\128\000\000\001\000\000\000\000\000\000\000\000\000\b\000\000\002\000\000\128\004\000\000\000\000\000\000\000\000\000 \000\000\000\000\002\000\016\000\000\000\000\000\000\000\000\000\128\000\000\000\000\b\000\000\000\000\000\000\000\000\000\002\017\000E\000\016 \t\006\000\004\136\001l\000\002\000\000\b\002\002\000\000\130\130\000\000\000\001\000\000\000\000\0001\016\004P\001\003\000\144p\000H\128\020\192\000 \000\132@\017@\004\b\002A\128\001\"\000S\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\024\000 \000\000\000\000\004\000\000\000\000\000\000\000\000\000`\000\128\000\000\000\000\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\128\000\000\000\000\000 \000\004\000\bD\001\020\000@\128$\024\000\018 \0050\000\b\001!\016\004P\001\002\000\144@\000H\128\020\192\000 \004\001\128\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\002\000\000\000\000\000\000\128\000\016\000!\016\004P\001\002\000\144`\000H\128\020\192\000 \004\132@\017@\004\b\002A\000\001\"\000S\000\000\128\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\b\000\000\000\000\000\002\000\000@\000\132@\017@\004\b\002A\128\001\"\000S\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\007\207\178 A_\141\160\000L\028\001\237\028X\n\r\t\252$Z\177\170\223\153\207@V\003\252\000\000x\224\001\144\128 @\001(&-\000:\001\144\000\000A\000@\000\004\000\000\000\000\001\000\000\000\000\000\000\136\017\002;\b\002,*7\226c\208\005\128\250\000\000\0068\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000|\251\"\004\021\248\218\000\004\193\192\030\209\197\128\160\208\159\194E\171\026\173\249\156\244\005`?\192\000\007\142\000\b\018\002\002\000\130\130\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\000\000 \000(\000@\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\002\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\003\128\0008\n\0008\184 \000\002\000\000\000\000\000\000\000\000\000@\000\000\128\000\000\000\000\000\000 \000\000\0008\000\003\128\160\003\139\130\000\000 \000\000\000\000\000!\016\004P\001\002 \144p0H\128\022\192 \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\bD\t\020\000@\128$\024\000\018 \0050\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132@\017@\004\b\002A\128\001\"\000S\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\bD\001\020\000@\136$\028\012\018 \005\176\b\b\000\000$\000\000\b\000\b\000\024\000\000\000 \000\000\000\000\000\144\000\000\000\000 \000`\000\000\000\128\000\000\000\000\002@\000\000\000\000\128\000\128\000\000\002\000\000\000\000\bD\001\020\000P\128$\028\000\018 \005\176\000\024\000\000$\000\000\000\000\b\000\b\000\000\000 \000\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\002\000\002\017\000E\000\016 \t\007\000\004\136\001L \002\016\000\b\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\128\000\132@\017@\004\b\002A\192\001\"\000S\000\000\128\002\017\000E\000\016 \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!\016\004P\001\002\000\144p\000H\128\020\192\000 \000\132@\017@\004\b\002A\128\001\"\000S\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000|\001\023\128\224\131\143\146\000\016 \005\000\000\b\000!\016\004P\001\002\000\016@\000@\000\020\192\000 \000\000\128\000\000 \000\000\000@\000\000\000\000\000\000\002\000\002\000\000\000\128\000\000\001\000\000\000\000\000\000\000\000\000\b\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\132@\017@\004\b A\128\001\000\000S\b\000\128\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\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\132@\017@\004\b A\128\001\000\000S\b\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\028\000 \002\000\000\000\004\000\000\000\000\000\000\000\000\000 \000\000\b\000\002\000\016\000\000\000\000\000\000\000\000\000\128\000\000\000\000\b\000@\000\000\000\000\000\000\000\000\002\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\bD\001\020\000@\128\004\024\000\016\000\005\176\000H\000\000 \b\b\000\002\n\b\000\000\000\004\000\000\000\000\000\196@\017@\004\012\000A\192\001\000\000S\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\024\000 \000\000\000\000\004\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\b\000\005\000\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!\016\004P\001\002\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\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\016\000\000 \b\b\000\002\n\b\000\000\000\004\000\000\000\000\000\196@\017@\004\012\000A\192\001\000\000S\000\000\128\018\017\000E\000\016 \001\004\000\004\000\001L\000\002\000@\024\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\001\000\000\002\000\128\128\000 \160\128\000\000\000@\000\000\000\000\012D\001\020\000@\192\004\028\000\016\000\0050\000\b\001!\016\004P\001\002\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\002\000\000\000\000\000\000\128\000\016\000\000 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132@\017@\004\b\000A\128\001\000\000S\b\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\002\002\000\000\130\130\000\000\000\001\000\000\000\000\0001\016\004P\001\003\000\016p\000@\000\020\192\000 \000\132@\017@\004\b\000A\128\001\000\000S\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\002\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\144\000\000 \000 \000`\000\000\000\128\000\000\000\000\002@\000\000\000\000\128\001\128\000\000\002\000\000\000\000\000\t\000\000\000\000\002\000\002\000\000\000\b\000\000\000\000!\016\004P\001B\000\016p\000@\000\020\192\000`\000\b@\000\000 \000\b\000`\000\000\000\000\000\000\000\000 \000\000\000\128\000 \001\128\000\000\000\000\000\000\000\000\128\000\000\000\000\000\128\006\000\000\000\000\000\000\000\000\002\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\128\000\000\000\000\000\000\000\000\016\000\001$\000\016\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\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\016\000\001$\000\016\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\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\b\000\002\000\b\000\162\002\000\000\000\000\000\000\000\000!\000\000\016\000\000(\016P\016\000\000\000@ \000\000\132\000\000@\000\000\160A\000@\000\000\001\000\128\000\000\014\000\000\224(\000\226\224\128\000\b\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\132\000\000@\000\000\128A\000@\000\000\001\000\128\000\000 \000\000\000\000@ \001\000\000\000\000\000\000\000\000\000\128\000\000\000\001\000\128\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 \000\000\000\000\000 \000\000\000\000\000\000\000\000\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\001\000\000\014\000\000\224(\000\226\224\128\000\b\000\000\000\000\000\b@\000\004\000\000\b\004\028\004\000\000\000\016\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\004\000\000\b\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\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\b\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\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\003\128\0008\n\0008\184 \000\002\000\000\000\000\000\002\016\000\001\000\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\000 \000\b\000 \002\136\024\000\000\000\000\000\000\000\000\000\128\000 \000\128\n \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\b\000\000\000\000\000\000\004\000\000\000\000\000\000\000 \000 \000\000\000\000\000\000\016\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\002\000\000\000 \000\000\000\b\000\002\000\b\000\162\002\000\000\000\000\000\000\000\000\000\224\000\014\002\128\014.\b\000\000\128\000\000\000\000\000\000\000\001\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\224\000\014\002\128\014.\b\000\000\128\000\000\000\000\000\000\000\001\000\000\000\000\000@\000\000\000\000\000 \000\000\000\000\004\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\132@\021@\004\b\130A\192A\"\000[\000\128\128\016\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\002\000\000\000\000\128\000 \000\128\n \000\000\000\000\000\000\000\002\017\000U\000\016\"\t\007\001\004\136\001l\002\002\000H@\000\004\000\000\b\004\028\004\000\000\000\016\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\128\0008\n\0008\184`\000\002\000\000\000\000\000\000\014\000\000\224(\000\226\224\128\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\000\000\000\128\000\000\000\000\224\000\014\002\128\014.\b\000\000\128\000\000\000\000\000\132\000\000@\000\000\128A\192\192\000\000\001\000\128\000\002\016\000\001\000\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 \000\000\000\000\000\000\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\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\004\000\000\b\004\024\004\000\000\000\016\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\016\000\001\000\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!\016\004P\001\002\000\144p\000H\128\020\192\000 \004\132@\017@\004\b\002A\000\001\"\000S\000\000\128\016 \000\000\000\000\000 \001\128\000\000\000\000\000\000\000\000\128\000\000\000\000\000\128\002\000\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\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\b\000\002\000\b\000\162\002\000\000\000\000\000\000\000\000!\016\004P\001\002\000\144p\000H\128\020\192\000 \004\132@\017@\004\b\002A\000\001\"\000S\000\000\128\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\002\000\000\000\000\000\002\000\024\000\000\000\000\000\000\000\000\b\000\000\000\000\000\b\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\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\128\0008\b\128*\184 \000\002\000\000\000\000\000\002\019\001U\000\0160!\007\000\004\136\001l\000\006\000@\024\000\003\000\000\002\139\130\000\000 \000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\001\128\0008\b\128*\184 \000\002\000\000\000\000\000\000\014\000\000\224(\000\226\224\128\000\b\000\000\000\000\020\000\000\000\016\000\000\000\000\004\000\000\000\000\000\002\000@\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\001\128\0008\b\128*\184 \000\002\000\000\000\000\000\000\006\000\000\192\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\014\002 \n\174\b\000\000\128\000\000\000\000\000\132\192U@\004\012\bA\192\001\"\000[\000\000\128\018\019\001U\000\0160!\007\000\004\b\001l\000\002\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000!\016\005P\001\002\000\016p\000@\000\022\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\bD\001\020\000@\128\004\024\000\016\000\0050\000\b\001!\016\004P\001\002\000\016@\000@\000\020\192\000 \004\b\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\128\002\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\001\000\000\006\000\000\224\"\000\170\224\128\000\b\000\000\000\000\000\bD\001\020\000@\128\004\024\000\016\000\0050\000\b\001!\016\004P\001\002\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\000!\016\004P\001\002\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\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\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\004P\001\002\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\002\000\128\128\128 \160\129\000\000\000@\000\000\000\000\000\b\002\002\000\000\130\130\004\000\000\001\000\000\000\000\000\000 \b\b\000\002\n\b\000\000\000\004\000\000\000\000\000\196@\017@\004\012\000A\192\001\000\000S\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\bD\001\020\000@\128\004\016\000\016\000\0050\000\b\001\000@\000\004\144\000J\000\016\002\000\000\000\000\000\000\128\001\000\000\018@\001(\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\bD\001\020\000@\128$\024\000\018 \005\176\b\024\001!\016\004P\001\002\000\144`\000H\128\022\192 \004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\017\000E\000\016 \t\006\000\004\136\001L\002\002\000HD\001\020\000@\128$\016\000\018 \0050\000\b\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\bD\001\020\000@\128\004\016\000\016\000\0050\000\b\001\000@\000\004\144\000J\000\016\002\000\000\000\000\000\000\128\001\000\000\018@\001(\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\000P\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\003\144\000<\n\0008\184(\000\002\000\128\016\000\004\000\014\000\004\224(\000\226\224\128\000\b\000\000\000\000\020\000\000\000\000\000\001\000\128\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\bM\001\020\000@\130$\026\000\018 \r0\b\b\001!\016\004P\001B\000\144p\000H\128\020\192 a\004\132@\017@\004\b\002A\192\001\"\000S\000\128\132\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\bD\001\020\000@\128$\024\000\018 \0050\b\bA\000$\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\bD\001\020\000@\128\004\024\000\016\000\0050\b\b\001!\016\004P\001\002\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\000!\016\004P\001\002\000\144p\000H\128\022\192 \004\000\144\000\004\000\000 \000(\000\000\000\128\016\000\004\000\002@\000\000\000\000\128\000\160\000\000\002\000@\000\016\000\000\000\000\000\001\000\128\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!\016\004P\001B\000\144p\000H\128\020\192 a\004\132@\017@\004\b\002A\192\001\"\000S\000\128\132\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\128\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\016\000\000\000\000\004\000\000\000\000\000\000\000\000\002\016\000\000\b\000\002\000\024\000\000\000\000\000\000\000\000\b\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\128\002\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\001\148\128(H\001(&+\000:\001\136\000\001A\002\014C\016\143\200,\242\152\180\248\249\006`\128\025,\176\b\000\002\000\b\002\162\002\000\000\000@\000\000\000\000!\000\000\016\000\000(\016P0\000\000\000@ \000\000\132\000\000@\000\000\160A\000\192\000\000\001\000\128\000\002\016\000\001\000\000\002\001\004\003\000\000\000\004\002\000\000\000\128\000\000\000\001\000\128\004\000\000\000\000\000\000\000 \000\000\000\000\000\004\002\000\016\000\000\000\000\000\000\000\000\000\000\000\000\000\016\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\128\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#\176\128\"\194\163~&=\000X\015\160\000\000c\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\128\000\000\000\b\236 \b\176\168\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\002\016\000\001\000\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\002\000\000\000\000\004\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\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\128\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\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\004\000\0008\000\003\128\160\003\139\130\000\000 \000\000\000\000\000!\000\000\016\000\000 \016p0\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\002;\b\002,*7\226c\208\005\128\250\000\000\0068\000\000\000\000\000\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\142\194\000\139\n\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\002\000\000\001\000\000\002\000\016\000\000\000\000\000\000\000\128\000\000\000\004\000\000\b\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\002\000\000\000\000\000\000\000\000\000\000\001\148\128(H\001(&+\000:\001\136\000\001A\000\015\000\000\224(\000\226\224\128\000\b\000\000\000\000\000\000\000\000\000\000\000\002\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\003\128\0008\n\0008\184 \000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000 \000\000\000\002;\b\002,*7\226c\208\005\128\250\000\000\0068\000\000\000\000\000\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\142\194\000\139\n\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\132\000\000@\000\000\128A\128\192\000\000\001\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000@\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\001\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\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\001\000\000\014\000\000\224(\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\002\000\000\000\000\000\000\000\000\000\000\001\148\128(H\001(&+\000:\001\136\000\001A\000\015\000\000\224(\000\226\224\128\000\b\000\000\000\000\000\000\000\000\000\000\000\002\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\003\128\0008\n\0008\184 \000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000 \000\000\000\002;\b\002,*7\226c\208\005\128\250\000\000\0068\000\000\000\000\000\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\142\194\000\139\n\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#\176\128\"\194\163~&}\000X\015\160\000\000c\128\142\194\000\139\n\141\248\152\244\001`>\128\000\001\142\b@\000\004\000\000\b\004\024\012\000\000\000\016\b\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\000\004\000\000\000\002\000\002\000\000\128\002\000\168\129\128\000\000\016\000\000\000\000\000\b\000\002\000\b\002\162\002\000\000\000@\000\000\000\000\000 \000\b\000 \n\136\b\000\000\001\000\000\000\000\000\003\144\130 f\0018&m\000:\001\128\000\000A\001\243\236\136\016W\227h\000\019\007\000{G\022\002\131@9\b\"\004 \019\130f\208\003\160\024\000\000\004\016\000\228 \136\016\128N\t\139@\014\128`\000\000\016@\003\144\128 B\0018&-\000:\001\128\000\000A\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\000\000\000\000\000\000 \000\000\000\000\000\000\016\000\000\000\000\000\000\000\128\000\128\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\b\000\000\000\128\000\000\000 \000\b\000 \n\136\b\000\000\001\000\000\000\000\000\003\128\0008\n\0008\184 \000\002\000\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\128\000\000\b\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\001\148\128(H\001(&k\000:\001\128\000\000A\000\006R\000\161 \004\160\152\172\000\232\006\000\000\001\004\000\025H\002\132\128R\130b\176\003\160\024\000\000\004\016\000 \000\b\000 \n\136\b\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\128\000\000\000\000\000\016\002\000\000\128\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!5%Z\131**\153\254\240N\128t\192 x\212\132\212\149j\012\168\170g\251\193:\001\211\000\129\227P\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\bD\001T\000@\136$\028\012\018 \0050\b\024\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\000\000\000\000\000\000\002\017\000U\000\016\"\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\000\132@\021@\004\b\130A\192\193\"\000S\000\129\128P\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\b\000\000\000\128\000\000\000 \000\b\000 \n\136\b\000\000\001\000\000\000\000\000\132@\021@\004\b\130A\192\193\"\000S\000\129\128P\014B\b\129\b\004\224\152\180\000\232\006\000\000\001\004\0009\b\002\004 \019\130b\208\003\160\024\000\000\004\016\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\002\000\000\016\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\000\001\128\0008\b\128*\184 \000\002\000\000\000\000\000\002\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\132\000\000@\000\000\128A\192\192\000\000\001\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\016\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\002\000\000\128\002\000\168\128\128\000\000\016\000\000\000\000\b@\000\004\000\000\b\004\028\012\000\000\000\016\b\000\004!\000\000\016\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\014\000\000\224(\000\226\225\128\000\b\000\000\000\000\000\0008\000\003\128\160\003\139\130\000\000 \000\000\000\000\000!\000\000\016\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\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\132\000\000@\000\000\128A\128\192\000\000\001\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\016\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\002\017\000E\000\016 \t\007\000\004\136\001L\000\002\000@\024\000\003\128\136\002\171\130\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\128\000 \000\128* \000\000\004\000\000\000\000\002\017\000E\000\016 \t\007\000\004\136\001L\000\002\000@\025H\002\132\128\018\130b\176\003\160\024\128\000\020\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132@\017@\004\b\002A\128\001\"\000S\000\000\128\018\017\000E\000\016 \t\004\000\004\136\001L\000\002\000@\128\000\000\000\000\000\128\006\000\000\000\000\000\000\000\000\002\000\000\000\000\000\002\000\b\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\025H\002\132\128\018\130b\176\003\160\024\128\000\020\016!\016\004P\001\002\000\144`\000H\128\020\192\000 \004\132@\017@\004\b\002A\000\001\"\000S\000\000\128\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\132@\017@\004\b\002A\000\001\000\000S\000\000\128\000\014B\b\129\136\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\000\000\132@\017@\004\b\002A\000\001\"\000S\000\000\128\018\017\000E\000\016 \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 @\b\b\000\b\b\016\000\000\004\000\000\000\000\000\000\129\000 \000\000 @\000\000\016\000\000\000\000\000\002\004\000\128\000\000\128\128\000\000\000@\000\000\000\000\bD\001\020\000@\130$\028\000\018 \0050\000\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132@\017@\004\b\002A\000\001\"\000S\000\000\128\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\017\000E\000\016 \t\006\000\004\000\001L\000\002\000\bD\001\020\000@\128$\016\000\016\000\0050\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\bD\001\020\000@\128$\016\000\026 \0050\000\b\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\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!\016\004P\001\002\000\144`\000@\000\020\192\000 \000\132@\017@\004\b\002A\000\001\000\000S\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\016\000\000\000\000\000\000\000\000\000\000\000\000\000$\000\001\000\000\b\000\b\000\000\000 \000\000\001\000\000\144\000\000\000\000 \000 \000\000\000\128\000\000\004\000\002@\000\000\000\000\128\000\128\000\000\002\000\000\000\000\bD\001\020\000P\128$\028\000\018 \005\176\000\024@\000$\000\000\000\000\b\000\b\000\000\000 \000\000\000\000\132@\017@\004\b\002A\192\001\"\000S\000\000\132\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\bD\001\020\000@\128$\024\000\018 \0050\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\bD\001\020\000P\128$\028\000\018 \005\176\000\024@\000$\000\000\000\000\b\000\b\000\000\000 \000\000\000\000\132@\017@\004\b\002A\192\001\"\000S\000\000\132\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\128\000\000\000\000\000\000\000\000\000!\016\004PA\002\000\144`\000H\128\022\192 `\004\132@\017@\004\b\002A\128\001\"\000[\000\128\128\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\bD\001\020\000@\128$\024\000\018 \0050\b\b\001\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\002@\000\016\000\000\128\000\128\000\000\002\000\000\000\016\000\t\000\000\000\000\002\000\002\000\000\000\b\000\000\000@!\016\004P\001\002\000\144`\000H\128\020\192\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\196@\021@\004\012\"A\192\001\"\000[\000\b\128\019\000\000\016\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\004\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\0008\000\003\128\160\003\139\130\000\000 \000\000\000\000\000\000\000\001\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\016\000\001\000\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\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\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\025\b\002\004\000\018\130b\208\003\160\025\000\000\004P\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\212J]\193\244\015\130\193\192\255\162\194[\197\191\156<\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\016\000\000 \000\000\000\000\000\000\b\000\000\000\014\000\000\224(\000\226\224\128\000\b\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\001\000\000\000\000\000\000\000\000\000\000\000\003\128\0008\n\0008\184 \000\002\000\000\000\000\000\003\017\000w\000\0162\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\012\000\000\n.\b\000\000\128\000\000\000\000\000\196@\029\192\004\012\130A\192\193\"@[\000\168\132X\002\000 \000\000\000 \000\000\000\137\000\000\000\004\000\0008\000\003\128\160\003\139\130\000\000 \000\000\000\000\000\000\000\002\000\000\000\000\000\016\000\000\016\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000\000@\000\000\000\000\000\006\000\000\192\000\000\162\225\128\000\t\000\000@\000\000\000\024\000\003\000\000\002\139\130\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\002\000 \000\000\000 \000\000\000\t\000\000\000\000\000\000\024\000\003\000\000\002\139\130\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\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\004\000\000\b\000\000\000\000\000\000\002\000\000\000\003\128\0008\n\0008\184 \000\002\000\000\000\000\000\000\000\000\016\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\224\000\014\002\128\014.\b\000\000\128\000\000\000\000\000\196@\029\192\004\012\130A\192\193\"@[\000\168\132X\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\024\000\003\000\000\002\139\130\000\000 \000\000\000\000\0001\016\007p\001\003 \144p0H\144\022\192*!\022\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\014\000\000\224(\000\226\224\128\000\b\000\000\000\000\000\012D\001\220\000@\200$\028\012\018$\005\176\n\136E\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\128\0000\000\000(\184 \000\002\000\000\000\000\000\003\017\000w\000\0162\t\007\003\004\137\001l\002\162\017`\024\000\003\000\000\002\139\130\000\000 \000\000\000\000\000\000\224\000\014\002\130\014.\b\000\000\128\000\000\000\000\000\000\000\000\016\000\000 \000\000\000\000\000\000\b\000\000\000\014\000\000\224(\000\226\224\128\000\b\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\001\000\000\000\000\000\000\000\000\000\000\000\003\128\0008\n\0008\184 \000\002\000\000\000\000\000\003\017\000w\000\0162\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\012\000\000\n.\b\000\000\128\000\000\000\000\000\196@\029\192\004\012\130A\192\193\"@[\000\168\132X\000\000\000\000\000\016\000\000\000\000\000\000\000\000\000\000\0008\000\003\128\160\003\139\130\000\000 \000\000\000\000\0001\016\007p\001\003 \144p0H\144\022\192*!\022\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\006\000\000\192\000\000\162\224\128\000\b\000\000\000\000\000\012D\001\220\000@\200$\028\012\018$\005\176\n\136E\128\000\000\000\000\004\002\000\000\000\000\b\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!\016\004P\001\002\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\0009\000\003\192\160\003\139\130\128\000 \b\001\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132@\017@\004\b\000A\128\001\000\000S\000\128\128\016\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\001\000\000\b\000\b\000\000\000 \000\000\001\000\000\144\000\000\000\000 \000 \000\000\000\128\000\000\004\002\017\000E\000\016 \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\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\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\128\000\000\000\000\000\000\000\000\000!\016\004PA\002\000\016`\000@\000\022\192!`\004\132@\017@\004\b\000A\128\001\000\000[\000\132\128\016\014@\000\240(\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!\016\004P\001\002\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\004\000\000\000\000\000\000\000\000\000\000\000\000\000\t\000\000@\000\002\000\002\000\000\000\b\000\000\000@\000$\000\000\000\000\b\000\b\000\000\000 \000\000\001\000\132@\017@\004\b\000A\128\001\000\000S\000\000\132\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\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\001\000\000\016\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!\016\004P\001\002\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\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\b\236 \b\176\168\223\137\143@\022\003\232\000\000\024\224\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\142\194\000\139\n\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\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\001\016\004\016\001\002\000\016@\000@\000\020\128\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\n\000\b\000\000\000 \000\000\000\000\128\000D\003\240\011\004\128\000>\004@\b \006\n,\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\128\000\000\000\000\000\000 \000\000\000\b\000\000\000\000\002\128\000\000\000\000\000\000\000\000\000 \000\016\000\252\002\193 \000\015\129\016\002\b\001\130\139\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\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\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\002@\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\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\014\000\000\224(\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\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\142\194\000\139\n\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\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\130\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\130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\004\000\128\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\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\002\000\128\128\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\016\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\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\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\006B\000\129\000\004\160\152\180\000\232\006@\000\001\004\000\000\000\000\000\000\000\000\004\000\000\000\000 \002 D\000\000\000\000\000\000\000\000\000\000\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\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\b\000\000\000\000\002\128\000\000\000\000\000\000\000\000\000\t\252$\024\177\170\223\153\207@^\131\252\128\0008\224\000\128\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\019BA\000\016 \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\000\001\016\004\016\001\002\000\144@\000H\128\020\130\000 \000\000\128\000\000\000\000\b\000\000\000\000\000\000\000\000\000\000\019BA\000\016 \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\000\001\016\004\016\001\002\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\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\004@\016@\004\b\002A\000\001\000\000P\000\000\128\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\b\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\000\000\000\000\000\000\000\000\000\000\000\000\000\t\252$\024\177\170\223\153\207@^\131\252\128\0008\224'\240\144b\198\171~g=\001z\015\242\000\000\227\128\017\000A\000\016 \t\004\000\004\136\001H\000\002\000\000D\001\004\000@\128$\016\000\018 \005 \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\017\000A\000\016 \t\006\000\004\136\001H\000\002\000\000D\001\004\000@\128$\016\000\018 \005 \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\000D\001\004\000@\128$\024\000\018 \005 \000\b\000\001\016\004\016\001\002\000\144@\000H\128\020\128\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") 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\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")) + ((16, "I\"U\128R\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\023\000R\130\000\000\000\000\021\252R\130I\"\024\246\021\156\001\\\135Z\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001r\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\025\158\002\164\001P\000\000\002(\000\170\000\000\002\164\002\254\003p\000\000\002>\004N\006<\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\132\000\000\000\000\000\000\004\132\185B\128d\129\006\129\168\000\000\000\000\000\000\000\000\000\000\000\000\006F\000\000\000\000_\026\005\140\005*\000\000\000\000\186\006^\166\006F\006J\000\000\000\000\006FP\168\006F\007N\\0T\254\021\252G|\131\138\021\252Y^U\128\021\252Z:\000\000\021\006\000\000Z:\023\014\000\000\029\182\000\000\003P\000\000\000\000\003\184\000,\001\226\006F\000\000\021\252\000\000\006F\000,\002T\006F\000\000\000\000\005x\000\000\029\182\000\000\000\000\003\202\021\150\000\000\006F\021\150\000\000\tj\170f\006F\000\000\000\000\173\210\173\150\148\142\000\000\006F\000\000\177\162\181\178\000\000\006F^J\006F\007\222\000\000_\252\1324\181\178R\246\186X\006F^J\181\178R\130I\"\000\000\000\000\000\000U\128\021\252\000\000\000\000\017\204U\028\021\252`>]\030\000\000\000q\000\000\000\000\000\000\000\000\002\138\000\000\000\000\000\000\000\000K\134\022@\022\212\003\204\005\226\000\000\000\000\007\128\000\000G|\007\248\tj\021\252\027&\021\252I\"U\128\021\252\\@Z:\n\020\170f\173\210\000\000\178\"R\130I\"I\"\000\000\000\000\000\000Q\148L\006\021\252\027&\030\144\021\252\000\000\000\000\023\158\004\020\nv\000\000\t6\011 \000\000\000\000\000\000\000\000\000\000\000\000\000\000U\128\021\252\000\000G\030\161\208Y^\000\000\001\012\000\000]\030\149.\149.\161\030\000\000\nv\000\000\003Z\000\000\000\000$x\134\224\182\"\000\000\134\224\182\"\000\000\134\224\134\224\007b\000\000\005.\bt\000\000\005\232\000\000\n\224\000\000\000\000\011\130\000\000\000\000\000\000\134\224\006F\000\000a\006\000\000gv\134\224h`\000\000f\140Z\188\000\000\000\000c\202\007b\000\000a\242\000\000\189\134\181\178\000\000\t\000\007b\007b\000\000b\222\000\000\134\224\\v\181\178\002\196\006F\000\000\n\246\006F\nf\006F\012\220\000\000\134\224\000\000\011\176\012\216\134\224iJ\000\000\\vj4\134\224k\030\000\000\\vl\bd\182Z\188e\162\000\000~P\000\018\006F\000\000\006\220\012\194\006F\014H\000\000\006F\r\222\006F\014\228\000\000\005\006\000\000\134\224\007\030\015\004\007\226\004\006\134\224\012t\015$\134\224l\242\000\000\\vm\220\016t\134\224n\198\000\000\\vo\176d\016\181\178\006\030\134\224\012\188\016z\134\224p\154\000\000\\vq\132\017\b\134\224rn\000\000\\vsX\\vtB\000\000\000\000\001\148\000\000\134\224\000\000\001\020\186\170\000\000\134\224\006P\134\224GJ\000\000Lr\000\000\n\128\001\168\000\000\016|\134\224\003\216\000\000\011\020\000\000\014\176\000\000\000\000\004\182\000\000\000\000\000\000\029\184\011\190]\030U\128\021\252]\030\000\000\007b\000\000\000\000\000\000\007b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000T\136 (\000q\002\138\000\000\000\000\000\000\002\028\026\146\149.\000\000\000\000\151l\021\252]\030\000\000\000\000\139H]\030\146\146\162l\000\000\157\208\000\000]\030\000\000\000\000^\030Qx\000b\000b\000\000\017\192]\030\000\000\000\000\000\000\027\222\017\198\000\000G\018\000\000\000\000\163\014\000\000\178\230\134\224\000\000\b\140\000\000\000\000\163\176\000\000\186\210\011\214\000\000\000\000\000\000\000\000\017\216\000\000\028\192\000\000\000\000\162l\000\000\005`\000\000\000\000H\214\136\b\000\000\000\000\025\156\001F\031\172\007\142\000\000\000\000\000\000\000\000\005v\000\000\000\000\000\000\000:\000\000\000\000~\250\003\014\027\216\023\160\185B\tB\134\224\015\236\016\248\018\006\018X\000\000\018l\000\000\000\000\0046\027\216\018\006\b\250\000\000\127\194T\194L\006\021\252\027&\005\156\000\019\023\134\000\000\017\248G|G|\005\156\000\019\njG|\000\000\153\224\006>Z:\nv\006\184\187\024\000\000\134\224\149\222\134\224\136\184\150h\134\224\007\234\134\224\150\242\000\000\006\238\r\154\b\184G|\154\146\000\000\t\204\r\170\131\140\000\000\000\000\000\000\000\000G|\154\240G|\155\162\003|\007b\137B\005z\007b\137\204\000\000\156\000\006>\000\000\000\000\000\000\bT\000\000\000\000\004\144\000\000\012b\027&\000\000\132\\N8\000\000\023N\000\000\000\000G|\t`\000\000\000\000\000\000\000\000\130X\000\000\n\216\000\000I\"ZT\011\212\001\186\000\000\024\002[JU\128\021\252I\232U\128\021\252\017\204\017\204\000\000\000\000\000\000\000\000\000\000\000\000\002\024\025\014H \000\000VFW\012L\006\021\252\027&\0060RD\000\000\005\156\000\000W\210X\152\164R\029\212\134\224\t\014\000\000U\128\021\252\000\000\151l\021\252\161\030]\030G\254\000\000U\128\021\252\156\164\005B\000\000\136\b\026\176\185B\nN\134\224\018\004\019\016]\030\b\250\018\218\000\000\b\250\019r\000\000\000\000\000\000K\134\b\176\019R\019\002\006F\020\006\000\000\020\218\006F\0200\138v\000\000\151l\021\252]\030\026P\000\000\000\000U\128\021\252\017\204\024\002\020\030\000\000\017\204\003$\026\n\000\000\000\000\017\204\0124\020*\000p\184@\000\000\029J\187\194\000\000\023F\134\224 n\020p\000\000\000\000\020@\000\000\017\204\0040\020F\000\000\028\202\000\000\011\252\000\000\000\000\0282\000\000\018\216\025\014\000\000\000\000\000\000\000\000\t\150\000\000\000\000\029>\000\000\030J\000\000\031V\000\000\019\228\026\026\000\000\000\000\000\000R\130\000\000\000\000\000\000\000\000 b\000\000!n\000\000\"z\000\000#\134\000\000$\146\000\000%\158\000\000&\170\000\000'\182\000\000(\194\000\000)\206\000\000*\218\000\000+\230\000\000,\242\000\000-\254\000\000/\n\000\0000\022\000\0001\"\000\0002.\000\0003:\000\0004F\021\252\136\bP|L\134\012\224\026@\006F\020\186\133\000\174rK\134K\190\187\228\0120\134\224\014*\000\000]\030\027d\000\000\rn\006F\000\000\020\194\006F\020\014\006F\020\242\000\000\r<\134\224\015~\000\000\000\000\000\000\000\000\020^\000\000\000\000\000\000\000\000\133\000\000\000\000\000\000\000\021\028\133\000\000\000\003\208\000\000\000\000L\190\187\228\rr\134\224\015\152\000\000]\030\0214\000\000\185B\003\208\020\144\134\224\015V\000\000\000\000\014~\134\224\016\172\000\000\000\000\020\202\000\000\000\000\000\000\030\224\134\224\017R\000\000\000\000\029t\000\000\000\000\164\244\000\000\030\128\165\150\000\000 \248\1668\000\000!\164\012\226\000\000\000\000\000\000\000\000\"\004]\030\"\176\001\\\133\162\185B\015T\134\224\017V\000\000\000\000\020\210\000\000\000\000\000\000\000\000\166\226\166\226\000\000\000\000\000\0005R\000\000\r\192\000\000\000\000\000\000\b\154\000\000\000\000\014&\029.\000\000\012\180\000\000\000\000\134\020S\134\000\000\000\000\0152\000\000\000\000\000\000\016\246\000\000\000\000\000\000\017\204\005<\029\250\000\000\rf\000\000\006H\000\0006^\000\000\015\188\000\000\007T\000\0007j\000\000\018\246\000\000\b`\000\0008v\031\238\000\000\r\200\tl\000\0009\130\000\000\016>\nx\000\000:\142\000\000\019\014\011\132\000\000;\154\0152\030L\000\000\015 \012\144\000\000<\166\000\000\016\182\r\156\000\000=\178\000\000\020\002\014\168\000\000>\190\015\180\000\000?\202\016\192\020\240\000\000\000\000\000\000\016\236\000\000\000\000\017J\000\000\000\000\020\026\000\000\000\000\012H\000\000\000\000\000\000\020\202\000\000\020\218\000\000\000\000M\134\017\210\027L\006F\021\168\138vZ\188\026(\000\000\000\000\138v\000\000\000\000\021\198\138v\000\000\000\000\022\016\138v\000\000\138v\000\000\021\232\000\000\000\000\000\000\000\000\000\000\000\000@\214]\030\000\000\000\000\022.\000\000A\226\000\000B\238\000\000#\016\000\000\000\000\b8\000\000\000\000]\030\000\000\000\000\167\138\017\248\000\000\000\000ZT\000\000\b0\000\000\000\000\134\020\000\000\151\222\021\252\027@\021\252]\030]\030\026P\000\000\138\232\025D\000\000\139h\000\000\134\020\000\000\1406\000\000\000\000\000\000\n\212\000\000\000\000\000\000I\232\000\000\rZ\000\000\000\000\134\020\n\220\000\000[J\000\000\018V\000\000\000\000\134\020\007\\\000\000\011\212\012\164\000\000\000\000\024\002H\160\nv\000\000F^\000\000\012\202\020\030\0252\000\000\000\000\021*\000\000\000\000\002\022\0282_\174\000\000\027&\000\000\t\190\000\000\000\000\021z\000\000\000\000\138\232\tp\0206\000\000\000\000\014\212\000\000\000\000\018z\000\000\000\000\134\020\007\240\000\000\000\000\014f\000\000\000\000\134\020\015\012\000\000\000\000\021\252\027&\r\252\000\000\000\000\022\212\003\204\005\226\000\019\027&\171vG|\031\028\027&\172\000\021\182\000\000\000\000\000\019\000\000\024\160\021\252\025\166\000\000\006p\022f\000\000\022h\027,Z\188\000=\000\000\000\000\022D\021\222\185B\015\138\134\224\022\168\0078\011\128\021\156\000\000\031z\022\166\000\000\007v\000\000\000\000Z\188\140\218\022\184h8Z\188\141\154\142Z\000\000\152\130f\190\188B\006FP\168\016`Z\188\022\132Z\188\157\018\143\026\022\152Z\188\157\156\143\218\006\138\022T\000\000\000\000\000\000\021\252\152\176\000\000\136\b\166\226\000\000\000\000\022\254\000\000\b\250\023\006\000\000\000\000\000\000C\250\000\000\000\000\rl\000\000\000\000\134\020\011\020\000\000\000\000L\006\021\252\027&\029d\000\000]\254\000\000\b\192\000\000\004\\\000\000\000\000\023p\000\000\023\158\161\030E\006\000\000\158B\000\000\000\000^\006\000\000\t\204\000\000c4\000\000\001\000\000\000G|\r\252\000\000\166\226\000\000\021\252\027&\166\226\000\000\023\204\023\158\004\020\006F\179PG|\174\202\166\164\000\000\021\252\r\218\005\226\000\019\166\226\182\164\003\204\005\226\000\019\166\226\182\164\000\000\000\000\000\019\166\164\000\000R\130I\"]\030\026P\000\000\000\000R\130I\"bH\000\000\024\246\021\156\001\\\022\222\185B\016\150\134\224\168*\023\n\023\180\179\218\000\000\166\164\000\000\168\180\024\160\021\252\025\166\172\138!r\n\160\175.\005z\022\234\021\252\166\164\000\000\021\252\166\164\000\000\134\224\190F\028\018\b\242\001\000\007b\178\"\000\000\001\000\007b\178\"\000\000\026@\023\158\004\020\006F\185jG|\1808\000\000\021\252\016\254\023\130\0128\000\000\178\"\000\000\005\226\022\246G|\1808\189Z\003\204\005\226\022\250G|\1808\189Z\000\000\000\000\004\030\000\000\166\164\000\000G|\182\218\166\164\000\000\004\030\000\000\024\160\021\252\025\166\169\176\029\030\029\030\021\150\000\172\000\000\000a\029\182\000\000\014\016\000\000\029\182\000\000\023\130\023$N\002\021\252aH\134\224\015\168\000\000W\132\021\156\004\158\016\000\000\000\016v\000\000\023\142\023(\134\224\132\188\000\000\021\252\001\230\018\148\000\000\017.\000\000\023\180\0238\185BV\190\000\000\021\252N\002\023\238\022\160\001\000\000\000\r\216N\002\134\224\014\142\007b\000\000\134\224\001\162\014\136\000\000\000\000\158\232\000\000\000\000\015\240N\002\159r\132\188\000\000\021\252\134\224\018\196\134\224L\214V\190\000\000\n\128\000\000\000\000V\190\000\000\000\000W\132\000\000\166\226\183d\021\150\000\172\000a\023\210\023\136N\002\166\226\183d\000\000\000\000\021\150\000\172\000a\023\236\023j\190\186_\236Z\188\024\030\190\186\134\224\030\170\024 \190\186Z\188\0242\190\186\1602\169t\000\000\180\154\000\000\000\000\166\226\189\144\021\150\000\172\000a\024<\023\216\190\186\166\226\189\144\000\000\000\000\000\000\190F\000\000\000\000\000\000\000\000\000\000\000\000\000\000\166\164\000\000T\254\021\252G|\1808\000\000\183\154\021\252Z:\024d\170f\173\210\000\000\178\"\183\154\000\000\000\000\000\000\190\016\021\252Z:\024p\018@\023\244\173\150\184@\000=\024\210\000\000\000\000\160\152\169\176\021\252\000\000\175\146\025\166\000\000\000\000\178\"\190\016\000\000\000\000\000\000\172\232\028\208\025\166\000=\024\230\000\000\000\000\000\000\169\176\021\252\000\000\000=\024\234\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\017V\029\030\021\150\000\172\000a\024\192\144\bK\134[\176\021\252`>Y\244\021\156\017\176\016\"\000\000\024\222\000p\000\000\000\000\024\128\000\000\000\000~\250\000\000\004\242\0174\000\000\018:\000\000\024\226\024h\134\224ev\024\244\tZ\000\000\000\000\024\156\000\000\000\000\022\132\012t\019(\000\000\025\020\144\200\188\176\003\208\024\170\134\224\019 \000\000\000\000\024\208\000\000\000\000\000\000~\250\000\000\b.\019\160\000\000\018x\000\000\025H\024\198\185B\000\000\025Z\145j\188\250\003\208\024\250\134\224\019\208\000\000\000\000\025\016\000\000\000\000\000\000\021\252\000\000~\250\000\000\022B\021\252[\176[\176\131\030R\130\021\252\152\176\136\b\006\030\000\000\022\184\001\000\000\000\018L[\176\134\224\017\172\nv\000\000\021\252\144\b\144\b[\176\018\174[\176\000\000N\136O\130\000\000\145\194\000\000\000\000\146L\000\000\000\000\146\214\000\000\018\162[\176\147`\152\176\136\b\006\030\000\000\003P\000\000\000\000\190\186\020\016\000\000\000\000K\214\025\130\000\000~\250\000\000[\176K\214~\250\000\000\021\252\134\224~\250\000\000\017\018\000\000\000\000~\250\000\000\000\000Y\244\000\000\1782\190\186\025([\176\178\242\144\b\000\000\166\226\184\152\021\150\000\172\000a\025\152\144\b\166\226\184\152\000\000\000\000\000\000\130vU\128\000\000\000\000\000\000\000\000\000\000\000\000\180\220\166\164\000\000L\006\021\252\027&\166\226\000\000\183\154\000\000\000\000\000\000\000\000\166\164\130v\000\000\000\000\000\000\180\220\025\224\000\000\026\006\000\000\166\164\130v\000\000\000\000\026\012\000\000\000\000\026\022\031\244\031Z\025\166\170\002!r\021\252\000\000\166\164\000\000\000\000\000\000\000\000\000\000\000\000\000\000\170\204!r\021\252\000\000\020^\170f\173\210\000\000\178\"\000\000\026$\031\244\031Z\166\164\000\000\019\142\000\000\000\000\153\130\nl\000\000\000\000 \160\000\000\134\224\020r\000\000Y\244\019\236\000\000\000\000\026f\161\030\000\000F\018\000\000\026B\000\000\017l\134\224\020\228\026:\134\224u,\000\000\\vv\022S\024\185B\021\146\015\184\021\252\\\242\000\000\000\000\025\028gN\000\000\000\000\025\244\000\000\018x\134\224\021\156\026b\134\224w\000\000\000\\vw\234\026f\134\224x\212\000\000\\vy\190h\166\181\178\018\174\134\224\024\144\026n\134\224z\168\000\000\\v{\146\026t\134\224||\000\000\\v}f\000=\026\160\000\000\000\000\176\028\000\000\000\000\173\150\000\000\178\"\000\000\026\154\031\244 \250\166\226\000\000\000\000\000\000\000\000\025\030\170f\181\134\173\150\000\000\178\"\000\000\026\160\031\244 \250\166\226\000\000\019\242\000\000\000\000\014\156\000\000\166\164\000\000\026\182\000\000\000\000\026\030\000\000\026B\000\000\026^\000\000\000\000S\134\026n\000\000\000\000\"\006\135Z\027\022\000\000\000\000\000\000\n\202\020\238\147\218\0272\000\000\000\000\000\000\000\000\000\000\000\000\026\146\000\000!r\000\000\026\148\000\000\134\224\000\000\019,\000\000\000\000\026\150\000\000\000\000\007b\000\000\000\n\000\000\000\000\000\000\011\130\000\000\027&\000\000\0060\000\000G|\000\000\004\230\000\000\r\154\000\000\026\166\000\000]\030\025D\000\000\000\000\024T\026\168\000\000\000\000\026\164\025\012I\232\006F\176\156\000\000\000\000\000\000\000\000\000\000T(\006F\177\028\000\000\000\000\000\000\000\000\000\000\184h\000\000\000\000\027b\000\000c\028\000\000\003h\027f\000\000\027j\000\000J\174J\174b0b0\000\000\000\000aDb0\000\000\000\000\000\000aDb0\026\212\000\000\026\214\000\000"), (16, "\nU\nU\000\006\nU\003I\nU\003b\003f\003j\nU\003n\003\014\nU\0206\nU\003\154\003z\nU\023\218\nU\nU\nU\006\133\nU\nU\nU\001\238\003\158\003\162\t&\003~\nU\0042\0046\r*\nU\006\"\nU\004V\003\166\003\130\t\154\004Z\004\233\nU\nU\004\134\004\138\nU\004\142\004\154\004\166\004\170\004\178\t~\005\n\nU\nU\003Z\006*\020:\004\162\n\218\nU\nU\nU\n\222\n\226\n\238\011\002\006\181\007\138\nU\nU\nU\nU\nU\nU\nU\nU\nU\011~\nU\007\150\007\154\0079\nU\000\242\nU\nU\023\210\019\222\011\138\011\162\012&\007\166\007\170\nU\012:\nU\nU\bF\nU\nU\nU\nU\0079!c\017\202\nU\019\230\nU\nU\005\026\nU\nU\nU\nU\nU\nU\nU\007\174\n\246\nU\nU\nU\011\014\005:\012>\t\198\nU\nU\nU\nU\015A\015A\004\233\015A\015u\015A\001z\004\233\015A\015A\t*\015A\015A\015A\015A\021\190\015A\015A\015u\015A\015A\015A\027B\015A\015A\015A\015A\004\233\015A\005Q\015A\015A\015A\015A\015A\015A\015A\015A\012z\nB\015A\012\134\015A\007\014\015A\015A\015A\015A\015A\b\250\015A\001.\015A\005Q\015A\004\174\015A\015A\015A\000\242\001\186\015A\015A\015A\015A\015A\015A\015A\015A\000\242\015A\015A\015A\015A\015A\015A\015A\015A\015A\015A\015A\001\190\015A\015A\015A\015A\015A\007\217\015A\015A\001\006\006\254\001\194\004\233\015A\015A\015A\015A\t\221\015A\015A\007:\015A\015A\015A\015A\015A\007\217\015A\015A\021\194\015A\015A\024J\015A\015A\015A\015A\015A\015A\015A\015A\015A\015A\015A\015A\015A\015A\014\233\004\233\015A\015A\015A\015A\001\237\001\237\001\237\001\237\024R\001\237\000\242\001n\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\t!\001\237\001v\001\237\001\237\001\237\001\237\001\237\001\237\001\237\001\237\001\237\001j\001\237\007\217\001\237\003\193\001\237\001\237\001\237\001\237\001\237\001\237\001\237\014\229\001\237\n\234\001\237\t\221\001\237\001\237\001\237\007\002\001\237\001\237\001\237\001\237\001\237\001\237\001\237\001\237\001\237\n\025\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\014\233\001\237\001\237\001j\003\193\002\154\003\193\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\011.\001\237\007\238\001\237\001\237\005\178\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\003\174\001\237\001\237\001\237\001\237\001\237\011\185\011\185\005\186\011\185\001\134\011\185\003\178\003\182\011\185\011\185\014\229\011\185\011\185\011\185\011\185\002\182\011\185\011\185\003\186\011\185\011\185\011\185\029\n\011\185\011\185\011\185\011\185\004\210\011\185\015\005\011\185\011\185\011\185\011\185\011\185\011\185\011\185\011\185\007A\t6\011\185\tf\011\185\029\014\011\185\011\185\011\185\011\185\011\185\015\005\011\185\004\214\011\185\005\001\011\185\002\134\011\185\011\185\011\185\007A\005\210\011\185\011\185\011\185\011\185\011\185\011\185\011\185\011\185\002\138\011\185\011\185\011\185\011\185\011\185\011\185\011\185\011\185\011\185\011\185\011\185\002\146\011\185\011\185\011\185\011\185\011\185\000\242\011\185\011\185\002\218\004\233\004\233\001\138\011\185\011\185\011\185\011\185\004\"\011\185\011\185\002\170\011\185\011\185\011\185\011\185\012^\006\213\012\190\011\185\002\226\011\185\011\185\007J\011\185\011\185\011\185\011\185\011\185\011\185\011\185\011\185\011\185\011\185\011\185\011\185\011\185\011\185\004\233\011\185\011\185\011\185\011\185\011\185\004\r\004\r\011\254\004\r\014\158\004\r\005\178\029\018\004\r\004\r\nN\004\r\004\r\004\r\004\r\000\242\004\r\004\r\nV\004\r\004\r\004\r\021v\004\r\004\r\004\r\004\r\nZ\004\r\005\186\004\r\004\r\004\r\004\r\004\r\004\r\004\r\004\r\004\233\001\150\004\r\t\154\004\r\021z\004\r\004\r\004\r\004\r\004\r\t\198\004\r\000\242\004\r\tn\004\r\021\030\004\r\004\r\004\r\024\030\006\213\004\r\004\r\004\r\004\r\004\r\004\r\004\r\004\r\n\138\004\r\004\r\004\r\004\r\004\r\004\r\004\r\004\r\004\r\004\r\004\r\007\002\012N\004\r\004\r\012V\012\182\006n\004\r\004\r\007f\023\142\t\198\nB\004\r\004\r\004\r\004\r\024&\004\r\004\r\027b\004\r\004\r\004\r\004\r\012^\006\145\012\190\004\r\023\154\004\r\004\r\000\242\004\r\004\r\004\r\004\r\004\r\004\r\004\r\004\r\004\r\004\r\004\r\004\r\004\r\004\r\006V\004\r\004\r\004\r\004\r\004\r\003\253\003\253\nB\003\253\012z\003\253\027j\012\134\003\253\003\253\011\178\003\253\003\253\003\253\003\253\006}\003\253\003\253\b\218\003\253\003\253\003\253\000\242\003\253\003\253\003\253\003\253\001\202\003\253\t\022\003\253\003\253\003\253\003\253\003\253\003\253\003\253\003\253\000\242\004r\003\253\b\222\003\253\005\n\003\253\003\253\003\253\003\253\003\253\t\198\003\253\002\198\003\253\011\182\003\253\011\238\003\253\003\253\003\253!\147\005:\003\253\003\253\003\253\003\253\003\253\003\253\003\253\003\253\011^\003\253\003\253\003\253\003\253\003\253\003\253\003\253\003\253\003\253\003\253\003\253\022\206\012N\003\253\003\253\012V\012\182\006Z\003\253\003\253\003\210\003\214\002\006\nB\003\253\003\253\003\253\003\253\004\233\003\253\003\253\005&\003\253\003\253\003\253\003\253\012^\005\022\012\190\003\253\002\n\003\253\003\253\000\242\003\253\003\253\003\253\003\253\003\253\003\253\003\253\003\253\003\253\003\253\003\253\003\253\003\253\003\253\007I\003\253\003\253\003\253\003\253\003\253\011!\011!\005\n\011!\t\202\011!\005\178\001\246\011!\011!\002\202\011!\011!\011!\011!\007I\011!\011!\t\026\011!\011!\011!\002\"\011!\011!\011!\011!\004\233\011!\005\186\011!\011!\011!\011!\011!\011!\011!\011!\n\158\n\006\011!\003\"\011!\004\"\011!\011!\011!\011!\011!\001\154\011!\001\250\011!\000\242\011!\016>\011!\011!\011!\005\001\005\026\011!\011!\011!\011!\011!\011!\011!\011!\000\242\011!\011!\011!\011!\011!\011!\011!\011!\011!\011!\011!\006.\011!\011!\011!\011!\011!\006\178\011!\011!!\131\003j\n\n\004\233\011!\011!\011!\011!\000\242\011!\011!\006>\011!\011!\011!\011!\011!\011R\011!\011!\005\001\011!\011!\004\233\011!\011!\011!\011!\011!\011!\011!\011!\011!\011!\011!\011!\011!\011!\n\005\004\233\011!\011!\011!\011!\0111\0111\007\030\0111\020\030\0111\004\233\018J\0111\0111\004\233\0111\0111\0111\0111\001\234\0111\0111\002:\0111\0111\0111\t\214\0111\0111\0111\0111\018\230\0111\007\185\0111\0111\0111\0111\0111\0111\0111\0111\000\242\t\222\0111\003\225\0111\003\222\0111\0111\0111\0111\0111\t\002\0111\000\242\0111\007\185\0111\016V\0111\0111\0111\005\002\0206\0111\0111\0111\0111\0111\0111\0111\0111\006\133\0111\0111\0111\0111\0111\0111\0111\0111\0111\0111\0111\018J\0111\0111\0111\0111\0111\n\005\0111\0111\0036\003\234\n\001\005\146\0111\0111\0111\0111\018R\0111\0111\019\150\0111\0111\0111\0111\0111\020:\0111\0111\018>\0111\0111\027\238\0111\0111\0111\0111\0111\0111\0111\0111\0111\0111\0111\0111\0111\0111\n~\t\198\0111\0111\0111\0111\011)\011)\000\242\011)\027\246\011)\000\242\003\226\011)\011)\005\014\011)\011)\011)\011)\n\130\011)\011)\001\234\011)\011)\011)\b\146\011)\011)\011)\011)\t\025\011)\015\210\011)\011)\011)\011)\011)\011)\011)\011)\018R\nB\011)\t\250\011)\b\150\011)\011)\011)\011)\011)\t\198\011)\n\001\011)\015\214\011)\016n\011)\011)\011)\000\242\018\014\011)\011)\011)\011)\011)\011)\011)\011)\021n\011)\011)\011)\011)\011)\011)\011)\011)\011)\011)\011)\003-\011)\011)\011)\011)\011)\000\242\011)\011)\011\254\018B\012\018\nB\011)\011)\011)\011)\007\241\011)\011)\005\142\011)\011)\011)\011)\011)\000\n\011)\011)\018\022\011)\011)\000\242\011)\011)\011)\011)\011)\011)\011)\011)\011)\011)\011)\011)\011)\011)\n\186\t\198\011)\011)\011)\011)\011\021\011\021\n-\011\021\003-\011\021\005\178\001\234\011\021\011\021\n\018\011\021\011\021\011\021\011\021\n\190\011\021\011\021\000\242\011\021\011\021\011\021\019j\011\021\011\021\011\021\011\021\n:\011\021\005\186\011\021\011\021\011\021\011\021\011\021\011\021\011\021\011\021\003\238\nB\011\021\019N\011\021\tz\011\021\011\021\011\021\011\021\011\021\t\198\011\021\002\242\011\021\011z\011\021\016\134\011\021\011\021\011\021\000\242\005\162\011\021\011\021\011\021\011\021\011\021\011\021\011\021\011\021\021\174\011\021\011\021\011\021\011\021\011\021\011\021\011\021\011\021\011\021\011\021\011\021\004n\011\021\011\021\011\021\011\021\011\021\tF\011\021\011\021\n-\027\138\001\234\nB\011\021\011\021\011\021\011\021\005\n\011\021\011\021\012\246\011\021\011\021\011\021\011\021\011\021\012z\011\021\011\021\012\134\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\011\021\011\021\011\021\030\234\t\198\011\021\011\021\011\021\011\021\011\029\011\029\004\018\011\029\024\242\011\029\005\178\003j\011\029\011\029\019R\011\029\011\029\011\029\011\029\030\238\011\029\011\029\r\218\011\029\011\029\011\029\n\"\011\029\011\029\011\029\011\029\n\029\011\029\005\186\011\029\011\029\011\029\011\029\011\029\011\029\011\029\011\029\t\186\nB\011\029\003\"\011\029\t\154\011\029\011\029\011\029\011\029\011\029\018J\011\029\004f\011\029\018J\011\029\016\154\011\029\011\029\011\029\000\242\005\030\011\029\011\029\011\029\011\029\011\029\011\029\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\018J\011\029\011\029\011\029\011\029\011\029\011\198\011\029\011\029\005\190\005\n\004r\n\029\011\029\011\029\011\029\011\029\n\158\011\029\011\029\007R\011\029\011\029\011\029\011\029\011\029\024\246\011\029\011\029\005\198\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\214\n\029\011\029\011\029\011\029\011\029\011\025\011\025\004v\011\025\bf\011\025\018R\005\030\011\025\011\025\018R\011\025\011\025\011\025\011\025 \250\011\025\011\025\020^\011\025\011\025\011\025\003\213\011\025\011\025\011\025\011\025\018\158\011\025\007\233\011\025\011\025\011\025\011\025\011\025\011\025\011\025\011\025\018R\018\198\011\025\b\170\011\025\005\222\011\025\011\025\011\025\011\025\011\025\007\233\011\025\005*\011\025\007\233\011\025\016\174\011\025\011\025\011\025\021F\012\202\011\025\011\025\011\025\011\025\011\025\011\025\011\025\011\025\007\002\011\025\011\025\011\025\011\025\011\025\011\025\011\025\011\025\011\025\011\025\011\025\012\206\011\025\011\025\011\025\011\025\011\025\000\242\011\025\011\025\023J\001\006\n\230\001\194\011\025\011\025\011\025\011\025\001\234\011\025\011\025!s\011\025\011\025\011\025\011\025\011\025\nV\011\025\011\025\017B\011\025\011\025\005\178\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\019r\007z\011\025\011\025\011\025\011\025\011%\011%\005\186\011%\012r\011%\012\162\006v\011%\011%\018\242\011%\011%\011%\011%\004\233\011%\011%\015\234\011%\011%\011%\n\146\011%\011%\011%\011%\t\154\011%\007\217\011%\011%\011%\011%\011%\011%\011%\011%\004\233\015\238\011%\015R\011%\006\186\011%\011%\011%\011%\011%\007\217\011%\000\242\011%\007\217\011%\016\202\011%\011%\011%\005\206\014\018\011%\011%\011%\011%\011%\011%\011%\011%\017F\011%\011%\011%\011%\011%\011%\011%\011%\011%\011%\011%\005\226\011%\011%\011%\011%\011%\000\242\011%\011%\011\254\001\006\r\238\001\194\011%\011%\011%\011%\018\246\011%\011%\018\182\011%\011%\011%\011%\011%\0166\011%\011%\0216\011%\011%\005\178\011%\011%\011%\011%\011%\011%\011%\011%\011%\011%\011%\011%\011%\011%\016:\n\234\011%\011%\011%\011%\0115\0115\005\186\0115\014.\0115\005\178\002J\0115\0115\0062\0115\0115\0115\0115\n&\0115\0115\015\194\0115\0115\0115\012\202\0115\0115\0115\0115\0146\0115\005\186\0115\0115\0115\0115\0115\0115\0115\0115\003\210\003\214\0115\015\198\0115\016\130\0115\0115\0115\0115\0115\t\198\0115\001\250\0115\022\018\0115\016\222\0115\0115\0115\001\250\014R\0115\0115\0115\0115\0115\0115\0115\0115\021\202\0115\0115\0115\0115\0115\0115\0115\0115\0115\0115\0115\023\230\0115\0115\0115\0115\0115\014\178\0115\0115\018\186\021:\014\026\nB\0115\0115\0115\0115\n\158\0115\0115\019\162\0115\0115\0115\0115\0115\006:\0115\0115\024\138\0115\0115\000\242\0115\0115\0115\0115\0115\0115\0115\0115\0115\0115\0115\0115\0115\0115\019\198\t\198\0115\0115\0115\0115\011-\011-\000\242\011-\nV\011-\005\178\t\217\011-\011-\024\150\011-\011-\011-\011- \154\011-\011-\006F\011-\011-\011-\019z\011-\011-\011-\011-\007Z\011-\005\186\011-\011-\011-\011-\011-\011-\011-\011-\023\234\nB\011-\015\222\011-\004n\011-\011-\011-\011-\011-\000\242\011-\006N\011-\018J\011-\016\242\011-\011-\011-\000\242\015\234\011-\011-\011-\011-\011-\011-\011-\011-\016\006\011-\011-\011-\011-\011-\011-\011-\011-\011-\011-\011-\016\198\011-\011-\011-\011-\011-\014\234\011-\011-\019\166\005\246\016\n\007^\011-\011-\011-\011-\t\217\011-\011-\024\158\011-\011-\011-\011-\011-\006z\011-\011-\019~\011-\011-\005\178\011-\011-\011-\011-\011-\011-\011-\011-\011-\011-\011-\011-\011-\011-\014Z\007\002\011-\011-\011-\011-\011\161\011\161\005\186\011\161\016N\011\161\005\178\014\186\011\161\011\161\018R\011\161\011\161\011\161\011\161\024\014\011\161\011\161\000\242\011\161\011\161\011\161\031f\011\161\011\161\011\161\011\161\016R\011\161\005\186\011\161\011\161\011\161\011\161\011\161\011\161\011\161\011\161\000\242\019\178\011\161\016\186\011\161\004n\011\161\011\161\011\161\011\161\011\161\003\241\011\161\000\242\011\161\014\222\011\161\016\254\011\161\011\161\011\161\000\242\015~\011\161\011\161\011\161\011\161\011\161\011\161\011\161\011\161\015\194\011\161\011\161\011\161\011\161\011\161\011\161\011\161\011\161\011\161\011\161\011\161\024\"\011\161\011\161\011\161\011\161\011\161\020N\011\161\011\161\006\153\005}\016\150\000\242\011\161\011\161\011\161\011\161\0276\011\161\011\161\024*\011\161\011\161\011\161\011\161\011\161\006}\011\161\011\161\024\194\011\161\011\161\005\178\011\161\011\161\011\161\011\161\011\161\011\161\011\161\011\161\011\161\011\161\011\161\011\161\011\161\011\161\003\241\016\006\011\161\011\161\011\161\011\161\003\249\003\249\005\186\003\249\nV\003\249\005\178\006\146\003\249\003\249\006\190\003\249\003\249\003\249\003\249\006\149\003\249\003\249\016\218\003\249\003\249\003\249\0166\003\249\003\249\003\249\003\249\016\022\003\249\005\186\003\249\003\249\003\249\003\249\003\249\003\249\003\249\003\249\003\210\023B\003\249\029Z\003\249\017\030\003\249\003\249\003\249\003\249\003\249\003\237\003\249\016\026\003\249\023V\003\249\000\242\003\249\003\249\003\249\024V\020\182\003\249\003\249\003\249\003\249\003\249\003\249\003\249\003\249\016N\003\249\003\249\003\249\003\249\003\249\003\249\003\249\003\249\003\249\003\249\003\249\006\214\012N\003\249\003\249\012V\012\182\022\138\003\249\003\249\014\242\007B\017*\000\242\003\249\003\249\003\249\003\249\b\245\003\249\003\249\027f\003\249\003\249\003\249\003\249\012^\t%\012\190\003\249\015}\003\249\003\249\005\178\003\249\003\249\003\249\003\249\003\249\003\249\003\249\003\249\003\249\003\249\003\249\003\249\003\249\003\249\003\237\003\249\003\249\003\249\003\249\003\249\002-\002-\005\186\002-\000\242\002-\000\242\028\154\003j\002-\029^\003\014\002-\012n\002-\bR\003z\002-\bj\002-\002-\002-\018*\002-\002-\002-\001\238\b\190\012\166\004\233\003~\002-\002-\002-\002-\002-\012\174\002-\004\233\015\022\003\130\015\134\004Z\018.\002-\002-\002-\002-\002-\004\165\004\154\000\242\001\194\011\254\002-\017j\002-\002-\003Z\027n\0316\004\162\n\218\002-\002-\002-\n\222\n\226\n\238\018\214\016\"\007\138\002-\002-\002-\002-\002-\002-\002-\002-\002-\t:\012N\007\150\007\154\012V\012\182\019\134\002-\002-\027\250\tZ\018\218\000\242\002-\007\166\007\170\002-\024\158\002-\002-\tb\002-\002-\002-\002-\016*\006\129\016v\002-\019\138\002-\002-\005\178\002-\002-\002-\002-\002-\002-\002-\007\174\n\246\002-\002-\002-\011\014\005:\004\165\024N\002-\002-\002-\002-\011\137\011\137\005\186\011\137\t\029\011\137\005\178\t\166\003j\011\137\028\142\003\014\011\137\011\137\011\137\016f\003z\011\137\t)\011\137\011\137\011\137\011\222\011\137\011\137\011\137\001\238\015\210\011\137\005\186\003~\011\137\011\137\011\137\011\137\011\137\011\137\011\137\nV\016j\003\130\007\193\004Z\002\246\011\137\011\137\011\137\011\137\011\137\004\161\004\154\016\170\001\194\028\238\011\137\000\242\011\137\011\137\003Z\028\182\031\146\004\162\n\218\011\137\011\137\011\137\n\222\n\226\n\238\027\170\011\137\007\138\011\137\011\137\011\137\011\137\011\137\011\137\011\137\011\137\011\137\nV\011\137\007\150\007\154\011\137\011\137\031\214\011\137\011\137\024\222\030\218\t\025\000\242\011\137\007\166\007\170\011\137\011\234\011\137\011\137\000\242\011\137\011\137\011\137\011\137\011\137\000\242\011\137\011\137\r\218\011\137\011\137\012\002\011\137\011\137\011\137\011\137\011\137\011\137\011\137\007\174\n\246\011\137\011\137\011\137\011\014\005:\004\161\027\242\011\137\011\137\011\137\011\137\011\133\011\133\027\202\011\133\031\014\011\133\012\006 \142\003j\011\133!C\003\014\011\133\011\133\011\133\016\022\003z\011\133\015\137\011\133\011\133\011\133\029\026\011\133\011\133\011\133\001\238\016f\011\133\nE\003~\011\133\011\133\011\133\011\133\011\133\011\133\011\133\012\014\016\238\003\130\n1\004Z\029\030\011\133\011\133\011\133\011\133\011\133\019\026\004\154\0176\001\194\nE\011\133\000\242\011\133\011\133\003Z\012\030\030\222\004\162\n\218\011\133\011\133\011\133\n\222\n\226\n\238\001\234\011\133\007\138\011\133\011\133\011\133\011\133\011\133\011\133\011\133\011\133\011\133\012R\011\133\007\150\007\154\011\133\011\133\012v\011\133\011\133\028*\012\158\031\002\n\230\011\133\007\166\007\170\011\133\012\170\011\133\011\133\012\186\011\133\011\133\011\133\011\133\011\133\031\018\011\133\011\133 \146\011\133\011\133\030\174\011\133\011\133\011\133\011\133\011\133\011\133\011\133\007\174\n\246\011\133\011\133\011\133\011\014\005:\r\250\n1\011\133\011\133\011\133\011\133\002u\002u\000\242\002u\014:\002u\014B\n&\003j\002u\006\169\003\014\002u\012n\002u\031>\003z\002u\014\253\002u\002u\002u\014J\002u\002u\002u\001\238\014n\012\166\019*\003~\002u\002u\002u\002u\002u\012\174\002u\014\253\006\169\003\130\006\169\004Z\014\146\002u\002u\002u\002u\002u \254\004\154\001\250\001\194\019.\002u\014\198\002u\002u\003Z\000\242\014\214\004\162\n\218\002u\002u\002u\n\222\n\226\n\238\019Z\016\"\007\138\002u\002u\002u\002u\002u\002u\002u\002u\002u\014\254\002u\007\150\007\154\015\146\002u\004\233\002u\002u\004\233\004\233\017R\019^\002u\007\166\007\170\002u\017Z\002u\002u\004\233\002u\002u\002u\002u\004\233\031\154\012\022\002u\004\233\002u\002u\017v\002u\002u\002u\002u\002u\002u\002u\007\174\n\246\002u\002u\002u\011\014\005:\017\154\004\233\002u\002u\002u\002u\004\233\004\233\004\233\002j\004\233\004\233\004\233\004\233\004\233\004\233\004\233\004\233\000\242\004\233\000\242\004\233\004\233\000\242\004\233\004\233\004\233\004\233\004\233\004\233\004\233\004\233\004\233\004\233\004\233\004\233\004\233\017\170\004\233\004\233\007m\017\190\004\233\004\233\004\233\017\234\004\233\004\233\004\233\004\233\004\233\019\250\004\233\004\233\004\233\004\233\004\233\004\233\004\233\004\233\004\233\007m\004\233\004\233\004\233\004\233\004\233\004\233\004\233\004\233\004\233\000\242\004\233\004\233\004\233\004\233\004\233\004\233\004\233\004\233\020\"\004\233\004\233\004\194\027.\004\233\004\233\004\233\004\233\004\233\004\233\004\233\004\233\004\233\020B\004\233\004\233\004\233\004\233\004\233\004\233\004\233\004\233\004\233\004\233\004\233\000\242\004\233\004\233\004\233\020F\003\154\t\r\004\233\001.\020n\t\r\020\138\004\233\020\190\004\233\003-\003-\003\158\003\162\004\233\004\233\004\233\004\233\020\206\020\226\004\233\004\233\004\233\004\233\003\166\000\197\004\233\000\197\000\242\000\197\000\197\000\197\000\197\000\197\000\197\000\197\000\197\000\n\000\197\015\001\000\197\000\197\000\242\000\197\000\197\021\014\t\r\000\197\000\197\021\026\000\197\000\197\000\197\000\197\000\242\000\197\028V\000\197\000\197\015\001\014\197\000\197\000\197\000\197\n\170\000\197\000\197\000\197\003-\000\197\t\r\000\197\000\197\000\197\000\197\000\197\000\197\000\197\000\197\000\197\014\197\014\197\000\197\000\197\014\197\n\174\000\197\000\197\000\197\027\162\000\197\000\197\000\197\000\197\000\197\000\197\000\197\000\197\000\197\003\210\003\214\000\197\021\130\024~\000\197\021\138\000\197\000\197\000\197\000\197\006\030\000\197\003-\t\158\n\158\028\130\000\197\000\197\000\197\000\197\000\197\000\197\000\197\000\197\000\197\000\242\003\233\022\130\000\197\000\242\022\150\022\154\b\186\000\226\003-\003-\021\234\000\197\000\n\023^\0065\023v\023\246\023\250\000\197\000\197\000\197\000\197\0242\003-\000\197\000\197\000\197\000\197\002e\002e\003-\002e\002v\002e\014\197\000\n\003j\002e\0246\003\014\002e\024^\002e\003-\003z\002e\024b\002e\002e\002e\012\146\002e\002e\002e\001\238\024z\025&\n\178\003~\002e\002e\002e\002e\002e\0065\002e\003-\025*\003\130\025N\004Z\025R\002e\002e\002e\002e\002e\003j\004\154\003\233\n\242\023F\002e\0065\002e\002e\003Z\025b\025r\004\162\n\218\002e\002e\002e\n\222\n\226\n\238\025~\t>\007\138\002e\002e\002e\002e\002e\002e\002e\002e\002e\025\178\012N\007\150\007\154\012V\012\182\003-\002e\002e\003-\001\006\031\222\001\194\002e\007\166\007\170\002e\025\182\002e\002e\026\026\002e\002e\002e\002e\012^\026J\012\190\002e\026R\002e\002e\000\n\002e\002e\002e\002e\002e\002e\002e\007\174\n\246\002e\002e\002e\011\014\005:\026b\003-\002e\002e\002e\002e\002\129\002\129\000\242\002\129\026\178\002\129\026\210\004r\004r\002\129\003-\003-\002\129\027\018\002\129\001\234\001\234\002\129\nI\002\129\002\129\002\129\000\n\002\129\002\129\002\129\003j\031z\027>\027N\027v\002\129\002\129\002\129\002\129\002\129\027z\002\129\003-\027\134\003-\003-\nI\027\150\002\129\002\129\002\129\002\129\002\129\001\006\0112\001\194\001\194\003-\002\129\027\178\002\129\002\129\027\194\005\002 ^\0182\018\170\002\129\002\129\002\129\018\202\018\234\018\250\027\214\004f\007\237\002\129\002\129\002\129\002\129\002\129\002\129\002\129\002\129\002\129\028\002\012N\028\006\020\022\012V\012\182\003\014\002\129\002\129\028\018\007\237\000\242\005n\002\129\007\237\005\129\002\129\028\"\002\129\002\129\0286\002\129\002\129\002\129\002\129\012^\018v\012\190\002\129\029*\002\129\002\129\029\130\002\129\002\129\002\129\002\129\002\129\002\129\002\129\029\170\001f\002\129\002\129\002\129\020\026\018~\0302!\175\002\129\002\129\002\129\002\129\002}\002}\000\242\002}\001~\002}\001\142\bz\020&\002}\026\170\b\030\002}\030:\002}\001\234\030R\002}\b\154\002}\002}\002}\b\166\002}\002}\002}\003-\003-\023\030\030^\022Z\002}\002}\002}\002}\002}\030\198\002}\007\170\031\026\006\169\003-\012b\031.\002}\002}\002}\002}\002}\026\182\b\249\bz\017\130\000\n\002}\b\030\002}\002}\017\"\005\002\017.\031B\b\154\002}\002}\002}\b\166\026j\004r\006\169\031\138\006\169\002}\002}\002}\002}\002}\002}\002}\002}\002}\031\158\012N\031\182\003-\012V\012\182\031\226\002}\002}\031\250 \022\000\242\005n\002} >\004\157\002} z\002}\002} \170\002}\002}\002}\002}\012^\018j\012\190\002}\007\242\002}\002} \182\002}\002}\002}\002}\002}\002}\002}\004\182\004\186\002}\002}\002}\b\206\0126\004\198 \190\002}\002}\002}\002}\002i\002i \199\002i\r\242\002i\000\242\bz\003j\002i \215\b\030\002i \234\002i\003\246\001\177\002i\b\154\002i\002i\002i\b\166\002i\002i\002i\001\238!\006!#!3!O\002i\002i\002i\002i\002i\001\177\002i!\163!\191\006\169\004\157\020.!\202\002i\002i\002i\002i\002i\"\031\004J\"3\014&\";\002i\bz\002i\002i\003Z\b\030\011\190\"w\"\127\002i\002i\002i\b\154\000\000\003}\006\169\b\166\006\169\002i\002i\002i\002i\002i\002i\002i\002i\002i\000\000\012N\003}\000\000\012V\012\182\000\000\002i\002i\000\000\t\146\007y\000\000\002i\001\206\000\242\002i\000\000\002i\002i\000\000\002i\002i\002i\002i\012^\001\177\012\190\002i\000\000\002i\002i\007y\002i\002i\002i\002i\002i\002i\002i\000\000\020\162\002i\002i\002i\003-\001\210\001\177\000\000\002i\002i\002i\002i\002y\002y\001\177\002y\017n\002y\001\214\t:\004r\002y\018Z\bz\002y\000\000\002y\b\030\014*\002y\000\n\002y\002y\002y\b\154\002y\002y\002y\b\166\000\000\000\000\003\174\000\000\002y\002y\002y\002y\002y\000\000\002y\000\000\000\000\000\000\003\178\003\182\000\000\002y\002y\002y\002y\002y\003-\0112\000\000\019:\003\186\002y\000\000\002y\002y\000\000\000\000\000\000\0182\018\170\002y\002y\002y\018\202\018\234\018\250\000\000\000\000\b\198\002y\002y\002y\002y\002y\002y\002y\002y\002y\000\000\002y\000\000\003j\000\000\002y\020\022\002y\002y\003\014\000\000\b\202\000\000\002y\000\000\000\000\002y\000\000\002y\002y\000\000\002y\002y\002y\002y\000\000\000\000\026\166\002y\022\246\002y\002y\000\000\012\214\002y\002y\002y\002y\002y\002y\000\000\003-\002y\002y\002y\012\194\023\198\004f\020\026\002y\002y\002y\002y\nQ\nQ\000\242\nQ\000\000\nQ\014\205\000\000\015\186\nQ\015\202\020&\nQ\026\202\nQ\000\000\000\000\r\002\000\n\nQ\r&\nQ\000\000\nQ\nQ\nQ\014\205\014\205\000\000\000\000\014\205\r:\rR\rZ\rB\rb\003-\nQ\000\000\000\000\021^\007\170\015\226\000\000\nQ\nQ\rj\rr\nQ\003-\003-\bz\026\214\000\000\nQ\b\030\rz\nQ\015\254\000\000\016\014\007\213\b\154\nQ\nQ\000\242\b\166\014\249\000\000\n\158\026j\000\242\nQ\nQ\r\n\rJ\r\130\r\138\r\154\nQ\nQ\007\213\nQ\000\000\000\242\007\213\nQ\014\249\nQ\r\162\002b\000\000\000\242\002f\nQ\000\000\000\000\nQ\000\000\nQ\r\170\000\000\nQ\nQ\nQ\nQ\014\205\002r\000\000\nQ\000\000\nQ\nQ\000\000\r\202\nQ\nQ\r\210\r\146\nQ\nQ\000\000\000\000\nQ\r\178\nQ\000\242\015\"\000\000\000\000\nQ\nQ\r\186\r\194\002\173\002\173\002~\002\173\021b\002\173\b\173\015*\000\000\002\173\016.\0156\002\173\000\000\002\173\000\000\000\000\002\173\015B\002\173\002\173\002\173\015N\002\173\002\173\002\173\016F\007\213\016^\000\000\000\000\002\173\002\173\002\173\002\173\002\173\000\000\002\173\000\000\000\000\004N\b\173\000\000\003j\002\173\002\173\002\173\002\173\002\173\000\000\003\246\016\190\002\130\000\000\002\173\b\173\002\173\002\173\000\000\b\173\011r\001\238\000\000\002\173\002\173\002\173\b\173\016\210\000\000\016\230\b\173\t\217\002\173\002\173\r\n\002\173\002\173\002\173\002\173\002\173\002\173\000\000\002\173\000\000\000\000\004J\002\173\000\000\002\173\002\173\000\000\000\000\000\242\003Z\002\173\000\000\000\000\002\173\000\000\002\173\002\173\000\000\002\173\002\173\002\173\002\173\t\198\000\000\000\000\002\173\000\000\002\173\002\173\000\242\002\173\002\173\002\173\002\173\002\173\002\173\002\173\000\000\000\000\002\173\002\173\002\173\t\146\b\165\000\000\000\000\002\173\002\173\002\173\002\173\002\149\002\149\000\000\002\149\000\000\002\149\012E\b\165\000\000\002\149\020\022\b\030\002\149\003\014\002\149\000\000\nB\002\149\b\165\002\149\002\149\002\149\b\165\002\149\002\149\002\149\000\000\000\000\t\217\000\000\000\000\002\149\002\149\002\149\002\149\002\149\000\242\002\149\t\t\n\029\000\000\012E\t\t\005U\002\149\002\149\002\149\002\149\002\149\000\000\b\254\003j\020\026\000\000\002\149\012E\002\149\002\149\000\000\012E\015\014\000\000\000\000\002\149\002\149\002\149\012E\005U\020&\000\000\012E\019\238\002\149\002\149\r\n\002\149\002\149\002\149\002\149\002\149\002\149\000\000\002\149\t\t\003j\000\000\002\149\t\025\002\149\002\149\t\025\000\000\000\000\000\000\002\149\004f\000\000\002\149\007\170\002\149\002\149\000\000\002\149\002\149\002\149\002\149\000\000\t\t\027\170\002\149\000\000\002\149\002\149\000\000\002\149\002\149\002\149\002\149\002\149\002\149\002\149\003z\000\000\002\149\002\149\002\149\016z\030f\004f\t\025\002\149\002\149\002\149\002\149\002\161\002\161\000\000\002\161\007\214\002\161\014\201\000\000\016\142\002\161\016\162\t\025\002\161\006\030\002\161\000\000\000\000\r\002\007\218\002\161\002\161\002\161\000\000\002\161\002\161\002\161\014\201\014\201\000\000\000\000\014\201\002\161\002\161\002\161\rB\002\161\000\000\002\161\000\000\000\000\000\000\t\025\007\138\000\000\002\161\002\161\002\161\002\161\002\161\000\000\000\000\000\000\030\246\000\000\002\161\000\000\002\161\002\161\000\000\000\000\000\000\000\000\000\000\002\161\002\161\002\161\007\166\000\000\000\000\000\000\t\025\000\242\002\161\002\161\r\n\rJ\002\161\002\161\002\161\002\161\002\161\000\000\002\161\000\000\020\022\000\000\002\161\003\014\002\161\002\161\000\000\000\000\007\174\000\000\002\161\000\000\000\242\002\161\000\000\002\161\002\161\000\000\002\161\002\161\002\161\002\161\014\201\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\000\000\000\000\002\161\002\161\002\161\020\026\000\000\000\000\000\000\002\161\002\161\002\161\002\161\002\177\002\177\000\000\002\177\000\000\002\177\b\193\000\000\020&\002\177\003j\bz\002\177\003\014\002\177\b\030\030\250\002\177\000\000\002\177\002\177\002\177\b\154\002\177\002\177\002\177\b\166\000\000\000\000\000\000\000\000\002\177\002\177\002\177\002\177\002\177\000\000\002\177\007\170\000\000\000\000\b\193\000\000\000\000\002\177\002\177\002\177\002\177\002\177\000\000\000\000\000\000\022\194\000\000\002\177\b\193\002\177\002\177\000\000\b\030\000\000\000\000\000\000\002\177\002\177\002\177\b\193\026~\020&\000\000\b\193\000\000\002\177\002\177\r\n\002\177\002\177\002\177\002\177\002\177\002\177\000\000\002\177\000\000\002J\000\000\002\177\003\014\002\177\002\177\000\000\000\000\000\242\000\000\002\177\000\000\000\000\002\177\007\170\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\002\177\002\177\002\177\000\000\000\000\002\177\002\177\002\177 \226\b\221\001\250\000\000\002\177\002\177\002\177\002\177\002\145\002\145\000\000\002\145\000\000\002\145\b\213\bz\020&\002\145\000\000\b\030\002\145\000\000\002\145\000\000\000\000\002\145\b\221\002\145\002\145\002\145\b\221\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\007\170\000\000\000\000\b\213\000\000\000\000\002\145\002\145\002\145\002\145\002\145\000\000\000\000\000\000\000\000\000\000\002\145\015f\002\145\002\145\000\000\b\213\000\000\000\000\000\000\002\145\002\145\002\145\b\213\000\000\000\000\000\000\b\213\000\000\002\145\002\145\r\n\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\000\000\242\000\000\002\145\000\000\000\000\002\145\000\000\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\000\000\b\161\000\000\000\000\002\145\002\145\002\145\002\145\002\157\002\157\000\000\002\157\000\000\002\157\000\242\b\161\000\000\002\157\000\000\b\030\002\157\000\000\002\157\000\000\000\000\r\002\b\161\002\157\002\157\002\157\b\161\002\157\002\157\002\157\000\000\000\000\000\000\000\000\000\000\002\157\002\157\002\157\rB\002\157\000\000\002\157\000\000\000\000\000\000\018\002\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\015*\002\157\002\157\000\000\0156\000\000\000\000\000\000\002\157\002\157\002\157\015B\000\000\000\000\000\000\015N\000\000\002\157\002\157\r\n\rJ\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\007\209\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\007\209\000\000\002\153\000\000\007\209\002\153\000\000\002\153\000\000\000\000\r\002\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\rB\002\153\000\000\002\153\000\000\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\r\n\rJ\002\153\002\153\002\153\002\153\002\153\000\000\002\153\000\000\000\000\000\000\002\153\007\209\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\004\222\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\193\002\193\000\000\002\193\000\000\002\193\000\000\000\000\000\000\002\193\000\000\000\000\002\193\000\000\002\193\000\000\000\000\r\002\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\r:\rR\rZ\rB\rb\000\000\002\193\000\000\000\000\000\000\000\000\000\000\000\000\002\193\002\193\rj\rr\002\193\000\000\000\000\000\000\000\000\000\000\002\193\000\000\rz\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\r\n\rJ\r\130\r\138\r\154\002\193\002\193\000\000\002\193\000\000\000\000\000\000\002\193\000\000\002\193\r\162\000\000\000\000\000\000\000\000\002\193\000\000\000\000\002\193\000\000\002\193\r\170\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\r\146\002\193\002\193\000\000\000\000\002\193\r\178\002\193\000\000\000\000\000\000\000\000\002\193\002\193\r\186\r\194\002\169\002\169\000\000\002\169\000\000\002\169\000\000\000\000\000\000\002\169\000\000\000\000\002\169\000\000\002\169\000\000\000\000\r\002\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\rB\002\169\000\000\002\169\000\000\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\r\n\rJ\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\000\000\002\165\000\000\000\000\002\165\000\000\002\165\000\000\000\000\r\002\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\rB\002\165\000\000\002\165\000\000\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\r\n\rJ\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\000\000\002\185\000\000\000\000\002\185\000\000\002\185\000\000\000\000\r\002\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\r:\rR\rZ\rB\002\185\000\000\002\185\000\000\000\000\000\000\000\000\000\000\000\000\002\185\002\185\rj\rr\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\r\n\rJ\r\130\r\138\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\r\146\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\000\000\002\141\000\000\000\000\002\141\000\000\002\141\000\000\000\000\r\002\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\rB\002\141\000\000\002\141\000\000\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\r\n\rJ\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\000\000\002\137\000\000\000\000\002\137\000\000\002\137\000\000\000\000\r\002\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\r:\rR\rZ\rB\002\137\000\000\002\137\000\000\000\000\000\000\000\000\000\000\000\000\002\137\002\137\rj\rr\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\r\n\rJ\r\130\r\138\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\r\146\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\000\000\002\221\000\000\000\000\002\221\000\000\002\221\000\000\000\000\r\002\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\r:\rR\rZ\rB\002\221\000\000\002\221\000\000\000\000\000\000\000\000\000\000\000\000\002\221\002\221\rj\rr\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\r\n\rJ\r\130\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\r\146\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\000\000\002\133\000\000\000\000\002\133\000\000\002\133\000\000\000\000\r\002\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\r:\rR\rZ\rB\002\133\000\000\002\133\000\000\000\000\000\000\000\000\000\000\000\000\002\133\002\133\rj\rr\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\r\n\rJ\r\130\r\138\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\r\146\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\000\000\002\189\000\000\000\000\002\189\000\000\002\189\000\000\000\000\r\002\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\r:\rR\rZ\rB\002\189\000\000\002\189\000\000\000\000\000\000\000\000\000\000\000\000\002\189\002\189\rj\rr\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\r\n\rJ\r\130\r\138\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\r\146\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\000\000\002\181\000\000\000\000\002\181\000\000\002\181\000\000\000\000\r\002\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\r:\rR\rZ\rB\002\181\000\000\002\181\000\000\000\000\000\000\000\000\000\000\000\000\002\181\002\181\rj\rr\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\r\n\rJ\r\130\r\138\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\r\146\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\000\000\002\197\000\000\000\000\002\197\000\000\002\197\000\000\000\000\r\002\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\r:\rR\rZ\rB\rb\000\000\002\197\000\000\000\000\000\000\000\000\000\000\000\000\002\197\002\197\rj\rr\002\197\000\000\000\000\000\000\000\000\000\000\002\197\000\000\rz\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\r\n\rJ\r\130\r\138\r\154\002\197\002\197\000\000\002\197\000\000\000\000\000\000\002\197\000\000\002\197\r\162\000\000\000\000\000\000\000\000\002\197\000\000\000\000\002\197\000\000\002\197\r\170\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\r\146\002\197\002\197\000\000\000\000\002\197\r\178\002\197\000\000\000\000\000\000\000\000\002\197\002\197\r\186\r\194\002\201\002\201\000\000\002\201\000\000\002\201\000\000\000\000\000\000\002\201\000\000\000\000\002\201\000\000\002\201\000\000\000\000\r\002\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\r:\rR\rZ\rB\002\201\000\000\002\201\000\000\000\000\000\000\000\000\000\000\000\000\002\201\002\201\rj\rr\002\201\000\000\000\000\000\000\000\000\000\000\002\201\000\000\rz\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\r\n\rJ\r\130\r\138\r\154\002\201\002\201\000\000\002\201\000\000\000\000\000\000\002\201\000\000\002\201\r\162\000\000\000\000\000\000\000\000\002\201\000\000\000\000\002\201\000\000\002\201\r\170\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\r\146\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\r\186\r\194\002\205\002\205\000\000\002\205\000\000\002\205\000\000\000\000\000\000\002\205\000\000\000\000\002\205\000\000\002\205\000\000\000\000\r\002\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\r:\rR\rZ\rB\002\205\000\000\002\205\000\000\000\000\000\000\000\000\000\000\000\000\002\205\002\205\rj\rr\002\205\000\000\000\000\000\000\000\000\000\000\002\205\000\000\rz\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\r\n\rJ\r\130\r\138\r\154\002\205\002\205\000\000\002\205\000\000\000\000\000\000\002\205\000\000\002\205\r\162\000\000\000\000\000\000\000\000\002\205\000\000\000\000\002\205\000\000\002\205\r\170\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\r\146\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\r\186\r\194\n\r\n\r\000\000\n\r\000\000\n\r\000\000\000\000\000\000\n\r\000\000\000\000\n\r\000\000\n\r\000\000\000\000\r\002\000\000\n\r\n\r\n\r\000\000\n\r\n\r\n\r\000\000\000\000\000\000\000\000\000\000\r:\rR\rZ\rB\rb\000\000\n\r\000\000\000\000\000\000\000\000\000\000\000\000\n\r\n\r\rj\rr\n\r\000\000\000\000\000\000\000\000\000\000\n\r\000\000\rz\n\r\000\000\000\000\000\000\000\000\000\000\n\r\n\r\000\242\000\000\000\000\000\000\000\000\000\000\000\000\n\r\n\r\r\n\rJ\r\130\r\138\r\154\n\r\n\r\000\000\n\r\000\000\000\000\000\000\n\r\000\000\n\r\r\162\000\000\000\000\000\000\000\000\n\r\000\000\000\000\n\r\000\000\n\r\r\170\000\000\n\r\n\r\n\r\n\r\000\000\000\000\000\000\n\r\000\000\n\r\n\r\000\000\n\r\n\r\n\r\n\r\r\146\n\r\n\r\000\000\000\000\n\r\r\178\n\r\000\000\000\000\000\000\000\000\n\r\n\r\r\186\r\194\002\209\002\209\000\000\002\209\000\000\002\209\000\000\000\000\000\000\002\209\000\000\000\000\002\209\000\000\002\209\000\000\000\000\r\002\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\r:\rR\rZ\rB\rb\000\000\002\209\000\000\000\000\000\000\000\000\000\000\000\000\002\209\002\209\rj\rr\002\209\000\000\000\000\000\000\000\000\000\000\002\209\000\000\rz\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\r\n\rJ\r\130\r\138\r\154\002\209\002\209\000\000\002\209\000\000\000\000\000\000\002\209\000\000\002\209\r\162\000\000\000\000\000\000\000\000\002\209\000\000\000\000\002\209\000\000\002\209\r\170\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\202\002\209\002\209\r\210\r\146\002\209\002\209\000\000\000\000\002\209\r\178\002\209\000\000\000\000\000\000\000\000\002\209\002\209\r\186\r\194\n\t\n\t\000\000\n\t\000\000\n\t\000\000\000\000\000\000\n\t\000\000\000\000\n\t\000\000\n\t\000\000\000\000\r\002\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\r:\rR\rZ\rB\rb\000\000\n\t\000\000\000\000\000\000\000\000\000\000\000\000\n\t\n\t\rj\rr\n\t\000\000\000\000\000\000\000\000\000\000\n\t\000\000\rz\n\t\000\000\000\000\000\000\000\000\000\000\n\t\n\t\000\242\000\000\000\000\000\000\000\000\000\000\000\000\n\t\n\t\r\n\rJ\r\130\r\138\r\154\n\t\n\t\000\000\n\t\000\000\000\000\000\000\n\t\000\000\n\t\r\162\000\000\000\000\000\000\000\000\n\t\000\000\000\000\n\t\000\000\n\t\r\170\000\000\n\t\n\t\n\t\n\t\000\000\000\000\000\000\n\t\000\000\n\t\n\t\000\000\n\t\n\t\n\t\n\t\r\146\n\t\n\t\000\000\000\000\n\t\r\178\n\t\000\000\000\000\000\000\000\000\n\t\n\t\r\186\r\194\002\245\002\245\000\000\002\245\000\000\002\245\000\000\000\000\000\000\002\245\000\000\000\000\002\245\000\000\002\245\000\000\000\000\r\002\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\r:\rR\rZ\rB\rb\000\000\002\245\000\000\000\000\000\000\000\000\000\000\000\000\002\245\002\245\rj\rr\002\245\000\000\000\000\000\000\000\000\000\000\002\245\000\000\rz\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\r\n\rJ\r\130\r\138\r\154\002\245\002\245\000\000\002\245\000\000\000\000\000\000\002\245\000\000\002\245\r\162\000\000\000\000\000\000\000\000\002\245\000\000\000\000\002\245\000\000\002\245\r\170\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\202\002\245\002\245\r\210\r\146\002\245\002\245\000\000\000\000\002\245\r\178\002\245\000\000\000\000\000\000\000\000\002\245\002\245\r\186\r\194\003\005\003\005\000\000\003\005\000\000\003\005\000\000\000\000\000\000\003\005\000\000\000\000\003\005\000\000\003\005\000\000\000\000\r\002\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\r:\rR\rZ\rB\rb\000\000\003\005\000\000\000\000\000\000\000\000\000\000\000\000\003\005\003\005\rj\rr\003\005\000\000\000\000\000\000\000\000\000\000\003\005\000\000\rz\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\r\n\rJ\r\130\r\138\r\154\003\005\003\005\000\000\003\005\000\000\000\000\000\000\003\005\000\000\003\005\r\162\000\000\000\000\000\000\000\000\003\005\000\000\000\000\003\005\000\000\003\005\r\170\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\202\003\005\003\005\r\210\r\146\003\005\003\005\000\000\000\000\003\005\r\178\003\005\000\000\000\000\000\000\000\000\003\005\003\005\r\186\r\194\002\253\002\253\000\000\002\253\000\000\002\253\000\000\000\000\000\000\002\253\000\000\000\000\002\253\000\000\002\253\000\000\000\000\r\002\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\r:\rR\rZ\rB\rb\000\000\002\253\000\000\000\000\000\000\000\000\000\000\000\000\002\253\002\253\rj\rr\002\253\000\000\000\000\000\000\000\000\000\000\002\253\000\000\rz\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\r\n\rJ\r\130\r\138\r\154\002\253\002\253\000\000\002\253\000\000\000\000\000\000\002\253\000\000\002\253\r\162\000\000\000\000\000\000\000\000\002\253\000\000\000\000\002\253\000\000\002\253\r\170\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\202\002\253\002\253\r\210\r\146\002\253\002\253\000\000\000\000\002\253\r\178\002\253\000\000\000\000\000\000\000\000\002\253\002\253\r\186\r\194\002\233\002\233\000\000\002\233\000\000\002\233\000\000\000\000\000\000\002\233\000\000\000\000\002\233\000\000\002\233\000\000\000\000\r\002\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\r:\rR\rZ\rB\rb\000\000\002\233\000\000\000\000\000\000\000\000\000\000\000\000\002\233\002\233\rj\rr\002\233\000\000\000\000\000\000\000\000\000\000\002\233\000\000\rz\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\r\n\rJ\r\130\r\138\r\154\002\233\002\233\000\000\002\233\000\000\000\000\000\000\002\233\000\000\002\233\r\162\000\000\000\000\000\000\000\000\002\233\000\000\000\000\002\233\000\000\002\233\r\170\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\202\002\233\002\233\r\210\r\146\002\233\002\233\000\000\000\000\002\233\r\178\002\233\000\000\000\000\000\000\000\000\002\233\002\233\r\186\r\194\002\241\002\241\000\000\002\241\000\000\002\241\000\000\000\000\000\000\002\241\000\000\000\000\002\241\000\000\002\241\000\000\000\000\r\002\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\r:\rR\rZ\rB\rb\000\000\002\241\000\000\000\000\000\000\000\000\000\000\000\000\002\241\002\241\rj\rr\002\241\000\000\000\000\000\000\000\000\000\000\002\241\000\000\rz\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\r\n\rJ\r\130\r\138\r\154\002\241\002\241\000\000\002\241\000\000\000\000\000\000\002\241\000\000\002\241\r\162\000\000\000\000\000\000\000\000\002\241\000\000\000\000\002\241\000\000\002\241\r\170\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\202\002\241\002\241\r\210\r\146\002\241\002\241\000\000\000\000\002\241\r\178\002\241\000\000\000\000\000\000\000\000\002\241\002\241\r\186\r\194\002\237\002\237\000\000\002\237\000\000\002\237\000\000\000\000\000\000\002\237\000\000\000\000\002\237\000\000\002\237\000\000\000\000\r\002\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\r:\rR\rZ\rB\rb\000\000\002\237\000\000\000\000\000\000\000\000\000\000\000\000\002\237\002\237\rj\rr\002\237\000\000\000\000\000\000\000\000\000\000\002\237\000\000\rz\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\r\n\rJ\r\130\r\138\r\154\002\237\002\237\000\000\002\237\000\000\000\000\000\000\002\237\000\000\002\237\r\162\000\000\000\000\000\000\000\000\002\237\000\000\000\000\002\237\000\000\002\237\r\170\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\202\002\237\002\237\r\210\r\146\002\237\002\237\000\000\000\000\002\237\r\178\002\237\000\000\000\000\000\000\000\000\002\237\002\237\r\186\r\194\002\249\002\249\000\000\002\249\000\000\002\249\000\000\000\000\000\000\002\249\000\000\000\000\002\249\000\000\002\249\000\000\000\000\r\002\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\r:\rR\rZ\rB\rb\000\000\002\249\000\000\000\000\000\000\000\000\000\000\000\000\002\249\002\249\rj\rr\002\249\000\000\000\000\000\000\000\000\000\000\002\249\000\000\rz\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\r\n\rJ\r\130\r\138\r\154\002\249\002\249\000\000\002\249\000\000\000\000\000\000\002\249\000\000\002\249\r\162\000\000\000\000\000\000\000\000\002\249\000\000\000\000\002\249\000\000\002\249\r\170\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\202\002\249\002\249\r\210\r\146\002\249\002\249\000\000\000\000\002\249\r\178\002\249\000\000\000\000\000\000\000\000\002\249\002\249\r\186\r\194\003\t\003\t\000\000\003\t\000\000\003\t\000\000\000\000\000\000\003\t\000\000\000\000\003\t\000\000\003\t\000\000\000\000\r\002\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\r:\rR\rZ\rB\rb\000\000\003\t\000\000\000\000\000\000\000\000\000\000\000\000\003\t\003\t\rj\rr\003\t\000\000\000\000\000\000\000\000\000\000\003\t\000\000\rz\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\r\n\rJ\r\130\r\138\r\154\003\t\003\t\000\000\003\t\000\000\000\000\000\000\003\t\000\000\003\t\r\162\000\000\000\000\000\000\000\000\003\t\000\000\000\000\003\t\000\000\003\t\r\170\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\202\003\t\003\t\r\210\r\146\003\t\003\t\000\000\000\000\003\t\r\178\003\t\000\000\000\000\000\000\000\000\003\t\003\t\r\186\r\194\003\001\003\001\000\000\003\001\000\000\003\001\000\000\000\000\000\000\003\001\000\000\000\000\003\001\000\000\003\001\000\000\000\000\r\002\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\r:\rR\rZ\rB\rb\000\000\003\001\000\000\000\000\000\000\000\000\000\000\000\000\003\001\003\001\rj\rr\003\001\000\000\000\000\000\000\000\000\000\000\003\001\000\000\rz\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\r\n\rJ\r\130\r\138\r\154\003\001\003\001\000\000\003\001\000\000\000\000\000\000\003\001\000\000\003\001\r\162\000\000\000\000\000\000\000\000\003\001\000\000\000\000\003\001\000\000\003\001\r\170\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\202\003\001\003\001\r\210\r\146\003\001\003\001\000\000\000\000\003\001\r\178\003\001\000\000\000\000\000\000\000\000\003\001\003\001\r\186\r\194\002\229\002\229\000\000\002\229\000\000\002\229\000\000\000\000\000\000\002\229\000\000\000\000\002\229\000\000\002\229\000\000\000\000\r\002\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\r:\rR\rZ\rB\rb\000\000\002\229\000\000\000\000\000\000\000\000\000\000\000\000\002\229\002\229\rj\rr\002\229\000\000\000\000\000\000\000\000\000\000\002\229\000\000\rz\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\r\n\rJ\r\130\r\138\r\154\002\229\002\229\000\000\002\229\000\000\000\000\000\000\002\229\000\000\002\229\r\162\000\000\000\000\000\000\000\000\002\229\000\000\000\000\002\229\000\000\002\229\r\170\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\202\002\229\002\229\r\210\r\146\002\229\002\229\000\000\000\000\002\229\r\178\002\229\000\000\000\000\000\000\000\000\002\229\002\229\r\186\r\194\002A\002A\000\000\002A\000\000\002A\000\000\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\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\000\000\002Y\000\000\000\000\002Y\000\000\002Y\000\000\000\000\r\002\000\000\002Y\002Y\002Y\000\000\002Y\002Y\002Y\000\000\000\000\000\000\000\000\000\000\r:\rR\rZ\rB\rb\000\000\002Y\000\000\000\000\000\000\000\000\000\000\000\000\002Y\002Y\rj\rr\002Y\000\000\000\000\000\000\000\000\000\000\002Y\000\000\rz\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\r\n\rJ\r\130\r\138\r\154\002Y\002Y\000\000\002Y\000\000\000\000\000\000\002Y\000\000\002Y\r\162\000\000\000\000\000\000\000\000\002Y\000\000\000\000\002Y\000\000\002Y\r\170\000\000\002Y\002Y\017\242\002Y\000\000\000\000\000\000\002Y\000\000\002Y\002Y\000\000\r\202\002Y\002Y\r\210\r\146\002Y\002Y\000\000\000\000\002Y\r\178\002Y\000\000\000\000\000\000\000\000\002Y\002Y\r\186\r\194\002U\002U\000\000\002U\000\000\002U\000\000\000\000\000\000\002U\000\000\000\000\002U\000\000\002U\000\000\000\000\r\002\000\000\002U\002U\002U\000\000\002U\002U\002U\000\000\000\000\000\000\000\000\000\000\r:\rR\rZ\rB\rb\000\000\002U\000\000\000\000\000\000\000\000\000\000\000\000\002U\002U\rj\rr\002U\000\000\000\000\000\000\000\000\000\000\002U\000\000\rz\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\r\n\rJ\r\130\r\138\r\154\002U\002U\000\000\002U\000\000\000\000\000\000\002U\000\000\002U\r\162\000\000\000\000\000\000\000\000\002U\000\000\000\000\002U\000\000\002U\r\170\000\000\002U\002U\002U\002U\000\000\000\000\000\000\002U\000\000\002U\002U\000\000\r\202\002U\002U\r\210\r\146\002U\002U\000\000\000\000\002U\r\178\002U\000\000\000\000\000\000\000\000\002U\002U\r\186\r\194\002\225\002\225\000\000\002\225\000\000\002\225\000\000\000\000\000\000\002\225\000\000\000\000\002\225\000\000\002\225\000\000\000\000\r\002\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\r:\rR\rZ\rB\rb\000\000\002\225\000\000\000\000\000\000\000\000\000\000\000\000\002\225\002\225\rj\rr\002\225\000\000\000\000\000\000\000\000\000\000\002\225\000\000\rz\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\r\n\rJ\r\130\r\138\r\154\002\225\002\225\000\000\002\225\000\000\000\000\000\000\002\225\000\000\002\225\r\162\000\000\000\000\000\000\000\000\002\225\000\000\000\000\002\225\000\000\002\225\r\170\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\202\002\225\002\225\r\210\r\146\002\225\002\225\000\000\000\000\002\225\r\178\002\225\000\000\000\000\000\000\000\000\002\225\002\225\r\186\r\194\002I\002I\000\000\002I\000\000\002I\000\000\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\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\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\000\000\000\000\002M\002M\002M\002M\002M\000\000\002M\007\249\000\000\000\000\000\000\000\000\000\000\002M\002M\002M\002M\002M\000\000\000\000\000\000\000\000\000\000\002M\000\000\002M\002M\007\249\000\000\000\000\000\000\007\249\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\000\000\000\000\000\000\002M\000\000\002M\002M\000\000\000\000\000\000\000\000\002M\000\000\000\000\002M\000\000\002M\002M\000\000\002M\002M\002M\002M\000\000\000\000\000\000\002M\000\000\002M\002M\000\000\002M\002M\002M\002M\002M\002M\002M\000\000\000\000\002M\002M\017\218\000\000\000\000\br\000\000\002M\002M\002M\002M\001\n\000\000\000\006\000\000\007\249\000\000\003b\003f\003j\000\000\003n\003\014\000\000\000\000\000\000\bv\003z\001\014\000\000\000\000\012z\003\"\000\000\012\134\000\000\000\000\001\238\000\000\000\000\000\000\004\158\001\022\011:\011>\001\"\001&\000\000\000\000\004V\000\000\003\130\000\000\004Z\000\000\021N\t\189\011b\011f\000\000\004\142\004\154\004\166\004\170\011j\t~\002J\001>\000\000\003Z\000\242\000\000\004\162\n\218\000\000\000\000\002N\n\222\n\226\n\238\011\002\000\000\007\138\000\000\001\238\001B\001F\001J\001N\001R\000\000\000\000\011~\000\000\007\150\007\154\001V\000\000\t\189\000\000\001Z\000\000\003\230\011\138\011\162\012&\007\166\007\170\t\170\012:\001\250\001^\000\000\000\000\000\000\000\000\003Z\001b\000\000\bz\000\000\000\000\t\189\b\030\b\134\000\000\011\158\000\000\001\158\bf\b\154\000\000\007\174\n\246\b\166\001\162\000\000\018\"\005:\012>\001\n\001\170\000\006\001\174\001\178\000\000\003b\003f\003j\t\174\003n\003\014\000\000\000\000\000\000\000\000\003z\001\014\t\189\000\000\000\000\0116\006\030\000\000\000\000\t\189\001\238\000\000\017\198\000\000\004\158\001\022\011:\011>\001\"\001&\000\000\000\000\004V\000\000\003\130\000\000\004Z\000\000\011B\000\000\011b\011f\000\242\004\142\004\154\004\166\004\170\011j\t~\000\000\001>\000\000\003Z\000\000\000\000\004\162\n\218\000\000\000\000\019\002\n\222\n\226\n\238\011\002\000\000\007\138\000\000\000\000\001B\001F\001J\001N\001R\000\000\000\000\011~\000\000\007\150\007\154\001V\000\000\000\000\000\000\001Z\000\000\n9\011\138\011\162\012&\007\166\007\170\bz\012:\000\000\001^\b\030\000\000\000\000\000\000\000\000\001b\000\000\b\154\000\000\000\000\b\230\b\166\000\000\n9\000\000\000\000\001\158\b\186\000\000\000\000\007\174\n\246\000\000\001\162\000\000\018\"\005:\012>\005\021\001\170\000\006\001\174\001\178\000\250\003b\003f\003j\003\254\003n\003\014\000\000\000\000\000\000\000\000\003z\012N\000\000\004*\012V\012\182\000\000\005\021\000\000\004.\001\238\000\242\022R\000\000\003~\000\000\0042\0046\000\000\000\000\000\000\004:\004V\000\000\003\130\012^\004Z\012\190\021\230\000\000\004\134\004\138\000\000\004\142\004\154\004\166\004\170\004\178\t~\000\000\000\000\022J\003Z\000\000\000\000\004\162\n\218\022b\000\000\000\000\n\222\n\226\n\238\011\002\000\000\007\138\000\000\000\000\000\000\000\000\bz\n9\000\000\022j\b\030\011~\000\000\007\150\007\154\n9\000\000\b\154\000\000\000\000\000\000\b\166\011\138\011\162\012&\007\166\007\170\022r\012:\022\174\000\000\000\006\005\021\005\021\000\250\003b\003f\003j\003\254\003n\003\014\000\000\000\000\000\000\000\000\003z\000\000\000\000\0055\022\234\026\254\007\174\n\246\019\154\004.\001\238\011\014\005:\012>\003~\000\000\0042\0046\000\000\000\000\000\000\004:\004V\000\000\003\130\000\000\004Z\000\000\021\230\000\000\004\134\004\138\000\000\004\142\004\154\004\166\004\170\004\178\t~\000\000\000\000\022J\003Z\000\000\000\000\004\162\n\218\022b\000\000\000\000\n\222\n\226\n\238\011\002\000\000\007\138\000\000\000\000\000\000\000\000\000\000\000\000\000\000\022j\000\000\011~!\210\007\150\007\154\000\000!\242\000\000\000\000\000\000\000\000\000\000\011\138\011\162\012&\007\166\007\170\022r\012:\022\174\000\000\000\006\"\019\019F\000\250\003b\003f\003j\003\254\003n\003\014\000\000\000\000\000\000\000\000\003z\000\000\000\000\"B\000\000\026\254\007\174\n\246\018\174\004.\001\238\011\014\005:\012>\003~\000\000\0042\0046\000\000\000\000\000\000\004:\004V\000\000\003\130\000\000\004Z\000\000\021\230\000\000\004\134\004\138\000\000\004\142\004\154\004\166\004\170\004\178\t~\000\000\000\000\022J\003Z\000\000\000\000\004\162\n\218\022b\000\000\000\000\n\222\n\226\n\238\011\002\000\000\007\138\000\000\000\000\000\000\000\000\000\000\000\000\000\000\022j\000\000\011~!\210\007\150\007\154\000\000!\242\000\000\000\000\000\000\000\000\000\000\011\138\011\162\012&\007\166\007\170\022r\012:\022\174\000\000\000\000\005=\000\000\000\000\000\000\000\000\000\000\001\n\000\000\000\000\000\000\000\000\000\000\001\206\003\146\003j\011\250\000\000\003\014\026\254\007\174\n\246\000\000\003z\001\014\011\014\005:\012>\003\"\000\000\000\000\000\000\000\000\001\238\000\000\br\000\000\001\018\001\022\001\026\003\194\001\"\001&\000\000\000\000\001\210\000\000\007\201\000\000\000\000\000\000\003\198\007\201\0012\bb\000\000\bv\003\190\001\214\001\194\001:\000\000\000\000\001>\000\000\003Z\000\000\000\000\004\182\004\186\000\000\001.\007\201\004\190\000\000\004\198\007~\000\000\007\138\003-\000\000\001B\001F\001J\001N\001R\003-\000\000\000\000\007\142\007\150\007\154\001V\007\158\000\000\007\201\001Z\003-\000\000\000\000\000\242\000\000\007\166\007\170\007\201\000\n\007\254\001^\000\000\000\000\007\201\007\201\000\242\001b\000\000\000\000\000\000\000\000\000\000\007\201\007\201\003-\000\000\000\000\001\158\bf\000\000\000\000\007\174\003-\000\000\001\162\000\000\001\166\005:\001\n\003-\001\170\000\000\001\174\001\178\001\206\003\146\003j\r\234\000\000\003\014\000\000\t\185\bz\007\201\003z\001\014\b\030\014\n\000\000\003\"\000\000\000\000\007\201\b\154\001\238\003-\br\b\166\001\018\001\022\001\026\003\194\001\"\001&\000\000\000\000\001\210\000\000\001\253\029&\000\000\000\000\003\198\001\253\0012\bb\000\000\bv\003\190\001\214\001\194\001:\000\000\t\185\001>\000\000\003Z\000\000\000\000\004\182\004\186\000\000\000\000\001\253\004\190\000\000\004\198\007~\000\000\007\138\000\000\000\000\001B\001F\001J\001N\001R\t\185\000\000\000\000\007\142\007\150\007\154\001V\007\158\000\000\001\253\001Z\000\000\000\000\000\000\000\242\000\000\007\166\007\170\001\253\000\000\007\254\001^\000\000\000\000\001\253\001\253\000\242\001b\000\000\000\000\000\000\000\000\000\000\001\253\001\253\000\000\t\185\000\000\001\158\bf\006\030\000\000\007\174\t\185\000\000\001\162\000\000\001\166\005:\001\n\000\000\001\170\000\000\001\174\001\178\001\206\003\146\003j\017f\000\000\003\014\000\000\000\000\bz\001\253\003z\001\014\b\030\014\170\000\000\003\"\000\000\000\000\001\253\b\154\001\238\000\000\000\000\b\166\001\018\001\022\001\026\003\194\001\"\001&\000\000\000\000\001\210\000\000\000\000\000\000\000\000\000\000\003\198\000\000\0012\bb\000\000\000\000\003\190\001\214\001\194\001:\000\000\000\000\001>\000\000\003Z\000\000\000\000\004\182\004\186\000\000\000\000\000\000\004\190\000\000\004\198\007~\001\234\007\138\000\000\000\000\001B\001F\001J\001N\001R\000\000\000\000\000\000\007\142\007\150\007\154\001V\007\158\000\000\001\238\001Z\000\000\000\000\000\000\000\000\004N\007\166\007\170\003j\000\000\007\254\001^\000\000\023\254\000\000\003\246\000\000\001b\000\000\000\000\000\000\n\162\000\000\000\000\000\000\005\002\001\238\024v\001\158\bf\000\000\003Z\007\174\000\000\000\000\001\162\000\000\001\166\005:\024\142\000\213\001\170\000\000\001\174\001\178\000\213\000\000\000\000\003j\000\213\004J\003\014\000\000\012n\000\000\000\000\003z\000\000\003Z\000\213\000\000\000\213\000\000\000\213\000\000\000\213\001\238\000\000\012\166\000\000\003~\000\000\000\000\000\000\000\000\000\000\012\174\000\213\000\000\000\000\003\130\000\000\004Z\000\000\000\213\000\000\000\000\000\000\000\213\000\000\004\154\t\146\001\194\000\000\000\213\000\000\000\000\000\213\003Z\000\000\000\000\004\162\n\218\000\213\000\213\000\213\n\222\n\226\n\238\000\000\016\"\007\138\000\213\000\213\000\000\000\000\000\000\000\000\000\000\000\213\000\000\000\000\000\213\007\150\007\154\000\000\000\213\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\007\166\007\170\000\213\000\000\000\213\000\000\000\000\000\213\000\213\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\000\000\000\000\000\213\000\213\007\174\n\246\000\000\000\000\000\237\011\014\005:\000\000\000\213\000\237\000\213\000\000\003j\000\237\000\000\003\014\000\000\012n\000\000\000\000\003z\000\000\000\000\000\237\000\000\000\237\000\000\000\237\000\000\000\237\001\238\000\000\012\166\000\000\003~\000\000\000\000\000\000\000\000\000\000\012\174\000\237\000\000\000\000\003\130\000\000\004Z\000\000\000\237\000\000\000\000\000\000\000\237\000\000\004\154\000\000\001\194\000\000\000\237\000\000\000\000\000\237\003Z\000\000\000\000\004\162\n\218\000\237\000\237\000\237\n\222\n\226\n\238\000\000\016\"\007\138\000\237\000\237\000\000\000\000\000\000\000\000\000\000\000\237\000\000\000\000\000\237\007\150\007\154\000\000\000\237\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\007\166\007\170\000\237\000\000\000\237\000\000\000\000\000\237\000\237\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\237\000\000\000\000\000\000\000\000\000\000\000\000\000\237\000\237\007\174\n\246\000\000\000\000\004a\011\014\005:\000\000\000\237\004a\000\237\003\146\003j\004a\000\000\003\014\000\000\t2\000\000\000\000\003z\000\000\000\000\004a\000\000\000\000\000\000\004a\000\000\004a\001\238\000\000\tj\000\000\000i\000\000\000\000\003\150\000\000\000\000\011\174\004a\000\000\000i\000\000\000\000\000\000\000i\004a\000\000\000\000\003\170\000\000\t\157\r\230\000\000\001\194\000\000\004a\000\000\000\000\004a\003Z\000\000\000\000\004\182\004\186\004a\004a\012A\004\190\000i\004\198\000\000\r\254\007\138\t\157\000\000\000i\000\000\000\000\000\000\000\000\004a\004a\000\000\007\142\007\150\007\154\000\000\007\158\000i\000\000\000\000\000\000\000\000\000\000\000\000\000\000\007\166\007\170\004a\000\000\004a\014b\000\000\004a\004a\000\000\000\000\000\000\000\000\000i\000\000\000\000\000\000\000\000\000\000\012A\000\000\012z\000\000\012A\014\202\004a\007\174\000\000\000\000\000\000\012A\001\n\005:\000\000\012A\t\157\004a\000\000\003\146\003j\bB\000i\003\014\000\000\000\000\000\000\0022\003z\001\014\000\000\000\000\000\000\003\"\003-\000\000\000\000\000i\001\238\000\000\000\000\003-\001\018\001\022\001\026\003\194\001\"\001&\000\000\000\000\000\000\000\000\003-\000\000\000\000\000\000\003\198\000\000\0012\bb\000\n\000\000\003\190\000\000\001\194\001:\000\000\000\000\001>\000\000\003Z\000\000\000\000\004\182\004\186\000\000\003-\000\000\004\190\000\000\004\198\007~\000\000\007\138\003-\000\000\001B\001F\001J\001N\001R\003-\000\000\000\000\007\142\007\150\007\154\001V\007\158\000\000\000\000\001Z\000\000\000\000\000\000\000\000\000\000\007\166\007\170\000\000\000\000\007\254\001^\000\000\011V\000\000\000\000\003-\001b\000\000\000\000\000\000\002J\000\000\000\000\000\000\000\000\000\000\000\000\001\158\bf\000\000\002N\007\174\000\000\000\000\001\162\000\000\001\166\005:\001\238\000\000\001\170\000\000\001\174\001\178\000\014\000\018\000\022\000\026\000\030\000\000\004>\000\"\000&\000*\000.\0002\003\230\0006\000:\000\000\000\000\000>\t\170\000\000\001\250\000B\000\000\000\000\000\000\000\000\003Z\000\000\000F\000\000\000\000\000\000\000\000\000\000\000J\000\000\000N\000\000\000R\000V\000Z\000^\000b\000f\000\000\000\000\000\000\000j\000n\000\000\000r\000v\000\000\000z\000\000\000\000\000\000\000\000\000\000\t\174\000\000\000\000\000\000\000\000\001\230\001\234\000\000\000\000\000~\000\000\000\000\000\130\000\134\000\000\000\000\000\000\000\000\000\000\000\138\000\142\000\146\000\000\005\165\001\238\003\018\000\000\000\000\000\000\000\000\000\000\000\150\000\154\000\158\000\162\005\165\000\166\000\170\000\000\000\174\000\000\000\000\000\000\000\178\000\182\000\186\000\000\000\000\003J\000\190\031V\000\194\000\198\000\000\003F\000\000\003Z\004\226\004\238\000\000\000\202\000\000\000\206\000\000\004\250\000\000\000\000\005\165\000\210\000\214\n%\000\218\000\006\000\000\000\000\000\250\003b\003f\003j\002V\003n\003\014\000\000\000\000\004\254\000\000\003z\031\130\000\000\022\238\000\000\n%\000\000\n%\n%\004.\001\238\005\165\000\000\000\000\003~\005\165\0042\0046\005\165\031n\000\000\022\242\004V\000\000\003\130\000\000\004Z\000\000\023\026\000\000\004\134\004\138\000\000\004\142\004\154\004\166\004\170\004\178\t~\000\000\000\000\022J\003Z\000\000\000\000\004\162\n\218\022b\031Z\000\000\n\222\n\226\n\238\011\002\000\000\007\138\000\000\000\000\000\000\000\000\000\000\000\000\000\000\022j\000\000\011~\000\000\007\150\007\154\000\000\014\161\000\000\000\000\000\000\014\161\000\000\011\138\011\162\012&\007\166\007\170\022r\012:\023\178\014\161\000\000\005\t\000\000\000\000\000\000\014\161\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\n%\000\000\000\000\014\161\000\000\023\194\007\174\n\246\n%\000\000\014\161\011\014\005:\012>\n\181\000\000\000\000\n\181\000\000\000\000\014\161\n\181\n\181\014\161\000\000\n\181\000\000\n\181\000\000\014\161\n\181\000\000\000\000\000\000\n\181\n\181\000\000\n\181\n\181\000\000\n\181\000\000\n\181\000\000\000\000\014\161\000\000\n\181\014\161\000\000\n\181\003-\014\161\000\000\000\000\000\000\000\000\000\000\003-\n\181\000\000\n\181\000\000\014\161\n\181\014\161\n\181\000\000\014\161\003-\000\000\000\000\n\181\000\000!\202\n\181\n\181\000\n\000\000\n\181\n\181\003-\n\181\000\000\n\181\n\181\014\161\000\000\003-\000\000\000\000\003-\000\000\003-\n\181\000\000\n\181\n\181\n\181\003-\n\181\003-\000\000\000\000\000\000\000\000\000\000\000\n\003-\n\181\n\181\000\000\000\000\003-\n\181\000\000\n\181\003-\000\000\000\000\000\000\007\210\000\n\003-\000\000\003-\000\000\000\000\n\181\n\181\n\181\003-\n\181\n\181\003-\n\181\003-\n\181\003-\n\181\003-\n\181\000\000\n\181\003-\003-\003-\000\000\003-\003-\000\000\003-\000\000\003-\003-\000\000\000\000\000\000\000\000\000\000\003-\003-\000\000\000\000\003-\003-\003-\000\000\003-\t\134\003-\003-\000\n\000\000\003-\000\000\003-\000\000\003-\003-\003-\000\000\000\000\000\000\003-\003-\000\000\003-\003-\003-\003-\003-\003-\000\000\000\000\000\000\003-\000\000\000\000\003-\003-\000\000\000\000\003-\003-\003-\003-\003-\003-\003-\000\000\000\000\000\000\000\000\003-\000\000\000\000\000\000\000\000\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-\007q\000\000\000A\000\000\003-\000\000\000A\000A\000A\000\000\000A\000A\000\000\000\000\000\000\000\000\000A\000\000\000\000\000\000\000\000\007q\003-\003-\000\000\000\000\000A\003-\003-\003-\000A\000\000\000A\000A\000\000\000\000\000\000\000\000\000A\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\005\001\000A\000A\000\000\000\000\005\001\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\005\001\000\000\000\000\000\000\000\000\000\000\000\000\000A\000A\000A\000A\000A\000\000\000A\007m\000\000\000=\000\000\000\000\000\000\000=\000=\000=\005\001\000=\000=\000\000\000\000\000\000\000\000\000=\000\000\005\001\000\000\000\000\007m\000A\000A\005\001\004\"\000=\000A\000A\000A\000=\000\000\000=\000=\005\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\005%\000=\000=\000\000\005\001\024\022\000=\000=\000=\000=\000\000\000=\000\000\005\001\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=\000=\000\000\000=\007}\000\000\014i\000\000\000\000\000\000\014i\014i\014i\024B\014i\014i\000\000\000\000\000\000\000\000\014i\000\000\022J\000\000\000\000\007}\000=\000=\022b\000\000\014i\000=\000=\000=\014i\000\000\014i\014i\024n\000\000\000\000\000\000\014i\000\000\014i\000\000\014i\000\000\000\000\000\000\014i\014i\000\000\014i\014i\014i\014i\014i\014i\000\000\000\000\000\000\014i\000\000\000\000\014i\014i\000\000\005%\000\000\014i\014i\014i\014i\000\000\014i\000\000\024\210\000\000\000\000\000\000\000\000\000\000\000\000\000\000\014i\000\000\014i\014i\000\000\000\000\000\000\000\000\000\000\000\000\000\000\014i\014i\014i\014i\014i\000\000\014i\007y\000\000\014e\000\000\000\000\000\000\014e\014e\014e\000\000\014e\014e\000\000\000\000\000\000\000\000\014e\000\000\000\000\000\000\000\000\007y\014i\014i\000\000\000\000\014e\014i\014i\014i\014e\000\000\014e\014e\000\000\000\000\000\000\000\000\014e\000\000\014e\000\000\014e\000\000\000\000\000\000\014e\014e\000\000\014e\014e\014e\014e\014e\014e\000\000\000\000\000\000\014e\000\000\000\000\014e\014e\000\000\000\000\000\000\014e\014e\014e\014e\000\000\014e\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\014e\000\000\014e\014e\000\000\000\000\000\000\000\000\000\000\000\000\000\000\014e\014e\014e\014e\014e\000\000\014e\005\t\000\000\000\006\000\000\000\000\000\250\003b\003f\003j\002V\003n\003\014\000\000\000\000\000\000\000\000\003z\000\000\000\000\022\238\000\000\000\000\014e\014e\000\000\004.\001\238\014e\014e\014e\003~\000\000\0042\0046\000\000\000\000\000\000\022\242\004V\000\000\003\130\000\000\004Z\000\000\023\026\000\000\004\134\004\138\000\000\004\142\004\154\004\166\004\170\004\178\t~\000\000\000\000\022J\003Z\000\000\000\000\004\162\n\218\022b\000\000\000\000\n\222\n\226\n\238\011\002\000\000\007\138\000\000\000\000\000\000\005-\000\000\000\000\000\000\022j\027*\011~\000\000\007\150\007\154\000\000\000\000\000\000\000\000\000\000\000\000\000\000\011\138\011\162\012&\007\166\007\170\022r\012:\023\178\004.\000\000\000\000\005\t\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\014\249\014\237\000\000\023\194\007\174\n\246\027\158\000\000\000\006\011\014\005:\012>\003b\003f\003j\022J\003n\003\014\000\000\000\000\014\249\022b\003z\002b\000\000\000\000\002f\000\000\000\000\004\194\028B\028R\001\238\000\000\002n\000\000\003~\000\000\0042\0046\002r\000\000\000\000\002z\004V\014\237\003\130\000\000\004Z\000\000\000\000\000\000\004\134\004\138\000\000\004\142\004\154\004\166\004\170\004\178\t~\005-\000\000\000\000\003Z\001\230\001\234\004\162\n\218\002~\029F\000\000\n\222\n\226\n\238\011\002\000\000\007\138\000\000\000\000\000\000\000\000\000\000\000\000\001\238\003\018\000\000\011~\000\000\007\150\007\154\000\000\000\000\000\000\000\000\000\000\000\000\000\000\011\138\011\162\012&\007\166\007\170\000\000\012:\000\000\000\000\000\000\003J\000\000\005\002\000\000\000\000\000\000\003F\000\000\003Z\004\226\004\238\002\130\000\000\0186\000\000\000\000\004\250\000\000\0202\007\174\n\246\005\213\015A\000\006\011\014\005:\012>\003b\003f\003j\000\000\003n\003\014\000\000\000\000\000\000\004\254\003z\000\000\000\000\020~\005\213\000\000\000\000\018\206\005\213\000\000\001\238\000\000\000\000\000\000\003~\000\000\0042\0046\000\000\000\000\000\000\000\000\004V\000\000\003\130\000\000\004Z\000\000\000\000\000\000\004\134\004\138\000\000\004\142\004\154\004\166\004\170\004\178\t~\000\000\000\000\000\000\003Z\003j\000\000\004\162\n\218\000\000\000\000\000\000\n\222\n\226\n\238\011\002\000\000\007\138\000\000\000\000\000\000\000\000\000\000\001\238\000\000\000\000\000\000\011~\015A\007\150\007\154\015A\015A\000\000\000\000\000\000\000\000\027\030\011\138\011\162\012&\007\166\007\170\000\000\012:\000\000\005\213\028^\000\000\004f\000\000\028b\015A\000\000\015A\003Z\000\000\000\000\000\000\000\000\000\000\000\189\005\213\028\146\000\000\005\213\000\189\007\174\n\246\000\189\000\189\000\000\011\014\005:\012>\000\000\014\249\014\237\000\189\000\000\000\189\000\189\000\189\000\000\000\189\000\189\000\189\000\000\t\161\000\000\028\162\000\000\000\000\000\000\000\000\000\000\014\249\000\000\000\189\002b\000\000\000\000\002f\001\230\001\234\000\189\000\189\000\000\000\000\000\189\004\n\t\161\000\000\000\189\000\000\000\189\002r\000\000\000\189\002z\000\000\014\237\001\238\003\018\000\189\000\189\000\189\000\000\000\000\000\000\000\000\000\000\000\000\000\189\000\189\000\000\000\000\000\000\000\000\000\000\000\189\000\189\000\000\000\189\000\000\002~\005\170\000\189\005\002\000\000\000\189\000\000\003F\000\000\003Z\004\226\004\238\000\000\000\189\000\000\000\189\000\189\004\250\000\189\000\189\001\230\001\234\000\000\000\000\t\161\000\000\000\000\000\000\000\189\000\000\000\189\000\000\000\189\000\000\000\000\012e\000\189\004\254\012e\001\238\003\018\000\189\003\146\003j\000\000\000\189\003\014\000\189\000\000\000\000\002\130\003z\000\000\000\000\000\000\012e\012e\000\000\012e\012e\000\000\001\238\000\000\003J\000\000\031V\000\000\000\000\003\150\003F\000\000\003Z\004\226\004\238\000\000\000\000\000\000\000\000\000\000\004\250\012e\000\000\003\170\000\000\000\000\003\190\018b\001\194\000\000\000\000\000\000\000\000\000\000\003Z\000\000\000\000\004\182\004\186\000\000\004\254\012e\004\190\005u\004\198\007~\000\000\007\138\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\012e\000\000\007\142\007\150\007\154\031n\007\158\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\007\166\007\170\000\000\000\000\007\254\012e\000\000\012e\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\021f\000\000\012e\012e\021\166\000\000\012e\012e\002J\007\174\000\000\012e\002J\012e\000\000\005:\012a\012e\002N\012a\000\000\000\000\002N\003\146\003j\000\000\001\238\003\014\000\000\000\000\001\238\000\000\003z\000\000\000\000\000\000\012a\012a\000\000\012a\012a\000\000\001\238\000\000\003\230\000\000\000i\000\000\003\230\003\150\t\170\000\000\001\250\000\000\t\170\000i\001\250\000\000\003Z\000i\000\000\012a\003Z\003\170\000\000\t\157\b>\000\000\001\194\000\000\000\000\000\000\000\000\000\000\003Z\000\000\000\000\004\182\004\186\000\000\000\000\012a\004\190\000i\004\198\007~\000\000\007\138\t\157\000\000\000i\t\174\000m\000\000\000\000\t\174\012a\000\000\007\142\007\150\007\154\000m\007\158\000i\000\000\000m\000\000\000\000\000\000\000\000\000\000\007\166\007\170\000\000\000\000\007\254\012a\000\000\012a\000\000\000\000\000\000\000\000\000\000\000i\000\000\000\000\000\000\000\000\000m\012a\012a\000\000\000\000\012a\012a\000m\007\174\000\000\012a\000\000\012a\000i\005:\000\000\012a\t\157\000i\000\000\000m\000i\000i\000i\000\000\000\000\000\000\000\000\003.\000\000\000i\000\000\000i\000i\000i\000\000\000i\000i\000i\000\000\t\157\000m\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\000\000\000i\000i\000\000\000\000\000i\000\000\t\157\000\000\000i\000\000\000i\000\000\000m\000i\000\000\000\000\000\000\002\026\000\000\000i\000i\000i\000\000\000\000\000\000\000\000\000\000\000m\000i\000i\005\217\015A\000\000\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\217\000\000\000\000\000i\005\217\000i\000i\000\000\000i\000i\000\000\005\165\000\000\000\000\t\157\000\000\005\165\000\000\000i\005\165\005\165\000\000\000i\000\000\005\165\000\000\000i\005\165\005\165\000\000\005\165\000i\005\165\000\000\005\165\000i\005\165\000i\005\165\005\165\005\165\000\000\005\165\005\165\005\165\000\000\000\000\000\000\005\165\000\000\000\000\000\000\0015\000\000\000\000\005\165\005\165\0015\000\000\000\000\000\000\000\000\015A\005\165\005\165\015A\015A\005\165\005\165\000\000\000\000\005\165\000\000\005\165\005\165\005\165\005\165\0015\000\000\000\000\005\217\000\000\005\165\005\165\005\165\000\000\015A\000\000\015A\000\000\005\165\005\165\005\165\005\165\000\000\000\000\005\217\005\165\005\165\005\217\0015\005\165\003\142\000\000\000\000\005\165\000\000\000\000\005\165\0015\005\165\005\165\000\000\005\165\005\165\0015\005\165\000\000\005\165\005\165\000\000\005\165\005\165\000\000\0015\0015\000\000\000\000\000\000\000\000\025Z\005\165\000\000\005\165\000\000\005\165\000\000\000\000\003>\005\165\000\000\000\000\005\165\000\000\005\165\000\000\000\000\000\000\005\165\000\000\005\165\005\165\000}\000}\000\000\0015\000\000\000}\000\000\000\000\000}\000}\000\000\000\000\0015\000\000\000\000\000\000\000\000\000}\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\005\001\000}\001=\000\000\005\001\000\000\000\000\000\000\000}\000}\000\000\000\000\000}\000\000\005\001\000\000\000}\000\000\000}\000\000\005\001\000}\001=\000\000\000\000\000\000\000\000\000}\000}\000}\000\000\000\000\005\001\000\000\000\000\000\000\000}\000}\000\000\005\001\000\000\000\000\000\000\000}\000}\001=\005F\024\006\000\000\005\001\000}\000\000\005\001\000}\001=\000\000\000\000\000\000\005\001\004\"\001=\000}\000\000\000}\000}\000\000\000}\000}\000\000\000\000\001=\000\000\000\000\000\000\005\001\000\000\000}\005\001\000}\000\000\000}\005\001\000\129\000\129\000}\000\000\000\000\000\129\000\000\000}\000\129\000\129\005\001\000}\005\001\000}\000}\005\001\000\000\000\129\001=\000\129\000\129\000\129\000\000\000\129\000\129\000\129\000\000\001=\000\000\000\000\000\000\000\000\000\000\005\001\000\000\000\000\000\250\000\129\000\000\000\000\003\254\000\000\000\000\000\000\000\129\000\129\000\000\000\000\000\129\000\000\"B\003\185\000\129\000\000\000\129\000\000\004.\000\129\003\185\000\000\000\000\003\185\000\000\000\129\000\129\000\129\000\000\000\000\004:\003\185\000\000\000\000\000\129\000\129\000\000\021\230\000\000\003\185\000\000\000\129\000\129\000\000\005z\000\000\000\000\029\198\000\129\003\185\022J\000\129\000\000\000\000\000\000\003\185\022b\003\185\000\000\000\129\000\000\000\129\000\129\003\185\000\129\000\129\000\000\000\000\000\000\000\000\003\185\000\000\022j\000\000\000\129!\210\000\129\000\000\000\129!\242\000\133\000\133\000\129\000\000\000\000\000\133\000\000\000\129\000\133\000\133\022r\000\129\022\174\000\129\000\129\005=\022n\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\026\254\000\000\000\000\000\250\000\133\000\000\000\000\003\254\000\000\000\000\021\182\000\133\000\133\000\000\000\000\000\133\000\000\0055\002J\000\133\000\000\000\133\000\000\004.\000\133\000\000\000\000\000\000\002N\000\000\000\133\000\133\000\133\000\000\000\000\004:\001\238\000\000\000\000\000\133\000\133\000\000\021\230\000\000\000\000\000\000\000\133\000\133\000\000\005\158\000\000\000\000\029\198\000\133\003\230\022J\000\133\000\000\000\000\000\000\t\170\022b\001\250\000\000\000\133\000\000\000\133\000\133\003Z\000\133\000\133\000\000\000\000\000\000\000\000\000\000\000\000\022j\000\000\000\133\000\000\000\133\000\000\000\133\000\000\n\017\n\017\000\133\000\000\000\000\n\017\000\000\000\133\001\234\n\017\022r\000\133\022\174\000\133\000\133\000\000\t\174\n\017\000\000\n\017\n\017\n\017\000\000\n\017\n\017\n\017\000\000\000\000\000\000\000\000\000\000\000\000\000\000\026\254\000\000\000\000\000\000\n\017\000\000\000\000\000\000\000\000\001\230\001\234\n\017\n\017\000\000\000\000\n\017\000\000\000\000\000\000\005\002\000\000\n\017\000\000\000\000\n\017\000\000\000\000\000\000\001\238\003\018\n\017\n\017\n\017\000\000\000\000\000\000\000\000\000\000\000\000\n\017\n\017\000\000\000\000\000\000\000\000\000\000\n\017\000\000\000\000\n\017\000\000\000\000\006\170\005n\005\002\000\000\n\017\000\000\003F\000\000\003Z\004\226\004\238\000\000\n\017\000\000\n\017\n\017\004\250\n\017\n\017\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\n\017\000\000\n\017\000\000\n\017\000\000\014\189\014\189\n\017\004\254\000\000\014\189\000\000\n\017\001\234\014\189\000\000\n\017\000\000\n\017\n\017\000\000\000\000\006\014\000\000\014\189\014\189\014\189\000\000\014\189\014\189\014\189\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\014\189\000\000\000\000\000\000\000\000\000\000\000\000\014\189\014\189\000\000\000\000\014\189\000\000\000\000\000\000\005\002\000\000\014\189\000\000\000\000\014\189\000\000\000\000\000\000\000\000\000\000\014\189\014\189\014\189\000\000\000\000\000\000\000\000\000\000\000\000\014\189\014\189\000\000\000\000\000\000\000\000\000\000\014\189\000\000\000\000\014\189\000\000\000\000\000\000\005n\000\000\000\000\014\189\000\000\000\000\000\000\000\000\000\000\000\000\015M\014\189\000\000\014\189\014\189\015M\014\189\014\189\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\014\189\000\000\014\189\000\000\014\189\000\000\n\021\n\021\014\189\015M\000\000\n\021\000\000\014\189\001\234\n\021\000\000\014\189\000\000\014\189\014\189\000\000\000\000\n\021\000\000\n\021\n\021\n\021\000\000\n\021\n\021\n\021\015M\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\015M\000\000\n\021\000\000\000\000\000\000\015M\015M\000\242\n\021\n\021\000\000\000\000\n\021\000\000\015M\015M\005\002\000\000\n\021\000\000\000\000\n\021\000\000\000\000\000\000\000\000\000\000\n\021\n\021\n\021\000\000\000\000\000\000\000\000\000\000\000\000\n\021\n\021\000\000\000\000\000\000\000\000\000\000\n\021\000\000\015M\n\021\000\000\000\000\000\000\005n\000\000\000\000\n\021\015M\000\000\000\000\000\000\000\000\000\000\000\000\n\021\000\000\n\021\n\021\000\000\n\021\n\021\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\n\021\000\000\n\021\000\000\n\021\014\193\014\193\000\000\n\021\000\000\014\193\000\000\000\000\n\021\014\193\000\000\000\000\n\021\000\000\n\021\n\021\000\000\005^\000\000\014\193\014\193\014\193\000\000\014\193\014\193\014\193\000\000\000\000\000\000\000\000\000\000\000\000\001\230\001\234\000\000\000\000\000\000\014\193\000\000\000\000\000\000\000\000\000\000\000\000\014\193\014\193\000\000\000\000\014\193\000\000\000\000\001\238\001\242\000\000\014\193\000\000\000\000\014\193\000\000\000\000\000\000\000\000\000\000\014\193\014\193\014\193\000\000\000\000\000\000\000\000\000\000\000\000\014\193\014\193\000\000\020\166\000\000\005\002\000\000\014\193\000\000\003F\014\193\003Z\004\226\004\238\014\193\000\000\000\000\014\193\000\000\004\250\000\000\0202\000\000\000\000\000\000\014\193\000\000\014\193\014\193\000\000\014\193\014\193\001\230\001\234\000\000\000\000\000\000\000\000\000\000\004\254\014\193\000\000\014\193\020~\014\193\003m\003m\000\000\014\193\000\000\003m\001\238\003\018\014\193\003m\000\000\000\000\014\193\000\000\014\193\014\193\000\000\000\000\000\000\003m\003m\003m\000\000\003m\003m\003m\000\000\000\000\000\000\000\000\003J\000\000\031V\000\000\000\000\000\000\003F\003m\003Z\004\226\004\238\000\000\000\000\000\000\003m\005N\004\250\000\000\003m\000\000\000\000\000\000\000\000\000\000\003m\000\000\000\000\003m\000\000\000\000\000\000\000\000\000\000\003m\003m\003m\004\254\000\000\000\000\005y\000\000\000\000\003m\003m\000\000\000\000\000\000\000\000\000\000\003m\000\000\000\000\003m\000\000\000\000\000\000\003m\031n\000\000\003m\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003m\000\000\003m\003m\000\000\003m\003m\001\230\001\234\000\000\000\000\000\000\000\000\000\000\000\000\003m\000\000\003m\000\000\003m\014\005\014\005\000\000\003m\000\000\014\005\001\238\003\018\003m\014\005\000\000\000\000\003m\000\000\003m\003m\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\003J\000\000\005\002\000\000\000\000\000\000\003F\014\005\003Z\004\226\004\238\000\000\001\230\001\234\014\005\005N\004\250\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\001\238\003\018\014\005\014\005\014\005\004\254\000\000\000\000\000\000\020\142\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\031\206\014\005\005\002\000\000\014\005\000\000\003F\000\000\003Z\004\226\004\238\000\000\014\005\000\000\014\005\014\005\004\250\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\014\r\014\r\000\000\014\005\004\254\014\r\000\000\000\000\014\005\014\r\000\000\000\000\014\005\000\000\014\005\014\005\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\000\000\000\000\000\000\000\000\000\000\014\r\000\000\000\000\000\000\000\000\000\000\000\000\014\r\005N\000\000\000\000\014\r\000\000\000\000\000\000\000\000\000\000\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\000\000\000\000\000\000\000\000\014\r\000\000\000\000\014\r\000\000\000\000\000\000\014\r\000\000\000\000\014\r\000\000\000\000\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\000\000\014\r\000\000\014\r\000\000\014\r\014\017\014\017\000\000\014\r\000\000\014\017\000\000\000\000\014\r\014\017\000\000\000\000\014\r\000\000\014\r\014\r\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\000\000\000\000\000\000\000\000\000\000\014\017\000\000\000\000\000\000\000\000\000\000\000\000\014\017\005\246\000\000\000\000\014\017\000\000\000\000\000\000\000\000\000\000\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\000\000\000\000\000\000\000\000\014\017\000\000\000\000\014\017\000\000\000\000\000\000\014\017\000\000\000\000\014\017\000\000\000\000\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\000\000\014\017\000\000\014\017\000\000\014\017\014\021\014\021\000\000\014\017\000\000\014\021\000\000\000\000\014\017\014\021\000\000\000\000\014\017\000\000\014\017\014\017\000\000\000\000\000\000\014\021\014\021\014\021\000\000\014\021\014\021\014\021\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\014\021\000\000\000\000\000\000\000\000\000\000\000\000\014\021\005N\000\000\000\000\014\021\000\000\000\000\000\000\000\000\000\000\014\021\000\000\000\000\014\021\000\000\000\000\000\000\000\000\000\000\014\021\014\021\014\021\000\000\000\000\000\000\000\000\000\000\000\000\014\021\014\021\000\000\000\000\000\000\000\000\000\000\014\021\000\000\000\000\014\021\000\000\000\000\000\000\014\021\000\000\000\000\014\021\000\000\000\000\000\000\000\000\000\000\000\000\000\000\014\021\000\000\014\021\014\021\000\000\014\021\014\021\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\014\021\000\000\014\021\000\000\014\021\014\025\014\025\000\000\014\021\000\000\014\025\000\000\000\000\014\021\014\025\000\000\000\000\014\021\000\000\014\021\014\021\000\000\000\000\000\000\014\025\014\025\014\025\000\000\014\025\014\025\014\025\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\014\025\000\000\000\000\000\000\000\000\000\000\000\000\014\025\005\246\000\000\000\000\014\025\000\000\000\000\000\000\000\000\000\000\014\025\000\000\000\000\014\025\000\000\000\000\000\000\000\000\000\000\014\025\014\025\014\025\000\000\000\000\000\000\000\000\000\000\000\000\014\025\014\025\000\000\000\000\000\000\000\000\000\000\014\025\000\000\000\000\014\025\000\000\000\000\000\000\014\025\000\000\000\000\014\025\000\000\000\000\000\000\000\000\000\000\000\000\000\000\014\025\000\000\014\025\014\025\000\000\014\025\014\025\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\014\025\000\000\014\025\000\000\014\025\r\189\r\189\000\000\014\025\000\000\r\189\000\000\000\000\014\025\r\189\000\000\000\000\014\025\000\000\014\025\014\025\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\000\000\r\189\005N\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\r\193\r\193\000\000\r\189\000\000\r\193\000\000\000\000\r\189\r\193\000\000\000\000\r\189\000\000\r\189\r\189\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\000\000\r\193\005\246\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\r\197\r\197\000\000\r\193\000\000\r\197\000\000\000\000\r\193\r\197\000\000\000\000\r\193\000\000\r\193\r\193\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\000\000\000\000\000\000\000\000\000\000\000\000\r\197\000\000\000\000\000\000\000\000\000\000\000\000\r\197\005N\000\000\000\000\r\197\000\000\000\000\000\000\000\000\000\000\r\197\000\000\000\000\r\197\000\000\000\000\000\000\000\000\000\000\r\197\r\197\r\197\000\000\000\000\000\000\000\000\000\000\000\000\r\197\r\197\000\000\000\000\000\000\000\000\000\000\r\197\000\000\000\000\r\197\000\000\000\000\000\000\r\197\000\000\000\000\r\197\000\000\000\000\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\000\000\r\197\000\000\r\197\000\000\r\197\r\201\r\201\000\000\r\197\000\000\r\201\000\000\000\000\r\197\r\201\000\000\000\000\r\197\000\000\r\197\r\197\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\000\000\r\201\005\246\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\000\000\000\000\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\000\000\000\000\r\201\000\000\000\000\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\r\205\r\205\000\000\r\201\000\000\r\205\000\000\000\000\r\201\r\205\000\000\000\000\r\201\000\000\r\201\r\201\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\000\000\r\205\005N\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\r\209\r\209\000\000\r\205\000\000\r\209\000\000\000\000\r\205\r\209\000\000\000\000\r\205\000\000\r\205\r\205\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\000\000\000\000\000\000\r\209\005\246\000\000\000\000\r\209\000\000\000\000\000\000\000\000\000\000\r\209\000\000\000\000\r\209\000\000\000\000\000\000\000\000\000\000\r\209\r\209\r\209\000\000\000\000\000\000\000\000\000\000\000\000\r\209\r\209\000\000\000\000\000\000\000\000\000\000\r\209\000\000\000\000\r\209\000\000\000\000\000\000\r\209\000\000\000\000\r\209\000\000\000\000\000\000\000\000\000\000\000\000\000\000\r\209\000\000\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\r\213\r\213\000\000\r\209\000\000\r\213\000\000\000\000\r\209\r\213\000\000\000\000\r\209\000\000\r\209\r\209\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\000\000\r\213\005N\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\r\217\r\217\000\000\r\213\000\000\r\217\000\000\000\000\r\213\r\217\000\000\000\000\r\213\000\000\r\213\r\213\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\000\000\r\217\005\246\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\014\t\014\t\000\000\r\217\000\000\014\t\000\000\000\000\r\217\014\t\000\000\000\000\r\217\000\000\r\217\r\217\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\000\000\014\t\005\246\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\r\253\r\253\000\000\014\t\000\000\r\253\000\000\000\000\014\t\r\253\000\000\000\000\014\t\000\000\014\t\014\t\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\000\000\r\253\005N\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\014\001\014\001\000\000\r\253\000\000\014\001\000\000\000\000\r\253\014\001\000\000\000\000\r\253\000\000\r\253\r\253\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\000\000\000\000\000\000\000\000\000\000\014\001\000\000\000\000\000\000\000\000\000\000\000\000\014\001\005\246\000\000\000\000\014\001\000\000\000\000\000\000\000\000\000\000\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\000\000\000\000\000\000\000\000\014\001\000\000\000\000\014\001\000\000\000\000\000\000\014\001\000\000\000\000\014\001\000\000\000\000\000\000\000\000\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\000\000\014\001\000\000\014\001\000\000\014\001\r\221\r\221\000\000\014\001\000\000\r\221\000\000\000\000\014\001\r\221\000\000\000\000\014\001\000\000\014\001\014\001\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\000\000\r\221\005N\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\r\225\r\225\000\000\r\221\000\000\r\225\000\000\000\000\r\221\r\225\000\000\000\000\r\221\000\000\r\221\r\221\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\000\000\r\225\005\246\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\r\229\r\229\000\000\r\225\000\000\r\229\000\000\000\000\r\225\r\229\000\000\000\000\r\225\000\000\r\225\r\225\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\000\000\r\229\005N\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\r\233\r\233\000\000\r\229\000\000\r\233\000\000\000\000\r\229\r\233\000\000\000\000\r\229\000\000\r\229\r\229\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\000\000\r\233\005\246\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\r\237\r\237\000\000\r\233\000\000\r\237\000\000\000\000\r\233\r\237\000\000\000\000\r\233\000\000\r\233\r\233\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\000\000\r\237\005N\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\r\241\r\241\000\000\r\237\000\000\r\241\000\000\000\000\r\237\r\241\000\000\000\000\r\237\000\000\r\237\r\237\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\000\000\r\241\005\246\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\r\245\r\245\000\000\r\241\000\000\r\245\000\000\000\000\r\241\r\245\000\000\000\000\r\241\000\000\r\241\r\241\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\000\000\r\245\005N\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\r\249\r\249\000\000\r\245\000\000\r\249\000\000\000\000\r\245\r\249\000\000\000\000\r\245\000\000\r\245\r\245\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\000\000\r\249\005\246\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\002\029\002\029\000\000\r\249\000\000\002\029\000\000\000\000\r\249\002\029\000\000\000\000\r\249\000\000\r\249\r\249\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\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\005\001\002\029\000\000\000\000\002\029\005\001\000\000\003\146\003j\000\000\000\000\003\014\002\029\t2\002\029\002\029\003z\002\029\002\029\000\000\000\000\000\000\000\000\000\000\000\000\005\001\001\238\002\029\tj\002\029\000\000\002\029\000\000\003\150\000\000\002\029\011\174\000\000\000\000\000\000\002\029\000\000\000\000\000\000\006\030\000\000\002\029\003\170\005\001\000\000\r\230\000\000\001\194\000\000\000\000\000\000\000\000\005\001\003Z\000\000\000\000\004\182\004\186\005\001\004\"\012A\004\190\000\000\004\198\000\000\r\254\007\138\005\001\005\001\000\000\000\000\000\000\000\000\000\000\000\000\004\173\000\000\007\142\007\150\007\154\000\000\007\158\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\007\166\007\170\000\000\000\000\000\000\014b\000\000\000\000\005\001\000\000\000\000\003-\003-\003-\000\000\000\000\003-\005\001\000\000\012A\000\000\003-\000\000\012A\012A\000\000\007\174\003-\000\000\000\000\012A\003-\005:\000\000\012A\004\173\000\000\000\000\003-\000\n\000\000\000\000\t\130\003-\000\000\000\000\000\000\000\000\000\000\019\206\000\000\000\000\003-\000\000\000\000\003-\003-\003-\000\000\000\000\000\000\000\000\000\000\003-\000\000\000\000\003-\003-\000\000\000\000\003-\003-\000\000\003-\003-\000\000\003-\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003-\003-\003-\000\000\003-\001\206\006\193\006\193\000\000\000\000\006\193\000\000\000\000\003-\003-\006\193\000\000\020\n\000\000\000\000\000\000\000\000\000\000\000\000\000\000\006\193\006\193\000\000\000\000\000\000\000\000\000\000\006\193\000\000\000\000\000\000\000\000\001\210\000\000\003-\000\000\000\000\000\000\000\000\000\000\003-\006\193\000\000\000\000\006\193\001\214\006\193\000\000\000\000\000\000\006\193\000\000\006\193\006\193\006\193\006\193\006\193\000\000\000\000\000\000\006\193\000\000\006\193\006\193\000\000\006\193\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\006\193\006\193\006\193\000\000\006\193\001\206\006\197\006\197\000\000\000\000\006\197\000\000\000\000\006\193\006\193\006\197\000\000\006\193\000\000\000\000\000\000\000\000\000\000\000\000\000\000\006\197\006\197\000\000\000\000\000\000\000\000\000\000\006\197\000\000\000\000\000\000\000\000\001\210\000\000\006\193\000\000\000\000\000\000\000\000\000\000\006\193\006\197\000\000\000\000\006\197\001\214\006\197\000\000\000\000\000\000\006\197\000\000\006\197\006\197\006\197\006\197\006\197\000\000\000\000\000\000\006\197\000\000\006\197\006\197\000\000\006\197\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\006\197\006\197\006\197\000\000\006\197\001\206\006\189\006\189\000\000\000\000\006\189\000\000\000\000\006\197\006\197\006\189\000\000\006\197\000\000\000\000\000\000\000\000\000\000\000\000\000\000\006\189\006\189\000\000\000\000\000\000\000\000\000\000\006\189\000\000\000\000\000\000\000\000\001\210\000\000\006\197\000\000\000\000\000\000\000\000\000\000\006\197\006\189\000\000\000\000\006\189\001\214\006\189\000\000\000\000\000\000\006\189\000\000\006\189\006\189\006\189\006\189\006\189\000\000\000\000\000\000\006\189\000\000\006\189\006\189\000\000\006\189\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\006\189\006\189\006\189\000\000\006\189\000\000\006%\006%\000\000\000\000\000\000\006%\000\000\006\189\006\189\006%\000\000\006\189\000\000\000\000\000\000\005\021\000\000\000\000\000\000\006%\000\250\006%\000\000\006%\003\254\006%\000\000\000\000\000\000\000\000\000\000\000\000\000\000\006\189\004*\000\000\000\000\006%\005\021\006\189\004.\000\000\000\000\000\000\006%\006%\000\000\000\000\000\000\000\000\006%\000\000\004:\000\000\006%\000\000\000\000\006%\000\000\021\230\000\000\000\000\000\000\006%\006%\006%\000\000\000\000\000\000\029\198\000\000\000\000\022J\000\000\000\000\000\000\000\000\000\000\022b\006%\006%\000\000\006%\000\000\000\000\000\000\006%\000\000\000\000\000\000\000\000\000\000\000\000\000\000\022j\000\000\000\000\006%\000\000\006%\006%\000\000\006%\006%\000\000\004\233\004\233\004\233\nV\000\000\004\233\000\000\022r\000\000\022\174\004\233\006%\005\021\005\021\006%\006%\004\233\000\000\000\000\000\000\004\233\000\000\000\000\000\000\000\000\000\000\006%\004\233\028f\000\000\026\254\028~\004\233\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\233\000\000\000\000\004\233\004\233\004\233\000\000\003\173\003\173\003\173\000\000\004\233\003\173\003\173\004\233\004\233\003\173\003\173\000\242\004\233\000\000\004\233\004\233\000\000\004\233\000\000\003\173\003\173\003\173\003\173\003\173\003\173\003\173\003\173\000\000\004\233\004\233\004\233\000\000\004\233\000\000\000\000\000\000\000\000\003\173\003\173\000\000\000\000\004\233\004\233\000\000\003\173\003\173\003\173\000\000\000\000\000\000\005\173\005\177\000\000\000\000\003\173\003\173\000\000\003\173\003\173\000\000\000\000\000\000\000\000\003\173\003\173\003\173\003\173\004\233\000\000\000\000\000\000\000\000\000\000\004\233\000\000\000\000\000\000\000\000\000\000\003\173\003\173\000\000\003\173\003\173\000\000\000\000\003\173\003\173\000\000\000\000\000\000\001\206\001\230\001\234\000\000\000\000\000\000\003\173\003\173\003\173\003\173\003\173\003\173\003\173\003\173\006\025\006\025\000\000\005\173\005\177\006\025\001\238\003\018\000\000\006\025\000\000\003\173\003\173\003\173\000\000\003\173\003\173\000\000\001\210\006\025\000\000\006\025\000\000\006\025\000\000\006\025\003\173\003\173\000\000\000\000\003B\001\214\005\002\000\000\000\000\000\000\003F\006\025\003Z\004\226\004\238\000\000\000\000\000\000\006\025\006\025\004\250\000\000\005\001\000\000\n\158\000\000\000\000\005\001\006\025\000\000\000\000\006\025\000\000\000\000\000\000\000\000\000\000\006\025\006\025\000\242\004\254\000\000\000\000\000\000\000\000\000\000\000\000\005\001\000\000\000\000\000\000\000\000\000\000\006\025\006\025\000\000\006\025\000\000\000\000\000\000\006\025\000\000\000\000\003\146\003j\000\000\000\000\003\014\000\000\t2\005\001\006\025\003z\006\025\006\025\000\000\006\025\006\025\000\000\005\001\000\000\000\000\001\238\000\000\tj\005\001\004\"\000\242\000\000\003\150\006\025\000\000\011\174\006\025\006\025\005\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\170\000\000\006\025\r\230\000\000\001\194\000\000\000\000\000\000\000\000\000\000\003Z\000\000\000\000\004\182\004\186\000\000\000\000\000\000\004\190\000\000\004\198\005\001\r\254\007\138\000\000\000\000\000\000\000\000\000\000\000\000\005\001\000\000\000\000\000\000\007\142\007\150\007\154\000\000\007\158\000\000\003\146\003j\000\000\000\000\003\014\000\000\t2\007\166\007\170\003z\000\000\000\000\014b\000\000\000\000\000\000\000\000\000\000\000\000\001\238\000\000\tj\000\000\000\000\000\000\000\000\003\150\000\000\012z\011\174\000\000\012\134\000\000\007\174\000\000\000\000\000\000\000\000\000\000\005:\003\170\000\000\000\000\r\230\000\000\001\194\000\000\000\000\000\000\000\000\n!\003Z\000\000\018J\004\182\004\186\000\000\000\000\000\000\004\190\000\000\004\198\017B\r\254\007\138\000\000\000\000\r\002\000\000\000\000\015\246\n!\000\000\n!\n!\007\142\007\150\007\154\000\000\007\158\000\000\r:\rR\rZ\rB\rb\000\000\000\000\007\166\007\170\000\000\000\000\000\000\014b\000\000\000\000\rj\rr\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\rz\000\000\000\000\012z\000\000\000\000\015v\000\000\007\174\000\242\000\000\000\000\000\000\000\000\005:\000\000\000\000\000\000\r\n\rJ\r\130\r\138\r\154\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\r\162\000\000\000\000\000\000\000\000\018R\000\000\000\000\000\000\000\000\000\000\r\170\000\000\b\138\000\000\000\000\017F\000\000\000\250\001\206\001\230\001\234\002V\000\000\000\000\r\202\n!\000\000\r\210\r\146\000\000\000\000\022\238\000\000\n!\r\178\005\t\000\000\004.\001\238\003\018\002\002\000\000\r\186\r\194\000\000\000\000\000\000\000\000\002\014\022\242\001\210\000\000\000\000\000\000\000\000\000\000\023\026\000\000\000\000\000\000\000\000\000\000\003V\001\214\003:\000\000\000\000\000\000\003F\022J\003Z\004\226\004\238\001\n\000\000\022b\000\000\000\000\004\250\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\014\022j\000\000\000\000\003\"\000\000\000\000\000\000\004\254\000\000\000\000\000\000\000\000\001\018\001\022\001\026\001\030\001\"\001&\022r\000\000\023\178\000\000\000\000\000\000\000\000\000\000\001*\000\000\0012\0016\000\000\000\000\000\000\000\000\000\000\001:\000\000\000\000\001>\000\000\000\000\023\194\000\000\000\000\000\000\000\000\0056\000\000\005:\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001B\001F\001J\001N\001R\000\000\000\000\000\000\000\000\000\000\000\000\001V\000\000\n=\000\000\001Z\000\000\000\000\000\000\001\206\003\146\003j\000\000\000\000\003\014\000\000\001^\000\000\000\000\003z\000\000\000\000\001b\000\000\000\000\000\000\n=\000\000\000\000\001\238\000\000\000\000\000\000\001\158 \230\000\000\003\150\000\000\000\000\000\000\001\162\001\210\001\166\000\000\000\000\000\000\001\170\000\000\001\174\001\178\003\170\000\000\000\000\003\190\001\214\001\194\000\000\000\000\000\000\000\000\000\000\003Z\000\000\000\000\004\182\004\186\000\000\000\000\000\000\004\190\000\000\004\198\007~\000\000\007\138\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\007\142\007\150\007\154\000\000\007\158\000\000\tu\tu\000\000\000\000\000\000\tu\000\000\007\166\007\170\tu\000\000\007\254\000\000\000\000\000\000\000\000\000\000\000\000\000\000\tu\000\000\tu\000\000\tu\000\000\tu\000\000\n=\000\000\000\000\000\000\000\000\000\000\007\174\000\000\n=\000\000\tu\000\000\005:\000\000\000\000\000\000\000\000\tu\tu\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\tu\000\000\000\000\tu\000\000\000\000\000\000\000\000\000\000\tu\tu\tu\000\000\000\000\000\000\015\157\015\157\000\000\000\000\000\000\015\157\000\000\000\000\000\000\015\157\tu\000\000\000\000\tu\000\000\000\000\000\000\tu\000\000\015\157\000\000\015\157\000\000\015\157\000\000\015\157\000\000\000\000\tu\000\000\tu\tu\000\000\tu\tu\000\000\000\000\015\157\000\000\000\000\000\000\000\000\000\000\tu\015\157\015\157\000\000\tu\000\000\000\000\005\n\tu\000\000\000\000\015\157\000\000\000\000\015\157\000\000\000\000\006\030\000\000\tu\015\157\015\157\015\157\000\000\000\000\000\000\015\161\015\161\000\000\000\000\000\000\015\161\000\000\000\000\000\000\015\161\015\157\000\000\000\000\015\157\000\000\000\000\000\000\015\157\000\000\015\161\000\000\015\161\000\000\015\161\000\000\015\161\000\000\000\000\015\157\000\000\015\157\015\157\000\000\015\157\015\157\000\000\000\000\015\161\000\000\005\026\000\000\000\000\000\000\000\000\015\161\015\161\000\000\015\157\000\000\000\000\005\n\015\157\000\000\000\000\015\161\000\000\000\000\015\161\000\000\000\000\000\000\000\000\015\157\015\161\015\161\015\161\000\000\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\161\000\000\000\000\015\161\000\000\000\000\000\000\015\161\000\000\000\000\000\000\000\000\000\000\003\146\003j\000\000\000\000\003\014\015\161\t2\015\161\015\161\003z\015\161\015\161\000\000\000\000\000\000\000\000\005\026\000\000\000\000\001\238\000\000\tj\000\000\000\000\015\161\000\000\003\150\000\000\015\161\011\174\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\012\"\015\161\003\170\000\000\000\000\017b\000\000\001\194\000\000\000\000\000\000\000\000\007\221\003Z\000\000\001\189\004\182\004\186\000\000\000\000\000\000\004\190\000\000\004\198\000\000\r\254\007\138\000\000\000\000\r\002\000\000\000\000\007\221\000\000\000\000\001\189\007\221\007\142\007\150\007\154\000\000\007\158\000\000\r:\rR\rZ\rB\rb\000\000\000\000\007\166\007\170\000\000\000\000\000\000\000\000\000\000\000\000\rj\rr\b\129\000\000\000\000\b\129\000\000\000\000\000\000\000\000\rz\000\000\000\000\000\000\000\000\000\000\017z\000\000\007\174\000\242\000\000\001\197\b\129\b\129\005:\b\129\b\129\000\000\r\n\rJ\r\130\r\138\r\154\000\000\000\000\r\002\000\000\000\000\000\000\000\000\000\000\001\197\007\221\r\162\000\000\000\000\000\000\b\129\001\189\r:\rR\rZ\rB\rb\r\170\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\rj\rr\000\000\b\129\r\202\001\189\000\000\r\210\r\146\000\000\rz\000\000\000\000\001\189\r\178\000\000\000\000\000\000\b\129\000\242\000\000\001\189\r\186\r\194\000\000\000\000\000\000\000\000\r\n\rJ\r\130\r\138\r\154\000\000\000\000\000\000\000\000\000\000\b\129\000\000\b\129\000\000\000\000\r\162\000\000\000\000\000\000\000\000\001\197\000\000\000\000\000\000\b\022\b\129\r\170\000\000\b\129\b\129\000\000\000\000\001\193\b\129\000\000\b\129\000\000\000\000\000\000\b\129\r\202\001\197\000\000\r\210\r\146\000\000\r\002\000\000\000\000\001\197\r\178\000\000\001\193\000\000\000\000\000\000\000\000\001\197\r\186\r\194\r:\rR\rZ\rB\rb\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\rj\rr\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\rz\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\r\n\rJ\r\130\r\138\r\154\000\000\000\000\000\000\002\005\000\000\000\000\000\000\000\000\002\005\000\000\r\162\001\234\002\005\000\000\000\000\001\193\000\000\000\000\000\000\000\000\t\245\r\170\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\r\202\001\193\000\000\r\210\r\146\002\005\000\000\000\000\000\000\001\193\r\178\000\000\002\005\002\005\000\000\000\000\000\000\001\193\r\186\r\194\005\002\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\005n\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\r\002\005\000\000\002\005\000\000\002\r\002\005\002\005\001\234\002\r\000\000\000\000\000\000\000\000\000\000\000\000\002\005\t\253\000\000\002\r\000\000\000\000\000\000\002\r\002\005\002\r\000\000\000\000\000\000\002\005\000\000\000\000\000\000\000\000\000\000\002\005\000\000\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\000\000\005\002\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\005n\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\t\002\r\000\000\002\r\000\000\002\t\002\r\002\r\001\234\002\t\000\000\000\000\000\000\000\000\000\000\000\000\002\r\t\249\000\000\002\t\000\000\000\000\000\000\002\t\002\r\002\t\000\000\000\000\000\000\002\r\000\000\000\000\000\000\000\000\000\000\002\r\000\000\002\t\000\000\000\000\000\000\000\000\000\000\000\000\002\t\002\t\000\000\000\000\000\000\000\000\000\000\000\000\005\002\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\005n\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\145\002\t\000\000\002\t\000\000\003\145\002\t\002\t\001\234\003\145\000\000\000\000\000\000\000\000\000\000\000\000\002\t\t\241\000\000\003\145\000\000\000\000\000\000\003\145\002\t\003\145\000\000\000\000\000\000\002\t\000\000\000\000\000\000\000\000\000\000\002\t\000\000\003\145\000\000\000\000\000\000\000\000\000\000\000\000\003\145\002\001\000\000\000\000\000\000\000\000\000\000\000\000\005\002\000\000\003\145\000\000\000\000\003\145\000\000\000\000\000\000\000\000\000\000\003\145\003\145\003\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\003\145\003\145\000\000\003\145\000\000\000\000\000\000\005n\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\141\003\145\000\000\003\145\000\000\003\141\003\145\003\145\001\234\003\141\000\000\000\000\000\000\000\000\000\000\000\000\003\145\t\241\000\000\003\141\000\000\000\000\000\000\003\141\003\145\003\141\000\000\000\000\000\000\003\145\003\146\003j\000\000\000\000\003\014\003\145\t2\003\141\000\000\003z\000\000\000\000\000\000\000\000\003\141\002\001\000\000\000\000\000\000\001\238\000\000\tj\005\002\000\000\003\141\000\000\003\150\003\141\000\000\011\174\000\000\000\000\000\000\003\141\003\141\003\141\000\000\000\000\028\174\000\000\003\170\000\000\000\000\027\022\000\000\001\194\000\000\000\000\000\000\003\141\003\141\003Z\003\141\000\000\004\182\004\186\005n\000\000\000\000\004\190\000\000\004\198\000\000\r\254\007\138\000\000\000\000\003\141\000\000\003\141\000\000\000\000\003\141\003\141\000\000\007\142\007\150\007\154\000\000\007\158\000\000\000\000\003\141\000\000\000\000\000\000\000\000\000\000\007\166\007\170\003\141\000\000\000\000\027\026\000\000\003\141\003\146\003j\000\000\000\000\003\014\003\141\t2\000\000\000\000\003z\000\000\000\000\000\000\000\000\000\000\000\000\029z\000\000\007\174\001\238\000\000\tj\000\000\000\000\005:\000\000\003\150\000\000\000\000\011\174\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\170\000\000\000\000\r\230\000\000\001\194\000\000\000\000\000\000\000\000\000\000\003Z\000\000\000\000\004\182\004\186\000\000\000\000\000\000\004\190\000\000\004\198\000\000\r\254\007\138\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\007\142\007\150\007\154\000\000\007\158\000\000\003\146\003j\000\000\000\000\003\014\000\000\t2\007\166\007\170\003z\000\000\000\000\014b\000\000\000\000\000\000\000\000\000\000\000\000\001\238\000\000\tj\000\000\000\000\000\000\000\000\003\150\000\000\000\000\011\174\000\000\027\182\000\000\007\174\000\000\000\000\000\000\000\221\000\000\005:\003\170\000\000\000\221\r\230\000\000\001\194\000\221\000\000\000\000\000\000\000\000\003Z\000\000\000\000\004\182\004\186\000\221\000\000\000\221\004\190\000\221\004\198\000\221\r\254\007\138\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\221\007\142\007\150\007\154\000\000\007\158\000\000\000\221\000\000\000\000\000\000\000\221\000\000\000\000\007\166\007\170\000\000\000\221\000\000\014b\000\221\000\000\000\000\000\000\000\000\000\000\000\221\000\221\000\242\000\000\000\000\000\000\001!\000\000\000\000\000\221\000\221\001!\028\022\000\000\007\174\001!\000\221\000\000\000\000\000\221\005:\000\000\000\000\000\221\000\000\001!\000\000\001!\000\000\001!\000\000\001!\000\000\000\000\000\221\000\000\000\221\000\000\000\000\000\221\000\221\b\149\000\000\001!\b\149\000\000\000\000\000\000\000\000\000\221\001!\000\000\000\000\000\000\001!\000\000\000\221\000\221\000\000\000\000\001!\b\149\b\149\001!\b\149\b\149\000\221\000\000\000\221\001!\001!\000\242\000\000\000\000\000\000\000\229\000\000\000\000\001!\001!\000\229\000\000\000\000\000\000\000\229\001!\b\149\000\000\001!\000\000\000\000\000\000\001!\000\000\000\229\000\000\000\229\000\000\000\229\000\000\000\229\000\000\000\000\001!\000\000\001!\000\242\000\000\001!\001!\000\000\000\000\000\229\000\000\000\000\000\000\000\000\000\000\001!\000\229\000\000\b\149\000\000\000\229\000\000\001!\001!\000\000\000\000\000\229\000\000\000\000\000\229\000\000\000\000\001!\000\000\001!\000\229\000\229\000\242\b\149\000\000\b\149\000\225\000\000\000\000\000\229\000\229\000\225\000\000\000\000\000\000\000\225\000\229\b\149\b\149\000\229\000\000\b\030\b\149\000\229\000\000\000\225\b\149\000\225\b\149\000\225\000\000\000\225\b\149\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\000\000\229\000\225\000\000\000\000\000\000\000\225\000\000\000\229\000\229\000\000\000\000\000\225\000\000\000\000\000\225\000\000\000\000\000\229\001\n\000\229\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\000\000\001*\000\000\0012\0016\000\000\000\000\000\000\000\225\000\000\001:\000\000\000\000\001>\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\000\000\001B\001F\001J\001N\001R\000\000\000\000\000\000\000\000\000\000\000\000\001V\000\000\000\000\000\000\001Z\001\225\000\000\000\000\000\000\000\000\001\225\000\000\000\000\000\000\001\225\001^\000\000\000\000\000\000\000\000\000\000\001b\000\000\000\000\001\225\000\000\000\000\000\000\001\225\000\000\001\225\000\000\001\158!\002\000\000\000\000\000\000\000\000\000\000\001\162\000\000\001\166\001\225\000\000\001\225\001\170\000\000\001\174\001\178\001\225\000\000\000\000\000\000\000\000\000\000\005\173\000\000\000\000\000\000\001\225\000\000\000\000\001\225\000\000\000\000\000\000\000\000\000\000\001\225\001\225\001\225\000\000\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\225\007\246\000\000\001\225\000\000\000\000\000\000\001\225\003\146\003j\000\000\000\000\003\014\000\000\000\000\000\000\000\000\003z\001\225\000\000\001\225\000\000\007\250\001\225\001\225\000\000\000\000\001\238\000\000\005\173\000\000\000\000\000\000\001\225\003\150\000\000\000\000\000\000\000\000\000\000\001\225\001\225\000\000\000\000\000\000\000\000\001\225\000\000\003\170\000\000\000\000\003\190\001\225\001\194\000\000\000\000\000\000\000\000\000\000\003Z\000\000\000\000\004\182\004\186\000\000\000\000\000\000\004\190\000\000\004\198\007~\000\000\007\138\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\007\142\007\150\007\154\000\000\007\158\000\000\015\153\015\153\000\000\000\000\000\000\015\153\000\000\007\166\007\170\015\153\000\000\007\254\000\000\000\000\000\000\000\000\000\000\000\000\000\000\015\153\000\000\015\153\000\000\015\153\000\000\015\153\000\000\t\030\000\000\000\000\b\186\000\000\000\000\007\174\000\000\t\014\000\000\015\153\000\000\005:\000\000\000\000\000\000\000\000\015\153\015\153\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\015\153\000\000\000\000\015\153\000\000\000\000\000\000\000\000\000\000\015\153\015\153\015\153\000\000\000\000\000\000\015\149\015\149\000\000\000\000\000\000\015\149\000\000\000\000\000\000\015\149\015\153\000\000\000\000\015\153\000\000\000\000\000\000\015\153\000\000\015\149\000\000\015\149\000\000\015\149\000\000\015\149\000\000\000\000\015\153\000\000\015\153\015\153\000\000\015\153\015\153\000\000\000\000\015\149\000\000\000\000\000\000\000\000\000\000\000\000\015\149\015\149\000\000\015\153\000\000\000\000\000\000\015\153\000\000\000\000\015\149\000\000\000\000\015\149\000\000\000\000\006\030\000\000\015\153\015\149\015\149\015\149\000\000\000\000\000\000\ty\ty\000\000\000\000\000\000\ty\000\000\000\000\000\000\ty\015\149\000\000\000\000\015\149\000\000\000\000\000\000\015\149\000\000\ty\000\000\ty\000\000\ty\000\000\ty\000\000\000\000\015\149\000\000\015\149\015\149\000\000\015\149\015\149\000\000\000\000\ty\000\000\000\000\000\000\000\000\000\000\t\242\ty\ty\000\000\015\149\000\000\000\000\000\000\015\149\000\000\000\000\ty\000\000\000\000\ty\000\000\000\000\000\000\000\000\015\149\ty\ty\000\242\000\000\000\000\003-\003-\000\000\000\000\003-\000\000\000\000\000\000\000\000\003-\000\000\ty\000\000\000\000\ty\000\000\000\000\000\000\ty\003-\000\000\000\000\000\000\000\000\000\000\000\000\003-\000\n\000\000\ty\000\000\ty\ty\000\000\ty\ty\000\000\000\000\000\000\000\000\003-\000\000\000\000\003-\ty\003-\000\000\000\000\ty\000\000\000\000\003-\ty\001\181\003-\003-\000\000\000\000\003-\003-\000\000\003-\003-\ty\003-\000\000\000\000\r\002\000\000\000\000\000\000\000\000\000\000\001\181\000\000\003-\003-\003-\000\000\003-\000\000\r:\rR\rZ\rB\rb\000\000\000\000\003-\003-\000\000\000\000\003-\000\000\000\000\000\000\rj\rr\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\rz\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003-\000\242\000\000\000\000\003-\000\000\003-\000\000\000\000\000\000\r\n\rJ\r\130\r\138\r\154\000\000\000\000\000\000\002\001\000\000\000\000\000\000\000\000\002\001\000\000\r\162\001\234\002\001\000\000\000\000\001\181\000\000\000\000\000\000\000\000\t\241\r\170\002\001\000\000\000\000\000\000\002\001\000\000\002\001\000\000\000\000\000\000\t5\t5\t5\r\202\001\181\t5\r\210\r\146\002\001\000\000\t5\000\000\001\181\r\178\000\000\002\001\020\246\000\000\000\000\000\000\t5\r\186\r\194\005\002\000\000\002\001\000\000\t5\002\001\000\000\000\000\000\000\t5\000\000\002\001\002\001\002\001\000\000\000\000\000\000\000\000\t5\000\000\000\000\t5\t5\t5\000\000\000\000\000\000\002\001\002\001\t5\002\001\000\000\t5\t5\005n\000\000\000\000\t5\000\000\t5\t5\000\000\t5\000\000\000\000\002\001\000\000\002\001\000\000\000\000\002\001\002\001\000\000\t5\t5\t5\000\000\t5\000\000\000\000\002\001\000\000\000\000\000\000\000\000\000\000\t5\t5\002\001\000\000\000\000\000\000\000\000\002\001\000\000\000\000\006Q\006Q\000\000\002\001\000\000\006Q\000\000\000\000\000\000\006Q\000\000\000\000\000\000\000\000\000\000\000\000\t5\000\000\000\000\006Q\000\000\006Q\t5\006Q\000\000\006Q\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\006Q\000\000\000\000\000\000\000\000\000\000\000\000\006Q\006Q\000\000\006M\t\198\000\000\n\158\000\000\006M\000\000\006Q\000\000\006M\006Q\000\000\000\000\000\000\000\000\000\000\006Q\006Q\000\242\006M\000\000\006M\000\000\006M\000\000\006M\000\000\000\000\000\000\000\000\000\000\000\000\006Q\000\000\000\000\006Q\000\000\006M\000\000\006Q\000\000\000\000\000\000\000\000\006M\nB\000\000\000\000\000\000\000\000\006Q\000\000\006Q\006Q\006M\006Q\006Q\006M\000\000\000\000\000\000\000\000\000\000\006M\006M\000\242\000\000\000\000\000\000\006Q\000\000\000\000\000\000\006Q\000\000\000\000\000\000\000\000\000\000\006M\000\000\000\000\006M\000\000\006Q\000\000\006M\000\000\000\000\015\165\015\165\000\000\000\000\000\000\015\165\000\000\000\000\006M\015\165\006M\006M\000\000\006M\006M\000\000\000\000\000\000\000\000\015\165\000\000\015\165\000\000\015\165\000\000\015\165\000\000\006M\000\000\000\000\000\000\006M\000\000\000\000\000\000\000\000\000\000\015\165\000\000\000\000\000\000\000\000\006M\000\000\015\165\015\165\000\000\015\169\015\169\000\000\000\000\000\000\015\169\000\000\015\165\000\000\015\169\015\165\000\000\000\000\000\000\000\000\000\000\015\165\015\165\000\242\015\169\000\000\015\169\000\000\015\169\000\000\015\169\000\000\000\000\000\000\000\000\000\000\000\000\015\165\000\000\000\000\015\165\000\000\015\169\000\000\015\165\000\000\000\000\000\000\000\000\015\169\nB\000\000\000\000\000\000\000\000\015\165\000\000\015\165\015\165\015\169\015\165\015\165\015\169\000\000\000\000\000\000\000\000\000\000\015\169\015\169\000\242\000\000\000\000\000\000\015\165\000\000\000\000\000\000\015\165\000\000\000\000\000\000\000\000\000\000\015\169\000\000\000\000\015\169\000\000\015\165\000\000\015\169\000\000\000\000\006e\t\198\000\000\000\000\000\000\006e\000\000\000\000\015\169\006e\015\169\015\169\000\000\015\169\015\169\000\000\000\000\000\000\000\000\006e\000\000\006e\000\000\006e\000\000\006e\000\000\015\169\000\000\000\000\000\000\015\169\000\000\000\000\000\000\000\000\000\000\006e\000\000\000\000\000\000\000\000\015\169\000\000\006e\nB\000\000\006i\006i\000\000\000\000\000\000\006i\000\000\006e\000\000\006i\006e\000\000\000\000\000\000\000\000\000\000\006e\006e\000\242\006i\000\000\006i\000\000\006i\000\000\006i\000\000\000\000\000\000\000\000\000\000\000\000\006e\000\000\000\000\006e\000\000\006i\000\000\006e\000\000\000\000\000\000\000\000\006i\006i\000\000\000\000\000\000\000\000\006e\000\000\006e\006e\006i\006e\006e\006i\000\000\000\000\000\000\000\000\000\000\006i\006i\006i\000\000\000\000\000\000\006e\000\000\000\000\000\000\006e\000\000\000\000\000\000\000\000\000\000\006i\000\000\000\000\006i\000\000\006e\000\000\006i\000\000\000\000\003\146\003j\000\000\000\000\003\014\000\000\t2\000\000\006i\003z\006i\006i\000\000\006i\006i\000\000\000\000\000\000\000\000\001\238\000\000\tj\000\000\000\000\000\000\000\000\003\150\006i\000\000\011\174\000\000\006i\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\170\000\000\nj\011\246\000\000\001\194\000\000\000\000\003\137\000\000\000\000\003Z\000\000\003\137\004\182\004\186\001\234\003\137\000\000\004\190\000\000\004\198\000\000\r\254\007\138\000\000\000\000\003\137\000\000\000\000\000\000\003\137\000\000\003\137\000\000\007\142\007\150\007\154\000\000\007\158\000\000\000\000\000\000\000\000\000\000\003\137\000\000\000\000\007\166\007\170\000\000\000\000\003\137\000\000\000\000\000\000\000\000\000\000\000\000\000\000\005\002\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\007\174\000\000\000\000\003\133\000\000\000\000\005:\000\000\003\133\000\000\000\000\001\234\003\133\003\137\003\137\000\000\003\137\000\000\000\000\000\000\005n\000\000\003\133\000\000\000\000\000\000\003\133\000\000\003\133\bm\000\000\003\137\bm\003\137\000\000\000\000\003\137\003\137\000\000\000\000\003\133\000\000\000\000\000\000\000\000\000\000\003\137\003\133\000\000\bm\bm\000\000\bm\bm\003\137\005\002\000\000\003\133\000\000\003\137\003\133\000\000\000\000\000\000\000\000\003\137\003\133\003\133\003\133\000\000\000\000\000\000\000\000\000\000\bm\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\133\003\133\000\000\003\133\021\154\000\000\000\000\005n\000\000\000\000\000\000\000\000\bm\000\000\000\000\000\000\000\000\000\000\003\133\000\000\003\133\r\002\000\000\003\133\003\133\021\158\000\000\bm\000\000\000\000\000\000\000\000\000\000\003\133\000\000\r:\rR\rZ\rB\rb\000\000\003\133\000\000\000\000\000\000\000\000\003\133\bm\000\000\bm\rj\rr\003\133\000\000\000\000\000\000\000\000\000\000\000\000\000\000\rz\bm\bm\000\000\000\000\b\030\bm\000\000\000\000\000\242\bm\000\000\bm\000\000\000\000\000\000\bm\000\000\r\n\rJ\r\130\r\138\r\154\000\000\000\000\000\000\000\000\001u\000\000\000\000\000\000\000\000\001u\r\162\000\000\000\000\001u\000\000\000\000\000\000\000\000\000\000\000\000\000\000\r\170\000\000\001u\000\000\001u\000\000\001u\000\000\001u\000\000\000\000\000\000\000\000\000\000\r\202\000\000\021\162\r\210\r\146\021\178\001u\000\000\000\000\000\000\r\178\000\000\000\000\001u\000\000\000\000\000\000\001u\r\186\r\194\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\001q\000\000\000\000\000\000\001u\001q\000\000\000\000\000\000\001q\001u\000\000\000\000\001u\000\000\000\000\000\000\001u\000\000\001q\000\000\001q\000\000\001q\000\000\001q\000\000\000\000\001u\000\000\001u\001u\000\000\001u\001u\000\000\000\000\001q\000\000\000\000\000\000\000\000\000\000\001u\001q\000\000\000\000\000\000\001q\000\000\000\000\001u\000\000\000\000\001q\000\000\000\000\001q\000\000\000\000\000\000\000\000\001u\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\001\173\001q\000\000\001q\001q\001\173\001q\001q\014\225\001\173\000\000\000\000\000\000\000\000\000\000\000\000\001q\014\225\000\000\001\173\000\000\001\173\000\000\001\173\001q\001\173\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001q\000\000\001\173\000\000\000\000\000\000\000\000\000\000\000\000\001\173\014\225\000\000\000\000\000\000\000\000\000\000\002\021\014\225\000\000\000\000\000\000\002\021\001\173\000\000\020\022\002\021\000\000\003\014\001\173\001\173\001\173\000\000\000\000\000\000\000\000\002\021\000\000\000\000\000\000\002\021\000\000\002\021\000\000\000\000\001\173\000\000\000\000\014\225\000\000\000\000\000\000\014\225\000\000\002\021\000\000\000\000\000\000\000\000\000\000\000\000\002\021\000\000\001\173\000\000\001\173\001\173\020\026\001\173\001\173\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&\031\030\000\000\001\173\000\000\000\000\000\000\000\000\003\146\003j\000\000\000\000\003\014\002\021\001\173\000\000\002\021\003z\000\000\000\000\002\021\000\000\000\000\000\000\004\194\000\000\000\000\001\238\000\000\000\000\007\170\002\021\000\000\002\021\003\150\000\000\002\021\002\021\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\021\000\000\003\170\000\000\000\000\003\190\000\000\001\194\002\021\000\000\000\000\000\000\000\000\003Z\000\000\000\000\004\182\004\186\000\000\002\021\000\000\004\190\000\000\004\198\007~\000\000\007\138\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\007\142\007\150\007\154\000\000\007\158\000\000\000\000\007-\000\000\000\000\000\000\000\000\000\000\007\166\007\170\003j\000\000\007\254\003\014\000\000\000\000\000\000\000\000\003z\000\000\000\000\000\000\000\000\007-\000\000\000\000\000\000\000\000\001\238\000\000\000\000\000\000\003~\000\000\007\174\000\000\000\000\000\000\011\150\000\000\005:\000\000\003\130\000\000\004Z\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\154\000\000\001\194\000\000\000\000\000\000\000\000\000\000\003Z\000\000\000\000\004\162\n\218\000\000\000\000\000\000\n\222\n\226\n\238\000\000\000\000\007\138\000\000\000\000\000\000\000\000\000\000\000\000\b\"\000\000\000\000\000\000\000\000\007\150\007\154\003\146\003j\000\000\000\000\003\014\000\000\000\000\000\000\000\000\003z\007\166\007\170\000\000\000\000\000\000\000\000\b\210\000\000\000\000\001\238\000\000\000\000\000\000\000\000\000\000\000\000\003\150\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\007\174\n\246\000\000\000\000\003\170\011\014\005:\003\190\000\000\001\194\000\000\000\000\000\000\000\000\000\000\003Z\000\000\000\000\004\182\004\186\000\000\000\000\000\000\004\190\000\000\004\198\007~\000\000\007\138\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b~\007\142\007\150\007\154\000\000\007\158\000\000\003\146\003j\000\000\000\000\003\014\000\000\000\000\007\166\007\170\003z\000\000\007\254\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\238\000\000\000\000\000\000\000\000\000\000\000\000\003\150\000\000\000\000\000\000\000\000\000\000\000\000\007\174\000\000\000\000\000\000\000\000\000\000\005:\003\170\000\000\000\000\003\190\000\000\001\194\000\000\000\000\000\000\000\000\000\000\003Z\000\000\000\000\004\182\004\186\000\000\000\000\000\000\004\190\000\000\004\198\007~\000\000\007\138\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\158\007\142\007\150\007\154\000\000\007\158\000\000\003\146\003j\000\000\000\000\003\014\000\000\000\000\007\166\007\170\003z\000\000\007\254\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\238\000\000\000\000\000\000\000\000\000\000\000\000\003\150\000\000\000\000\000\000\000\000\000\000\000\000\007\174\000\000\000\000\000\000\000\000\000\000\005:\003\170\000\000\000\000\003\190\000\000\001\194\000\000\000\000\000\000\000\000\000\000\003Z\000\000\000\000\004\182\004\186\000\000\000\000\000\000\004\190\000\000\004\198\007~\000\000\007\138\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0071\007\142\007\150\007\154\000\000\007\158\000\000\003\146\003j\000\000\000\000\003\014\000\000\000\000\007\166\007\170\003z\000\000\007\254\000\000\000\000\0071\000\000\000\000\000\000\000\000\001\238\000\000\000\000\000\000\000\000\000\000\000\000\003\150\000\000\000\000\000\000\000\000\000\000\000\000\007\174\000\000\000\000\000\000\000\000\000\000\005:\003\170\000\000\000\000\003\190\000\000\001\194\000\000\000\000\000\000\000\000\000\000\003Z\000\000\000\000\004\182\004\186\000\000\000\000\000\000\004\190\000\000\004\198\007~\000\000\007\138\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\015.\007\142\007\150\007\154\000\000\007\158\000\000\003\146\003j\000\000\000\000\003\014\000\000\000\000\007\166\007\170\003z\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\238\000\000\000\000\000\000\000\000\000\000\000\000\003\150\000\000\000\000\000\000\000\000\000\000\000\000\007\174\000\000\000\000\000\000\000\000\000\000\005:\003\170\000\000\000\000\003\190\000\000\001\194\000\000\000\000\000\000\000\000\000\000\003Z\000\000\000\000\004\182\004\186\000\000\000\000\000\000\004\190\000\000\004\198\007~\000\000\007\138\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\015:\007\142\007\150\007\154\000\000\007\158\000\000\003\146\003j\000\000\000\000\003\014\000\000\000\000\007\166\007\170\003z\000\000\007\254\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\238\000\000\000\000\000\000\000\000\000\000\000\000\003\150\000\000\000\000\000\000\000\000\000\000\000\000\007\174\000\000\000\000\000\000\000\000\000\000\005:\003\170\000\000\000\000\003\190\000\000\001\194\000\000\000\000\000\000\000\000\000\000\003Z\000\000\000\000\004\182\004\186\000\000\000\000\000\000\004\190\000\000\004\198\007~\000\000\007\138\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\015F\007\142\007\150\007\154\000\000\007\158\000\000\003\146\003j\000\000\000\000\003\014\000\000\000\000\007\166\007\170\003z\000\000\007\254\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\238\000\000\000\000\000\000\000\000\000\000\000\000\003\150\000\000\000\000\000\000\000\000\000\000\000\000\007\174\000\000\000\000\000\000\000\000\000\000\005:\003\170\000\000\000\000\003\190\000\000\001\194\000\000\005\001\000\000\000\000\000\000\003Z\005\001\000\000\004\182\004\186\005\001\000\000\000\000\004\190\000\000\004\198\007~\000\000\007\138\000\000\005\001\000\000\000\000\000\000\005\001\000\000\005\001\000\000\000\000\007\142\007\150\007\154\005\001\007\158\000\000\000\000\000\000\005\001\005\001\000\000\000\000\005\001\007\166\007\170\000\000\005\001\007\254\000\000\000\000\000\000\000\000\005\001\000\000\000\000\000\000\005\001\000\000\005\001\005\001\000\000\000\000\000\000\000\000\000\000\005\001\004\"\000\000\000\000\007\174\005\001\000\000\000\000\000\000\000\000\005:\000\000\005\001\000\000\000\000\000\000\005\001\000\000\n\158\005\001\000\000\000\000\005\001\005\001\000\000\005\001\000\000\000\000\000\000\000\000\000\000\005\001\004\"\000\242\005\001\000\000\005\001\000\000\000\000\005\001\005\001\005\001\000\000\000\000\000\000\nV\000\000\005\001\005\001\000\000\005\001\000\000\007U\000\000\005\001\000\000\000\000\005\001\000\000\000\000\003j\000\000\030f\003\014\000\000\005\001\000\000\005\001\003z\000\000\005\001\005\001\000\000\007U\000\000\000\000\000\000\000\000\001\238\000\000\005\001\000\000\003~\000\000\000\000\000\000\000\000\000\000\005\001\000\000\000\000\000\000\003\130\026~\004Z\000\000\000\000\000\000\000\000\005\001\000\000\000\000\004\154\000\000\001\194\000\000\000\000\000\000\000\000\000\000\003Z\000\000\000\000\004\162\n\218\000\000\000\000\000\000\n\222\n\226\n\238\000\000\000\000\007\138\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\t\005\000\000\000\000\007\150\007\154\t\005\000\000\000\000\000\000\t\005\000\000\000\000\000\000\000\000\000\000\007\166\007\170\000\000\000\000\t\005\000\000\000\000\000\000\t\005\000\000\t\005\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\t\005\000\000\000\000\000\000\007\174\n\246\000\000\t\005\000\000\011\014\005:\t\005\000\000\000\000\000\000\000\000\000\000\t\005\000\000\000\000\t\005\000\000\000\000\000\000\000\000\000\000\t\005\t\005\000\242\000\000\000\000\000\000\t\001\000\000\000\000\t\005\t\005\t\001\000\000\000\000\000\000\t\001\t\005\000\000\000\000\t\005\000\000\000\000\000\000\t\005\000\000\t\001\000\000\000\000\000\000\t\001\000\000\t\001\000\000\000\000\t\005\000\000\t\005\t\005\000\000\t\005\t\005\000\000\000\000\t\001\000\000\000\000\000\000\000\000\000\000\t\005\t\001\000\000\000\000\000\000\t\001\000\000\000\000\t\005\000\000\000\000\t\001\000\000\000\000\t\001\000\000\000\000\000\000\000\000\000\000\t\001\t\001\000\242\000\000\000\000\000\000\000\000\000\000\000\000\t\001\t\001\000\000\000\000\000\000\000\000\000\000\t\001\000\000\000\000\t\001\000\000\000\000\000\000\t\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001a\t\001\000\000\t\001\t\001\001a\t\001\t\001\000\185\001a\000\000\000\000\000\000\000\000\000\000\000\000\t\001\000\185\000\000\001a\000\000\001a\000\000\001a\t\001\001a\000\000\000\000\000\000\000\000\003}\000\000\000\000\000\000\000\000\003}\000\000\001a\000\000\003}\000\000\000\000\000\000\000\000\001a\000\185\000\000\000\000\000\000\003}\000\000\000\000\000\185\003}\000\000\003}\000\000\001a\000\000\000\000\000\000\000\000\000\000\001a\001a\001a\000\000\003}\000\000\020.\000\000\003}\000\000\000\000\003}\000\000\003}\000\000\000\000\001a\003}\000\000\000\000\000\000\003}\000\000\000\185\003}\000\000\000\000\003}\000\000\000\000\003}\003}\003}\003}\001a\000\000\001a\001a\000\000\001a\001a\000\000\000\000\000\000\000\000\003}\003}\020.\000\000\003}\000\000\000\000\003}\003}\000\000\000\000\000\000\001a\007\193\000\000\000\000\000\000\003}\007\193\003}\003}\003}\007\193\001a\003}\003}\003}\003}\003}\000\000\000\000\000\000\007\193\000\000\003}\000\000\007\193\000\000\007\193\000\000\000\000\020\162\003}\000\000\005\165\003}\000\000\003}\000\000\003}\007\193\000\000\000\000\003}\000\000\000\000\000\000\007\193\000\000\000\000\003}\000\000\003}\030n\003}\003}\003}\007\193\000\000\003}\007\193\000\000\000\000\003}\000\000\000\000\007\193\007\193\000\000\000\000\000\000\000\000\020\162\003}\000\000\000\000\000\000\003}\003}\003}\000\000\000\000\007\193\000\000\000\000\007\193\000\000\000\000\000\000\007\193\000\000\003}\000\000\020.\000\000\000\000\000\000\000\000\003}\000\000\007\193\000\000\007\193\007\193\000\000\007\193\007\193\000\000\003}\000\000\000\000\003}\000\000\000\000\000\000\007\193\000\000\003}\003}\003}\007\193\000\000\002\246\007\193\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003}\007\193\000\000\003}\000\000\000\000\005\253\003}\000\000\000\000\000\000\005\253\000\000\000\000\000\000\005\253\000\000\000\000\003}\000\000\003}\030\158\000\000\003}\003}\005\253\000\000\000\000\000\000\005\253\000\000\005\253\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\020\162\003}\000\000\005\253\000\000\000\000\003}\000\000\000\000\000\000\005\253\000\000\000\000\000\000\000\000\000\000\n\158\000\000\000\000\000\000\005\253\000\000\000\000\005\253\000\000\000\000\000\000\000\000\000\000\005\253\005\253\000\242\000\000\000\000\000\000\006\001\000\000\000\000\000\000\000\000\006\001\000\000\000\000\000\000\006\001\005\253\005\253\000\000\005\253\000\000\000\000\000\000\005\253\000\000\006\001\000\000\000\000\000\000\006\001\000\000\006\001\000\000\000\000\005\253\000\000\005\253\000\000\000\000\005\253\005\253\000\000\000\000\006\001\000\000\000\000\000\000\000\000\000\000\000\000\006\001\000\000\000\000\000\000\000\000\000\000\n\158\005\253\000\000\000\000\006\001\000\000\000\000\006\001\000\000\000\000\000\000\000\000\005\253\006\001\006\001\000\242\000\000\000\000\000\000\003}\000\000\000\000\000\000\000\000\003}\000\000\000\000\000\000\003}\006\001\006\001\000\000\006\001\000\000\000\000\000\000\006\001\000\000\003}\000\000\000\000\000\000\003}\000\000\003}\000\000\000\000\006\001\000\000\006\001\000\000\000\000\006\001\006\001\000\000\000\000\003}\000\000\020.\000\000\000\000\000\000\000\000\003}\000\000\000\000\006\229\000\000\000\000\000\000\006\001\006\229\000\000\003}\000\000\006\229\003}\000\000\000\000\000\000\000\000\006\001\003}\003}\003}\006\229\000\000\000\000\000\000\006\229\000\000\006\229\000\000\000\000\000\000\000\000\000\000\000\000\003}\000\000\000\000\003}\000\000\006\229\000\000\003}\000\000\000\000\000\000\000\000\006\229\000\000\000\000\000\000\000\000\000\000\003}\000\000\003}\022\190\006\229\003}\003}\006\229\000\000\000\000\000\000\000\000\000\000\006\229\006\229\000\242\000\000\000\000\000\000\000\000\000\000\000\000\020\162\003}\000\000\000\000\000\000\000\000\000\000\006\229\000\000\000\000\006\229\000\000\000\000\000\000\006\229\000\000\000\000\000\000\000\000\000\000\000\000\001\206\001\230\003\n\000\000\006\229\003\014\006\229\026\162\000\000\006\229\006\229\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\006\229\001\238\003\018\002\002\003\026\014\217\000\000\000\000\006\229\000\000\014\217\002\014\000\000\001\210\014\217\000\000\000\000\000\000\000\000\006\229\000\000\000\000\000\000\000\000\014\217\003\030\001\214\003:\014\217\000\000\014\217\003F\000\000\003Z\004\226\004\238\000\000\000\000\000\000\000\000\000\000\026V\014\217\026Z\000\000\000\000\000\000\000\000\000\000\014\217\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\014\217\000\000\004\254\014\217\000\000\000\000\000\000\000\000\000\000\014\217\014\217\000\000\007\170\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\026f\000\000\014\217\000\000\000\000\014\217\000\000\000\000\000\000\014\217\003\146\003j\000\000\000\000\003\014\000\000\000\000\000\000\026j\003z\014\217\000\000\014\217\003\006\000\000\014\217\014\217\000\000\000\000\001\238\000\000\000\000\000\000\000\000\000\000\014\217\003\150\000\000\000\000\000\000 *\000\000\000\000\014\217\000\000\000\000\000\000\007\229\t\198\000\000\003\170\000\000\007\229\014\002\014\217\001\194\007\229\000\000\000\000\000\000\000\000\003Z\000\000\000\000\004\182\004\186\007\229\000\000\000\000\004\190\007\229\004\198\007\229\000\000\007\138\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\007\229\007\142\007\150\007\154\000\000\007\158\000\000\007\229\nB\000\000\000\000\000\000\000\000\001\237\007\166\007\170\000\000\007\229\001\237\000\000\007\229\000\000\001\237\000\000\000\000\000\000\007\229\007\229\000\242\000\000\000\000\000\000\001\237\000\000\000\000\000\000\001\237\000\000\001\237\000\000\007\174\000\000\007\229\000\000\000\000\007\229\005:\000\000\000\000\007\229\001\237\000\000\000\000\000\000\000\000\000\000\000\000\001\237\000\000\000\000\007\229\000\000\007\229\002\025\000\000\007\229\007\229\001\237\002\025\000\000\001\237\000\000\002\025\000\000\000\000\000\000\001\237\001\237\001\237\000\000\000\000\000\000\002\025\007\229\000\000\000\000\002\025\000\000\002\025\000\000\000\000\000\000\001\237\000\000\000\000\001\237\000\000\000\000\000\000\001\237\002\025\000\000\000\000\000\000\000\000\000\000\000\000\002\025\000\000\000\000\001\237\000\000\001\237\000\000\000\000\001\237\001\237\002\025\000\000\000\000\002\025\022\202\000\000\000\000\000\000\000\000\002\025\002\025\000\000\000\000\000\000\000\000\006\233\001\237\000\000\000\000\000\000\006\233\001\237\000\000\000\000\006\233\002\025\000\000\000\000\002\025\000\000\000\000\000\000\002\025\000\000\006\233\000\000\000\000\000\000\006\233\000\000\006\233\000\000\000\000\002\025\000\000\002\025\000\000\000\000\002\025\002\025\000\000\000\000\006\233\000\000\000\000\000\000\000\000\000\000\002\025\006\233\000\000\000\000\000\000\000\000\000\000\000\000\002\025\000\000\000\000\006\233\000\000\026~\006\233\000\000\000\000\000\000\000\000\002\025\006\233\006\233\000\242\000\000\000\000\000\000\014\145\000\000\000\000\003j\014\145\000\000!\218\000\000\000\000\000\000\006\233!\222\000\000\006\233\014\145\000\000\000\000\006\233\000\000\000\000\014\145\000\000\000\000\000\000\000\000\000\000\000\000\000\000\006\233\000\000\006\233\000\000\014\145\006\233\006\233\000\000\000\000\000\000\000\000\014\145\000\000\000\000\000\000\006\233\000\000\001\006\000\000\001\194\000\000\014\145\000\000\006\233\014\145\000\000\000\000\000\000\000\000\000\000\014\145\000\000\000\000\000\000\006\233\000\000\014u\000\000!\226\003j\014u\000\000!\250\000\000\000\000\000\000\014\145!\254\000\000\014\145\014u\000\000\000\000\014\145\000\000\000\000\014u\000\000\000\000\000\000\000\000\000\000\000\000!\230\014\145\000\000\014\145\000\000\014u\014\145\000\000\000\000\000\000\000\000\000\000\014u\000\000\000\000\000\000\000\000\000\000\001\006\000\000\001\194\000\000\014u\000\000\014\145\014u\000\000\000\000\000\000\000\000\000\000\014u\000\000\000\000\000\000\000\000\000\000\000\000\000\000\"\002\000\000\001\206\001\230\003\n\000\000\000\000\003\014\014u\000\000\000\000\014u\000\000\000\000\000\000\014u\000\000\000\000\000\000\000\000\000\000\000\000\001\238\003\018\002\002\"\006\014u\000\000\014u\000\000\000\000\014u\002\014\000\000\001\210\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\030\001\214\003:\014u\000\000\000\000\003F\000\000\003Z\004\226\004\238\000\000\000\000\000\000\005\001\000\000\026V\000\000 \014\005\001\000\000\000\000\001\021\005\001\000\000\000\000\000\000\001\021\000\000\000\000\000\000\001\021\000\000\005\001\000\000\000\000\004\254\005\001\000\000\005\001\000\000\001\021\000\000\000\000\000\000\001\021\007\170\001\021\000\000\000\000\000\000\005\001\000\000\000\000\000\000\000\000\000\000 \026\005\001\001\021\000\000\000\000\000\000\000\000\005\n\000\000\001\021\000\000\005\001\000\000\000\000\005\001\000\000\000\000\000\000\026j\001\021\005\001\004\"\001\021\000\000\000\000\000\000\000\000\000\000\001\021\001\021\000\242\000\000\000\000\000\000\000\000\000\000\005\001\000\000\000\000\005\001\000\000\000\000\000\000\005\001\001\021\000\000\000\000\001\021\000\000\000\000\000\000\001\021\000\000\000\000\005\001\b\153\005\001\000\000\b\153\005\001\005\001\001\025\001\021\000\000\001\021\005\026\001\025\001\021\001\021\t\242\001\025\000\000\000\000\000\000\000\000\b\153\b\153\005\001\b\153\b\153\001\025\000\000\000\000\000\000\001\025\001\021\001\025\000\000\005\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\021\000\000\001\025\000\000\b\153\000\000\000\000\000\000\000\000\001\025\000\000\000\000\007\225\000\000\000\000\000\000\000\000\007\225\000\000\001\025\000\000\007\225\001\025\000\000\000\242\000\000\000\000\000\000\001\025\001\025\000\242\007\225\000\000\000\000\000\000\007\225\000\000\007\225\000\000\b\153\000\000\000\000\000\000\000\000\001\025\000\000\000\000\001\025\000\000\007\225\000\000\001\025\000\000\000\000\000\000\000\000\007\225\000\000\000\000\b\153\000\000\b\153\001\025\000\000\001\025\000\000\007\225\001\025\001\025\007\225\000\000\000\000\000\000\b\153\b\153\007\225\007\225\b\030\b\153\000\000\000\000\006\221\b\153\000\000\b\153\001\025\006\221\000\000\b\153\000\000\006\221\007\225\000\000\000\000\007\225\000\000\001\025\022\154\007\225\000\000\006\221\000\000\000\000\000\000\006\221\000\000\006\221\000\000\000\000\007\225\000\000\007\225\021\250\000\000\007\225\007\225\000\000\000\000\006\221\000\000\000\000\000\000\000\000\000\000\000\000\006\221\000\000\000\000\005\001\t\198\000\000\000\000\007\225\005\001\000\000\006\221\000\000\005\001\006\221\000\000\000\000\000\000\000\000\000\000\006\221\006\221\000\000\005\001\000\000\000\000\000\000\005\001\000\000\005\001\000\000\000\000\000\000\000\000\000\000\000\000\006\221\000\000\000\000\006\221\000\000\005\001\000\000\006\221\000\000\000\000\000\000\000\000\005\001\nB\000\000\000\000\000\000\001\153\006\221\000\000\006\221\000\000\001\153\006\221\006\221\005\001\001\153\000\000\000\000\000\000\000\000\005\001\004\"\000\242\000\000\000\000\001\153\000\000\001\153\000\000\001\153\006\221\001\153\000\000\000\000\000\000\000\000\005\001\000\000\000\000\014%\000\000\000\000\000\000\001\153\014%\000\000\000\000\000\000\014%\000\000\001\153\000\000\000\000\000\000\005\001\000\000\005\001\000\000\014%\005\001\005\001\000\000\014%\001\153\014%\000\000\000\000\000\000\000\000\001\153\001\153\000\242\000\000\000\000\000\000\000\000\014%\005\001\000\000\000\000\000\000\000\000\000\000\014%\000\000\001\153\000\000\000\000\005\001\000\000\000\000\000\000\000\000\014%\000\000\000\000\014%\000\000\000\000\000\000\000\000\000\000\014%\001\153\000\000\001\153\001\153\000\000\001\153\001\153\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\014%\012\246\000\000\014%\000\000\000\000\014\217\014%\001\153\000\000\000\000\014\217\000\000\000\000\000\000\014\217\000\000\000\000\014%\001\153\014%\000\000\000\000\014%\014%\014\217\000\000\000\000\000\000\014\217\000\000\014\217\000\000\000\000\001\206\002\022\001\234\000\000\000\000\000\000\000\000\014%\000\000\014\217\000\000\000\000\000\000\000\000\000\000\003\"\014\217\000\000\r\218\000\000\001\238\003&\002\002\000\000\000\000\000\000\000\000\000\000\000\000\014\217\002\014\000\000\001\210\000\000\000\000\014\217\014\217\000\000\002>\000\000\000\000\000\000\000\000\000\000\002\018\001\214\003:\000\000\000\000\000\000\003F\014\217\003Z\004\226\004\238\000\000\007\177\007\177\007\177\000\000\004\250\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\014\217\000\000\014\217\003\006\004\242\014\217\014\217\007\177\007\177\007\177\000\000\004\254\000\000\000\000\000\000\014\217\000\000\007\177\000\000\007\177 f\000\000\000\000\014\217\000\000\000\000\000\000\000\000\000\000\000\000\000\000\007\177\007\177\007\177\014\217\000\000\000\000\007\177\000\000\007\177\007\177\007\177\000\000\020\030\000\000\000\000\004\217\007\177\000\000\000\000\000\000\004\217\000\000\000\000\000\000\004\217\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\217\000\000\007\177\000\000\004\217\000\000\004\217\000\000\006\t\t\198\000\000\000\000\000\000\006\t\000\000\000\000\000\000\006\t\004\217\000\000\000\000\000\000\000\000\000\000\000\000\004\217\000\000\006\t\000\000\000\000\000\000\006\t\000\000\006\t\000\000\004\217\000\000\000\000\004\217\000\000\000\000\004\230\000\000\007\177\004\217\006\t\000\000\000\000\000\000\000\000\000\000\000\000\006\t\nB\000\000\000\000\000\000\000\000\000\000\000\000\004\217\000\000\000\000\004\217\000\000\006\t\000\000\004\217\000\000\000\000\000\000\006\t\006\t\000\242\000\000\000\000\000\000\004\209\004\217\000\000\004\217\000\000\004\209\004\217\004\217\000\000\004\209\006\t\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\209\000\000\000\000\000\000\004\209\004\217\004\209\000\000\004\241\006\t\000\000\006\t\000\000\004\241\006\t\006\t\022\"\004\241\004\209\000\000\000\000\000\000\000\000\000\000\000\000\004\209\000\000\004\241\000\000\000\000\000\000\004\241\006\t\004\241\000\000\004\209\000\000\000\000\004\209\000\000\000\000\000\000\000\000\000\000\004\209\004\241\000\000\000\000\000\000\000\000\000\000\000\000\004\241\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\209\000\000\004\241\004\209\000\000\004\241\000\000\004\209\000\000\000\000\000\000\004\241\000\000\000\000\000\000\000\000\000\000\000\000\004\209\000\000\004\209\000\000\000\000\004\209\004\209\000\000\000\000\004\241\000\000\000\000\004\241\012~\000\000\000\000\004\241\000\000\000\000\001\206\001\230\001\234\000\000\004\209\000\000\000\000\000\000\004\241\000\000\004\241\000\000\000\000\004\241\004\241\025\022\000\000\004\194\000\000\014\133\001\238\003\018\002\002\014\133\000\000\000\000\000\000\000\000\000\000\000\000\002\014\004\241\001\210\014\133\000\000\000\000\000\000\000\000\004\193\014\133\000\000\000\000\026\014\004\193\003V\001\214\003:\004\193\000\000\000\000\003F\014\133\003Z\004\226\004\238\000\000\000\000\004\193\014\133\000\000\004\250\004\193\000\000\004\193\000\000\000\000\000\000\000\000\014\133\000\000\000\000\014\133\000\000\000\000\000\000\004\193\000\000\014\133\000\000\000\000\004\254\000\000\004\193\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\193\014\133\000\000\004\193\014\133\000\000\000\000\000\000\014\133\004\193\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\014\133\000\000\014\133\000\000\000\000\014\133\004\193\000\000\0056\004\193\005:!\202\012\138\004\193\000\000\000\000\000\000\000\000\001\206\001\230\001\234\014\206\000\000\014\133\004\193\000\000\004\193\000\000\000\000\004\193\004\193\000\000\007\225\000\000\000\000\000\000\000\000\007\225\001\238\001\242\002\002\007\225\000\000\000\000\000\000\000\000\000\000\004\193\002\014\000\000\001\210\007\225\000\000\000\000\000\000\007\225\000\000\007\225\029\154\000\000\000\000\000\000\002\018\001\214\003:\000\000\000\000\000\000\003F\007\225\003Z\004\226\004\238\000\000\000\000\000\000\007\225\000\000\004\250\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\007\225\000\000\000\000\000\000\000\000\000\000\007\225\007\225\000\000\004\254\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\225\000\000\000\000\000\000\000\000\001\206\002\022\001\234\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\007\225\000\000\007\225\021\250\000\000\007\225\007\225\001\238\002*\002\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\014\000\000\001\210\023.\000\000\000\000\007\225\000\000\002>\000\000\000\000\001\206\002\022\001\234\002\018\001\214\003:\000\000\000\000\000\000\003F\000\000\003Z\004\226\004\238\000\000\000\000\000\000\000\000\000\000\004\250\001\238\003N\002\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\014\000\000\001\210\000\000\000\000\000\000\000\000\000\000\002>\004\254\000\000\007\173\007\173\007\173\003V\001\214\003:\000\000\000\000\000\000\003F\000\000\003Z\004\226\004\238\b\137\000\000\000\000\b\137\000\000\004\250\007\173\007\173\007\173\000\000\000\000\000\000\000\000\000\000\000\000\000\000\007\173\000\000\007\173\000\000\b\137\b\137\000\000\b\137\b\137\004\254\000\000\000\000\000\000\000\000\007\173\007\173\007\173\000\000\000\000\000\000\007\173\000\000\007\173\007\173\007\173\015\173\015\173\015\173\000\000\b\137\007\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\000\000\015\173\015\173\015\173\t\218\000\242\007\173\000\000\000\000\000\000\000\000\015\173\000\000\015\173\000\000\000\000\000\000\000\000\000\000\000\000\b\137\000\000\000\000\000\000\000\000\015\173\015\173\015\173\000\000\000\000\000\000\015\173\000\000\015\173\015\173\015\173\000\000\000\000\000\000\000\000\b\137\015\173\b\137\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\007\018\000\000\bz\b\137\000\000\000\000\b\030\b\137\012\138\015\173\000\000\b\137\000\000\b\137\001\206\001\230\001\234\b\137\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\138\000\000\000\000\000\000\000\000\000\000\001\206\001\230\001\234\001\238\003\018\002\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\014\000\000\001\210\000\000\000\000\000\000\000\000\001\238\001\242\002\002\000\000\000\000\000\000\000\000\003V\001\214\003:\002\014\000\000\001\210\003F\000\000\003Z\004\226\004\238\000\000\000\000\000\000\000\000\000\000\004\250\002\018\001\214\003:\001\206\002\022\001\234\003F\000\000\003Z\004\226\004\238\000\000\000\000\000\000\000\000\000\000\004\250\000\000\000\000\004\254\000\000\000\000\000\000\001\238\020\170\002\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\014\000\000\001\210\004\254\000\000\000\000\000\000\000\000\002>\000\000\000\000\000\000\000\000\000\000\003V\001\214\003:\000\000\000\000\000\000\003F\000\000\003Z\004\226\004\238\001\206\001\230\001\234\027\186\000\000\004\250\000\000\000\000\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\238\001\242\002\002\000\000\000\000\004\254\000\000\000\000\000\000\000\000\002\014\000\000\001\210\000\000\000\000\000\000\000\000\001\206\001\230\001\234\028\026\000\000\000\000\000\000\002\018\001\214\003:\000\000\000\000\000\000\003F\000\000\003Z\004\226\004\238\000\000\000\000\001\238\001\242\002\002\004\250\000\000\000\000\000\000\000\000\000\000\000\000\002\014\000\000\001\210\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\225\004\254\002\018\001\214\003:\004\225\000\000\000\000\003F\004\225\003Z\004\226\004\238\000\000\000\000\000\000\000\000\000\000\004\250\004\225\000\000\000\000\000\000\004\225\000\000\004\225\000\000\004\201\001\206\001\230\001\234\000\000\004\201\000\000\000\000\000\000\004\201\004\225\004\254\000\000\000\000\000\000\000\000\000\000\004\225\000\000\004\201\000\000\001\238\003\018\004\201\000\000\004\201\000\000\000\000\000\000\000\000\004\225\000\000\000\000\001\210\000\000\000\000\004\225\004\201\000\000\000\000\000\000\000\000\000\000\000\000\004\201\005\130\001\214\005\002\000\000\000\000\000\000\003F\004\225\003Z\004\226\004\238\000\000\004\201\000\000\000\000\000\000\004\250\000\000\004\201\004\249\000\000\000\000\000\000\000\000\004\249\004\225\000\000\004\225\004\249\000\000\004\225\004\225\000\000\000\000\004\201\000\000\004\254\000\000\004\249\000\000\000\000\000\000\004\249\000\000\004\249\000\000\005\t\000\000\004\225\000\000\000\000\000\250\004\201\000\000\004\201\002V\004\249\004\201\004\201\023j\000\000\000\000\000\000\004\249\000\000\022\238\000\000\000\000\000\000\005\t\000\000\004.\000\000\000\000\000\000\004\201\004\249\000\000\000\000\000\000\000\000\000\000\004\249\022\242\000\000\000\000\025\162\000\000\000\000\000\000\023\026\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\249\000\000\000\000\000\000\000\000\022J\000\000\000\000\000\000\000\000\000\000\022b\000\000\001\230\001\234\000\000\000\000\000\000\004\249\000\000\004\249\000\000\000\000\004\249\004\249\000\000\000\000\022j\000\000\000\000\000\000\000\000\001\238\003\018\002\002\000\000\000\000\000\000\000\000\000\000\000\000\004\249\002\014\000\000\000\000\022r\023\254\023\178\000\000\000\000\005\t\005\t\026>\000\000\000\000\000\000\003J\000\000\025V\000\000\024v\000\000\003F\000\000\003Z\004\226\004\238\000\000\023\194\000\000\000\000\000\000\025f\000\000\000\000\000\000\000\000\000\000\000\000\000\000\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\254")) and lhs = - (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") + (8, "\014\r\012\011\n\t\b\007\006\005\004\003\002\001\000\243\243\242\242\242\242\241\240\240\239\239\239\239\239\239\239\239\239\239\239\239\239\239\239\239\239\239\239\239\239\239\239\239\239\238\238\237\236\235\235\235\235\235\235\235\235\234\234\234\234\234\234\234\234\233\233\233\232\232\231\230\230\230\229\229\228\228\228\228\228\228\227\227\227\227\227\227\227\227\226\226\226\226\226\226\226\226\225\225\225\225\224\223\222\222\221\221\220\220\219\219\218\218\218\218\217\217\217\216\216\216\216\215\214\214\214\214\214\213\213\212\212\211\211\210\210\210\210\210\210\210\210\210\210\210\210\210\210\210\210\210\210\210\210\210\210\210\210\210\210\210\210\210\210\210\210\210\210\210\210\210\210\210\210\210\210\210\210\210\210\210\210\210\210\210\210\210\210\210\210\210\210\210\210\210\210\210\210\209\209\208\208\207\206\205\204\204\203\203\202\202\202\202\202\201\201\200\200\199\199\199\199\199\199\198\197\196\196\195\195\194\194\193\192\192\191\191\190\189\189\188\187\186\186\186\185\185\185\184\183\183\183\183\183\183\182\182\182\182\182\182\182\182\182\182\182\182\182\182\182\182\181\180\179\178\178\177\177\177\177\177\177\177\177\177\176\176\175\175\175\174\174\174\173\173\173\173\172\172\171\171\170\170\169\169\168\168\167\167\166\166\165\165\164\164\163\163\162\162\162\161\161\161\161\160\160\159\159\158\158\157\157\157\157\157\156\156\156\156\155\155\155\154\154\154\154\154\154\154\153\153\153\153\153\153\153\152\152\151\151\150\150\150\150\150\150\149\149\148\148\147\147\146\146\145\145\145\144\143\143\143\142\142\141\141\141\141\141\141\141\141\141\140\140\139\139\138\138\138\138\138\138\138\138\138\138\138\137\136\135\134\134\133\133\133\132\132\132\132\132\131\130\130\129\128\128\127\127\127\127\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\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]")) + ((16, "\001\246\000\199\000C\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000.\000\000\000\000\000\249\001\150\000)\000\029\000^\000\012\000\162\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000<\000\000\000\000\000\000\000\000\000\000\001D\000\000\000\000\000\000\001\220\000\000\000\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\176\002\200\002\230\002\248\000\000\000\000\000\000\000\000\000\000\000\000\002\234\000\000\000\000\000\000\000\000\000\000\000\000\000\000K\240\000\000\001\164\000\000\000\000\000\000\003L\000\000\003\n\000\000\000\000\0042\001\012\000\247\000\000\001\"L\150\004N\003\198\000.\000\000\000\000\000\000\003\016\000\000\000\000\000l\000\000\000\000\000\000\000\000\000\000\003\254\000\000\003\\\000\000\004&\000\000\004\150\004\198\000\000\004\234\000\000\000\000\000\000\000\000\001\b\000\000\000\000\000\000\005$\000\000\004\192\005D\000\000\000#\000*\000!\000\000\000\000\006\154\t\154\000\000\000\000\005\216\000\000\001,K\240\000\000\006\014\000\000\005\156\000\000\000\000\000\000\003tL\222\002\228#\022\006j\000\000K\240\002\018\0034\014\024\000\000\000\000\006\156\005\150\0140\000\000\014\144\006\242\005\188\006\220?\148\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$\006<\007\198\000\000\000\000\000\000\000\000\000\213\000\000\000\000\006\226\000Z\b\024\007$\007\166\b \004\250\006\138\000T\000x\006\154\b\188\004F\004D\000H\t\016\000\000\000\000\000\000\007\226\007\254\b,\005z\005\196\b@\028\196\014~\b,\bf\000\247\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b4\b|\014\226\007\012\014\144\0154\016 \000\000+\004\014\208+V,\014,0\000\000\000\197\000\000\000\000\000\000\000\000\b\250T\216\t\014\000\000-\216\tb\000\000>\222\002\218\000k\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?\144\t.\000\000\000\000\000\000\000\000\000\012\000\000\000\000\000\000\000\212\000\000\000\000\001\140\001\016\000\000\000\000\000\000\003\216M:\000\000\000\000\0030\002\142\000\000\000\000\000\000T\234\001bM\176\000\000\tj\000\000\000\000\t\164\000\000\006\190\000\000\000\000U4\000\000\tr\000\000 |\000\000\000\000\002X\000\000G\250\000\000\000\000\005T\000\000\001\140\t,\001\140\000\000\000\000\000\000\t\218\000\000\000\000\000\000\b`\000\000\000\000\t\226\000\000\b\164\000\000\000\000\tr\000\000U\252\tr\000\000\tr\000\000V\022\tr\000\000`\024\000\000\000\000\006h\000\000\000\000`\028\000\000\000\000\nb\000\000\n\144M\254\000\000VX\tr\000\000`F\000\000\000\000\011\140\000\000\000\000`f\000\000\000\000\011\178\000\000\011\248\000\000\000\000\000\000\000\000\000\000\020\182\000\000\b\254\0112\000\000Vp\t`.&\000\000\000\000\000\000\000\000\tr\000\000\000\000\000\000@0\000\000\000\000\000\000\000\000\000\000\000\000\000.\0118\000\000\000\000\000\000\tr\011\156@\158\n\226\t\154\018<\000\000\003Z\000\000\000\000\000\000\003\232\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\218\000\000\000\000\000\000\000\000\000\000\000\000\012\196@\172\000\000\000\000\011\146\t\164@\186\000\000\000\000\000\000A\188\001=A\202\000\000\001=\000\000Br\001=\000\000B\132&~\012n\012\196\000\000\000\000P\200\000\000\000\000\000\000\000\000\000\000\000\000\001=\000\000\000\000B\196\000\000\001=Q\148\000\000\tr\000\000\000\000C~\000\000\001=\004\024\000\000\000\000\001=\001=\000\000\000\000\001=\000\000\000\000,0\000\000\000\000\000\000\000\000\001=,\128\000\000\000\000\001=\000\000\004\168\r\n\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000G\244\000\000\003\206\000\000P\250\000\000V\128\tr\tr\012\148\000\000\000\000\000\000\000\000\000\000\000\000\006\252\012\158\rF\016D\012\162\012\228\r\004\t\182\007`\t\244\001\178\r\158\000\000\000\000\000;\001X\n\156\002|\r<\004f\000\000\004\176\003\176\006\236\001*\014\230\000\000\000\000^T\000\000^\174\014\142\000\000V\234\trW\n\tr\000\000\003l\000\163\000\000\b\184\004\176\000\000\000\000\r\194\000\000\000\000\000\000\000\000\000\000\012\254\004\176\015\184\004\176\000\000\004\198\000\000\000\000\006\170\000\000\000\000\000\000\015*\000\000\000\000\000\000\004\176\000\000\000\000\004\176\000\000\r<\n\210\000\000\000~\005\196\000\000\000~\000\000\000\000\017$\004\176\000\000\000\000\000\000\000\000\000\000\000\000\000~\016\220\017\002\017T\014\232\014\176,\206\000\238\000\000\r\248\n\186\017^\r\250\n\192#\004)f\000\000\000\000\000\000\000\000\000\000\000\000\000\000\006\164\007\238\000\000\000\000\000\000\014\004\n\204\011\184\000~\017\172\000\000\004\176\000\000\000\000\000\000\014\208\000\000Wv\tr\017\192\014\028\n\230\018\236\014(\n\232\005\236-\156\001=\019N\014H\011\016N\148\015:\000\000\019\\\001=Q\n\000\000W\222\tr\tr-\220\015\020\000\000\000\000\015\"\000\000\000\000\000\000\000\000\019r\001|\000\000\000\000\n^\000\000\000\000\000\000\np\000\000H>\019\184\014b\011\018C\140\001=\020\154\021\b\014p\011VD\"\000\000\000\000\000\000H\176\000\000\000\000\021\018-\tr\000\000\000\000\023F\000\000\000\000\023\170\000\000\000\000\000\0006:\000\000\000\000\000\000\000\0006\244\000\000\000\249\000\000\000\000\001=R\030\000\000YX\tr\000\0007\174\000\000\000\000R.\005(\000\000Z\022\tr\024n\000\000\000\000Z \tr\024\214\000\000\000\000\0258\000\000\000\000\000\000Z2\tr\025\154\000\000\014\236\026\002\000\000D\160\000\000\001=D\240\000\000\001=E6\000\000\001=\b,\000\000\000\000\000\000\000\000\000\000E\134\001=\012&F\004R|\000\000ZN\tr\026d\000\000\000\000\026\198\000\000\000\000\000\000\006b\tx\000\000\000\000\000\000\001\208\027.\000\000\000\000\000\000\027\144\000\000\000\000\000\000\000\000\000\000\027\250\000\000\000\000\000\000\001\208\028\018\000\000\028r\000\000\000\000\000\000\028\220\000\000\000\000\000\000\000\000Zl\000\000\000\000\029.\000\000\000\000\000\0007\244\001\208\029\166\000\000\000\000\000\0008R\001\208\030\016\000\000\000\000\000\0008|\001\208\006\144\029\142\000\000\000\0008\242\001\208\030\206\000\000\000\0009Z\001\208\030\244\000\000\000\0009\146\001\208\000\000\000\000\030r\000\000\000\000:\146\001\208\031\140\000\000\000\000:\182\001\208\031\176\000\000\000\000:\238\001\208\000\000;V\001\208\000\000\t~\000\000\000\000\001\208\000\000\000\000 \002\000\000\000\000 \192\000\000\000\000\000\000\015(\000\000\000\000!\\\000\000!\192\000\000\000\000\000\000\019r\007\206\000\000\n\196\000\000HT\012\016\001\140!\202\000\000H\166\000\000\000\000\000\000I\028\000\000\000\000\000\000IX\000\000I\186\000\000\000\000\"&\000\000\"\168\000\000\000\000\000\000\000\0003\192\000\000\000\000\000\000;\186\001\208<~\001\208\000\000\014\236#f\000\000\000\000#\140\000\000;\204\000\000\000\000)f\000\000\000\000\000\000\"~\000\000\000\000\000\000\000\000\001\208<\230\001\208\003\024\000\000\006\244FTF\150\001==H\001\208\001==\134\001\208=\170\003\170>\140\001\208\000\000\000\000\000\000\015 \000\000\000\000\000\000$$\000\000\000\000\000\000\000\000\002l\015 \000\000$H\000\000\000\000\000\000\000\000\005p\015 \000\000\016l\000\000\000\000\000\000Fl\000\000\000v\000\000\011.\000\000\016\016\000\000\n\174\000\000\000\000\000\000\000\000\000\000\000\000\006\164\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\208\000\000\016\144\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\007\\\015 \000\000\000\000\000\000\000\000\000\000\b\134\015 \000\000\000\000\011\174\012\172\000~$\166\000\000\015f\011\178\015\248\007\230\014\000\000~\019\018\004\176\0142\000~\000\000%F\000\000\b\208\000\000\015r\011\214\n\232\000\000\000\000\000\000\000\000\000\000\015\138\003\000\001~\000\000\000\000\000\000\000\000\023B\000\000^\190\000\000\011\246\000\000\011\252\000\000\000\000\000\000\000\000\001\188\000\000\000\000\015\132\001\140\000\000\015\190\021L\001\140\001\140\000\000\001\140\t\022#\022\015\158\000\000\000\000\003\016\000\000\023\224\001\140\001\140\000\000\024J\001\140\001\140\012\000\000\000%p\000\000\000\000\012\b\016\158\000\000\011&\011\n\000\000\000\000\000\000\000\000\016\136\000\000\000\000\000\000\000\000\001\208\000\000\000\000\000\000\000\000\000\000\b\140\015 \000\000\000\000\015\204\012 \015\000\000~\000\000\019\172\000\000\004\176\000\000\0172\000\000\000\000\000\000\000\000\000\000\012\188\000\000\000\000\001\208\000\000\000\000\020\192\000\000\004\176\000\000\020\222\000\000\004\176\000\000\020\240\004\176\000\000\001\232\000\000\0122\015\176\004d\000\000\015\252\016\014\012F\016B\0170\021\188\004\176\012\022\000\000\012J\017\002\017\004\b\252\012T\016\212\012X\017\028\t\138\012`\017\004\000\000\000\000\012T\012\138\000\000\006\162\003\164Gp\001=%\230\000\000\006\214\001\134\000\000\000\000\016\206\012\146\r\n\000\000N\016\000\000[&\tr\000\000\017\142\017\180\000\000\012\188\000\000\tr\017*\012\176\0128\017D\000\016\000\000\000\000\000\000\000\000\012\188\012\212\000\000\012\194\012\232\000\000\tX\006V\017@\017J\012\204\011>\012\242\000\000\012\218\rP\r\148\000\000\017P\017^\r\006\017\130\0170\0220\004\176\000\000\rL\017\244\000\000\rR\000\000\014\"\000\000\018\000\000\000\022\148\007\144\017\216\rl\018\018\000\000\023$\tH\017\222\000\000\000\000\011(\004&\014&\000\000\024\b\004\176\014*\000\000\r\208\000\000\017\144\rp\r>\017D\017\146\017\148\r\150\019\022\000\000\017\166\000\016\000\000\000\000\000\000\014\140\000\000\000\000\000\000\000\234\r\156\017v[D\tr\000\000\003r\r\170\018>\000\000\000\000\000\000\000\000\000\000\000\000[^\tr\000\000\r\238\018\170\000\000\000\000\000\000\000\000\000\000\000\000N\194\014H\000\000\0142\003:\000\000\014@\014L\b\002\000\000\006\178R\242\000\000\007\202\000\000[p\tr\tr\000\000\000\000\t\192\000\000\tt\000\000\007h\t\192\t\192\000\000\014^SR\tr\\8\tr\014\198\000\000\000\000\000\000\000\000\014\202\000\000\000\000\004\002\000\000\t\202\018\000\014`\0194\017\198\000\000\000\000\007\192\nN\018\022\000\000\000\000\014f\019D\017\214\000\000\000\000/\232\000\000\012\184\000\000L\nG\018\tr\000\000^\134\014\202\000\000^\216\000\000\000\000\000\000\t\192\000\000\000\000\015\024\018\030\014\142\019T\017\248\000\000\000\000^\238\0156\018D\000\000\000\000\000\000\b\166\000\000\000\000\000\000\000\000\000\000\000\000\000\000\015\176\000\000\017\252\014\144\024\026\nP\000\000\018V\014\224\007D\000\000\002\178\019n\019\022\015\180\018h\000\000\000\000\000\000\018l\015,\007\134\000\000\005F\000\000\n\236\002\218\006\152\000\000\000\000\000\000\rJ\0184\015>\000\000\0188\rJ\000\000\019,\015\182\018\130\000\000\000\000\000\000\tr\002\244\004\182\007r\000\000\000\000\000\000\000\000\018B\015t\000\000\007\252\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\tr\0186\015\212\019\180\018F\000\000I\208\019r\001\007\015\222\018\020\000\133\002\232\015\226\018\216\000\000\000\000\019\178&N\000\000\000\000&X\000\000\015\240\000\000\b*\000\000\000\000\000\000\000\000\000\000\000\000\\R\tr\000\000\019\180'6\000\000\000\000'\168\000\000\000\237\016\006\019P\000\000\000\000J\014O\030\n^\000\000\\d\tr'\250\000\000\000\000(\030\000\000\000\000\015\248\000\000\000~\000\000\000\000\000\000\000\000\000\000\000\000O\134\000\000\000\000J\230O\230\n\184\000\000\\~\tr(H\000\000\000\000)\006\000\000\000\000\016&)\196\016\014\000\000\016,\016V\000\002\001\020\016h\n\240\016r\019V\011D\016\022\000\000\016\128\016\134\t\222\000\000\002\162S\198\000\000\004\136\000\000\016\144K6KX\002\194\018\026\006\148\000\000P\162\t~\000\000\003D\000\000\000\000\003D\000\000\000\000\003D\r\252\000\000\006\196\003D\019Z\012P\016&\000\000\003D\000\000\000\000_$\000\000\000\000\000\000\003D\000\000\000\000\016L\000\000\b$\006\156\016r\000\000\016\194S\240\016\206\000\000\000\000\000\000\000\000\016\234\000\000\000\000\002*\000\000\003D_N\000\000\b2\003DK\150\000\000\017\022\018\170\016\212\019\220\018p\000\000K\174\017@\018\180\000\000\000\000\000\000M\028\012\162\000\000\000\000\000\000\000\000\000\000\000\000\014Z\017j\000\000\018l\016\242\016\192\bR\000\000\018\210\000\000\000\000\000\000\000\000\017\138T^\000\000\000\000\000\000\014Z\000\000\000\000\000\000\000\000\017\150\\\178\000\000\000\000\000\000\000\000\000\000\000\000\019v\n\016\r\200\0184\003\188\016\252\000\000\004v\000\000\000\000\000\000\000\000\000\000\000\000\000\000\018B\006\220\017\000\000\000\n$\005\142\019\226\019\142\017\164\000\000\000\000\019\142\012\238\007\026\000\000\000\000\000\000\000\000\000~\004\176\000\000\000\000\001=\000\000]F\tr\000\000\004\248\000\000\000\000\000\000\000\000)\166\000\000\000\000\000\000\000\000\000\000\000\000]f\tr\000\000`|\000\000\000\000\015|\000\000\000\000+\160\017\030\000\000\017|\006\214\000\000\000\000\001\140\b\220\000\000\000\000\000\000\000\000\000\000]\144\tr\000\000`\146\000\000\000\000\015\208\000\000\000\000`\192\000\000\000\000\016x\000\000\017\204P\018\000\000]\172\tr\000\000`\224\000\000\000\000\018f\000\000\000\000`\234\000\000\000\000\019\n\000\000\t\n\000\000\000\000\000\000\tr\000\000\000\000\012\022\019\164\017\202\000\000\000\000\019\154\004\218\001\184\000\000\000\000\000\000\000\000\011\226\012\210\019\226\012\138\019\172\017\222\000\000\000\000\019\160\n\134\002.\000\000\000\000\000\000\000\000\004\176\000\000\017\226\000\000\000\000\000\000)\238\000\000*F\000\000\000\000\000\000\000\000\000\000<\216\000\000\000\000\000\000\005\006\000\162\000\000\000\000\000\000\000\000\000\000\002\160\000\162\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\164\000\000\000\000\000\000T\016\000\000\tr\000\000\r0\000\000\000\000\000\000\000\031\000\000\000\000\000\000\tR\000\000\000\000\000\000\004\134\000\000\000~\000\000\000Y\000\000\004\176\000\000\004\214\000\000\000\000\000\000>\228\001=\000\000\000\000\000\031\000\000\000\000\000\000\000\000\006\164\0058\018\198\005\222\000\000\000\000\000\000\000\000\000\000\000\000\018\202\0070\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000]\"\000\000\017\232\000\000\000\000\000\000\000\000\005\144\007|\027\004O\030\000\000\000\000\018\016T\176\000\000\000\000\000\000\018DT\236\000\000\000\000\000\000\000\000"), (16, "\007p\002\197\003\169\002\198\002\199\001\239\003\167\002\200\bo\002\199\001\239\0008\002p\001\027\b\015\b&\001\031\001 \003\026\007q\007\133\001\027\002\136\007s\001\031\001 \002\140\003\027\001I\002p\000r\001\239\007\186\007t\007\134\006\249\000\182\001Q\005\248\002\136\001U\0035\b,\002\140\007-\001I\001\027\001V\006\251\001\031\0013\000\182\b\023\002\129\002\132\bc\007p\002\197\0014\002\198\002\199\001\239\004\164\002\200\002\136\007u\001W\0008\002\140\007\137\001I\002\141\005\249\007\151\003\026\007q\007\133\007/\002\011\007s\007\000\bq\000\164\003\027\000\176\002\142\0017\bW\002\141\007t\007\134\002p\001B\007V\bd\0070\001\217\0035\001I\001L\0072\002\136\002\142\007v\007^\002\140\002p\001I\001!\002\162\000<\0037\000\169\002\141\004\194\001`\002\136\007w\000\169\000\177\002\140\007u\001I\007Y\002\203\007\137\0039\001\031\001B\br\bX\0039\001\031\001\187\001I\001Y\001I\001Q\000\193\007[\002\197\007\138\002\198\002\199\001\239\001\027\002\200\007\004\001\031\001 \002\141\001B\005\178\002\166\001\220\001\031\007\139\001I\001Y\007v\000\164\000\181\000\176\000\191\002\142\002\141\004\192\0037\007\\\007z\001M\002\177\007|\007w\004\201\007\129\007-\001\006\000\192\002\142\002\203\001Q\0039\001\031\001S\007\131\007\185\001B\003:\002\179\003@\001b\001\031\001I\001Y\000@\003F\007\138\002\024\003<\004\214\006\141\000n\001\027\007\132\000;\001\031\0013\001Q\007/\001W\001\153\007\139\000A\001Z\007p\002\197\b*\002\198\002\199\001\239\000]\002\200\003H\005\181\007z\002\024\0070\007|\001^\006\159\007\129\0072\003\026\007q\007\133\007I\001W\007s\000\180\006\141\007\131\003\027\004\195\003:\001\131\003@\0008\007t\007\134\002\202\001B\003F\002\180\002\024\003<\0035\001I\001Y\001`\007\132\000:\001B\004\205\001E\0039\001\031\0013\001I\001L\001I\007p\002\197\007\148\002\198\002\199\001\239\001j\002\200\003H\007u\001B\001\027\000\169\007\137\001\031\001 \001I\001L\003\026\007q\b1\002\164\001\027\007s\001B\001\031\0013\003\027\002\178\000\146\001I\001Y\004\195\007t\007\134\003\234\002p\004\167\0008\002\159\000\149\0035\007-\001Z\bK\003\163\002\136\007v\004j\003\167\002\140\001B\001I\005\016\006+\0037\003:\001I\001Y\003\234\001Q\007w\002u\001}\003;\007u\002\024\003<\002\203\006,\0039\001\031\001B\006D\001[\007/\006\166\006\167\001I\001Y\001v\002\177\000a\005\178\005\016\007\138\001\031\001Z\001]\001W\bC\b\b\b\t\0070\003\234\002\141\006\176\005;\0072\000\169\007\139\003\163\007B\007v\003\164\003\167\005\027\005\029\005\031\002\142\000\169\0037\b\019\007z\001Z\004\177\007|\007w\001\131\007\129\000\136\001\135\002n\006\214\002\203\001Q\0039\001\031\001S\007\131\001Q\001\206\003:\000\138\003@\001b\005u\005\030\005\029\005\031\003F\007\138\002\024\003<\001Q\001\131\002\158\b\020\007\132\000\182\000\188\002\129\001Q\001\208\001W\bL\007\139\002\024\000e\007p\002\197\007\140\002\198\002\199\001\239\007]\002\200\003H\001g\007z\000>\b\"\007|\b3\001B\007\129\005\"\003\026\007q\007\133\001I\001Y\007s\004\170\005\"\007\131\003\027\006\159\003:\001\229\003@\006\136\007t\007\134\004\150\007Y\003F\003E\002\024\003<\0035\001B\001Q\001`\007\132\007\237\b\020\001I\001L\002\178\001\027\007[\000y\001\031\001 \007p\002\197\002\153\002\198\002\199\001\239\001j\002\200\003H\007u\001\195\001\027\000x\007\203\001\031\001 \001W\000\216\003\026\007q\007\133\000w\001Z\007s\001B\007\\\007-\003\027\001\237\001B\001I\001Y\002\158\007t\007\134\001I\001Y\001Q\007\226\006\141\001\164\0035\007-\001B\bD\001\233\004\170\007v\007L\001I\001Y\001B\006\216\001\131\002\154\0037\001\248\001I\001Y\007/\003E\007w\002,\001\239\001f\007u\001W\001B\002\203\007\142\0039\001\031\001B\001I\001Y\007/\004\152\0070\001I\001L\001v\000\128\0072\007\243\000\142\007\138\0079\001Z\001B\006\166\006\167\001\205\001Z\0070\001I\001Y\002\147\000\138\0072\001\031\007\139\001B\0076\007v\0008\006\183\001Z\001I\001Y\006\176\005;\0037\005'\007z\001Z\006<\007|\007w\001\131\007\129\005/\001\135\000\169\007\222\002\203\000\168\0039\001\031\002U\007\131\000\140\004\166\003:\001\170\003@\006+\005\178\005(\000\138\001\031\003F\007\138\002\024\003<\006?\0052\000\169\003\234\007\132\001\237\006,\001B\001\238\001\239\0063\001\240\007\139\001I\001Y\001B\006A\003\155\003\234\000\152\001Z\001I\001Y\003H\0074\007z\003\158\003\234\007|\001\241\003\159\007\129\001\243\001\244\001\249\000\182\007\171\002\129\b<\006B\002\177\007\131\002X\006C\003:\005\229\003@\000\166\001\031\b_\004\162\001\131\003F\006\159\002\024\003<\003\234\002\166\007p\002\197\007\132\002\198\002\199\001\239\007\157\002\200\002\024\000\170\002p\b\018\001Z\002q\006?\b\134\b\135\003E\003\026\b\137\002\136\003H\007\150\007s\002\140\001Q\001I\003\027\001\130\bg\006A\000\169\b`\007t\b\139\002\179\001\027\005y\001\031\001\031\001 \0035\0008\001\131\007p\002\197\007\160\002\198\002\199\001\239\b\154\002\200\001\027\006B\001W\001\031\0013\001\250\000\145\000\169\b\146\b=\003\026\b\147\002C\007u\bh\007s\002\149\002\141\001\251\003\027\000\151\001\031\001I\005\206\002\136\007t\b\155\000\169\002\140\007\161\001I\002\142\004\185\0035\b{\002\199\001\239\000\173\007\162\001\237\0017\000\172\001\238\001\239\001\n\001\240\003\163\002\180\b>\003\181\003\167\007v\006\148\bE\001I\007\195\003\160\007u\002\178\0037\006\166\006\167\000\186\001\241\002\003\007w\001\243\001\244\001\249\002\166\000\175\007(\002\203\002\141\0039\001\031\006\175\003\162\b\021\b\022\006\176\005;\002\014\000\138\000\184\007Y\b\142\001B\007\173\004v\002\023\006s\002\024\001I\001Y\007v\002\135\bF\006\176\005;\000\187\007[\005t\0037\007\139\002\179\002\166\000\169\001\031\007w\002\004\001Q\002\005\002\231\001\163\006\141\002\203\007z\0039\001\031\007|\bG\006t\007\129\006u\000\182\001\004\002\129\003\247\b\159\007\\\001\031\0013\007\131\004\208\001\239\003:\001\007\003@\002\170\001W\000\222\002\179\bH\003F\001\031\002\024\003<\007\139\002\012\001Z\006\141\007\132\0008\000\169\b|\006v\0039\001\031\000\205\000\227\007z\001\251\003\234\007|\001\031\001Q\007\129\004\b\002\180\000\169\003H\000\138\004y\000\182\002t\002\129\007\131\004\170\0008\003:\001\131\003@\002\197\003L\002\198\002\199\001\239\003F\002\200\002\024\003<\003E\006w\007p\002\197\007\132\002\198\002\199\001\239\003\026\002\200\000\198\b\131\002\199\001\239\002\180\006x\006y\003\027\006z\000\169\003\026\007q\007\182\003H\005]\007s\000\182\006\134\002\129\003\027\007P\0035\000\244\001B\002\014\007t\007\134\000\203\000\169\001I\001Y\006\188\002\015\0035\002\024\005\016\007p\002\197\003\236\002\198\002\199\001\239\004.\002\200\001\027\001\031\0013\001\031\001 \000\182\006\146\002\129\b\146\003\234\003\026\b\147\002\152\007u\006|\007s\001B\006~\001I\003\027\006\131\006\143\001I\001L\001\027\007t\b\150\001\031\001 \000\213\006\186\007-\004\229\0035\001B\002]\005\178\000n\004?\001\031\001I\001Y\001Z\007\221\006\152\005\029\005\031\0037\000\169\006\187\002\197\007v\002\198\002\199\001\239\007-\002\200\007u\001s\0037\002\203\000\253\0039\001\031\007/\007w\002\166\003\026\003\234\000\221\004\152\000\138\002\203\001\131\0039\001\031\003\027\006\221\b\132\006+\0039\001\031\0070\004\138\003\214\001\239\007\181\0072\007/\007\138\0035\0073\003=\005E\006,\007v\0074\001Z\006-\002\181\005\016\005\148\002\179\0037\007\139\001\031\0070\001B\007\169\007w\002\024\0072\000\226\001I\001L\007=\002\203\007z\0039\001\031\007|\007\161\007\194\007\129\003:\004\165\003@\005\154\007\222\b\153\007\162\000\169\003F\007\131\002\024\003<\003:\000\243\003@\003\163\000\169\006s\004f\003\167\003F\005\218\002\024\003<\007\139\000\247\000n\001B\007\132\006\172\005\029\005\031\001B\001I\001L\003H\0037\007z\001I\001L\007|\003\234\002\180\007\129\004\254\005\016\006+\003H\006t\002\203\006u\0039\001\031\007\131\004\170\001Q\003:\004\236\003@\006\"\005Q\006,\001\031\002\177\003F\0062\002\024\003<\003E\006\225\007p\002\197\007\132\002\198\002\199\001\239\001\027\002\200\001\001\001\031\001 \003=\006v\001\027\001Q\001\b\001\031\001 \003\026\007q\006+\003H\000\255\007s\002\135\001Q\001\002\003\027\006\180\005\029\005\031\005\001\001\018\007t\007\144\006,\006s\007-\005v\006L\006'\0035\001\021\003:\007-\003@\005\"\001Q\007\128\006w\001S\003F\001\017\002\024\003<\005-\002\197\001b\002\198\002\199\001\239\001\025\002\200\006x\006y\007u\006z\006t\006\189\006u\007/\002p\001&\001\142\002\134\001\024\001W\007/\003H\001%\001Q\002\136\004B\001S\001\222\002\140\000\138\001I\0070\006{\001b\005\002\000\169\0072\003\234\0070\000\169\007O\001;\001B\0072\006v\000\169\007v\007b\001I\001Y\001\147\007\224\001W\005\016\0037\000\169\005\135\b[\003\234\006|\007w\003\234\006~\000\138\002\178\006\131\006\143\002\203\001`\0039\001\031\001B\006\159\002\141\000\169\006\186\004\170\001I\001Y\004\170\001\204\006w\001B\001>\007\147\000\169\001j\002\142\001I\001Y\003E\005\001\007\177\003E\006\187\006x\006y\003\234\006z\007\139\b\\\001`\003\234\001\031\001B\001Z\b\005\005\029\005\031\002\202\001I\001Y\007z\005\001\005\224\007|\b\n\0060\007\129\001j\001\031\006\190\002\203\001Q\0039\001\031\001\169\005\140\007\131\001\202\007\159\003:\001P\003@\001Z\006\016\007\222\001B\003\235\003F\0053\002\024\003<\001I\001Y\001Z\001Q\007\132\006|\001\181\000\169\006~\001W\001\237\006\131\006\143\003y\001\239\001\226\001\240\001v\004D\001n\002\002\006\186\0056\003H\001Z\003\234\003\234\007#\006\191\002d\001\031\0064\001W\001\133\003\195\002\003\006E\001\243\001\244\001\249\006\187\005\001\004\200\003:\002\135\b!\006\166\006\167\001q\001Q\001v\003;\001S\002\024\003<\001\131\000\169\001Z\001\135\001b\002f\006\168\006\184\001B\0008\001\134\006\176\005;\001\237\001I\001Y\003y\001\239\003\163\001\240\001\138\006\240\003\167\001W\001\145\003\200\003\216\003\217\001\237\004\196\000\169\003y\001\239\001\131\001\240\000\169\001\135\003\195\002\003\001B\001\243\001\244\001\249\006\159\000\169\001I\001Y\006M\006\130\006.\007\163\007\164\003\195\002\003\006.\001\243\001\244\001\249\002\166\007\165\007\166\003\220\001B\003\163\003\234\002\012\007\b\003\167\001I\001Y\007\167\005;\001`\003\003\001Q\000\169\001\027\001\180\001\251\001\031\0013\001\031\003\007\003\200\003\216\003\217\000\138\006\162\003~\002m\001j\002\167\003\146\001Q\002\179\000\138\001\186\001\031\003\200\003\216\003\217\000\138\001Z\001W\002\192\000\138\004\197\002\195\001B\b\021\b\022\003\232\003\233\002\211\001I\001Y\004\195\b\030\001\198\003\220\006.\002\135\001W\002\012\004]\001Z\002\226\002\229\001Q\006\176\005;\001\188\001\219\001\131\003\220\005\233\001\251\000\138\002\012\001\031\001Q\005A\002\014\001Q\003\221\001\239\001S\002\235\003\012\005\193\002\015\001\251\002\024\001b\001\031\001I\001\131\001W\002\180\000\169\006\166\006\167\001\237\002>\001v\003y\001\239\001\225\001\240\003\232\005@\001Z\001W\002\166\000\169\006\168\006\184\000\169\005\011\005;\006\176\005;\003\018\000\169\003\232\007\030\003\195\002\003\001B\001\243\001\244\001\249\006\159\005\235\001I\001Y\000\169\000\169\003\234\003x\002\014\001Q\001\131\007\027\001S\001\135\002\212\001B\002\015\002\179\002\024\001b\001\031\001I\001Y\002\014\001\237\000\169\000\169\001\238\001\239\001`\001\240\002\015\001Q\002\024\004\240\006X\004\246\003\234\001W\001B\003\200\003\216\003\217\003\234\b\012\001I\001Y\001j\001\241\002\003\001B\001\243\001\244\001\249\005\005\002<\001I\001Y\006\159\001Z\000\169\001W\001B\002\001\003\234\001B\005\160\001\239\001I\001Y\005\023\001I\001Y\005\025\005d\0058\003\220\000\169\001Z\005=\002\012\002\180\002\197\005\130\002\198\002\199\001\239\001`\002\200\003\234\001\131\005V\002\020\001\251\005\145\002\004\001\031\002\005\002\231\003\026\005w\003\234\b\027\002\166\000\169\001j\000\169\007\180\003\027\001\131\005}\003\234\005\132\001Z\005\136\bS\003\234\006\166\006\167\005\138\005\141\001v\0035\001B\000\169\001Z\003\232\007@\001Z\001I\001Y\b\025\006\168\006\184\002\012\002\019\004\241\006\176\005;\002\179\000\169\005\146\001\031\000\169\001\131\000\169\001B\001\251\005\159\000\169\001\031\005\001\001I\001Y\005\175\005;\004`\002\014\004y\001\131\002B\000\169\001\135\005\174\bU\002\015\005\170\002\024\002V\005\182\000\169\002p\005\185\002^\002\144\006\166\006\167\005\192\005\183\001v\000\169\002\136\000\169\005C\005\196\002\140\001Z\001I\005\186\000\169\006\168\006\184\0037\005\194\006\141\006\176\005;\003\234\002\197\005<\002\198\002\199\001\239\002\180\002\200\002\203\005\202\0039\001\031\001Z\002\197\002\014\002\198\002\199\001\239\003\026\002\200\001\131\000\169\002\015\001\135\002\024\005\197\005\212\003\027\007\163\007\164\003\026\001I\001I\002\141\007\202\004\239\000\169\007\165\007\166\003\027\003=\0035\000\169\001\131\005\208\000\169\007\198\002\142\007\167\005;\000\169\002c\002\197\0035\002\198\002\199\001\239\000\169\002\200\002i\005\220\002\197\005\239\002\198\002\199\001\239\000\182\002\200\005\252\003\026\002\157\003\234\003:\003\234\003@\003\234\002\166\005\198\003\027\000\169\003F\005\244\002\024\003<\006\001\005e\005\236\005S\005\240\005;\003\234\006\007\0035\001\237\006\156\005;\002L\001\239\002z\001\240\001Q\002\166\002\197\006_\002\198\002\199\001\239\003H\002\200\004\249\007;\0037\002\179\001\031\000\169\001\031\002|\001\241\002\220\003\026\001\243\001\244\001\249\0037\002\203\006\018\0039\001\031\003\027\001W\000\169\002\139\000\169\002\156\004\253\005b\002\203\002\179\0039\001\031\001\031\004\222\0035\002\197\005\235\002\198\002\199\001\239\005\213\002\200\005\230\000\169\005\234\003\234\000\169\003\234\003=\007\155\005;\006\029\003\026\000\169\0037\004\128\003\216\003\217\006/\006\027\003=\003\027\004\218\002\202\006!\002\191\002\194\002\203\002\180\0039\001\031\002\210\005M\0066\006G\0035\002\203\006Q\0039\001\031\003:\001Q\003@\002\225\007\213\001Q\003\234\000\169\003F\002\228\002\024\003<\003:\002\180\003@\002\012\002\166\006j\006\128\003=\003F\003\234\002\024\003<\0037\002\234\001B\002\253\001\251\002\247\001W\001\031\001I\001Y\001Q\003H\002\250\002\203\003\011\0039\001\031\000\169\006;\001Q\006@\003\017\007\236\003H\000\169\005W\003'\003:\002\179\003@\000\169\001\031\004\131\004\136\006\133\003F\003:\002\024\003<\000\169\000\169\0037\003\237\000\169\003;\003=\002\024\003<\001W\002\197\003\148\002\198\002\199\001\239\002\203\002\200\0039\001\031\003\234\006h\003\234\003\234\003H\000\169\000\169\001Z\003\026\002\197\002\014\002\198\002\199\001\239\006\145\002\200\006p\003\027\002\015\003:\002\024\003@\002\166\006\158\005K\003\141\003\026\003F\003=\002\024\003<\0035\003\234\001B\002\180\003\027\003\234\001B\001\131\001I\001Y\003\144\005B\001I\001Y\001Q\000\169\003\234\007\242\0035\006\178\003\234\003\215\002p\003H\005x\002\146\004S\002\179\003\234\003:\001\031\005P\002\136\004\169\004\188\001B\002\140\003F\001I\002\024\003<\001I\001Y\001W\001B\004\198\006}\003\234\006\139\006\164\001I\001Y\004\220\000\169\002\197\004\245\002\198\002\199\001\239\004\247\002\200\005\004\000\169\0057\003H\001Z\003\234\006\194\005,\001Z\0037\003\026\006\201\002\197\006\205\002\198\002\199\001\239\006\215\002\200\003\027\002\141\006\250\002\203\005?\0039\001\031\004\238\0037\000\169\003\026\002\180\006\234\007\020\0035\002\142\001\131\007\031\001Z\003\027\005!\002\203\005F\0039\001\031\007A\005U\001Z\007\018\005`\004\232\007N\003\234\0035\002\197\003=\002\198\002\199\001\239\002\197\002\200\002\198\002\199\001\239\007M\002\200\003\234\002\166\001B\005&\005\131\003\026\007\023\003=\001I\001Y\003\026\000\169\001\131\005|\003\027\007>\000\169\007Q\000\169\003\027\007\028\003:\003\234\003@\005~\004\225\004\211\007:\0035\003F\007\"\002\024\003<\0035\007\127\007*\000\169\002\179\0037\003:\001\031\003@\002\197\003\234\002\198\002\199\001\239\003F\002\200\002\024\003<\002\203\000\169\0039\001\031\000\169\003H\0037\001Q\003\026\007S\007\254\005\129\007U\003\234\001Z\005\144\005\134\003\027\007h\002\203\005\143\0039\001\031\003H\004\127\000\169\007Z\002p\005\139\003\234\002\174\0035\003=\007~\000\169\003\234\001W\002\136\007\158\000\169\007\170\002\140\003\234\001I\005\142\001\131\000\169\0037\007f\000\169\002\180\003=\0037\001\237\000\169\007\217\001\238\001\239\005\158\001\240\002\203\003\234\0039\001\031\003:\002\203\003@\0039\001\031\007m\005\169\003\234\003F\003\234\002\024\003<\003\234\001\241\001\242\000\169\001\243\001\244\001\249\003:\001Q\004\235\002\141\007\253\000\169\005\168\007{\003F\003=\002\024\003<\002p\003\234\003=\002\215\003H\002\142\0037\007\219\000\169\005\173\002\136\007\135\005\184\000\169\002\140\000\169\001I\007\145\001W\002\203\005\195\0039\001\031\003H\007\176\005\191\001B\003\234\005\207\003:\000\169\004\228\001I\001Y\003:\005\201\003@\003F\005\203\002\024\003<\005\227\003F\b\014\002\024\003<\002\197\005\215\002\198\002\199\001\239\003=\002\200\b\029\005\226\b)\005\221\005\225\b\140\002\141\005\238\006P\005\243\003\026\003H\005\246\005\253\006\005\001\250\003H\006\012\001Q\003\027\002\142\b\003\006\023\006O\000\169\b\151\004z\006H\001\251\006I\003:\001\031\003@\0035\006N\006R\001Z\006S\003F\006r\002\024\003<\002\197\006k\002\198\002\199\001\239\001W\002\200\001\237\001B\b\156\001\238\001\239\006l\001\240\001I\001Y\006q\003\026\001\237\006\127\006\142\001\238\001\239\003H\001\240\001\131\003\027\006\137\006\138\006\140\006\185\001\241\002\003\004o\001\243\001\244\001\249\006\157\006\161\006\163\0035\006\165\001\241\002\003\006\177\001\243\001\244\001\249\006\193\006\195\002\014\006\196\006\202\002\197\006\207\002\198\002\199\001\239\002\023\002\200\002\024\0037\006\211\006\229\006\236\007\029\0075\007?\007o\007i\003\026\001Z\007j\007n\002\203\007}\0039\001\031\002\004\003\027\002\005\002\239\007\130\007\153\002p\007\174\004X\004\251\007\175\002\004\001B\002\005\003\170\0035\002\136\007\179\001I\001Y\002\140\b\r\001I\b\017\001\131\b\028\b \bv\003=\b~\000\000\000\000\0037\000\000\000\000\002\245\000\000\000\000\000\000\002\012\000n\000\000\000\000\000\000\000\000\002\203\003\176\0039\001\031\000\000\002\012\000\000\001\251\000\000\000\000\001\031\000\000\000\000\000\000\000\000\003:\000\000\003@\001\251\000\000\002\141\001\031\000\000\003F\000\000\002\024\003<\000\000\000\000\000\000\001Z\000\000\003=\000\000\002\142\000\000\000\000\002\249\002p\000\000\0037\005[\000\000\002\197\000\000\002\198\002\199\001\239\002\136\002\200\003H\000\000\002\140\002\203\001I\0039\001\031\000\000\000\000\000\000\003\026\001\131\000\000\000\000\003:\000\000\003@\001Q\000\000\003\027\001S\002\014\003F\001\189\002\024\003<\004P\001b\000\000\002\015\000\000\002\024\002\014\0035\000\000\003=\000\000\000\000\000\000\000\000\002\015\000\000\002\024\000\000\000\000\001\194\001W\002\141\002\197\003H\002\198\002\199\001\239\002\197\002\200\002\198\002\199\001\239\000\000\002\200\000\000\002\142\000\000\000\000\000\000\003\026\000\000\003:\000\000\003@\003\026\000\000\000\000\000\000\003\027\003F\000\000\002\024\003<\003\027\000\000\004O\000\000\000\000\000\000\000\000\000\000\000\000\0035\000\000\004G\000\000\001Q\0035\002\197\001`\002\198\002\199\001\239\000\000\002\200\000\000\003H\0037\000\000\000\000\002\197\000\000\002\198\002\199\001\239\003\026\002\200\001j\000\000\000\000\002\203\001\195\0039\001\031\003\027\000\000\000\000\003\026\000\000\000\000\002p\0032\000\000\005k\000\000\001B\003\027\000\000\0035\000\000\002\136\001I\001Y\003?\002\140\002p\001I\000\000\005o\000\000\0035\000\000\003=\000\000\002p\002\136\000\000\005r\000\000\002\140\000\000\001I\0037\000\000\002\136\000\000\000\000\0037\002\140\000\000\001I\000\000\000\000\000\000\000\000\002\203\000\000\0039\001\031\000\000\002\203\000\000\0039\001\031\003:\000\000\003@\000\000\000\000\002\141\000\000\001v\003F\000\000\002\024\003<\000\000\000\000\001Z\000\000\000\000\000\000\001\205\002\142\002\141\000\000\000\000\003=\0037\000\000\001B\000\000\003=\002\141\000\000\000\000\001I\001Y\002\142\003H\0037\002\203\000\000\0039\001\031\000\000\000\000\002\142\000\000\001\131\000\000\000\000\001\135\002\203\000\000\0039\001\031\000\000\000\000\003:\000\000\003@\000\000\000\000\003:\000\000\003\253\003F\000\000\002\024\003<\000\000\003F\003=\002\024\003<\002p\000\000\002\197\005\128\002\198\002\199\001\239\000\000\002\200\003=\002\136\000\000\000\000\000\000\002\140\000\000\001I\001Z\003H\003\026\000\000\000\000\000\000\003H\000\000\000\000\000\000\000\000\003\027\003:\002\197\003@\002\198\002\199\001\239\003N\002\200\003F\000\000\002\024\003<\003:\0035\003@\000\000\000\000\000\000\003\026\005%\003F\000\000\002\024\003<\000\000\000\000\000\000\003\027\000\000\002p\002\141\000\000\005\205\000\000\003M\003H\000\000\000\000\000\000\002\136\000\000\0035\000\000\002\140\002\142\001I\000\000\003H\000\000\001\237\000\000\000\000\001\238\001\239\002\197\001\240\002\198\002\199\001\239\000\000\002\200\000\000\001Q\000\000\000\000\001S\000\000\000\000\000\000\000\000\000\000\003\026\001b\001\241\002\003\000\000\001\243\001\244\001\249\002p\003\027\000\000\005\217\0037\000\000\000\000\000\000\003\154\002\141\002\136\000\000\001W\000\000\002\140\0035\001I\002\203\000\000\0039\001\031\000\000\000\000\002\142\005\019\002\197\000\000\002\198\002\199\001\239\000\000\002\200\0037\000\000\000\000\000\000\000\000\000\000\000\000\005\022\000\000\002\004\003\026\002\005\003\130\002\203\000\000\0039\001\031\003=\000\000\003\027\000\000\000\000\000\000\000\000\000\000\000\000\003\157\002\141\000\000\001`\001Q\000\000\000\000\0035\000\000\000\000\000\000\000\000\000n\000\000\002p\002\142\000\000\005\223\003\136\003=\000\000\001j\002\012\003:\002\136\003@\000\000\0037\002\140\000\000\001I\003F\000\000\002\024\003<\001\251\000\000\000\000\001\031\001B\002\203\000\000\0039\001\031\000\000\001I\001Y\000\000\000\000\000\000\000\000\003:\000\000\003@\000\000\000\000\000\000\001Q\003H\003F\000\000\002\024\003<\000\000\000\000\002\197\000\000\002\198\002\199\001\239\000\000\002\200\003=\002\141\000\000\000\000\000\000\0037\000\000\000\000\000\000\000\000\003\026\000\000\000\000\000\000\003H\002\142\000\000\000\000\002\203\003\027\0039\001\031\000\000\001v\000\000\000\000\003\185\002\014\000\000\000\000\001Z\000\000\003:\0035\003@\002\015\000\000\002\024\000\000\000\000\003F\000\000\002\024\003<\000\000\002\197\001B\002\198\002\199\001\239\003=\002\200\001I\001Y\000\000\000\000\002p\000\000\000\000\005\232\000\000\001\131\003\026\000\000\005\026\002p\002\136\003H\006\129\000\000\002\140\003\027\001I\000\000\000\000\002\136\000\000\000\000\003\190\002\140\000\000\001I\003:\000\000\003@\0035\000\000\000\000\000\000\000\000\003F\000\000\002\024\003<\002\197\000\000\002\198\002\199\001\239\001B\002\200\000\000\000\000\0037\000\000\001I\001Y\000\000\000\000\001Z\000\000\003\026\000\000\000\000\000\000\002\141\002\203\003H\0039\001\031\003\027\000\000\000\000\000\000\002\141\000\000\000\000\003\193\000\000\002\142\000\000\000\000\000\000\000\000\0035\000\000\000\000\000\000\002\142\000\000\0051\000\000\000\000\002\197\000\000\002\198\002\199\001\239\003=\002\200\000\000\000\000\000\000\000\000\000\000\0037\000\000\000\000\000\000\000\000\003\026\000\000\001Z\000\000\000\000\000\000\000\000\000\000\002\203\003\027\0039\001\031\000\000\000\000\000\000\000\000\003\199\000\000\000\000\000\000\003:\000\000\003@\0035\000\000\000\000\000\000\000\000\003F\000\000\002\024\003<\000\000\0055\000\000\002\197\000\000\002\198\002\199\001\239\003=\002\200\000\000\000\000\0037\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\026\000\000\000\000\003H\000\000\002\203\000\000\0039\001\031\003\027\000\000\000\000\000\000\000\000\000\000\000\000\003\202\000\000\000\000\000\000\003:\000\000\003@\0035\000\000\000\000\000\000\000\000\003F\000\000\002\024\003<\002\197\000\000\002\198\002\199\001\239\003=\002\200\000\000\000\000\0037\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\026\000\000\000\000\000\000\000\000\002\203\003H\0039\001\031\003\027\000\000\000\000\000\000\000\000\000\000\000\000\003\227\000\000\000\000\000\000\003:\000\000\003@\0035\000\000\000\000\000\000\000\000\003F\000\000\002\024\003<\002\197\000\000\002\198\002\199\001\239\003=\002\200\000\000\000\000\000\000\000\000\000\000\0037\000\000\000\000\000\000\000\000\003\026\000\000\000\000\000\000\000\000\000\000\003H\000\000\002\203\003\027\0039\001\031\000\000\007p\000\000\000\000\003\230\000\000\000\000\000\000\003:\000\000\003@\0035\000\000\000\000\000\000\000\000\003F\b\146\002\024\003<\b\147\000\000\000\000\002\197\007s\002\198\002\199\001\239\003=\002\200\000\000\000\000\0037\000\000\007t\000\000\000\000\000\000\000\000\000\000\003\026\000\000\000\000\003H\000\000\002\203\000\000\0039\001\031\003\027\000\000\000\000\000\000\000\000\000\000\000\000\003\240\000\000\000\000\000\000\003:\000\000\003@\0035\000\000\000\000\007u\000\000\003F\000\000\002\024\003<\002\197\000\000\002\198\002\199\001\239\003=\002\200\000\000\000\000\0037\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\026\000\000\000\000\000\000\000\000\002\203\003H\0039\001\031\003\027\000\000\000\000\000\000\000\000\000\000\007v\003\244\000\000\000\000\000\000\003:\000\000\003@\0035\000\000\000\000\000\000\000\000\003F\007w\002\024\003<\000\000\000\000\000\000\000\000\002\197\003=\002\198\002\199\001\239\000\000\002\200\000\000\0037\000\000\000\000\000\000\002\197\b\149\002\198\002\199\001\239\003\026\002\200\003H\000\000\002\203\000\000\0039\001\031\000\000\003\027\000\000\000\000\003\026\000\000\000\000\007y\003:\000\000\003@\000\000\003\250\003\027\000\000\0035\003F\000\000\002\024\003<\007z\000\000\000\000\007|\003\255\000\000\007\129\0035\003=\000\000\000\000\000\000\0037\000\000\000\000\002\197\007\131\002\198\002\199\001\239\000\000\002\200\000\000\003H\000\000\002\203\000\000\0039\001\031\000\000\000\000\000\000\003\026\000\000\000\000\007\132\000\000\000\000\000\000\000\000\003:\003\027\003@\000\000\000\000\000\000\000\000\000\000\003F\000\000\002\024\003<\004\001\000\000\000\000\0035\002\197\003=\002\198\002\199\001\239\000\000\002\200\000\000\000\000\0037\000\000\000\000\002\197\000\000\002\198\002\199\001\239\003\026\002\200\003H\000\000\0037\002\203\000\000\0039\001\031\003\027\000\000\000\000\003\026\000\000\000\000\000\000\003:\002\203\003@\0039\001\031\003\027\000\000\0035\003F\000\000\002\024\003<\000\000\000\000\000\000\000\000\004\005\000\000\000\000\0035\002\197\003=\002\198\002\199\001\239\000\000\002\200\000\000\000\000\000\000\000\000\000\000\000\000\003=\000\000\003H\0037\003\026\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\027\000\000\000\000\002\203\000\000\0039\001\031\003:\000\000\003\253\000\000\004\r\000\000\000\000\0035\003F\000\000\002\024\003<\003:\000\000\003\253\002\197\000\000\002\198\002\199\001\239\003F\002\200\002\024\003<\0037\000\000\000\000\002\197\003=\002\198\002\199\001\239\003\026\002\200\000\000\003H\0037\002\203\000\000\0039\001\031\003\027\000\000\000\000\003\026\000\000\000\000\003H\004 \002\203\000\000\0039\001\031\003\027\000\000\0035\000\000\000\000\000\000\000\000\003:\000\000\003\253\000\000\004\019\000\000\000\000\0035\003F\003=\002\024\003<\000\000\000\000\000\000\000\000\000\000\0037\000\000\000\000\002\197\003=\002\198\002\199\001\239\000\000\002\200\000\000\000\000\000\000\002\203\000\000\0039\001\031\000\000\003H\000\000\003\026\000\000\000\000\000\000\003:\000\000\005f\000\000\000\000\003\027\000\000\000\000\003F\000\000\002\024\003<\003:\000\000\003\253\000\000\004\025\000\000\000\000\0035\003F\003=\002\024\003<\0037\000\000\000\000\000\000\002\197\000\000\002\198\002\199\001\239\000\000\002\200\003H\0037\002\203\000\000\0039\001\031\000\000\000\000\000\000\000\000\003\026\000\000\003H\000\000\002\203\000\000\0039\001\031\003:\003\027\003\253\000\000\000\000\000\000\000\000\000\000\003F\000\000\002\024\003<\0041\000\000\000\000\0035\003=\000\000\000\000\000\000\000\000\002\197\000\000\002\198\002\199\001\239\000\000\002\200\003=\000\000\000\000\000\000\000\000\000\000\000\000\003H\0037\000\000\003\026\000\000\002\197\000\000\002\198\002\199\001\239\000\000\002\200\003\027\003:\002\203\003@\0039\001\031\000\000\004%\000\000\003F\003\026\002\024\003<\003:\0035\003\253\000\000\000\000\000\000\003\027\000\000\003F\000\000\002\024\003<\000\000\004*\000\000\000\000\000\000\000\000\000\000\000\000\0035\003=\000\000\003H\000\000\0037\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003H\000\000\000\000\002\203\000\000\0039\001\031\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\253\002\197\000\000\002\198\002\199\001\239\003F\002\200\002\024\003<\000\000\000\000\000\000\000\000\000\000\003=\0037\000\000\003\026\002\197\000\000\002\198\002\199\001\239\000\000\002\200\000\000\003\027\000\000\002\203\000\000\0039\001\031\003H\000\000\0037\003\026\000\000\0046\000\000\000\000\0035\000\000\000\000\000\000\003\027\000\000\003:\002\203\003\253\0039\001\031\000\000\000\000\000\000\003F\004;\002\024\003<\0035\002\197\003=\002\198\002\199\001\239\000\000\002\200\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\026\000\000\000\000\003=\000\000\003H\000\000\000\000\000\000\003\027\000\000\000\000\000\000\000\000\000\000\000\000\003:\000\000\003@\000\000\004J\000\000\000\000\0035\003F\000\000\002\024\003<\000\000\000\000\000\000\000\000\000\000\000\000\0037\003:\000\000\003@\000\000\000\000\000\000\000\000\000\000\003F\000\000\002\024\003<\002\203\000\000\0039\001\031\003H\0037\000\000\001Q\000\000\000\000\001z\000\000\000\000\000\000\000\000\000\000\000\000\001{\002\203\000\000\0039\001\031\000\000\003H\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\197\003=\002\198\002\199\001\239\001W\002\200\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0037\000\000\003\026\000\000\003=\000\000\000\000\000\000\000\000\000\000\000\000\003\027\000\000\002\203\000\000\0039\001\031\000\000\003:\000\000\003\253\000\000\004M\000\000\000\000\0035\003F\000\000\002\024\003<\000\000\000\000\000\000\000\000\000\000\000\000\003:\000\000\003\253\001`\000\000\000\000\000\000\000\000\003F\003=\002\024\003<\000\000\000\000\000\000\000\000\000\000\003H\000\000\000\000\000\000\001|\000\000\000\000\000\000\000\000\000\000\002\197\000\000\002\198\002\199\001\239\000\000\002\200\000\000\003H\000\000\000\000\000\000\001B\000\000\003:\000\000\003\253\003\026\001I\001Y\000\000\000\000\003F\000\000\002\024\003<\003\027\000\000\000\000\000\000\000\000\000\000\0037\004T\000\000\000\000\000\000\000\000\000\000\000\000\0035\000\000\000\000\000\000\000\000\002\203\000\000\0039\001\031\003H\002\197\000\000\002\198\002\199\001\239\002\197\002\200\002\198\002\199\001\239\000\000\002\200\000\000\000\000\000\000\000\000\000\000\003\026\000\000\000\000\000\000\000\000\003\026\000\000\000\000\001Z\003\027\003=\000\000\000\000\000\000\003\027\000\000\004V\000\000\000\000\000\000\000\000\004b\000\000\0035\000\000\000\000\000\000\000\000\0035\000\000\000\000\000\000\000\000\000\000\002\197\000\000\002\198\002\199\001\239\001\131\002\200\000\000\003:\0037\003\253\000\000\000\000\000\000\000\000\000\000\003F\003\026\002\024\003<\000\000\000\000\002\203\000\000\0039\001\031\003\027\000\000\000\000\000\000\000\000\000\000\000\000\004q\000\000\000\000\000\000\000\000\000\000\000\000\0035\000\000\000\000\003H\002\197\000\000\002\198\002\199\001\239\000\000\002\200\000\000\000\000\000\000\003=\000\000\000\000\000\000\000\000\0037\000\000\003\026\000\000\000\000\0037\002\197\000\000\002\198\002\199\001\239\003\027\002\200\002\203\000\000\0039\001\031\000\000\002\203\000\000\0039\001\031\004\143\003\026\000\000\0035\000\000\003:\000\000\003@\000\000\000\000\003\027\000\000\000\000\003F\000\000\002\024\003<\004t\000\000\000\000\000\000\000\000\000\000\003=\0035\000\000\000\000\000\000\003=\0037\002\197\000\000\002\198\002\199\001\239\000\000\002\200\000\000\000\000\000\000\003H\000\000\002\203\000\000\0039\001\031\000\000\000\000\000\000\001Q\000\000\000\000\001S\000\000\000\000\003:\004\209\003@\000\000\001b\003:\000\000\003@\003F\000\000\002\024\003<\000\000\003F\000\000\002\024\003<\000\000\0037\003=\000\000\000\000\000\000\001W\002\197\001c\002\198\002\199\001\239\000\000\002\200\002\203\000\000\0039\001\031\003H\000\000\000\000\000\000\0037\003H\003\026\000\000\002\197\000\000\002\198\002\199\001\239\000\000\002\200\003\027\003:\002\203\003@\0039\001\031\000\000\004\130\000\000\003F\003\026\002\024\003<\003=\0035\000\000\000\000\000\000\000\000\003\027\000\000\000\000\001`\000\000\000\000\000\000\004\133\000\000\000\000\000\000\000\000\000\000\000\000\0035\003=\002\202\003H\000\000\000\000\000\000\001j\000\000\000\000\000\000\000\000\003:\000\000\004\146\002\203\000\000\0039\001\031\000\000\003F\000\000\002\024\003<\000\000\001B\000\000\000\000\000\000\000\000\000\000\001I\001Y\003:\000\000\003@\002\197\000\000\002\198\002\199\001\239\003F\002\200\002\024\003<\000\000\000\000\003H\000\000\000\000\000\000\0037\000\000\003\026\002\197\000\000\002\198\002\199\001\239\000\000\002\200\000\000\003\027\000\000\002\203\000\000\0039\001\031\003H\000\000\0037\003\026\000\000\004\173\000\000\000\000\0035\000\000\000\000\003:\003\027\001v\000\000\002\203\000\000\0039\001\031\003;\001Z\002\024\003<\004\181\001\149\000\000\0035\000\000\003=\000\000\000\000\000\000\000\000\002\197\000\000\002\198\002\199\001\239\000\000\002\200\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003=\000\000\000\000\003\026\001\131\000\000\000\000\001\135\000\000\000\000\000\000\000\000\003\027\003:\000\000\003@\000\000\000\000\000\000\004\243\000\000\003F\000\000\002\024\003<\000\000\0035\000\000\000\000\000\000\000\000\0037\003:\000\000\003@\000\000\000\000\000\000\000\000\000\000\003F\000\000\002\024\003<\002\203\000\000\0039\001\031\003H\0037\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\203\000\000\0039\001\031\002\197\003H\002\198\002\199\001\239\000\000\002\200\000\000\000\000\000\000\003=\000\000\000\000\000\000\000\000\000\000\000\000\003\026\000\000\000\000\000\000\002\197\000\000\002\198\002\199\001\239\003\027\002\200\003=\000\000\0037\000\000\000\000\005\000\000\000\000\000\000\000\000\000\003\026\000\000\0035\000\000\003:\002\203\004\176\0039\001\031\003\027\000\000\000\000\003F\000\000\002\024\003<\005:\000\000\000\000\000\000\000\000\000\000\003:\0035\004\184\000\000\000\000\000\000\000\000\000\000\003F\000\000\002\024\003<\000\000\000\000\000\000\003=\000\000\003H\000\000\000\000\002\197\000\000\002\198\002\199\001\239\000\000\002\200\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003H\000\000\003\026\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\027\003:\000\000\003@\0037\000\000\000\000\005\152\000\000\003F\000\000\002\024\003<\000\000\0035\000\000\000\000\002\203\000\000\0039\001\031\000\000\000\000\000\000\000\000\0037\002\197\000\000\002\198\002\199\001\239\002\197\002\200\002\198\002\199\001\239\003H\002\200\002\203\000\000\0039\001\031\000\000\003\026\000\000\000\000\000\000\000\000\003\026\003=\001\237\000\000\003\027\001\238\001\239\000\000\001\240\003\027\000\000\006\210\000\000\000\000\000\000\000\000\006\213\000\000\0035\000\000\000\000\000\000\003=\0035\000\000\000\000\001\241\002\003\000\000\001\243\001\244\001\249\000\000\003:\000\000\003@\0037\000\000\000\000\000\000\000\000\003F\000\000\002\024\003<\000\000\000\000\000\000\000\000\002\203\000\000\0039\001\031\000\000\003:\000\000\003@\000\000\000\000\000\000\000\000\000\000\003F\000\000\002\024\003<\000\000\000\000\003H\000\000\000\000\000\000\000\000\002\004\000\000\002\005\002\028\000\000\000\000\000\000\000\000\003=\000\000\000\000\000\000\000\000\000\000\000\000\0037\003H\000\000\000\000\000\000\0037\002\197\000\000\002\198\002\199\001\239\000\000\002\200\002\203\000n\0039\001\031\000\000\002\203\000\000\0039\001\031\000\000\003\026\002\012\003:\000\000\003@\000\000\000\000\000\000\000\000\003\027\003F\000\000\002\024\003<\001\251\000\000\006\228\001\031\000\000\000\000\000\000\000\000\003=\0035\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\003H\000\000\000\000\002\197\000\000\002\198\002\199\001\239\000\000\002\200\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003:\000\000\003@\003\026\000\000\003:\000\000\003@\003F\000\000\002\024\003<\003\027\003F\000\000\002\024\003<\000\000\000\000\006\231\000\000\000\000\000\000\000\000\002\014\000\000\0035\002\197\000\000\002\198\002\199\001\239\002\015\002\200\002\024\003H\000\000\000\000\000\000\0037\003H\000\000\000\000\000\000\003\026\002\197\000\000\002\198\002\199\001\239\000\000\002\200\002\203\003\027\0039\001\031\000\000\000\000\000\000\000\000\006\244\000\000\003\026\000\000\000\000\000\000\002\197\0035\002\198\002\199\001\239\003\027\002\200\000\000\000\000\000\000\000\000\000\000\006\247\000\000\000\000\000\000\000\000\003\026\003=\0035\000\000\000\000\000\000\000\000\000\000\000\000\003\027\000\000\000\000\000\000\0037\000\000\000\000\007\012\000\000\000\000\000\000\000\000\000\000\000\000\0035\000\000\000\000\002\203\000\000\0039\001\031\000\000\000\000\000\000\003:\000\000\003@\000\000\000\000\000\000\000\000\000\000\003F\000\000\002\024\003<\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0037\000\000\000\000\000\000\003=\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\203\003H\0039\001\031\000\000\0037\000\000\000\000\000\000\000\000\000\000\002\197\000\000\002\198\002\199\001\239\000\000\002\200\002\203\000\000\0039\001\031\000\000\003:\000\000\003@\0037\000\000\003\026\000\000\000\000\003F\003=\002\024\003<\000\000\000\000\003\027\000\000\002\203\000\000\0039\001\031\000\000\007\015\000\000\000\000\000\000\000\000\000\000\003=\0035\000\000\000\000\000\000\000\000\000\000\000\000\003H\002\197\000\000\002\198\002\199\001\239\003:\002\200\003@\000\000\000\000\000\000\000\000\003=\003F\000\000\002\024\003<\000\000\000\000\000\000\000\000\000\000\000\000\003:\000\000\003@\002\201\000\000\000\000\000\000\000\000\003F\001\237\002\024\003<\001\238\001\239\000\000\001\240\000\000\003H\000\000\000\000\000\000\003:\000\000\003@\002\197\000\000\002\198\002\199\001\239\003F\002\200\002\024\003<\001\241\002\003\003H\001\243\001\244\001\249\0037\000\000\003\026\000\000\000\000\000\000\002\197\000\000\002\198\002\199\001\239\003\027\002\200\002\203\000\000\0039\001\031\003H\007\019\000\000\007\201\000\000\000\000\003\026\000\000\0035\000\000\000\000\000\000\000\000\000\000\000\000\003\027\000\000\000\000\000\000\000\000\000\000\000\000\b-\000\000\002\004\000\000\002\005\002\231\003=\0035\000\000\002\202\000\000\002\197\000\000\002\198\002\199\001\239\000\000\002\200\000\000\000\000\000\000\000\000\002\203\000\000\0039\001\031\000\000\000\000\003\026\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\027\003:\000\000\003@\002\012\000\000\000\000\b/\000\000\003F\000\000\002\024\003<\000\000\0035\000\000\000\000\001\251\000\000\0037\001\031\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004y\000\000\000\000\000\000\002\203\000\000\0039\001\031\003H\000\000\000\000\000\000\0037\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003:\000\000\000\000\000\000\002\203\000\000\0039\001\031\003;\000\000\002\024\003<\000\000\000\000\000\000\003=\000\000\000\000\000\000\000\000\002\197\000\000\002\198\002\199\001\239\000\000\002\200\000\000\000\000\000\000\000\000\000\000\002\014\000\000\000\000\0037\003=\003\026\000\000\000\000\002\015\000\000\002\024\000\000\000\000\000\000\003\027\003:\002\203\003@\0039\001\031\000\000\000\000\000\000\003F\000\000\002\024\003<\000\000\0035\001\237\000\000\000\000\001\238\001\239\000\000\001\240\003:\000\000\003@\000\000\000\000\000\000\000\000\000\000\003F\000\000\002\024\003<\003=\000\000\003H\000\000\000\000\001\241\002\003\000\000\001\243\001\244\001\249\000\000\000\000\000\000\000\000\000\000\002I\000\000\000\000\000\000\000\000\000\000\000\000\003H\000\000\000\000\000\000\000\000\001Q\000\000\000\000\001S\003:\000\000\003@\000\000\000\000\000\000\001b\000\000\003F\000\000\002\024\003<\000\000\000\000\000\000\000\000\000\000\000\000\0037\000\000\002\004\000\000\002\005\0029\000\000\001W\000\000\000\000\000\000\000\000\000\000\002\203\000\000\0039\001\031\003H\000\000\005\019\000\000\000\000\000\000\001\237\000\000\000\000\001\238\001\239\000\000\001\240\000\000\000\000\000\000\000\000\007\216\000\000\000\000\000\000\000\000\000\000\001\237\002\012\000\000\001\238\001\239\003=\001\240\001\241\002\003\000\000\001\243\001\244\001\249\000\000\001\251\000\000\001`\001\031\002E\000\000\000\000\000\000\000\000\000\000\001\241\002\003\000\000\001\243\001\244\001\249\000\000\000\000\000\000\000\000\001j\0026\000\000\003:\000\000\005J\001\237\000\000\000\000\001\238\001\239\003F\001\240\002\024\003<\000\000\000\000\000\000\001B\000\000\002\004\000\000\002\005\0029\001I\001Y\000\000\000\000\000\000\000\000\001\241\002\003\000\000\001\243\001\244\001\249\000\000\002\004\003H\002\005\0029\002;\000\000\000\000\002\014\002\197\000\000\002\198\002\199\001\239\000\000\002\200\002\015\000\000\002\024\000\000\000\000\000\000\000\000\002\012\000\000\000\000\003\026\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\027\001\251\000\000\001v\001\031\002\012\002\004\000\000\002\005\0029\001Z\000\000\000\000\000\000\0035\000\000\000\000\000\000\001\251\000\000\000\000\001\031\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\197\000\000\002\198\002\199\001\239\000\000\002\200\000\000\000\000\000\000\000\000\000\000\001\131\000\000\000\000\005\026\002\012\003\026\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\027\000\000\000\000\001\251\000\000\000\000\001\031\000\000\000\000\000\000\002\014\000\000\000\000\002\197\0035\002\198\002\199\001\239\002\015\002\200\002\024\000\000\001\237\000\000\000\000\001\238\001\239\002\014\001\240\0037\003\026\000\000\000\000\000\000\000\000\002\015\000\000\002\024\000\000\003\027\000\000\000\000\002\203\000\000\0039\001\031\001\241\002\003\000\000\001\243\001\244\001\249\000\000\0035\001\237\000\000\000\000\001\238\001\239\000\000\001\240\000\000\001Q\000\000\000\000\001S\000\000\002\014\001\189\000\000\000\000\000\000\001b\000\000\003=\002\015\000\000\002\024\001\241\002\003\000\000\001\243\001\244\001\249\0037\000\000\000\000\000\000\000\000\000\000\001\190\001W\000\000\002\004\000\000\002\005\002\231\002\203\001\214\0039\001\031\001Q\000\000\000\000\001S\000\000\003:\000\000\004\217\000\000\000\000\001b\000\000\000\000\003F\000\000\002\024\003<\000\000\000\000\000\000\000\000\000\000\0037\000\000\002\004\000\000\002\005\002\239\003=\001W\000\000\002\012\000\000\000\000\000\000\002\203\000\000\0039\001\031\001`\003H\000\000\000\000\000\000\001\251\000\000\000\000\001\031\002\197\000\000\002\198\002\199\001\239\000\000\002\200\004u\000\000\001j\000\000\000\000\003:\001\195\004F\002\012\000\000\003\026\000\000\003=\003F\000\000\002\024\003<\000\000\000\000\003\027\001B\001\251\000\000\001`\001\031\000\000\001I\001Y\000\000\000\000\000\000\000\000\002\197\0035\002\198\002\199\001\239\000\000\002\200\000\000\003H\001j\000\000\000\000\003:\000\000\003\238\000\000\000\000\003\026\000\000\002\246\003F\002\014\002\024\003<\000\000\000\000\003\027\001B\000\000\002\015\000\000\002\024\000\000\001I\001Y\000\000\000\000\000\000\000\000\002\197\0035\002\198\002\199\001\239\001v\002\200\000\000\003H\000\000\000\000\000\000\001Z\000\000\002\014\000\000\001\205\003\026\000\000\000\000\000\000\000\000\002\015\000\000\002\024\000\000\003\027\000\000\000\000\000\000\000\000\000\000\0037\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0035\000\000\000\000\001\131\001v\002\203\001\135\0039\001\031\000\000\002\197\001Z\002\198\002\199\001\239\002\197\002\200\002\198\002\199\001\239\000\000\002\200\000\000\000\000\000\000\000\000\000\000\003\026\000\000\000\000\000\000\0037\003\026\000\000\000\000\000\000\003\027\003=\000\000\000\000\000\000\003\027\001\131\000\000\002\203\001\201\0039\001\031\000\000\000\000\0035\000\000\000\000\000\000\000\000\0035\000\000\000\000\000\000\001Q\000\000\002\197\006\\\002\198\002\199\001\239\000\000\002\200\000\000\003:\0037\003B\000\000\000\000\000\000\000\000\003=\003F\003\026\002\024\003<\000\000\000\000\002\203\000\000\0039\001\031\003\027\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\0035\000\000\000\000\003H\000\000\000\000\000\000\003:\000\000\003D\000\000\000\000\000\000\000\000\003=\003F\000\000\002\024\003<\0037\000\000\000\000\000\000\000\000\0037\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\203\000\000\0039\001\031\006^\002\203\000\000\0039\001\031\000\000\003H\000\000\000\000\000\000\003:\000\000\003I\002\197\000\000\002\198\002\199\001\239\003F\002\200\002\024\003<\000\000\000\000\000\000\000\000\000\000\000\000\003=\000\000\003\026\000\000\000\000\003=\0037\000\000\001B\000\000\000\000\003\027\000\000\000\000\001I\006a\000\000\003H\000\000\002\203\000\000\0039\001\031\000\000\002\197\0035\002\198\002\199\001\239\000\000\002\200\000\000\003:\000\000\003P\000\000\000\000\003:\000\000\003R\003F\003\026\002\024\003<\000\000\003F\000\000\002\024\003<\000\000\003\027\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\0035\000\000\000\000\003H\000\000\000\000\000\000\006b\003H\000\000\000\000\002\197\000\000\002\198\002\199\001\239\000\000\002\200\000\000\003:\000\000\003T\006,\000\000\006g\000\000\006d\003F\003\026\002\024\003<\0037\000\000\000\000\000\000\000\000\000\000\003\027\001\131\000\000\000\000\000\000\000\000\000\000\002\203\000\000\0039\001\031\000\000\000\000\000\000\0035\000\000\000\000\003H\002\197\000\000\002\198\002\199\001\239\000\000\002\200\002\197\000\000\002\198\002\199\001\239\000\000\002\200\000\000\0037\000\000\003\026\000\000\000\000\000\000\003=\000\000\000\000\003\026\000\000\003\027\000\000\002\203\000\000\0039\001\031\000\000\003\027\000\000\000\000\000\000\000\000\000\000\000\000\0035\000\000\000\000\000\000\000\000\000\000\000\000\0035\000\000\000\000\000\000\000\000\000\000\003:\000\000\003V\000\000\000\000\000\000\000\000\003=\003F\000\000\002\024\003<\000\000\0037\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\203\000\000\0039\001\031\000\000\000\000\000\000\000\000\000\000\003H\000\000\000\000\000\000\003:\000\000\003X\000\000\000\000\000\000\000\000\000\000\003F\000\000\002\024\003<\000\000\000\000\000\000\000\000\000\000\000\000\0037\003=\000\000\000\000\000\000\000\000\000\000\0037\002\197\000\000\002\198\002\199\001\239\002\203\002\200\0039\001\031\003H\000\000\000\000\002\203\000\000\0039\001\031\000\000\003\026\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003:\003\027\003Z\002\197\000\000\002\198\002\199\001\239\003F\002\200\002\024\003<\003=\000\000\000\000\0035\000\000\000\000\000\000\003=\003\026\000\000\000\000\000\000\002\197\000\000\002\198\002\199\001\239\003\027\002\200\000\000\000\000\000\000\000\000\003H\000\000\000\000\000\000\000\000\000\000\003\026\000\000\0035\003:\000\000\003\\\000\000\000\000\000\000\003\027\003:\003F\003^\002\024\003<\000\000\000\000\000\000\003F\000\000\002\024\003<\000\000\0035\000\000\000\000\000\000\000\000\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\0037\003H\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\203\000\000\0039\001\031\000\000\000\000\000\000\002\197\000\000\002\198\002\199\001\239\000\000\002\200\000\000\0037\001\237\000\000\000\000\001\238\001\239\000\000\001\240\000\000\003\026\000\000\000\000\000\000\002\203\000\000\0039\001\031\003=\003\027\000\000\000\000\0037\000\000\000\000\000\000\001\241\002\003\000\000\001\243\001\244\001\249\000\000\0035\000\000\002\203\000\000\0039\001\031\002\197\000\000\002\198\002\199\001\239\000\000\002\200\003=\000\000\000\000\000\000\003:\002\197\003`\002\198\002\199\001\239\003\026\002\200\003F\000\000\002\024\003<\000\000\000\000\000\000\003\027\000\000\003=\003\026\000\000\000\000\000\000\000\000\002\004\000\000\002\005\002\231\003\027\003:\0035\003b\000\000\000\000\000\000\000\000\003H\003F\000\000\002\024\003<\000\000\0035\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003:\000\000\003d\000\000\0037\000\000\000\000\000\000\003F\000\000\002\024\003<\000\000\002\012\003H\000\000\000\000\002\203\000\000\0039\001\031\000\000\000\000\000\000\000\000\000\000\001\251\000\000\000\000\001\031\002\197\000\000\002\198\002\199\001\239\003H\002\200\004x\000\000\000\000\000\000\000\000\002\197\000\000\002\198\002\199\001\239\003\026\002\200\003=\0037\000\000\000\000\000\000\000\000\000\000\003\027\000\000\000\000\003\026\000\000\000\000\0037\002\203\000\000\0039\001\031\000\000\003\027\000\000\0035\000\000\000\000\000\000\000\000\002\203\000\000\0039\001\031\000\000\000\000\003:\0035\003f\000\000\000\000\000\000\000\000\000\000\003F\002\014\002\024\003<\000\000\000\000\003=\000\000\000\000\002\015\000\000\002\024\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\003H\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003:\000\000\003h\000\000\000\000\000\000\000\000\000\000\003F\000\000\002\024\003<\003:\0037\003j\000\000\000\000\000\000\000\000\000\000\003F\000\000\002\024\003<\000\000\0037\002\203\000\000\0039\001\031\000\000\000\000\000\000\000\000\000\000\003H\000\000\000\000\002\203\000\000\0039\001\031\002\197\000\000\002\198\002\199\001\239\003H\002\200\002\197\000\000\002\198\002\199\001\239\000\000\002\200\000\000\000\000\003=\003\026\000\000\000\000\000\000\000\000\000\000\000\000\003\026\000\000\003\027\000\000\003=\000\000\000\000\000\000\000\000\003\027\000\000\000\000\000\000\000\000\000\000\000\000\0035\000\000\000\000\000\000\000\000\000\000\000\000\0035\003:\000\000\003l\001\237\000\000\000\000\001\238\001\239\003F\001\240\002\024\003<\003:\000\000\003n\003\155\000\000\000\000\000\000\000\000\003F\000\000\002\024\003<\003\158\000\000\000\000\001\241\003\159\000\000\001\243\001\244\001\249\000\000\000\000\003H\000\000\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\002\197\000\000\002\198\002\199\001\239\000\000\002\200\002\197\000\000\002\198\002\199\001\239\0037\002\200\000\000\000\000\000\000\003\026\000\000\0037\000\000\000\000\000\000\000\000\003\026\002\203\003\027\0039\001\031\000\000\000\000\000\000\002\203\003\027\0039\001\031\000\000\000\000\000\000\000\000\0035\000\000\000\000\000\000\000\000\000\000\001\237\0035\000\000\001\238\001\239\000\000\001\240\000\000\000\000\000\000\000\000\003=\003\155\000\000\000\000\000\000\000\000\001\250\003=\000\000\000\000\003\158\000\000\000\000\001\241\003\159\000\000\001\243\001\244\001\249\001\251\000\000\000\000\001\031\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003:\000\000\003p\000\000\000\000\000\000\000\000\003:\003F\003r\002\024\003<\000\000\000\000\000\000\003F\000\000\002\024\003<\000\000\000\000\0037\000\000\000\000\000\000\003\160\000\000\000\000\0037\000\000\000\000\000\000\000\000\000\000\002\203\003H\0039\001\031\000\000\000\000\000\000\002\203\003H\0039\001\031\000\000\003\161\000\000\000\000\000\000\001\237\002\014\000\000\001\238\001\239\000\000\001\240\000\000\000\000\002\023\000\000\002\024\000\000\000\000\000\000\000\000\003=\001\250\000\000\000\000\000\000\000\000\000\000\003=\001\241\002\003\000\000\001\243\001\244\001\249\001\251\000\000\000\000\001\031\000\000\002\197\000\000\002\198\002\199\001\239\000\000\002\200\000\000\000\000\000\000\000\000\000\000\000\000\003:\000\000\003t\000\000\003\026\000\000\000\000\003:\003F\003v\002\024\003<\000\000\003\027\000\000\003F\000\000\002\024\003<\000\000\003\160\000\000\000\000\002\004\000\000\002\005\002\239\0035\000\000\000\000\000\000\000\000\000\000\000\000\002\197\003H\002\198\002\199\001\239\000\000\002\200\003\166\003H\000\000\000\000\000\000\002\014\000\000\000\000\000\000\000\000\003\026\000\000\000\000\002\023\002\197\002\024\002\198\002\199\001\239\003\027\002\200\002\012\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\026\000\000\0035\001\251\000\000\000\000\001\031\000\000\000\000\003\027\000\000\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\0037\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\177\000\000\000\000\000\000\000\000\002\203\000\000\0039\001\031\002\197\000\000\002\198\002\199\001\239\000\000\002\200\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\026\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\014\003\027\000\000\003=\000\000\0037\000\000\000\000\002\015\000\000\002\024\000\000\000\000\000\000\000\000\0035\000\000\000\000\002\203\000\000\0039\001\031\000\000\000\000\000\000\000\000\0037\002\197\000\000\002\198\002\199\001\239\000\000\002\200\000\000\003:\000\000\004\017\000\000\002\203\000\000\0039\001\031\003F\003\026\002\024\003<\000\000\000\000\000\000\003=\000\000\000\000\003\027\000\000\002\197\000\000\002\198\002\199\001\239\000\000\002\200\000\000\000\000\000\000\000\000\000\000\0035\000\000\000\000\003H\003=\003\026\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\027\003:\000\000\004\023\0037\000\000\000\000\000\000\000\000\003F\000\000\002\024\003<\000\000\0035\000\000\000\000\002\203\000\000\0039\001\031\000\000\003:\000\000\004\029\000\000\000\000\000\000\000\000\000\000\003F\000\000\002\024\003<\000\000\000\000\003H\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\000\000\000\000\000\000\000\000\0037\003H\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\203\000\000\0039\001\031\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003:\000\000\004#\0037\000\000\000\000\000\000\000\000\003F\000\000\002\024\003<\000\000\000\000\000\000\000\000\002\203\000\000\0039\001\031\003=\002\197\000\000\002\198\002\199\001\239\000\000\002\200\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003H\000\000\000\000\003\026\002\197\000\000\002\198\002\199\001\239\000\000\002\200\000\000\003\027\003=\000\000\000\000\000\000\003:\000\000\004(\000\000\003\026\000\000\000\000\000\000\003F\0035\002\024\003<\000\000\003\027\000\000\002\197\000\000\002\198\002\199\001\239\000\000\002\200\000\000\000\000\000\000\000\000\000\000\0035\003:\000\000\004-\000\000\003\026\000\000\000\000\003H\003F\000\000\002\024\003<\000\000\003\027\000\000\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\000\000\000\000\000\000\000\000\000\000\003H\000\000\000\000\000\000\002\197\000\000\002\198\002\199\001\239\000\000\002\200\000\000\000\000\000\000\000\000\000\000\0037\000\000\000\000\000\000\000\000\003\026\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\203\003\027\0039\001\031\000\000\0037\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0035\000\000\000\000\002\203\000\000\0039\001\031\000\000\000\000\000\000\002\197\000\000\002\198\002\199\001\239\000\000\002\200\003=\0037\001\237\000\000\000\000\002L\001\239\000\000\001\240\000\000\003\026\000\000\000\000\000\000\002\203\000\000\0039\001\031\003=\003\027\000\000\000\000\000\000\000\000\000\000\000\000\001\241\002\220\000\000\001\243\001\244\001\249\003:\0035\0044\000\000\000\000\000\000\000\000\000\000\003F\000\000\002\024\003<\000\000\000\000\003=\000\000\000\000\000\000\003:\000\000\0049\0037\000\000\000\000\000\000\000\000\003F\000\000\002\024\003<\000\000\000\000\000\000\000\000\002\203\003H\0039\001\031\000\000\000\000\004\128\003\216\003\217\000\000\000\000\000\000\003:\000\000\004>\000\000\000\000\000\000\000\000\003H\003F\000\000\002\024\003<\000\000\002\197\000\000\002\198\002\199\001\239\000\000\002\200\003=\000\000\000\000\000\000\000\000\0037\000\000\000\000\000\000\000\000\003\026\000\000\000\000\000\000\002\012\003H\000\000\000\000\002\203\003\027\0039\001\031\000\000\000\000\000\000\000\000\000\000\001\251\000\000\000\000\001\031\000\000\003:\0035\004A\000\000\000\000\006s\000\000\000\000\003F\000\000\002\024\003<\000\000\002\197\000\000\002\198\002\199\001\239\003=\002\200\000\000\000\000\000\000\000\000\004\135\000\000\000\000\000\000\000\000\000\000\003\026\000\000\000\000\000\000\000\000\003H\006t\b5\006u\003\027\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003:\000\000\004|\0035\000\000\000\000\000\000\000\000\003F\002\014\002\024\003<\002\197\000\000\002\198\002\199\001\239\002\015\002\200\002\024\006v\0037\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\026\000\000\000\000\000\000\000\000\002\203\003H\0039\001\031\003\027\000\000\000\000\000\000\000\000\002\197\000\000\002\198\002\199\001\239\000\000\002\200\000\000\000\000\0035\000\000\000\000\000\000\000\000\006w\000\000\000\000\003\026\002\197\000\000\002\198\002\199\001\239\003=\002\200\000\000\003\027\000\000\006x\006y\0037\006z\000\000\000\000\000\000\003\026\000\000\000\000\000\000\000\000\0035\000\000\000\000\002\203\003\027\0039\001\031\000\000\000\000\000\000\000\000\000\000\000\000\000\000\006\190\003:\000\000\004~\0035\000\000\000\000\000\000\000\000\003F\000\000\002\024\003<\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003=\000\000\000\000\000\000\0037\000\000\006|\b7\000\000\006~\000\000\000\000\006\131\006\143\000\000\003H\000\000\002\203\000\000\0039\001\031\000\000\006\186\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003:\000\000\004\148\0037\000\000\000\000\000\000\000\000\003F\006\187\002\024\003<\000\000\000\000\000\000\000\000\002\203\003=\0039\001\031\000\000\0037\000\000\000\000\002\197\000\000\002\198\002\199\001\239\000\000\002\200\000\000\000\000\000\000\002\203\003H\0039\001\031\000\000\000\000\000\000\003\026\000\000\000\000\000\000\000\000\000\000\000\000\003=\003:\003\027\004\156\000\000\000\000\000\000\000\000\000\000\003F\000\000\002\024\003<\000\000\000\000\000\000\0035\000\000\003=\000\000\001\237\000\000\000\000\001\238\001\239\000\000\001\240\001Q\000\000\000\000\001S\000\000\003:\001\189\004\159\000\000\003H\001b\000\000\000\000\003F\000\000\002\024\003<\001\241\002\003\000\000\001\243\001\244\001\249\003:\000\000\004\161\000\000\000\000\001\190\001W\000\000\003F\000\000\002\024\003<\000\000\001\212\000\000\000\000\000\000\003H\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003H\0037\000\000\000\000\000\000\000\000\002\004\000\000\002\005\bk\000\000\bm\000\000\000\000\002\203\000\000\0039\001\031\000\000\000\000\001`\000\000\000\000\001\237\000\000\000\000\001\238\001\239\000\000\001\240\000\000\001Q\000\000\000\000\001S\000\000\000\000\001\189\001j\000\000\000\000\001b\001\195\000\000\000\000\002\012\003=\001\241\002\003\000\000\001\243\001\244\001\249\000\000\000\000\000\000\001B\000\000\001\251\001\190\001W\001\031\001I\001Y\000\000\000\000\000\000\001\191\000\000\000\000\000\000\000\000\000\000\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\003F\000\000\002\024\003<\000\000\000\000\000\000\000\000\002\004\000\000\002\005\007\189\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\001Q\001v\003H\001S\000\000\000\000\001\189\000\000\001Z\000\000\001b\002\014\001\205\000\000\000\000\000\000\001j\000\000\000\000\002\015\001\195\002\024\002\012\000\000\000\000\000\000\000\000\000\000\001\190\001W\000\000\000\000\000\000\000\000\001B\001\251\001\210\000\000\001\031\001\131\001I\001Y\001\135\000\000\000\000\001\237\000\000\000\000\001\238\001\239\000\000\001\240\001\237\000\000\000\000\001\238\001\239\000\000\001\240\001\237\000\000\000\000\001\238\001\239\000\000\001\240\000\000\000\000\000\000\001\241\002\003\000\000\001\243\001\244\001\249\000\000\001\241\002\003\001`\001\243\001\244\001\249\000\000\001\241\002\003\000\000\001\243\001\244\001\249\000\000\001v\000\000\000\000\000\000\000\000\000\000\001j\001Z\000\000\002\014\001\195\001\205\000\000\000\000\000\000\000\000\000\000\002\015\000\000\002\024\000\000\000\000\000\000\000\000\001B\000\000\002\004\000\000\002\005\002=\001I\001Y\000\000\002\004\000\000\002\005\0021\000\000\001\131\000\000\002\004\001\135\002\005\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\002\012\000\000\000\000\000\000\000\000\000\000\000\000\002\012\000\000\000\000\000\000\000\000\000\000\001\251\002\012\001v\001\031\000\000\000\000\000\000\001\251\000\000\001Z\001\031\000\000\000\000\001\205\001\251\000\000\000\000\001\031\000\000\000\000\001\237\000\000\000\000\001\238\001\239\000\000\001\240\001\237\000\000\000\000\001\238\001\239\000\000\001\240\000\000\000\000\000\000\000\000\000\000\000\000\001\131\000\000\000\000\001\135\001\241\002\003\000\000\001\243\001\244\001\249\000\000\001\241\002\003\000\000\001\243\001\244\001\249\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\014\000\000\000\000\000\000\000\000\000\000\000\000\002\014\002\015\000\000\002\024\000\000\000\000\000\000\002\014\002\015\000\000\002\024\000\000\000\000\000\000\000\000\002\015\000\000\002\024\000\000\000\000\002\004\000\000\002\005\002\007\000\000\000\000\000\000\002\004\000\000\002\005\002\n\000\000\000\000\000\000\000\000\002\197\000\000\002\198\002\199\001\239\001\237\002\200\000\000\001\238\001\239\000\000\001\240\000\000\000\000\001\237\000\000\000\000\001\238\001\239\000\000\001\240\000\000\000\000\000\000\002\012\000\000\004B\000\000\000\000\001\241\002\003\002\012\001\243\001\244\001\249\000\000\000\000\001\251\001\241\002\003\001\031\001\243\001\244\001\249\001\251\000\000\001\237\001\031\000\000\001\238\001\239\000\000\001\240\004C\000\000\000\000\000\000\000\000\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\002\003\000\000\001\243\001\244\001\249\002\004\000\000\002\005\002\r\000\000\000\000\000\000\000\000\000\000\002\004\000\000\002\005\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\014\000\000\000\000\000\000\000\000\000\000\000\000\002\014\002\015\002\202\002\024\000\000\000\000\000\000\002\012\002\015\002\004\002\024\002\005\002!\000\000\000\000\002\203\002\012\0039\001\031\000\000\001\251\000\000\000\000\001\031\000\000\000\000\000\000\000\000\000\000\001\251\000\000\001\237\001\031\000\000\001\238\001\239\000\000\001\240\001\237\000\000\000\000\001\238\001\239\000\000\001\240\000\000\000\000\000\000\002\012\000\000\000\000\000\000\000\000\000\000\004E\001\241\002\003\000\000\001\243\001\244\001\249\001\251\001\241\002\003\001\031\001\243\001\244\001\249\000\000\000\000\000\000\001\237\000\000\000\000\001\238\001\239\000\000\001\240\000\000\003:\000\000\000\000\000\000\000\000\002\014\000\000\000\000\003;\000\000\002\024\003<\000\000\002\015\002\014\002\024\001\241\002\003\000\000\001\243\001\244\001\249\002\015\002\004\002\024\002\005\002)\000\000\000\000\000\000\002\004\000\000\002\005\003\r\002\197\000\000\002\198\002\199\001\239\000\000\002\200\000\000\000\000\000\000\000\000\000\000\002\014\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\015\000\000\002\024\000\000\000\000\000\000\003\019\000\000\002\012\002\004\000\000\002\005\003\137\001\237\000\000\002\012\001\238\001\239\000\000\001\240\000\000\001\251\000\000\000\000\001\031\003\191\000\000\000\000\001\251\000\000\000\000\001\031\000\000\000\000\003\194\000\000\000\000\001\241\003\159\000\000\001\243\001\244\001\249\001\237\000\000\000\000\001\238\001\239\002\012\001\240\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\251\000\000\000\000\001\031\000\000\000\000\001\241\002\003\000\000\001\243\001\244\001\249\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\237\000\000\002\014\001\238\001\239\000\000\001\240\002\202\000\000\002\014\002\015\000\000\002\024\000\000\000\000\000\000\000\000\002\015\000\000\002\024\002\203\000\000\0039\001\031\001\241\002\003\000\000\001\243\001\244\001\249\000\000\002\004\000\000\002\005\003\205\001\237\000\000\000\000\001\238\001\239\001\250\001\240\002\014\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\015\000\000\002\024\001\251\000\000\000\000\001\031\000\000\000\000\001\241\002\003\000\000\001\243\001\244\001\249\000\000\000\000\000\000\000\000\000\000\002\012\002\004\000\000\002\005\003\208\001\237\000\000\000\000\001\238\001\239\000\000\001\240\000\000\001\251\003:\000\000\001\031\000\000\000\000\000\000\000\000\003\160\003;\000\000\002\024\003<\000\000\000\000\000\000\001\241\002\003\000\000\001\243\001\244\001\249\000\000\002\004\000\000\002\005\003\211\002\012\000\000\000\000\000\000\000\000\000\000\000\000\002\014\000\000\000\000\000\000\000\000\000\000\001\251\000\000\002\023\001\031\002\024\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\237\000\000\000\000\001\238\001\239\000\000\001\240\002\012\002\004\002\014\002\005\003\219\003\228\000\000\000\000\000\000\000\000\002\015\000\000\002\024\001\251\003\231\000\000\001\031\001\241\003\159\000\000\001\243\001\244\001\249\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\237\000\000\000\000\001\238\001\239\000\000\001\240\002\012\000\000\002\014\000\000\000\000\002\197\000\000\002\198\002\199\001\239\002\015\002\200\002\024\001\251\000\000\000\000\001\031\001\241\002\003\000\000\001\243\001\244\001\249\000\000\000\000\000\000\001\237\000\000\000\000\001\238\001\239\004\192\001\240\000\000\000\000\000\000\000\000\002\014\000\000\004\201\000\000\000\000\000\000\000\000\000\000\002\015\000\000\002\024\000\000\000\000\001\241\002\003\000\000\001\243\001\244\001\249\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\250\002\004\004\202\002\005\004\157\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\251\002\014\000\000\001\031\000\000\000\000\000\000\000\000\000\000\002\015\000\000\002\024\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\004\001Q\002\005\004\154\001S\000\000\002\012\001\206\000\000\000\000\000\000\001b\000\000\000\000\000\000\000\000\000\000\003\160\002\202\001\251\000\000\000\000\001\031\000\000\000\000\000\000\000\000\000\000\000\000\001\208\001W\004\205\000\000\0039\001\031\0013\006%\000\000\001\237\002\012\000\000\001\238\001\239\002\014\001\240\000\000\000\000\000\000\000\000\000\000\000\000\002\023\001\251\002\024\000\000\001\031\000\000\000\000\000\000\000\000\000\000\000\000\001\241\002\003\000\000\001\243\001\244\001\249\000\000\000\000\000\000\004\195\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001`\000\000\000\000\000\000\002\014\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\015\000\000\002\024\000\000\003:\000\000\001j\000\000\000\000\000\000\001\195\000\000\003;\001\237\002\024\003<\001\238\001\239\002\004\001\240\002\005\005\150\000\000\000\000\001B\002\014\001Q\000\000\000\000\001\127\001I\001Y\000\000\002\015\005I\002\024\001\128\001\241\003\159\000\000\001\243\001\244\001\249\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\237\000\000\000\000\001\238\001\239\001W\001\240\002\012\000\000\000\000\000\000\001\237\000\000\000\000\001\238\001\239\000\000\001\240\000\000\000\000\001\251\000\000\000\000\001\031\001\241\003\159\000\000\001\243\001\244\001\249\001v\000\000\000\000\000\000\000\000\001\241\003\159\001Z\001\243\001\244\001\249\006[\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\237\000\000\001`\001\238\001\239\002\197\001\240\002\198\002\199\001\239\000\000\002\200\000\000\000\000\000\000\000\000\001\131\000\000\000\000\001\135\001\129\001\250\000\000\000\000\001\241\003\159\000\000\001\243\001\244\001\249\000\000\003\023\002\014\000\000\001\251\000\000\000\000\001\031\001B\000\000\002\015\000\000\002\024\000\000\001I\001Y\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\001\237\000\000\000\000\001\238\001\239\000\000\001\240\000\000\000\000\000\000\001\250\000\000\001\251\003\160\000\000\001\031\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\251\001\241\003\159\001\031\001\243\001\244\001\249\001\237\000\000\000\000\001\238\001\239\000\000\001\240\000\000\000\000\002\014\000\000\000\000\001Z\000\000\000\000\000\000\000\000\002\023\000\000\002\024\004c\001\250\000\000\000\000\001\241\003\159\002\202\001\243\001\244\001\249\000\000\004c\000\000\000\000\001\251\000\000\000\000\001\031\000\000\002\203\004i\0039\001\031\001\131\000\000\000\000\002\014\000\000\000\000\001\237\000\000\004e\001\238\001\239\002\023\001\240\002\024\002\014\000\000\000\000\001\237\000\000\000\000\001\238\001\239\002\023\001\240\002\024\000\000\000\000\000\000\000\000\004c\001\241\003\159\000\000\001\243\001\244\001\249\000\000\001\250\000\000\000\000\000\000\001\241\003\159\000\000\001\243\001\244\001\249\000\000\001\237\004d\001\251\001\238\001\239\001\031\001\240\002\014\000\000\000\000\000\000\000\000\003:\000\000\000\000\002\023\000\000\002\024\000\000\001\250\003;\006\248\002\024\003<\001\241\003\159\000\000\001\243\001\244\001\249\000\000\000\000\001\251\000\000\000\000\001\031\000\000\000\000\000\000\000\000\004c\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004h\000\000\000\000\000\000\000\000\000\000\002\014\000\000\001\250\000\000\004c\000\000\000\000\000\000\002\023\000\000\002\024\000\000\000\000\001\250\000\000\001\251\000\000\000\000\001\031\000\000\000\000\000\000\000\000\000\000\004l\000\000\001\251\000\000\000\000\001\031\002\014\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\023\000\000\002\024\000\000\001\237\000\000\001\250\001\238\001\239\000\000\001\240\000\000\000\000\000\000\000\000\004c\000\000\000\000\000\000\001\251\000\000\000\000\001\031\000\000\000\000\007\016\007c\000\000\001\241\003\159\000\000\001\243\001\244\001\249\000\000\004n\000\000\000\000\000\000\000\000\000\000\002\014\000\000\000\000\001\237\000\000\000\000\001\238\001\239\002\023\001\240\002\024\002\014\000\000\000\000\000\000\000\000\003\160\000\000\000\000\002\023\001\237\002\024\000\000\001\238\001\239\000\000\001\240\001\241\003\159\000\000\001\243\001\244\001\249\000\000\000\000\000\000\007e\000\000\000\000\000\000\000\000\000\000\002\014\000\000\001\241\003\159\000\000\001\243\001\244\001\249\002\023\001\237\002\024\000\000\001\238\001\239\000\000\001\240\000\000\000\000\000\000\000\000\000\000\001\237\000\000\000\000\001\238\001\239\000\000\001\240\000\000\000\000\000\000\001\250\001Q\001\241\003\159\001S\001\243\001\244\001\249\000\000\000\000\000\000\001b\000\000\001\251\001\241\003\159\001\031\001\243\001\244\001\249\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\001Q\000\000\000\000\001S\000\000\000\000\000\000\001\250\000\000\005\162\001b\000\000\000\000\001Q\000\000\000\000\006\\\000\000\003\160\000\000\001\251\000\000\000\000\001\031\001\250\b(\000\000\000\000\000\000\001W\000\000\001c\000\000\000\000\000\000\000\000\000\000\001\251\000\000\000\000\001\031\007\205\001W\000\000\002\014\000\000\001`\000\000\000\000\000\000\000\000\000\000\002\023\000\000\002\024\001\250\000\000\000\000\007+\000\000\000\000\000\000\000\000\000\000\001j\000\000\000\000\001\250\001\251\000\000\000\000\001\031\006s\000\000\000\000\007+\000\000\000\000\001`\000\000\001\251\000\000\001B\001\031\002\014\000\000\000\000\000\000\001I\001Y\000\000\006^\002\023\000\000\002\024\000\000\001j\000\000\000\000\000\000\000\000\002\014\000\000\006t\b#\006u\007c\000\000\0078\002\023\000\000\002\024\000\000\000\000\001B\000\000\000\000\000\000\007c\001Q\001I\001Y\001S\000\000\000\000\0077\000\000\001B\000\000\001b\000\000\000\000\002\014\001I\006a\000\000\000\000\006v\001v\007p\002\023\000\000\002\024\000\000\002\014\001Z\000\000\000\000\001W\005\171\001c\000\000\002\023\000\000\002\024\000\000\000\000\007d\007q\000\000\007\228\000\000\007s\000\000\000\000\001Q\000\000\000\000\001S\007l\001v\000\000\007t\000\000\006w\001b\001\131\001Z\000\000\001\135\000\000\001\149\000\000\000\000\000\000\000\000\000\000\000\000\006x\006y\006b\006z\000\000\000\000\001W\000\000\001c\001`\000\000\000\000\000\000\000\000\000\000\000\000\007u\006,\001\155\006f\001\131\006d\000\000\001\135\000\000\000\000\006\190\001j\000\000\000\000\000\000\000\000\000\000\001\131\000\000\000\000\001Q\000\000\000\000\001S\000\000\000\000\000\000\000\000\000\000\001B\001b\000\000\000\000\000\000\000\000\001I\001Y\006|\007v\001`\006~\000\000\000\000\006\131\006\143\000\000\000\000\000\000\000\000\001W\000\000\001c\007w\006\186\000\000\000\000\000\000\001j\000\000\001Q\000\000\001l\001S\000\000\000\000\000\000\000\000\000\000\001Q\001b\000\000\001S\006\187\000\000\000\000\001B\007x\000\000\001b\000\000\000\000\001I\001Y\000\000\000\000\001v\000\000\000\000\001W\000\000\001c\007y\001Z\000\000\000\000\000\000\001\149\001W\001`\000\000\001\172\000\000\000\000\000\000\007z\000\000\000\000\007|\000\000\005\162\007\129\000\000\000\000\000\000\000\000\000\000\001j\000\000\000\000\000\000\007\131\000\000\000\000\001\131\001\237\005\165\001\135\001\238\001\239\000\000\001\240\001v\000\000\000\000\001B\000\000\000\000\001`\001Z\007\132\001I\001Y\001\149\000\000\000\000\000\000\001`\000\000\001\241\003\159\000\000\001\243\001\244\001\249\000\000\001j\000\000\001Q\000\000\000\000\001S\000\000\000\000\000\000\001j\000\000\000\000\001b\000\000\001\131\000\000\000\000\001\135\001B\000\000\000\000\000\000\000\000\000\000\001I\001Y\000\000\001B\000\000\000\000\000\000\001W\000\000\001I\001Y\001v\000\000\007p\000\000\000\000\000\000\000\000\001Z\005\162\000\000\000\000\001\149\000\000\001Q\000\000\000\000\001S\000\000\b\146\000\000\000\000\b\147\000\000\001b\006\026\007s\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\007t\000\000\000\000\001\131\001v\000\000\001\135\001W\000\000\001\250\001`\001Z\000\000\001v\000\000\001\149\000\000\000\000\000\000\005\162\001Z\000\000\001\251\000\000\005\171\001\031\000\000\000\000\001j\000\000\001Q\000\000\007u\001S\000\000\006\245\000\000\000\000\000\000\000\000\001b\000\000\001\131\000\000\000\000\001\135\001B\000\000\000\000\000\000\000\000\001\131\001I\001Y\001\135\000\000\001`\000\000\000\000\001W\004m\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\007v\005\162\000\000\000\000\001j\000\000\000\000\000\000\001Q\000\000\000\000\001S\000\000\000\000\007w\000\000\002\014\007\003\001b\000\000\000\000\000\000\001B\000\000\002\023\000\000\002\024\000\000\001I\001Y\001Q\000\000\001v\001S\b\148\000\000\000\000\001W\001`\001Z\001b\000\000\000\000\005\171\000\000\000\000\000\000\000\000\000\000\005\162\000\000\000\000\000\000\007y\000\000\000\000\001j\000\000\000\000\001W\000\000\001c\000\000\000\000\000\000\007\r\007z\000\000\000\000\007|\001\131\007\245\007\129\001\135\001B\000\000\000\000\000\000\001v\000\000\001I\001Y\007\131\000\000\000\000\001Z\001`\000\000\000\000\005\171\000\000\000\000\002\197\000\000\002\198\002\199\001\239\000\000\002\200\000\000\000\000\007\132\000\000\000\000\001j\000\000\000\000\000\000\001`\000\000\000\000\001\237\000\000\000\000\001\238\001\239\001\131\001\240\004B\001\135\000\000\000\000\001B\000\000\000\000\000\000\001j\000\000\001I\001Y\001v\000\000\000\000\000\000\000\000\001\241\002\022\001Z\001\243\001\244\001\249\005\171\000\000\000\000\001B\0071\001Q\000\000\000\000\001S\001I\001Y\000\000\000\000\001Q\000\000\001b\001S\000\000\000\000\000\000\000\000\000\000\000\000\001b\000\000\000\000\000\000\001\131\000\000\000\000\001\135\000\000\000\000\000\000\001W\000\000\000\000\001v\000\000\000\000\000\000\000\000\001W\000\000\001Z\000\000\002Q\000\000\005\171\000\000\000\000\000\000\000\000\000\000\002\241\000\000\000\000\000\000\000\000\001v\000\000\002\202\000\000\000\000\000\000\000\000\001Z\000\000\000\000\000\000\001\149\000\000\000\000\000\000\002\203\001\131\0039\001\031\001\135\000\000\001\250\000\000\001Q\001`\000\000\001S\000\000\000\000\000\000\000\000\000\000\001`\001b\001\251\000\000\000\000\001\031\001\131\000\000\000\000\001\135\001j\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001j\000\000\001W\001\237\004E\000\000\001\238\001\239\000\000\001\240\001B\000\000\000\000\000\000\003\132\000\000\001I\001Y\001B\000\000\000\000\000\000\000\000\000\000\001I\001Y\000\000\001\241\003\152\003:\001\243\001\244\001\249\000\000\000\000\000\000\000\000\003;\000\000\002\024\003<\000\000\001Q\000\000\000\000\001S\000\000\000\000\002\014\000\000\001Q\001`\001b\001S\000\000\000\000\002\023\000\000\002\024\000\000\001b\000\000\000\000\000\000\000\000\000\000\001v\000\000\000\000\001j\000\000\001W\000\000\001Z\001v\000\000\000\000\002T\000\000\001W\000\000\001Z\000\000\003\172\000\000\002\244\000\000\001B\000\000\001Q\000\000\003\186\001S\001I\001Y\000\000\000\000\000\000\000\000\001b\000\000\000\000\000\000\000\000\001\131\000\000\000\000\001\135\000\000\000\000\000\000\000\000\001\131\001\250\000\000\001\135\000\000\000\000\001W\000\000\001`\000\000\000\000\000\000\000\000\000\000\001\251\000\000\001`\001\031\003\223\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001j\000\000\000\000\000\000\000\000\001v\000\000\000\000\001j\000\000\001Q\000\000\001Z\001S\000\000\000\000\002$\000\000\001B\000\000\001b\000\000\000\000\000\000\001I\001Y\001B\000\000\000\000\001`\000\000\000\000\001I\001Y\000\000\000\000\000\000\000\000\000\000\001W\000\000\000\000\000\000\001\131\000\000\006%\001\135\001j\000\000\000\000\000\000\000\000\002\014\000\000\000\000\000\000\000\000\000\000\001Q\000\000\002\023\001S\002\024\000\000\000\000\001B\000\000\000\000\001b\000\000\000\000\001I\001Y\000\000\001v\000\000\000\000\000\000\000\000\000\000\000\000\001Z\001v\000\000\000\000\002$\000\000\001W\001`\001Z\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\001j\000\000\000\000\000\000\000\000\000\000\001\131\000\000\000\000\001\135\001Q\000\000\000\000\001S\001\131\001v\000\000\001\135\001B\000\000\001b\000\000\001Z\000\000\001I\001Y\003$\000\000\000\000\000\000\001`\001Q\000\000\000\000\001S\000\000\000\000\000\000\000\000\001W\000\000\001b\000\000\000\000\000\000\007&\000\000\001Q\001j\000\000\001S\000\000\000\000\001\131\000\000\000\000\001\135\001b\000\000\000\000\001W\000\000\000\000\000\000\000\000\000\000\001B\000\000\000\000\000\000\000\000\000\000\001I\001Y\001v\007p\001W\000\000\000\000\000\000\000\000\001Z\000\000\000\000\000\000\006*\000\000\000\000\001`\000\000\000\000\000\000\000\000\000\000\007q\000\000\000\000\000\000\007s\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001j\000\000\007t\001`\000\000\000\000\001\131\000\000\000\000\001\135\007p\000\000\000\000\000\000\bO\000\000\001v\000\000\001B\001`\000\000\001j\000\000\001Z\001I\001Y\b\146\0067\000\000\b\147\006:\000\000\000\000\007s\007u\000\000\000\000\001j\000\000\001B\007p\001Q\000\000\007t\001S\001I\001Y\000\000\000\000\000\000\001Q\001b\000\000\001S\001\131\001B\b\146\001\135\000\000\b\147\001b\001I\001Y\007s\000\000\000\000\000\000\000\000\000\000\000\000\001W\000\000\007v\007t\001v\007u\000\000\000\000\000\000\001W\000\000\001Z\000\000\000\000\000\000\006*\007w\001Q\000\000\000\000\001S\000\000\000\000\000\000\000\000\001v\000\000\001b\000\000\000\000\000\000\000\000\001Z\000\000\000\000\007u\0067\000\000\000\000\007T\007\136\001v\001\131\007v\000\000\001\135\001W\000\000\001Z\001`\000\000\000\000\bP\000\000\000\000\007y\000\000\007w\001`\000\000\000\000\000\000\000\000\001\131\000\000\000\000\001\135\001j\007z\000\000\000\000\007|\000\000\007v\007\129\000\000\001j\b\152\000\000\001\131\000\000\000\000\001\135\000\000\007\131\001B\000\000\007w\000\000\000\000\000\000\001I\001Y\000\000\001B\001`\007y\000\000\000\000\000\000\001I\001Y\000\000\007\132\000\000\000\000\000\000\b\157\000\000\007z\000\000\000\000\007|\001j\000\000\007\129\000\000\001Q\000\000\000\000\001S\000\000\000\000\000\000\000\000\007\131\007y\001b\000\000\000\000\001Q\001B\000\000\001S\000\000\000\000\000\000\001I\001Y\007z\001b\001v\007|\000\000\007\132\007\129\001W\000\000\001Z\000\000\001v\000\000\001\221\000\000\000\000\007\131\000\000\001Z\000\000\001W\000\000\001\154\000\000\001Q\000\000\000\000\001S\000\000\000\000\000\000\000\000\000\000\000\000\001b\007\132\001Q\000\000\000\000\001S\001\131\000\000\000\000\001\135\001Q\000\000\001b\001S\001v\001\131\000\000\000\000\001\135\001W\001b\001Z\001`\000\000\000\000\001w\000\000\000\000\000\000\000\000\000\000\001W\000\000\000\000\000\000\001`\000\000\000\000\000\000\001W\001j\001\199\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\131\001j\000\000\001\135\000\000\000\000\001B\000\000\000\000\000\000\000\000\001Q\001I\001Y\001S\000\000\001`\000\000\000\000\001B\000\000\001b\000\000\000\000\000\000\001I\001Y\001Q\001`\000\000\001S\000\000\000\000\000\000\001j\000\000\001`\001b\000\000\000\000\001W\000\000\000\000\000\000\000\000\000\000\001j\000\000\000\000\000\000\000\000\000\000\001B\000\000\001j\000\000\001W\000\000\001I\001Y\000\000\000\000\001v\000\000\001B\000\000\000\000\000\000\000\000\001Z\001I\001Y\001B\001\152\000\000\001v\000\000\000\000\001I\001Y\000\000\001Q\001Z\000\000\001S\000\000\001\157\000\000\000\000\001`\000\000\001b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\131\000\000\000\000\001\135\000\000\001`\000\000\001j\001v\000\000\001W\000\000\000\000\001\131\000\000\001Z\001\135\000\000\000\000\001\174\001v\000\000\000\000\001j\000\000\001B\000\000\001Z\001v\000\000\000\000\001I\001Y\001Q\000\000\001Z\001S\000\000\000\000\002S\000\000\001B\000\000\001b\000\000\000\000\001\131\001I\001Y\001\135\001Q\000\000\000\000\001S\000\000\000\000\000\000\000\000\001\131\001`\001b\001\203\001W\000\000\000\000\001Q\001\131\000\000\001S\001\135\002\197\000\000\002\198\002\199\001\239\001b\002\200\001j\000\000\001W\000\000\001v\000\000\000\000\000\000\000\000\000\000\000\000\001Z\000\000\000\000\000\000\002~\000\000\001W\001B\003-\001v\000\000\000\000\000\000\001I\001Y\000\000\001Z\000\000\000\000\000\000\002\128\000\000\000\000\001`\000\000\000\000\002\197\000\000\002\198\002\199\001\239\001\131\002\200\000\000\001\135\000\000\000\000\000\000\000\000\000\000\001`\001j\000\000\000\000\000\000\000\000\000\000\001\131\000\000\000\000\001\135\000\000\0038\000\000\000\000\001`\000\000\000\000\001j\001B\000\000\000\000\000\000\001v\000\000\001I\001Y\000\000\000\000\000\000\001Z\000\000\000\000\001j\002\222\000\000\001B\000\000\000\000\000\000\000\000\000\000\001I\001Y\002\197\000\000\002\198\002\199\001\239\000\000\002\200\001B\002\202\000\000\000\000\000\000\000\000\001I\001Y\000\000\000\000\001\131\000\000\000\000\001\135\002\203\001Q\0039\001\031\001S\003G\000\000\000\000\000\000\000\000\001v\001b\000\000\000\000\000\000\000\000\001Q\001Z\000\000\001S\000\000\002\243\000\000\000\000\000\000\000\000\001b\001v\000\000\001Q\001W\002\202\001S\000\000\001Z\000\000\000\000\000\000\003!\001b\000\000\000\000\001v\000\000\002\203\001W\0039\001\031\001\131\001Z\000\000\001\135\000\000\003&\000\000\000\000\000\000\000\000\001W\000\000\000\000\000\000\000\000\000\000\003:\001\131\000\000\000\000\001\135\000\000\000\000\000\000\003;\000\000\002\024\003<\000\000\000\000\000\000\001`\001\131\000\000\000\000\001\135\000\000\000\000\000\000\000\000\000\000\002\202\000\000\000\000\000\000\000\000\001`\000\000\000\000\001j\000\000\000\000\000\000\000\000\002\203\000\000\0039\001\031\000\000\001`\003:\000\000\000\000\000\000\001j\000\000\000\000\001B\003;\000\000\002\024\003<\000\000\001I\001Y\000\000\001Q\001j\000\000\001S\000\000\001Q\001B\000\000\001S\000\000\001b\000\000\001I\001Y\001Q\001b\000\000\001S\000\000\001B\000\000\000\000\000\000\000\000\001b\001I\001Y\000\000\001Q\001W\000\000\001S\000\000\002\197\001W\002\198\002\199\001\239\001b\002\200\000\000\000\000\003:\001W\000\000\000\000\000\000\001v\000\000\000\000\003;\000\000\002\024\003<\001Z\000\000\000\000\001W\003\134\004\n\000\000\000\000\001v\000\000\000\000\000\000\000\000\000\000\000\000\001Z\000\000\000\000\000\000\003\150\000\000\001v\000\000\000\000\001`\000\000\000\000\000\000\001Z\001`\000\000\001\131\003\174\000\000\001\135\000\000\000\000\000\000\001`\000\000\000\000\000\000\001j\000\000\000\000\000\000\001\131\001j\000\000\001\135\000\000\000\000\001`\000\000\000\000\000\000\001j\000\000\000\000\001\131\001B\000\000\001\135\000\000\000\000\001B\001I\001Y\000\000\000\000\001j\001I\001Y\000\000\001B\000\000\000\000\000\000\000\000\000\000\001I\001Y\001Q\000\000\000\000\001S\000\000\000\000\001B\002\202\000\000\000\000\001b\000\000\001I\001Y\000\000\001Q\000\000\000\000\001S\000\000\002\203\000\000\0039\001\031\000\000\001b\000\000\000\000\001Q\001W\000\000\001S\000\000\000\000\001v\000\000\000\000\001Q\001b\001v\001S\001Z\000\000\000\000\001W\003\183\001Z\001b\001v\000\000\003\188\000\000\000\000\000\000\000\000\001Z\000\000\001W\000\000\003\197\000\000\000\000\001v\000\000\000\000\000\000\001W\000\000\000\000\001Z\000\000\000\000\001\131\003\225\000\000\001\135\000\000\001\131\001`\000\000\001\135\000\000\000\000\000\000\003:\000\000\001\131\000\000\000\000\001\135\000\000\000\000\003;\001`\002\024\003<\001j\000\000\000\000\000\000\001\131\000\000\000\000\001\135\000\000\000\000\001`\000\000\000\000\000\000\000\000\001j\000\000\000\000\001B\001`\000\000\000\000\000\000\000\000\001I\001Y\000\000\000\000\001j\000\000\000\000\000\000\000\000\001B\000\000\000\000\000\000\001j\000\000\001I\001Y\001Q\000\000\000\000\001S\000\000\001B\000\000\000\000\000\000\000\000\001b\001I\001Y\001Q\001B\000\000\001S\000\000\000\000\000\000\001I\001Y\001Q\001b\000\000\001S\000\000\000\000\000\000\001W\000\000\000\000\001b\001v\000\000\001Q\000\000\000\000\001S\000\000\001Z\000\000\001W\000\000\005\164\001b\000\000\000\000\001v\000\000\007p\001W\000\000\000\000\000\000\001Z\000\000\000\000\000\000\006\003\000\000\001v\000\000\000\000\001W\000\000\000\000\000\000\001Z\007q\001v\001\131\006\015\007s\001\135\000\000\000\000\001Z\001`\000\000\000\000\006)\000\000\007t\000\000\000\000\001\131\000\000\000\000\001\135\000\000\001`\000\000\000\000\000\000\000\000\001j\000\000\000\000\001\131\001`\000\000\001\135\000\000\000\000\000\000\007p\000\000\001\131\001j\000\000\001\135\000\000\001`\001B\007u\000\000\000\000\001j\000\000\001I\001Y\000\000\000\000\000\000\b\137\000\000\001B\000\000\007s\000\000\001j\000\000\001I\001Y\001Q\001B\000\000\001S\007t\000\000\000\000\001I\001Y\000\000\001b\000\000\000\000\000\000\001B\000\000\001Q\000\000\007v\001S\001I\001Y\000\000\000\000\000\000\000\000\001b\000\000\000\000\001W\000\000\000\000\007w\000\000\000\000\001v\007u\001Q\000\000\000\000\001S\000\000\001Z\000\000\000\000\001W\0069\001b\001v\000\000\000\000\001Q\000\000\000\000\001S\001Z\007\146\001v\000\000\006\224\000\000\001b\000\000\000\000\001Z\000\000\001W\000\000\006\242\000\000\001v\007y\000\000\001\131\007v\000\000\001\135\001Z\001`\000\000\001W\007\n\000\000\000\000\007z\000\000\001\131\007|\007w\001\135\007\129\000\000\000\000\000\000\001`\001\131\001j\000\000\001\135\000\000\007\131\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\131\b\138\000\000\001\135\001j\000\000\001B\001`\000\000\000\000\000\000\007\132\001I\001Y\000\000\000\000\000\000\000\000\000\000\007y\000\000\001`\001B\000\000\000\000\001j\000\000\001Q\001I\001Y\001S\000\000\007z\000\000\000\000\007|\000\000\001b\007\129\001j\000\000\000\000\000\000\001B\000\000\000\000\000\000\000\000\007\131\001I\001Y\000\000\001Q\000\000\000\000\006\\\001W\001B\000\000\000\000\000\000\000\000\001v\001I\001Y\000\000\000\000\007\132\000\000\001Z\000\000\000\000\001Q\007\192\000\000\001S\000\000\000\000\001v\000\000\001Q\001W\001b\001S\000\000\001Z\000\000\000\000\000\000\007\207\001b\000\000\000\000\001Q\000\000\000\000\006\\\000\000\000\000\001v\001\131\001W\000\000\001\135\001Q\001`\001Z\006\\\000\000\001W\007\230\000\000\000\000\001v\000\000\000\000\001\131\000\000\000\000\001\135\001Z\000\000\001W\001j\007\247\000\000\000\000\000\000\000\000\000\000\006^\001Q\000\000\001W\006\\\000\000\000\000\001\131\000\000\000\000\001\135\001B\000\000\000\000\000\000\000\000\000\000\001I\001Y\000\000\001`\001\131\001Q\000\000\001\135\006\\\000\000\000\000\001`\000\000\001W\000\000\000\000\000\000\000\000\000\000\001B\000\000\001j\000\000\000\000\006^\001I\006a\000\000\000\000\001j\000\000\000\000\000\000\000\000\001W\006^\000\000\000\000\000\000\001B\000\000\000\000\000\000\000\000\000\000\001I\001Y\001B\000\000\000\000\001v\000\000\000\000\001I\001Y\000\000\000\000\001Z\000\000\000\000\001B\000\000\006^\000\000\000\000\000\000\001I\006a\000\000\000\000\000\000\001B\000\000\000\000\000\000\000\000\000\000\001I\006a\000\000\000\000\000\000\006b\006^\000\000\000\000\000\000\000\000\001\131\000\000\000\000\002y\000\000\000\000\000\000\001v\000\000\006,\001B\006e\000\000\006d\001Z\001v\001I\006a\001Q\000\000\001Q\001\160\001Z\001\166\000\000\001\131\000\000\000\000\001\161\000\000\001\167\001B\000\000\000\000\000\000\006b\000\000\001I\006a\000\000\000\000\001Q\000\000\000\000\001\177\001\131\006b\001W\002{\001W\006,\001\178\006c\001\131\006d\000\000\005\021\001Q\000\000\000\000\001\183\006,\000\000\006o\000\000\006d\001\131\001\184\001Q\000\000\001W\007\210\000\000\006b\000\000\000\000\000\000\001\131\007\211\001Q\000\000\000\000\007\233\000\000\000\000\000\000\001W\000\000\006,\007\234\007F\000\000\006d\000\000\006b\000\000\001`\001W\001`\000\000\000\000\000\000\001Q\000\000\001\131\007\239\000\000\000\000\001W\006,\000\000\007`\007\240\006d\001\162\000\000\001\168\000\000\001Q\001`\000\000\007\250\000\000\001Q\000\000\001\131\b\000\000\000\007\251\000\000\000\000\001W\001B\b\001\001B\001`\000\000\001\179\001I\001Y\001I\001Y\000\000\000\000\000\000\000\000\001`\001W\000\000\000\000\000\000\000\000\001W\001\185\000\000\001B\000\000\001`\000\000\000\000\000\000\001I\001Y\000\000\007\212\000\000\000\000\000\000\000\000\000\000\000\000\001B\000\000\000\000\000\000\007\235\000\000\001I\001Y\000\000\001`\000\000\001B\000\000\000\000\000\000\000\000\000\000\001I\001Y\000\000\000\000\000\000\001B\000\000\001Z\001`\001Z\007\241\001I\001Y\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\007\252\000\000\001B\000\000\001Z\b\002\000\000\000\000\001I\001Y\000\000\000\000\001\131\000\000\001\131\000\000\000\000\000\000\001B\000\000\001Z\000\000\000\000\001B\001I\001Y\000\000\000\000\000\000\001I\001Y\001Z\000\000\000\000\000\000\001\131\000\000\000\000\000\000\000\000\000\000\000\000\001Z\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\131\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\131\000\000\000\000\001Z\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\131\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001Z\000\000\000\000\000\000\000\000\001Z\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\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\001\131\000\000\000\000\000\000\000\000\001\131")) and semantic_action = [| @@ -1648,9 +1735,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 4385 "parsing/parser.mly" +# 4457 "parsing/parser.mly" ( "+" ) -# 1654 "parsing/parser.ml" +# 1741 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -1673,9 +1760,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 4386 "parsing/parser.mly" +# 4458 "parsing/parser.mly" ( "+." ) -# 1679 "parsing/parser.ml" +# 1766 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -1698,9 +1785,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Parsetree.core_type) = -# 3848 "parsing/parser.mly" +# 3915 "parsing/parser.mly" ( _1 ) -# 1704 "parsing/parser.ml" +# 1791 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -1745,24 +1832,24 @@ module Tables = struct let _endpos = _endpos_tyvar_ in let _v : (Parsetree.core_type) = let _1 = let _1 = -# 3851 "parsing/parser.mly" +# 3918 "parsing/parser.mly" ( Ptyp_alias(ty, tyvar) ) -# 1751 "parsing/parser.ml" +# 1838 "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 -# 1160 "parsing/parser.mly" +# 1239 "parsing/parser.mly" ( mktyp ~loc:_sloc _1 ) -# 1760 "parsing/parser.ml" +# 1847 "parsing/parser.ml" in -# 3853 "parsing/parser.mly" +# 3920 "parsing/parser.mly" ( _1 ) -# 1766 "parsing/parser.ml" +# 1853 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -1836,19 +1923,19 @@ module Tables = struct let _v : (Parsetree.core_type) = let name = let _2 = _2_inlined1 in -# 3541 "parsing/parser.mly" +# 3608 "parsing/parser.mly" ( Some _2 ) -# 1842 "parsing/parser.ml" +# 1929 "parsing/parser.ml" in let _endpos = _endpos__7_ in let _symbolstartpos = _startpos_aliased_type_ in let _sloc = (_symbolstartpos, _endpos) in -# 3860 "parsing/parser.mly" +# 3927 "parsing/parser.mly" ( Jane_syntax.Layouts.type_of ~loc:(make_loc _sloc) ~attrs:[] (Ltyp_alias { aliased_type; name; layout }) ) -# 1852 "parsing/parser.ml" +# 1939 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -1913,18 +2000,18 @@ module Tables = struct let _startpos = _startpos_aliased_type_ in let _endpos = _endpos__7_ in let _v : (Parsetree.core_type) = let name = -# 3543 "parsing/parser.mly" +# 3610 "parsing/parser.mly" ( None ) -# 1919 "parsing/parser.ml" +# 2006 "parsing/parser.ml" in let _endpos = _endpos__7_ in let _symbolstartpos = _startpos_aliased_type_ in let _sloc = (_symbolstartpos, _endpos) in -# 3860 "parsing/parser.mly" +# 3927 "parsing/parser.mly" ( Jane_syntax.Layouts.type_of ~loc:(make_loc _sloc) ~attrs:[] (Ltyp_alias { aliased_type; name; layout }) ) -# 1928 "parsing/parser.ml" +# 2015 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -1970,30 +2057,30 @@ module Tables = struct let _v : (let_binding) = let attrs2 = let _1 = _1_inlined2 in -# 4472 "parsing/parser.mly" +# 4544 "parsing/parser.mly" ( _1 ) -# 1976 "parsing/parser.ml" +# 2063 "parsing/parser.ml" in let _endpos_attrs2_ = _endpos__1_inlined2_ in let attrs1 = let _1 = _1_inlined1 in -# 4476 "parsing/parser.mly" +# 4548 "parsing/parser.mly" ( _1 ) -# 1985 "parsing/parser.ml" +# 2072 "parsing/parser.ml" in let _endpos = _endpos_attrs2_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2988 "parsing/parser.mly" +# 3067 "parsing/parser.mly" ( let attrs = attrs1 @ attrs2 in mklb ~loc:_sloc false body attrs ) -# 1997 "parsing/parser.ml" +# 2084 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -2016,9 +2103,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Longident.t) = -# 4260 "parsing/parser.mly" +# 4332 "parsing/parser.mly" ( _1 ) -# 2022 "parsing/parser.ml" +# 2109 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -2041,9 +2128,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Longident.t) = -# 4261 "parsing/parser.mly" +# 4333 "parsing/parser.mly" ( Lident _1 ) -# 2047 "parsing/parser.ml" +# 2134 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -2080,9 +2167,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : (Parsetree.core_type) = -# 3952 "parsing/parser.mly" +# 4024 "parsing/parser.mly" ( _2 ) -# 2086 "parsing/parser.ml" +# 2173 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -2145,11 +2232,11 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 4032 "parsing/parser.mly" +# 4104 "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 ) -# 2153 "parsing/parser.ml" +# 2240 "parsing/parser.ml" in let _3 = @@ -2157,24 +2244,24 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4476 "parsing/parser.mly" +# 4548 "parsing/parser.mly" ( _1 ) -# 2163 "parsing/parser.ml" +# 2250 "parsing/parser.ml" in -# 4489 "parsing/parser.mly" +# 4561 "parsing/parser.mly" ( _1, _2 ) -# 2169 "parsing/parser.ml" +# 2256 "parsing/parser.ml" in let _endpos = _endpos__5_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 3954 "parsing/parser.mly" +# 4026 "parsing/parser.mly" ( wrap_typ_attrs ~loc:_sloc (reloc_typ ~loc:_sloc _4) _3 ) -# 2178 "parsing/parser.ml" +# 2265 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -2205,24 +2292,24 @@ module Tables = struct let _endpos = _endpos__2_ in let _v : (Parsetree.core_type) = let _1 = let _1 = -# 3957 "parsing/parser.mly" +# 4029 "parsing/parser.mly" ( Ptyp_var _2 ) -# 2211 "parsing/parser.ml" +# 2298 "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 -# 1160 "parsing/parser.mly" +# 1239 "parsing/parser.mly" ( mktyp ~loc:_sloc _1 ) -# 2220 "parsing/parser.ml" +# 2307 "parsing/parser.ml" in -# 4004 "parsing/parser.mly" +# 4076 "parsing/parser.mly" ( _1 ) -# 2226 "parsing/parser.ml" +# 2313 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -2246,23 +2333,23 @@ module Tables = struct let _endpos = _endpos__1_ in let _v : (Parsetree.core_type) = let _1 = let _1 = -# 3959 "parsing/parser.mly" +# 4031 "parsing/parser.mly" ( Ptyp_any ) -# 2252 "parsing/parser.ml" +# 2339 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1160 "parsing/parser.mly" +# 1239 "parsing/parser.mly" ( mktyp ~loc:_sloc _1 ) -# 2260 "parsing/parser.ml" +# 2347 "parsing/parser.ml" in -# 4004 "parsing/parser.mly" +# 4076 "parsing/parser.mly" ( _1 ) -# 2266 "parsing/parser.ml" +# 2353 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -2298,16 +2385,16 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1123 "parsing/parser.mly" +# 1202 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 2304 "parsing/parser.ml" +# 2391 "parsing/parser.ml" in let (_endpos_tid_, _startpos_tid_) = (_endpos__1_, _startpos__1_) in let tys = -# 4025 "parsing/parser.mly" +# 4097 "parsing/parser.mly" ( [] ) -# 2311 "parsing/parser.ml" +# 2398 "parsing/parser.ml" in let (_endpos_tys_, _startpos_tys_) = (_endpos__0_, _endpos__0_) in let _endpos = _endpos__3_ in @@ -2319,7 +2406,7 @@ module Tables = struct let _loc__3_ = (_startpos__3_, _endpos__3_) in let _sloc = (_symbolstartpos, _endpos) in -# 3963 "parsing/parser.mly" +# 4035 "parsing/parser.mly" ( match tid.txt with | Lident "float" -> let ident_start = fst _loc_tid_ in @@ -2332,7 +2419,7 @@ module Tables = struct *) not_expecting _sloc "Unboxed type other than float#" ) -# 2336 "parsing/parser.ml" +# 2423 "parsing/parser.ml" in let _endpos__1_ = _endpos__3_ in @@ -2340,15 +2427,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1160 "parsing/parser.mly" +# 1239 "parsing/parser.mly" ( mktyp ~loc:_sloc _1 ) -# 2346 "parsing/parser.ml" +# 2433 "parsing/parser.ml" in -# 4004 "parsing/parser.mly" +# 4076 "parsing/parser.mly" ( _1 ) -# 2352 "parsing/parser.ml" +# 2439 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -2391,16 +2478,16 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1123 "parsing/parser.mly" +# 1202 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 2397 "parsing/parser.ml" +# 2484 "parsing/parser.ml" in let (_endpos_tid_, _startpos_tid_) = (_endpos__1_, _startpos__1_) in let tys = -# 4027 "parsing/parser.mly" +# 4099 "parsing/parser.mly" ( [ty] ) -# 2404 "parsing/parser.ml" +# 2491 "parsing/parser.ml" in let (_endpos_tys_, _startpos_tys_) = (_endpos_ty_, _startpos_ty_) in let _endpos = _endpos__3_ in @@ -2412,7 +2499,7 @@ module Tables = struct let _loc__3_ = (_startpos__3_, _endpos__3_) in let _sloc = (_symbolstartpos, _endpos) in -# 3963 "parsing/parser.mly" +# 4035 "parsing/parser.mly" ( match tid.txt with | Lident "float" -> let ident_start = fst _loc_tid_ in @@ -2425,7 +2512,7 @@ module Tables = struct *) not_expecting _sloc "Unboxed type other than float#" ) -# 2429 "parsing/parser.ml" +# 2516 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos__3_, _startpos_ty_) in @@ -2433,15 +2520,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1160 "parsing/parser.mly" +# 1239 "parsing/parser.mly" ( mktyp ~loc:_sloc _1 ) -# 2439 "parsing/parser.ml" +# 2526 "parsing/parser.ml" in -# 4004 "parsing/parser.mly" +# 4076 "parsing/parser.mly" ( _1 ) -# 2445 "parsing/parser.ml" +# 2532 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -2499,9 +2586,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1123 "parsing/parser.mly" +# 1202 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 2505 "parsing/parser.ml" +# 2592 "parsing/parser.ml" in let (_endpos_tid_, _startpos_tid_) = (_endpos__1_inlined1_, _startpos__1_inlined1_) in @@ -2510,18 +2597,18 @@ module Tables = struct let xs = # 253 "" ( List.rev xs ) -# 2514 "parsing/parser.ml" +# 2601 "parsing/parser.ml" in -# 1288 "parsing/parser.mly" +# 1367 "parsing/parser.mly" ( xs ) -# 2519 "parsing/parser.ml" +# 2606 "parsing/parser.ml" in -# 4029 "parsing/parser.mly" +# 4101 "parsing/parser.mly" ( tys ) -# 2525 "parsing/parser.ml" +# 2612 "parsing/parser.ml" in let (_endpos_tys_, _startpos_tys_) = (_endpos__3_inlined1_, _startpos__1_) in @@ -2534,7 +2621,7 @@ module Tables = struct let _loc__3_ = (_startpos__3_, _endpos__3_) in let _sloc = (_symbolstartpos, _endpos) in -# 3963 "parsing/parser.mly" +# 4035 "parsing/parser.mly" ( match tid.txt with | Lident "float" -> let ident_start = fst _loc_tid_ in @@ -2547,7 +2634,7 @@ module Tables = struct *) not_expecting _sloc "Unboxed type other than float#" ) -# 2551 "parsing/parser.ml" +# 2638 "parsing/parser.ml" in let _endpos__1_ = _endpos__3_ in @@ -2555,15 +2642,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1160 "parsing/parser.mly" +# 1239 "parsing/parser.mly" ( mktyp ~loc:_sloc _1 ) -# 2561 "parsing/parser.ml" +# 2648 "parsing/parser.ml" in -# 4004 "parsing/parser.mly" +# 4076 "parsing/parser.mly" ( _1 ) -# 2567 "parsing/parser.ml" +# 2654 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -2592,35 +2679,35 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1123 "parsing/parser.mly" +# 1202 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 2598 "parsing/parser.ml" +# 2685 "parsing/parser.ml" in let tys = -# 4025 "parsing/parser.mly" +# 4097 "parsing/parser.mly" ( [] ) -# 2604 "parsing/parser.ml" +# 2691 "parsing/parser.ml" in -# 3977 "parsing/parser.mly" +# 4049 "parsing/parser.mly" ( Ptyp_constr(tid, tys) ) -# 2609 "parsing/parser.ml" +# 2696 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1160 "parsing/parser.mly" +# 1239 "parsing/parser.mly" ( mktyp ~loc:_sloc _1 ) -# 2618 "parsing/parser.ml" +# 2705 "parsing/parser.ml" in -# 4004 "parsing/parser.mly" +# 4076 "parsing/parser.mly" ( _1 ) -# 2624 "parsing/parser.ml" +# 2711 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -2656,20 +2743,20 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1123 "parsing/parser.mly" +# 1202 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 2662 "parsing/parser.ml" +# 2749 "parsing/parser.ml" in let tys = -# 4027 "parsing/parser.mly" +# 4099 "parsing/parser.mly" ( [ty] ) -# 2668 "parsing/parser.ml" +# 2755 "parsing/parser.ml" in -# 3977 "parsing/parser.mly" +# 4049 "parsing/parser.mly" ( Ptyp_constr(tid, tys) ) -# 2673 "parsing/parser.ml" +# 2760 "parsing/parser.ml" in let _startpos__1_ = _startpos_ty_ in @@ -2677,15 +2764,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1160 "parsing/parser.mly" +# 1239 "parsing/parser.mly" ( mktyp ~loc:_sloc _1 ) -# 2683 "parsing/parser.ml" +# 2770 "parsing/parser.ml" in -# 4004 "parsing/parser.mly" +# 4076 "parsing/parser.mly" ( _1 ) -# 2689 "parsing/parser.ml" +# 2776 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -2736,9 +2823,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1123 "parsing/parser.mly" +# 1202 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 2742 "parsing/parser.ml" +# 2829 "parsing/parser.ml" in let tys = @@ -2746,24 +2833,24 @@ module Tables = struct let xs = # 253 "" ( List.rev xs ) -# 2750 "parsing/parser.ml" +# 2837 "parsing/parser.ml" in -# 1288 "parsing/parser.mly" +# 1367 "parsing/parser.mly" ( xs ) -# 2755 "parsing/parser.ml" +# 2842 "parsing/parser.ml" in -# 4029 "parsing/parser.mly" +# 4101 "parsing/parser.mly" ( tys ) -# 2761 "parsing/parser.ml" +# 2848 "parsing/parser.ml" in -# 3977 "parsing/parser.mly" +# 4049 "parsing/parser.mly" ( Ptyp_constr(tid, tys) ) -# 2767 "parsing/parser.ml" +# 2854 "parsing/parser.ml" in let _endpos__1_ = _endpos__1_inlined1_ in @@ -2771,15 +2858,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1160 "parsing/parser.mly" +# 1239 "parsing/parser.mly" ( mktyp ~loc:_sloc _1 ) -# 2777 "parsing/parser.ml" +# 2864 "parsing/parser.ml" in -# 4004 "parsing/parser.mly" +# 4076 "parsing/parser.mly" ( _1 ) -# 2783 "parsing/parser.ml" +# 2870 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -2817,24 +2904,24 @@ module Tables = struct let _endpos = _endpos__3_ in let _v : (Parsetree.core_type) = let _1 = let _1 = -# 3979 "parsing/parser.mly" +# 4051 "parsing/parser.mly" ( let (f, c) = _2 in Ptyp_object (f, c) ) -# 2823 "parsing/parser.ml" +# 2910 "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 -# 1160 "parsing/parser.mly" +# 1239 "parsing/parser.mly" ( mktyp ~loc:_sloc _1 ) -# 2832 "parsing/parser.ml" +# 2919 "parsing/parser.ml" in -# 4004 "parsing/parser.mly" +# 4076 "parsing/parser.mly" ( _1 ) -# 2838 "parsing/parser.ml" +# 2925 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -2865,24 +2952,24 @@ module Tables = struct let _endpos = _endpos__2_ in let _v : (Parsetree.core_type) = let _1 = let _1 = -# 3981 "parsing/parser.mly" +# 4053 "parsing/parser.mly" ( Ptyp_object ([], Closed) ) -# 2871 "parsing/parser.ml" +# 2958 "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 -# 1160 "parsing/parser.mly" +# 1239 "parsing/parser.mly" ( mktyp ~loc:_sloc _1 ) -# 2880 "parsing/parser.ml" +# 2967 "parsing/parser.ml" in -# 4004 "parsing/parser.mly" +# 4076 "parsing/parser.mly" ( _1 ) -# 2886 "parsing/parser.ml" +# 2973 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -2918,20 +3005,20 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1123 "parsing/parser.mly" +# 1202 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 2924 "parsing/parser.ml" +# 3011 "parsing/parser.ml" in let tys = -# 4025 "parsing/parser.mly" +# 4097 "parsing/parser.mly" ( [] ) -# 2930 "parsing/parser.ml" +# 3017 "parsing/parser.ml" in -# 3985 "parsing/parser.mly" +# 4057 "parsing/parser.mly" ( Ptyp_class(cid, tys) ) -# 2935 "parsing/parser.ml" +# 3022 "parsing/parser.ml" in let _startpos__1_ = _startpos__2_ in @@ -2939,15 +3026,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1160 "parsing/parser.mly" +# 1239 "parsing/parser.mly" ( mktyp ~loc:_sloc _1 ) -# 2945 "parsing/parser.ml" +# 3032 "parsing/parser.ml" in -# 4004 "parsing/parser.mly" +# 4076 "parsing/parser.mly" ( _1 ) -# 2951 "parsing/parser.ml" +# 3038 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -2990,20 +3077,20 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1123 "parsing/parser.mly" +# 1202 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 2996 "parsing/parser.ml" +# 3083 "parsing/parser.ml" in let tys = -# 4027 "parsing/parser.mly" +# 4099 "parsing/parser.mly" ( [ty] ) -# 3002 "parsing/parser.ml" +# 3089 "parsing/parser.ml" in -# 3985 "parsing/parser.mly" +# 4057 "parsing/parser.mly" ( Ptyp_class(cid, tys) ) -# 3007 "parsing/parser.ml" +# 3094 "parsing/parser.ml" in let _startpos__1_ = _startpos_ty_ in @@ -3011,15 +3098,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1160 "parsing/parser.mly" +# 1239 "parsing/parser.mly" ( mktyp ~loc:_sloc _1 ) -# 3017 "parsing/parser.ml" +# 3104 "parsing/parser.ml" in -# 4004 "parsing/parser.mly" +# 4076 "parsing/parser.mly" ( _1 ) -# 3023 "parsing/parser.ml" +# 3110 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -3077,9 +3164,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1123 "parsing/parser.mly" +# 1202 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 3083 "parsing/parser.ml" +# 3170 "parsing/parser.ml" in let tys = @@ -3087,24 +3174,24 @@ module Tables = struct let xs = # 253 "" ( List.rev xs ) -# 3091 "parsing/parser.ml" +# 3178 "parsing/parser.ml" in -# 1288 "parsing/parser.mly" +# 1367 "parsing/parser.mly" ( xs ) -# 3096 "parsing/parser.ml" +# 3183 "parsing/parser.ml" in -# 4029 "parsing/parser.mly" +# 4101 "parsing/parser.mly" ( tys ) -# 3102 "parsing/parser.ml" +# 3189 "parsing/parser.ml" in -# 3985 "parsing/parser.mly" +# 4057 "parsing/parser.mly" ( Ptyp_class(cid, tys) ) -# 3108 "parsing/parser.ml" +# 3195 "parsing/parser.ml" in let _endpos__1_ = _endpos__1_inlined1_ in @@ -3112,15 +3199,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1160 "parsing/parser.mly" +# 1239 "parsing/parser.mly" ( mktyp ~loc:_sloc _1 ) -# 3118 "parsing/parser.ml" +# 3205 "parsing/parser.ml" in -# 4004 "parsing/parser.mly" +# 4076 "parsing/parser.mly" ( _1 ) -# 3124 "parsing/parser.ml" +# 3211 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -3158,24 +3245,24 @@ module Tables = struct let _endpos = _endpos__3_ in let _v : (Parsetree.core_type) = let _1 = let _1 = -# 3988 "parsing/parser.mly" +# 4060 "parsing/parser.mly" ( Ptyp_variant([_2], Closed, None) ) -# 3164 "parsing/parser.ml" +# 3251 "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 -# 1160 "parsing/parser.mly" +# 1239 "parsing/parser.mly" ( mktyp ~loc:_sloc _1 ) -# 3173 "parsing/parser.ml" +# 3260 "parsing/parser.ml" in -# 4004 "parsing/parser.mly" +# 4076 "parsing/parser.mly" ( _1 ) -# 3179 "parsing/parser.ml" +# 3266 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -3225,24 +3312,24 @@ module Tables = struct let xs = # 253 "" ( List.rev xs ) -# 3229 "parsing/parser.ml" +# 3316 "parsing/parser.ml" in -# 1260 "parsing/parser.mly" +# 1339 "parsing/parser.mly" ( xs ) -# 3234 "parsing/parser.ml" +# 3321 "parsing/parser.ml" in -# 4038 "parsing/parser.mly" +# 4110 "parsing/parser.mly" ( _1 ) -# 3240 "parsing/parser.ml" +# 3327 "parsing/parser.ml" in -# 3990 "parsing/parser.mly" +# 4062 "parsing/parser.mly" ( Ptyp_variant(_3, Closed, None) ) -# 3246 "parsing/parser.ml" +# 3333 "parsing/parser.ml" in let _endpos__1_ = _endpos__4_ in @@ -3250,15 +3337,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1160 "parsing/parser.mly" +# 1239 "parsing/parser.mly" ( mktyp ~loc:_sloc _1 ) -# 3256 "parsing/parser.ml" +# 3343 "parsing/parser.ml" in -# 4004 "parsing/parser.mly" +# 4076 "parsing/parser.mly" ( _1 ) -# 3262 "parsing/parser.ml" +# 3349 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -3315,24 +3402,24 @@ module Tables = struct let xs = # 253 "" ( List.rev xs ) -# 3319 "parsing/parser.ml" +# 3406 "parsing/parser.ml" in -# 1260 "parsing/parser.mly" +# 1339 "parsing/parser.mly" ( xs ) -# 3324 "parsing/parser.ml" +# 3411 "parsing/parser.ml" in -# 4038 "parsing/parser.mly" +# 4110 "parsing/parser.mly" ( _1 ) -# 3330 "parsing/parser.ml" +# 3417 "parsing/parser.ml" in -# 3992 "parsing/parser.mly" +# 4064 "parsing/parser.mly" ( Ptyp_variant(_2 :: _4, Closed, None) ) -# 3336 "parsing/parser.ml" +# 3423 "parsing/parser.ml" in let _endpos__1_ = _endpos__5_ in @@ -3340,15 +3427,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1160 "parsing/parser.mly" +# 1239 "parsing/parser.mly" ( mktyp ~loc:_sloc _1 ) -# 3346 "parsing/parser.ml" +# 3433 "parsing/parser.ml" in -# 4004 "parsing/parser.mly" +# 4076 "parsing/parser.mly" ( _1 ) -# 3352 "parsing/parser.ml" +# 3439 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -3398,24 +3485,24 @@ module Tables = struct let xs = # 253 "" ( List.rev xs ) -# 3402 "parsing/parser.ml" +# 3489 "parsing/parser.ml" in -# 1260 "parsing/parser.mly" +# 1339 "parsing/parser.mly" ( xs ) -# 3407 "parsing/parser.ml" +# 3494 "parsing/parser.ml" in -# 4038 "parsing/parser.mly" +# 4110 "parsing/parser.mly" ( _1 ) -# 3413 "parsing/parser.ml" +# 3500 "parsing/parser.ml" in -# 3994 "parsing/parser.mly" +# 4066 "parsing/parser.mly" ( Ptyp_variant(_3, Open, None) ) -# 3419 "parsing/parser.ml" +# 3506 "parsing/parser.ml" in let _endpos__1_ = _endpos__4_ in @@ -3423,15 +3510,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1160 "parsing/parser.mly" +# 1239 "parsing/parser.mly" ( mktyp ~loc:_sloc _1 ) -# 3429 "parsing/parser.ml" +# 3516 "parsing/parser.ml" in -# 4004 "parsing/parser.mly" +# 4076 "parsing/parser.mly" ( _1 ) -# 3435 "parsing/parser.ml" +# 3522 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -3462,24 +3549,24 @@ module Tables = struct let _endpos = _endpos__2_ in let _v : (Parsetree.core_type) = let _1 = let _1 = -# 3996 "parsing/parser.mly" +# 4068 "parsing/parser.mly" ( Ptyp_variant([], Open, None) ) -# 3468 "parsing/parser.ml" +# 3555 "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 -# 1160 "parsing/parser.mly" +# 1239 "parsing/parser.mly" ( mktyp ~loc:_sloc _1 ) -# 3477 "parsing/parser.ml" +# 3564 "parsing/parser.ml" in -# 4004 "parsing/parser.mly" +# 4076 "parsing/parser.mly" ( _1 ) -# 3483 "parsing/parser.ml" +# 3570 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -3529,24 +3616,24 @@ module Tables = struct let xs = # 253 "" ( List.rev xs ) -# 3533 "parsing/parser.ml" +# 3620 "parsing/parser.ml" in -# 1260 "parsing/parser.mly" +# 1339 "parsing/parser.mly" ( xs ) -# 3538 "parsing/parser.ml" +# 3625 "parsing/parser.ml" in -# 4038 "parsing/parser.mly" +# 4110 "parsing/parser.mly" ( _1 ) -# 3544 "parsing/parser.ml" +# 3631 "parsing/parser.ml" in -# 3998 "parsing/parser.mly" +# 4070 "parsing/parser.mly" ( Ptyp_variant(_3, Closed, Some []) ) -# 3550 "parsing/parser.ml" +# 3637 "parsing/parser.ml" in let _endpos__1_ = _endpos__4_ in @@ -3554,15 +3641,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1160 "parsing/parser.mly" +# 1239 "parsing/parser.mly" ( mktyp ~loc:_sloc _1 ) -# 3560 "parsing/parser.ml" +# 3647 "parsing/parser.ml" in -# 4004 "parsing/parser.mly" +# 4076 "parsing/parser.mly" ( _1 ) -# 3566 "parsing/parser.ml" +# 3653 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -3627,18 +3714,18 @@ module Tables = struct let xs = # 253 "" ( List.rev xs ) -# 3631 "parsing/parser.ml" +# 3718 "parsing/parser.ml" in -# 1228 "parsing/parser.mly" +# 1307 "parsing/parser.mly" ( xs ) -# 3636 "parsing/parser.ml" +# 3723 "parsing/parser.ml" in -# 4066 "parsing/parser.mly" +# 4138 "parsing/parser.mly" ( _1 ) -# 3642 "parsing/parser.ml" +# 3729 "parsing/parser.ml" in let _3 = @@ -3646,24 +3733,24 @@ module Tables = struct let xs = # 253 "" ( List.rev xs ) -# 3650 "parsing/parser.ml" +# 3737 "parsing/parser.ml" in -# 1260 "parsing/parser.mly" +# 1339 "parsing/parser.mly" ( xs ) -# 3655 "parsing/parser.ml" +# 3742 "parsing/parser.ml" in -# 4038 "parsing/parser.mly" +# 4110 "parsing/parser.mly" ( _1 ) -# 3661 "parsing/parser.ml" +# 3748 "parsing/parser.ml" in -# 4000 "parsing/parser.mly" +# 4072 "parsing/parser.mly" ( Ptyp_variant(_3, Closed, Some _5) ) -# 3667 "parsing/parser.ml" +# 3754 "parsing/parser.ml" in let _endpos__1_ = _endpos__6_ in @@ -3671,15 +3758,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1160 "parsing/parser.mly" +# 1239 "parsing/parser.mly" ( mktyp ~loc:_sloc _1 ) -# 3677 "parsing/parser.ml" +# 3764 "parsing/parser.ml" in -# 4004 "parsing/parser.mly" +# 4076 "parsing/parser.mly" ( _1 ) -# 3683 "parsing/parser.ml" +# 3770 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -3703,23 +3790,23 @@ module Tables = struct let _endpos = _endpos__1_ in let _v : (Parsetree.core_type) = let _1 = let _1 = -# 4002 "parsing/parser.mly" +# 4074 "parsing/parser.mly" ( Ptyp_extension _1 ) -# 3709 "parsing/parser.ml" +# 3796 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1160 "parsing/parser.mly" +# 1239 "parsing/parser.mly" ( mktyp ~loc:_sloc _1 ) -# 3717 "parsing/parser.ml" +# 3804 "parsing/parser.ml" in -# 4004 "parsing/parser.mly" +# 4076 "parsing/parser.mly" ( _1 ) -# 3723 "parsing/parser.ml" +# 3810 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -3780,10 +3867,10 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 4006 "parsing/parser.mly" +# 4078 "parsing/parser.mly" ( Jane_syntax.Layouts.type_of ~loc:(make_loc _sloc) ~attrs:[] @@ Ltyp_var { name = Some name; layout } ) -# 3787 "parsing/parser.ml" +# 3874 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -3837,10 +3924,10 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 4009 "parsing/parser.mly" +# 4081 "parsing/parser.mly" ( Jane_syntax.Layouts.type_of ~loc:(make_loc _sloc) ~attrs:[] @@ Ltyp_var { name = None; layout } ) -# 3844 "parsing/parser.ml" +# 3931 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -3864,23 +3951,23 @@ module Tables = struct let _endpos = _endpos__1_ in let _v : (string Asttypes.loc) = let _1 = let _1 = -# 4453 "parsing/parser.mly" +# 4525 "parsing/parser.mly" ( _1 ) -# 3870 "parsing/parser.ml" +# 3957 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1153 "parsing/parser.mly" +# 1232 "parsing/parser.mly" ( mkloc _1 (make_loc _sloc) ) -# 3878 "parsing/parser.ml" +# 3965 "parsing/parser.ml" in -# 4455 "parsing/parser.mly" +# 4527 "parsing/parser.mly" ( _1 ) -# 3884 "parsing/parser.ml" +# 3971 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -3918,24 +4005,24 @@ module Tables = struct let _endpos = _endpos__3_ in let _v : (string Asttypes.loc) = let _1 = let _1 = -# 4454 "parsing/parser.mly" +# 4526 "parsing/parser.mly" ( _1 ^ "." ^ _3.txt ) -# 3924 "parsing/parser.ml" +# 4011 "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 -# 1153 "parsing/parser.mly" +# 1232 "parsing/parser.mly" ( mkloc _1 (make_loc _sloc) ) -# 3933 "parsing/parser.ml" +# 4020 "parsing/parser.ml" in -# 4455 "parsing/parser.mly" +# 4527 "parsing/parser.mly" ( _1 ) -# 3939 "parsing/parser.ml" +# 4026 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -3958,11 +4045,11 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Parsetree.payload) = -# 4510 "parsing/parser.mly" +# 4582 "parsing/parser.mly" ( Builtin_attributes.mark_payload_attrs_used _1; _1 ) -# 3966 "parsing/parser.ml" +# 4053 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -4009,9 +4096,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 4459 "parsing/parser.mly" +# 4531 "parsing/parser.mly" ( mk_attr ~loc:(make_loc _sloc) _2 _3 ) -# 4015 "parsing/parser.ml" +# 4102 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -4034,9 +4121,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Parsetree.class_expr) = -# 2136 "parsing/parser.mly" +# 2215 "parsing/parser.mly" ( _1 ) -# 4040 "parsing/parser.ml" +# 4127 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -4075,18 +4162,18 @@ module Tables = struct let _v : (Parsetree.class_expr) = let _2 = let _1 = _1_inlined1 in -# 4476 "parsing/parser.mly" +# 4548 "parsing/parser.mly" ( _1 ) -# 4081 "parsing/parser.ml" +# 4168 "parsing/parser.ml" in let _endpos = _endpos__3_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2138 "parsing/parser.mly" +# 2217 "parsing/parser.mly" ( wrap_class_attrs ~loc:_sloc _3 _2 ) -# 4090 "parsing/parser.ml" +# 4177 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -4126,9 +4213,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2140 "parsing/parser.mly" +# 2219 "parsing/parser.mly" ( class_of_let_bindings ~loc:_sloc _1 _3 ) -# 4132 "parsing/parser.ml" +# 4219 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -4191,34 +4278,34 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1123 "parsing/parser.mly" +# 1202 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 4197 "parsing/parser.ml" +# 4284 "parsing/parser.ml" in let _endpos__5_ = _endpos__1_inlined2_ in let _4 = let _1 = _1_inlined1 in -# 4476 "parsing/parser.mly" +# 4548 "parsing/parser.mly" ( _1 ) -# 4206 "parsing/parser.ml" +# 4293 "parsing/parser.ml" in let _3 = -# 4377 "parsing/parser.mly" +# 4449 "parsing/parser.mly" ( Fresh ) -# 4212 "parsing/parser.ml" +# 4299 "parsing/parser.ml" in let _endpos = _endpos__7_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2142 "parsing/parser.mly" +# 2221 "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)) ) -# 4222 "parsing/parser.ml" +# 4309 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -4288,34 +4375,34 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1123 "parsing/parser.mly" +# 1202 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 4294 "parsing/parser.ml" +# 4381 "parsing/parser.ml" in let _endpos__5_ = _endpos__1_inlined3_ in let _4 = let _1 = _1_inlined2 in -# 4476 "parsing/parser.mly" +# 4548 "parsing/parser.mly" ( _1 ) -# 4303 "parsing/parser.ml" +# 4390 "parsing/parser.ml" in let _3 = -# 4378 "parsing/parser.mly" +# 4450 "parsing/parser.mly" ( Override ) -# 4309 "parsing/parser.ml" +# 4396 "parsing/parser.ml" in let _endpos = _endpos__7_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2142 "parsing/parser.mly" +# 2221 "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)) ) -# 4319 "parsing/parser.ml" +# 4406 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -4345,9 +4432,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (Parsetree.class_expr) = -# 2146 "parsing/parser.mly" +# 2225 "parsing/parser.mly" ( Cl.attr _1 _2 ) -# 4351 "parsing/parser.ml" +# 4438 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -4382,18 +4469,18 @@ module Tables = struct let xs = # 253 "" ( List.rev xs ) -# 4386 "parsing/parser.ml" +# 4473 "parsing/parser.ml" in -# 1228 "parsing/parser.mly" +# 1307 "parsing/parser.mly" ( xs ) -# 4391 "parsing/parser.ml" +# 4478 "parsing/parser.ml" in -# 2149 "parsing/parser.mly" +# 2228 "parsing/parser.mly" ( Pcl_apply(_1, _2) ) -# 4397 "parsing/parser.ml" +# 4484 "parsing/parser.ml" in let _endpos__1_ = _endpos_xs_ in @@ -4401,15 +4488,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1176 "parsing/parser.mly" +# 1255 "parsing/parser.mly" ( mkclass ~loc:_sloc _1 ) -# 4407 "parsing/parser.ml" +# 4494 "parsing/parser.ml" in -# 2152 "parsing/parser.mly" +# 2231 "parsing/parser.mly" ( _1 ) -# 4413 "parsing/parser.ml" +# 4500 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -4433,23 +4520,23 @@ module Tables = struct let _endpos = _endpos__1_ in let _v : (Parsetree.class_expr) = let _1 = let _1 = -# 2151 "parsing/parser.mly" +# 2230 "parsing/parser.mly" ( Pcl_extension _1 ) -# 4439 "parsing/parser.ml" +# 4526 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1176 "parsing/parser.mly" +# 1255 "parsing/parser.mly" ( mkclass ~loc:_sloc _1 ) -# 4447 "parsing/parser.ml" +# 4534 "parsing/parser.ml" in -# 2152 "parsing/parser.mly" +# 2231 "parsing/parser.mly" ( _1 ) -# 4453 "parsing/parser.ml" +# 4540 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -4502,33 +4589,33 @@ module Tables = struct let _v : (Parsetree.class_field) = let _6 = let _1 = _1_inlined2 in -# 4472 "parsing/parser.mly" +# 4544 "parsing/parser.mly" ( _1 ) -# 4508 "parsing/parser.ml" +# 4595 "parsing/parser.ml" in let _endpos__6_ = _endpos__1_inlined2_ in let _3 = let _1 = _1_inlined1 in -# 4476 "parsing/parser.mly" +# 4548 "parsing/parser.mly" ( _1 ) -# 4517 "parsing/parser.ml" +# 4604 "parsing/parser.ml" in let _2 = -# 4377 "parsing/parser.mly" +# 4449 "parsing/parser.mly" ( Fresh ) -# 4523 "parsing/parser.ml" +# 4610 "parsing/parser.ml" in let _endpos = _endpos__6_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2201 "parsing/parser.mly" +# 2280 "parsing/parser.mly" ( let docs = symbol_docs _sloc in mkcf ~loc:_sloc (Pcf_inherit (_2, _4, self)) ~attrs:(_3@_6) ~docs ) -# 4532 "parsing/parser.ml" +# 4619 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -4588,33 +4675,33 @@ module Tables = struct let _v : (Parsetree.class_field) = let _6 = let _1 = _1_inlined3 in -# 4472 "parsing/parser.mly" +# 4544 "parsing/parser.mly" ( _1 ) -# 4594 "parsing/parser.ml" +# 4681 "parsing/parser.ml" in let _endpos__6_ = _endpos__1_inlined3_ in let _3 = let _1 = _1_inlined2 in -# 4476 "parsing/parser.mly" +# 4548 "parsing/parser.mly" ( _1 ) -# 4603 "parsing/parser.ml" +# 4690 "parsing/parser.ml" in let _2 = -# 4378 "parsing/parser.mly" +# 4450 "parsing/parser.mly" ( Override ) -# 4609 "parsing/parser.ml" +# 4696 "parsing/parser.ml" in let _endpos = _endpos__6_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2201 "parsing/parser.mly" +# 2280 "parsing/parser.mly" ( let docs = symbol_docs _sloc in mkcf ~loc:_sloc (Pcf_inherit (_2, _4, self)) ~attrs:(_3@_6) ~docs ) -# 4618 "parsing/parser.ml" +# 4705 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -4655,9 +4742,9 @@ module Tables = struct let _v : (Parsetree.class_field) = let _3 = let _1 = _1_inlined1 in -# 4472 "parsing/parser.mly" +# 4544 "parsing/parser.mly" ( _1 ) -# 4661 "parsing/parser.ml" +# 4748 "parsing/parser.ml" in let _endpos__3_ = _endpos__1_inlined1_ in @@ -4665,11 +4752,11 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2204 "parsing/parser.mly" +# 2283 "parsing/parser.mly" ( let v, attrs = _2 in let docs = symbol_docs _sloc in mkcf ~loc:_sloc (Pcf_val v) ~attrs:(attrs@_3) ~docs ) -# 4673 "parsing/parser.ml" +# 4760 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -4710,9 +4797,9 @@ module Tables = struct let _v : (Parsetree.class_field) = let _3 = let _1 = _1_inlined1 in -# 4472 "parsing/parser.mly" +# 4544 "parsing/parser.mly" ( _1 ) -# 4716 "parsing/parser.ml" +# 4803 "parsing/parser.ml" in let _endpos__3_ = _endpos__1_inlined1_ in @@ -4720,11 +4807,11 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2208 "parsing/parser.mly" +# 2287 "parsing/parser.mly" ( let meth, attrs = _2 in let docs = symbol_docs _sloc in mkcf ~loc:_sloc (Pcf_method meth) ~attrs:(attrs@_3) ~docs ) -# 4728 "parsing/parser.ml" +# 4815 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -4770,28 +4857,28 @@ module Tables = struct let _v : (Parsetree.class_field) = let _4 = let _1 = _1_inlined2 in -# 4472 "parsing/parser.mly" +# 4544 "parsing/parser.mly" ( _1 ) -# 4776 "parsing/parser.ml" +# 4863 "parsing/parser.ml" in let _endpos__4_ = _endpos__1_inlined2_ in let _2 = let _1 = _1_inlined1 in -# 4476 "parsing/parser.mly" +# 4548 "parsing/parser.mly" ( _1 ) -# 4785 "parsing/parser.ml" +# 4872 "parsing/parser.ml" in let _endpos = _endpos__4_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2212 "parsing/parser.mly" +# 2291 "parsing/parser.mly" ( let docs = symbol_docs _sloc in mkcf ~loc:_sloc (Pcf_constraint _3) ~attrs:(_2@_4) ~docs ) -# 4795 "parsing/parser.ml" +# 4882 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -4837,28 +4924,28 @@ module Tables = struct let _v : (Parsetree.class_field) = let _4 = let _1 = _1_inlined2 in -# 4472 "parsing/parser.mly" +# 4544 "parsing/parser.mly" ( _1 ) -# 4843 "parsing/parser.ml" +# 4930 "parsing/parser.ml" in let _endpos__4_ = _endpos__1_inlined2_ in let _2 = let _1 = _1_inlined1 in -# 4476 "parsing/parser.mly" +# 4548 "parsing/parser.mly" ( _1 ) -# 4852 "parsing/parser.ml" +# 4939 "parsing/parser.ml" in let _endpos = _endpos__4_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2215 "parsing/parser.mly" +# 2294 "parsing/parser.mly" ( let docs = symbol_docs _sloc in mkcf ~loc:_sloc (Pcf_initializer _3) ~attrs:(_2@_4) ~docs ) -# 4862 "parsing/parser.ml" +# 4949 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -4890,9 +4977,9 @@ module Tables = struct let _v : (Parsetree.class_field) = let _2 = let _1 = _1_inlined1 in -# 4472 "parsing/parser.mly" +# 4544 "parsing/parser.mly" ( _1 ) -# 4896 "parsing/parser.ml" +# 4983 "parsing/parser.ml" in let _endpos__2_ = _endpos__1_inlined1_ in @@ -4900,10 +4987,10 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2218 "parsing/parser.mly" +# 2297 "parsing/parser.mly" ( let docs = symbol_docs _sloc in mkcf ~loc:_sloc (Pcf_extension _1) ~attrs:_2 ~docs ) -# 4907 "parsing/parser.ml" +# 4994 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -4927,23 +5014,23 @@ module Tables = struct let _endpos = _endpos__1_ in let _v : (Parsetree.class_field) = let _1 = let _1 = -# 2221 "parsing/parser.mly" +# 2300 "parsing/parser.mly" ( Pcf_attribute _1 ) -# 4933 "parsing/parser.ml" +# 5020 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1174 "parsing/parser.mly" +# 1253 "parsing/parser.mly" ( mkcf ~loc:_sloc _1 ) -# 4941 "parsing/parser.ml" +# 5028 "parsing/parser.ml" in -# 2222 "parsing/parser.mly" +# 2301 "parsing/parser.mly" ( _1 ) -# 4947 "parsing/parser.ml" +# 5034 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -4973,9 +5060,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (Parsetree.class_expr) = -# 2116 "parsing/parser.mly" +# 2195 "parsing/parser.mly" ( _2 ) -# 4979 "parsing/parser.ml" +# 5066 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -5020,24 +5107,24 @@ module Tables = struct let _endpos = _endpos__4_ in let _v : (Parsetree.class_expr) = let _1 = let _1 = -# 2119 "parsing/parser.mly" +# 2198 "parsing/parser.mly" ( Pcl_constraint(_4, _2) ) -# 5026 "parsing/parser.ml" +# 5113 "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 -# 1176 "parsing/parser.mly" +# 1255 "parsing/parser.mly" ( mkclass ~loc:_sloc _1 ) -# 5035 "parsing/parser.ml" +# 5122 "parsing/parser.ml" in -# 2122 "parsing/parser.mly" +# 2201 "parsing/parser.mly" ( _1 ) -# 5041 "parsing/parser.ml" +# 5128 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -5068,24 +5155,24 @@ module Tables = struct let _endpos = _endpos__2_ in let _v : (Parsetree.class_expr) = let _1 = let _1 = -# 2121 "parsing/parser.mly" +# 2200 "parsing/parser.mly" ( let (l,o,p) = _1 in Pcl_fun(l, o, p, _2) ) -# 5074 "parsing/parser.ml" +# 5161 "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 -# 1176 "parsing/parser.mly" +# 1255 "parsing/parser.mly" ( mkclass ~loc:_sloc _1 ) -# 5083 "parsing/parser.ml" +# 5170 "parsing/parser.ml" in -# 2122 "parsing/parser.mly" +# 2201 "parsing/parser.mly" ( _1 ) -# 5089 "parsing/parser.ml" +# 5176 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -5123,24 +5210,24 @@ module Tables = struct let _endpos = _endpos_e_ in let _v : (Parsetree.class_expr) = let _1 = let _1 = -# 2177 "parsing/parser.mly" +# 2256 "parsing/parser.mly" ( let (l,o,p) = _1 in Pcl_fun(l, o, p, e) ) -# 5129 "parsing/parser.ml" +# 5216 "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 -# 1176 "parsing/parser.mly" +# 1255 "parsing/parser.mly" ( mkclass ~loc:_sloc _1 ) -# 5138 "parsing/parser.ml" +# 5225 "parsing/parser.ml" in -# 2178 "parsing/parser.mly" +# 2257 "parsing/parser.mly" ( _1 ) -# 5144 "parsing/parser.ml" +# 5231 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -5171,24 +5258,24 @@ module Tables = struct let _endpos = _endpos_e_ in let _v : (Parsetree.class_expr) = let _1 = let _1 = -# 2177 "parsing/parser.mly" +# 2256 "parsing/parser.mly" ( let (l,o,p) = _1 in Pcl_fun(l, o, p, e) ) -# 5177 "parsing/parser.ml" +# 5264 "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 -# 1176 "parsing/parser.mly" +# 1255 "parsing/parser.mly" ( mkclass ~loc:_sloc _1 ) -# 5186 "parsing/parser.ml" +# 5273 "parsing/parser.ml" in -# 2178 "parsing/parser.mly" +# 2257 "parsing/parser.mly" ( _1 ) -# 5192 "parsing/parser.ml" +# 5279 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -5211,9 +5298,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Longident.t) = -# 4250 "parsing/parser.mly" +# 4322 "parsing/parser.mly" ( _1 ) -# 5217 "parsing/parser.ml" +# 5304 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -5253,9 +5340,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2186 "parsing/parser.mly" +# 2265 "parsing/parser.mly" ( reloc_pat ~loc:_sloc _2 ) -# 5259 "parsing/parser.ml" +# 5346 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -5307,24 +5394,24 @@ module Tables = struct let _endpos = _endpos__5_ in let _v : (Parsetree.pattern) = let _1 = let _1 = -# 2188 "parsing/parser.mly" +# 2267 "parsing/parser.mly" ( Ppat_constraint(_2, _4) ) -# 5313 "parsing/parser.ml" +# 5400 "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 -# 1158 "parsing/parser.mly" +# 1237 "parsing/parser.mly" ( mkpat ~loc:_sloc _1 ) -# 5322 "parsing/parser.ml" +# 5409 "parsing/parser.ml" in -# 2189 "parsing/parser.mly" +# 2268 "parsing/parser.mly" ( _1 ) -# 5328 "parsing/parser.ml" +# 5415 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -5343,9 +5430,9 @@ module Tables = struct let _symbolstartpos = _endpos in let _sloc = (_symbolstartpos, _endpos) in -# 2191 "parsing/parser.mly" +# 2270 "parsing/parser.mly" ( ghpat ~loc:_sloc Ppat_any ) -# 5349 "parsing/parser.ml" +# 5436 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -5382,9 +5469,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : (Parsetree.core_type) = -# 2316 "parsing/parser.mly" +# 2395 "parsing/parser.mly" ( _2 ) -# 5388 "parsing/parser.ml" +# 5475 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -5401,24 +5488,24 @@ module Tables = struct let _endpos = _startpos in let _v : (Parsetree.core_type) = let _1 = let _1 = -# 2317 "parsing/parser.mly" +# 2396 "parsing/parser.mly" ( Ptyp_any ) -# 5407 "parsing/parser.ml" +# 5494 "parsing/parser.ml" in let _endpos__1_ = _endpos__0_ in let _endpos = _endpos__1_ in let _symbolstartpos = _endpos in let _sloc = (_symbolstartpos, _endpos) in -# 1160 "parsing/parser.mly" +# 1239 "parsing/parser.mly" ( mktyp ~loc:_sloc _1 ) -# 5416 "parsing/parser.ml" +# 5503 "parsing/parser.ml" in -# 2318 "parsing/parser.mly" +# 2397 "parsing/parser.mly" ( _1 ) -# 5422 "parsing/parser.ml" +# 5509 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -5464,28 +5551,28 @@ module Tables = struct let _v : (Parsetree.class_type_field) = let _4 = let _1 = _1_inlined2 in -# 4472 "parsing/parser.mly" +# 4544 "parsing/parser.mly" ( _1 ) -# 5470 "parsing/parser.ml" +# 5557 "parsing/parser.ml" in let _endpos__4_ = _endpos__1_inlined2_ in let _2 = let _1 = _1_inlined1 in -# 4476 "parsing/parser.mly" +# 4548 "parsing/parser.mly" ( _1 ) -# 5479 "parsing/parser.ml" +# 5566 "parsing/parser.ml" in let _endpos = _endpos__4_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2326 "parsing/parser.mly" +# 2405 "parsing/parser.mly" ( let docs = symbol_docs _sloc in mkctf ~loc:_sloc (Pctf_inherit _3) ~attrs:(_2@_4) ~docs ) -# 5489 "parsing/parser.ml" +# 5576 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -5543,9 +5630,9 @@ module Tables = struct let ty : (Parsetree.core_type) = Obj.magic ty in let _3 : unit = Obj.magic _3 in let _1_inlined2 : ( -# 937 "parsing/parser.mly" +# 1014 "parsing/parser.mly" (string) -# 5549 "parsing/parser.ml" +# 5636 "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 @@ -5556,9 +5643,9 @@ module Tables = struct let _v : (Parsetree.class_type_field) = let _4 = let _1 = _1_inlined3 in -# 4472 "parsing/parser.mly" +# 4544 "parsing/parser.mly" ( _1 ) -# 5562 "parsing/parser.ml" +# 5649 "parsing/parser.ml" in let _endpos__4_ = _endpos__1_inlined3_ in @@ -5566,44 +5653,44 @@ module Tables = struct let (_endpos__1_, _startpos__1_, _1) = (_endpos__1_inlined2_, _startpos__1_inlined2_, _1_inlined2) in let label = let _1 = -# 4106 "parsing/parser.mly" +# 4178 "parsing/parser.mly" ( _1 ) -# 5572 "parsing/parser.ml" +# 5659 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1123 "parsing/parser.mly" +# 1202 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 5580 "parsing/parser.ml" +# 5667 "parsing/parser.ml" in -# 2351 "parsing/parser.mly" +# 2430 "parsing/parser.mly" ( let mut, virt = flags in label, mut, virt, ty ) -# 5589 "parsing/parser.ml" +# 5676 "parsing/parser.ml" in let _2 = let _1 = _1_inlined1 in -# 4476 "parsing/parser.mly" +# 4548 "parsing/parser.mly" ( _1 ) -# 5597 "parsing/parser.ml" +# 5684 "parsing/parser.ml" in let _endpos = _endpos__4_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2329 "parsing/parser.mly" +# 2408 "parsing/parser.mly" ( let docs = symbol_docs _sloc in mkctf ~loc:_sloc (Pctf_val _3) ~attrs:(_2@_4) ~docs ) -# 5607 "parsing/parser.ml" +# 5694 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -5661,9 +5748,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 : ( -# 937 "parsing/parser.mly" +# 1014 "parsing/parser.mly" (string) -# 5667 "parsing/parser.ml" +# 5754 "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 @@ -5674,53 +5761,53 @@ module Tables = struct let _v : (Parsetree.class_type_field) = let _7 = let _1 = _1_inlined4 in -# 4472 "parsing/parser.mly" +# 4544 "parsing/parser.mly" ( _1 ) -# 5680 "parsing/parser.ml" +# 5767 "parsing/parser.ml" in let _endpos__7_ = _endpos__1_inlined4_ in let _6 = let _1 = _1_inlined3 in -# 3814 "parsing/parser.mly" +# 3881 "parsing/parser.mly" ( _1 ) -# 5689 "parsing/parser.ml" +# 5776 "parsing/parser.ml" in let _4 = let (_endpos__1_, _startpos__1_, _1) = (_endpos__1_inlined2_, _startpos__1_inlined2_, _1_inlined2) in let _1 = -# 4106 "parsing/parser.mly" +# 4178 "parsing/parser.mly" ( _1 ) -# 5697 "parsing/parser.ml" +# 5784 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1123 "parsing/parser.mly" +# 1202 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 5705 "parsing/parser.ml" +# 5792 "parsing/parser.ml" in let _2 = let _1 = _1_inlined1 in -# 4476 "parsing/parser.mly" +# 4548 "parsing/parser.mly" ( _1 ) -# 5713 "parsing/parser.ml" +# 5800 "parsing/parser.ml" in let _endpos = _endpos__7_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2333 "parsing/parser.mly" +# 2412 "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 ) -# 5724 "parsing/parser.ml" +# 5811 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -5766,28 +5853,28 @@ module Tables = struct let _v : (Parsetree.class_type_field) = let _4 = let _1 = _1_inlined2 in -# 4472 "parsing/parser.mly" +# 4544 "parsing/parser.mly" ( _1 ) -# 5772 "parsing/parser.ml" +# 5859 "parsing/parser.ml" in let _endpos__4_ = _endpos__1_inlined2_ in let _2 = let _1 = _1_inlined1 in -# 4476 "parsing/parser.mly" +# 4548 "parsing/parser.mly" ( _1 ) -# 5781 "parsing/parser.ml" +# 5868 "parsing/parser.ml" in let _endpos = _endpos__4_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2337 "parsing/parser.mly" +# 2416 "parsing/parser.mly" ( let docs = symbol_docs _sloc in mkctf ~loc:_sloc (Pctf_constraint _3) ~attrs:(_2@_4) ~docs ) -# 5791 "parsing/parser.ml" +# 5878 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -5819,9 +5906,9 @@ module Tables = struct let _v : (Parsetree.class_type_field) = let _2 = let _1 = _1_inlined1 in -# 4472 "parsing/parser.mly" +# 4544 "parsing/parser.mly" ( _1 ) -# 5825 "parsing/parser.ml" +# 5912 "parsing/parser.ml" in let _endpos__2_ = _endpos__1_inlined1_ in @@ -5829,10 +5916,10 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2340 "parsing/parser.mly" +# 2419 "parsing/parser.mly" ( let docs = symbol_docs _sloc in mkctf ~loc:_sloc (Pctf_extension _1) ~attrs:_2 ~docs ) -# 5836 "parsing/parser.ml" +# 5923 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -5856,23 +5943,23 @@ module Tables = struct let _endpos = _endpos__1_ in let _v : (Parsetree.class_type_field) = let _1 = let _1 = -# 2343 "parsing/parser.mly" +# 2422 "parsing/parser.mly" ( Pctf_attribute _1 ) -# 5862 "parsing/parser.ml" +# 5949 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1172 "parsing/parser.mly" +# 1251 "parsing/parser.mly" ( mkctf ~loc:_sloc _1 ) -# 5870 "parsing/parser.ml" +# 5957 "parsing/parser.ml" in -# 2344 "parsing/parser.mly" +# 2423 "parsing/parser.mly" ( _1 ) -# 5876 "parsing/parser.ml" +# 5963 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -5901,42 +5988,42 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1123 "parsing/parser.mly" +# 1202 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 5907 "parsing/parser.ml" +# 5994 "parsing/parser.ml" in let tys = let tys = -# 2302 "parsing/parser.mly" +# 2381 "parsing/parser.mly" ( [] ) -# 5914 "parsing/parser.ml" +# 6001 "parsing/parser.ml" in -# 2308 "parsing/parser.mly" +# 2387 "parsing/parser.mly" ( tys ) -# 5919 "parsing/parser.ml" +# 6006 "parsing/parser.ml" in -# 2285 "parsing/parser.mly" +# 2364 "parsing/parser.mly" ( Pcty_constr (cid, tys) ) -# 5925 "parsing/parser.ml" +# 6012 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1170 "parsing/parser.mly" +# 1249 "parsing/parser.mly" ( mkcty ~loc:_sloc _1 ) -# 5934 "parsing/parser.ml" +# 6021 "parsing/parser.ml" in -# 2288 "parsing/parser.mly" +# 2367 "parsing/parser.mly" ( _1 ) -# 5940 "parsing/parser.ml" +# 6027 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -5987,9 +6074,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1123 "parsing/parser.mly" +# 1202 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 5993 "parsing/parser.ml" +# 6080 "parsing/parser.ml" in let tys = @@ -5998,30 +6085,30 @@ module Tables = struct let xs = # 253 "" ( List.rev xs ) -# 6002 "parsing/parser.ml" +# 6089 "parsing/parser.ml" in -# 1260 "parsing/parser.mly" +# 1339 "parsing/parser.mly" ( xs ) -# 6007 "parsing/parser.ml" +# 6094 "parsing/parser.ml" in -# 2304 "parsing/parser.mly" +# 2383 "parsing/parser.mly" ( params ) -# 6013 "parsing/parser.ml" +# 6100 "parsing/parser.ml" in -# 2308 "parsing/parser.mly" +# 2387 "parsing/parser.mly" ( tys ) -# 6019 "parsing/parser.ml" +# 6106 "parsing/parser.ml" in -# 2285 "parsing/parser.mly" +# 2364 "parsing/parser.mly" ( Pcty_constr (cid, tys) ) -# 6025 "parsing/parser.ml" +# 6112 "parsing/parser.ml" in let _endpos__1_ = _endpos__1_inlined1_ in @@ -6029,15 +6116,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1170 "parsing/parser.mly" +# 1249 "parsing/parser.mly" ( mkcty ~loc:_sloc _1 ) -# 6035 "parsing/parser.ml" +# 6122 "parsing/parser.ml" in -# 2288 "parsing/parser.mly" +# 2367 "parsing/parser.mly" ( _1 ) -# 6041 "parsing/parser.ml" +# 6128 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -6061,23 +6148,23 @@ module Tables = struct let _endpos = _endpos__1_ in let _v : (Parsetree.class_type) = let _1 = let _1 = -# 2287 "parsing/parser.mly" +# 2366 "parsing/parser.mly" ( Pcty_extension _1 ) -# 6067 "parsing/parser.ml" +# 6154 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1170 "parsing/parser.mly" +# 1249 "parsing/parser.mly" ( mkcty ~loc:_sloc _1 ) -# 6075 "parsing/parser.ml" +# 6162 "parsing/parser.ml" in -# 2288 "parsing/parser.mly" +# 2367 "parsing/parser.mly" ( _1 ) -# 6081 "parsing/parser.ml" +# 6168 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -6134,44 +6221,44 @@ module Tables = struct let _1 = # 260 "" ( List.flatten xss ) -# 6138 "parsing/parser.ml" +# 6225 "parsing/parser.ml" in -# 2322 "parsing/parser.mly" +# 2401 "parsing/parser.mly" ( _1 ) -# 6143 "parsing/parser.ml" +# 6230 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_xss_, _startpos_xss_) in let _endpos = _endpos__1_ in let _startpos = _startpos__1_ in -# 1118 "parsing/parser.mly" +# 1197 "parsing/parser.mly" ( extra_csig _startpos _endpos _1 ) -# 6152 "parsing/parser.ml" +# 6239 "parsing/parser.ml" in -# 2312 "parsing/parser.mly" +# 2391 "parsing/parser.mly" ( Csig.mk _1 _2 ) -# 6158 "parsing/parser.ml" +# 6245 "parsing/parser.ml" in let _2 = let _1 = _1_inlined1 in -# 4476 "parsing/parser.mly" +# 4548 "parsing/parser.mly" ( _1 ) -# 6166 "parsing/parser.ml" +# 6253 "parsing/parser.ml" in let _endpos = _endpos__4_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2290 "parsing/parser.mly" +# 2369 "parsing/parser.mly" ( mkcty ~loc:_sloc ~attrs:_2 (Pcty_signature _3) ) -# 6175 "parsing/parser.ml" +# 6262 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -6228,43 +6315,43 @@ module Tables = struct let _1 = # 260 "" ( List.flatten xss ) -# 6232 "parsing/parser.ml" +# 6319 "parsing/parser.ml" in -# 2322 "parsing/parser.mly" +# 2401 "parsing/parser.mly" ( _1 ) -# 6237 "parsing/parser.ml" +# 6324 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_xss_, _startpos_xss_) in let _endpos = _endpos__1_ in let _startpos = _startpos__1_ in -# 1118 "parsing/parser.mly" +# 1197 "parsing/parser.mly" ( extra_csig _startpos _endpos _1 ) -# 6246 "parsing/parser.ml" +# 6333 "parsing/parser.ml" in -# 2312 "parsing/parser.mly" +# 2391 "parsing/parser.mly" ( Csig.mk _1 _2 ) -# 6252 "parsing/parser.ml" +# 6339 "parsing/parser.ml" in let _2 = let _1 = _1_inlined1 in -# 4476 "parsing/parser.mly" +# 4548 "parsing/parser.mly" ( _1 ) -# 6260 "parsing/parser.ml" +# 6347 "parsing/parser.ml" in let _loc__4_ = (_startpos__4_, _endpos__4_) in let _loc__1_ = (_startpos__1_, _endpos__1_) in -# 2292 "parsing/parser.mly" +# 2371 "parsing/parser.mly" ( unclosed "object" _loc__1_ "end" _loc__4_ ) -# 6268 "parsing/parser.ml" +# 6355 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -6294,9 +6381,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (Parsetree.class_type) = -# 2294 "parsing/parser.mly" +# 2373 "parsing/parser.mly" ( Cty.attr _1 _2 ) -# 6300 "parsing/parser.ml" +# 6387 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -6359,34 +6446,34 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1123 "parsing/parser.mly" +# 1202 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 6365 "parsing/parser.ml" +# 6452 "parsing/parser.ml" in let _endpos__5_ = _endpos__1_inlined2_ in let _4 = let _1 = _1_inlined1 in -# 4476 "parsing/parser.mly" +# 4548 "parsing/parser.mly" ( _1 ) -# 6374 "parsing/parser.ml" +# 6461 "parsing/parser.ml" in let _3 = -# 4377 "parsing/parser.mly" +# 4449 "parsing/parser.mly" ( Fresh ) -# 6380 "parsing/parser.ml" +# 6467 "parsing/parser.ml" in let _endpos = _endpos__7_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2296 "parsing/parser.mly" +# 2375 "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)) ) -# 6390 "parsing/parser.ml" +# 6477 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -6456,34 +6543,34 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1123 "parsing/parser.mly" +# 1202 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 6462 "parsing/parser.ml" +# 6549 "parsing/parser.ml" in let _endpos__5_ = _endpos__1_inlined3_ in let _4 = let _1 = _1_inlined2 in -# 4476 "parsing/parser.mly" +# 4548 "parsing/parser.mly" ( _1 ) -# 6471 "parsing/parser.ml" +# 6558 "parsing/parser.ml" in let _3 = -# 4378 "parsing/parser.mly" +# 4450 "parsing/parser.mly" ( Override ) -# 6477 "parsing/parser.ml" +# 6564 "parsing/parser.ml" in let _endpos = _endpos__7_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2296 "parsing/parser.mly" +# 2375 "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)) ) -# 6487 "parsing/parser.ml" +# 6574 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -6520,9 +6607,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : (Parsetree.class_expr) = -# 2156 "parsing/parser.mly" +# 2235 "parsing/parser.mly" ( _2 ) -# 6526 "parsing/parser.ml" +# 6613 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -6561,9 +6648,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 -# 2158 "parsing/parser.mly" +# 2237 "parsing/parser.mly" ( unclosed "(" _loc__1_ ")" _loc__3_ ) -# 6567 "parsing/parser.ml" +# 6654 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -6592,42 +6679,42 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1123 "parsing/parser.mly" +# 1202 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 6598 "parsing/parser.ml" +# 6685 "parsing/parser.ml" in let tys = let tys = -# 2302 "parsing/parser.mly" +# 2381 "parsing/parser.mly" ( [] ) -# 6605 "parsing/parser.ml" +# 6692 "parsing/parser.ml" in -# 2308 "parsing/parser.mly" +# 2387 "parsing/parser.mly" ( tys ) -# 6610 "parsing/parser.ml" +# 6697 "parsing/parser.ml" in -# 2161 "parsing/parser.mly" +# 2240 "parsing/parser.mly" ( Pcl_constr(cid, tys) ) -# 6616 "parsing/parser.ml" +# 6703 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1176 "parsing/parser.mly" +# 1255 "parsing/parser.mly" ( mkclass ~loc:_sloc _1 ) -# 6625 "parsing/parser.ml" +# 6712 "parsing/parser.ml" in -# 2168 "parsing/parser.mly" +# 2247 "parsing/parser.mly" ( _1 ) -# 6631 "parsing/parser.ml" +# 6718 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -6678,9 +6765,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1123 "parsing/parser.mly" +# 1202 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 6684 "parsing/parser.ml" +# 6771 "parsing/parser.ml" in let tys = @@ -6689,30 +6776,30 @@ module Tables = struct let xs = # 253 "" ( List.rev xs ) -# 6693 "parsing/parser.ml" +# 6780 "parsing/parser.ml" in -# 1260 "parsing/parser.mly" +# 1339 "parsing/parser.mly" ( xs ) -# 6698 "parsing/parser.ml" +# 6785 "parsing/parser.ml" in -# 2304 "parsing/parser.mly" +# 2383 "parsing/parser.mly" ( params ) -# 6704 "parsing/parser.ml" +# 6791 "parsing/parser.ml" in -# 2308 "parsing/parser.mly" +# 2387 "parsing/parser.mly" ( tys ) -# 6710 "parsing/parser.ml" +# 6797 "parsing/parser.ml" in -# 2161 "parsing/parser.mly" +# 2240 "parsing/parser.mly" ( Pcl_constr(cid, tys) ) -# 6716 "parsing/parser.ml" +# 6803 "parsing/parser.ml" in let _endpos__1_ = _endpos__1_inlined1_ in @@ -6720,15 +6807,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1176 "parsing/parser.mly" +# 1255 "parsing/parser.mly" ( mkclass ~loc:_sloc _1 ) -# 6726 "parsing/parser.ml" +# 6813 "parsing/parser.ml" in -# 2168 "parsing/parser.mly" +# 2247 "parsing/parser.mly" ( _1 ) -# 6732 "parsing/parser.ml" +# 6819 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -6787,43 +6874,43 @@ module Tables = struct let _1 = # 260 "" ( List.flatten xss ) -# 6791 "parsing/parser.ml" +# 6878 "parsing/parser.ml" in -# 2195 "parsing/parser.mly" +# 2274 "parsing/parser.mly" ( _1 ) -# 6796 "parsing/parser.ml" +# 6883 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_xss_, _startpos_xss_) in let _endpos = _endpos__1_ in let _startpos = _startpos__1_ in -# 1117 "parsing/parser.mly" +# 1196 "parsing/parser.mly" ( extra_cstr _startpos _endpos _1 ) -# 6805 "parsing/parser.ml" +# 6892 "parsing/parser.ml" in -# 2182 "parsing/parser.mly" +# 2261 "parsing/parser.mly" ( Cstr.mk _1 _2 ) -# 6811 "parsing/parser.ml" +# 6898 "parsing/parser.ml" in let _2 = let _1 = _1_inlined1 in -# 4476 "parsing/parser.mly" +# 4548 "parsing/parser.mly" ( _1 ) -# 6819 "parsing/parser.ml" +# 6906 "parsing/parser.ml" in let _loc__4_ = (_startpos__4_, _endpos__4_) in let _loc__1_ = (_startpos__1_, _endpos__1_) in -# 2163 "parsing/parser.mly" +# 2242 "parsing/parser.mly" ( unclosed "object" _loc__1_ "end" _loc__4_ ) -# 6827 "parsing/parser.ml" +# 6914 "parsing/parser.ml" in let _endpos__1_ = _endpos__4_ in @@ -6831,15 +6918,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1176 "parsing/parser.mly" +# 1255 "parsing/parser.mly" ( mkclass ~loc:_sloc _1 ) -# 6837 "parsing/parser.ml" +# 6924 "parsing/parser.ml" in -# 2168 "parsing/parser.mly" +# 2247 "parsing/parser.mly" ( _1 ) -# 6843 "parsing/parser.ml" +# 6930 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -6891,24 +6978,24 @@ module Tables = struct let _endpos = _endpos__5_ in let _v : (Parsetree.class_expr) = let _1 = let _1 = -# 2165 "parsing/parser.mly" +# 2244 "parsing/parser.mly" ( Pcl_constraint(_2, _4) ) -# 6897 "parsing/parser.ml" +# 6984 "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 -# 1176 "parsing/parser.mly" +# 1255 "parsing/parser.mly" ( mkclass ~loc:_sloc _1 ) -# 6906 "parsing/parser.ml" +# 6993 "parsing/parser.ml" in -# 2168 "parsing/parser.mly" +# 2247 "parsing/parser.mly" ( _1 ) -# 6912 "parsing/parser.ml" +# 6999 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -6963,9 +7050,9 @@ module Tables = struct let _loc__5_ = (_startpos__5_, _endpos__5_) in let _loc__1_ = (_startpos__1_, _endpos__1_) in -# 2167 "parsing/parser.mly" +# 2246 "parsing/parser.mly" ( unclosed "(" _loc__1_ ")" _loc__5_ ) -# 6969 "parsing/parser.ml" +# 7056 "parsing/parser.ml" in let _endpos__1_ = _endpos__5_ in @@ -6973,15 +7060,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1176 "parsing/parser.mly" +# 1255 "parsing/parser.mly" ( mkclass ~loc:_sloc _1 ) -# 6979 "parsing/parser.ml" +# 7066 "parsing/parser.ml" in -# 2168 "parsing/parser.mly" +# 2247 "parsing/parser.mly" ( _1 ) -# 6985 "parsing/parser.ml" +# 7072 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -7038,44 +7125,44 @@ module Tables = struct let _1 = # 260 "" ( List.flatten xss ) -# 7042 "parsing/parser.ml" +# 7129 "parsing/parser.ml" in -# 2195 "parsing/parser.mly" +# 2274 "parsing/parser.mly" ( _1 ) -# 7047 "parsing/parser.ml" +# 7134 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_xss_, _startpos_xss_) in let _endpos = _endpos__1_ in let _startpos = _startpos__1_ in -# 1117 "parsing/parser.mly" +# 1196 "parsing/parser.mly" ( extra_cstr _startpos _endpos _1 ) -# 7056 "parsing/parser.ml" +# 7143 "parsing/parser.ml" in -# 2182 "parsing/parser.mly" +# 2261 "parsing/parser.mly" ( Cstr.mk _1 _2 ) -# 7062 "parsing/parser.ml" +# 7149 "parsing/parser.ml" in let _2 = let _1 = _1_inlined1 in -# 4476 "parsing/parser.mly" +# 4548 "parsing/parser.mly" ( _1 ) -# 7070 "parsing/parser.ml" +# 7157 "parsing/parser.ml" in let _endpos = _endpos__4_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2170 "parsing/parser.mly" +# 2249 "parsing/parser.mly" ( mkclass ~loc:_sloc ~attrs:_2 (Pcl_structure _3) ) -# 7079 "parsing/parser.ml" +# 7166 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -7098,9 +7185,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Parsetree.class_type) = -# 2273 "parsing/parser.mly" +# 2352 "parsing/parser.mly" ( _1 ) -# 7104 "parsing/parser.ml" +# 7191 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -7146,14 +7233,14 @@ module Tables = struct let _v : (Parsetree.class_type) = let _1 = let _1 = let label = -# 3905 "parsing/parser.mly" +# 3971 "parsing/parser.mly" ( Optional label ) -# 7152 "parsing/parser.ml" +# 7239 "parsing/parser.ml" in -# 2279 "parsing/parser.mly" +# 2358 "parsing/parser.mly" ( Pcty_arrow(label, domain, codomain) ) -# 7157 "parsing/parser.ml" +# 7244 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_codomain_, _startpos_label_) in @@ -7161,15 +7248,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1170 "parsing/parser.mly" +# 1249 "parsing/parser.mly" ( mkcty ~loc:_sloc _1 ) -# 7167 "parsing/parser.ml" +# 7254 "parsing/parser.ml" in -# 2280 "parsing/parser.mly" +# 2359 "parsing/parser.mly" ( _1 ) -# 7173 "parsing/parser.ml" +# 7260 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -7216,9 +7303,9 @@ module Tables = struct let domain : (Parsetree.core_type) = Obj.magic domain in let _2 : unit = Obj.magic _2 in let label : ( -# 937 "parsing/parser.mly" +# 1014 "parsing/parser.mly" (string) -# 7222 "parsing/parser.ml" +# 7309 "parsing/parser.ml" ) = Obj.magic label in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos_label_ in @@ -7226,14 +7313,14 @@ module Tables = struct let _v : (Parsetree.class_type) = let _1 = let _1 = let label = -# 3907 "parsing/parser.mly" +# 3973 "parsing/parser.mly" ( Labelled label ) -# 7232 "parsing/parser.ml" +# 7319 "parsing/parser.ml" in -# 2279 "parsing/parser.mly" +# 2358 "parsing/parser.mly" ( Pcty_arrow(label, domain, codomain) ) -# 7237 "parsing/parser.ml" +# 7324 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_codomain_, _startpos_label_) in @@ -7241,15 +7328,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1170 "parsing/parser.mly" +# 1249 "parsing/parser.mly" ( mkcty ~loc:_sloc _1 ) -# 7247 "parsing/parser.ml" +# 7334 "parsing/parser.ml" in -# 2280 "parsing/parser.mly" +# 2359 "parsing/parser.mly" ( _1 ) -# 7253 "parsing/parser.ml" +# 7340 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -7288,14 +7375,14 @@ module Tables = struct let _v : (Parsetree.class_type) = let _1 = let _1 = let label = -# 3909 "parsing/parser.mly" +# 3975 "parsing/parser.mly" ( Nolabel ) -# 7294 "parsing/parser.ml" +# 7381 "parsing/parser.ml" in -# 2279 "parsing/parser.mly" +# 2358 "parsing/parser.mly" ( Pcty_arrow(label, domain, codomain) ) -# 7299 "parsing/parser.ml" +# 7386 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_codomain_, _startpos_domain_) in @@ -7303,15 +7390,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1170 "parsing/parser.mly" +# 1249 "parsing/parser.mly" ( mkcty ~loc:_sloc _1 ) -# 7309 "parsing/parser.ml" +# 7396 "parsing/parser.ml" in -# 2280 "parsing/parser.mly" +# 2359 "parsing/parser.mly" ( _1 ) -# 7315 "parsing/parser.ml" +# 7402 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -7394,9 +7481,9 @@ module Tables = struct let csig : (Parsetree.class_type) = Obj.magic csig in let _8 : unit = Obj.magic _8 in let _1_inlined2 : ( -# 937 "parsing/parser.mly" +# 1014 "parsing/parser.mly" (string) -# 7400 "parsing/parser.ml" +# 7487 "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 @@ -7412,9 +7499,9 @@ module Tables = struct let attrs2 = let _1 = _1_inlined3 in -# 4472 "parsing/parser.mly" +# 4544 "parsing/parser.mly" ( _1 ) -# 7418 "parsing/parser.ml" +# 7505 "parsing/parser.ml" in let _endpos_attrs2_ = _endpos__1_inlined3_ in @@ -7424,24 +7511,24 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1123 "parsing/parser.mly" +# 1202 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 7430 "parsing/parser.ml" +# 7517 "parsing/parser.ml" in let attrs1 = let _1 = _1_inlined1 in -# 4476 "parsing/parser.mly" +# 4548 "parsing/parser.mly" ( _1 ) -# 7438 "parsing/parser.ml" +# 7525 "parsing/parser.ml" in let _endpos = _endpos_attrs2_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2418 "parsing/parser.mly" +# 2497 "parsing/parser.mly" ( let attrs = attrs1 @ attrs2 in let loc = make_loc _sloc in @@ -7449,19 +7536,19 @@ module Tables = struct ext, Ci.mk id csig ~virt ~params ~attrs ~loc ~docs ) -# 7453 "parsing/parser.ml" +# 7540 "parsing/parser.ml" in -# 1357 "parsing/parser.mly" +# 1436 "parsing/parser.mly" ( let (x, b) = a in x, b :: bs ) -# 7459 "parsing/parser.ml" +# 7546 "parsing/parser.ml" in -# 2406 "parsing/parser.mly" +# 2485 "parsing/parser.mly" ( _1 ) -# 7465 "parsing/parser.ml" +# 7552 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -7484,9 +7571,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Longident.t) = -# 4247 "parsing/parser.mly" +# 4319 "parsing/parser.mly" ( _1 ) -# 7490 "parsing/parser.ml" +# 7577 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -7519,18 +7606,18 @@ module Tables = struct let xs = # 253 "" ( List.rev xs ) -# 7523 "parsing/parser.ml" +# 7610 "parsing/parser.ml" in -# 1260 "parsing/parser.mly" +# 1339 "parsing/parser.mly" ( xs ) -# 7528 "parsing/parser.ml" +# 7615 "parsing/parser.ml" in -# 2738 "parsing/parser.mly" +# 2820 "parsing/parser.mly" ( Jane_syntax.Comprehensions.For _2 ) -# 7534 "parsing/parser.ml" +# 7621 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -7560,9 +7647,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (Jane_syntax.Comprehensions.clause) = -# 2740 "parsing/parser.mly" +# 2822 "parsing/parser.mly" ( Jane_syntax.Comprehensions.When _2 ) -# 7566 "parsing/parser.ml" +# 7653 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -7599,14 +7686,14 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : (Jane_syntax.Comprehensions.clause_binding) = let _1 = -# 4476 "parsing/parser.mly" +# 4548 "parsing/parser.mly" ( _1 ) -# 7605 "parsing/parser.ml" +# 7692 "parsing/parser.ml" in -# 2721 "parsing/parser.mly" +# 2800 "parsing/parser.mly" ( Jane_syntax.Comprehensions.{ pattern = _2 ; iterator = _3 ; attributes = _1 } ) -# 7610 "parsing/parser.ml" +# 7697 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -7657,9 +7744,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__5_ in let _v : (Jane_syntax.Comprehensions.clause_binding) = let _1 = -# 4476 "parsing/parser.mly" +# 4548 "parsing/parser.mly" ( _1 ) -# 7663 "parsing/parser.ml" +# 7750 "parsing/parser.ml" in let _endpos = _endpos__5_ in let _symbolstartpos = if _startpos__1_ != _endpos__1_ then @@ -7669,14 +7756,17 @@ module Tables = struct let _loc__2_ = (_startpos__2_, _endpos__2_) in let _sloc = (_symbolstartpos, _endpos) in -# 2728 "parsing/parser.mly" - ( Jane_syntax.Comprehensions. +# 2807 "parsing/parser.mly" + ( let expr = + mkexp_stack _5 ~kwd_loc:_loc__2_ ~loc:_sloc + in + Jane_syntax.Comprehensions. { pattern = _3 - ; iterator = In (mkexp_stack ~loc:_sloc ~kwd_loc:(_loc__2_) _5) + ; iterator = In expr ; attributes = _1 } ) -# 7680 "parsing/parser.ml" +# 7770 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -7720,9 +7810,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__4_ in let _v : (Jane_syntax.Comprehensions.iterator) = -# 2714 "parsing/parser.mly" +# 2793 "parsing/parser.mly" ( Jane_syntax.Comprehensions.Range { start = _2 ; stop = _4 ; direction = _3 } ) -# 7726 "parsing/parser.ml" +# 7816 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -7752,9 +7842,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (Jane_syntax.Comprehensions.iterator) = -# 2716 "parsing/parser.mly" +# 2795 "parsing/parser.mly" ( Jane_syntax.Comprehensions.In _2 ) -# 7758 "parsing/parser.ml" +# 7848 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -7777,9 +7867,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Constant.t) = -# 4123 "parsing/parser.mly" +# 4195 "parsing/parser.mly" ( Constant.value _1 ) -# 7783 "parsing/parser.ml" +# 7873 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -7802,9 +7892,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Constant.t) = -# 4124 "parsing/parser.mly" +# 4196 "parsing/parser.mly" ( _1 ) -# 7808 "parsing/parser.ml" +# 7898 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -7834,9 +7924,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (Asttypes.label) = -# 4203 "parsing/parser.mly" +# 4275 "parsing/parser.mly" ( "[]" ) -# 7840 "parsing/parser.ml" +# 7930 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -7866,9 +7956,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (Asttypes.label) = -# 4204 "parsing/parser.mly" +# 4276 "parsing/parser.mly" ( "()" ) -# 7872 "parsing/parser.ml" +# 7962 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -7891,9 +7981,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Asttypes.label) = -# 4205 "parsing/parser.mly" +# 4277 "parsing/parser.mly" ( "false" ) -# 7897 "parsing/parser.ml" +# 7987 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -7916,9 +8006,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Asttypes.label) = -# 4206 "parsing/parser.mly" +# 4278 "parsing/parser.mly" ( "true" ) -# 7922 "parsing/parser.ml" +# 8012 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -7937,17 +8027,17 @@ module Tables = struct MenhirLib.EngineTypes.next = _menhir_stack; } = _menhir_stack in let _1 : ( -# 990 "parsing/parser.mly" +# 1068 "parsing/parser.mly" (string) -# 7943 "parsing/parser.ml" +# 8033 "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) = -# 4209 "parsing/parser.mly" +# 4281 "parsing/parser.mly" ( _1 ) -# 7951 "parsing/parser.ml" +# 8041 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -7984,14 +8074,14 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : (Asttypes.label) = let _1 = -# 4200 "parsing/parser.mly" +# 4272 "parsing/parser.mly" ( "::" ) -# 7990 "parsing/parser.ml" +# 8080 "parsing/parser.ml" in -# 4210 "parsing/parser.mly" +# 4282 "parsing/parser.mly" ( _1 ) -# 7995 "parsing/parser.ml" +# 8085 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -8014,9 +8104,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Asttypes.label) = -# 4211 "parsing/parser.mly" +# 4283 "parsing/parser.mly" ( _1 ) -# 8020 "parsing/parser.ml" +# 8110 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -8039,9 +8129,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Longident.t) = -# 4214 "parsing/parser.mly" +# 4286 "parsing/parser.mly" ( _1 ) -# 8045 "parsing/parser.ml" +# 8135 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -8092,14 +8182,14 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : (Longident.t) = let _3 = -# 4200 "parsing/parser.mly" +# 4272 "parsing/parser.mly" ( "::" ) -# 8098 "parsing/parser.ml" +# 8188 "parsing/parser.ml" in -# 4215 "parsing/parser.mly" +# 4287 "parsing/parser.mly" ( Ldot(_1,_3) ) -# 8103 "parsing/parser.ml" +# 8193 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -8136,14 +8226,14 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : (Longident.t) = let _1 = -# 4200 "parsing/parser.mly" +# 4272 "parsing/parser.mly" ( "::" ) -# 8142 "parsing/parser.ml" +# 8232 "parsing/parser.ml" in -# 4216 "parsing/parser.mly" +# 4288 "parsing/parser.mly" ( Lident _1 ) -# 8147 "parsing/parser.ml" +# 8237 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -8166,9 +8256,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Longident.t) = -# 4217 "parsing/parser.mly" +# 4289 "parsing/parser.mly" ( Lident _1 ) -# 8172 "parsing/parser.ml" +# 8262 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -8205,9 +8295,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : (Parsetree.core_type * Parsetree.core_type) = -# 2362 "parsing/parser.mly" +# 2441 "parsing/parser.mly" ( _1, _3 ) -# 8211 "parsing/parser.ml" +# 8301 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -8234,42 +8324,42 @@ module Tables = struct let xs = let x = let gbl = -# 4334 "parsing/parser.mly" +# 4406 "parsing/parser.mly" ( Nothing ) -# 8240 "parsing/parser.ml" +# 8330 "parsing/parser.ml" in let (_endpos_gbl_, _startpos_gbl_) = (_endpos__0_, _endpos__0_) in let _loc_gbl_ = (_startpos_gbl_, _endpos_gbl_) in -# 3659 "parsing/parser.mly" +# 3726 "parsing/parser.mly" ( mkcty_global_maybe gbl cty (make_loc _loc_gbl_) ) -# 8249 "parsing/parser.ml" +# 8339 "parsing/parser.ml" in -# 1244 "parsing/parser.mly" +# 1323 "parsing/parser.mly" ( [ x ] ) -# 8255 "parsing/parser.ml" +# 8345 "parsing/parser.ml" in # 253 "" ( List.rev xs ) -# 8261 "parsing/parser.ml" +# 8351 "parsing/parser.ml" in -# 1264 "parsing/parser.mly" +# 1343 "parsing/parser.mly" ( xs ) -# 8267 "parsing/parser.ml" +# 8357 "parsing/parser.ml" in -# 3667 "parsing/parser.mly" +# 3734 "parsing/parser.mly" ( Pcstr_tuple tys ) -# 8273 "parsing/parser.ml" +# 8363 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -8303,42 +8393,42 @@ module Tables = struct let xs = let x = let gbl = -# 4335 "parsing/parser.mly" +# 4407 "parsing/parser.mly" ( Global ) -# 8309 "parsing/parser.ml" +# 8399 "parsing/parser.ml" in let (_endpos_gbl_, _startpos_gbl_) = (_endpos__1_, _startpos__1_) in let _loc_gbl_ = (_startpos_gbl_, _endpos_gbl_) in -# 3659 "parsing/parser.mly" +# 3726 "parsing/parser.mly" ( mkcty_global_maybe gbl cty (make_loc _loc_gbl_) ) -# 8318 "parsing/parser.ml" +# 8408 "parsing/parser.ml" in -# 1244 "parsing/parser.mly" +# 1323 "parsing/parser.mly" ( [ x ] ) -# 8324 "parsing/parser.ml" +# 8414 "parsing/parser.ml" in # 253 "" ( List.rev xs ) -# 8330 "parsing/parser.ml" +# 8420 "parsing/parser.ml" in -# 1264 "parsing/parser.mly" +# 1343 "parsing/parser.mly" ( xs ) -# 8336 "parsing/parser.ml" +# 8426 "parsing/parser.ml" in -# 3667 "parsing/parser.mly" +# 3734 "parsing/parser.mly" ( Pcstr_tuple tys ) -# 8342 "parsing/parser.ml" +# 8432 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -8380,42 +8470,42 @@ module Tables = struct let x = let _endpos__0_ = _endpos__2_ in let gbl = -# 4334 "parsing/parser.mly" +# 4406 "parsing/parser.mly" ( Nothing ) -# 8386 "parsing/parser.ml" +# 8476 "parsing/parser.ml" in let (_endpos_gbl_, _startpos_gbl_) = (_endpos__0_, _endpos__0_) in let _loc_gbl_ = (_startpos_gbl_, _endpos_gbl_) in -# 3659 "parsing/parser.mly" +# 3726 "parsing/parser.mly" ( mkcty_global_maybe gbl cty (make_loc _loc_gbl_) ) -# 8395 "parsing/parser.ml" +# 8485 "parsing/parser.ml" in -# 1248 "parsing/parser.mly" +# 1327 "parsing/parser.mly" ( x :: xs ) -# 8401 "parsing/parser.ml" +# 8491 "parsing/parser.ml" in # 253 "" ( List.rev xs ) -# 8407 "parsing/parser.ml" +# 8497 "parsing/parser.ml" in -# 1264 "parsing/parser.mly" +# 1343 "parsing/parser.mly" ( xs ) -# 8413 "parsing/parser.ml" +# 8503 "parsing/parser.ml" in -# 3667 "parsing/parser.mly" +# 3734 "parsing/parser.mly" ( Pcstr_tuple tys ) -# 8419 "parsing/parser.ml" +# 8509 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -8463,42 +8553,42 @@ module Tables = struct let xs = let x = let gbl = -# 4335 "parsing/parser.mly" +# 4407 "parsing/parser.mly" ( Global ) -# 8469 "parsing/parser.ml" +# 8559 "parsing/parser.ml" in let (_endpos_gbl_, _startpos_gbl_) = (_endpos__1_, _startpos__1_) in let _loc_gbl_ = (_startpos_gbl_, _endpos_gbl_) in -# 3659 "parsing/parser.mly" +# 3726 "parsing/parser.mly" ( mkcty_global_maybe gbl cty (make_loc _loc_gbl_) ) -# 8478 "parsing/parser.ml" +# 8568 "parsing/parser.ml" in -# 1248 "parsing/parser.mly" +# 1327 "parsing/parser.mly" ( x :: xs ) -# 8484 "parsing/parser.ml" +# 8574 "parsing/parser.ml" in # 253 "" ( List.rev xs ) -# 8490 "parsing/parser.ml" +# 8580 "parsing/parser.ml" in -# 1264 "parsing/parser.mly" +# 1343 "parsing/parser.mly" ( xs ) -# 8496 "parsing/parser.ml" +# 8586 "parsing/parser.ml" in -# 3667 "parsing/parser.mly" +# 3734 "parsing/parser.mly" ( Pcstr_tuple tys ) -# 8502 "parsing/parser.ml" +# 8592 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -8535,9 +8625,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : (Parsetree.constructor_arguments) = -# 3669 "parsing/parser.mly" +# 3736 "parsing/parser.mly" ( Pcstr_record _2 ) -# 8541 "parsing/parser.ml" +# 8631 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -8560,9 +8650,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Parsetree.constructor_declaration list) = -# 3568 "parsing/parser.mly" +# 3635 "parsing/parser.mly" ( [] ) -# 8566 "parsing/parser.ml" +# 8656 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -8585,14 +8675,14 @@ module Tables = struct let _startpos = _startpos_xs_ in let _endpos = _endpos_xs_ in let _v : (Parsetree.constructor_declaration list) = let cs = -# 1349 "parsing/parser.mly" +# 1428 "parsing/parser.mly" ( List.rev xs ) -# 8591 "parsing/parser.ml" +# 8681 "parsing/parser.ml" in -# 3570 "parsing/parser.mly" +# 3637 "parsing/parser.mly" ( cs ) -# 8596 "parsing/parser.ml" +# 8686 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -8615,14 +8705,14 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Parsetree.core_type) = let _1 = -# 3839 "parsing/parser.mly" +# 3906 "parsing/parser.mly" ( _1 ) -# 8621 "parsing/parser.ml" +# 8711 "parsing/parser.ml" in -# 3829 "parsing/parser.mly" +# 3896 "parsing/parser.mly" ( _1 ) -# 8626 "parsing/parser.ml" +# 8716 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -8652,9 +8742,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (Parsetree.core_type) = -# 3831 "parsing/parser.mly" +# 3898 "parsing/parser.mly" ( Typ.attr _1 _2 ) -# 8658 "parsing/parser.ml" +# 8748 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -8677,9 +8767,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Asttypes.direction_flag) = -# 4313 "parsing/parser.mly" +# 4385 "parsing/parser.mly" ( Upto ) -# 8683 "parsing/parser.ml" +# 8773 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -8702,9 +8792,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Asttypes.direction_flag) = -# 4314 "parsing/parser.mly" +# 4386 "parsing/parser.mly" ( Downto ) -# 8708 "parsing/parser.ml" +# 8798 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -8727,9 +8817,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Parsetree.expression) = -# 2561 "parsing/parser.mly" +# 2640 "parsing/parser.mly" ( _1 ) -# 8733 "parsing/parser.ml" +# 8823 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -8807,9 +8897,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1123 "parsing/parser.mly" +# 1202 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 8813 "parsing/parser.ml" +# 8903 "parsing/parser.ml" in let _3 = @@ -8817,21 +8907,21 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4476 "parsing/parser.mly" +# 4548 "parsing/parser.mly" ( _1 ) -# 8823 "parsing/parser.ml" +# 8913 "parsing/parser.ml" in -# 4489 "parsing/parser.mly" +# 4561 "parsing/parser.mly" ( _1, _2 ) -# 8829 "parsing/parser.ml" +# 8919 "parsing/parser.ml" in -# 2604 "parsing/parser.mly" +# 2683 "parsing/parser.mly" ( Pexp_letmodule(_4, _5, _7), _3 ) -# 8835 "parsing/parser.ml" +# 8925 "parsing/parser.ml" in let _endpos__1_ = _endpos__7_ in @@ -8839,10 +8929,10 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2563 "parsing/parser.mly" +# 2642 "parsing/parser.mly" ( let desc, attrs = _1 in mkexp_attrs ~loc:_sloc desc attrs ) -# 8846 "parsing/parser.ml" +# 8936 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -8927,9 +9017,9 @@ module Tables = struct let _3 = let _1 = _1_inlined1 in -# 4476 "parsing/parser.mly" +# 4548 "parsing/parser.mly" ( _1 ) -# 8933 "parsing/parser.ml" +# 9023 "parsing/parser.ml" in let _endpos__3_ = _endpos__1_inlined1_ in @@ -8938,23 +9028,23 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1123 "parsing/parser.mly" +# 1202 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 8944 "parsing/parser.ml" +# 9034 "parsing/parser.ml" in let _endpos = _endpos__3_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 3636 "parsing/parser.mly" +# 3703 "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" +# 9048 "parsing/parser.ml" in let _3 = @@ -8962,21 +9052,21 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4476 "parsing/parser.mly" +# 4548 "parsing/parser.mly" ( _1 ) -# 8968 "parsing/parser.ml" +# 9058 "parsing/parser.ml" in -# 4489 "parsing/parser.mly" +# 4561 "parsing/parser.mly" ( _1, _2 ) -# 8974 "parsing/parser.ml" +# 9064 "parsing/parser.ml" in -# 2606 "parsing/parser.mly" +# 2685 "parsing/parser.mly" ( Pexp_letexception(_4, _6), _3 ) -# 8980 "parsing/parser.ml" +# 9070 "parsing/parser.ml" in let _endpos__1_ = _endpos__6_ in @@ -8984,10 +9074,10 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2563 "parsing/parser.mly" +# 2642 "parsing/parser.mly" ( let desc, attrs = _1 in mkexp_attrs ~loc:_sloc desc attrs ) -# 8991 "parsing/parser.ml" +# 9081 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -9057,28 +9147,28 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4476 "parsing/parser.mly" +# 4548 "parsing/parser.mly" ( _1 ) -# 9063 "parsing/parser.ml" +# 9153 "parsing/parser.ml" in -# 4489 "parsing/parser.mly" +# 4561 "parsing/parser.mly" ( _1, _2 ) -# 9069 "parsing/parser.ml" +# 9159 "parsing/parser.ml" in let _3 = -# 4377 "parsing/parser.mly" +# 4449 "parsing/parser.mly" ( Fresh ) -# 9075 "parsing/parser.ml" +# 9165 "parsing/parser.ml" in -# 2608 "parsing/parser.mly" +# 2687 "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 ) -# 9082 "parsing/parser.ml" +# 9172 "parsing/parser.ml" in let _endpos__1_ = _endpos__7_ in @@ -9086,10 +9176,10 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2563 "parsing/parser.mly" +# 2642 "parsing/parser.mly" ( let desc, attrs = _1 in mkexp_attrs ~loc:_sloc desc attrs ) -# 9093 "parsing/parser.ml" +# 9183 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -9166,28 +9256,28 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4476 "parsing/parser.mly" +# 4548 "parsing/parser.mly" ( _1 ) -# 9172 "parsing/parser.ml" +# 9262 "parsing/parser.ml" in -# 4489 "parsing/parser.mly" +# 4561 "parsing/parser.mly" ( _1, _2 ) -# 9178 "parsing/parser.ml" +# 9268 "parsing/parser.ml" in let _3 = -# 4378 "parsing/parser.mly" +# 4450 "parsing/parser.mly" ( Override ) -# 9184 "parsing/parser.ml" +# 9274 "parsing/parser.ml" in -# 2608 "parsing/parser.mly" +# 2687 "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 ) -# 9191 "parsing/parser.ml" +# 9281 "parsing/parser.ml" in let _endpos__1_ = _endpos__7_ in @@ -9195,10 +9285,10 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2563 "parsing/parser.mly" +# 2642 "parsing/parser.mly" ( let desc, attrs = _1 in mkexp_attrs ~loc:_sloc desc attrs ) -# 9202 "parsing/parser.ml" +# 9292 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -9247,18 +9337,18 @@ module Tables = struct let xs = # 253 "" ( List.rev xs ) -# 9251 "parsing/parser.ml" +# 9341 "parsing/parser.ml" in -# 1321 "parsing/parser.mly" +# 1400 "parsing/parser.mly" ( xs ) -# 9256 "parsing/parser.ml" +# 9346 "parsing/parser.ml" in -# 3050 "parsing/parser.mly" +# 3117 "parsing/parser.mly" ( xs ) -# 9262 "parsing/parser.ml" +# 9352 "parsing/parser.ml" in let _2 = @@ -9266,21 +9356,21 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4476 "parsing/parser.mly" +# 4548 "parsing/parser.mly" ( _1 ) -# 9272 "parsing/parser.ml" +# 9362 "parsing/parser.ml" in -# 4489 "parsing/parser.mly" +# 4561 "parsing/parser.mly" ( _1, _2 ) -# 9278 "parsing/parser.ml" +# 9368 "parsing/parser.ml" in -# 2612 "parsing/parser.mly" +# 2691 "parsing/parser.mly" ( Pexp_function _3, _2 ) -# 9284 "parsing/parser.ml" +# 9374 "parsing/parser.ml" in let _endpos__1_ = _endpos_xs_ in @@ -9288,10 +9378,10 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2563 "parsing/parser.mly" +# 2642 "parsing/parser.mly" ( let desc, attrs = _1 in mkexp_attrs ~loc:_sloc desc attrs ) -# 9295 "parsing/parser.ml" +# 9385 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -9347,22 +9437,22 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4476 "parsing/parser.mly" +# 4548 "parsing/parser.mly" ( _1 ) -# 9353 "parsing/parser.ml" +# 9443 "parsing/parser.ml" in -# 4489 "parsing/parser.mly" +# 4561 "parsing/parser.mly" ( _1, _2 ) -# 9359 "parsing/parser.ml" +# 9449 "parsing/parser.ml" in -# 2614 "parsing/parser.mly" +# 2693 "parsing/parser.mly" ( let (l,o,p) = _3 in Pexp_fun(l, o, p, _4), _2 ) -# 9366 "parsing/parser.ml" +# 9456 "parsing/parser.ml" in let _endpos__1_ = _endpos__4_ in @@ -9370,10 +9460,10 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2563 "parsing/parser.mly" +# 2642 "parsing/parser.mly" ( let desc, attrs = _1 in mkexp_attrs ~loc:_sloc desc attrs ) -# 9377 "parsing/parser.ml" +# 9467 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -9436,18 +9526,18 @@ module Tables = struct let xs = # 253 "" ( List.rev xs ) -# 9440 "parsing/parser.ml" +# 9530 "parsing/parser.ml" in -# 1321 "parsing/parser.mly" +# 1400 "parsing/parser.mly" ( xs ) -# 9445 "parsing/parser.ml" +# 9535 "parsing/parser.ml" in -# 3050 "parsing/parser.mly" +# 3117 "parsing/parser.mly" ( xs ) -# 9451 "parsing/parser.ml" +# 9541 "parsing/parser.ml" in let _2 = @@ -9455,21 +9545,21 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4476 "parsing/parser.mly" +# 4548 "parsing/parser.mly" ( _1 ) -# 9461 "parsing/parser.ml" +# 9551 "parsing/parser.ml" in -# 4489 "parsing/parser.mly" +# 4561 "parsing/parser.mly" ( _1, _2 ) -# 9467 "parsing/parser.ml" +# 9557 "parsing/parser.ml" in -# 2617 "parsing/parser.mly" +# 2696 "parsing/parser.mly" ( Pexp_match(_3, _5), _2 ) -# 9473 "parsing/parser.ml" +# 9563 "parsing/parser.ml" in let _endpos__1_ = _endpos_xs_ in @@ -9477,10 +9567,10 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2563 "parsing/parser.mly" +# 2642 "parsing/parser.mly" ( let desc, attrs = _1 in mkexp_attrs ~loc:_sloc desc attrs ) -# 9484 "parsing/parser.ml" +# 9574 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -9543,18 +9633,18 @@ module Tables = struct let xs = # 253 "" ( List.rev xs ) -# 9547 "parsing/parser.ml" +# 9637 "parsing/parser.ml" in -# 1321 "parsing/parser.mly" +# 1400 "parsing/parser.mly" ( xs ) -# 9552 "parsing/parser.ml" +# 9642 "parsing/parser.ml" in -# 3050 "parsing/parser.mly" +# 3117 "parsing/parser.mly" ( xs ) -# 9558 "parsing/parser.ml" +# 9648 "parsing/parser.ml" in let _2 = @@ -9562,21 +9652,21 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4476 "parsing/parser.mly" +# 4548 "parsing/parser.mly" ( _1 ) -# 9568 "parsing/parser.ml" +# 9658 "parsing/parser.ml" in -# 4489 "parsing/parser.mly" +# 4561 "parsing/parser.mly" ( _1, _2 ) -# 9574 "parsing/parser.ml" +# 9664 "parsing/parser.ml" in -# 2619 "parsing/parser.mly" +# 2698 "parsing/parser.mly" ( Pexp_try(_3, _5), _2 ) -# 9580 "parsing/parser.ml" +# 9670 "parsing/parser.ml" in let _endpos__1_ = _endpos_xs_ in @@ -9584,10 +9674,10 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2563 "parsing/parser.mly" +# 2642 "parsing/parser.mly" ( let desc, attrs = _1 in mkexp_attrs ~loc:_sloc desc attrs ) -# 9591 "parsing/parser.ml" +# 9681 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -9650,21 +9740,21 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4476 "parsing/parser.mly" +# 4548 "parsing/parser.mly" ( _1 ) -# 9656 "parsing/parser.ml" +# 9746 "parsing/parser.ml" in -# 4489 "parsing/parser.mly" +# 4561 "parsing/parser.mly" ( _1, _2 ) -# 9662 "parsing/parser.ml" +# 9752 "parsing/parser.ml" in -# 2621 "parsing/parser.mly" +# 2700 "parsing/parser.mly" ( syntax_error() ) -# 9668 "parsing/parser.ml" +# 9758 "parsing/parser.ml" in let _endpos__1_ = _endpos__5_ in @@ -9672,10 +9762,10 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2563 "parsing/parser.mly" +# 2642 "parsing/parser.mly" ( let desc, attrs = _1 in mkexp_attrs ~loc:_sloc desc attrs ) -# 9679 "parsing/parser.ml" +# 9769 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -9752,21 +9842,21 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4476 "parsing/parser.mly" +# 4548 "parsing/parser.mly" ( _1 ) -# 9758 "parsing/parser.ml" +# 9848 "parsing/parser.ml" in -# 4489 "parsing/parser.mly" +# 4561 "parsing/parser.mly" ( _1, _2 ) -# 9764 "parsing/parser.ml" +# 9854 "parsing/parser.ml" in -# 2623 "parsing/parser.mly" +# 2702 "parsing/parser.mly" ( Pexp_ifthenelse(_3, _5, Some _7), _2 ) -# 9770 "parsing/parser.ml" +# 9860 "parsing/parser.ml" in let _endpos__1_ = _endpos__7_ in @@ -9774,10 +9864,10 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2563 "parsing/parser.mly" +# 2642 "parsing/parser.mly" ( let desc, attrs = _1 in mkexp_attrs ~loc:_sloc desc attrs ) -# 9781 "parsing/parser.ml" +# 9871 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -9840,21 +9930,21 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4476 "parsing/parser.mly" +# 4548 "parsing/parser.mly" ( _1 ) -# 9846 "parsing/parser.ml" +# 9936 "parsing/parser.ml" in -# 4489 "parsing/parser.mly" +# 4561 "parsing/parser.mly" ( _1, _2 ) -# 9852 "parsing/parser.ml" +# 9942 "parsing/parser.ml" in -# 2625 "parsing/parser.mly" +# 2704 "parsing/parser.mly" ( Pexp_ifthenelse(_3, _5, None), _2 ) -# 9858 "parsing/parser.ml" +# 9948 "parsing/parser.ml" in let _endpos__1_ = _endpos__5_ in @@ -9862,10 +9952,10 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2563 "parsing/parser.mly" +# 2642 "parsing/parser.mly" ( let desc, attrs = _1 in mkexp_attrs ~loc:_sloc desc attrs ) -# 9869 "parsing/parser.ml" +# 9959 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -9935,21 +10025,21 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4476 "parsing/parser.mly" +# 4548 "parsing/parser.mly" ( _1 ) -# 9941 "parsing/parser.ml" +# 10031 "parsing/parser.ml" in -# 4489 "parsing/parser.mly" +# 4561 "parsing/parser.mly" ( _1, _2 ) -# 9947 "parsing/parser.ml" +# 10037 "parsing/parser.ml" in -# 2627 "parsing/parser.mly" +# 2706 "parsing/parser.mly" ( Pexp_while(_3, _5), _2 ) -# 9953 "parsing/parser.ml" +# 10043 "parsing/parser.ml" in let _endpos__1_ = _endpos__6_ in @@ -9957,10 +10047,10 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2563 "parsing/parser.mly" +# 2642 "parsing/parser.mly" ( let desc, attrs = _1 in mkexp_attrs ~loc:_sloc desc attrs ) -# 9964 "parsing/parser.ml" +# 10054 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -10058,21 +10148,21 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4476 "parsing/parser.mly" +# 4548 "parsing/parser.mly" ( _1 ) -# 10064 "parsing/parser.ml" +# 10154 "parsing/parser.ml" in -# 4489 "parsing/parser.mly" +# 4561 "parsing/parser.mly" ( _1, _2 ) -# 10070 "parsing/parser.ml" +# 10160 "parsing/parser.ml" in -# 2630 "parsing/parser.mly" +# 2709 "parsing/parser.mly" ( Pexp_for(_3, _5, _7, _6, _9), _2 ) -# 10076 "parsing/parser.ml" +# 10166 "parsing/parser.ml" in let _endpos__1_ = _endpos__10_ in @@ -10080,10 +10170,10 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2563 "parsing/parser.mly" +# 2642 "parsing/parser.mly" ( let desc, attrs = _1 in mkexp_attrs ~loc:_sloc desc attrs ) -# 10087 "parsing/parser.ml" +# 10177 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -10132,21 +10222,21 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4476 "parsing/parser.mly" +# 4548 "parsing/parser.mly" ( _1 ) -# 10138 "parsing/parser.ml" +# 10228 "parsing/parser.ml" in -# 4489 "parsing/parser.mly" +# 4561 "parsing/parser.mly" ( _1, _2 ) -# 10144 "parsing/parser.ml" +# 10234 "parsing/parser.ml" in -# 2632 "parsing/parser.mly" +# 2711 "parsing/parser.mly" ( Pexp_assert _3, _2 ) -# 10150 "parsing/parser.ml" +# 10240 "parsing/parser.ml" in let _endpos__1_ = _endpos__3_ in @@ -10154,10 +10244,10 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2563 "parsing/parser.mly" +# 2642 "parsing/parser.mly" ( let desc, attrs = _1 in mkexp_attrs ~loc:_sloc desc attrs ) -# 10161 "parsing/parser.ml" +# 10251 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -10206,21 +10296,21 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4476 "parsing/parser.mly" +# 4548 "parsing/parser.mly" ( _1 ) -# 10212 "parsing/parser.ml" +# 10302 "parsing/parser.ml" in -# 4489 "parsing/parser.mly" +# 4561 "parsing/parser.mly" ( _1, _2 ) -# 10218 "parsing/parser.ml" +# 10308 "parsing/parser.ml" in -# 2634 "parsing/parser.mly" +# 2713 "parsing/parser.mly" ( Pexp_lazy _3, _2 ) -# 10224 "parsing/parser.ml" +# 10314 "parsing/parser.ml" in let _endpos__1_ = _endpos__3_ in @@ -10228,10 +10318,10 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2563 "parsing/parser.mly" +# 2642 "parsing/parser.mly" ( let desc, attrs = _1 in mkexp_attrs ~loc:_sloc desc attrs ) -# 10235 "parsing/parser.ml" +# 10325 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -10263,10 +10353,10 @@ module Tables = struct let _v : (Parsetree.expression) = let _1 = let _loc__1_ = (_startpos__1_, _endpos__1_) in -# 2636 "parsing/parser.mly" +# 2715 "parsing/parser.mly" ( let desc, attrs = mkuminus ~oploc:_loc__1_ _1 _2 in desc, (None, attrs) ) -# 10270 "parsing/parser.ml" +# 10360 "parsing/parser.ml" in let _endpos__1_ = _endpos__2_ in @@ -10274,10 +10364,10 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2563 "parsing/parser.mly" +# 2642 "parsing/parser.mly" ( let desc, attrs = _1 in mkexp_attrs ~loc:_sloc desc attrs ) -# 10281 "parsing/parser.ml" +# 10371 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -10309,10 +10399,10 @@ module Tables = struct let _v : (Parsetree.expression) = let _1 = let _loc__1_ = (_startpos__1_, _endpos__1_) in -# 2639 "parsing/parser.mly" +# 2718 "parsing/parser.mly" ( let desc, attrs = mkuplus ~oploc:_loc__1_ _1 _2 in desc, (None, attrs) ) -# 10316 "parsing/parser.ml" +# 10406 "parsing/parser.ml" in let _endpos__1_ = _endpos__2_ in @@ -10320,10 +10410,10 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2563 "parsing/parser.mly" +# 2642 "parsing/parser.mly" ( let desc, attrs = _1 in mkexp_attrs ~loc:_sloc desc attrs ) -# 10327 "parsing/parser.ml" +# 10417 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -10358,18 +10448,18 @@ module Tables = struct let xs = # 253 "" ( List.rev xs ) -# 10362 "parsing/parser.ml" +# 10452 "parsing/parser.ml" in -# 1228 "parsing/parser.mly" +# 1307 "parsing/parser.mly" ( xs ) -# 10367 "parsing/parser.ml" +# 10457 "parsing/parser.ml" in -# 2644 "parsing/parser.mly" +# 2723 "parsing/parser.mly" ( Pexp_apply(_1, _2) ) -# 10373 "parsing/parser.ml" +# 10463 "parsing/parser.ml" in let _endpos__1_ = _endpos_xs_ in @@ -10377,15 +10467,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1156 "parsing/parser.mly" +# 1235 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) -# 10383 "parsing/parser.ml" +# 10473 "parsing/parser.ml" in -# 2566 "parsing/parser.mly" +# 2645 "parsing/parser.mly" ( _1 ) -# 10389 "parsing/parser.ml" +# 10479 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -10414,24 +10504,24 @@ module Tables = struct let xs = # 253 "" ( List.rev xs ) -# 10418 "parsing/parser.ml" +# 10508 "parsing/parser.ml" in -# 1288 "parsing/parser.mly" +# 1367 "parsing/parser.mly" ( xs ) -# 10423 "parsing/parser.ml" +# 10513 "parsing/parser.ml" in -# 3079 "parsing/parser.mly" +# 3146 "parsing/parser.mly" ( es ) -# 10429 "parsing/parser.ml" +# 10519 "parsing/parser.ml" in -# 2646 "parsing/parser.mly" +# 2725 "parsing/parser.mly" ( Pexp_tuple(_1) ) -# 10435 "parsing/parser.ml" +# 10525 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_xs_, _startpos_xs_) in @@ -10439,15 +10529,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1156 "parsing/parser.mly" +# 1235 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) -# 10445 "parsing/parser.ml" +# 10535 "parsing/parser.ml" in -# 2566 "parsing/parser.mly" +# 2645 "parsing/parser.mly" ( _1 ) -# 10451 "parsing/parser.ml" +# 10541 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -10483,15 +10573,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1123 "parsing/parser.mly" +# 1202 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 10489 "parsing/parser.ml" +# 10579 "parsing/parser.ml" in -# 2648 "parsing/parser.mly" +# 2727 "parsing/parser.mly" ( Pexp_construct(_1, Some _2) ) -# 10495 "parsing/parser.ml" +# 10585 "parsing/parser.ml" in let _endpos__1_ = _endpos__2_ in @@ -10499,15 +10589,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1156 "parsing/parser.mly" +# 1235 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) -# 10505 "parsing/parser.ml" +# 10595 "parsing/parser.ml" in -# 2566 "parsing/parser.mly" +# 2645 "parsing/parser.mly" ( _1 ) -# 10511 "parsing/parser.ml" +# 10601 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -10538,24 +10628,24 @@ module Tables = struct let _endpos = _endpos__2_ in let _v : (Parsetree.expression) = let _1 = let _1 = -# 2650 "parsing/parser.mly" +# 2729 "parsing/parser.mly" ( Pexp_variant(_1, Some _2) ) -# 10544 "parsing/parser.ml" +# 10634 "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 -# 1156 "parsing/parser.mly" +# 1235 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) -# 10553 "parsing/parser.ml" +# 10643 "parsing/parser.ml" in -# 2566 "parsing/parser.mly" +# 2645 "parsing/parser.mly" ( _1 ) -# 10559 "parsing/parser.ml" +# 10649 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -10587,9 +10677,9 @@ module Tables = struct } = _menhir_stack in let e2 : (Parsetree.expression) = Obj.magic e2 in let op : ( -# 911 "parsing/parser.mly" +# 988 "parsing/parser.mly" (string) -# 10593 "parsing/parser.ml" +# 10683 "parsing/parser.ml" ) = Obj.magic op in let e1 : (Parsetree.expression) = Obj.magic e1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in @@ -10599,24 +10689,24 @@ module Tables = struct let _1 = let op = let _1 = -# 4173 "parsing/parser.mly" +# 4245 "parsing/parser.mly" ( op ) -# 10605 "parsing/parser.ml" +# 10695 "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 -# 1150 "parsing/parser.mly" +# 1229 "parsing/parser.mly" ( mkoperator ~loc:_sloc _1 ) -# 10614 "parsing/parser.ml" +# 10704 "parsing/parser.ml" in -# 2652 "parsing/parser.mly" +# 2731 "parsing/parser.mly" ( mkinfix e1 op e2 ) -# 10620 "parsing/parser.ml" +# 10710 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_e2_, _startpos_e1_) in @@ -10624,15 +10714,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1156 "parsing/parser.mly" +# 1235 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) -# 10630 "parsing/parser.ml" +# 10720 "parsing/parser.ml" in -# 2566 "parsing/parser.mly" +# 2645 "parsing/parser.mly" ( _1 ) -# 10636 "parsing/parser.ml" +# 10726 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -10664,9 +10754,9 @@ module Tables = struct } = _menhir_stack in let e2 : (Parsetree.expression) = Obj.magic e2 in let op : ( -# 912 "parsing/parser.mly" +# 989 "parsing/parser.mly" (string) -# 10670 "parsing/parser.ml" +# 10760 "parsing/parser.ml" ) = Obj.magic op in let e1 : (Parsetree.expression) = Obj.magic e1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in @@ -10676,24 +10766,24 @@ module Tables = struct let _1 = let op = let _1 = -# 4174 "parsing/parser.mly" +# 4246 "parsing/parser.mly" ( op ) -# 10682 "parsing/parser.ml" +# 10772 "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 -# 1150 "parsing/parser.mly" +# 1229 "parsing/parser.mly" ( mkoperator ~loc:_sloc _1 ) -# 10691 "parsing/parser.ml" +# 10781 "parsing/parser.ml" in -# 2652 "parsing/parser.mly" +# 2731 "parsing/parser.mly" ( mkinfix e1 op e2 ) -# 10697 "parsing/parser.ml" +# 10787 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_e2_, _startpos_e1_) in @@ -10701,15 +10791,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1156 "parsing/parser.mly" +# 1235 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) -# 10707 "parsing/parser.ml" +# 10797 "parsing/parser.ml" in -# 2566 "parsing/parser.mly" +# 2645 "parsing/parser.mly" ( _1 ) -# 10713 "parsing/parser.ml" +# 10803 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -10741,9 +10831,9 @@ module Tables = struct } = _menhir_stack in let e2 : (Parsetree.expression) = Obj.magic e2 in let op : ( -# 913 "parsing/parser.mly" +# 990 "parsing/parser.mly" (string) -# 10747 "parsing/parser.ml" +# 10837 "parsing/parser.ml" ) = Obj.magic op in let e1 : (Parsetree.expression) = Obj.magic e1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in @@ -10753,24 +10843,24 @@ module Tables = struct let _1 = let op = let _1 = -# 4175 "parsing/parser.mly" +# 4247 "parsing/parser.mly" ( op ) -# 10759 "parsing/parser.ml" +# 10849 "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 -# 1150 "parsing/parser.mly" +# 1229 "parsing/parser.mly" ( mkoperator ~loc:_sloc _1 ) -# 10768 "parsing/parser.ml" +# 10858 "parsing/parser.ml" in -# 2652 "parsing/parser.mly" +# 2731 "parsing/parser.mly" ( mkinfix e1 op e2 ) -# 10774 "parsing/parser.ml" +# 10864 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_e2_, _startpos_e1_) in @@ -10778,15 +10868,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1156 "parsing/parser.mly" +# 1235 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) -# 10784 "parsing/parser.ml" +# 10874 "parsing/parser.ml" in -# 2566 "parsing/parser.mly" +# 2645 "parsing/parser.mly" ( _1 ) -# 10790 "parsing/parser.ml" +# 10880 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -10818,9 +10908,9 @@ module Tables = struct } = _menhir_stack in let e2 : (Parsetree.expression) = Obj.magic e2 in let op : ( -# 914 "parsing/parser.mly" +# 991 "parsing/parser.mly" (string) -# 10824 "parsing/parser.ml" +# 10914 "parsing/parser.ml" ) = Obj.magic op in let e1 : (Parsetree.expression) = Obj.magic e1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in @@ -10830,24 +10920,24 @@ module Tables = struct let _1 = let op = let _1 = -# 4176 "parsing/parser.mly" +# 4248 "parsing/parser.mly" ( op ) -# 10836 "parsing/parser.ml" +# 10926 "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 -# 1150 "parsing/parser.mly" +# 1229 "parsing/parser.mly" ( mkoperator ~loc:_sloc _1 ) -# 10845 "parsing/parser.ml" +# 10935 "parsing/parser.ml" in -# 2652 "parsing/parser.mly" +# 2731 "parsing/parser.mly" ( mkinfix e1 op e2 ) -# 10851 "parsing/parser.ml" +# 10941 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_e2_, _startpos_e1_) in @@ -10855,15 +10945,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1156 "parsing/parser.mly" +# 1235 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) -# 10861 "parsing/parser.ml" +# 10951 "parsing/parser.ml" in -# 2566 "parsing/parser.mly" +# 2645 "parsing/parser.mly" ( _1 ) -# 10867 "parsing/parser.ml" +# 10957 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -10895,9 +10985,9 @@ module Tables = struct } = _menhir_stack in let e2 : (Parsetree.expression) = Obj.magic e2 in let op : ( -# 915 "parsing/parser.mly" +# 992 "parsing/parser.mly" (string) -# 10901 "parsing/parser.ml" +# 10991 "parsing/parser.ml" ) = Obj.magic op in let e1 : (Parsetree.expression) = Obj.magic e1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in @@ -10907,24 +10997,24 @@ module Tables = struct let _1 = let op = let _1 = -# 4177 "parsing/parser.mly" +# 4249 "parsing/parser.mly" ( op ) -# 10913 "parsing/parser.ml" +# 11003 "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 -# 1150 "parsing/parser.mly" +# 1229 "parsing/parser.mly" ( mkoperator ~loc:_sloc _1 ) -# 10922 "parsing/parser.ml" +# 11012 "parsing/parser.ml" in -# 2652 "parsing/parser.mly" +# 2731 "parsing/parser.mly" ( mkinfix e1 op e2 ) -# 10928 "parsing/parser.ml" +# 11018 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_e2_, _startpos_e1_) in @@ -10932,15 +11022,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1156 "parsing/parser.mly" +# 1235 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) -# 10938 "parsing/parser.ml" +# 11028 "parsing/parser.ml" in -# 2566 "parsing/parser.mly" +# 2645 "parsing/parser.mly" ( _1 ) -# 10944 "parsing/parser.ml" +# 11034 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -10980,23 +11070,23 @@ module Tables = struct let _1 = let op = let _1 = -# 4178 "parsing/parser.mly" +# 4250 "parsing/parser.mly" ("+") -# 10986 "parsing/parser.ml" +# 11076 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1150 "parsing/parser.mly" +# 1229 "parsing/parser.mly" ( mkoperator ~loc:_sloc _1 ) -# 10994 "parsing/parser.ml" +# 11084 "parsing/parser.ml" in -# 2652 "parsing/parser.mly" +# 2731 "parsing/parser.mly" ( mkinfix e1 op e2 ) -# 11000 "parsing/parser.ml" +# 11090 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_e2_, _startpos_e1_) in @@ -11004,15 +11094,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1156 "parsing/parser.mly" +# 1235 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) -# 11010 "parsing/parser.ml" +# 11100 "parsing/parser.ml" in -# 2566 "parsing/parser.mly" +# 2645 "parsing/parser.mly" ( _1 ) -# 11016 "parsing/parser.ml" +# 11106 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -11052,23 +11142,23 @@ module Tables = struct let _1 = let op = let _1 = -# 4179 "parsing/parser.mly" +# 4251 "parsing/parser.mly" ("+.") -# 11058 "parsing/parser.ml" +# 11148 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1150 "parsing/parser.mly" +# 1229 "parsing/parser.mly" ( mkoperator ~loc:_sloc _1 ) -# 11066 "parsing/parser.ml" +# 11156 "parsing/parser.ml" in -# 2652 "parsing/parser.mly" +# 2731 "parsing/parser.mly" ( mkinfix e1 op e2 ) -# 11072 "parsing/parser.ml" +# 11162 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_e2_, _startpos_e1_) in @@ -11076,15 +11166,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1156 "parsing/parser.mly" +# 1235 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) -# 11082 "parsing/parser.ml" +# 11172 "parsing/parser.ml" in -# 2566 "parsing/parser.mly" +# 2645 "parsing/parser.mly" ( _1 ) -# 11088 "parsing/parser.ml" +# 11178 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -11124,23 +11214,23 @@ module Tables = struct let _1 = let op = let _1 = -# 4180 "parsing/parser.mly" +# 4252 "parsing/parser.mly" ("+=") -# 11130 "parsing/parser.ml" +# 11220 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1150 "parsing/parser.mly" +# 1229 "parsing/parser.mly" ( mkoperator ~loc:_sloc _1 ) -# 11138 "parsing/parser.ml" +# 11228 "parsing/parser.ml" in -# 2652 "parsing/parser.mly" +# 2731 "parsing/parser.mly" ( mkinfix e1 op e2 ) -# 11144 "parsing/parser.ml" +# 11234 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_e2_, _startpos_e1_) in @@ -11148,15 +11238,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1156 "parsing/parser.mly" +# 1235 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) -# 11154 "parsing/parser.ml" +# 11244 "parsing/parser.ml" in -# 2566 "parsing/parser.mly" +# 2645 "parsing/parser.mly" ( _1 ) -# 11160 "parsing/parser.ml" +# 11250 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -11196,23 +11286,23 @@ module Tables = struct let _1 = let op = let _1 = -# 4181 "parsing/parser.mly" +# 4253 "parsing/parser.mly" ("-") -# 11202 "parsing/parser.ml" +# 11292 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1150 "parsing/parser.mly" +# 1229 "parsing/parser.mly" ( mkoperator ~loc:_sloc _1 ) -# 11210 "parsing/parser.ml" +# 11300 "parsing/parser.ml" in -# 2652 "parsing/parser.mly" +# 2731 "parsing/parser.mly" ( mkinfix e1 op e2 ) -# 11216 "parsing/parser.ml" +# 11306 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_e2_, _startpos_e1_) in @@ -11220,15 +11310,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1156 "parsing/parser.mly" +# 1235 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) -# 11226 "parsing/parser.ml" +# 11316 "parsing/parser.ml" in -# 2566 "parsing/parser.mly" +# 2645 "parsing/parser.mly" ( _1 ) -# 11232 "parsing/parser.ml" +# 11322 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -11268,23 +11358,23 @@ module Tables = struct let _1 = let op = let _1 = -# 4182 "parsing/parser.mly" +# 4254 "parsing/parser.mly" ("-.") -# 11274 "parsing/parser.ml" +# 11364 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1150 "parsing/parser.mly" +# 1229 "parsing/parser.mly" ( mkoperator ~loc:_sloc _1 ) -# 11282 "parsing/parser.ml" +# 11372 "parsing/parser.ml" in -# 2652 "parsing/parser.mly" +# 2731 "parsing/parser.mly" ( mkinfix e1 op e2 ) -# 11288 "parsing/parser.ml" +# 11378 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_e2_, _startpos_e1_) in @@ -11292,15 +11382,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1156 "parsing/parser.mly" +# 1235 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) -# 11298 "parsing/parser.ml" +# 11388 "parsing/parser.ml" in -# 2566 "parsing/parser.mly" +# 2645 "parsing/parser.mly" ( _1 ) -# 11304 "parsing/parser.ml" +# 11394 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -11340,23 +11430,23 @@ module Tables = struct let _1 = let op = let _1 = -# 4183 "parsing/parser.mly" +# 4255 "parsing/parser.mly" ("*") -# 11346 "parsing/parser.ml" +# 11436 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1150 "parsing/parser.mly" +# 1229 "parsing/parser.mly" ( mkoperator ~loc:_sloc _1 ) -# 11354 "parsing/parser.ml" +# 11444 "parsing/parser.ml" in -# 2652 "parsing/parser.mly" +# 2731 "parsing/parser.mly" ( mkinfix e1 op e2 ) -# 11360 "parsing/parser.ml" +# 11450 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_e2_, _startpos_e1_) in @@ -11364,15 +11454,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1156 "parsing/parser.mly" +# 1235 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) -# 11370 "parsing/parser.ml" +# 11460 "parsing/parser.ml" in -# 2566 "parsing/parser.mly" +# 2645 "parsing/parser.mly" ( _1 ) -# 11376 "parsing/parser.ml" +# 11466 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -11412,23 +11502,23 @@ module Tables = struct let _1 = let op = let _1 = -# 4184 "parsing/parser.mly" +# 4256 "parsing/parser.mly" ("%") -# 11418 "parsing/parser.ml" +# 11508 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1150 "parsing/parser.mly" +# 1229 "parsing/parser.mly" ( mkoperator ~loc:_sloc _1 ) -# 11426 "parsing/parser.ml" +# 11516 "parsing/parser.ml" in -# 2652 "parsing/parser.mly" +# 2731 "parsing/parser.mly" ( mkinfix e1 op e2 ) -# 11432 "parsing/parser.ml" +# 11522 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_e2_, _startpos_e1_) in @@ -11436,15 +11526,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1156 "parsing/parser.mly" +# 1235 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) -# 11442 "parsing/parser.ml" +# 11532 "parsing/parser.ml" in -# 2566 "parsing/parser.mly" +# 2645 "parsing/parser.mly" ( _1 ) -# 11448 "parsing/parser.ml" +# 11538 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -11484,23 +11574,23 @@ module Tables = struct let _1 = let op = let _1 = -# 4185 "parsing/parser.mly" +# 4257 "parsing/parser.mly" ("=") -# 11490 "parsing/parser.ml" +# 11580 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1150 "parsing/parser.mly" +# 1229 "parsing/parser.mly" ( mkoperator ~loc:_sloc _1 ) -# 11498 "parsing/parser.ml" +# 11588 "parsing/parser.ml" in -# 2652 "parsing/parser.mly" +# 2731 "parsing/parser.mly" ( mkinfix e1 op e2 ) -# 11504 "parsing/parser.ml" +# 11594 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_e2_, _startpos_e1_) in @@ -11508,15 +11598,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1156 "parsing/parser.mly" +# 1235 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) -# 11514 "parsing/parser.ml" +# 11604 "parsing/parser.ml" in -# 2566 "parsing/parser.mly" +# 2645 "parsing/parser.mly" ( _1 ) -# 11520 "parsing/parser.ml" +# 11610 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -11556,23 +11646,23 @@ module Tables = struct let _1 = let op = let _1 = -# 4186 "parsing/parser.mly" +# 4258 "parsing/parser.mly" ("<") -# 11562 "parsing/parser.ml" +# 11652 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1150 "parsing/parser.mly" +# 1229 "parsing/parser.mly" ( mkoperator ~loc:_sloc _1 ) -# 11570 "parsing/parser.ml" +# 11660 "parsing/parser.ml" in -# 2652 "parsing/parser.mly" +# 2731 "parsing/parser.mly" ( mkinfix e1 op e2 ) -# 11576 "parsing/parser.ml" +# 11666 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_e2_, _startpos_e1_) in @@ -11580,15 +11670,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1156 "parsing/parser.mly" +# 1235 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) -# 11586 "parsing/parser.ml" +# 11676 "parsing/parser.ml" in -# 2566 "parsing/parser.mly" +# 2645 "parsing/parser.mly" ( _1 ) -# 11592 "parsing/parser.ml" +# 11682 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -11628,23 +11718,23 @@ module Tables = struct let _1 = let op = let _1 = -# 4187 "parsing/parser.mly" +# 4259 "parsing/parser.mly" (">") -# 11634 "parsing/parser.ml" +# 11724 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1150 "parsing/parser.mly" +# 1229 "parsing/parser.mly" ( mkoperator ~loc:_sloc _1 ) -# 11642 "parsing/parser.ml" +# 11732 "parsing/parser.ml" in -# 2652 "parsing/parser.mly" +# 2731 "parsing/parser.mly" ( mkinfix e1 op e2 ) -# 11648 "parsing/parser.ml" +# 11738 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_e2_, _startpos_e1_) in @@ -11652,15 +11742,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1156 "parsing/parser.mly" +# 1235 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) -# 11658 "parsing/parser.ml" +# 11748 "parsing/parser.ml" in -# 2566 "parsing/parser.mly" +# 2645 "parsing/parser.mly" ( _1 ) -# 11664 "parsing/parser.ml" +# 11754 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -11700,23 +11790,23 @@ module Tables = struct let _1 = let op = let _1 = -# 4188 "parsing/parser.mly" +# 4260 "parsing/parser.mly" ("or") -# 11706 "parsing/parser.ml" +# 11796 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1150 "parsing/parser.mly" +# 1229 "parsing/parser.mly" ( mkoperator ~loc:_sloc _1 ) -# 11714 "parsing/parser.ml" +# 11804 "parsing/parser.ml" in -# 2652 "parsing/parser.mly" +# 2731 "parsing/parser.mly" ( mkinfix e1 op e2 ) -# 11720 "parsing/parser.ml" +# 11810 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_e2_, _startpos_e1_) in @@ -11724,15 +11814,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1156 "parsing/parser.mly" +# 1235 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) -# 11730 "parsing/parser.ml" +# 11820 "parsing/parser.ml" in -# 2566 "parsing/parser.mly" +# 2645 "parsing/parser.mly" ( _1 ) -# 11736 "parsing/parser.ml" +# 11826 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -11772,23 +11862,23 @@ module Tables = struct let _1 = let op = let _1 = -# 4189 "parsing/parser.mly" +# 4261 "parsing/parser.mly" ("||") -# 11778 "parsing/parser.ml" +# 11868 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1150 "parsing/parser.mly" +# 1229 "parsing/parser.mly" ( mkoperator ~loc:_sloc _1 ) -# 11786 "parsing/parser.ml" +# 11876 "parsing/parser.ml" in -# 2652 "parsing/parser.mly" +# 2731 "parsing/parser.mly" ( mkinfix e1 op e2 ) -# 11792 "parsing/parser.ml" +# 11882 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_e2_, _startpos_e1_) in @@ -11796,15 +11886,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1156 "parsing/parser.mly" +# 1235 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) -# 11802 "parsing/parser.ml" +# 11892 "parsing/parser.ml" in -# 2566 "parsing/parser.mly" +# 2645 "parsing/parser.mly" ( _1 ) -# 11808 "parsing/parser.ml" +# 11898 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -11844,23 +11934,23 @@ module Tables = struct let _1 = let op = let _1 = -# 4190 "parsing/parser.mly" +# 4262 "parsing/parser.mly" ("&") -# 11850 "parsing/parser.ml" +# 11940 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1150 "parsing/parser.mly" +# 1229 "parsing/parser.mly" ( mkoperator ~loc:_sloc _1 ) -# 11858 "parsing/parser.ml" +# 11948 "parsing/parser.ml" in -# 2652 "parsing/parser.mly" +# 2731 "parsing/parser.mly" ( mkinfix e1 op e2 ) -# 11864 "parsing/parser.ml" +# 11954 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_e2_, _startpos_e1_) in @@ -11868,15 +11958,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1156 "parsing/parser.mly" +# 1235 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) -# 11874 "parsing/parser.ml" +# 11964 "parsing/parser.ml" in -# 2566 "parsing/parser.mly" +# 2645 "parsing/parser.mly" ( _1 ) -# 11880 "parsing/parser.ml" +# 11970 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -11916,23 +12006,23 @@ module Tables = struct let _1 = let op = let _1 = -# 4191 "parsing/parser.mly" +# 4263 "parsing/parser.mly" ("&&") -# 11922 "parsing/parser.ml" +# 12012 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1150 "parsing/parser.mly" +# 1229 "parsing/parser.mly" ( mkoperator ~loc:_sloc _1 ) -# 11930 "parsing/parser.ml" +# 12020 "parsing/parser.ml" in -# 2652 "parsing/parser.mly" +# 2731 "parsing/parser.mly" ( mkinfix e1 op e2 ) -# 11936 "parsing/parser.ml" +# 12026 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_e2_, _startpos_e1_) in @@ -11940,15 +12030,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1156 "parsing/parser.mly" +# 1235 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) -# 11946 "parsing/parser.ml" +# 12036 "parsing/parser.ml" in -# 2566 "parsing/parser.mly" +# 2645 "parsing/parser.mly" ( _1 ) -# 11952 "parsing/parser.ml" +# 12042 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -11988,23 +12078,23 @@ module Tables = struct let _1 = let op = let _1 = -# 4192 "parsing/parser.mly" +# 4264 "parsing/parser.mly" (":=") -# 11994 "parsing/parser.ml" +# 12084 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1150 "parsing/parser.mly" +# 1229 "parsing/parser.mly" ( mkoperator ~loc:_sloc _1 ) -# 12002 "parsing/parser.ml" +# 12092 "parsing/parser.ml" in -# 2652 "parsing/parser.mly" +# 2731 "parsing/parser.mly" ( mkinfix e1 op e2 ) -# 12008 "parsing/parser.ml" +# 12098 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_e2_, _startpos_e1_) in @@ -12012,15 +12102,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1156 "parsing/parser.mly" +# 1235 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) -# 12018 "parsing/parser.ml" +# 12108 "parsing/parser.ml" in -# 2566 "parsing/parser.mly" +# 2645 "parsing/parser.mly" ( _1 ) -# 12024 "parsing/parser.ml" +# 12114 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -12060,9 +12150,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2568 "parsing/parser.mly" +# 2647 "parsing/parser.mly" ( expr_of_let_bindings ~loc:_sloc _1 _3 ) -# 12066 "parsing/parser.ml" +# 12156 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -12102,9 +12192,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 : ( -# 917 "parsing/parser.mly" +# 994 "parsing/parser.mly" (string) -# 12108 "parsing/parser.ml" +# 12198 "parsing/parser.ml" ) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in @@ -12114,9 +12204,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1123 "parsing/parser.mly" +# 1202 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 12120 "parsing/parser.ml" +# 12210 "parsing/parser.ml" in let _startpos_pbop_op_ = _startpos__1_ in @@ -12124,13 +12214,13 @@ module Tables = struct let _symbolstartpos = _startpos_pbop_op_ in let _sloc = (_symbolstartpos, _endpos) in -# 2570 "parsing/parser.mly" +# 2649 "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}) ) -# 12134 "parsing/parser.ml" +# 12224 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -12171,9 +12261,9 @@ module Tables = struct let _loc__2_ = (_startpos__2_, _endpos__2_) in let _sloc = (_symbolstartpos, _endpos) in -# 2576 "parsing/parser.mly" +# 2655 "parsing/parser.mly" ( mkexp_cons ~loc:_sloc _loc__2_ (ghexp ~loc:_sloc (Pexp_tuple[_1;_3])) ) -# 12177 "parsing/parser.ml" +# 12267 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -12206,35 +12296,35 @@ module Tables = struct let _3 : (Parsetree.expression) = Obj.magic _3 in let _2 : unit = Obj.magic _2 in let _1 : ( -# 937 "parsing/parser.mly" +# 1014 "parsing/parser.mly" (string) -# 12212 "parsing/parser.ml" +# 12302 "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 = -# 4106 "parsing/parser.mly" +# 4178 "parsing/parser.mly" ( _1 ) -# 12221 "parsing/parser.ml" +# 12311 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1123 "parsing/parser.mly" +# 1202 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 12229 "parsing/parser.ml" +# 12319 "parsing/parser.ml" in let _endpos = _endpos__3_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2578 "parsing/parser.mly" +# 2657 "parsing/parser.mly" ( mkexp ~loc:_sloc (Pexp_setinstvar(_1, _3)) ) -# 12238 "parsing/parser.ml" +# 12328 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -12290,18 +12380,18 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1123 "parsing/parser.mly" +# 1202 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 12296 "parsing/parser.ml" +# 12386 "parsing/parser.ml" in let _endpos = _endpos__5_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2580 "parsing/parser.mly" +# 2659 "parsing/parser.mly" ( mkexp ~loc:_sloc (Pexp_setfield(_1, _3, _5)) ) -# 12305 "parsing/parser.ml" +# 12395 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -12367,14 +12457,14 @@ module Tables = struct let _endpos = _endpos_v_ in let _v : (Parsetree.expression) = let _1 = let r = -# 2581 "parsing/parser.mly" +# 2660 "parsing/parser.mly" (Some v) -# 12373 "parsing/parser.ml" +# 12463 "parsing/parser.ml" in -# 2541 "parsing/parser.mly" +# 2620 "parsing/parser.mly" ( array, d, Paren, i, r ) -# 12378 "parsing/parser.ml" +# 12468 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_v_, _startpos_array_) in @@ -12382,9 +12472,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2582 "parsing/parser.mly" +# 2661 "parsing/parser.mly" ( mk_indexop_expr builtin_indexing_operators ~loc:_sloc _1 ) -# 12388 "parsing/parser.ml" +# 12478 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -12450,14 +12540,14 @@ module Tables = struct let _endpos = _endpos_v_ in let _v : (Parsetree.expression) = let _1 = let r = -# 2581 "parsing/parser.mly" +# 2660 "parsing/parser.mly" (Some v) -# 12456 "parsing/parser.ml" +# 12546 "parsing/parser.ml" in -# 2543 "parsing/parser.mly" +# 2622 "parsing/parser.mly" ( array, d, Brace, i, r ) -# 12461 "parsing/parser.ml" +# 12551 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_v_, _startpos_array_) in @@ -12465,9 +12555,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2582 "parsing/parser.mly" +# 2661 "parsing/parser.mly" ( mk_indexop_expr builtin_indexing_operators ~loc:_sloc _1 ) -# 12471 "parsing/parser.ml" +# 12561 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -12533,14 +12623,14 @@ module Tables = struct let _endpos = _endpos_v_ in let _v : (Parsetree.expression) = let _1 = let r = -# 2581 "parsing/parser.mly" +# 2660 "parsing/parser.mly" (Some v) -# 12539 "parsing/parser.ml" +# 12629 "parsing/parser.ml" in -# 2545 "parsing/parser.mly" +# 2624 "parsing/parser.mly" ( array, d, Bracket, i, r ) -# 12544 "parsing/parser.ml" +# 12634 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_v_, _startpos_array_) in @@ -12548,9 +12638,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2582 "parsing/parser.mly" +# 2661 "parsing/parser.mly" ( mk_indexop_expr builtin_indexing_operators ~loc:_sloc _1 ) -# 12554 "parsing/parser.ml" +# 12644 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -12610,9 +12700,9 @@ module Tables = struct let es : (Parsetree.expression list) = Obj.magic es in let _3 : unit = Obj.magic _3 in let _2 : ( -# 916 "parsing/parser.mly" +# 993 "parsing/parser.mly" (string) -# 12616 "parsing/parser.ml" +# 12706 "parsing/parser.ml" ) = Obj.magic _2 in let array : (Parsetree.expression) = Obj.magic array in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in @@ -12620,31 +12710,31 @@ module Tables = struct let _endpos = _endpos_v_ in let _v : (Parsetree.expression) = let _1 = let r = -# 2583 "parsing/parser.mly" +# 2662 "parsing/parser.mly" (Some v) -# 12626 "parsing/parser.ml" +# 12716 "parsing/parser.ml" in let i = -# 3119 "parsing/parser.mly" +# 3186 "parsing/parser.mly" ( es ) -# 12631 "parsing/parser.ml" +# 12721 "parsing/parser.ml" in let d = let _1 = # 124 "" ( None ) -# 12637 "parsing/parser.ml" +# 12727 "parsing/parser.ml" in -# 2557 "parsing/parser.mly" +# 2636 "parsing/parser.mly" ( _1, _2 ) -# 12642 "parsing/parser.ml" +# 12732 "parsing/parser.ml" in -# 2541 "parsing/parser.mly" +# 2620 "parsing/parser.mly" ( array, d, Paren, i, r ) -# 12648 "parsing/parser.ml" +# 12738 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_v_, _startpos_array_) in @@ -12652,9 +12742,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2584 "parsing/parser.mly" +# 2663 "parsing/parser.mly" ( mk_indexop_expr user_indexing_operators ~loc:_sloc _1 ) -# 12658 "parsing/parser.ml" +# 12748 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -12726,9 +12816,9 @@ module Tables = struct let es : (Parsetree.expression list) = Obj.magic es in let _3 : unit = Obj.magic _3 in let _2 : ( -# 916 "parsing/parser.mly" +# 993 "parsing/parser.mly" (string) -# 12732 "parsing/parser.ml" +# 12822 "parsing/parser.ml" ) = Obj.magic _2 in let _2_inlined1 : (Longident.t) = Obj.magic _2_inlined1 in let _1 : unit = Obj.magic _1 in @@ -12738,39 +12828,39 @@ module Tables = struct let _endpos = _endpos_v_ in let _v : (Parsetree.expression) = let _1 = let r = -# 2583 "parsing/parser.mly" +# 2662 "parsing/parser.mly" (Some v) -# 12744 "parsing/parser.ml" +# 12834 "parsing/parser.ml" in let i = -# 3119 "parsing/parser.mly" +# 3186 "parsing/parser.mly" ( es ) -# 12749 "parsing/parser.ml" +# 12839 "parsing/parser.ml" in let d = let _1 = let _2 = _2_inlined1 in let x = -# 2557 "parsing/parser.mly" +# 2636 "parsing/parser.mly" (_2) -# 12757 "parsing/parser.ml" +# 12847 "parsing/parser.ml" in # 126 "" ( Some x ) -# 12762 "parsing/parser.ml" +# 12852 "parsing/parser.ml" in -# 2557 "parsing/parser.mly" +# 2636 "parsing/parser.mly" ( _1, _2 ) -# 12768 "parsing/parser.ml" +# 12858 "parsing/parser.ml" in -# 2541 "parsing/parser.mly" +# 2620 "parsing/parser.mly" ( array, d, Paren, i, r ) -# 12774 "parsing/parser.ml" +# 12864 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_v_, _startpos_array_) in @@ -12778,9 +12868,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2584 "parsing/parser.mly" +# 2663 "parsing/parser.mly" ( mk_indexop_expr user_indexing_operators ~loc:_sloc _1 ) -# 12784 "parsing/parser.ml" +# 12874 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -12840,9 +12930,9 @@ module Tables = struct let es : (Parsetree.expression list) = Obj.magic es in let _3 : unit = Obj.magic _3 in let _2 : ( -# 916 "parsing/parser.mly" +# 993 "parsing/parser.mly" (string) -# 12846 "parsing/parser.ml" +# 12936 "parsing/parser.ml" ) = Obj.magic _2 in let array : (Parsetree.expression) = Obj.magic array in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in @@ -12850,31 +12940,31 @@ module Tables = struct let _endpos = _endpos_v_ in let _v : (Parsetree.expression) = let _1 = let r = -# 2583 "parsing/parser.mly" +# 2662 "parsing/parser.mly" (Some v) -# 12856 "parsing/parser.ml" +# 12946 "parsing/parser.ml" in let i = -# 3119 "parsing/parser.mly" +# 3186 "parsing/parser.mly" ( es ) -# 12861 "parsing/parser.ml" +# 12951 "parsing/parser.ml" in let d = let _1 = # 124 "" ( None ) -# 12867 "parsing/parser.ml" +# 12957 "parsing/parser.ml" in -# 2557 "parsing/parser.mly" +# 2636 "parsing/parser.mly" ( _1, _2 ) -# 12872 "parsing/parser.ml" +# 12962 "parsing/parser.ml" in -# 2543 "parsing/parser.mly" +# 2622 "parsing/parser.mly" ( array, d, Brace, i, r ) -# 12878 "parsing/parser.ml" +# 12968 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_v_, _startpos_array_) in @@ -12882,9 +12972,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2584 "parsing/parser.mly" +# 2663 "parsing/parser.mly" ( mk_indexop_expr user_indexing_operators ~loc:_sloc _1 ) -# 12888 "parsing/parser.ml" +# 12978 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -12956,9 +13046,9 @@ module Tables = struct let es : (Parsetree.expression list) = Obj.magic es in let _3 : unit = Obj.magic _3 in let _2 : ( -# 916 "parsing/parser.mly" +# 993 "parsing/parser.mly" (string) -# 12962 "parsing/parser.ml" +# 13052 "parsing/parser.ml" ) = Obj.magic _2 in let _2_inlined1 : (Longident.t) = Obj.magic _2_inlined1 in let _1 : unit = Obj.magic _1 in @@ -12968,39 +13058,39 @@ module Tables = struct let _endpos = _endpos_v_ in let _v : (Parsetree.expression) = let _1 = let r = -# 2583 "parsing/parser.mly" +# 2662 "parsing/parser.mly" (Some v) -# 12974 "parsing/parser.ml" +# 13064 "parsing/parser.ml" in let i = -# 3119 "parsing/parser.mly" +# 3186 "parsing/parser.mly" ( es ) -# 12979 "parsing/parser.ml" +# 13069 "parsing/parser.ml" in let d = let _1 = let _2 = _2_inlined1 in let x = -# 2557 "parsing/parser.mly" +# 2636 "parsing/parser.mly" (_2) -# 12987 "parsing/parser.ml" +# 13077 "parsing/parser.ml" in # 126 "" ( Some x ) -# 12992 "parsing/parser.ml" +# 13082 "parsing/parser.ml" in -# 2557 "parsing/parser.mly" +# 2636 "parsing/parser.mly" ( _1, _2 ) -# 12998 "parsing/parser.ml" +# 13088 "parsing/parser.ml" in -# 2543 "parsing/parser.mly" +# 2622 "parsing/parser.mly" ( array, d, Brace, i, r ) -# 13004 "parsing/parser.ml" +# 13094 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_v_, _startpos_array_) in @@ -13008,9 +13098,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2584 "parsing/parser.mly" +# 2663 "parsing/parser.mly" ( mk_indexop_expr user_indexing_operators ~loc:_sloc _1 ) -# 13014 "parsing/parser.ml" +# 13104 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -13070,9 +13160,9 @@ module Tables = struct let es : (Parsetree.expression list) = Obj.magic es in let _3 : unit = Obj.magic _3 in let _2 : ( -# 916 "parsing/parser.mly" +# 993 "parsing/parser.mly" (string) -# 13076 "parsing/parser.ml" +# 13166 "parsing/parser.ml" ) = Obj.magic _2 in let array : (Parsetree.expression) = Obj.magic array in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in @@ -13080,31 +13170,31 @@ module Tables = struct let _endpos = _endpos_v_ in let _v : (Parsetree.expression) = let _1 = let r = -# 2583 "parsing/parser.mly" +# 2662 "parsing/parser.mly" (Some v) -# 13086 "parsing/parser.ml" +# 13176 "parsing/parser.ml" in let i = -# 3119 "parsing/parser.mly" +# 3186 "parsing/parser.mly" ( es ) -# 13091 "parsing/parser.ml" +# 13181 "parsing/parser.ml" in let d = let _1 = # 124 "" ( None ) -# 13097 "parsing/parser.ml" +# 13187 "parsing/parser.ml" in -# 2557 "parsing/parser.mly" +# 2636 "parsing/parser.mly" ( _1, _2 ) -# 13102 "parsing/parser.ml" +# 13192 "parsing/parser.ml" in -# 2545 "parsing/parser.mly" +# 2624 "parsing/parser.mly" ( array, d, Bracket, i, r ) -# 13108 "parsing/parser.ml" +# 13198 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_v_, _startpos_array_) in @@ -13112,9 +13202,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2584 "parsing/parser.mly" +# 2663 "parsing/parser.mly" ( mk_indexop_expr user_indexing_operators ~loc:_sloc _1 ) -# 13118 "parsing/parser.ml" +# 13208 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -13186,9 +13276,9 @@ module Tables = struct let es : (Parsetree.expression list) = Obj.magic es in let _3 : unit = Obj.magic _3 in let _2 : ( -# 916 "parsing/parser.mly" +# 993 "parsing/parser.mly" (string) -# 13192 "parsing/parser.ml" +# 13282 "parsing/parser.ml" ) = Obj.magic _2 in let _2_inlined1 : (Longident.t) = Obj.magic _2_inlined1 in let _1 : unit = Obj.magic _1 in @@ -13198,39 +13288,39 @@ module Tables = struct let _endpos = _endpos_v_ in let _v : (Parsetree.expression) = let _1 = let r = -# 2583 "parsing/parser.mly" +# 2662 "parsing/parser.mly" (Some v) -# 13204 "parsing/parser.ml" +# 13294 "parsing/parser.ml" in let i = -# 3119 "parsing/parser.mly" +# 3186 "parsing/parser.mly" ( es ) -# 13209 "parsing/parser.ml" +# 13299 "parsing/parser.ml" in let d = let _1 = let _2 = _2_inlined1 in let x = -# 2557 "parsing/parser.mly" +# 2636 "parsing/parser.mly" (_2) -# 13217 "parsing/parser.ml" +# 13307 "parsing/parser.ml" in # 126 "" ( Some x ) -# 13222 "parsing/parser.ml" +# 13312 "parsing/parser.ml" in -# 2557 "parsing/parser.mly" +# 2636 "parsing/parser.mly" ( _1, _2 ) -# 13228 "parsing/parser.ml" +# 13318 "parsing/parser.ml" in -# 2545 "parsing/parser.mly" +# 2624 "parsing/parser.mly" ( array, d, Bracket, i, r ) -# 13234 "parsing/parser.ml" +# 13324 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_v_, _startpos_array_) in @@ -13238,9 +13328,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2584 "parsing/parser.mly" +# 2663 "parsing/parser.mly" ( mk_indexop_expr user_indexing_operators ~loc:_sloc _1 ) -# 13244 "parsing/parser.ml" +# 13334 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -13316,25 +13406,25 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4476 "parsing/parser.mly" +# 4548 "parsing/parser.mly" ( _1 ) -# 13322 "parsing/parser.ml" +# 13412 "parsing/parser.ml" in -# 4489 "parsing/parser.mly" +# 4561 "parsing/parser.mly" ( _1, _2 ) -# 13328 "parsing/parser.ml" +# 13418 "parsing/parser.ml" in let _endpos = _endpos__7_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2586 "parsing/parser.mly" +# 2665 "parsing/parser.mly" ( let loc = _sloc in wrap_exp_attrs ~loc (mk_newtypes ~loc _5 _7) _2 ) -# 13338 "parsing/parser.ml" +# 13428 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -13411,9 +13501,9 @@ module Tables = struct let _7 : (Asttypes.layout_annotation) = Obj.magic _7 in let _6 : unit = Obj.magic _6 in let _1_inlined3 : ( -# 937 "parsing/parser.mly" +# 1014 "parsing/parser.mly" (string) -# 13417 "parsing/parser.ml" +# 13507 "parsing/parser.ml" ) = Obj.magic _1_inlined3 in let _4 : unit = Obj.magic _4 in let _3 : unit = Obj.magic _3 in @@ -13429,9 +13519,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1123 "parsing/parser.mly" +# 1202 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 13435 "parsing/parser.ml" +# 13525 "parsing/parser.ml" in let _2 = @@ -13439,25 +13529,25 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4476 "parsing/parser.mly" +# 4548 "parsing/parser.mly" ( _1 ) -# 13445 "parsing/parser.ml" +# 13535 "parsing/parser.ml" in -# 4489 "parsing/parser.mly" +# 4561 "parsing/parser.mly" ( _1, _2 ) -# 13451 "parsing/parser.ml" +# 13541 "parsing/parser.ml" in let _endpos = _endpos__9_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2589 "parsing/parser.mly" +# 2668 "parsing/parser.mly" ( let loc = _sloc in wrap_exp_attrs ~loc (mk_newtypes ~loc:_sloc [_5, Some _7] _9) _2 ) -# 13461 "parsing/parser.ml" +# 13551 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -13487,9 +13577,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (Parsetree.expression) = -# 2592 "parsing/parser.mly" +# 2671 "parsing/parser.mly" ( Exp.attr _1 _2 ) -# 13493 "parsing/parser.ml" +# 13583 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -13513,9 +13603,9 @@ module Tables = struct let _endpos = _endpos__1_ in let _v : (Parsetree.expression) = let _loc__1_ = (_startpos__1_, _endpos__1_) in -# 2595 "parsing/parser.mly" +# 2674 "parsing/parser.mly" ( not_expecting _loc__1_ "wildcard \"_\"" ) -# 13519 "parsing/parser.ml" +# 13609 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -13544,14 +13634,113 @@ module Tables = struct let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in - let _v : (Parsetree.expression) = let _endpos = _endpos__2_ in + let _v : (Parsetree.expression) = let _1 = + let _endpos = _endpos__1_ in + let _symbolstartpos = _startpos__1_ in + let _sloc = (_symbolstartpos, _endpos) in + +# 3979 "parsing/parser.mly" + ( (Local, _sloc) ) +# 13645 "parsing/parser.ml" + + in + let _endpos = _endpos__2_ in let _symbolstartpos = _startpos__1_ in - let _loc__1_ = (_startpos__1_, _endpos__1_) in let _sloc = (_symbolstartpos, _endpos) in -# 2598 "parsing/parser.mly" - ( mkexp_stack ~loc:_sloc ~kwd_loc:(_loc__1_) _2 ) -# 13555 "parsing/parser.ml" +# 2677 "parsing/parser.mly" + ( mkexp_with_modes [_1] _2 _sloc ) +# 13654 "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 = _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 _2 : (Parsetree.expression) = 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.expression) = let _1 = + let _endpos = _endpos__1_ in + let _symbolstartpos = _startpos__1_ in + let _sloc = (_symbolstartpos, _endpos) in + +# 3981 "parsing/parser.mly" + ( (Unique, _sloc) ) +# 13690 "parsing/parser.ml" + + in + let _endpos = _endpos__2_ in + let _symbolstartpos = _startpos__1_ in + let _sloc = (_symbolstartpos, _endpos) in + +# 2677 "parsing/parser.mly" + ( mkexp_with_modes [_1] _2 _sloc ) +# 13699 "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 = _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 _2 : (Parsetree.expression) = 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.expression) = let _1 = + let _endpos = _endpos__1_ in + let _symbolstartpos = _startpos__1_ in + let _sloc = (_symbolstartpos, _endpos) in + +# 3983 "parsing/parser.mly" + ( (Once, _sloc) ) +# 13735 "parsing/parser.ml" + + in + let _endpos = _endpos__2_ in + let _symbolstartpos = _startpos__1_ in + let _sloc = (_symbolstartpos, _endpos) in + +# 2677 "parsing/parser.mly" + ( mkexp_with_modes [_1] _2 _sloc ) +# 13744 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -13585,9 +13774,9 @@ module Tables = struct let _loc__1_ = (_startpos__1_, _endpos__1_) in let _sloc = (_symbolstartpos, _endpos) in -# 2600 "parsing/parser.mly" +# 2679 "parsing/parser.mly" ( mkexp_exclave ~loc:_sloc ~kwd_loc:(_loc__1_) _2 ) -# 13591 "parsing/parser.ml" +# 13780 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -13603,9 +13792,9 @@ module Tables = struct let _startpos = _menhir_stack.MenhirLib.EngineTypes.endp in let _endpos = _startpos in let _v : (string Asttypes.loc option) = -# 4479 "parsing/parser.mly" +# 4551 "parsing/parser.mly" ( None ) -# 13609 "parsing/parser.ml" +# 13798 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -13635,9 +13824,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (string Asttypes.loc option) = -# 4480 "parsing/parser.mly" +# 4552 "parsing/parser.mly" ( Some _2 ) -# 13641 "parsing/parser.ml" +# 13830 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -13681,9 +13870,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__4_ in let _v : (Parsetree.extension) = -# 4492 "parsing/parser.mly" +# 4564 "parsing/parser.mly" ( (_2, _3) ) -# 13687 "parsing/parser.ml" +# 13876 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -13702,9 +13891,9 @@ module Tables = struct MenhirLib.EngineTypes.next = _menhir_stack; } = _menhir_stack in let _1 : ( -# 979 "parsing/parser.mly" +# 1057 "parsing/parser.mly" (string * Location.t * string * Location.t * string option) -# 13708 "parsing/parser.ml" +# 13897 "parsing/parser.ml" ) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in @@ -13713,9 +13902,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 4494 "parsing/parser.mly" +# 4566 "parsing/parser.mly" ( mk_quotedext ~loc:_sloc _1 ) -# 13719 "parsing/parser.ml" +# 13908 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -13768,9 +13957,9 @@ module Tables = struct let _v : (Parsetree.extension_constructor) = let attrs = let _1 = _1_inlined3 in -# 4476 "parsing/parser.mly" +# 4548 "parsing/parser.mly" ( _1 ) -# 13774 "parsing/parser.ml" +# 13963 "parsing/parser.ml" in let _endpos_attrs_ = _endpos__1_inlined3_ in @@ -13780,9 +13969,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1123 "parsing/parser.mly" +# 1202 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 13786 "parsing/parser.ml" +# 13975 "parsing/parser.ml" in let cid = @@ -13791,19 +13980,19 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1123 "parsing/parser.mly" +# 1202 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 13797 "parsing/parser.ml" +# 13986 "parsing/parser.ml" in let _endpos = _endpos_attrs_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 3744 "parsing/parser.mly" +# 3811 "parsing/parser.mly" ( let info = symbol_info _endpos in Te.rebind cid lid ~attrs ~loc:(make_loc _sloc) ~info ) -# 13807 "parsing/parser.ml" +# 13996 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -13849,9 +14038,9 @@ module Tables = struct let _v : (Parsetree.extension_constructor) = let attrs = let _1 = _1_inlined2 in -# 4476 "parsing/parser.mly" +# 4548 "parsing/parser.mly" ( _1 ) -# 13855 "parsing/parser.ml" +# 14044 "parsing/parser.ml" in let _endpos_attrs_ = _endpos__1_inlined2_ in @@ -13861,9 +14050,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1123 "parsing/parser.mly" +# 1202 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 13867 "parsing/parser.ml" +# 14056 "parsing/parser.ml" in let cid = @@ -13871,25 +14060,25 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1123 "parsing/parser.mly" +# 1202 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 13877 "parsing/parser.ml" +# 14066 "parsing/parser.ml" in let _startpos_cid_ = _startpos__1_ in let _1 = -# 4287 "parsing/parser.mly" +# 4359 "parsing/parser.mly" ( () ) -# 13884 "parsing/parser.ml" +# 14073 "parsing/parser.ml" in let _endpos = _endpos_attrs_ in let _symbolstartpos = _startpos_cid_ in let _sloc = (_symbolstartpos, _endpos) in -# 3744 "parsing/parser.mly" +# 3811 "parsing/parser.mly" ( let info = symbol_info _endpos in Te.rebind cid lid ~attrs ~loc:(make_loc _sloc) ~info ) -# 13893 "parsing/parser.ml" +# 14082 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -13936,10 +14125,10 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 4467 "parsing/parser.mly" +# 4539 "parsing/parser.mly" ( mark_symbol_docs _sloc; mk_attr ~loc:(make_loc _sloc) _2 _3 ) -# 13943 "parsing/parser.ml" +# 14132 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -13955,14 +14144,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 = -# 2302 "parsing/parser.mly" +# 2381 "parsing/parser.mly" ( [] ) -# 13961 "parsing/parser.ml" +# 14150 "parsing/parser.ml" in -# 2127 "parsing/parser.mly" +# 2206 "parsing/parser.mly" ( params ) -# 13966 "parsing/parser.ml" +# 14155 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -14003,24 +14192,24 @@ module Tables = struct let xs = # 253 "" ( List.rev xs ) -# 14007 "parsing/parser.ml" +# 14196 "parsing/parser.ml" in -# 1260 "parsing/parser.mly" +# 1339 "parsing/parser.mly" ( xs ) -# 14012 "parsing/parser.ml" +# 14201 "parsing/parser.ml" in -# 2304 "parsing/parser.mly" +# 2383 "parsing/parser.mly" ( params ) -# 14018 "parsing/parser.ml" +# 14207 "parsing/parser.ml" in -# 2127 "parsing/parser.mly" +# 2206 "parsing/parser.mly" ( params ) -# 14024 "parsing/parser.ml" +# 14213 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -14038,14 +14227,14 @@ module Tables = struct MenhirLib.EngineTypes.endp = _endpos__1_; MenhirLib.EngineTypes.next = _menhir_stack; } = _menhir_stack in - let _1 : (Parsetree.expression) = Obj.magic _1 in + let _1 : ((modes * (Lexing.position * Lexing.position)) list -> Parsetree.expression) = 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.expression) = -# 3018 "parsing/parser.mly" + let _v : ((modes * (Lexing.position * Lexing.position)) list -> Parsetree.expression) = +# 3097 "parsing/parser.mly" ( _1 ) -# 14049 "parsing/parser.ml" +# 14238 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -14081,13 +14270,13 @@ module Tables = struct let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in - let _v : (Parsetree.expression) = let _endpos = _endpos__3_ in + let _v : ((modes * (Lexing.position * Lexing.position)) list -> Parsetree.expression) = let _endpos = _endpos__3_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 3020 "parsing/parser.mly" - ( mkexp_constraint ~loc:_sloc _3 _1 ) -# 14091 "parsing/parser.ml" +# 3099 "parsing/parser.mly" + ( fun flags -> wrap_exp_with_modes flags (mkexp_constraint ~loc:_sloc _3 _1 )) +# 14280 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -14117,9 +14306,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (Parsetree.expression) = -# 3062 "parsing/parser.mly" +# 3129 "parsing/parser.mly" ( _2 ) -# 14123 "parsing/parser.ml" +# 14312 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -14164,24 +14353,24 @@ module Tables = struct let _endpos = _endpos__4_ in let _v : (Parsetree.expression) = let _1 = let _1 = -# 3064 "parsing/parser.mly" +# 3131 "parsing/parser.mly" ( Pexp_constraint (_4, _2) ) -# 14170 "parsing/parser.ml" +# 14359 "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 -# 1156 "parsing/parser.mly" +# 1235 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) -# 14179 "parsing/parser.ml" +# 14368 "parsing/parser.ml" in -# 3065 "parsing/parser.mly" +# 3132 "parsing/parser.mly" ( _1 ) -# 14185 "parsing/parser.ml" +# 14374 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -14214,12 +14403,12 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 3068 "parsing/parser.mly" +# 3135 "parsing/parser.mly" ( let (l,o,p) = _1 in ghexp ~loc:_sloc (Pexp_fun(l, o, p, _2)) ) -# 14223 "parsing/parser.ml" +# 14412 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -14273,9 +14462,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 3073 "parsing/parser.mly" +# 3140 "parsing/parser.mly" ( mk_newtypes ~loc:_sloc _3 _5 ) -# 14279 "parsing/parser.ml" +# 14468 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -14334,9 +14523,9 @@ module Tables = struct let _5 : (Asttypes.layout_annotation) = Obj.magic _5 in let _4 : unit = Obj.magic _4 in let _1_inlined1 : ( -# 937 "parsing/parser.mly" +# 1014 "parsing/parser.mly" (string) -# 14340 "parsing/parser.ml" +# 14529 "parsing/parser.ml" ) = Obj.magic _1_inlined1 in let _2 : unit = Obj.magic _2 in let _1 : unit = Obj.magic _1 in @@ -14349,18 +14538,18 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1123 "parsing/parser.mly" +# 1202 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 14355 "parsing/parser.ml" +# 14544 "parsing/parser.ml" in let _endpos = _endpos__7_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 3075 "parsing/parser.mly" +# 3142 "parsing/parser.mly" ( mk_newtypes ~loc:_sloc [_3, Some _5] _7 ) -# 14364 "parsing/parser.ml" +# 14553 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -14383,9 +14572,9 @@ module Tables = struct let _startpos = _startpos_ty_ in let _endpos = _endpos_ty_ in let _v : (Parsetree.core_type) = -# 3873 "parsing/parser.mly" +# 3940 "parsing/parser.mly" ( ty ) -# 14389 "parsing/parser.ml" +# 14578 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -14408,9 +14597,9 @@ module Tables = struct let _startpos = _startpos_ty_ in let _endpos = _endpos_ty_ in let _v : (Parsetree.core_type) = -# 3875 "parsing/parser.mly" +# 3942 "parsing/parser.mly" ( ty ) -# 14414 "parsing/parser.ml" +# 14603 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -14441,9 +14630,9 @@ module Tables = struct let _endpos = _endpos__2_ in let _v : (Lexing.position * Parsetree.functor_parameter) = let _startpos = _startpos__1_ in -# 1514 "parsing/parser.mly" +# 1593 "parsing/parser.mly" ( _startpos, Unit ) -# 14447 "parsing/parser.ml" +# 14636 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -14499,16 +14688,16 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1123 "parsing/parser.mly" +# 1202 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 14505 "parsing/parser.ml" +# 14694 "parsing/parser.ml" in let _startpos = _startpos__1_ in -# 1517 "parsing/parser.mly" +# 1596 "parsing/parser.mly" ( _startpos, Named (x, mty) ) -# 14512 "parsing/parser.ml" +# 14701 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -14525,9 +14714,9 @@ module Tables = struct let _endpos = _startpos in let _v : ((Asttypes.label Asttypes.loc * Asttypes.layout_annotation option) list * Parsetree.constructor_arguments * Parsetree.core_type option) = -# 3645 "parsing/parser.mly" +# 3712 "parsing/parser.mly" ( ([],Pcstr_tuple [],None) ) -# 14531 "parsing/parser.ml" +# 14720 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -14558,9 +14747,9 @@ module Tables = struct let _endpos = _endpos__2_ in let _v : ((Asttypes.label Asttypes.loc * Asttypes.layout_annotation option) list * Parsetree.constructor_arguments * Parsetree.core_type option) = -# 3646 "parsing/parser.mly" +# 3713 "parsing/parser.mly" ( ([],_2,None) ) -# 14564 "parsing/parser.ml" +# 14753 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -14605,9 +14794,9 @@ module Tables = struct let _endpos = _endpos__4_ in let _v : ((Asttypes.label Asttypes.loc * Asttypes.layout_annotation option) list * Parsetree.constructor_arguments * Parsetree.core_type option) = -# 3648 "parsing/parser.mly" +# 3715 "parsing/parser.mly" ( ([],_2,Some _4) ) -# 14611 "parsing/parser.ml" +# 14800 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -14670,24 +14859,24 @@ module Tables = struct let xs = # 253 "" ( List.rev xs ) -# 14674 "parsing/parser.ml" +# 14863 "parsing/parser.ml" in -# 1228 "parsing/parser.mly" +# 1307 "parsing/parser.mly" ( xs ) -# 14679 "parsing/parser.ml" +# 14868 "parsing/parser.ml" in -# 3798 "parsing/parser.mly" +# 3865 "parsing/parser.mly" ( _1 ) -# 14685 "parsing/parser.ml" +# 14874 "parsing/parser.ml" in -# 3651 "parsing/parser.mly" +# 3718 "parsing/parser.mly" ( (_2,_4,Some _6) ) -# 14691 "parsing/parser.ml" +# 14880 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -14718,9 +14907,9 @@ module Tables = struct let _endpos = _endpos__2_ in let _v : ((Asttypes.label Asttypes.loc * Asttypes.layout_annotation option) list * Parsetree.constructor_arguments * Parsetree.core_type option) = -# 3653 "parsing/parser.mly" +# 3720 "parsing/parser.mly" ( ([],Pcstr_tuple [],Some _2) ) -# 14724 "parsing/parser.ml" +# 14913 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -14769,24 +14958,24 @@ module Tables = struct let xs = # 253 "" ( List.rev xs ) -# 14773 "parsing/parser.ml" +# 14962 "parsing/parser.ml" in -# 1228 "parsing/parser.mly" +# 1307 "parsing/parser.mly" ( xs ) -# 14778 "parsing/parser.ml" +# 14967 "parsing/parser.ml" in -# 3798 "parsing/parser.mly" +# 3865 "parsing/parser.mly" ( _1 ) -# 14784 "parsing/parser.ml" +# 14973 "parsing/parser.ml" in -# 3655 "parsing/parser.mly" +# 3722 "parsing/parser.mly" ( (_2,Pcstr_tuple [],Some _4) ) -# 14790 "parsing/parser.ml" +# 14979 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -14836,9 +15025,9 @@ module Tables = struct Parsetree.attributes * Location.t * Docstrings.info) = let attrs = let _1 = _1_inlined2 in -# 4476 "parsing/parser.mly" +# 4548 "parsing/parser.mly" ( _1 ) -# 14842 "parsing/parser.ml" +# 15031 "parsing/parser.ml" in let _endpos_attrs_ = _endpos__1_inlined2_ in @@ -14848,23 +15037,23 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1123 "parsing/parser.mly" +# 1202 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 14854 "parsing/parser.ml" +# 15043 "parsing/parser.ml" in let _endpos = _endpos_attrs_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 3584 "parsing/parser.mly" +# 3651 "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 ) -# 14868 "parsing/parser.ml" +# 15057 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -14907,9 +15096,9 @@ module Tables = struct Parsetree.attributes * Location.t * Docstrings.info) = let attrs = let _1 = _1_inlined1 in -# 4476 "parsing/parser.mly" +# 4548 "parsing/parser.mly" ( _1 ) -# 14913 "parsing/parser.ml" +# 15102 "parsing/parser.ml" in let _endpos_attrs_ = _endpos__1_inlined1_ in @@ -14918,29 +15107,29 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1123 "parsing/parser.mly" +# 1202 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 14924 "parsing/parser.ml" +# 15113 "parsing/parser.ml" in let _startpos_cid_ = _startpos__1_ in let _1 = -# 4287 "parsing/parser.mly" +# 4359 "parsing/parser.mly" ( () ) -# 14931 "parsing/parser.ml" +# 15120 "parsing/parser.ml" in let _endpos = _endpos_attrs_ in let _symbolstartpos = _startpos_cid_ in let _sloc = (_symbolstartpos, _endpos) in -# 3584 "parsing/parser.mly" +# 3651 "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 ) -# 14944 "parsing/parser.ml" +# 15133 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -15018,9 +15207,9 @@ module Tables = struct let _1_inlined3 : unit = Obj.magic _1_inlined3 in let layout : (Parsetree.attribute option) = Obj.magic layout in let _1_inlined2 : ( -# 937 "parsing/parser.mly" +# 1014 "parsing/parser.mly" (string) -# 15024 "parsing/parser.ml" +# 15213 "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 @@ -15033,9 +15222,9 @@ module Tables = struct Parsetree.type_declaration) = let attrs2 = let _1 = _1_inlined4 in -# 4472 "parsing/parser.mly" +# 4544 "parsing/parser.mly" ( _1 ) -# 15039 "parsing/parser.ml" +# 15228 "parsing/parser.ml" in let _endpos_attrs2_ = _endpos__1_inlined4_ in @@ -15044,24 +15233,24 @@ module Tables = struct let xs = # 253 "" ( List.rev xs ) -# 15048 "parsing/parser.ml" +# 15237 "parsing/parser.ml" in -# 1210 "parsing/parser.mly" +# 1289 "parsing/parser.mly" ( xs ) -# 15053 "parsing/parser.ml" +# 15242 "parsing/parser.ml" in -# 3444 "parsing/parser.mly" +# 3511 "parsing/parser.mly" ( _1 ) -# 15059 "parsing/parser.ml" +# 15248 "parsing/parser.ml" in let kind_priv_manifest = -# 3479 "parsing/parser.mly" +# 3546 "parsing/parser.mly" ( _2 ) -# 15065 "parsing/parser.ml" +# 15254 "parsing/parser.ml" in let id = let (_endpos__1_, _startpos__1_, _1) = (_endpos__1_inlined2_, _startpos__1_inlined2_, _1_inlined2) in @@ -15069,29 +15258,29 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1123 "parsing/parser.mly" +# 1202 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 15075 "parsing/parser.ml" +# 15264 "parsing/parser.ml" in let flag = -# 4307 "parsing/parser.mly" +# 4379 "parsing/parser.mly" ( Recursive ) -# 15081 "parsing/parser.ml" +# 15270 "parsing/parser.ml" in let attrs1 = let _1 = _1_inlined1 in -# 4476 "parsing/parser.mly" +# 4548 "parsing/parser.mly" ( _1 ) -# 15088 "parsing/parser.ml" +# 15277 "parsing/parser.ml" in let _endpos = _endpos_attrs2_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 3415 "parsing/parser.mly" +# 3482 "parsing/parser.mly" ( let (kind, priv, manifest) = kind_priv_manifest in let docs = symbol_docs _sloc in @@ -15100,7 +15289,7 @@ module Tables = struct (flag, ext), Type.mk id ~params ?layout ~cstrs ~kind ~priv ?manifest ~attrs ~loc ~docs ) -# 15104 "parsing/parser.ml" +# 15293 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -15184,9 +15373,9 @@ module Tables = struct let _1_inlined4 : unit = Obj.magic _1_inlined4 in let layout : (Parsetree.attribute option) = Obj.magic layout in let _1_inlined3 : ( -# 937 "parsing/parser.mly" +# 1014 "parsing/parser.mly" (string) -# 15190 "parsing/parser.ml" +# 15379 "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 @@ -15200,9 +15389,9 @@ module Tables = struct Parsetree.type_declaration) = let attrs2 = let _1 = _1_inlined5 in -# 4472 "parsing/parser.mly" +# 4544 "parsing/parser.mly" ( _1 ) -# 15206 "parsing/parser.ml" +# 15395 "parsing/parser.ml" in let _endpos_attrs2_ = _endpos__1_inlined5_ in @@ -15211,24 +15400,24 @@ module Tables = struct let xs = # 253 "" ( List.rev xs ) -# 15215 "parsing/parser.ml" +# 15404 "parsing/parser.ml" in -# 1210 "parsing/parser.mly" +# 1289 "parsing/parser.mly" ( xs ) -# 15220 "parsing/parser.ml" +# 15409 "parsing/parser.ml" in -# 3444 "parsing/parser.mly" +# 3511 "parsing/parser.mly" ( _1 ) -# 15226 "parsing/parser.ml" +# 15415 "parsing/parser.ml" in let kind_priv_manifest = -# 3479 "parsing/parser.mly" +# 3546 "parsing/parser.mly" ( _2 ) -# 15232 "parsing/parser.ml" +# 15421 "parsing/parser.ml" in let id = let (_endpos__1_, _startpos__1_, _1) = (_endpos__1_inlined3_, _startpos__1_inlined3_, _1_inlined3) in @@ -15236,9 +15425,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1123 "parsing/parser.mly" +# 1202 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 15242 "parsing/parser.ml" +# 15431 "parsing/parser.ml" in let flag = @@ -15247,24 +15436,24 @@ module Tables = struct let _startpos = _startpos__1_ in let _loc = (_startpos, _endpos) in -# 4309 "parsing/parser.mly" +# 4381 "parsing/parser.mly" ( not_expecting _loc "nonrec flag" ) -# 15253 "parsing/parser.ml" +# 15442 "parsing/parser.ml" in let attrs1 = let _1 = _1_inlined1 in -# 4476 "parsing/parser.mly" +# 4548 "parsing/parser.mly" ( _1 ) -# 15261 "parsing/parser.ml" +# 15450 "parsing/parser.ml" in let _endpos = _endpos_attrs2_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 3415 "parsing/parser.mly" +# 3482 "parsing/parser.mly" ( let (kind, priv, manifest) = kind_priv_manifest in let docs = symbol_docs _sloc in @@ -15273,7 +15462,7 @@ module Tables = struct (flag, ext), Type.mk id ~params ?layout ~cstrs ~kind ~priv ?manifest ~attrs ~loc ~docs ) -# 15277 "parsing/parser.ml" +# 15466 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -15344,9 +15533,9 @@ module Tables = struct 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 : ( -# 937 "parsing/parser.mly" +# 1014 "parsing/parser.mly" (string) -# 15350 "parsing/parser.ml" +# 15539 "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 @@ -15359,9 +15548,9 @@ module Tables = struct Parsetree.type_declaration) = let attrs2 = let _1 = _1_inlined3 in -# 4472 "parsing/parser.mly" +# 4544 "parsing/parser.mly" ( _1 ) -# 15365 "parsing/parser.ml" +# 15554 "parsing/parser.ml" in let _endpos_attrs2_ = _endpos__1_inlined3_ in @@ -15370,18 +15559,18 @@ module Tables = struct let xs = # 253 "" ( List.rev xs ) -# 15374 "parsing/parser.ml" +# 15563 "parsing/parser.ml" in -# 1210 "parsing/parser.mly" +# 1289 "parsing/parser.mly" ( xs ) -# 15379 "parsing/parser.ml" +# 15568 "parsing/parser.ml" in -# 3444 "parsing/parser.mly" +# 3511 "parsing/parser.mly" ( _1 ) -# 15385 "parsing/parser.ml" +# 15574 "parsing/parser.ml" in let id = @@ -15390,29 +15579,29 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1123 "parsing/parser.mly" +# 1202 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 15396 "parsing/parser.ml" +# 15585 "parsing/parser.ml" in let flag = -# 4303 "parsing/parser.mly" +# 4375 "parsing/parser.mly" ( Recursive ) -# 15402 "parsing/parser.ml" +# 15591 "parsing/parser.ml" in let attrs1 = let _1 = _1_inlined1 in -# 4476 "parsing/parser.mly" +# 4548 "parsing/parser.mly" ( _1 ) -# 15409 "parsing/parser.ml" +# 15598 "parsing/parser.ml" in let _endpos = _endpos_attrs2_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 3415 "parsing/parser.mly" +# 3482 "parsing/parser.mly" ( let (kind, priv, manifest) = kind_priv_manifest in let docs = symbol_docs _sloc in @@ -15421,7 +15610,7 @@ module Tables = struct (flag, ext), Type.mk id ~params ?layout ~cstrs ~kind ~priv ?manifest ~attrs ~loc ~docs ) -# 15425 "parsing/parser.ml" +# 15614 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -15498,9 +15687,9 @@ module Tables = struct 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 : ( -# 937 "parsing/parser.mly" +# 1014 "parsing/parser.mly" (string) -# 15504 "parsing/parser.ml" +# 15693 "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 @@ -15514,9 +15703,9 @@ module Tables = struct Parsetree.type_declaration) = let attrs2 = let _1 = _1_inlined4 in -# 4472 "parsing/parser.mly" +# 4544 "parsing/parser.mly" ( _1 ) -# 15520 "parsing/parser.ml" +# 15709 "parsing/parser.ml" in let _endpos_attrs2_ = _endpos__1_inlined4_ in @@ -15525,18 +15714,18 @@ module Tables = struct let xs = # 253 "" ( List.rev xs ) -# 15529 "parsing/parser.ml" +# 15718 "parsing/parser.ml" in -# 1210 "parsing/parser.mly" +# 1289 "parsing/parser.mly" ( xs ) -# 15534 "parsing/parser.ml" +# 15723 "parsing/parser.ml" in -# 3444 "parsing/parser.mly" +# 3511 "parsing/parser.mly" ( _1 ) -# 15540 "parsing/parser.ml" +# 15729 "parsing/parser.ml" in let id = @@ -15545,29 +15734,29 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1123 "parsing/parser.mly" +# 1202 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 15551 "parsing/parser.ml" +# 15740 "parsing/parser.ml" in let flag = -# 4304 "parsing/parser.mly" +# 4376 "parsing/parser.mly" ( Nonrecursive ) -# 15557 "parsing/parser.ml" +# 15746 "parsing/parser.ml" in let attrs1 = let _1 = _1_inlined1 in -# 4476 "parsing/parser.mly" +# 4548 "parsing/parser.mly" ( _1 ) -# 15564 "parsing/parser.ml" +# 15753 "parsing/parser.ml" in let _endpos = _endpos_attrs2_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 3415 "parsing/parser.mly" +# 3482 "parsing/parser.mly" ( let (kind, priv, manifest) = kind_priv_manifest in let docs = symbol_docs _sloc in @@ -15576,7 +15765,7 @@ module Tables = struct (flag, ext), Type.mk id ~params ?layout ~cstrs ~kind ~priv ?manifest ~attrs ~loc ~docs ) -# 15580 "parsing/parser.ml" +# 15769 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -15595,17 +15784,17 @@ module Tables = struct MenhirLib.EngineTypes.next = _menhir_stack; } = _menhir_stack in let _1 : ( -# 990 "parsing/parser.mly" +# 1068 "parsing/parser.mly" (string) -# 15601 "parsing/parser.ml" +# 15790 "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) = -# 4145 "parsing/parser.mly" +# 4217 "parsing/parser.mly" ( _1 ) -# 15609 "parsing/parser.ml" +# 15798 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -15624,17 +15813,17 @@ module Tables = struct MenhirLib.EngineTypes.next = _menhir_stack; } = _menhir_stack in let _1 : ( -# 937 "parsing/parser.mly" +# 1014 "parsing/parser.mly" (string) -# 15630 "parsing/parser.ml" +# 15819 "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) = -# 4146 "parsing/parser.mly" +# 4218 "parsing/parser.mly" ( _1 ) -# 15638 "parsing/parser.ml" +# 15827 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -15664,9 +15853,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (Parsetree.structure) = -# 1381 "parsing/parser.mly" +# 1460 "parsing/parser.mly" ( _1 ) -# 15670 "parsing/parser.ml" +# 15859 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -15689,9 +15878,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (bool) = -# 1766 "parsing/parser.mly" +# 1845 "parsing/parser.mly" ( false ) -# 15695 "parsing/parser.ml" +# 15884 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -15721,9 +15910,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (bool) = -# 1768 "parsing/parser.mly" +# 1847 "parsing/parser.mly" ( true ) -# 15727 "parsing/parser.ml" +# 15916 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -15739,9 +15928,9 @@ module Tables = struct let _startpos = _menhir_stack.MenhirLib.EngineTypes.endp in let _endpos = _startpos in let _v : (string) = -# 4195 "parsing/parser.mly" +# 4267 "parsing/parser.mly" ( "" ) -# 15745 "parsing/parser.ml" +# 15934 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -15771,9 +15960,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (string) = -# 4196 "parsing/parser.mly" +# 4268 "parsing/parser.mly" ( ";.." ) -# 15777 "parsing/parser.ml" +# 15966 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -15803,9 +15992,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (Parsetree.signature) = -# 1388 "parsing/parser.mly" +# 1467 "parsing/parser.mly" ( _1 ) -# 15809 "parsing/parser.ml" +# 15998 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -15849,9 +16038,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__4_ in let _v : (Parsetree.extension) = -# 4497 "parsing/parser.mly" +# 4569 "parsing/parser.mly" ( (_2, _3) ) -# 15855 "parsing/parser.ml" +# 16044 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -15870,9 +16059,9 @@ module Tables = struct MenhirLib.EngineTypes.next = _menhir_stack; } = _menhir_stack in let _1 : ( -# 981 "parsing/parser.mly" +# 1059 "parsing/parser.mly" (string * Location.t * string * Location.t * string option) -# 15876 "parsing/parser.ml" +# 16065 "parsing/parser.ml" ) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in @@ -15881,9 +16070,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 4499 "parsing/parser.mly" +# 4571 "parsing/parser.mly" ( mk_quotedext ~loc:_sloc _1 ) -# 15887 "parsing/parser.ml" +# 16076 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -15929,9 +16118,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 : ( -# 937 "parsing/parser.mly" +# 1014 "parsing/parser.mly" (string) -# 15935 "parsing/parser.ml" +# 16124 "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 @@ -15940,34 +16129,34 @@ module Tables = struct let _v : (Parsetree.label_declaration) = let _5 = let _1 = _1_inlined3 in -# 4476 "parsing/parser.mly" +# 4548 "parsing/parser.mly" ( _1 ) -# 15946 "parsing/parser.ml" +# 16135 "parsing/parser.ml" in let _endpos__5_ = _endpos__1_inlined3_ in let _4 = let _1 = _1_inlined2 in -# 3818 "parsing/parser.mly" +# 3885 "parsing/parser.mly" ( _1 ) -# 15955 "parsing/parser.ml" +# 16144 "parsing/parser.ml" in let _2 = let (_endpos__1_, _startpos__1_, _1) = (_endpos__1_inlined1_, _startpos__1_inlined1_, _1_inlined1) in let _1 = -# 4106 "parsing/parser.mly" +# 4178 "parsing/parser.mly" ( _1 ) -# 15963 "parsing/parser.ml" +# 16152 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1123 "parsing/parser.mly" +# 1202 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 15971 "parsing/parser.ml" +# 16160 "parsing/parser.ml" in let _startpos__2_ = _startpos__1_inlined1_ in @@ -15979,13 +16168,13 @@ module Tables = struct let _loc__1_ = (_startpos__1_, _endpos__1_) in let _sloc = (_symbolstartpos, _endpos) in -# 3678 "parsing/parser.mly" +# 3745 "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_) ) -# 15989 "parsing/parser.ml" +# 16178 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -16045,9 +16234,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 : ( -# 937 "parsing/parser.mly" +# 1014 "parsing/parser.mly" (string) -# 16051 "parsing/parser.ml" +# 16240 "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 @@ -16056,43 +16245,43 @@ module Tables = struct let _v : (Parsetree.label_declaration) = let _7 = let _1 = _1_inlined4 in -# 4476 "parsing/parser.mly" +# 4548 "parsing/parser.mly" ( _1 ) -# 16062 "parsing/parser.ml" +# 16251 "parsing/parser.ml" in let _endpos__7_ = _endpos__1_inlined4_ in let _5 = let _1 = _1_inlined3 in -# 4476 "parsing/parser.mly" +# 4548 "parsing/parser.mly" ( _1 ) -# 16071 "parsing/parser.ml" +# 16260 "parsing/parser.ml" in let _endpos__5_ = _endpos__1_inlined3_ in let _4 = let _1 = _1_inlined2 in -# 3818 "parsing/parser.mly" +# 3885 "parsing/parser.mly" ( _1 ) -# 16080 "parsing/parser.ml" +# 16269 "parsing/parser.ml" in let _2 = let (_endpos__1_, _startpos__1_, _1) = (_endpos__1_inlined1_, _startpos__1_inlined1_, _1_inlined1) in let _1 = -# 4106 "parsing/parser.mly" +# 4178 "parsing/parser.mly" ( _1 ) -# 16088 "parsing/parser.ml" +# 16277 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1123 "parsing/parser.mly" +# 1202 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 16096 "parsing/parser.ml" +# 16285 "parsing/parser.ml" in let _startpos__2_ = _startpos__1_inlined1_ in @@ -16104,7 +16293,7 @@ module Tables = struct let _loc__1_ = (_startpos__1_, _endpos__1_) in let _sloc = (_symbolstartpos, _endpos) in -# 3687 "parsing/parser.mly" +# 3754 "parsing/parser.mly" ( let info = match rhs_info _endpos__5_ with | Some _ as info_before_semi -> info_before_semi @@ -16114,7 +16303,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_) ) -# 16118 "parsing/parser.ml" +# 16307 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -16137,9 +16326,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Parsetree.label_declaration list) = -# 3672 "parsing/parser.mly" +# 3739 "parsing/parser.mly" ( [_1] ) -# 16143 "parsing/parser.ml" +# 16332 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -16162,9 +16351,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Parsetree.label_declaration list) = -# 3673 "parsing/parser.mly" +# 3740 "parsing/parser.mly" ( [_1] ) -# 16168 "parsing/parser.ml" +# 16357 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -16194,9 +16383,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (Parsetree.label_declaration list) = -# 3674 "parsing/parser.mly" +# 3741 "parsing/parser.mly" ( _1 :: _2 ) -# 16200 "parsing/parser.ml" +# 16389 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -16215,9 +16404,9 @@ module Tables = struct MenhirLib.EngineTypes.next = _menhir_stack; } = _menhir_stack in let _1 : ( -# 937 "parsing/parser.mly" +# 1014 "parsing/parser.mly" (string) -# 16221 "parsing/parser.ml" +# 16410 "parsing/parser.ml" ) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in @@ -16228,24 +16417,24 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1123 "parsing/parser.mly" +# 1202 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 16234 "parsing/parser.ml" +# 16423 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2516 "parsing/parser.mly" +# 2595 "parsing/parser.mly" ( (_1.Location.txt, mkpat ~loc:_sloc (Ppat_var _1)) ) -# 16243 "parsing/parser.ml" +# 16432 "parsing/parser.ml" in -# 2500 "parsing/parser.mly" +# 2579 "parsing/parser.mly" ( x ) -# 16249 "parsing/parser.ml" +# 16438 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -16278,9 +16467,9 @@ module Tables = struct let cty : (Parsetree.core_type) = Obj.magic cty in let _2 : unit = Obj.magic _2 in let _1 : ( -# 937 "parsing/parser.mly" +# 1014 "parsing/parser.mly" (string) -# 16284 "parsing/parser.ml" +# 16473 "parsing/parser.ml" ) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in @@ -16291,18 +16480,18 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1123 "parsing/parser.mly" +# 1202 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 16297 "parsing/parser.ml" +# 16486 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2516 "parsing/parser.mly" +# 2595 "parsing/parser.mly" ( (_1.Location.txt, mkpat ~loc:_sloc (Ppat_var _1)) ) -# 16306 "parsing/parser.ml" +# 16495 "parsing/parser.ml" in let _startpos_x_ = _startpos__1_ in @@ -16310,11 +16499,11 @@ module Tables = struct let _symbolstartpos = _startpos_x_ in let _sloc = (_symbolstartpos, _endpos) in -# 2502 "parsing/parser.mly" +# 2581 "parsing/parser.mly" ( let lab, pat = x in lab, mkpat ~loc:_sloc (Ppat_constraint (pat, cty)) ) -# 16318 "parsing/parser.ml" +# 16507 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -16361,9 +16550,9 @@ module Tables = struct let xs : ((Asttypes.label Asttypes.loc * Asttypes.layout_annotation option) list) = Obj.magic xs in let _2 : unit = Obj.magic _2 in let _1 : ( -# 937 "parsing/parser.mly" +# 1014 "parsing/parser.mly" (string) -# 16367 "parsing/parser.ml" +# 16556 "parsing/parser.ml" ) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in @@ -16375,24 +16564,24 @@ module Tables = struct let xs = # 253 "" ( List.rev xs ) -# 16379 "parsing/parser.ml" +# 16568 "parsing/parser.ml" in -# 1228 "parsing/parser.mly" +# 1307 "parsing/parser.mly" ( xs ) -# 16384 "parsing/parser.ml" +# 16573 "parsing/parser.ml" in -# 3798 "parsing/parser.mly" +# 3865 "parsing/parser.mly" ( _1 ) -# 16390 "parsing/parser.ml" +# 16579 "parsing/parser.ml" in -# 2509 "parsing/parser.mly" +# 2588 "parsing/parser.mly" ( Jane_syntax.Layouts.Ltyp_poly { bound_vars; inner_type } ) -# 16396 "parsing/parser.ml" +# 16585 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_inner_type_, _startpos_xs_) in @@ -16400,9 +16589,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1187 "parsing/parser.mly" +# 1266 "parsing/parser.mly" ( Jane_syntax.Layouts.type_of ~loc:(make_loc _sloc) ~attrs:[] _1 ) -# 16406 "parsing/parser.ml" +# 16595 "parsing/parser.ml" in let _endpos_cty_ = _endpos_inner_type_ in @@ -16412,18 +16601,18 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1123 "parsing/parser.mly" +# 1202 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 16418 "parsing/parser.ml" +# 16607 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2516 "parsing/parser.mly" +# 2595 "parsing/parser.mly" ( (_1.Location.txt, mkpat ~loc:_sloc (Ppat_var _1)) ) -# 16427 "parsing/parser.ml" +# 16616 "parsing/parser.ml" in let _startpos_x_ = _startpos__1_ in @@ -16431,11 +16620,11 @@ module Tables = struct let _symbolstartpos = _startpos_x_ in let _sloc = (_symbolstartpos, _endpos) in -# 2510 "parsing/parser.mly" +# 2589 "parsing/parser.mly" ( let lab, pat = x in lab, mkpat ~loc:_sloc (Ppat_constraint (pat, cty)) ) -# 16439 "parsing/parser.ml" +# 16628 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -16458,9 +16647,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Longident.t) = -# 4227 "parsing/parser.mly" +# 4299 "parsing/parser.mly" ( _1 ) -# 16464 "parsing/parser.ml" +# 16653 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -16483,9 +16672,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Asttypes.arg_label * Parsetree.expression) = -# 2877 "parsing/parser.mly" +# 2959 "parsing/parser.mly" ( (Nolabel, _1) ) -# 16489 "parsing/parser.ml" +# 16678 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -16511,17 +16700,17 @@ module Tables = struct } = _menhir_stack in let _2 : (Parsetree.expression) = Obj.magic _2 in let _1 : ( -# 923 "parsing/parser.mly" +# 1000 "parsing/parser.mly" (string) -# 16517 "parsing/parser.ml" +# 16706 "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) = -# 2879 "parsing/parser.mly" +# 2961 "parsing/parser.mly" ( (Labelled _1, _2) ) -# 16525 "parsing/parser.ml" +# 16714 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -16546,9 +16735,9 @@ module Tables = struct }; } = _menhir_stack in let label : ( -# 937 "parsing/parser.mly" +# 1014 "parsing/parser.mly" (string) -# 16552 "parsing/parser.ml" +# 16741 "parsing/parser.ml" ) = Obj.magic label in let _1 : unit = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in @@ -16556,10 +16745,10 @@ module Tables = struct let _endpos = _endpos_label_ in let _v : (Asttypes.arg_label * Parsetree.expression) = let _loc_label_ = (_startpos_label_, _endpos_label_) in -# 2881 "parsing/parser.mly" +# 2963 "parsing/parser.mly" ( let loc = _loc_label_ in (Labelled label, mkexpvar ~loc label) ) -# 16563 "parsing/parser.ml" +# 16752 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -16604,9 +16793,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 : ( -# 937 "parsing/parser.mly" +# 1014 "parsing/parser.mly" (string) -# 16610 "parsing/parser.ml" +# 16799 "parsing/parser.ml" ) = Obj.magic label in let _2 : unit = Obj.magic _2 in let _1 : unit = Obj.magic _1 in @@ -16616,10 +16805,10 @@ module Tables = struct let _v : (Asttypes.arg_label * Parsetree.expression) = let _endpos = _endpos__5_ in let _loc_label_ = (_startpos_label_, _endpos_label_) in -# 2884 "parsing/parser.mly" +# 2966 "parsing/parser.mly" ( (Labelled label, mkexp_constraint ~loc:(_startpos__2_, _endpos) (mkexpvar ~loc:_loc_label_ label) ty) ) -# 16623 "parsing/parser.ml" +# 16812 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -16644,9 +16833,9 @@ module Tables = struct }; } = _menhir_stack in let label : ( -# 937 "parsing/parser.mly" +# 1014 "parsing/parser.mly" (string) -# 16650 "parsing/parser.ml" +# 16839 "parsing/parser.ml" ) = Obj.magic label in let _1 : unit = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in @@ -16654,10 +16843,10 @@ module Tables = struct let _endpos = _endpos_label_ in let _v : (Asttypes.arg_label * Parsetree.expression) = let _loc_label_ = (_startpos_label_, _endpos_label_) in -# 2887 "parsing/parser.mly" +# 2969 "parsing/parser.mly" ( let loc = _loc_label_ in (Optional label, mkexpvar ~loc label) ) -# 16661 "parsing/parser.ml" +# 16850 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -16683,17 +16872,17 @@ module Tables = struct } = _menhir_stack in let _2 : (Parsetree.expression) = Obj.magic _2 in let _1 : ( -# 955 "parsing/parser.mly" +# 1033 "parsing/parser.mly" (string) -# 16689 "parsing/parser.ml" +# 16878 "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) = -# 2890 "parsing/parser.mly" +# 2972 "parsing/parser.mly" ( (Optional _1, _2) ) -# 16697 "parsing/parser.ml" +# 16886 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -16746,22 +16935,27 @@ module Tables = struct let _v : (Asttypes.arg_label * Parsetree.expression option * Parsetree.pattern) = let _5 = let _1 = _1_inlined1 in -# 2496 "parsing/parser.mly" +# 2575 "parsing/parser.mly" ( _1 ) -# 16752 "parsing/parser.ml" +# 16941 "parsing/parser.ml" + + in + let _3 = + let flags = +# 1275 "parsing/parser.mly" + ( [] ) +# 16948 "parsing/parser.ml" + in + +# 3987 "parsing/parser.mly" + ( flags ) +# 16953 "parsing/parser.ml" in - let _3 = -# 3913 "parsing/parser.mly" - ( false ) -# 16758 "parsing/parser.ml" - in - let (_endpos__3_, _startpos__3_) = (_endpos__2_, _endpos__2_) in - let _loc__3_ = (_startpos__3_, _endpos__3_) in -# 2459 "parsing/parser.mly" - ( (Optional (fst _4), _5, mkpat_local_if _3 (snd _4) _loc__3_) ) -# 16765 "parsing/parser.ml" +# 2538 "parsing/parser.mly" + ( (Optional (fst _4), _5, mkpat_with_modes _3 (snd _4) ) ) +# 16959 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -16779,9 +16973,9 @@ module Tables = struct MenhirLib.EngineTypes.endp = _endpos__6_; 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 = _1_inlined1; + MenhirLib.EngineTypes.startp = _startpos__1_inlined1_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined1_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; MenhirLib.EngineTypes.semv = _4; @@ -16789,9 +16983,9 @@ module Tables = struct 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.semv = x; + MenhirLib.EngineTypes.startp = _startpos_x_; + MenhirLib.EngineTypes.endp = _endpos_x_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; MenhirLib.EngineTypes.semv = _2; @@ -16810,33 +17004,38 @@ module Tables = struct }; } = _menhir_stack in let _6 : unit = Obj.magic _6 in - let _1_inlined2 : (Parsetree.expression option) = Obj.magic _1_inlined2 in + let _1_inlined1 : (Parsetree.expression option) = Obj.magic _1_inlined1 in let _4 : (string * Parsetree.pattern) = Obj.magic _4 in - let _1_inlined1 : unit = Obj.magic _1_inlined1 in + let x : ((modes * (Lexing.position * Lexing.position)) list) = Obj.magic x 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 : (Asttypes.arg_label * Parsetree.expression option * Parsetree.pattern) = let _5 = - let _1 = _1_inlined2 in + let _1 = _1_inlined1 in -# 2496 "parsing/parser.mly" +# 2575 "parsing/parser.mly" ( _1 ) -# 16827 "parsing/parser.ml" +# 17021 "parsing/parser.ml" + + in + let _3 = + let flags = +# 1277 "parsing/parser.mly" + ( x ) +# 17028 "parsing/parser.ml" + in + +# 3987 "parsing/parser.mly" + ( flags ) +# 17033 "parsing/parser.ml" in - let _3 = -# 3915 "parsing/parser.mly" - ( true ) -# 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 -# 2459 "parsing/parser.mly" - ( (Optional (fst _4), _5, mkpat_local_if _3 (snd _4) _loc__3_) ) -# 16840 "parsing/parser.ml" +# 2538 "parsing/parser.mly" + ( (Optional (fst _4), _5, mkpat_with_modes _3 (snd _4) ) ) +# 17039 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -16861,9 +17060,9 @@ module Tables = struct }; } = _menhir_stack in let _1_inlined1 : ( -# 937 "parsing/parser.mly" +# 1014 "parsing/parser.mly" (string) -# 16867 "parsing/parser.ml" +# 17066 "parsing/parser.ml" ) = Obj.magic _1_inlined1 in let _1 : unit = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in @@ -16876,24 +17075,24 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1123 "parsing/parser.mly" +# 1202 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 16882 "parsing/parser.ml" +# 17081 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2516 "parsing/parser.mly" +# 2595 "parsing/parser.mly" ( (_1.Location.txt, mkpat ~loc:_sloc (Ppat_var _1)) ) -# 16891 "parsing/parser.ml" +# 17090 "parsing/parser.ml" in -# 2461 "parsing/parser.mly" +# 2540 "parsing/parser.mly" ( (Optional (fst _2), None, snd _2) ) -# 16897 "parsing/parser.ml" +# 17096 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -16940,9 +17139,9 @@ module Tables = struct let _4 : (Parsetree.pattern) = Obj.magic _4 in let _2 : unit = Obj.magic _2 in let _1 : ( -# 955 "parsing/parser.mly" +# 1033 "parsing/parser.mly" (string) -# 16946 "parsing/parser.ml" +# 17145 "parsing/parser.ml" ) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in @@ -16950,22 +17149,27 @@ module Tables = struct let _v : (Asttypes.arg_label * Parsetree.expression option * Parsetree.pattern) = let _5 = let _1 = _1_inlined1 in -# 2496 "parsing/parser.mly" +# 2575 "parsing/parser.mly" ( _1 ) -# 16956 "parsing/parser.ml" +# 17155 "parsing/parser.ml" + + in + let _3 = + let flags = +# 1275 "parsing/parser.mly" + ( [] ) +# 17162 "parsing/parser.ml" + in + +# 3987 "parsing/parser.mly" + ( flags ) +# 17167 "parsing/parser.ml" in - let _3 = -# 3913 "parsing/parser.mly" - ( false ) -# 16962 "parsing/parser.ml" - in - let (_endpos__3_, _startpos__3_) = (_endpos__2_, _endpos__2_) in - let _loc__3_ = (_startpos__3_, _endpos__3_) in -# 2463 "parsing/parser.mly" - ( (Optional _1, _5, mkpat_local_if _3 _4 _loc__3_) ) -# 16969 "parsing/parser.ml" +# 2542 "parsing/parser.mly" + ( (Optional _1, _5, mkpat_with_modes _3 _4) ) +# 17173 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -16983,9 +17187,9 @@ module Tables = struct MenhirLib.EngineTypes.endp = _endpos__6_; 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 = _1_inlined1; + MenhirLib.EngineTypes.startp = _startpos__1_inlined1_; + MenhirLib.EngineTypes.endp = _endpos__1_inlined1_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; MenhirLib.EngineTypes.semv = _4; @@ -16993,9 +17197,9 @@ module Tables = struct 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.semv = x; + MenhirLib.EngineTypes.startp = _startpos_x_; + MenhirLib.EngineTypes.endp = _endpos_x_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; MenhirLib.EngineTypes.semv = _2; @@ -17014,37 +17218,42 @@ module Tables = struct }; } = _menhir_stack in let _6 : unit = Obj.magic _6 in - let _1_inlined2 : (Parsetree.expression option) = Obj.magic _1_inlined2 in + let _1_inlined1 : (Parsetree.expression option) = Obj.magic _1_inlined1 in let _4 : (Parsetree.pattern) = Obj.magic _4 in - let _1_inlined1 : unit = Obj.magic _1_inlined1 in + let x : ((modes * (Lexing.position * Lexing.position)) list) = Obj.magic x in let _2 : unit = Obj.magic _2 in let _1 : ( -# 955 "parsing/parser.mly" +# 1033 "parsing/parser.mly" (string) -# 17025 "parsing/parser.ml" +# 17229 "parsing/parser.ml" ) = 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 : (Asttypes.arg_label * Parsetree.expression option * Parsetree.pattern) = let _5 = - let _1 = _1_inlined2 in + let _1 = _1_inlined1 in -# 2496 "parsing/parser.mly" +# 2575 "parsing/parser.mly" ( _1 ) -# 17035 "parsing/parser.ml" +# 17239 "parsing/parser.ml" + + in + let _3 = + let flags = +# 1277 "parsing/parser.mly" + ( x ) +# 17246 "parsing/parser.ml" + in + +# 3987 "parsing/parser.mly" + ( flags ) +# 17251 "parsing/parser.ml" in - let _3 = -# 3915 "parsing/parser.mly" - ( true ) -# 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 -# 2463 "parsing/parser.mly" - ( (Optional _1, _5, mkpat_local_if _3 _4 _loc__3_) ) -# 17048 "parsing/parser.ml" +# 2542 "parsing/parser.mly" + ( (Optional _1, _5, mkpat_with_modes _3 _4) ) +# 17257 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -17070,17 +17279,17 @@ module Tables = struct } = _menhir_stack in let _2 : (Parsetree.pattern) = Obj.magic _2 in let _1 : ( -# 955 "parsing/parser.mly" +# 1033 "parsing/parser.mly" (string) -# 17076 "parsing/parser.ml" +# 17285 "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) = -# 2465 "parsing/parser.mly" +# 2544 "parsing/parser.mly" ( (Optional _1, None, _2) ) -# 17084 "parsing/parser.ml" +# 17293 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -17123,18 +17332,23 @@ module Tables = struct 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 _3 = -# 3913 "parsing/parser.mly" - ( false ) -# 17130 "parsing/parser.ml" - in - let (_endpos__3_, _startpos__3_) = (_endpos__2_, _endpos__2_) in - let _loc__3_ = (_startpos__3_, _endpos__3_) in + let _v : (Asttypes.arg_label * Parsetree.expression option * Parsetree.pattern) = let _3 = + let flags = +# 1275 "parsing/parser.mly" + ( [] ) +# 17340 "parsing/parser.ml" + in + +# 3987 "parsing/parser.mly" + ( flags ) +# 17345 "parsing/parser.ml" + + in -# 2467 "parsing/parser.mly" +# 2546 "parsing/parser.mly" ( (Labelled (fst _4), None, - mkpat_local_if _3 (snd _4) _loc__3_) ) -# 17138 "parsing/parser.ml" + mkpat_with_modes _3 (snd _4) ) ) +# 17352 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -17157,9 +17371,9 @@ module Tables = struct 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.semv = x; + MenhirLib.EngineTypes.startp = _startpos_x_; + MenhirLib.EngineTypes.endp = _endpos_x_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; MenhirLib.EngineTypes.semv = _2; @@ -17178,24 +17392,29 @@ module Tables = struct } = _menhir_stack in let _5 : unit = Obj.magic _5 in let _4 : (string * Parsetree.pattern) = Obj.magic _4 in - let _1_inlined1 : unit = Obj.magic _1_inlined1 in + let x : ((modes * (Lexing.position * Lexing.position)) list) = Obj.magic x 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 : (Asttypes.arg_label * Parsetree.expression option * Parsetree.pattern) = let _3 = -# 3915 "parsing/parser.mly" - ( true ) -# 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 + let _v : (Asttypes.arg_label * Parsetree.expression option * Parsetree.pattern) = let _3 = + let flags = +# 1277 "parsing/parser.mly" + ( x ) +# 17406 "parsing/parser.ml" + in + +# 3987 "parsing/parser.mly" + ( flags ) +# 17411 "parsing/parser.ml" + + in -# 2467 "parsing/parser.mly" +# 2546 "parsing/parser.mly" ( (Labelled (fst _4), None, - mkpat_local_if _3 (snd _4) _loc__3_) ) -# 17199 "parsing/parser.ml" + mkpat_with_modes _3 (snd _4) ) ) +# 17418 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -17220,9 +17439,9 @@ module Tables = struct }; } = _menhir_stack in let _1_inlined1 : ( -# 937 "parsing/parser.mly" +# 1014 "parsing/parser.mly" (string) -# 17226 "parsing/parser.ml" +# 17445 "parsing/parser.ml" ) = Obj.magic _1_inlined1 in let _1 : unit = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in @@ -17235,24 +17454,24 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1123 "parsing/parser.mly" +# 1202 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 17241 "parsing/parser.ml" +# 17460 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2516 "parsing/parser.mly" +# 2595 "parsing/parser.mly" ( (_1.Location.txt, mkpat ~loc:_sloc (Ppat_var _1)) ) -# 17250 "parsing/parser.ml" +# 17469 "parsing/parser.ml" in -# 2470 "parsing/parser.mly" +# 2549 "parsing/parser.mly" ( (Labelled (fst _2), None, snd _2) ) -# 17256 "parsing/parser.ml" +# 17475 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -17278,17 +17497,17 @@ module Tables = struct } = _menhir_stack in let _2 : (Parsetree.pattern) = Obj.magic _2 in let _1 : ( -# 923 "parsing/parser.mly" +# 1000 "parsing/parser.mly" (string) -# 17284 "parsing/parser.ml" +# 17503 "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) = -# 2472 "parsing/parser.mly" +# 2551 "parsing/parser.mly" ( (Labelled _1, None, _2) ) -# 17292 "parsing/parser.ml" +# 17511 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -17332,21 +17551,20 @@ module Tables = struct } = _menhir_stack in let _5 : unit = Obj.magic _5 in let _4 : (Parsetree.pattern) = Obj.magic _4 in - let _3 : unit = Obj.magic _3 in + let _3 : ((modes * (Lexing.position * Lexing.position)) list) = Obj.magic _3 in let _2 : unit = Obj.magic _2 in let _1 : ( -# 923 "parsing/parser.mly" +# 1000 "parsing/parser.mly" (string) -# 17341 "parsing/parser.ml" +# 17560 "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 - -# 2474 "parsing/parser.mly" - ( (Labelled _1, None, mkpat_stack _4 (make_loc _loc__3_)) ) -# 17350 "parsing/parser.ml" + let _v : (Asttypes.arg_label * Parsetree.expression option * Parsetree.pattern) = +# 2553 "parsing/parser.mly" + ( (Labelled _1, None, mkpat_with_modes _3 _4 ) ) +# 17568 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -17369,9 +17587,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Asttypes.arg_label * Parsetree.expression option * Parsetree.pattern) = -# 2476 "parsing/parser.mly" +# 2555 "parsing/parser.mly" ( (Nolabel, None, _1) ) -# 17375 "parsing/parser.ml" +# 17593 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -17409,16 +17627,15 @@ module Tables = struct } = _menhir_stack in let _4 : unit = Obj.magic _4 in let _3 : (Parsetree.pattern) = Obj.magic _3 in - let _2 : unit = Obj.magic _2 in + let _2 : ((modes * (Lexing.position * Lexing.position)) list) = 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__4_ in - let _v : (Asttypes.arg_label * Parsetree.expression option * Parsetree.pattern) = let _loc__2_ = (_startpos__2_, _endpos__2_) in - -# 2478 "parsing/parser.mly" - ( (Nolabel, None, mkpat_stack _3 (make_loc _loc__2_)) ) -# 17422 "parsing/parser.ml" + let _v : (Asttypes.arg_label * Parsetree.expression option * Parsetree.pattern) = +# 2557 "parsing/parser.mly" + ( (Nolabel, None, mkpat_with_modes _2 _3 ) ) +# 17639 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -17486,9 +17703,9 @@ module Tables = struct let pat : (Parsetree.pattern) = Obj.magic pat in let _2 : unit = Obj.magic _2 in let _1 : ( -# 923 "parsing/parser.mly" +# 1000 "parsing/parser.mly" (string) -# 17492 "parsing/parser.ml" +# 17709 "parsing/parser.ml" ) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in @@ -17503,24 +17720,24 @@ module Tables = struct let xs = # 253 "" ( List.rev xs ) -# 17507 "parsing/parser.ml" +# 17724 "parsing/parser.ml" in -# 1228 "parsing/parser.mly" +# 1307 "parsing/parser.mly" ( xs ) -# 17512 "parsing/parser.ml" +# 17729 "parsing/parser.ml" in -# 3798 "parsing/parser.mly" +# 3865 "parsing/parser.mly" ( _1 ) -# 17518 "parsing/parser.ml" +# 17735 "parsing/parser.ml" in -# 2534 "parsing/parser.mly" +# 2613 "parsing/parser.mly" ( Jane_syntax.Layouts.Ltyp_poly { bound_vars; inner_type } ) -# 17524 "parsing/parser.ml" +# 17741 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_inner_type_, _startpos_xs_) in @@ -17528,15 +17745,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1187 "parsing/parser.mly" +# 1266 "parsing/parser.mly" ( Jane_syntax.Layouts.type_of ~loc:(make_loc _sloc) ~attrs:[] _1 ) -# 17534 "parsing/parser.ml" +# 17751 "parsing/parser.ml" in -# 2535 "parsing/parser.mly" +# 2614 "parsing/parser.mly" ( Ppat_constraint(pat, cty) ) -# 17540 "parsing/parser.ml" +# 17757 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_inner_type_, _startpos_pat_) in @@ -17544,21 +17761,21 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1158 "parsing/parser.mly" +# 1237 "parsing/parser.mly" ( mkpat ~loc:_sloc _1 ) -# 17550 "parsing/parser.ml" +# 17767 "parsing/parser.ml" in -# 2536 "parsing/parser.mly" +# 2615 "parsing/parser.mly" ( _1 ) -# 17556 "parsing/parser.ml" +# 17773 "parsing/parser.ml" in -# 2480 "parsing/parser.mly" +# 2559 "parsing/parser.mly" ( (Labelled _1, None, _3) ) -# 17562 "parsing/parser.ml" +# 17779 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -17630,12 +17847,12 @@ module Tables = struct 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 _3 : ((modes * (Lexing.position * Lexing.position)) list) = Obj.magic _3 in let _2 : unit = Obj.magic _2 in let _1 : ( -# 923 "parsing/parser.mly" +# 1000 "parsing/parser.mly" (string) -# 17639 "parsing/parser.ml" +# 17856 "parsing/parser.ml" ) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in @@ -17650,24 +17867,24 @@ module Tables = struct let xs = # 253 "" ( List.rev xs ) -# 17654 "parsing/parser.ml" +# 17871 "parsing/parser.ml" in -# 1228 "parsing/parser.mly" +# 1307 "parsing/parser.mly" ( xs ) -# 17659 "parsing/parser.ml" +# 17876 "parsing/parser.ml" in -# 3798 "parsing/parser.mly" +# 3865 "parsing/parser.mly" ( _1 ) -# 17665 "parsing/parser.ml" +# 17882 "parsing/parser.ml" in -# 2534 "parsing/parser.mly" +# 2613 "parsing/parser.mly" ( Jane_syntax.Layouts.Ltyp_poly { bound_vars; inner_type } ) -# 17671 "parsing/parser.ml" +# 17888 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_inner_type_, _startpos_xs_) in @@ -17675,15 +17892,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1187 "parsing/parser.mly" +# 1266 "parsing/parser.mly" ( Jane_syntax.Layouts.type_of ~loc:(make_loc _sloc) ~attrs:[] _1 ) -# 17681 "parsing/parser.ml" +# 17898 "parsing/parser.ml" in -# 2535 "parsing/parser.mly" +# 2614 "parsing/parser.mly" ( Ppat_constraint(pat, cty) ) -# 17687 "parsing/parser.ml" +# 17904 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_inner_type_, _startpos_pat_) in @@ -17691,22 +17908,21 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1158 "parsing/parser.mly" +# 1237 "parsing/parser.mly" ( mkpat ~loc:_sloc _1 ) -# 17697 "parsing/parser.ml" +# 17914 "parsing/parser.ml" in -# 2536 "parsing/parser.mly" +# 2615 "parsing/parser.mly" ( _1 ) -# 17703 "parsing/parser.ml" +# 17920 "parsing/parser.ml" in - let _loc__2_ = (_startpos__2_, _endpos__2_) in -# 2482 "parsing/parser.mly" - ( (Labelled _1, None, mkpat_stack _4 (make_loc _loc__2_)) ) -# 17710 "parsing/parser.ml" +# 2561 "parsing/parser.mly" + ( (Labelled _1, None, mkpat_with_modes _3 _4) ) +# 17926 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -17780,24 +17996,24 @@ module Tables = struct let xs = # 253 "" ( List.rev xs ) -# 17784 "parsing/parser.ml" +# 18000 "parsing/parser.ml" in -# 1228 "parsing/parser.mly" +# 1307 "parsing/parser.mly" ( xs ) -# 17789 "parsing/parser.ml" +# 18005 "parsing/parser.ml" in -# 3798 "parsing/parser.mly" +# 3865 "parsing/parser.mly" ( _1 ) -# 17795 "parsing/parser.ml" +# 18011 "parsing/parser.ml" in -# 2534 "parsing/parser.mly" +# 2613 "parsing/parser.mly" ( Jane_syntax.Layouts.Ltyp_poly { bound_vars; inner_type } ) -# 17801 "parsing/parser.ml" +# 18017 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_inner_type_, _startpos_xs_) in @@ -17805,15 +18021,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1187 "parsing/parser.mly" +# 1266 "parsing/parser.mly" ( Jane_syntax.Layouts.type_of ~loc:(make_loc _sloc) ~attrs:[] _1 ) -# 17811 "parsing/parser.ml" +# 18027 "parsing/parser.ml" in -# 2535 "parsing/parser.mly" +# 2614 "parsing/parser.mly" ( Ppat_constraint(pat, cty) ) -# 17817 "parsing/parser.ml" +# 18033 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_inner_type_, _startpos_pat_) in @@ -17821,21 +18037,21 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1158 "parsing/parser.mly" +# 1237 "parsing/parser.mly" ( mkpat ~loc:_sloc _1 ) -# 17827 "parsing/parser.ml" +# 18043 "parsing/parser.ml" in -# 2536 "parsing/parser.mly" +# 2615 "parsing/parser.mly" ( _1 ) -# 17833 "parsing/parser.ml" +# 18049 "parsing/parser.ml" in -# 2484 "parsing/parser.mly" +# 2563 "parsing/parser.mly" ( (Nolabel, None, _2) ) -# 17839 "parsing/parser.ml" +# 18055 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -17861,10 +18077,10 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 3493 "parsing/parser.mly" +# 3560 "parsing/parser.mly" ( let loc = make_loc _sloc in mkloc (check_layout ~loc _1) loc ) -# 17868 "parsing/parser.ml" +# 18084 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -17894,9 +18110,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos_layout_ in let _v : (Parsetree.attribute) = -# 3507 "parsing/parser.mly" +# 3574 "parsing/parser.mly" ( Attr.mk ~loc:layout.loc layout (PStr []) ) -# 17900 "parsing/parser.ml" +# 18116 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -17922,11 +18138,11 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 3499 "parsing/parser.mly" +# 3566 "parsing/parser.mly" ( let loc = make_loc _sloc in ignore (check_layout ~loc _1 : const_layout); mkloc _1 loc ) -# 17930 "parsing/parser.ml" +# 18146 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -17949,9 +18165,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Parsetree.pattern * Parsetree.expression * bool) = -# 2955 "parsing/parser.mly" +# 3034 "parsing/parser.mly" ( let p,e = _1 in (p,e,false) ) -# 17955 "parsing/parser.ml" +# 18171 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -17977,9 +18193,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _loc = (_startpos, _endpos) in -# 2958 "parsing/parser.mly" +# 3037 "parsing/parser.mly" ( (mkpatvar ~loc:_loc _1, mkexpvar ~loc:_loc _1, true) ) -# 17983 "parsing/parser.ml" +# 18199 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -17992,9 +18208,9 @@ module Tables = struct let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in let { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _2; - MenhirLib.EngineTypes.startp = _startpos__2_; - MenhirLib.EngineTypes.endp = _endpos__2_; + 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; @@ -18003,25 +18219,33 @@ module Tables = struct MenhirLib.EngineTypes.next = _menhir_stack; }; } = _menhir_stack in - let _2 : (Parsetree.expression) = Obj.magic _2 in + let _1_inlined1 : ((modes * (Lexing.position * Lexing.position)) list -> Parsetree.expression) = Obj.magic _1_inlined1 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__2_ in - let _v : (Parsetree.pattern * Parsetree.expression) = let _1 = + let _endpos = _endpos__1_inlined1_ in + let _v : (Parsetree.pattern * Parsetree.expression) = let _2 = + let _1 = _1_inlined1 in + +# 3113 "parsing/parser.mly" + (_1 []) +# 18233 "parsing/parser.ml" + + in + let _1 = let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2897 "parsing/parser.mly" +# 2979 "parsing/parser.mly" ( mkpatvar ~loc:_sloc _1 ) -# 18019 "parsing/parser.ml" +# 18243 "parsing/parser.ml" in -# 2901 "parsing/parser.mly" +# 2983 "parsing/parser.mly" ( (_1, _2) ) -# 18025 "parsing/parser.ml" +# 18249 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -18069,27 +18293,33 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2897 "parsing/parser.mly" +# 2979 "parsing/parser.mly" ( mkpatvar ~loc:_sloc _1 ) -# 18075 "parsing/parser.ml" +# 18299 "parsing/parser.ml" in let _startpos__2_ = _startpos__1_ in - let _1 = -# 3913 "parsing/parser.mly" - ( false ) -# 18082 "parsing/parser.ml" - in + let _1 = + let flags = +# 1275 "parsing/parser.mly" + ( [] ) +# 18307 "parsing/parser.ml" + in + +# 3987 "parsing/parser.mly" + ( flags ) +# 18312 "parsing/parser.ml" + + in let (_endpos__1_, _startpos__1_) = (_endpos__0_, _endpos__0_) in let _endpos = _endpos__5_ in let _symbolstartpos = if _startpos__1_ != _endpos__1_ then _startpos__1_ else _startpos__2_ in - let _loc__1_ = (_startpos__1_, _endpos__1_) in let _sloc = (_symbolstartpos, _endpos) in -# 2903 "parsing/parser.mly" +# 2985 "parsing/parser.mly" ( let v = _2 in (* PR#7344 *) let t = match _3 with @@ -18098,20 +18328,18 @@ module Tables = struct | _ -> assert false in let loc = Location.(t.ptyp_loc.loc_start, t.ptyp_loc.loc_end) in - let local_loc = _loc__1_ in let typ = ghtyp ~loc (Ptyp_poly([],t)) in let patloc = (_startpos__2_, _endpos__3_) in let pat = - mkpat_local_if _1 (ghpat ~loc:patloc (Ppat_constraint(v, typ))) - local_loc + mkpat_with_modes _1 (ghpat ~loc:patloc (Ppat_constraint(v, typ))) in let exp = - mkexp_local_if _1 ~loc:_sloc ~kwd_loc:(_loc__1_) - (wrap_exp_local_if _1 (mkexp_constraint ~loc:_sloc _5 _3) - local_loc) + mkexp_with_modes _1 + (wrap_exp_with_modes _1 (mkexp_constraint ~loc:_sloc _5 _3)) + _sloc in (pat, exp) ) -# 18115 "parsing/parser.ml" +# 18343 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -18139,14 +18367,14 @@ module Tables = struct 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.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.semv = x; + MenhirLib.EngineTypes.startp = _startpos_x_; + MenhirLib.EngineTypes.endp = _endpos_x_; MenhirLib.EngineTypes.next = _menhir_stack; }; }; @@ -18156,37 +18384,43 @@ module Tables = struct let _5 : (Parsetree.expression) = Obj.magic _5 in let _4 : unit = Obj.magic _4 in let _3 : (Parsetree.core_type option * Parsetree.core_type option) = Obj.magic _3 in - let _1_inlined1 : (Asttypes.label) = Obj.magic _1_inlined1 in - let _1 : unit = Obj.magic _1 in + let _1 : (Asttypes.label) = Obj.magic _1 in + let x : ((modes * (Lexing.position * Lexing.position)) list) = Obj.magic x in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in - let _startpos = _startpos__1_ in + let _startpos = _startpos_x_ in let _endpos = _endpos__5_ in let _v : (Parsetree.pattern * Parsetree.expression) = 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 -# 2897 "parsing/parser.mly" +# 2979 "parsing/parser.mly" ( mkpatvar ~loc:_sloc _1 ) -# 18173 "parsing/parser.ml" +# 18400 "parsing/parser.ml" in - let _startpos__2_ = _startpos__1_inlined1_ in - let _1 = -# 3915 "parsing/parser.mly" - ( true ) -# 18180 "parsing/parser.ml" - in + let _startpos__2_ = _startpos__1_ in + let _1 = + let flags = +# 1277 "parsing/parser.mly" + ( x ) +# 18408 "parsing/parser.ml" + in + +# 3987 "parsing/parser.mly" + ( flags ) +# 18413 "parsing/parser.ml" + + in + let (_endpos__1_, _startpos__1_) = (_endpos_x_, _startpos_x_) in let _endpos = _endpos__5_ in let _symbolstartpos = if _startpos__1_ != _endpos__1_ then _startpos__1_ else _startpos__2_ in - let _loc__1_ = (_startpos__1_, _endpos__1_) in let _sloc = (_symbolstartpos, _endpos) in -# 2903 "parsing/parser.mly" +# 2985 "parsing/parser.mly" ( let v = _2 in (* PR#7344 *) let t = match _3 with @@ -18195,20 +18429,18 @@ module Tables = struct | _ -> assert false in let loc = Location.(t.ptyp_loc.loc_start, t.ptyp_loc.loc_end) in - let local_loc = _loc__1_ in let typ = ghtyp ~loc (Ptyp_poly([],t)) in let patloc = (_startpos__2_, _endpos__3_) in let pat = - mkpat_local_if _1 (ghpat ~loc:patloc (Ppat_constraint(v, typ))) - local_loc + mkpat_with_modes _1 (ghpat ~loc:patloc (Ppat_constraint(v, typ))) in let exp = - mkexp_local_if _1 ~loc:_sloc ~kwd_loc:(_loc__1_) - (wrap_exp_local_if _1 (mkexp_constraint ~loc:_sloc _5 _3) - local_loc) + mkexp_with_modes _1 + (wrap_exp_with_modes _1 (mkexp_constraint ~loc:_sloc _5 _3)) + _sloc in (pat, exp) ) -# 18212 "parsing/parser.ml" +# 18444 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -18279,24 +18511,24 @@ module Tables = struct let xs = # 253 "" ( List.rev xs ) -# 18283 "parsing/parser.ml" +# 18515 "parsing/parser.ml" in -# 1228 "parsing/parser.mly" +# 1307 "parsing/parser.mly" ( xs ) -# 18288 "parsing/parser.ml" +# 18520 "parsing/parser.ml" in -# 3798 "parsing/parser.mly" +# 3865 "parsing/parser.mly" ( _1 ) -# 18294 "parsing/parser.ml" +# 18526 "parsing/parser.ml" in -# 3802 "parsing/parser.mly" +# 3869 "parsing/parser.mly" ( (_1, _3) ) -# 18300 "parsing/parser.ml" +# 18532 "parsing/parser.ml" in let (_endpos__4_, _startpos__4_) = (_endpos__3_inlined1_, _startpos_xs_) in @@ -18305,17 +18537,24 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2897 "parsing/parser.mly" +# 2979 "parsing/parser.mly" ( mkpatvar ~loc:_sloc _1 ) -# 18311 "parsing/parser.ml" +# 18543 "parsing/parser.ml" in let _startpos__2_ = _startpos__1_ in - let _1 = -# 3913 "parsing/parser.mly" - ( false ) -# 18318 "parsing/parser.ml" - in + let _1 = + let flags = +# 1275 "parsing/parser.mly" + ( [] ) +# 18551 "parsing/parser.ml" + in + +# 3987 "parsing/parser.mly" + ( flags ) +# 18556 "parsing/parser.ml" + + in let (_endpos__1_, _startpos__1_) = (_endpos__0_, _endpos__0_) in let _endpos = _endpos__6_ in let _symbolstartpos = if _startpos__1_ != _endpos__1_ then @@ -18323,10 +18562,9 @@ module Tables = struct else _startpos__2_ in let _loc__4_ = (_startpos__4_, _endpos__4_) in - let _loc__1_ = (_startpos__1_, _endpos__1_) in let _sloc = (_symbolstartpos, _endpos) in -# 2925 "parsing/parser.mly" +# 3005 "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 @@ -18335,14 +18573,13 @@ module Tables = struct Jane_syntax.Layouts.type_of ~loc:typ_loc ~attrs:[] ltyp in let pat = - mkpat_local_if _1 + mkpat_with_modes _1 (ghpat ~loc:patloc (Ppat_constraint(_2, typ))) - _loc__1_ in - let exp = mkexp_local_if _1 ~loc:_sloc ~kwd_loc:(_loc__1_) _6 in + let exp = mkexp_with_modes _1 _6 _sloc in (pat, exp) ) -# 18346 "parsing/parser.ml" +# 18583 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -18385,14 +18622,14 @@ module Tables = struct 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.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.semv = x; + MenhirLib.EngineTypes.startp = _startpos_x_; + MenhirLib.EngineTypes.endp = _endpos_x_; MenhirLib.EngineTypes.next = _menhir_stack; }; }; @@ -18408,10 +18645,10 @@ module Tables = struct let _2 : unit = Obj.magic _2 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 + let _1 : (Asttypes.label) = Obj.magic _1 in + let x : ((modes * (Lexing.position * Lexing.position)) list) = Obj.magic x in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in - let _startpos = _startpos__1_ in + let _startpos = _startpos_x_ in let _endpos = _endpos__6_ in let _v : (Parsetree.pattern * Parsetree.expression) = let _4 = let _3 = _3_inlined1 in @@ -18420,54 +18657,60 @@ module Tables = struct let xs = # 253 "" ( List.rev xs ) -# 18424 "parsing/parser.ml" +# 18661 "parsing/parser.ml" in -# 1228 "parsing/parser.mly" +# 1307 "parsing/parser.mly" ( xs ) -# 18429 "parsing/parser.ml" +# 18666 "parsing/parser.ml" in -# 3798 "parsing/parser.mly" +# 3865 "parsing/parser.mly" ( _1 ) -# 18435 "parsing/parser.ml" +# 18672 "parsing/parser.ml" in -# 3802 "parsing/parser.mly" +# 3869 "parsing/parser.mly" ( (_1, _3) ) -# 18441 "parsing/parser.ml" +# 18678 "parsing/parser.ml" in let (_endpos__4_, _startpos__4_) = (_endpos__3_inlined1_, _startpos_xs_) in 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 -# 2897 "parsing/parser.mly" +# 2979 "parsing/parser.mly" ( mkpatvar ~loc:_sloc _1 ) -# 18453 "parsing/parser.ml" +# 18689 "parsing/parser.ml" in - let _startpos__2_ = _startpos__1_inlined1_ in - let _1 = -# 3915 "parsing/parser.mly" - ( true ) -# 18460 "parsing/parser.ml" - in + let _startpos__2_ = _startpos__1_ in + let _1 = + let flags = +# 1277 "parsing/parser.mly" + ( x ) +# 18697 "parsing/parser.ml" + in + +# 3987 "parsing/parser.mly" + ( flags ) +# 18702 "parsing/parser.ml" + + in + let (_endpos__1_, _startpos__1_) = (_endpos_x_, _startpos_x_) in let _endpos = _endpos__6_ in let _symbolstartpos = if _startpos__1_ != _endpos__1_ then _startpos__1_ else _startpos__2_ in let _loc__4_ = (_startpos__4_, _endpos__4_) in - let _loc__1_ = (_startpos__1_, _endpos__1_) in let _sloc = (_symbolstartpos, _endpos) in -# 2925 "parsing/parser.mly" +# 3005 "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 @@ -18476,14 +18719,13 @@ module Tables = struct Jane_syntax.Layouts.type_of ~loc:typ_loc ~attrs:[] ltyp in let pat = - mkpat_local_if _1 + mkpat_with_modes _1 (ghpat ~loc:patloc (Ppat_constraint(_2, typ))) - _loc__1_ in - let exp = mkexp_local_if _1 ~loc:_sloc ~kwd_loc:(_loc__1_) _6 in + let exp = mkexp_with_modes _1 _6 _sloc in (pat, exp) ) -# 18487 "parsing/parser.ml" +# 18729 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -18559,21 +18801,21 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2897 "parsing/parser.mly" +# 2979 "parsing/parser.mly" ( mkpatvar ~loc:_sloc _1 ) -# 18565 "parsing/parser.ml" +# 18807 "parsing/parser.ml" in let _endpos = _endpos__8_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2941 "parsing/parser.mly" +# 3020 "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) ) -# 18577 "parsing/parser.ml" +# 18819 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -18610,9 +18852,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : (Parsetree.pattern * Parsetree.expression) = -# 2946 "parsing/parser.mly" +# 3025 "parsing/parser.mly" ( (_1, _3) ) -# 18616 "parsing/parser.ml" +# 18858 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -18663,10 +18905,10 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__5_ in let _v : (Parsetree.pattern * Parsetree.expression) = -# 2948 "parsing/parser.mly" +# 3027 "parsing/parser.mly" ( let loc = (_startpos__1_, _endpos__3_) in (ghpat ~loc (Ppat_constraint(_1, _3)), _5) ) -# 18670 "parsing/parser.ml" +# 18912 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -18696,9 +18938,9 @@ module Tables = struct }; }; } = _menhir_stack in - let _3 : (Parsetree.expression) = Obj.magic _3 in + let _3 : ((modes * (Lexing.position * Lexing.position)) list -> Parsetree.expression) = Obj.magic _3 in let _1_inlined1 : (Asttypes.label) = Obj.magic _1_inlined1 in - let _1 : unit = Obj.magic _1 in + let _1 : ((modes * (Lexing.position * Lexing.position)) list) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in @@ -18708,19 +18950,18 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2897 "parsing/parser.mly" +# 2979 "parsing/parser.mly" ( mkpatvar ~loc:_sloc _1 ) -# 18714 "parsing/parser.ml" +# 18956 "parsing/parser.ml" in let _endpos = _endpos__3_ in let _symbolstartpos = _startpos__1_ in - let _loc__1_ = (_startpos__1_, _endpos__1_) in let _sloc = (_symbolstartpos, _endpos) in -# 2951 "parsing/parser.mly" - ( (_2, mkexp_stack ~loc:_sloc ~kwd_loc:(_loc__1_) _3) ) -# 18724 "parsing/parser.ml" +# 3030 "parsing/parser.mly" + ( (_2, mkexp_with_modes _1 (_3 _1) _sloc) ) +# 18965 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -18781,36 +19022,36 @@ module Tables = struct let attrs2 = let _1 = _1_inlined2 in -# 4472 "parsing/parser.mly" +# 4544 "parsing/parser.mly" ( _1 ) -# 18787 "parsing/parser.ml" +# 19028 "parsing/parser.ml" in let _endpos_attrs2_ = _endpos__1_inlined2_ in let attrs1 = let _1 = _1_inlined1 in -# 4476 "parsing/parser.mly" +# 4548 "parsing/parser.mly" ( _1 ) -# 18796 "parsing/parser.ml" +# 19037 "parsing/parser.ml" in let _endpos = _endpos_attrs2_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2978 "parsing/parser.mly" +# 3057 "parsing/parser.mly" ( let attrs = attrs1 @ attrs2 in mklbs ext rec_flag (mklb ~loc:_sloc true body attrs) ) -# 18808 "parsing/parser.ml" +# 19049 "parsing/parser.ml" in -# 2968 "parsing/parser.mly" +# 3047 "parsing/parser.mly" ( _1 ) -# 18814 "parsing/parser.ml" +# 19055 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -18840,9 +19081,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (let_bindings) = -# 2969 "parsing/parser.mly" +# 3048 "parsing/parser.mly" ( addlb _1 _2 ) -# 18846 "parsing/parser.ml" +# 19087 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -18896,41 +19137,41 @@ module Tables = struct let attrs2 = let _1 = _1_inlined2 in -# 4472 "parsing/parser.mly" +# 4544 "parsing/parser.mly" ( _1 ) -# 18902 "parsing/parser.ml" +# 19143 "parsing/parser.ml" in let _endpos_attrs2_ = _endpos__1_inlined2_ in let attrs1 = let _1 = _1_inlined1 in -# 4476 "parsing/parser.mly" +# 4548 "parsing/parser.mly" ( _1 ) -# 18911 "parsing/parser.ml" +# 19152 "parsing/parser.ml" in let ext = -# 4483 "parsing/parser.mly" +# 4555 "parsing/parser.mly" ( None ) -# 18917 "parsing/parser.ml" +# 19158 "parsing/parser.ml" in let _endpos = _endpos_attrs2_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2978 "parsing/parser.mly" +# 3057 "parsing/parser.mly" ( let attrs = attrs1 @ attrs2 in mklbs ext rec_flag (mklb ~loc:_sloc true body attrs) ) -# 18928 "parsing/parser.ml" +# 19169 "parsing/parser.ml" in -# 2968 "parsing/parser.mly" +# 3047 "parsing/parser.mly" ( _1 ) -# 18934 "parsing/parser.ml" +# 19175 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -18998,18 +19239,18 @@ module Tables = struct let attrs2 = let _1 = _1_inlined3 in -# 4472 "parsing/parser.mly" +# 4544 "parsing/parser.mly" ( _1 ) -# 19004 "parsing/parser.ml" +# 19245 "parsing/parser.ml" in let _endpos_attrs2_ = _endpos__1_inlined3_ in let attrs1 = let _1 = _1_inlined2 in -# 4476 "parsing/parser.mly" +# 4548 "parsing/parser.mly" ( _1 ) -# 19013 "parsing/parser.ml" +# 19254 "parsing/parser.ml" in let ext = @@ -19018,27 +19259,27 @@ module Tables = struct let _startpos = _startpos__1_ in let _loc = (_startpos, _endpos) in -# 4485 "parsing/parser.mly" +# 4557 "parsing/parser.mly" ( not_expecting _loc "extension" ) -# 19024 "parsing/parser.ml" +# 19265 "parsing/parser.ml" in let _endpos = _endpos_attrs2_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2978 "parsing/parser.mly" +# 3057 "parsing/parser.mly" ( let attrs = attrs1 @ attrs2 in mklbs ext rec_flag (mklb ~loc:_sloc true body attrs) ) -# 19036 "parsing/parser.ml" +# 19277 "parsing/parser.ml" in -# 2968 "parsing/parser.mly" +# 3047 "parsing/parser.mly" ( _1 ) -# 19042 "parsing/parser.ml" +# 19283 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -19068,9 +19309,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (let_bindings) = -# 2969 "parsing/parser.mly" +# 3048 "parsing/parser.mly" ( addlb _1 _2 ) -# 19074 "parsing/parser.ml" +# 19315 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -19093,9 +19334,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Parsetree.pattern) = -# 2520 "parsing/parser.mly" +# 2599 "parsing/parser.mly" ( _1 ) -# 19099 "parsing/parser.ml" +# 19340 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -19133,24 +19374,24 @@ module Tables = struct let _endpos = _endpos__3_ in let _v : (Parsetree.pattern) = let _1 = let _1 = -# 2522 "parsing/parser.mly" +# 2601 "parsing/parser.mly" ( Ppat_constraint(_1, _3) ) -# 19139 "parsing/parser.ml" +# 19380 "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 -# 1158 "parsing/parser.mly" +# 1237 "parsing/parser.mly" ( mkpat ~loc:_sloc _1 ) -# 19148 "parsing/parser.ml" +# 19389 "parsing/parser.ml" in -# 2523 "parsing/parser.mly" +# 2602 "parsing/parser.mly" ( _1 ) -# 19154 "parsing/parser.ml" +# 19395 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -19210,24 +19451,24 @@ module Tables = struct let xs = # 253 "" ( List.rev xs ) -# 19214 "parsing/parser.ml" +# 19455 "parsing/parser.ml" in -# 1228 "parsing/parser.mly" +# 1307 "parsing/parser.mly" ( xs ) -# 19219 "parsing/parser.ml" +# 19460 "parsing/parser.ml" in -# 3798 "parsing/parser.mly" +# 3865 "parsing/parser.mly" ( _1 ) -# 19225 "parsing/parser.ml" +# 19466 "parsing/parser.ml" in -# 2534 "parsing/parser.mly" +# 2613 "parsing/parser.mly" ( Jane_syntax.Layouts.Ltyp_poly { bound_vars; inner_type } ) -# 19231 "parsing/parser.ml" +# 19472 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_inner_type_, _startpos_xs_) in @@ -19235,15 +19476,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1187 "parsing/parser.mly" +# 1266 "parsing/parser.mly" ( Jane_syntax.Layouts.type_of ~loc:(make_loc _sloc) ~attrs:[] _1 ) -# 19241 "parsing/parser.ml" +# 19482 "parsing/parser.ml" in -# 2535 "parsing/parser.mly" +# 2614 "parsing/parser.mly" ( Ppat_constraint(pat, cty) ) -# 19247 "parsing/parser.ml" +# 19488 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_inner_type_, _startpos_pat_) in @@ -19251,21 +19492,21 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1158 "parsing/parser.mly" +# 1237 "parsing/parser.mly" ( mkpat ~loc:_sloc _1 ) -# 19257 "parsing/parser.ml" +# 19498 "parsing/parser.ml" in -# 2536 "parsing/parser.mly" +# 2615 "parsing/parser.mly" ( _1 ) -# 19263 "parsing/parser.ml" +# 19504 "parsing/parser.ml" in -# 2525 "parsing/parser.mly" +# 2604 "parsing/parser.mly" ( _1 ) -# 19269 "parsing/parser.ml" +# 19510 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -19278,9 +19519,9 @@ module Tables = struct let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in let { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = exp; - MenhirLib.EngineTypes.startp = _startpos_exp_; - MenhirLib.EngineTypes.endp = _endpos_exp_; + 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; @@ -19289,25 +19530,33 @@ module Tables = struct MenhirLib.EngineTypes.next = _menhir_stack; }; } = _menhir_stack in - let exp : (Parsetree.expression) = Obj.magic exp in + let _1_inlined1 : ((modes * (Lexing.position * Lexing.position)) list -> Parsetree.expression) = Obj.magic _1_inlined1 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_exp_ in - let _v : (Parsetree.pattern * Parsetree.expression) = let pat = + let _endpos = _endpos__1_inlined1_ in + let _v : (Parsetree.pattern * Parsetree.expression) = let exp = + let _1 = _1_inlined1 in + +# 3113 "parsing/parser.mly" + (_1 []) +# 19544 "parsing/parser.ml" + + in + let pat = let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2897 "parsing/parser.mly" +# 2979 "parsing/parser.mly" ( mkpatvar ~loc:_sloc _1 ) -# 19305 "parsing/parser.ml" +# 19554 "parsing/parser.ml" in -# 2995 "parsing/parser.mly" +# 3074 "parsing/parser.mly" ( (pat, exp) ) -# 19311 "parsing/parser.ml" +# 19560 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -19333,9 +19582,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _loc = (_startpos, _endpos) in -# 2998 "parsing/parser.mly" +# 3077 "parsing/parser.mly" ( (mkpatvar ~loc:_loc _1, mkexpvar ~loc:_loc _1) ) -# 19339 "parsing/parser.ml" +# 19588 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -19386,10 +19635,10 @@ module Tables = struct let _startpos = _startpos_pat_ in let _endpos = _endpos_exp_ in let _v : (Parsetree.pattern * Parsetree.expression) = -# 3000 "parsing/parser.mly" +# 3079 "parsing/parser.mly" ( let loc = (_startpos_pat_, _endpos_typ_) in (ghpat ~loc (Ppat_constraint(pat, typ)), exp) ) -# 19393 "parsing/parser.ml" +# 19642 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -19426,9 +19675,9 @@ module Tables = struct let _startpos = _startpos_pat_ in let _endpos = _endpos_exp_ in let _v : (Parsetree.pattern * Parsetree.expression) = -# 3003 "parsing/parser.mly" +# 3082 "parsing/parser.mly" ( (pat, exp) ) -# 19432 "parsing/parser.ml" +# 19681 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -19451,10 +19700,10 @@ module Tables = struct let _startpos = _startpos_body_ in let _endpos = _endpos_body_ in let _v : (Parsetree.pattern * Parsetree.expression * Parsetree.binding_op list) = -# 3007 "parsing/parser.mly" +# 3086 "parsing/parser.mly" ( let let_pat, let_exp = body in let_pat, let_exp, [] ) -# 19458 "parsing/parser.ml" +# 19707 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -19486,9 +19735,9 @@ module Tables = struct } = _menhir_stack in let body : (Parsetree.pattern * Parsetree.expression) = Obj.magic body in let _1 : ( -# 918 "parsing/parser.mly" +# 995 "parsing/parser.mly" (string) -# 19492 "parsing/parser.ml" +# 19741 "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 @@ -19499,22 +19748,22 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1123 "parsing/parser.mly" +# 1202 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 19505 "parsing/parser.ml" +# 19754 "parsing/parser.ml" in let _endpos = _endpos_body_ in let _symbolstartpos = _startpos_bindings_ in let _sloc = (_symbolstartpos, _endpos) in -# 3010 "parsing/parser.mly" +# 3089 "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 ) -# 19518 "parsing/parser.ml" +# 19767 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -19532,7 +19781,7 @@ module Tables = struct let _v : (Parsetree.class_declaration list) = # 211 "" ( [] ) -# 19536 "parsing/parser.ml" +# 19785 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -19596,9 +19845,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 : ( -# 937 "parsing/parser.mly" +# 1014 "parsing/parser.mly" (string) -# 19602 "parsing/parser.ml" +# 19851 "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 @@ -19611,9 +19860,9 @@ module Tables = struct let attrs2 = let _1 = _1_inlined3 in -# 4472 "parsing/parser.mly" +# 4544 "parsing/parser.mly" ( _1 ) -# 19617 "parsing/parser.ml" +# 19866 "parsing/parser.ml" in let _endpos_attrs2_ = _endpos__1_inlined3_ in @@ -19623,24 +19872,24 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1123 "parsing/parser.mly" +# 1202 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 19629 "parsing/parser.ml" +# 19878 "parsing/parser.ml" in let attrs1 = let _1 = _1_inlined1 in -# 4476 "parsing/parser.mly" +# 4548 "parsing/parser.mly" ( _1 ) -# 19637 "parsing/parser.ml" +# 19886 "parsing/parser.ml" in let _endpos = _endpos_attrs2_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2105 "parsing/parser.mly" +# 2184 "parsing/parser.mly" ( let attrs = attrs1 @ attrs2 in let loc = make_loc _sloc in @@ -19648,13 +19897,13 @@ module Tables = struct let text = symbol_text _symbolstartpos in Ci.mk id body ~virt ~params ~attrs ~loc ~text ~docs ) -# 19652 "parsing/parser.ml" +# 19901 "parsing/parser.ml" in # 213 "" ( x :: xs ) -# 19658 "parsing/parser.ml" +# 19907 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -19672,7 +19921,7 @@ module Tables = struct let _v : (Parsetree.class_description list) = # 211 "" ( [] ) -# 19676 "parsing/parser.ml" +# 19925 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -19743,9 +19992,9 @@ module Tables = struct let cty : (Parsetree.class_type) = Obj.magic cty in let _6 : unit = Obj.magic _6 in let _1_inlined2 : ( -# 937 "parsing/parser.mly" +# 1014 "parsing/parser.mly" (string) -# 19749 "parsing/parser.ml" +# 19998 "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 @@ -19758,9 +20007,9 @@ module Tables = struct let attrs2 = let _1 = _1_inlined3 in -# 4472 "parsing/parser.mly" +# 4544 "parsing/parser.mly" ( _1 ) -# 19764 "parsing/parser.ml" +# 20013 "parsing/parser.ml" in let _endpos_attrs2_ = _endpos__1_inlined3_ in @@ -19770,24 +20019,24 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1123 "parsing/parser.mly" +# 1202 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 19776 "parsing/parser.ml" +# 20025 "parsing/parser.ml" in let attrs1 = let _1 = _1_inlined1 in -# 4476 "parsing/parser.mly" +# 4548 "parsing/parser.mly" ( _1 ) -# 19784 "parsing/parser.ml" +# 20033 "parsing/parser.ml" in let _endpos = _endpos_attrs2_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2396 "parsing/parser.mly" +# 2475 "parsing/parser.mly" ( let attrs = attrs1 @ attrs2 in let loc = make_loc _sloc in @@ -19795,13 +20044,13 @@ module Tables = struct let text = symbol_text _symbolstartpos in Ci.mk id cty ~virt ~params ~attrs ~loc ~text ~docs ) -# 19799 "parsing/parser.ml" +# 20048 "parsing/parser.ml" in # 213 "" ( x :: xs ) -# 19805 "parsing/parser.ml" +# 20054 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -19819,7 +20068,7 @@ module Tables = struct let _v : (Parsetree.class_type_declaration list) = # 211 "" ( [] ) -# 19823 "parsing/parser.ml" +# 20072 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -19890,9 +20139,9 @@ module Tables = struct let csig : (Parsetree.class_type) = Obj.magic csig in let _6 : unit = Obj.magic _6 in let _1_inlined2 : ( -# 937 "parsing/parser.mly" +# 1014 "parsing/parser.mly" (string) -# 19896 "parsing/parser.ml" +# 20145 "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 @@ -19905,9 +20154,9 @@ module Tables = struct let attrs2 = let _1 = _1_inlined3 in -# 4472 "parsing/parser.mly" +# 4544 "parsing/parser.mly" ( _1 ) -# 19911 "parsing/parser.ml" +# 20160 "parsing/parser.ml" in let _endpos_attrs2_ = _endpos__1_inlined3_ in @@ -19917,24 +20166,24 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1123 "parsing/parser.mly" +# 1202 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 19923 "parsing/parser.ml" +# 20172 "parsing/parser.ml" in let attrs1 = let _1 = _1_inlined1 in -# 4476 "parsing/parser.mly" +# 4548 "parsing/parser.mly" ( _1 ) -# 19931 "parsing/parser.ml" +# 20180 "parsing/parser.ml" in let _endpos = _endpos_attrs2_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2435 "parsing/parser.mly" +# 2514 "parsing/parser.mly" ( let attrs = attrs1 @ attrs2 in let loc = make_loc _sloc in @@ -19942,13 +20191,13 @@ module Tables = struct let text = symbol_text _symbolstartpos in Ci.mk id csig ~virt ~params ~attrs ~loc ~text ~docs ) -# 19946 "parsing/parser.ml" +# 20195 "parsing/parser.ml" in # 213 "" ( x :: xs ) -# 19952 "parsing/parser.ml" +# 20201 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -19966,7 +20215,7 @@ module Tables = struct let _v : (Parsetree.module_binding list) = # 211 "" ( [] ) -# 19970 "parsing/parser.ml" +# 20219 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -20027,9 +20276,9 @@ module Tables = struct let attrs2 = let _1 = _1_inlined3 in -# 4472 "parsing/parser.mly" +# 4544 "parsing/parser.mly" ( _1 ) -# 20033 "parsing/parser.ml" +# 20282 "parsing/parser.ml" in let _endpos_attrs2_ = _endpos__1_inlined3_ in @@ -20039,24 +20288,24 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1123 "parsing/parser.mly" +# 1202 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 20045 "parsing/parser.ml" +# 20294 "parsing/parser.ml" in let attrs1 = let _1 = _1_inlined1 in -# 4476 "parsing/parser.mly" +# 4548 "parsing/parser.mly" ( _1 ) -# 20053 "parsing/parser.ml" +# 20302 "parsing/parser.ml" in let _endpos = _endpos_attrs2_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1751 "parsing/parser.mly" +# 1830 "parsing/parser.mly" ( let loc = make_loc _sloc in let attrs = attrs1 @ attrs2 in @@ -20064,13 +20313,13 @@ module Tables = struct let text = symbol_text _symbolstartpos in Mb.mk name body ~attrs ~loc ~text ~docs ) -# 20068 "parsing/parser.ml" +# 20317 "parsing/parser.ml" in # 213 "" ( x :: xs ) -# 20074 "parsing/parser.ml" +# 20323 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -20088,7 +20337,7 @@ module Tables = struct let _v : (Parsetree.module_declaration list) = # 211 "" ( [] ) -# 20092 "parsing/parser.ml" +# 20341 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -20156,9 +20405,9 @@ module Tables = struct let attrs2 = let _1 = _1_inlined3 in -# 4472 "parsing/parser.mly" +# 4544 "parsing/parser.mly" ( _1 ) -# 20162 "parsing/parser.ml" +# 20411 "parsing/parser.ml" in let _endpos_attrs2_ = _endpos__1_inlined3_ in @@ -20168,24 +20417,24 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1123 "parsing/parser.mly" +# 1202 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 20174 "parsing/parser.ml" +# 20423 "parsing/parser.ml" in let attrs1 = let _1 = _1_inlined1 in -# 4476 "parsing/parser.mly" +# 4548 "parsing/parser.mly" ( _1 ) -# 20182 "parsing/parser.ml" +# 20431 "parsing/parser.ml" in let _endpos = _endpos_attrs2_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2046 "parsing/parser.mly" +# 2125 "parsing/parser.mly" ( let attrs = attrs1 @ attrs2 in let docs = symbol_docs _sloc in @@ -20193,13 +20442,13 @@ module Tables = struct let text = symbol_text _symbolstartpos in Md.mk name mty ~attrs ~loc ~text ~docs ) -# 20197 "parsing/parser.ml" +# 20446 "parsing/parser.ml" in # 213 "" ( x :: xs ) -# 20203 "parsing/parser.ml" +# 20452 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -20217,7 +20466,7 @@ module Tables = struct let _v : (Parsetree.attributes) = # 211 "" ( [] ) -# 20221 "parsing/parser.ml" +# 20470 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -20249,7 +20498,7 @@ module Tables = struct let _v : (Parsetree.attributes) = # 213 "" ( x :: xs ) -# 20253 "parsing/parser.ml" +# 20502 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -20267,7 +20516,7 @@ module Tables = struct let _v : (Parsetree.type_declaration list) = # 211 "" ( [] ) -# 20271 "parsing/parser.ml" +# 20520 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -20339,9 +20588,9 @@ module Tables = struct 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 : ( -# 937 "parsing/parser.mly" +# 1014 "parsing/parser.mly" (string) -# 20345 "parsing/parser.ml" +# 20594 "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 @@ -20354,9 +20603,9 @@ module Tables = struct let attrs2 = let _1 = _1_inlined3 in -# 4472 "parsing/parser.mly" +# 4544 "parsing/parser.mly" ( _1 ) -# 20360 "parsing/parser.ml" +# 20609 "parsing/parser.ml" in let _endpos_attrs2_ = _endpos__1_inlined3_ in @@ -20365,18 +20614,18 @@ module Tables = struct let xs = # 253 "" ( List.rev xs ) -# 20369 "parsing/parser.ml" +# 20618 "parsing/parser.ml" in -# 1210 "parsing/parser.mly" +# 1289 "parsing/parser.mly" ( xs ) -# 20374 "parsing/parser.ml" +# 20623 "parsing/parser.ml" in -# 3444 "parsing/parser.mly" +# 3511 "parsing/parser.mly" ( _1 ) -# 20380 "parsing/parser.ml" +# 20629 "parsing/parser.ml" in let id = @@ -20385,24 +20634,24 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1123 "parsing/parser.mly" +# 1202 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 20391 "parsing/parser.ml" +# 20640 "parsing/parser.ml" in let attrs1 = let _1 = _1_inlined1 in -# 4476 "parsing/parser.mly" +# 4548 "parsing/parser.mly" ( _1 ) -# 20399 "parsing/parser.ml" +# 20648 "parsing/parser.ml" in let _endpos = _endpos_attrs2_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 3433 "parsing/parser.mly" +# 3500 "parsing/parser.mly" ( let (kind, priv, manifest) = kind_priv_manifest in let docs = symbol_docs _sloc in @@ -20411,13 +20660,13 @@ module Tables = struct let text = symbol_text _symbolstartpos in Type.mk id ~params ?layout ~cstrs ~kind ~priv ?manifest ~attrs ~loc ~docs ~text ) -# 20415 "parsing/parser.ml" +# 20664 "parsing/parser.ml" in # 213 "" ( x :: xs ) -# 20421 "parsing/parser.ml" +# 20670 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -20435,7 +20684,7 @@ module Tables = struct let _v : (Parsetree.type_declaration list) = # 211 "" ( [] ) -# 20439 "parsing/parser.ml" +# 20688 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -20514,9 +20763,9 @@ module Tables = struct let _1_inlined3 : unit = Obj.magic _1_inlined3 in let layout : (Parsetree.attribute option) = Obj.magic layout in let _1_inlined2 : ( -# 937 "parsing/parser.mly" +# 1014 "parsing/parser.mly" (string) -# 20520 "parsing/parser.ml" +# 20769 "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 @@ -20529,9 +20778,9 @@ module Tables = struct let attrs2 = let _1 = _1_inlined4 in -# 4472 "parsing/parser.mly" +# 4544 "parsing/parser.mly" ( _1 ) -# 20535 "parsing/parser.ml" +# 20784 "parsing/parser.ml" in let _endpos_attrs2_ = _endpos__1_inlined4_ in @@ -20540,24 +20789,24 @@ module Tables = struct let xs = # 253 "" ( List.rev xs ) -# 20544 "parsing/parser.ml" +# 20793 "parsing/parser.ml" in -# 1210 "parsing/parser.mly" +# 1289 "parsing/parser.mly" ( xs ) -# 20549 "parsing/parser.ml" +# 20798 "parsing/parser.ml" in -# 3444 "parsing/parser.mly" +# 3511 "parsing/parser.mly" ( _1 ) -# 20555 "parsing/parser.ml" +# 20804 "parsing/parser.ml" in let kind_priv_manifest = -# 3479 "parsing/parser.mly" +# 3546 "parsing/parser.mly" ( _2 ) -# 20561 "parsing/parser.ml" +# 20810 "parsing/parser.ml" in let id = let (_endpos__1_, _startpos__1_, _1) = (_endpos__1_inlined2_, _startpos__1_inlined2_, _1_inlined2) in @@ -20565,24 +20814,24 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1123 "parsing/parser.mly" +# 1202 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 20571 "parsing/parser.ml" +# 20820 "parsing/parser.ml" in let attrs1 = let _1 = _1_inlined1 in -# 4476 "parsing/parser.mly" +# 4548 "parsing/parser.mly" ( _1 ) -# 20579 "parsing/parser.ml" +# 20828 "parsing/parser.ml" in let _endpos = _endpos_attrs2_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 3433 "parsing/parser.mly" +# 3500 "parsing/parser.mly" ( let (kind, priv, manifest) = kind_priv_manifest in let docs = symbol_docs _sloc in @@ -20591,13 +20840,13 @@ module Tables = struct let text = symbol_text _symbolstartpos in Type.mk id ~params ?layout ~cstrs ~kind ~priv ?manifest ~attrs ~loc ~docs ~text ) -# 20595 "parsing/parser.ml" +# 20844 "parsing/parser.ml" in # 213 "" ( x :: xs ) -# 20601 "parsing/parser.ml" +# 20850 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -20615,7 +20864,7 @@ module Tables = struct let _v : (Parsetree.attributes) = # 211 "" ( [] ) -# 20619 "parsing/parser.ml" +# 20868 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -20647,7 +20896,7 @@ module Tables = struct let _v : (Parsetree.attributes) = # 213 "" ( x :: xs ) -# 20651 "parsing/parser.ml" +# 20900 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -20665,7 +20914,7 @@ module Tables = struct let _v : (Parsetree.signature_item list list) = # 211 "" ( [] ) -# 20669 "parsing/parser.ml" +# 20918 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -20698,21 +20947,21 @@ module Tables = struct let _1 = let _startpos = _startpos__1_ in -# 1133 "parsing/parser.mly" +# 1212 "parsing/parser.mly" ( text_sig _startpos ) -# 20704 "parsing/parser.ml" +# 20953 "parsing/parser.ml" in -# 1897 "parsing/parser.mly" +# 1976 "parsing/parser.mly" ( _1 ) -# 20710 "parsing/parser.ml" +# 20959 "parsing/parser.ml" in # 213 "" ( x :: xs ) -# 20716 "parsing/parser.ml" +# 20965 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -20745,21 +20994,21 @@ module Tables = struct let _1 = let _startpos = _startpos__1_ in -# 1131 "parsing/parser.mly" +# 1210 "parsing/parser.mly" ( text_sig _startpos @ [_1] ) -# 20751 "parsing/parser.ml" +# 21000 "parsing/parser.ml" in -# 1897 "parsing/parser.mly" +# 1976 "parsing/parser.mly" ( _1 ) -# 20757 "parsing/parser.ml" +# 21006 "parsing/parser.ml" in # 213 "" ( x :: xs ) -# 20763 "parsing/parser.ml" +# 21012 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -20777,7 +21026,7 @@ module Tables = struct let _v : (Parsetree.structure_item list list) = # 211 "" ( [] ) -# 20781 "parsing/parser.ml" +# 21030 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -20810,40 +21059,40 @@ module Tables = struct let _1 = let ys = let items = -# 1196 "parsing/parser.mly" +# 1275 "parsing/parser.mly" ( [] ) -# 20816 "parsing/parser.ml" +# 21065 "parsing/parser.ml" in -# 1625 "parsing/parser.mly" +# 1704 "parsing/parser.mly" ( items ) -# 20821 "parsing/parser.ml" +# 21070 "parsing/parser.ml" in let xs = let _startpos = _startpos__1_ in -# 1129 "parsing/parser.mly" +# 1208 "parsing/parser.mly" ( text_str _startpos ) -# 20829 "parsing/parser.ml" +# 21078 "parsing/parser.ml" in # 267 "" ( xs @ ys ) -# 20835 "parsing/parser.ml" +# 21084 "parsing/parser.ml" in -# 1641 "parsing/parser.mly" +# 1720 "parsing/parser.mly" ( _1 ) -# 20841 "parsing/parser.ml" +# 21090 "parsing/parser.ml" in # 213 "" ( x :: xs ) -# 20847 "parsing/parser.ml" +# 21096 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -20895,70 +21144,70 @@ module Tables = struct let _1 = let _1 = let attrs = -# 4472 "parsing/parser.mly" +# 4544 "parsing/parser.mly" ( _1 ) -# 20901 "parsing/parser.ml" +# 21150 "parsing/parser.ml" in -# 1632 "parsing/parser.mly" +# 1711 "parsing/parser.mly" ( mkstrexp e attrs ) -# 20906 "parsing/parser.ml" +# 21155 "parsing/parser.ml" in let _startpos__1_ = _startpos_e_ in let _startpos = _startpos__1_ in -# 1127 "parsing/parser.mly" +# 1206 "parsing/parser.mly" ( text_str _startpos @ [_1] ) -# 20914 "parsing/parser.ml" +# 21163 "parsing/parser.ml" in let _startpos__1_ = _startpos_e_ in let _endpos = _endpos__1_ in let _startpos = _startpos__1_ in -# 1146 "parsing/parser.mly" +# 1225 "parsing/parser.mly" ( mark_rhs_docs _startpos _endpos; _1 ) -# 20924 "parsing/parser.ml" +# 21173 "parsing/parser.ml" in -# 1198 "parsing/parser.mly" +# 1277 "parsing/parser.mly" ( x ) -# 20930 "parsing/parser.ml" +# 21179 "parsing/parser.ml" in -# 1625 "parsing/parser.mly" +# 1704 "parsing/parser.mly" ( items ) -# 20936 "parsing/parser.ml" +# 21185 "parsing/parser.ml" in let xs = let _startpos = _startpos__1_ in -# 1129 "parsing/parser.mly" +# 1208 "parsing/parser.mly" ( text_str _startpos ) -# 20944 "parsing/parser.ml" +# 21193 "parsing/parser.ml" in # 267 "" ( xs @ ys ) -# 20950 "parsing/parser.ml" +# 21199 "parsing/parser.ml" in -# 1641 "parsing/parser.mly" +# 1720 "parsing/parser.mly" ( _1 ) -# 20956 "parsing/parser.ml" +# 21205 "parsing/parser.ml" in # 213 "" ( x :: xs ) -# 20962 "parsing/parser.ml" +# 21211 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -20991,21 +21240,21 @@ module Tables = struct let _1 = let _startpos = _startpos__1_ in -# 1127 "parsing/parser.mly" +# 1206 "parsing/parser.mly" ( text_str _startpos @ [_1] ) -# 20997 "parsing/parser.ml" +# 21246 "parsing/parser.ml" in -# 1641 "parsing/parser.mly" +# 1720 "parsing/parser.mly" ( _1 ) -# 21003 "parsing/parser.ml" +# 21252 "parsing/parser.ml" in # 213 "" ( x :: xs ) -# 21009 "parsing/parser.ml" +# 21258 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -21023,7 +21272,7 @@ module Tables = struct let _v : (Parsetree.class_type_field list list) = # 211 "" ( [] ) -# 21027 "parsing/parser.ml" +# 21276 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -21055,15 +21304,15 @@ module Tables = struct let _v : (Parsetree.class_type_field list list) = let x = let _startpos = _startpos__1_ in -# 1141 "parsing/parser.mly" +# 1220 "parsing/parser.mly" ( text_csig _startpos @ [_1] ) -# 21061 "parsing/parser.ml" +# 21310 "parsing/parser.ml" in # 213 "" ( x :: xs ) -# 21067 "parsing/parser.ml" +# 21316 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -21081,7 +21330,7 @@ module Tables = struct let _v : (Parsetree.class_field list list) = # 211 "" ( [] ) -# 21085 "parsing/parser.ml" +# 21334 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -21113,15 +21362,15 @@ module Tables = struct let _v : (Parsetree.class_field list list) = let x = let _startpos = _startpos__1_ in -# 1139 "parsing/parser.mly" +# 1218 "parsing/parser.mly" ( text_cstr _startpos @ [_1] ) -# 21119 "parsing/parser.ml" +# 21368 "parsing/parser.ml" in # 213 "" ( x :: xs ) -# 21125 "parsing/parser.ml" +# 21374 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -21139,7 +21388,7 @@ module Tables = struct let _v : (Parsetree.structure_item list list) = # 211 "" ( [] ) -# 21143 "parsing/parser.ml" +# 21392 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -21171,15 +21420,15 @@ module Tables = struct let _v : (Parsetree.structure_item list list) = let x = let _startpos = _startpos__1_ in -# 1127 "parsing/parser.mly" +# 1206 "parsing/parser.mly" ( text_str _startpos @ [_1] ) -# 21177 "parsing/parser.ml" +# 21426 "parsing/parser.ml" in # 213 "" ( x :: xs ) -# 21183 "parsing/parser.ml" +# 21432 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -21197,7 +21446,7 @@ module Tables = struct let _v : (Parsetree.toplevel_phrase list list) = # 211 "" ( [] ) -# 21201 "parsing/parser.ml" +# 21450 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -21230,32 +21479,32 @@ module Tables = struct let _1 = let x = let _1 = -# 1196 "parsing/parser.mly" +# 1275 "parsing/parser.mly" ( [] ) -# 21236 "parsing/parser.ml" +# 21485 "parsing/parser.ml" in -# 1428 "parsing/parser.mly" +# 1507 "parsing/parser.mly" ( _1 ) -# 21241 "parsing/parser.ml" +# 21490 "parsing/parser.ml" in # 183 "" ( x ) -# 21247 "parsing/parser.ml" +# 21496 "parsing/parser.ml" in -# 1440 "parsing/parser.mly" +# 1519 "parsing/parser.mly" ( _1 ) -# 21253 "parsing/parser.ml" +# 21502 "parsing/parser.ml" in # 213 "" ( x :: xs ) -# 21259 "parsing/parser.ml" +# 21508 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -21307,58 +21556,58 @@ module Tables = struct let _1 = let _1 = let attrs = -# 4472 "parsing/parser.mly" +# 4544 "parsing/parser.mly" ( _1 ) -# 21313 "parsing/parser.ml" +# 21562 "parsing/parser.ml" in -# 1632 "parsing/parser.mly" +# 1711 "parsing/parser.mly" ( mkstrexp e attrs ) -# 21318 "parsing/parser.ml" +# 21567 "parsing/parser.ml" in -# 1137 "parsing/parser.mly" +# 1216 "parsing/parser.mly" ( Ptop_def [_1] ) -# 21324 "parsing/parser.ml" +# 21573 "parsing/parser.ml" in let _startpos__1_ = _startpos_e_ in let _startpos = _startpos__1_ in -# 1135 "parsing/parser.mly" +# 1214 "parsing/parser.mly" ( text_def _startpos @ [_1] ) -# 21332 "parsing/parser.ml" +# 21581 "parsing/parser.ml" in -# 1198 "parsing/parser.mly" +# 1277 "parsing/parser.mly" ( x ) -# 21338 "parsing/parser.ml" +# 21587 "parsing/parser.ml" in -# 1428 "parsing/parser.mly" +# 1507 "parsing/parser.mly" ( _1 ) -# 21344 "parsing/parser.ml" +# 21593 "parsing/parser.ml" in # 183 "" ( x ) -# 21350 "parsing/parser.ml" +# 21599 "parsing/parser.ml" in -# 1440 "parsing/parser.mly" +# 1519 "parsing/parser.mly" ( _1 ) -# 21356 "parsing/parser.ml" +# 21605 "parsing/parser.ml" in # 213 "" ( x :: xs ) -# 21362 "parsing/parser.ml" +# 21611 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -21390,27 +21639,27 @@ module Tables = struct let _v : (Parsetree.toplevel_phrase list list) = let x = let _1 = let _1 = -# 1137 "parsing/parser.mly" +# 1216 "parsing/parser.mly" ( Ptop_def [_1] ) -# 21396 "parsing/parser.ml" +# 21645 "parsing/parser.ml" in let _startpos = _startpos__1_ in -# 1135 "parsing/parser.mly" +# 1214 "parsing/parser.mly" ( text_def _startpos @ [_1] ) -# 21402 "parsing/parser.ml" +# 21651 "parsing/parser.ml" in -# 1440 "parsing/parser.mly" +# 1519 "parsing/parser.mly" ( _1 ) -# 21408 "parsing/parser.ml" +# 21657 "parsing/parser.ml" in # 213 "" ( x :: xs ) -# 21414 "parsing/parser.ml" +# 21663 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -21445,29 +21694,29 @@ module Tables = struct let _endpos = _endpos__1_ in let _startpos = _startpos__1_ in -# 1146 "parsing/parser.mly" +# 1225 "parsing/parser.mly" ( mark_rhs_docs _startpos _endpos; _1 ) -# 21452 "parsing/parser.ml" +# 21701 "parsing/parser.ml" in let _startpos = _startpos__1_ in -# 1135 "parsing/parser.mly" +# 1214 "parsing/parser.mly" ( text_def _startpos @ [_1] ) -# 21459 "parsing/parser.ml" +# 21708 "parsing/parser.ml" in -# 1440 "parsing/parser.mly" +# 1519 "parsing/parser.mly" ( _1 ) -# 21465 "parsing/parser.ml" +# 21714 "parsing/parser.ml" in # 213 "" ( x :: xs ) -# 21471 "parsing/parser.ml" +# 21720 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -21506,7 +21755,7 @@ module Tables = struct let _v : ((Longident.t Asttypes.loc * Parsetree.pattern) list * unit option) = let _2 = # 124 "" ( None ) -# 21510 "parsing/parser.ml" +# 21759 "parsing/parser.ml" in let x = let label = @@ -21514,9 +21763,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1123 "parsing/parser.mly" +# 1202 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 21520 "parsing/parser.ml" +# 21769 "parsing/parser.ml" in let _startpos_label_ = _startpos__1_ in @@ -21524,7 +21773,7 @@ module Tables = struct let _symbolstartpos = _startpos_label_ in let _sloc = (_symbolstartpos, _endpos) in -# 3317 "parsing/parser.mly" +# 3384 "parsing/parser.mly" ( let constraint_loc, label, pat = match opat with | None -> @@ -21538,13 +21787,13 @@ module Tables = struct in label, mkpat_opt_constraint ~loc:constraint_loc pat octy ) -# 21542 "parsing/parser.ml" +# 21791 "parsing/parser.ml" in -# 1365 "parsing/parser.mly" +# 1444 "parsing/parser.mly" ( [x], None ) -# 21548 "parsing/parser.ml" +# 21797 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -21590,7 +21839,7 @@ module Tables = struct let _v : ((Longident.t Asttypes.loc * Parsetree.pattern) list * unit option) = let _2 = # 126 "" ( Some x ) -# 21594 "parsing/parser.ml" +# 21843 "parsing/parser.ml" in let x = let label = @@ -21598,9 +21847,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1123 "parsing/parser.mly" +# 1202 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 21604 "parsing/parser.ml" +# 21853 "parsing/parser.ml" in let _startpos_label_ = _startpos__1_ in @@ -21608,7 +21857,7 @@ module Tables = struct let _symbolstartpos = _startpos_label_ in let _sloc = (_symbolstartpos, _endpos) in -# 3317 "parsing/parser.mly" +# 3384 "parsing/parser.mly" ( let constraint_loc, label, pat = match opat with | None -> @@ -21622,13 +21871,13 @@ module Tables = struct in label, mkpat_opt_constraint ~loc:constraint_loc pat octy ) -# 21626 "parsing/parser.ml" +# 21875 "parsing/parser.ml" in -# 1365 "parsing/parser.mly" +# 1444 "parsing/parser.mly" ( [x], None ) -# 21632 "parsing/parser.ml" +# 21881 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -21691,9 +21940,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1123 "parsing/parser.mly" +# 1202 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 21697 "parsing/parser.ml" +# 21946 "parsing/parser.ml" in let _startpos_label_ = _startpos__1_ in @@ -21701,7 +21950,7 @@ module Tables = struct let _symbolstartpos = _startpos_label_ in let _sloc = (_symbolstartpos, _endpos) in -# 3317 "parsing/parser.mly" +# 3384 "parsing/parser.mly" ( let constraint_loc, label, pat = match opat with | None -> @@ -21715,13 +21964,13 @@ module Tables = struct in label, mkpat_opt_constraint ~loc:constraint_loc pat octy ) -# 21719 "parsing/parser.ml" +# 21968 "parsing/parser.ml" in -# 1367 "parsing/parser.mly" +# 1446 "parsing/parser.mly" ( [x], Some y ) -# 21725 "parsing/parser.ml" +# 21974 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -21777,9 +22026,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1123 "parsing/parser.mly" +# 1202 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 21783 "parsing/parser.ml" +# 22032 "parsing/parser.ml" in let _startpos_label_ = _startpos__1_ in @@ -21787,7 +22036,7 @@ module Tables = struct let _symbolstartpos = _startpos_label_ in let _sloc = (_symbolstartpos, _endpos) in -# 3317 "parsing/parser.mly" +# 3384 "parsing/parser.mly" ( let constraint_loc, label, pat = match opat with | None -> @@ -21801,289 +22050,14 @@ module Tables = struct in label, mkpat_opt_constraint ~loc:constraint_loc pat octy ) -# 21805 "parsing/parser.ml" +# 22054 "parsing/parser.ml" in -# 1371 "parsing/parser.mly" +# 1450 "parsing/parser.mly" ( let xs, y = tail in x :: xs, y ) -# 21812 "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 : (Parsetree.expression) = 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.expression) = -# 3034 "parsing/parser.mly" - ( _1 ) -# 21837 "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 = _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 _3 : (Parsetree.expression) = Obj.magic _3 in - let _2 : unit = Obj.magic _2 in - let _1 : (Parsetree.core_type option * Parsetree.core_type option) = 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 _endpos = _endpos__3_ in - let _symbolstartpos = _startpos__1_ in - let _sloc = (_symbolstartpos, _endpos) in - -# 3036 "parsing/parser.mly" - ( wrap_exp_stack (mkexp_constraint ~loc:_sloc _3 _1) (make_loc _sloc) ) -# 21879 "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 = _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 _2 : (Parsetree.expression) = 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.expression) = -# 3040 "parsing/parser.mly" - ( _2 ) -# 21911 "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 = _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 _2 : (Parsetree.expression) = Obj.magic _2 in - let _1 : (Asttypes.arg_label * Parsetree.expression option * Parsetree.pattern) = 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.expression) = let _endpos = _endpos__2_ in - let _symbolstartpos = _startpos__1_ in - let _sloc = (_symbolstartpos, _endpos) in - -# 3042 "parsing/parser.mly" - ( let (l, o, p) = _1 in ghexp ~loc:_sloc (Pexp_fun(l, o, p, _2)) ) -# 21946 "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 = _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 = _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 : (Parsetree.expression) = Obj.magic _5 in - let _4 : unit = Obj.magic _4 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 _endpos = _endpos__5_ in - let _symbolstartpos = _startpos__1_ in - let _sloc = (_symbolstartpos, _endpos) in - -# 3044 "parsing/parser.mly" - ( mk_newtypes ~loc:_sloc _3 _5 ) -# 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" +# 22061 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -22120,9 +22094,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : (Parsetree.case) = -# 3054 "parsing/parser.mly" +# 3121 "parsing/parser.mly" ( Exp.case _1 _3 ) -# 22126 "parsing/parser.ml" +# 22100 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -22173,9 +22147,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__5_ in let _v : (Parsetree.case) = -# 3056 "parsing/parser.mly" +# 3123 "parsing/parser.mly" ( Exp.case _1 ~guard:_3 _5 ) -# 22179 "parsing/parser.ml" +# 22153 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -22213,9 +22187,9 @@ module Tables = struct let _endpos = _endpos__3_ in let _v : (Parsetree.case) = let _loc__3_ = (_startpos__3_, _endpos__3_) in -# 3058 "parsing/parser.mly" +# 3125 "parsing/parser.mly" ( Exp.case _1 (Exp.unreachable ~loc:(make_loc _loc__3_) ()) ) -# 22219 "parsing/parser.ml" +# 22193 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -22276,9 +22250,9 @@ module Tables = struct let _1_inlined1 : (Parsetree.core_type) = Obj.magic _1_inlined1 in let _2 : unit = Obj.magic _2 in let _1 : ( -# 937 "parsing/parser.mly" +# 1014 "parsing/parser.mly" (string) -# 22282 "parsing/parser.ml" +# 22256 "parsing/parser.ml" ) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in @@ -22287,49 +22261,49 @@ module Tables = struct let _6 = let _1 = _1_inlined3 in -# 4476 "parsing/parser.mly" +# 4548 "parsing/parser.mly" ( _1 ) -# 22293 "parsing/parser.ml" +# 22267 "parsing/parser.ml" in let _endpos__6_ = _endpos__1_inlined3_ in let _4 = let _1 = _1_inlined2 in -# 4476 "parsing/parser.mly" +# 4548 "parsing/parser.mly" ( _1 ) -# 22302 "parsing/parser.ml" +# 22276 "parsing/parser.ml" in let _endpos__4_ = _endpos__1_inlined2_ in let _3 = let _1 = _1_inlined1 in -# 3818 "parsing/parser.mly" +# 3885 "parsing/parser.mly" ( _1 ) -# 22311 "parsing/parser.ml" +# 22285 "parsing/parser.ml" in let _1 = let _1 = -# 4106 "parsing/parser.mly" +# 4178 "parsing/parser.mly" ( _1 ) -# 22318 "parsing/parser.ml" +# 22292 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1123 "parsing/parser.mly" +# 1202 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 22326 "parsing/parser.ml" +# 22300 "parsing/parser.ml" in let _endpos = _endpos__6_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 4091 "parsing/parser.mly" +# 4163 "parsing/parser.mly" ( let info = match rhs_info _endpos__4_ with | Some _ as info_before_semi -> info_before_semi @@ -22337,13 +22311,13 @@ module Tables = struct in let attrs = add_info_attrs info (_4 @ _6) in Of.tag ~loc:(make_loc _sloc) ~attrs _1 _3 ) -# 22341 "parsing/parser.ml" +# 22315 "parsing/parser.ml" in -# 4072 "parsing/parser.mly" +# 4144 "parsing/parser.mly" ( let (f, c) = tail in (head :: f, c) ) -# 22347 "parsing/parser.ml" +# 22321 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -22384,15 +22358,15 @@ module Tables = struct let _symbolstartpos = _startpos_ty_ in let _sloc = (_symbolstartpos, _endpos) in -# 4102 "parsing/parser.mly" +# 4174 "parsing/parser.mly" ( Of.inherit_ ~loc:(make_loc _sloc) ty ) -# 22390 "parsing/parser.ml" +# 22364 "parsing/parser.ml" in -# 4072 "parsing/parser.mly" +# 4144 "parsing/parser.mly" ( let (f, c) = tail in (head :: f, c) ) -# 22396 "parsing/parser.ml" +# 22370 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -22446,9 +22420,9 @@ module Tables = struct let _1_inlined1 : (Parsetree.core_type) = Obj.magic _1_inlined1 in let _2 : unit = Obj.magic _2 in let _1 : ( -# 937 "parsing/parser.mly" +# 1014 "parsing/parser.mly" (string) -# 22452 "parsing/parser.ml" +# 22426 "parsing/parser.ml" ) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in @@ -22457,49 +22431,49 @@ module Tables = struct let _6 = let _1 = _1_inlined3 in -# 4476 "parsing/parser.mly" +# 4548 "parsing/parser.mly" ( _1 ) -# 22463 "parsing/parser.ml" +# 22437 "parsing/parser.ml" in let _endpos__6_ = _endpos__1_inlined3_ in let _4 = let _1 = _1_inlined2 in -# 4476 "parsing/parser.mly" +# 4548 "parsing/parser.mly" ( _1 ) -# 22472 "parsing/parser.ml" +# 22446 "parsing/parser.ml" in let _endpos__4_ = _endpos__1_inlined2_ in let _3 = let _1 = _1_inlined1 in -# 3818 "parsing/parser.mly" +# 3885 "parsing/parser.mly" ( _1 ) -# 22481 "parsing/parser.ml" +# 22455 "parsing/parser.ml" in let _1 = let _1 = -# 4106 "parsing/parser.mly" +# 4178 "parsing/parser.mly" ( _1 ) -# 22488 "parsing/parser.ml" +# 22462 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1123 "parsing/parser.mly" +# 1202 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 22496 "parsing/parser.ml" +# 22470 "parsing/parser.ml" in let _endpos = _endpos__6_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 4091 "parsing/parser.mly" +# 4163 "parsing/parser.mly" ( let info = match rhs_info _endpos__4_ with | Some _ as info_before_semi -> info_before_semi @@ -22507,13 +22481,13 @@ module Tables = struct in let attrs = add_info_attrs info (_4 @ _6) in Of.tag ~loc:(make_loc _sloc) ~attrs _1 _3 ) -# 22511 "parsing/parser.ml" +# 22485 "parsing/parser.ml" in -# 4075 "parsing/parser.mly" +# 4147 "parsing/parser.mly" ( [head], Closed ) -# 22517 "parsing/parser.ml" +# 22491 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -22547,15 +22521,15 @@ module Tables = struct let _symbolstartpos = _startpos_ty_ in let _sloc = (_symbolstartpos, _endpos) in -# 4102 "parsing/parser.mly" +# 4174 "parsing/parser.mly" ( Of.inherit_ ~loc:(make_loc _sloc) ty ) -# 22553 "parsing/parser.ml" +# 22527 "parsing/parser.ml" in -# 4075 "parsing/parser.mly" +# 4147 "parsing/parser.mly" ( [head], Closed ) -# 22559 "parsing/parser.ml" +# 22533 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -22595,9 +22569,9 @@ module Tables = struct let _1_inlined1 : (Parsetree.core_type) = Obj.magic _1_inlined1 in let _2 : unit = Obj.magic _2 in let _1 : ( -# 937 "parsing/parser.mly" +# 1014 "parsing/parser.mly" (string) -# 22601 "parsing/parser.ml" +# 22575 "parsing/parser.ml" ) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in @@ -22606,50 +22580,50 @@ module Tables = struct let _4 = let _1 = _1_inlined2 in -# 4476 "parsing/parser.mly" +# 4548 "parsing/parser.mly" ( _1 ) -# 22612 "parsing/parser.ml" +# 22586 "parsing/parser.ml" in let _endpos__4_ = _endpos__1_inlined2_ in let _3 = let _1 = _1_inlined1 in -# 3818 "parsing/parser.mly" +# 3885 "parsing/parser.mly" ( _1 ) -# 22621 "parsing/parser.ml" +# 22595 "parsing/parser.ml" in let _1 = let _1 = -# 4106 "parsing/parser.mly" +# 4178 "parsing/parser.mly" ( _1 ) -# 22628 "parsing/parser.ml" +# 22602 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1123 "parsing/parser.mly" +# 1202 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 22636 "parsing/parser.ml" +# 22610 "parsing/parser.ml" in let _endpos = _endpos__4_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 4084 "parsing/parser.mly" +# 4156 "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 ) -# 22647 "parsing/parser.ml" +# 22621 "parsing/parser.ml" in -# 4078 "parsing/parser.mly" +# 4150 "parsing/parser.mly" ( [head], Closed ) -# 22653 "parsing/parser.ml" +# 22627 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -22676,15 +22650,15 @@ module Tables = struct let _symbolstartpos = _startpos_ty_ in let _sloc = (_symbolstartpos, _endpos) in -# 4102 "parsing/parser.mly" +# 4174 "parsing/parser.mly" ( Of.inherit_ ~loc:(make_loc _sloc) ty ) -# 22682 "parsing/parser.ml" +# 22656 "parsing/parser.ml" in -# 4078 "parsing/parser.mly" +# 4150 "parsing/parser.mly" ( [head], Closed ) -# 22688 "parsing/parser.ml" +# 22662 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -22707,9 +22681,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Parsetree.object_field list * Asttypes.closed_flag) = -# 4080 "parsing/parser.mly" +# 4152 "parsing/parser.mly" ( [], Open ) -# 22713 "parsing/parser.ml" +# 22687 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -22754,9 +22728,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 : ( -# 937 "parsing/parser.mly" +# 1014 "parsing/parser.mly" (string) -# 22760 "parsing/parser.ml" +# 22734 "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 @@ -22768,41 +22742,41 @@ module Tables = struct Parsetree.attributes) = let ty = let _1 = _1_inlined2 in -# 3814 "parsing/parser.mly" +# 3881 "parsing/parser.mly" ( _1 ) -# 22774 "parsing/parser.ml" +# 22748 "parsing/parser.ml" in let label = let (_endpos__1_, _startpos__1_, _1) = (_endpos__1_inlined1_, _startpos__1_inlined1_, _1_inlined1) in let _1 = -# 4106 "parsing/parser.mly" +# 4178 "parsing/parser.mly" ( _1 ) -# 22782 "parsing/parser.ml" +# 22756 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1123 "parsing/parser.mly" +# 1202 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 22790 "parsing/parser.ml" +# 22764 "parsing/parser.ml" in let attrs = -# 4476 "parsing/parser.mly" +# 4548 "parsing/parser.mly" ( _1 ) -# 22796 "parsing/parser.ml" +# 22770 "parsing/parser.ml" in let _1 = -# 4374 "parsing/parser.mly" +# 4446 "parsing/parser.mly" ( Fresh ) -# 22801 "parsing/parser.ml" +# 22775 "parsing/parser.ml" in -# 2243 "parsing/parser.mly" +# 2322 "parsing/parser.mly" ( (label, private_, Cfk_virtual ty), attrs ) -# 22806 "parsing/parser.ml" +# 22780 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -22815,9 +22789,9 @@ module Tables = struct 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.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; @@ -22838,52 +22812,60 @@ module Tables = struct }; }; } = _menhir_stack in - let _5 : (Parsetree.expression) = Obj.magic _5 in + let _1_inlined2 : ((modes * (Lexing.position * Lexing.position)) list -> Parsetree.expression) = Obj.magic _1_inlined2 in let _1_inlined1 : ( -# 937 "parsing/parser.mly" +# 1014 "parsing/parser.mly" (string) -# 22846 "parsing/parser.ml" +# 22820 "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 let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in - let _endpos = _endpos__5_ in + let _endpos = _endpos__1_inlined2_ in let _v : ((Asttypes.label Asttypes.loc * Asttypes.private_flag * Parsetree.class_field_kind) * - Parsetree.attributes) = let _4 = + Parsetree.attributes) = let _5 = + let _1 = _1_inlined2 in + +# 3113 "parsing/parser.mly" + (_1 []) +# 22834 "parsing/parser.ml" + + in + let _4 = let (_endpos__1_, _startpos__1_, _1) = (_endpos__1_inlined1_, _startpos__1_inlined1_, _1_inlined1) in let _1 = -# 4106 "parsing/parser.mly" +# 4178 "parsing/parser.mly" ( _1 ) -# 22860 "parsing/parser.ml" +# 22842 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1123 "parsing/parser.mly" +# 1202 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 22868 "parsing/parser.ml" +# 22850 "parsing/parser.ml" in let _2 = -# 4476 "parsing/parser.mly" +# 4548 "parsing/parser.mly" ( _1 ) -# 22874 "parsing/parser.ml" +# 22856 "parsing/parser.ml" in let _1 = -# 4377 "parsing/parser.mly" +# 4449 "parsing/parser.mly" ( Fresh ) -# 22879 "parsing/parser.ml" +# 22861 "parsing/parser.ml" in -# 2245 "parsing/parser.mly" +# 2324 "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 ) -# 22887 "parsing/parser.ml" +# 22869 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -22896,9 +22878,9 @@ module Tables = struct 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.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; @@ -22925,56 +22907,64 @@ module Tables = struct }; }; } = _menhir_stack in - let _5 : (Parsetree.expression) = Obj.magic _5 in + let _1_inlined3 : ((modes * (Lexing.position * Lexing.position)) list -> Parsetree.expression) = Obj.magic _1_inlined3 in let _1_inlined2 : ( -# 937 "parsing/parser.mly" +# 1014 "parsing/parser.mly" (string) -# 22933 "parsing/parser.ml" +# 22915 "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 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 _endpos = _endpos__1_inlined3_ in let _v : ((Asttypes.label Asttypes.loc * Asttypes.private_flag * Parsetree.class_field_kind) * - Parsetree.attributes) = let _4 = + Parsetree.attributes) = let _5 = + let _1 = _1_inlined3 in + +# 3113 "parsing/parser.mly" + (_1 []) +# 22930 "parsing/parser.ml" + + in + let _4 = let (_endpos__1_, _startpos__1_, _1) = (_endpos__1_inlined2_, _startpos__1_inlined2_, _1_inlined2) in let _1 = -# 4106 "parsing/parser.mly" +# 4178 "parsing/parser.mly" ( _1 ) -# 22948 "parsing/parser.ml" +# 22938 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1123 "parsing/parser.mly" +# 1202 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 22956 "parsing/parser.ml" +# 22946 "parsing/parser.ml" in let _2 = let _1 = _1_inlined1 in -# 4476 "parsing/parser.mly" +# 4548 "parsing/parser.mly" ( _1 ) -# 22964 "parsing/parser.ml" +# 22954 "parsing/parser.ml" in let _1 = -# 4378 "parsing/parser.mly" +# 4450 "parsing/parser.mly" ( Override ) -# 22970 "parsing/parser.ml" +# 22960 "parsing/parser.ml" in -# 2245 "parsing/parser.mly" +# 2324 "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 ) -# 22978 "parsing/parser.ml" +# 22968 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -23033,9 +23023,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 : ( -# 937 "parsing/parser.mly" +# 1014 "parsing/parser.mly" (string) -# 23039 "parsing/parser.ml" +# 23029 "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 @@ -23047,45 +23037,45 @@ module Tables = struct Parsetree.attributes) = let _6 = let _1 = _1_inlined2 in -# 3814 "parsing/parser.mly" +# 3881 "parsing/parser.mly" ( _1 ) -# 23053 "parsing/parser.ml" +# 23043 "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 = -# 4106 "parsing/parser.mly" +# 4178 "parsing/parser.mly" ( _1 ) -# 23062 "parsing/parser.ml" +# 23052 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1123 "parsing/parser.mly" +# 1202 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 23070 "parsing/parser.ml" +# 23060 "parsing/parser.ml" in let _2 = -# 4476 "parsing/parser.mly" +# 4548 "parsing/parser.mly" ( _1 ) -# 23076 "parsing/parser.ml" +# 23066 "parsing/parser.ml" in let _1 = -# 4377 "parsing/parser.mly" +# 4449 "parsing/parser.mly" ( Fresh ) -# 23081 "parsing/parser.ml" +# 23071 "parsing/parser.ml" in -# 2251 "parsing/parser.mly" +# 2330 "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 ) -# 23089 "parsing/parser.ml" +# 23079 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -23150,9 +23140,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 : ( -# 937 "parsing/parser.mly" +# 1014 "parsing/parser.mly" (string) -# 23156 "parsing/parser.ml" +# 23146 "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 @@ -23165,48 +23155,48 @@ module Tables = struct Parsetree.attributes) = let _6 = let _1 = _1_inlined3 in -# 3814 "parsing/parser.mly" +# 3881 "parsing/parser.mly" ( _1 ) -# 23171 "parsing/parser.ml" +# 23161 "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 = -# 4106 "parsing/parser.mly" +# 4178 "parsing/parser.mly" ( _1 ) -# 23180 "parsing/parser.ml" +# 23170 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1123 "parsing/parser.mly" +# 1202 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 23188 "parsing/parser.ml" +# 23178 "parsing/parser.ml" in let _2 = let _1 = _1_inlined1 in -# 4476 "parsing/parser.mly" +# 4548 "parsing/parser.mly" ( _1 ) -# 23196 "parsing/parser.ml" +# 23186 "parsing/parser.ml" in let _1 = -# 4378 "parsing/parser.mly" +# 4450 "parsing/parser.mly" ( Override ) -# 23202 "parsing/parser.ml" +# 23192 "parsing/parser.ml" in -# 2251 "parsing/parser.mly" +# 2330 "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 ) -# 23210 "parsing/parser.ml" +# 23200 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -23286,9 +23276,9 @@ module Tables = struct let _6 : unit = Obj.magic _6 in let _5 : unit = Obj.magic _5 in let _1_inlined1 : ( -# 937 "parsing/parser.mly" +# 1014 "parsing/parser.mly" (string) -# 23292 "parsing/parser.ml" +# 23282 "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 @@ -23300,30 +23290,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 = -# 4106 "parsing/parser.mly" +# 4178 "parsing/parser.mly" ( _1 ) -# 23306 "parsing/parser.ml" +# 23296 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1123 "parsing/parser.mly" +# 1202 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 23314 "parsing/parser.ml" +# 23304 "parsing/parser.ml" in let _startpos__4_ = _startpos__1_inlined1_ in let _2 = -# 4476 "parsing/parser.mly" +# 4548 "parsing/parser.mly" ( _1 ) -# 23321 "parsing/parser.ml" +# 23311 "parsing/parser.ml" in let (_endpos__2_, _startpos__2_) = (_endpos__1_, _startpos__1_) in let _1 = -# 4377 "parsing/parser.mly" +# 4449 "parsing/parser.mly" ( Fresh ) -# 23327 "parsing/parser.ml" +# 23317 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos__0_, _endpos__0_) in let _endpos = _endpos__11_ in @@ -23339,7 +23329,7 @@ module Tables = struct _startpos__4_ in let _sloc = (_symbolstartpos, _endpos) in -# 2257 "parsing/parser.mly" +# 2336 "parsing/parser.mly" ( let poly_exp_loc = (_startpos__7_, _endpos__11_) in let poly_exp = let exp, poly = @@ -23350,7 +23340,7 @@ module Tables = struct ghexp ~loc:poly_exp_loc (Pexp_poly(exp, Some poly)) in (_4, _3, Cfk_concrete (_1, poly_exp)), _2 ) -# 23354 "parsing/parser.ml" +# 23344 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -23436,9 +23426,9 @@ module Tables = struct let _6 : unit = Obj.magic _6 in let _5 : unit = Obj.magic _5 in let _1_inlined2 : ( -# 937 "parsing/parser.mly" +# 1014 "parsing/parser.mly" (string) -# 23442 "parsing/parser.ml" +# 23432 "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 @@ -23451,33 +23441,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 = -# 4106 "parsing/parser.mly" +# 4178 "parsing/parser.mly" ( _1 ) -# 23457 "parsing/parser.ml" +# 23447 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1123 "parsing/parser.mly" +# 1202 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 23465 "parsing/parser.ml" +# 23455 "parsing/parser.ml" in let _startpos__4_ = _startpos__1_inlined2_ in let _2 = let _1 = _1_inlined1 in -# 4476 "parsing/parser.mly" +# 4548 "parsing/parser.mly" ( _1 ) -# 23474 "parsing/parser.ml" +# 23464 "parsing/parser.ml" in let (_endpos__2_, _startpos__2_) = (_endpos__1_inlined1_, _startpos__1_inlined1_) in let _1 = -# 4378 "parsing/parser.mly" +# 4450 "parsing/parser.mly" ( Override ) -# 23481 "parsing/parser.ml" +# 23471 "parsing/parser.ml" in let _endpos = _endpos__11_ in let _symbolstartpos = if _startpos__1_ != _endpos__1_ then @@ -23492,7 +23482,7 @@ module Tables = struct _startpos__4_ in let _sloc = (_symbolstartpos, _endpos) in -# 2257 "parsing/parser.mly" +# 2336 "parsing/parser.mly" ( let poly_exp_loc = (_startpos__7_, _endpos__11_) in let poly_exp = let exp, poly = @@ -23503,7 +23493,7 @@ module Tables = struct ghexp ~loc:poly_exp_loc (Pexp_poly(exp, Some poly)) in (_4, _3, Cfk_concrete (_1, poly_exp)), _2 ) -# 23507 "parsing/parser.ml" +# 23497 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -23522,17 +23512,17 @@ module Tables = struct MenhirLib.EngineTypes.next = _menhir_stack; } = _menhir_stack in let _1 : ( -# 937 "parsing/parser.mly" +# 1014 "parsing/parser.mly" (string) -# 23528 "parsing/parser.ml" +# 23518 "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) = -# 4220 "parsing/parser.mly" +# 4292 "parsing/parser.mly" ( Lident _1 ) -# 23536 "parsing/parser.ml" +# 23526 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -23563,9 +23553,9 @@ module Tables = struct }; } = _menhir_stack in let _3 : ( -# 937 "parsing/parser.mly" +# 1014 "parsing/parser.mly" (string) -# 23569 "parsing/parser.ml" +# 23559 "parsing/parser.ml" ) = Obj.magic _3 in let _2 : unit = Obj.magic _2 in let _1 : (Longident.t) = Obj.magic _1 in @@ -23573,9 +23563,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : (Longident.t) = -# 4221 "parsing/parser.mly" +# 4293 "parsing/parser.mly" ( Ldot(_1,_3) ) -# 23579 "parsing/parser.ml" +# 23569 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -23594,17 +23584,17 @@ module Tables = struct MenhirLib.EngineTypes.next = _menhir_stack; } = _menhir_stack in let _1 : ( -# 990 "parsing/parser.mly" +# 1068 "parsing/parser.mly" (string) -# 23600 "parsing/parser.ml" +# 23590 "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) = -# 4220 "parsing/parser.mly" +# 4292 "parsing/parser.mly" ( Lident _1 ) -# 23608 "parsing/parser.ml" +# 23598 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -23635,9 +23625,9 @@ module Tables = struct }; } = _menhir_stack in let _3 : ( -# 990 "parsing/parser.mly" +# 1068 "parsing/parser.mly" (string) -# 23641 "parsing/parser.ml" +# 23631 "parsing/parser.ml" ) = Obj.magic _3 in let _2 : unit = Obj.magic _2 in let _1 : (Longident.t) = Obj.magic _1 in @@ -23645,9 +23635,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : (Longident.t) = -# 4221 "parsing/parser.mly" +# 4293 "parsing/parser.mly" ( Ldot(_1,_3) ) -# 23651 "parsing/parser.ml" +# 23641 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -23670,14 +23660,14 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Longident.t) = let _1 = -# 4259 "parsing/parser.mly" +# 4331 "parsing/parser.mly" ( _1 ) -# 23676 "parsing/parser.ml" +# 23666 "parsing/parser.ml" in -# 4220 "parsing/parser.mly" +# 4292 "parsing/parser.mly" ( Lident _1 ) -# 23681 "parsing/parser.ml" +# 23671 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -23715,20 +23705,20 @@ module Tables = struct let _endpos = _endpos__3_ in let _v : (Longident.t) = let _1 = let _1 = -# 4200 "parsing/parser.mly" +# 4272 "parsing/parser.mly" ( "::" ) -# 23721 "parsing/parser.ml" +# 23711 "parsing/parser.ml" in -# 4259 "parsing/parser.mly" +# 4331 "parsing/parser.mly" ( _1 ) -# 23726 "parsing/parser.ml" +# 23716 "parsing/parser.ml" in -# 4220 "parsing/parser.mly" +# 4292 "parsing/parser.mly" ( Lident _1 ) -# 23732 "parsing/parser.ml" +# 23722 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -23751,14 +23741,14 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Longident.t) = let _1 = -# 4259 "parsing/parser.mly" +# 4331 "parsing/parser.mly" ( _1 ) -# 23757 "parsing/parser.ml" +# 23747 "parsing/parser.ml" in -# 4220 "parsing/parser.mly" +# 4292 "parsing/parser.mly" ( Lident _1 ) -# 23762 "parsing/parser.ml" +# 23752 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -23797,15 +23787,15 @@ module Tables = struct let _v : (Longident.t) = let _3 = let _1 = _1_inlined1 in -# 4259 "parsing/parser.mly" +# 4331 "parsing/parser.mly" ( _1 ) -# 23803 "parsing/parser.ml" +# 23793 "parsing/parser.ml" in -# 4221 "parsing/parser.mly" +# 4293 "parsing/parser.mly" ( Ldot(_1,_3) ) -# 23809 "parsing/parser.ml" +# 23799 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -23857,20 +23847,20 @@ module Tables = struct let _endpos = _endpos__3_ in let _v : (Longident.t) = let _3 = let _1 = -# 4200 "parsing/parser.mly" +# 4272 "parsing/parser.mly" ( "::" ) -# 23863 "parsing/parser.ml" +# 23853 "parsing/parser.ml" in -# 4259 "parsing/parser.mly" +# 4331 "parsing/parser.mly" ( _1 ) -# 23868 "parsing/parser.ml" +# 23858 "parsing/parser.ml" in -# 4221 "parsing/parser.mly" +# 4293 "parsing/parser.mly" ( Ldot(_1,_3) ) -# 23874 "parsing/parser.ml" +# 23864 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -23909,15 +23899,15 @@ module Tables = struct let _v : (Longident.t) = let _3 = let _1 = _1_inlined1 in -# 4259 "parsing/parser.mly" +# 4331 "parsing/parser.mly" ( _1 ) -# 23915 "parsing/parser.ml" +# 23905 "parsing/parser.ml" in -# 4221 "parsing/parser.mly" +# 4293 "parsing/parser.mly" ( Ldot(_1,_3) ) -# 23921 "parsing/parser.ml" +# 23911 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -23940,9 +23930,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Longident.t) = -# 4220 "parsing/parser.mly" +# 4292 "parsing/parser.mly" ( Lident _1 ) -# 23946 "parsing/parser.ml" +# 23936 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -23979,9 +23969,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : (Longident.t) = -# 4221 "parsing/parser.mly" +# 4293 "parsing/parser.mly" ( Ldot(_1,_3) ) -# 23985 "parsing/parser.ml" +# 23975 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -24000,17 +23990,17 @@ module Tables = struct MenhirLib.EngineTypes.next = _menhir_stack; } = _menhir_stack in let _1 : ( -# 937 "parsing/parser.mly" +# 1014 "parsing/parser.mly" (string) -# 24006 "parsing/parser.ml" +# 23996 "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) = -# 4220 "parsing/parser.mly" +# 4292 "parsing/parser.mly" ( Lident _1 ) -# 24014 "parsing/parser.ml" +# 24004 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -24041,9 +24031,9 @@ module Tables = struct }; } = _menhir_stack in let _3 : ( -# 937 "parsing/parser.mly" +# 1014 "parsing/parser.mly" (string) -# 24047 "parsing/parser.ml" +# 24037 "parsing/parser.ml" ) = Obj.magic _3 in let _2 : unit = Obj.magic _2 in let _1 : (Longident.t) = Obj.magic _1 in @@ -24051,9 +24041,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : (Longident.t) = -# 4221 "parsing/parser.mly" +# 4293 "parsing/parser.mly" ( Ldot(_1,_3) ) -# 24057 "parsing/parser.ml" +# 24047 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -24072,17 +24062,17 @@ module Tables = struct MenhirLib.EngineTypes.next = _menhir_stack; } = _menhir_stack in let _1 : ( -# 990 "parsing/parser.mly" +# 1068 "parsing/parser.mly" (string) -# 24078 "parsing/parser.ml" +# 24068 "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) = -# 4220 "parsing/parser.mly" +# 4292 "parsing/parser.mly" ( Lident _1 ) -# 24086 "parsing/parser.ml" +# 24076 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -24113,9 +24103,9 @@ module Tables = struct }; } = _menhir_stack in let _3 : ( -# 990 "parsing/parser.mly" +# 1068 "parsing/parser.mly" (string) -# 24119 "parsing/parser.ml" +# 24109 "parsing/parser.ml" ) = Obj.magic _3 in let _2 : unit = Obj.magic _2 in let _1 : (Longident.t) = Obj.magic _1 in @@ -24123,9 +24113,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : (Longident.t) = -# 4221 "parsing/parser.mly" +# 4293 "parsing/parser.mly" ( Ldot(_1,_3) ) -# 24129 "parsing/parser.ml" +# 24119 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -24148,9 +24138,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Longident.t) = -# 4220 "parsing/parser.mly" +# 4292 "parsing/parser.mly" ( Lident _1 ) -# 24154 "parsing/parser.ml" +# 24144 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -24187,9 +24177,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : (Longident.t) = -# 4221 "parsing/parser.mly" +# 4293 "parsing/parser.mly" ( Ldot(_1,_3) ) -# 24193 "parsing/parser.ml" +# 24183 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -24212,9 +24202,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Longident.t) = -# 4237 "parsing/parser.mly" +# 4309 "parsing/parser.mly" ( _1 ) -# 24218 "parsing/parser.ml" +# 24208 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -24261,9 +24251,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 4239 "parsing/parser.mly" +# 4311 "parsing/parser.mly" ( lapply ~loc:_sloc _1 _3 ) -# 24267 "parsing/parser.ml" +# 24257 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -24301,9 +24291,9 @@ module Tables = struct let _endpos = _endpos__3_ in let _v : (Longident.t) = let _loc__3_ = (_startpos__3_, _endpos__3_) in -# 4241 "parsing/parser.mly" +# 4313 "parsing/parser.mly" ( expecting _loc__3_ "module path" ) -# 24307 "parsing/parser.ml" +# 24297 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -24326,9 +24316,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Longident.t) = -# 4234 "parsing/parser.mly" +# 4306 "parsing/parser.mly" ( _1 ) -# 24332 "parsing/parser.ml" +# 24322 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -24358,9 +24348,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos_me_ in let _v : (Parsetree.module_expr) = -# 1710 "parsing/parser.mly" +# 1789 "parsing/parser.mly" ( me ) -# 24364 "parsing/parser.ml" +# 24354 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -24405,24 +24395,24 @@ module Tables = struct let _endpos = _endpos_me_ in let _v : (Parsetree.module_expr) = let _1 = let _1 = -# 1713 "parsing/parser.mly" +# 1792 "parsing/parser.mly" ( Pmod_constraint(me, mty) ) -# 24411 "parsing/parser.ml" +# 24401 "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 -# 1166 "parsing/parser.mly" +# 1245 "parsing/parser.mly" ( mkmod ~loc:_sloc _1 ) -# 24420 "parsing/parser.ml" +# 24410 "parsing/parser.ml" in -# 1717 "parsing/parser.mly" +# 1796 "parsing/parser.mly" ( _1 ) -# 24426 "parsing/parser.ml" +# 24416 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -24453,25 +24443,25 @@ module Tables = struct let _endpos = _endpos_body_ in let _v : (Parsetree.module_expr) = let _1 = let _1 = -# 1715 "parsing/parser.mly" +# 1794 "parsing/parser.mly" ( let (_, arg) = arg_and_pos in Pmod_functor(arg, body) ) -# 24460 "parsing/parser.ml" +# 24450 "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 -# 1166 "parsing/parser.mly" +# 1245 "parsing/parser.mly" ( mkmod ~loc:_sloc _1 ) -# 24469 "parsing/parser.ml" +# 24459 "parsing/parser.ml" in -# 1717 "parsing/parser.mly" +# 1796 "parsing/parser.mly" ( _1 ) -# 24475 "parsing/parser.ml" +# 24465 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -24501,9 +24491,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos_mty_ in let _v : (Parsetree.module_type) = -# 1972 "parsing/parser.mly" +# 2051 "parsing/parser.mly" ( mty ) -# 24507 "parsing/parser.ml" +# 24497 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -24534,25 +24524,25 @@ module Tables = struct let _endpos = _endpos_body_ in let _v : (Parsetree.module_type) = let _1 = let _1 = -# 1975 "parsing/parser.mly" +# 2054 "parsing/parser.mly" ( let (_, arg) = arg_and_pos in Pmty_functor(arg, body) ) -# 24541 "parsing/parser.ml" +# 24531 "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 -# 1168 "parsing/parser.mly" +# 1247 "parsing/parser.mly" ( mkmty ~loc:_sloc _1 ) -# 24550 "parsing/parser.ml" +# 24540 "parsing/parser.ml" in -# 1978 "parsing/parser.mly" +# 2057 "parsing/parser.mly" ( _1 ) -# 24556 "parsing/parser.ml" +# 24546 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -24598,18 +24588,18 @@ module Tables = struct let _v : (Parsetree.module_expr) = let attrs = let _1 = _1_inlined1 in -# 4476 "parsing/parser.mly" +# 4548 "parsing/parser.mly" ( _1 ) -# 24604 "parsing/parser.ml" +# 24594 "parsing/parser.ml" in let _endpos = _endpos__4_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1540 "parsing/parser.mly" +# 1619 "parsing/parser.mly" ( mkmod ~loc:_sloc ~attrs (Pmod_structure s) ) -# 24613 "parsing/parser.ml" +# 24603 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -24655,17 +24645,17 @@ module Tables = struct let _v : (Parsetree.module_expr) = let _2 = let _1 = _1_inlined1 in -# 4476 "parsing/parser.mly" +# 4548 "parsing/parser.mly" ( _1 ) -# 24661 "parsing/parser.ml" +# 24651 "parsing/parser.ml" in let _loc__4_ = (_startpos__4_, _endpos__4_) in let _loc__1_ = (_startpos__1_, _endpos__1_) in -# 1542 "parsing/parser.mly" +# 1621 "parsing/parser.mly" ( unclosed "struct" _loc__1_ "end" _loc__4_ ) -# 24669 "parsing/parser.ml" +# 24659 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -24718,30 +24708,30 @@ module Tables = struct let _v : (Parsetree.module_expr) = let args = let _1 = _1_inlined2 in -# 1506 "parsing/parser.mly" +# 1585 "parsing/parser.mly" ( _1 ) -# 24724 "parsing/parser.ml" +# 24714 "parsing/parser.ml" in let attrs = let _1 = _1_inlined1 in -# 4476 "parsing/parser.mly" +# 4548 "parsing/parser.mly" ( _1 ) -# 24732 "parsing/parser.ml" +# 24722 "parsing/parser.ml" in let _endpos = _endpos_me_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1544 "parsing/parser.mly" +# 1623 "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 ) ) -# 24745 "parsing/parser.ml" +# 24735 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -24764,9 +24754,9 @@ module Tables = struct let _startpos = _startpos_me_ in let _endpos = _endpos_me_ in let _v : (Parsetree.module_expr) = -# 1550 "parsing/parser.mly" +# 1629 "parsing/parser.mly" ( me ) -# 24770 "parsing/parser.ml" +# 24760 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -24796,9 +24786,9 @@ module Tables = struct let _startpos = _startpos_me_ in let _endpos = _endpos_attr_ in let _v : (Parsetree.module_expr) = -# 1552 "parsing/parser.mly" +# 1631 "parsing/parser.mly" ( Mod.attr me attr ) -# 24802 "parsing/parser.ml" +# 24792 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -24827,30 +24817,30 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1123 "parsing/parser.mly" +# 1202 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 24833 "parsing/parser.ml" +# 24823 "parsing/parser.ml" in -# 1556 "parsing/parser.mly" +# 1635 "parsing/parser.mly" ( Pmod_ident x ) -# 24839 "parsing/parser.ml" +# 24829 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1166 "parsing/parser.mly" +# 1245 "parsing/parser.mly" ( mkmod ~loc:_sloc _1 ) -# 24848 "parsing/parser.ml" +# 24838 "parsing/parser.ml" in -# 1568 "parsing/parser.mly" +# 1647 "parsing/parser.mly" ( _1 ) -# 24854 "parsing/parser.ml" +# 24844 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -24881,24 +24871,24 @@ module Tables = struct let _endpos = _endpos_me2_ in let _v : (Parsetree.module_expr) = let _1 = let _1 = -# 1559 "parsing/parser.mly" +# 1638 "parsing/parser.mly" ( Pmod_apply(me1, me2) ) -# 24887 "parsing/parser.ml" +# 24877 "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 -# 1166 "parsing/parser.mly" +# 1245 "parsing/parser.mly" ( mkmod ~loc:_sloc _1 ) -# 24896 "parsing/parser.ml" +# 24886 "parsing/parser.ml" in -# 1568 "parsing/parser.mly" +# 1647 "parsing/parser.mly" ( _1 ) -# 24902 "parsing/parser.ml" +# 24892 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -24940,10 +24930,10 @@ module Tables = struct let _symbolstartpos = _startpos_me1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1562 "parsing/parser.mly" +# 1641 "parsing/parser.mly" ( (* TODO review mkmod location *) Pmod_apply(me1, mkmod ~loc:_sloc (Pmod_structure [])) ) -# 24947 "parsing/parser.ml" +# 24937 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos__3_, _startpos_me1_) in @@ -24951,15 +24941,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1166 "parsing/parser.mly" +# 1245 "parsing/parser.mly" ( mkmod ~loc:_sloc _1 ) -# 24957 "parsing/parser.ml" +# 24947 "parsing/parser.ml" in -# 1568 "parsing/parser.mly" +# 1647 "parsing/parser.mly" ( _1 ) -# 24963 "parsing/parser.ml" +# 24953 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -24983,24 +24973,24 @@ module Tables = struct let _endpos = _endpos_ex_ in let _v : (Parsetree.module_expr) = let _1 = let _1 = -# 1566 "parsing/parser.mly" +# 1645 "parsing/parser.mly" ( Pmod_extension ex ) -# 24989 "parsing/parser.ml" +# 24979 "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 -# 1166 "parsing/parser.mly" +# 1245 "parsing/parser.mly" ( mkmod ~loc:_sloc _1 ) -# 24998 "parsing/parser.ml" +# 24988 "parsing/parser.ml" in -# 1568 "parsing/parser.mly" +# 1647 "parsing/parser.mly" ( _1 ) -# 25004 "parsing/parser.ml" +# 24994 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -25019,17 +25009,17 @@ module Tables = struct MenhirLib.EngineTypes.next = _menhir_stack; } = _menhir_stack in let x : ( -# 990 "parsing/parser.mly" +# 1068 "parsing/parser.mly" (string) -# 25025 "parsing/parser.ml" +# 25015 "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) = -# 1523 "parsing/parser.mly" +# 1602 "parsing/parser.mly" ( Some x ) -# 25033 "parsing/parser.ml" +# 25023 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -25052,9 +25042,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string option) = -# 1526 "parsing/parser.mly" +# 1605 "parsing/parser.mly" ( None ) -# 25058 "parsing/parser.ml" +# 25048 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -25112,9 +25102,9 @@ module Tables = struct let _1_inlined3 : (Longident.t) = Obj.magic _1_inlined3 in let _5 : unit = Obj.magic _5 in let _1_inlined2 : ( -# 990 "parsing/parser.mly" +# 1068 "parsing/parser.mly" (string) -# 25118 "parsing/parser.ml" +# 25108 "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 @@ -25125,9 +25115,9 @@ module Tables = struct let _v : (Parsetree.module_substitution * string Asttypes.loc option) = let attrs2 = let _1 = _1_inlined4 in -# 4472 "parsing/parser.mly" +# 4544 "parsing/parser.mly" ( _1 ) -# 25131 "parsing/parser.ml" +# 25121 "parsing/parser.ml" in let _endpos_attrs2_ = _endpos__1_inlined4_ in @@ -25137,9 +25127,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1123 "parsing/parser.mly" +# 1202 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 25143 "parsing/parser.ml" +# 25133 "parsing/parser.ml" in let uid = @@ -25148,31 +25138,31 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1123 "parsing/parser.mly" +# 1202 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 25154 "parsing/parser.ml" +# 25144 "parsing/parser.ml" in let attrs1 = let _1 = _1_inlined1 in -# 4476 "parsing/parser.mly" +# 4548 "parsing/parser.mly" ( _1 ) -# 25162 "parsing/parser.ml" +# 25152 "parsing/parser.ml" in let _endpos = _endpos_attrs2_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2008 "parsing/parser.mly" +# 2087 "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 ) -# 25176 "parsing/parser.ml" +# 25166 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -25223,9 +25213,9 @@ module Tables = struct let _6 : unit = Obj.magic _6 in let _5 : unit = Obj.magic _5 in let _1_inlined2 : ( -# 990 "parsing/parser.mly" +# 1068 "parsing/parser.mly" (string) -# 25229 "parsing/parser.ml" +# 25219 "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 @@ -25239,24 +25229,24 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1123 "parsing/parser.mly" +# 1202 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 25245 "parsing/parser.ml" +# 25235 "parsing/parser.ml" in let _3 = let _1 = _1_inlined1 in -# 4476 "parsing/parser.mly" +# 4548 "parsing/parser.mly" ( _1 ) -# 25253 "parsing/parser.ml" +# 25243 "parsing/parser.ml" in let _loc__6_ = (_startpos__6_, _endpos__6_) in -# 2015 "parsing/parser.mly" +# 2094 "parsing/parser.mly" ( expecting _loc__6_ "module path" ) -# 25260 "parsing/parser.ml" +# 25250 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -25302,18 +25292,18 @@ module Tables = struct let _v : (Parsetree.module_type) = let attrs = let _1 = _1_inlined1 in -# 4476 "parsing/parser.mly" +# 4548 "parsing/parser.mly" ( _1 ) -# 25308 "parsing/parser.ml" +# 25298 "parsing/parser.ml" in let _endpos = _endpos__4_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1850 "parsing/parser.mly" +# 1929 "parsing/parser.mly" ( mkmty ~loc:_sloc ~attrs (Pmty_signature s) ) -# 25317 "parsing/parser.ml" +# 25307 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -25359,17 +25349,17 @@ module Tables = struct let _v : (Parsetree.module_type) = let _2 = let _1 = _1_inlined1 in -# 4476 "parsing/parser.mly" +# 4548 "parsing/parser.mly" ( _1 ) -# 25365 "parsing/parser.ml" +# 25355 "parsing/parser.ml" in let _loc__4_ = (_startpos__4_, _endpos__4_) in let _loc__1_ = (_startpos__1_, _endpos__1_) in -# 1852 "parsing/parser.mly" +# 1931 "parsing/parser.mly" ( unclosed "sig" _loc__1_ "end" _loc__4_ ) -# 25373 "parsing/parser.ml" +# 25363 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -25422,30 +25412,30 @@ module Tables = struct let _v : (Parsetree.module_type) = let args = let _1 = _1_inlined2 in -# 1506 "parsing/parser.mly" +# 1585 "parsing/parser.mly" ( _1 ) -# 25428 "parsing/parser.ml" +# 25418 "parsing/parser.ml" in let attrs = let _1 = _1_inlined1 in -# 4476 "parsing/parser.mly" +# 4548 "parsing/parser.mly" ( _1 ) -# 25436 "parsing/parser.ml" +# 25426 "parsing/parser.ml" in let _endpos = _endpos_mty_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1856 "parsing/parser.mly" +# 1935 "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 ) ) -# 25449 "parsing/parser.ml" +# 25439 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -25498,18 +25488,18 @@ module Tables = struct let _v : (Parsetree.module_type) = let _4 = let _1 = _1_inlined1 in -# 4476 "parsing/parser.mly" +# 4548 "parsing/parser.mly" ( _1 ) -# 25504 "parsing/parser.ml" +# 25494 "parsing/parser.ml" in let _endpos = _endpos__5_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1862 "parsing/parser.mly" +# 1941 "parsing/parser.mly" ( mkmty ~loc:_sloc ~attrs:_4 (Pmty_typeof _5) ) -# 25513 "parsing/parser.ml" +# 25503 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -25546,9 +25536,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : (Parsetree.module_type) = -# 1864 "parsing/parser.mly" +# 1943 "parsing/parser.mly" ( _2 ) -# 25552 "parsing/parser.ml" +# 25542 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -25587,9 +25577,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 -# 1866 "parsing/parser.mly" +# 1945 "parsing/parser.mly" ( unclosed "(" _loc__1_ ")" _loc__3_ ) -# 25593 "parsing/parser.ml" +# 25583 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -25619,9 +25609,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (Parsetree.module_type) = -# 1868 "parsing/parser.mly" +# 1947 "parsing/parser.mly" ( Mty.attr _1 _2 ) -# 25625 "parsing/parser.ml" +# 25615 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -25650,30 +25640,30 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1123 "parsing/parser.mly" +# 1202 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 25656 "parsing/parser.ml" +# 25646 "parsing/parser.ml" in -# 1871 "parsing/parser.mly" +# 1950 "parsing/parser.mly" ( Pmty_ident _1 ) -# 25662 "parsing/parser.ml" +# 25652 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1168 "parsing/parser.mly" +# 1247 "parsing/parser.mly" ( mkmty ~loc:_sloc _1 ) -# 25671 "parsing/parser.ml" +# 25661 "parsing/parser.ml" in -# 1882 "parsing/parser.mly" +# 1961 "parsing/parser.mly" ( _1 ) -# 25677 "parsing/parser.ml" +# 25667 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -25711,24 +25701,24 @@ module Tables = struct let _endpos = _endpos__3_ in let _v : (Parsetree.module_type) = let _1 = let _1 = -# 1874 "parsing/parser.mly" +# 1953 "parsing/parser.mly" ( Pmty_functor(Named (mknoloc None, _1), _3) ) -# 25717 "parsing/parser.ml" +# 25707 "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 -# 1168 "parsing/parser.mly" +# 1247 "parsing/parser.mly" ( mkmty ~loc:_sloc _1 ) -# 25726 "parsing/parser.ml" +# 25716 "parsing/parser.ml" in -# 1882 "parsing/parser.mly" +# 1961 "parsing/parser.mly" ( _1 ) -# 25732 "parsing/parser.ml" +# 25722 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -25770,18 +25760,18 @@ module Tables = struct let xs = # 253 "" ( List.rev xs ) -# 25774 "parsing/parser.ml" +# 25764 "parsing/parser.ml" in -# 1260 "parsing/parser.mly" +# 1339 "parsing/parser.mly" ( xs ) -# 25779 "parsing/parser.ml" +# 25769 "parsing/parser.ml" in -# 1876 "parsing/parser.mly" +# 1955 "parsing/parser.mly" ( Pmty_with(_1, _3) ) -# 25785 "parsing/parser.ml" +# 25775 "parsing/parser.ml" in let _endpos__1_ = _endpos_xs_ in @@ -25789,15 +25779,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1168 "parsing/parser.mly" +# 1247 "parsing/parser.mly" ( mkmty ~loc:_sloc _1 ) -# 25795 "parsing/parser.ml" +# 25785 "parsing/parser.ml" in -# 1882 "parsing/parser.mly" +# 1961 "parsing/parser.mly" ( _1 ) -# 25801 "parsing/parser.ml" +# 25791 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -25821,23 +25811,23 @@ module Tables = struct let _endpos = _endpos__1_ in let _v : (Parsetree.module_type) = let _1 = let _1 = -# 1880 "parsing/parser.mly" +# 1959 "parsing/parser.mly" ( Pmty_extension _1 ) -# 25827 "parsing/parser.ml" +# 25817 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1168 "parsing/parser.mly" +# 1247 "parsing/parser.mly" ( mkmty ~loc:_sloc _1 ) -# 25835 "parsing/parser.ml" +# 25825 "parsing/parser.ml" in -# 1882 "parsing/parser.mly" +# 1961 "parsing/parser.mly" ( _1 ) -# 25841 "parsing/parser.ml" +# 25831 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -25904,9 +25894,9 @@ module Tables = struct let _v : (Parsetree.module_type_declaration * string Asttypes.loc option) = let attrs2 = let _1 = _1_inlined3 in -# 4472 "parsing/parser.mly" +# 4544 "parsing/parser.mly" ( _1 ) -# 25910 "parsing/parser.ml" +# 25900 "parsing/parser.ml" in let _endpos_attrs2_ = _endpos__1_inlined3_ in @@ -25916,31 +25906,31 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1123 "parsing/parser.mly" +# 1202 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 25922 "parsing/parser.ml" +# 25912 "parsing/parser.ml" in let attrs1 = let _1 = _1_inlined1 in -# 4476 "parsing/parser.mly" +# 4548 "parsing/parser.mly" ( _1 ) -# 25930 "parsing/parser.ml" +# 25920 "parsing/parser.ml" in let _endpos = _endpos_attrs2_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1796 "parsing/parser.mly" +# 1875 "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 ) -# 25944 "parsing/parser.ml" +# 25934 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -26014,9 +26004,9 @@ module Tables = struct let _v : (Parsetree.module_type_declaration * string Asttypes.loc option) = let attrs2 = let _1 = _1_inlined3 in -# 4472 "parsing/parser.mly" +# 4544 "parsing/parser.mly" ( _1 ) -# 26020 "parsing/parser.ml" +# 26010 "parsing/parser.ml" in let _endpos_attrs2_ = _endpos__1_inlined3_ in @@ -26026,31 +26016,31 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1123 "parsing/parser.mly" +# 1202 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 26032 "parsing/parser.ml" +# 26022 "parsing/parser.ml" in let attrs1 = let _1 = _1_inlined1 in -# 4476 "parsing/parser.mly" +# 4548 "parsing/parser.mly" ( _1 ) -# 26040 "parsing/parser.ml" +# 26030 "parsing/parser.ml" in let _endpos = _endpos_attrs2_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2064 "parsing/parser.mly" +# 2143 "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 ) -# 26054 "parsing/parser.ml" +# 26044 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -26073,9 +26063,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Longident.t) = -# 4244 "parsing/parser.mly" +# 4316 "parsing/parser.mly" ( _1 ) -# 26079 "parsing/parser.ml" +# 26069 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -26091,9 +26081,9 @@ module Tables = struct let _startpos = _menhir_stack.MenhirLib.EngineTypes.endp in let _endpos = _startpos in let _v : (Asttypes.mutable_flag) = -# 4325 "parsing/parser.mly" +# 4397 "parsing/parser.mly" ( Immutable ) -# 26097 "parsing/parser.ml" +# 26087 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -26116,9 +26106,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Asttypes.mutable_flag) = -# 4326 "parsing/parser.mly" +# 4398 "parsing/parser.mly" ( Mutable ) -# 26122 "parsing/parser.ml" +# 26112 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -26134,9 +26124,9 @@ module Tables = struct let _startpos = _menhir_stack.MenhirLib.EngineTypes.endp in let _endpos = _startpos in let _v : (Asttypes.mutable_flag * Asttypes.global_flag) = -# 4329 "parsing/parser.mly" +# 4401 "parsing/parser.mly" ( Immutable, Nothing ) -# 26140 "parsing/parser.ml" +# 26130 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -26159,9 +26149,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Asttypes.mutable_flag * Asttypes.global_flag) = -# 4330 "parsing/parser.mly" +# 4402 "parsing/parser.mly" ( Mutable, Nothing ) -# 26165 "parsing/parser.ml" +# 26155 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -26184,9 +26174,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Asttypes.mutable_flag * Asttypes.global_flag) = -# 4331 "parsing/parser.mly" +# 4403 "parsing/parser.mly" ( Immutable, Global ) -# 26190 "parsing/parser.ml" +# 26180 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -26202,9 +26192,9 @@ module Tables = struct let _startpos = _menhir_stack.MenhirLib.EngineTypes.endp in let _endpos = _startpos in let _v : (Asttypes.mutable_flag * Asttypes.virtual_flag) = -# 4343 "parsing/parser.mly" +# 4415 "parsing/parser.mly" ( Immutable, Concrete ) -# 26208 "parsing/parser.ml" +# 26198 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -26227,9 +26217,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Asttypes.mutable_flag * Asttypes.virtual_flag) = -# 4345 "parsing/parser.mly" +# 4417 "parsing/parser.mly" ( Mutable, Concrete ) -# 26233 "parsing/parser.ml" +# 26223 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -26252,9 +26242,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Asttypes.mutable_flag * Asttypes.virtual_flag) = -# 4347 "parsing/parser.mly" +# 4419 "parsing/parser.mly" ( Immutable, Virtual ) -# 26258 "parsing/parser.ml" +# 26248 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -26284,9 +26274,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (Asttypes.mutable_flag * Asttypes.virtual_flag) = -# 4350 "parsing/parser.mly" +# 4422 "parsing/parser.mly" ( Mutable, Virtual ) -# 26290 "parsing/parser.ml" +# 26280 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -26316,9 +26306,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (Asttypes.mutable_flag * Asttypes.virtual_flag) = -# 4350 "parsing/parser.mly" +# 4422 "parsing/parser.mly" ( Mutable, Virtual ) -# 26322 "parsing/parser.ml" +# 26312 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -26348,9 +26338,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (Asttypes.label) = -# 4296 "parsing/parser.mly" +# 4368 "parsing/parser.mly" ( _2 ) -# 26354 "parsing/parser.ml" +# 26344 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -26369,9 +26359,9 @@ module Tables = struct MenhirLib.EngineTypes.next = _menhir_stack; } = _menhir_stack in let _1 : ( -# 937 "parsing/parser.mly" +# 1014 "parsing/parser.mly" (string) -# 26375 "parsing/parser.ml" +# 26365 "parsing/parser.ml" ) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in @@ -26381,15 +26371,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1123 "parsing/parser.mly" +# 1202 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 26387 "parsing/parser.ml" +# 26377 "parsing/parser.ml" in -# 3136 "parsing/parser.mly" +# 3203 "parsing/parser.mly" ( _1, None ) -# 26393 "parsing/parser.ml" +# 26383 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -26435,9 +26425,9 @@ module Tables = struct let layout : (Asttypes.layout_annotation) = Obj.magic layout in let _3 : unit = Obj.magic _3 in let _1_inlined1 : ( -# 937 "parsing/parser.mly" +# 1014 "parsing/parser.mly" (string) -# 26441 "parsing/parser.ml" +# 26431 "parsing/parser.ml" ) = Obj.magic _1_inlined1 in let _1 : unit = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in @@ -26449,15 +26439,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1123 "parsing/parser.mly" +# 1202 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 26455 "parsing/parser.ml" +# 26445 "parsing/parser.ml" in -# 3138 "parsing/parser.mly" +# 3205 "parsing/parser.mly" ( name, Some layout ) -# 26461 "parsing/parser.ml" +# 26451 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -26480,9 +26470,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : ((string Asttypes.loc * Asttypes.layout_annotation option) list) = -# 3133 "parsing/parser.mly" +# 3200 "parsing/parser.mly" ( _1 ) -# 26486 "parsing/parser.ml" +# 26476 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -26501,9 +26491,9 @@ module Tables = struct MenhirLib.EngineTypes.next = _menhir_stack; } = _menhir_stack in let _1 : ( -# 937 "parsing/parser.mly" +# 1014 "parsing/parser.mly" (string) -# 26507 "parsing/parser.ml" +# 26497 "parsing/parser.ml" ) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in @@ -26513,15 +26503,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1123 "parsing/parser.mly" +# 1202 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 26519 "parsing/parser.ml" +# 26509 "parsing/parser.ml" in # 221 "" ( [ x ] ) -# 26525 "parsing/parser.ml" +# 26515 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -26547,9 +26537,9 @@ module Tables = struct } = _menhir_stack in let xs : (string Asttypes.loc list) = Obj.magic xs in let _1 : ( -# 937 "parsing/parser.mly" +# 1014 "parsing/parser.mly" (string) -# 26553 "parsing/parser.ml" +# 26543 "parsing/parser.ml" ) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in @@ -26559,15 +26549,246 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1123 "parsing/parser.mly" +# 1202 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 26565 "parsing/parser.ml" +# 26555 "parsing/parser.ml" + + in + +# 223 "" + ( x :: xs ) +# 26561 "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 : ((modes * (Lexing.position * Lexing.position)) list) = let x = + let _endpos = _endpos__1_ in + let _symbolstartpos = _startpos__1_ in + let _sloc = (_symbolstartpos, _endpos) in + +# 3979 "parsing/parser.mly" + ( (Local, _sloc) ) +# 26590 "parsing/parser.ml" + + in + +# 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 = _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 : ((modes * (Lexing.position * Lexing.position)) list) = let x = + let _endpos = _endpos__1_ in + let _symbolstartpos = _startpos__1_ in + let _sloc = (_symbolstartpos, _endpos) in + +# 3981 "parsing/parser.mly" + ( (Unique, _sloc) ) +# 26625 "parsing/parser.ml" + + in + +# 221 "" + ( [ x ] ) +# 26631 "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 : ((modes * (Lexing.position * Lexing.position)) list) = let x = + let _endpos = _endpos__1_ in + let _symbolstartpos = _startpos__1_ in + let _sloc = (_symbolstartpos, _endpos) in + +# 3983 "parsing/parser.mly" + ( (Once, _sloc) ) +# 26660 "parsing/parser.ml" + + in + +# 221 "" + ( [ x ] ) +# 26666 "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 = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + }; + } = _menhir_stack in + let xs : ((modes * (Lexing.position * Lexing.position)) 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_xs_ in + let _v : ((modes * (Lexing.position * Lexing.position)) list) = let x = + let _endpos = _endpos__1_ in + let _symbolstartpos = _startpos__1_ in + let _sloc = (_symbolstartpos, _endpos) in + +# 3979 "parsing/parser.mly" + ( (Local, _sloc) ) +# 26702 "parsing/parser.ml" in # 223 "" ( x :: xs ) -# 26571 "parsing/parser.ml" +# 26708 "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 = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + }; + } = _menhir_stack in + let xs : ((modes * (Lexing.position * Lexing.position)) 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_xs_ in + let _v : ((modes * (Lexing.position * Lexing.position)) list) = let x = + let _endpos = _endpos__1_ in + let _symbolstartpos = _startpos__1_ in + let _sloc = (_symbolstartpos, _endpos) in + +# 3981 "parsing/parser.mly" + ( (Unique, _sloc) ) +# 26744 "parsing/parser.ml" + + in + +# 223 "" + ( x :: xs ) +# 26750 "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 = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + }; + } = _menhir_stack in + let xs : ((modes * (Lexing.position * Lexing.position)) 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_xs_ in + let _v : ((modes * (Lexing.position * Lexing.position)) list) = let x = + let _endpos = _endpos__1_ in + let _symbolstartpos = _startpos__1_ in + let _sloc = (_symbolstartpos, _endpos) in + +# 3983 "parsing/parser.mly" + ( (Once, _sloc) ) +# 26786 "parsing/parser.ml" + + in + +# 223 "" + ( x :: xs ) +# 26792 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -26592,7 +26813,7 @@ module Tables = struct let _v : ((string Asttypes.loc * Asttypes.layout_annotation option) list) = # 221 "" ( [ x ] ) -# 26596 "parsing/parser.ml" +# 26817 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -26624,7 +26845,7 @@ module Tables = struct let _v : ((string Asttypes.loc * Asttypes.layout_annotation option) list) = # 223 "" ( x :: xs ) -# 26628 "parsing/parser.ml" +# 26849 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -26643,22 +26864,22 @@ module Tables = struct MenhirLib.EngineTypes.next = _menhir_stack; } = _menhir_stack in let s : ( -# 977 "parsing/parser.mly" +# 1055 "parsing/parser.mly" (string * Location.t * string option) -# 26649 "parsing/parser.ml" +# 26870 "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 = -# 4292 "parsing/parser.mly" +# 4364 "parsing/parser.mly" ( let body, _, _ = s in body ) -# 26657 "parsing/parser.ml" +# 26878 "parsing/parser.ml" in # 221 "" ( [ x ] ) -# 26662 "parsing/parser.ml" +# 26883 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -26684,22 +26905,22 @@ module Tables = struct } = _menhir_stack in let xs : (string list) = Obj.magic xs in let s : ( -# 977 "parsing/parser.mly" +# 1055 "parsing/parser.mly" (string * Location.t * string option) -# 26690 "parsing/parser.ml" +# 26911 "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 = -# 4292 "parsing/parser.mly" +# 4364 "parsing/parser.mly" ( let body, _, _ = s in body ) -# 26698 "parsing/parser.ml" +# 26919 "parsing/parser.ml" in # 223 "" ( x :: xs ) -# 26703 "parsing/parser.ml" +# 26924 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -26722,14 +26943,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 = -# 4321 "parsing/parser.mly" +# 4393 "parsing/parser.mly" ( Public ) -# 26728 "parsing/parser.ml" +# 26949 "parsing/parser.ml" in -# 3453 "parsing/parser.mly" +# 3520 "parsing/parser.mly" ( (Ptype_abstract, priv, Some ty) ) -# 26733 "parsing/parser.ml" +# 26954 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -26759,14 +26980,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 = -# 4322 "parsing/parser.mly" +# 4394 "parsing/parser.mly" ( Private ) -# 26765 "parsing/parser.ml" +# 26986 "parsing/parser.ml" in -# 3453 "parsing/parser.mly" +# 3520 "parsing/parser.mly" ( (Ptype_abstract, priv, Some ty) ) -# 26770 "parsing/parser.ml" +# 26991 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -26789,26 +27010,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 = -# 4321 "parsing/parser.mly" +# 4393 "parsing/parser.mly" ( Public ) -# 26795 "parsing/parser.ml" +# 27016 "parsing/parser.ml" in let oty = let _1 = # 124 "" ( None ) -# 26801 "parsing/parser.ml" +# 27022 "parsing/parser.ml" in -# 3469 "parsing/parser.mly" +# 3536 "parsing/parser.mly" ( _1 ) -# 26806 "parsing/parser.ml" +# 27027 "parsing/parser.ml" in -# 3457 "parsing/parser.mly" +# 3524 "parsing/parser.mly" ( (Ptype_variant cs, priv, oty) ) -# 26812 "parsing/parser.ml" +# 27033 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -26838,26 +27059,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 = -# 4322 "parsing/parser.mly" +# 4394 "parsing/parser.mly" ( Private ) -# 26844 "parsing/parser.ml" +# 27065 "parsing/parser.ml" in let oty = let _1 = # 124 "" ( None ) -# 26850 "parsing/parser.ml" +# 27071 "parsing/parser.ml" in -# 3469 "parsing/parser.mly" +# 3536 "parsing/parser.mly" ( _1 ) -# 26855 "parsing/parser.ml" +# 27076 "parsing/parser.ml" in -# 3457 "parsing/parser.mly" +# 3524 "parsing/parser.mly" ( (Ptype_variant cs, priv, oty) ) -# 26861 "parsing/parser.ml" +# 27082 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -26894,33 +27115,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 = -# 4321 "parsing/parser.mly" +# 4393 "parsing/parser.mly" ( Public ) -# 26900 "parsing/parser.ml" +# 27121 "parsing/parser.ml" in let oty = let _1 = let x = # 191 "" ( x ) -# 26907 "parsing/parser.ml" +# 27128 "parsing/parser.ml" in # 126 "" ( Some x ) -# 26912 "parsing/parser.ml" +# 27133 "parsing/parser.ml" in -# 3469 "parsing/parser.mly" +# 3536 "parsing/parser.mly" ( _1 ) -# 26918 "parsing/parser.ml" +# 27139 "parsing/parser.ml" in -# 3457 "parsing/parser.mly" +# 3524 "parsing/parser.mly" ( (Ptype_variant cs, priv, oty) ) -# 26924 "parsing/parser.ml" +# 27145 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -26964,33 +27185,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 = -# 4322 "parsing/parser.mly" +# 4394 "parsing/parser.mly" ( Private ) -# 26970 "parsing/parser.ml" +# 27191 "parsing/parser.ml" in let oty = let _1 = let x = # 191 "" ( x ) -# 26977 "parsing/parser.ml" +# 27198 "parsing/parser.ml" in # 126 "" ( Some x ) -# 26982 "parsing/parser.ml" +# 27203 "parsing/parser.ml" in -# 3469 "parsing/parser.mly" +# 3536 "parsing/parser.mly" ( _1 ) -# 26988 "parsing/parser.ml" +# 27209 "parsing/parser.ml" in -# 3457 "parsing/parser.mly" +# 3524 "parsing/parser.mly" ( (Ptype_variant cs, priv, oty) ) -# 26994 "parsing/parser.ml" +# 27215 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -27013,26 +27234,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 = -# 4321 "parsing/parser.mly" +# 4393 "parsing/parser.mly" ( Public ) -# 27019 "parsing/parser.ml" +# 27240 "parsing/parser.ml" in let oty = let _1 = # 124 "" ( None ) -# 27025 "parsing/parser.ml" +# 27246 "parsing/parser.ml" in -# 3469 "parsing/parser.mly" +# 3536 "parsing/parser.mly" ( _1 ) -# 27030 "parsing/parser.ml" +# 27251 "parsing/parser.ml" in -# 3461 "parsing/parser.mly" +# 3528 "parsing/parser.mly" ( (Ptype_open, priv, oty) ) -# 27036 "parsing/parser.ml" +# 27257 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -27062,26 +27283,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 = -# 4322 "parsing/parser.mly" +# 4394 "parsing/parser.mly" ( Private ) -# 27068 "parsing/parser.ml" +# 27289 "parsing/parser.ml" in let oty = let _1 = # 124 "" ( None ) -# 27074 "parsing/parser.ml" +# 27295 "parsing/parser.ml" in -# 3469 "parsing/parser.mly" +# 3536 "parsing/parser.mly" ( _1 ) -# 27079 "parsing/parser.ml" +# 27300 "parsing/parser.ml" in -# 3461 "parsing/parser.mly" +# 3528 "parsing/parser.mly" ( (Ptype_open, priv, oty) ) -# 27085 "parsing/parser.ml" +# 27306 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -27118,33 +27339,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 = -# 4321 "parsing/parser.mly" +# 4393 "parsing/parser.mly" ( Public ) -# 27124 "parsing/parser.ml" +# 27345 "parsing/parser.ml" in let oty = let _1 = let x = # 191 "" ( x ) -# 27131 "parsing/parser.ml" +# 27352 "parsing/parser.ml" in # 126 "" ( Some x ) -# 27136 "parsing/parser.ml" +# 27357 "parsing/parser.ml" in -# 3469 "parsing/parser.mly" +# 3536 "parsing/parser.mly" ( _1 ) -# 27142 "parsing/parser.ml" +# 27363 "parsing/parser.ml" in -# 3461 "parsing/parser.mly" +# 3528 "parsing/parser.mly" ( (Ptype_open, priv, oty) ) -# 27148 "parsing/parser.ml" +# 27369 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -27188,33 +27409,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 = -# 4322 "parsing/parser.mly" +# 4394 "parsing/parser.mly" ( Private ) -# 27194 "parsing/parser.ml" +# 27415 "parsing/parser.ml" in let oty = let _1 = let x = # 191 "" ( x ) -# 27201 "parsing/parser.ml" +# 27422 "parsing/parser.ml" in # 126 "" ( Some x ) -# 27206 "parsing/parser.ml" +# 27427 "parsing/parser.ml" in -# 3469 "parsing/parser.mly" +# 3536 "parsing/parser.mly" ( _1 ) -# 27212 "parsing/parser.ml" +# 27433 "parsing/parser.ml" in -# 3461 "parsing/parser.mly" +# 3528 "parsing/parser.mly" ( (Ptype_open, priv, oty) ) -# 27218 "parsing/parser.ml" +# 27439 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -27251,26 +27472,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 = -# 4321 "parsing/parser.mly" +# 4393 "parsing/parser.mly" ( Public ) -# 27257 "parsing/parser.ml" +# 27478 "parsing/parser.ml" in let oty = let _1 = # 124 "" ( None ) -# 27263 "parsing/parser.ml" +# 27484 "parsing/parser.ml" in -# 3469 "parsing/parser.mly" +# 3536 "parsing/parser.mly" ( _1 ) -# 27268 "parsing/parser.ml" +# 27489 "parsing/parser.ml" in -# 3465 "parsing/parser.mly" +# 3532 "parsing/parser.mly" ( (Ptype_record ls, priv, oty) ) -# 27274 "parsing/parser.ml" +# 27495 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -27314,26 +27535,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 = -# 4322 "parsing/parser.mly" +# 4394 "parsing/parser.mly" ( Private ) -# 27320 "parsing/parser.ml" +# 27541 "parsing/parser.ml" in let oty = let _1 = # 124 "" ( None ) -# 27326 "parsing/parser.ml" +# 27547 "parsing/parser.ml" in -# 3469 "parsing/parser.mly" +# 3536 "parsing/parser.mly" ( _1 ) -# 27331 "parsing/parser.ml" +# 27552 "parsing/parser.ml" in -# 3465 "parsing/parser.mly" +# 3532 "parsing/parser.mly" ( (Ptype_record ls, priv, oty) ) -# 27337 "parsing/parser.ml" +# 27558 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -27384,33 +27605,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 = -# 4321 "parsing/parser.mly" +# 4393 "parsing/parser.mly" ( Public ) -# 27390 "parsing/parser.ml" +# 27611 "parsing/parser.ml" in let oty = let _1 = let x = # 191 "" ( x ) -# 27397 "parsing/parser.ml" +# 27618 "parsing/parser.ml" in # 126 "" ( Some x ) -# 27402 "parsing/parser.ml" +# 27623 "parsing/parser.ml" in -# 3469 "parsing/parser.mly" +# 3536 "parsing/parser.mly" ( _1 ) -# 27408 "parsing/parser.ml" +# 27629 "parsing/parser.ml" in -# 3465 "parsing/parser.mly" +# 3532 "parsing/parser.mly" ( (Ptype_record ls, priv, oty) ) -# 27414 "parsing/parser.ml" +# 27635 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -27468,33 +27689,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 = -# 4322 "parsing/parser.mly" +# 4394 "parsing/parser.mly" ( Private ) -# 27474 "parsing/parser.ml" +# 27695 "parsing/parser.ml" in let oty = let _1 = let x = # 191 "" ( x ) -# 27481 "parsing/parser.ml" +# 27702 "parsing/parser.ml" in # 126 "" ( Some x ) -# 27486 "parsing/parser.ml" +# 27707 "parsing/parser.ml" in -# 3469 "parsing/parser.mly" +# 3536 "parsing/parser.mly" ( _1 ) -# 27492 "parsing/parser.ml" +# 27713 "parsing/parser.ml" in -# 3465 "parsing/parser.mly" +# 3532 "parsing/parser.mly" ( (Ptype_record ls, priv, oty) ) -# 27498 "parsing/parser.ml" +# 27719 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -27547,37 +27768,37 @@ module Tables = struct let _v : (Parsetree.open_declaration * string Asttypes.loc option) = let attrs2 = let _1 = _1_inlined2 in -# 4472 "parsing/parser.mly" +# 4544 "parsing/parser.mly" ( _1 ) -# 27553 "parsing/parser.ml" +# 27774 "parsing/parser.ml" in let _endpos_attrs2_ = _endpos__1_inlined2_ in let attrs1 = let _1 = _1_inlined1 in -# 4476 "parsing/parser.mly" +# 4548 "parsing/parser.mly" ( _1 ) -# 27562 "parsing/parser.ml" +# 27783 "parsing/parser.ml" in let override = -# 4377 "parsing/parser.mly" +# 4449 "parsing/parser.mly" ( Fresh ) -# 27568 "parsing/parser.ml" +# 27789 "parsing/parser.ml" in let _endpos = _endpos_attrs2_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1815 "parsing/parser.mly" +# 1894 "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 ) -# 27581 "parsing/parser.ml" +# 27802 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -27637,37 +27858,37 @@ module Tables = struct let _v : (Parsetree.open_declaration * string Asttypes.loc option) = let attrs2 = let _1 = _1_inlined3 in -# 4472 "parsing/parser.mly" +# 4544 "parsing/parser.mly" ( _1 ) -# 27643 "parsing/parser.ml" +# 27864 "parsing/parser.ml" in let _endpos_attrs2_ = _endpos__1_inlined3_ in let attrs1 = let _1 = _1_inlined2 in -# 4476 "parsing/parser.mly" +# 4548 "parsing/parser.mly" ( _1 ) -# 27652 "parsing/parser.ml" +# 27873 "parsing/parser.ml" in let override = -# 4378 "parsing/parser.mly" +# 4450 "parsing/parser.mly" ( Override ) -# 27658 "parsing/parser.ml" +# 27879 "parsing/parser.ml" in let _endpos = _endpos_attrs2_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1815 "parsing/parser.mly" +# 1894 "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 ) -# 27671 "parsing/parser.ml" +# 27892 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -27720,9 +27941,9 @@ module Tables = struct let _v : (Parsetree.open_description * string Asttypes.loc option) = let attrs2 = let _1 = _1_inlined3 in -# 4472 "parsing/parser.mly" +# 4544 "parsing/parser.mly" ( _1 ) -# 27726 "parsing/parser.ml" +# 27947 "parsing/parser.ml" in let _endpos_attrs2_ = _endpos__1_inlined3_ in @@ -27732,36 +27953,36 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1123 "parsing/parser.mly" +# 1202 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 27738 "parsing/parser.ml" +# 27959 "parsing/parser.ml" in let attrs1 = let _1 = _1_inlined1 in -# 4476 "parsing/parser.mly" +# 4548 "parsing/parser.mly" ( _1 ) -# 27746 "parsing/parser.ml" +# 27967 "parsing/parser.ml" in let override = -# 4377 "parsing/parser.mly" +# 4449 "parsing/parser.mly" ( Fresh ) -# 27752 "parsing/parser.ml" +# 27973 "parsing/parser.ml" in let _endpos = _endpos_attrs2_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1830 "parsing/parser.mly" +# 1909 "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 ) -# 27765 "parsing/parser.ml" +# 27986 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -27821,9 +28042,9 @@ module Tables = struct let _v : (Parsetree.open_description * string Asttypes.loc option) = let attrs2 = let _1 = _1_inlined4 in -# 4472 "parsing/parser.mly" +# 4544 "parsing/parser.mly" ( _1 ) -# 27827 "parsing/parser.ml" +# 28048 "parsing/parser.ml" in let _endpos_attrs2_ = _endpos__1_inlined4_ in @@ -27833,36 +28054,36 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1123 "parsing/parser.mly" +# 1202 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 27839 "parsing/parser.ml" +# 28060 "parsing/parser.ml" in let attrs1 = let _1 = _1_inlined2 in -# 4476 "parsing/parser.mly" +# 4548 "parsing/parser.mly" ( _1 ) -# 27847 "parsing/parser.ml" +# 28068 "parsing/parser.ml" in let override = -# 4378 "parsing/parser.mly" +# 4450 "parsing/parser.mly" ( Override ) -# 27853 "parsing/parser.ml" +# 28074 "parsing/parser.ml" in let _endpos = _endpos_attrs2_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1830 "parsing/parser.mly" +# 1909 "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 ) -# 27866 "parsing/parser.ml" +# 28087 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -27881,17 +28102,17 @@ module Tables = struct MenhirLib.EngineTypes.next = _menhir_stack; } = _menhir_stack in let _1 : ( -# 962 "parsing/parser.mly" +# 1040 "parsing/parser.mly" (string) -# 27887 "parsing/parser.ml" +# 28108 "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) = -# 4159 "parsing/parser.mly" +# 4231 "parsing/parser.mly" ( _1 ) -# 27895 "parsing/parser.ml" +# 28116 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -27910,17 +28131,17 @@ module Tables = struct MenhirLib.EngineTypes.next = _menhir_stack; } = _menhir_stack in let _1 : ( -# 917 "parsing/parser.mly" +# 994 "parsing/parser.mly" (string) -# 27916 "parsing/parser.ml" +# 28137 "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) = -# 4160 "parsing/parser.mly" +# 4232 "parsing/parser.mly" ( _1 ) -# 27924 "parsing/parser.ml" +# 28145 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -27939,17 +28160,17 @@ module Tables = struct MenhirLib.EngineTypes.next = _menhir_stack; } = _menhir_stack in let _1 : ( -# 918 "parsing/parser.mly" +# 995 "parsing/parser.mly" (string) -# 27945 "parsing/parser.ml" +# 28166 "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) = -# 4161 "parsing/parser.mly" +# 4233 "parsing/parser.mly" ( _1 ) -# 27953 "parsing/parser.ml" +# 28174 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -27989,17 +28210,17 @@ module Tables = struct let _3 : (string) = Obj.magic _3 in let _2 : unit = Obj.magic _2 in let _1 : ( -# 916 "parsing/parser.mly" +# 993 "parsing/parser.mly" (string) -# 27995 "parsing/parser.ml" +# 28216 "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) = -# 4162 "parsing/parser.mly" +# 4234 "parsing/parser.mly" ( "."^ _1 ^"(" ^ _3 ^ ")" ) -# 28003 "parsing/parser.ml" +# 28224 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -28046,17 +28267,17 @@ module Tables = struct let _3 : (string) = Obj.magic _3 in let _2 : unit = Obj.magic _2 in let _1 : ( -# 916 "parsing/parser.mly" +# 993 "parsing/parser.mly" (string) -# 28052 "parsing/parser.ml" +# 28273 "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) = -# 4163 "parsing/parser.mly" +# 4235 "parsing/parser.mly" ( "."^ _1 ^ "(" ^ _3 ^ ")<-" ) -# 28060 "parsing/parser.ml" +# 28281 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -28096,17 +28317,17 @@ module Tables = struct let _3 : (string) = Obj.magic _3 in let _2 : unit = Obj.magic _2 in let _1 : ( -# 916 "parsing/parser.mly" +# 993 "parsing/parser.mly" (string) -# 28102 "parsing/parser.ml" +# 28323 "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) = -# 4164 "parsing/parser.mly" +# 4236 "parsing/parser.mly" ( "."^ _1 ^"[" ^ _3 ^ "]" ) -# 28110 "parsing/parser.ml" +# 28331 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -28153,17 +28374,17 @@ module Tables = struct let _3 : (string) = Obj.magic _3 in let _2 : unit = Obj.magic _2 in let _1 : ( -# 916 "parsing/parser.mly" +# 993 "parsing/parser.mly" (string) -# 28159 "parsing/parser.ml" +# 28380 "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) = -# 4165 "parsing/parser.mly" +# 4237 "parsing/parser.mly" ( "."^ _1 ^ "[" ^ _3 ^ "]<-" ) -# 28167 "parsing/parser.ml" +# 28388 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -28203,17 +28424,17 @@ module Tables = struct let _3 : (string) = Obj.magic _3 in let _2 : unit = Obj.magic _2 in let _1 : ( -# 916 "parsing/parser.mly" +# 993 "parsing/parser.mly" (string) -# 28209 "parsing/parser.ml" +# 28430 "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) = -# 4166 "parsing/parser.mly" +# 4238 "parsing/parser.mly" ( "."^ _1 ^"{" ^ _3 ^ "}" ) -# 28217 "parsing/parser.ml" +# 28438 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -28260,17 +28481,17 @@ module Tables = struct let _3 : (string) = Obj.magic _3 in let _2 : unit = Obj.magic _2 in let _1 : ( -# 916 "parsing/parser.mly" +# 993 "parsing/parser.mly" (string) -# 28266 "parsing/parser.ml" +# 28487 "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) = -# 4167 "parsing/parser.mly" +# 4239 "parsing/parser.mly" ( "."^ _1 ^ "{" ^ _3 ^ "}<-" ) -# 28274 "parsing/parser.ml" +# 28495 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -28289,17 +28510,17 @@ module Tables = struct MenhirLib.EngineTypes.next = _menhir_stack; } = _menhir_stack in let _1 : ( -# 974 "parsing/parser.mly" +# 1052 "parsing/parser.mly" (string) -# 28295 "parsing/parser.ml" +# 28516 "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) = -# 4168 "parsing/parser.mly" +# 4240 "parsing/parser.mly" ( _1 ) -# 28303 "parsing/parser.ml" +# 28524 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -28322,9 +28543,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Asttypes.label) = -# 4169 "parsing/parser.mly" +# 4241 "parsing/parser.mly" ( "!" ) -# 28328 "parsing/parser.ml" +# 28549 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -28343,22 +28564,22 @@ module Tables = struct MenhirLib.EngineTypes.next = _menhir_stack; } = _menhir_stack in let op : ( -# 911 "parsing/parser.mly" +# 988 "parsing/parser.mly" (string) -# 28349 "parsing/parser.ml" +# 28570 "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 = -# 4173 "parsing/parser.mly" +# 4245 "parsing/parser.mly" ( op ) -# 28357 "parsing/parser.ml" +# 28578 "parsing/parser.ml" in -# 4170 "parsing/parser.mly" +# 4242 "parsing/parser.mly" ( _1 ) -# 28362 "parsing/parser.ml" +# 28583 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -28377,22 +28598,22 @@ module Tables = struct MenhirLib.EngineTypes.next = _menhir_stack; } = _menhir_stack in let op : ( -# 912 "parsing/parser.mly" +# 989 "parsing/parser.mly" (string) -# 28383 "parsing/parser.ml" +# 28604 "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 = -# 4174 "parsing/parser.mly" +# 4246 "parsing/parser.mly" ( op ) -# 28391 "parsing/parser.ml" +# 28612 "parsing/parser.ml" in -# 4170 "parsing/parser.mly" +# 4242 "parsing/parser.mly" ( _1 ) -# 28396 "parsing/parser.ml" +# 28617 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -28411,22 +28632,22 @@ module Tables = struct MenhirLib.EngineTypes.next = _menhir_stack; } = _menhir_stack in let op : ( -# 913 "parsing/parser.mly" +# 990 "parsing/parser.mly" (string) -# 28417 "parsing/parser.ml" +# 28638 "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 = -# 4175 "parsing/parser.mly" +# 4247 "parsing/parser.mly" ( op ) -# 28425 "parsing/parser.ml" +# 28646 "parsing/parser.ml" in -# 4170 "parsing/parser.mly" +# 4242 "parsing/parser.mly" ( _1 ) -# 28430 "parsing/parser.ml" +# 28651 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -28445,22 +28666,22 @@ module Tables = struct MenhirLib.EngineTypes.next = _menhir_stack; } = _menhir_stack in let op : ( -# 914 "parsing/parser.mly" +# 991 "parsing/parser.mly" (string) -# 28451 "parsing/parser.ml" +# 28672 "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 = -# 4176 "parsing/parser.mly" +# 4248 "parsing/parser.mly" ( op ) -# 28459 "parsing/parser.ml" +# 28680 "parsing/parser.ml" in -# 4170 "parsing/parser.mly" +# 4242 "parsing/parser.mly" ( _1 ) -# 28464 "parsing/parser.ml" +# 28685 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -28479,22 +28700,22 @@ module Tables = struct MenhirLib.EngineTypes.next = _menhir_stack; } = _menhir_stack in let op : ( -# 915 "parsing/parser.mly" +# 992 "parsing/parser.mly" (string) -# 28485 "parsing/parser.ml" +# 28706 "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 = -# 4177 "parsing/parser.mly" +# 4249 "parsing/parser.mly" ( op ) -# 28493 "parsing/parser.ml" +# 28714 "parsing/parser.ml" in -# 4170 "parsing/parser.mly" +# 4242 "parsing/parser.mly" ( _1 ) -# 28498 "parsing/parser.ml" +# 28719 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -28517,14 +28738,14 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Asttypes.label) = let _1 = -# 4178 "parsing/parser.mly" +# 4250 "parsing/parser.mly" ("+") -# 28523 "parsing/parser.ml" +# 28744 "parsing/parser.ml" in -# 4170 "parsing/parser.mly" +# 4242 "parsing/parser.mly" ( _1 ) -# 28528 "parsing/parser.ml" +# 28749 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -28547,14 +28768,14 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Asttypes.label) = let _1 = -# 4179 "parsing/parser.mly" +# 4251 "parsing/parser.mly" ("+.") -# 28553 "parsing/parser.ml" +# 28774 "parsing/parser.ml" in -# 4170 "parsing/parser.mly" +# 4242 "parsing/parser.mly" ( _1 ) -# 28558 "parsing/parser.ml" +# 28779 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -28577,14 +28798,14 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Asttypes.label) = let _1 = -# 4180 "parsing/parser.mly" +# 4252 "parsing/parser.mly" ("+=") -# 28583 "parsing/parser.ml" +# 28804 "parsing/parser.ml" in -# 4170 "parsing/parser.mly" +# 4242 "parsing/parser.mly" ( _1 ) -# 28588 "parsing/parser.ml" +# 28809 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -28607,14 +28828,14 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Asttypes.label) = let _1 = -# 4181 "parsing/parser.mly" +# 4253 "parsing/parser.mly" ("-") -# 28613 "parsing/parser.ml" +# 28834 "parsing/parser.ml" in -# 4170 "parsing/parser.mly" +# 4242 "parsing/parser.mly" ( _1 ) -# 28618 "parsing/parser.ml" +# 28839 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -28637,14 +28858,14 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Asttypes.label) = let _1 = -# 4182 "parsing/parser.mly" +# 4254 "parsing/parser.mly" ("-.") -# 28643 "parsing/parser.ml" +# 28864 "parsing/parser.ml" in -# 4170 "parsing/parser.mly" +# 4242 "parsing/parser.mly" ( _1 ) -# 28648 "parsing/parser.ml" +# 28869 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -28667,14 +28888,14 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Asttypes.label) = let _1 = -# 4183 "parsing/parser.mly" +# 4255 "parsing/parser.mly" ("*") -# 28673 "parsing/parser.ml" +# 28894 "parsing/parser.ml" in -# 4170 "parsing/parser.mly" +# 4242 "parsing/parser.mly" ( _1 ) -# 28678 "parsing/parser.ml" +# 28899 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -28697,14 +28918,14 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Asttypes.label) = let _1 = -# 4184 "parsing/parser.mly" +# 4256 "parsing/parser.mly" ("%") -# 28703 "parsing/parser.ml" +# 28924 "parsing/parser.ml" in -# 4170 "parsing/parser.mly" +# 4242 "parsing/parser.mly" ( _1 ) -# 28708 "parsing/parser.ml" +# 28929 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -28727,14 +28948,14 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Asttypes.label) = let _1 = -# 4185 "parsing/parser.mly" +# 4257 "parsing/parser.mly" ("=") -# 28733 "parsing/parser.ml" +# 28954 "parsing/parser.ml" in -# 4170 "parsing/parser.mly" +# 4242 "parsing/parser.mly" ( _1 ) -# 28738 "parsing/parser.ml" +# 28959 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -28757,14 +28978,14 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Asttypes.label) = let _1 = -# 4186 "parsing/parser.mly" +# 4258 "parsing/parser.mly" ("<") -# 28763 "parsing/parser.ml" +# 28984 "parsing/parser.ml" in -# 4170 "parsing/parser.mly" +# 4242 "parsing/parser.mly" ( _1 ) -# 28768 "parsing/parser.ml" +# 28989 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -28787,14 +29008,14 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Asttypes.label) = let _1 = -# 4187 "parsing/parser.mly" +# 4259 "parsing/parser.mly" (">") -# 28793 "parsing/parser.ml" +# 29014 "parsing/parser.ml" in -# 4170 "parsing/parser.mly" +# 4242 "parsing/parser.mly" ( _1 ) -# 28798 "parsing/parser.ml" +# 29019 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -28817,14 +29038,14 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Asttypes.label) = let _1 = -# 4188 "parsing/parser.mly" +# 4260 "parsing/parser.mly" ("or") -# 28823 "parsing/parser.ml" +# 29044 "parsing/parser.ml" in -# 4170 "parsing/parser.mly" +# 4242 "parsing/parser.mly" ( _1 ) -# 28828 "parsing/parser.ml" +# 29049 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -28847,14 +29068,14 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Asttypes.label) = let _1 = -# 4189 "parsing/parser.mly" +# 4261 "parsing/parser.mly" ("||") -# 28853 "parsing/parser.ml" +# 29074 "parsing/parser.ml" in -# 4170 "parsing/parser.mly" +# 4242 "parsing/parser.mly" ( _1 ) -# 28858 "parsing/parser.ml" +# 29079 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -28877,14 +29098,14 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Asttypes.label) = let _1 = -# 4190 "parsing/parser.mly" +# 4262 "parsing/parser.mly" ("&") -# 28883 "parsing/parser.ml" +# 29104 "parsing/parser.ml" in -# 4170 "parsing/parser.mly" +# 4242 "parsing/parser.mly" ( _1 ) -# 28888 "parsing/parser.ml" +# 29109 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -28907,14 +29128,14 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Asttypes.label) = let _1 = -# 4191 "parsing/parser.mly" +# 4263 "parsing/parser.mly" ("&&") -# 28913 "parsing/parser.ml" +# 29134 "parsing/parser.ml" in -# 4170 "parsing/parser.mly" +# 4242 "parsing/parser.mly" ( _1 ) -# 28918 "parsing/parser.ml" +# 29139 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -28937,14 +29158,14 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Asttypes.label) = let _1 = -# 4192 "parsing/parser.mly" +# 4264 "parsing/parser.mly" (":=") -# 28943 "parsing/parser.ml" +# 29164 "parsing/parser.ml" in -# 4170 "parsing/parser.mly" +# 4242 "parsing/parser.mly" ( _1 ) -# 28948 "parsing/parser.ml" +# 29169 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -28967,9 +29188,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (bool) = -# 4057 "parsing/parser.mly" +# 4129 "parsing/parser.mly" ( true ) -# 28973 "parsing/parser.ml" +# 29194 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -28985,9 +29206,9 @@ module Tables = struct let _startpos = _menhir_stack.MenhirLib.EngineTypes.endp in let _endpos = _startpos in let _v : (bool) = -# 4058 "parsing/parser.mly" +# 4130 "parsing/parser.mly" ( false ) -# 28991 "parsing/parser.ml" +# 29212 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -29005,7 +29226,7 @@ module Tables = struct let _v : (unit option) = # 114 "" ( None ) -# 29009 "parsing/parser.ml" +# 29230 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -29030,7 +29251,7 @@ module Tables = struct let _v : (unit option) = # 116 "" ( Some x ) -# 29034 "parsing/parser.ml" +# 29255 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -29048,7 +29269,7 @@ module Tables = struct let _v : (unit option) = # 114 "" ( None ) -# 29052 "parsing/parser.ml" +# 29273 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -29073,7 +29294,7 @@ module Tables = struct let _v : (unit option) = # 116 "" ( Some x ) -# 29077 "parsing/parser.ml" +# 29298 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -29091,7 +29312,7 @@ module Tables = struct let _v : (Parsetree.attribute option) = # 114 "" ( None ) -# 29095 "parsing/parser.ml" +# 29316 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -29116,7 +29337,7 @@ module Tables = struct let _v : (Parsetree.attribute option) = # 116 "" ( Some x ) -# 29120 "parsing/parser.ml" +# 29341 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -29134,7 +29355,7 @@ module Tables = struct let _v : (string Asttypes.loc option) = # 114 "" ( None ) -# 29138 "parsing/parser.ml" +# 29359 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -29159,9 +29380,9 @@ module Tables = struct }; } = _menhir_stack in let _1_inlined1 : ( -# 937 "parsing/parser.mly" +# 1014 "parsing/parser.mly" (string) -# 29165 "parsing/parser.ml" +# 29386 "parsing/parser.ml" ) = Obj.magic _1_inlined1 in let _1 : unit = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in @@ -29174,21 +29395,21 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1123 "parsing/parser.mly" +# 1202 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 29180 "parsing/parser.ml" +# 29401 "parsing/parser.ml" in # 183 "" ( x ) -# 29186 "parsing/parser.ml" +# 29407 "parsing/parser.ml" in # 116 "" ( Some x ) -# 29192 "parsing/parser.ml" +# 29413 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -29206,7 +29427,7 @@ module Tables = struct let _v : (Parsetree.core_type option) = # 114 "" ( None ) -# 29210 "parsing/parser.ml" +# 29431 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -29238,12 +29459,12 @@ module Tables = struct let _v : (Parsetree.core_type option) = let x = # 183 "" ( x ) -# 29242 "parsing/parser.ml" +# 29463 "parsing/parser.ml" in # 116 "" ( Some x ) -# 29247 "parsing/parser.ml" +# 29468 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -29261,7 +29482,7 @@ module Tables = struct let _v : (Parsetree.expression option) = # 114 "" ( None ) -# 29265 "parsing/parser.ml" +# 29486 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -29293,12 +29514,12 @@ module Tables = struct let _v : (Parsetree.expression option) = let x = # 183 "" ( x ) -# 29297 "parsing/parser.ml" +# 29518 "parsing/parser.ml" in # 116 "" ( Some x ) -# 29302 "parsing/parser.ml" +# 29523 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -29316,7 +29537,7 @@ module Tables = struct let _v : (Parsetree.module_type option) = # 114 "" ( None ) -# 29320 "parsing/parser.ml" +# 29541 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -29348,12 +29569,12 @@ module Tables = struct let _v : (Parsetree.module_type option) = let x = # 183 "" ( x ) -# 29352 "parsing/parser.ml" +# 29573 "parsing/parser.ml" in # 116 "" ( Some x ) -# 29357 "parsing/parser.ml" +# 29578 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -29371,7 +29592,7 @@ module Tables = struct let _v : (Parsetree.pattern option) = # 114 "" ( None ) -# 29375 "parsing/parser.ml" +# 29596 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -29403,12 +29624,12 @@ module Tables = struct let _v : (Parsetree.pattern option) = let x = # 183 "" ( x ) -# 29407 "parsing/parser.ml" +# 29628 "parsing/parser.ml" in # 116 "" ( Some x ) -# 29412 "parsing/parser.ml" +# 29633 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -29426,7 +29647,7 @@ module Tables = struct let _v : (Parsetree.expression option) = # 114 "" ( None ) -# 29430 "parsing/parser.ml" +# 29651 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -29458,12 +29679,12 @@ module Tables = struct let _v : (Parsetree.expression option) = let x = # 183 "" ( x ) -# 29462 "parsing/parser.ml" +# 29683 "parsing/parser.ml" in # 116 "" ( Some x ) -# 29467 "parsing/parser.ml" +# 29688 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -29481,7 +29702,7 @@ module Tables = struct let _v : ((Parsetree.core_type option * Parsetree.core_type option) option) = # 114 "" ( None ) -# 29485 "parsing/parser.ml" +# 29706 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -29506,7 +29727,7 @@ module Tables = struct let _v : ((Parsetree.core_type option * Parsetree.core_type option) option) = # 116 "" ( Some x ) -# 29510 "parsing/parser.ml" +# 29731 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -29525,17 +29746,17 @@ module Tables = struct MenhirLib.EngineTypes.next = _menhir_stack; } = _menhir_stack in let _1 : ( -# 955 "parsing/parser.mly" +# 1033 "parsing/parser.mly" (string) -# 29531 "parsing/parser.ml" +# 29752 "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) = -# 4389 "parsing/parser.mly" +# 4461 "parsing/parser.mly" ( _1 ) -# 29539 "parsing/parser.ml" +# 29760 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -29567,18 +29788,18 @@ module Tables = struct } = _menhir_stack in let _3 : unit = Obj.magic _3 in let _2 : ( -# 937 "parsing/parser.mly" +# 1014 "parsing/parser.mly" (string) -# 29573 "parsing/parser.ml" +# 29794 "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) = -# 4390 "parsing/parser.mly" +# 4462 "parsing/parser.mly" ( _2 ) -# 29582 "parsing/parser.ml" +# 29803 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -29632,9 +29853,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1577 "parsing/parser.mly" +# 1656 "parsing/parser.mly" ( mkmod ~loc:_sloc (Pmod_constraint(me, mty)) ) -# 29638 "parsing/parser.ml" +# 29859 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -29687,9 +29908,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 -# 1579 "parsing/parser.mly" +# 1658 "parsing/parser.mly" ( unclosed "(" _loc__1_ ")" _loc__5_ ) -# 29693 "parsing/parser.ml" +# 29914 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -29726,9 +29947,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : (Parsetree.module_expr) = -# 1582 "parsing/parser.mly" +# 1661 "parsing/parser.mly" ( me (* TODO consider reloc *) ) -# 29732 "parsing/parser.ml" +# 29953 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -29767,9 +29988,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 -# 1584 "parsing/parser.mly" +# 1663 "parsing/parser.mly" ( unclosed "(" _loc__1_ ")" _loc__3_ ) -# 29773 "parsing/parser.ml" +# 29994 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -29820,25 +30041,25 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__5_ in let _v : (Parsetree.module_expr) = let e = -# 1601 "parsing/parser.mly" +# 1680 "parsing/parser.mly" ( e ) -# 29826 "parsing/parser.ml" +# 30047 "parsing/parser.ml" in let attrs = let _1 = _1_inlined1 in -# 4476 "parsing/parser.mly" +# 4548 "parsing/parser.mly" ( _1 ) -# 29833 "parsing/parser.ml" +# 30054 "parsing/parser.ml" in let _endpos = _endpos__5_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1588 "parsing/parser.mly" +# 1667 "parsing/parser.mly" ( mkmod ~loc:_sloc ~attrs (Pmod_unpack e) ) -# 29842 "parsing/parser.ml" +# 30063 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -29909,11 +30130,11 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 4032 "parsing/parser.mly" +# 4104 "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 ) -# 29917 "parsing/parser.ml" +# 30138 "parsing/parser.ml" in let _endpos_ty_ = _endpos__1_ in @@ -29921,26 +30142,26 @@ module Tables = struct let _startpos = _startpos_e_ in let _loc = (_startpos, _endpos) in -# 1603 "parsing/parser.mly" +# 1682 "parsing/parser.mly" ( ghexp ~loc:_loc (Pexp_constraint (e, ty)) ) -# 29927 "parsing/parser.ml" +# 30148 "parsing/parser.ml" in let attrs = let _1 = _1_inlined1 in -# 4476 "parsing/parser.mly" +# 4548 "parsing/parser.mly" ( _1 ) -# 29935 "parsing/parser.ml" +# 30156 "parsing/parser.ml" in let _endpos = _endpos__5_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1588 "parsing/parser.mly" +# 1667 "parsing/parser.mly" ( mkmod ~loc:_sloc ~attrs (Pmod_unpack e) ) -# 29944 "parsing/parser.ml" +# 30165 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -30026,11 +30247,11 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 4032 "parsing/parser.mly" +# 4104 "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 ) -# 30034 "parsing/parser.ml" +# 30255 "parsing/parser.ml" in let _endpos_ty2_ = _endpos__1_inlined1_ in @@ -30039,37 +30260,37 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 4032 "parsing/parser.mly" +# 4104 "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 ) -# 30047 "parsing/parser.ml" +# 30268 "parsing/parser.ml" in let _endpos = _endpos_ty2_ in let _startpos = _startpos_e_ in let _loc = (_startpos, _endpos) in -# 1605 "parsing/parser.mly" +# 1684 "parsing/parser.mly" ( ghexp ~loc:_loc (Pexp_coerce (e, Some ty1, ty2)) ) -# 30056 "parsing/parser.ml" +# 30277 "parsing/parser.ml" in let attrs = let _1 = _1_inlined1 in -# 4476 "parsing/parser.mly" +# 4548 "parsing/parser.mly" ( _1 ) -# 30064 "parsing/parser.ml" +# 30285 "parsing/parser.ml" in let _endpos = _endpos__5_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1588 "parsing/parser.mly" +# 1667 "parsing/parser.mly" ( mkmod ~loc:_sloc ~attrs (Pmod_unpack e) ) -# 30073 "parsing/parser.ml" +# 30294 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -30140,11 +30361,11 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 4032 "parsing/parser.mly" +# 4104 "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 ) -# 30148 "parsing/parser.ml" +# 30369 "parsing/parser.ml" in let _endpos_ty2_ = _endpos__1_ in @@ -30152,26 +30373,26 @@ module Tables = struct let _startpos = _startpos_e_ in let _loc = (_startpos, _endpos) in -# 1607 "parsing/parser.mly" +# 1686 "parsing/parser.mly" ( ghexp ~loc:_loc (Pexp_coerce (e, None, ty2)) ) -# 30158 "parsing/parser.ml" +# 30379 "parsing/parser.ml" in let attrs = let _1 = _1_inlined1 in -# 4476 "parsing/parser.mly" +# 4548 "parsing/parser.mly" ( _1 ) -# 30166 "parsing/parser.ml" +# 30387 "parsing/parser.ml" in let _endpos = _endpos__5_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1588 "parsing/parser.mly" +# 1667 "parsing/parser.mly" ( mkmod ~loc:_sloc ~attrs (Pmod_unpack e) ) -# 30175 "parsing/parser.ml" +# 30396 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -30231,17 +30452,17 @@ module Tables = struct let _v : (Parsetree.module_expr) = let _3 = let _1 = _1_inlined1 in -# 4476 "parsing/parser.mly" +# 4548 "parsing/parser.mly" ( _1 ) -# 30237 "parsing/parser.ml" +# 30458 "parsing/parser.ml" in let _loc__6_ = (_startpos__6_, _endpos__6_) in let _loc__1_ = (_startpos__1_, _endpos__1_) in -# 1590 "parsing/parser.mly" +# 1669 "parsing/parser.mly" ( unclosed "(" _loc__1_ ")" _loc__6_ ) -# 30245 "parsing/parser.ml" +# 30466 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -30301,17 +30522,17 @@ module Tables = struct let _v : (Parsetree.module_expr) = let _3 = let _1 = _1_inlined1 in -# 4476 "parsing/parser.mly" +# 4548 "parsing/parser.mly" ( _1 ) -# 30307 "parsing/parser.ml" +# 30528 "parsing/parser.ml" in let _loc__6_ = (_startpos__6_, _endpos__6_) in let _loc__1_ = (_startpos__1_, _endpos__1_) in -# 1592 "parsing/parser.mly" +# 1671 "parsing/parser.mly" ( unclosed "(" _loc__1_ ")" _loc__6_ ) -# 30315 "parsing/parser.ml" +# 30536 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -30364,17 +30585,17 @@ module Tables = struct let _v : (Parsetree.module_expr) = let _3 = let _1 = _1_inlined1 in -# 4476 "parsing/parser.mly" +# 4548 "parsing/parser.mly" ( _1 ) -# 30370 "parsing/parser.ml" +# 30591 "parsing/parser.ml" in let _loc__5_ = (_startpos__5_, _endpos__5_) in let _loc__1_ = (_startpos__1_, _endpos__1_) in -# 1594 "parsing/parser.mly" +# 1673 "parsing/parser.mly" ( unclosed "(" _loc__1_ ")" _loc__5_ ) -# 30378 "parsing/parser.ml" +# 30599 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -30397,9 +30618,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Parsetree.core_type * (Asttypes.variance * Asttypes.injectivity)) = -# 3520 "parsing/parser.mly" +# 3587 "parsing/parser.mly" ( _1 ) -# 30403 "parsing/parser.ml" +# 30624 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -30461,31 +30682,31 @@ module Tables = struct let attrs = let _1 = _1_inlined1 in -# 4476 "parsing/parser.mly" +# 4548 "parsing/parser.mly" ( _1 ) -# 30467 "parsing/parser.ml" +# 30688 "parsing/parser.ml" in let name = -# 3541 "parsing/parser.mly" +# 3608 "parsing/parser.mly" ( Some _2 ) -# 30473 "parsing/parser.ml" +# 30694 "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" +# 3582 "parsing/parser.mly" ( Jane_syntax.Layouts.type_of ~loc:(make_loc _sloc) ~attrs (Ltyp_var { name; layout }) ) -# 30483 "parsing/parser.ml" +# 30704 "parsing/parser.ml" in -# 3522 "parsing/parser.mly" +# 3589 "parsing/parser.mly" ( _2, _1 ) -# 30489 "parsing/parser.ml" +# 30710 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -30540,31 +30761,31 @@ module Tables = struct let attrs = let _1 = _1_inlined1 in -# 4476 "parsing/parser.mly" +# 4548 "parsing/parser.mly" ( _1 ) -# 30546 "parsing/parser.ml" +# 30767 "parsing/parser.ml" in let name = -# 3543 "parsing/parser.mly" +# 3610 "parsing/parser.mly" ( None ) -# 30552 "parsing/parser.ml" +# 30773 "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" +# 3582 "parsing/parser.mly" ( Jane_syntax.Layouts.type_of ~loc:(make_loc _sloc) ~attrs (Ltyp_var { name; layout }) ) -# 30562 "parsing/parser.ml" +# 30783 "parsing/parser.ml" in -# 3522 "parsing/parser.mly" +# 3589 "parsing/parser.mly" ( _2, _1 ) -# 30568 "parsing/parser.ml" +# 30789 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -30594,9 +30815,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (Longident.t) = -# 1496 "parsing/parser.mly" +# 1575 "parsing/parser.mly" ( _1 ) -# 30600 "parsing/parser.ml" +# 30821 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -30626,9 +30847,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (Longident.t) = -# 1481 "parsing/parser.mly" +# 1560 "parsing/parser.mly" ( _1 ) -# 30632 "parsing/parser.ml" +# 30853 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -30658,9 +30879,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (Parsetree.core_type) = -# 1456 "parsing/parser.mly" +# 1535 "parsing/parser.mly" ( _1 ) -# 30664 "parsing/parser.ml" +# 30885 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -30690,9 +30911,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (Parsetree.expression) = -# 1461 "parsing/parser.mly" +# 1540 "parsing/parser.mly" ( _1 ) -# 30696 "parsing/parser.ml" +# 30917 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -30722,9 +30943,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (Longident.t) = -# 1486 "parsing/parser.mly" +# 1565 "parsing/parser.mly" ( _1 ) -# 30728 "parsing/parser.ml" +# 30949 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -30754,9 +30975,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (Longident.t) = -# 1491 "parsing/parser.mly" +# 1570 "parsing/parser.mly" ( _1 ) -# 30760 "parsing/parser.ml" +# 30981 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -30786,9 +31007,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (Parsetree.module_expr) = -# 1451 "parsing/parser.mly" +# 1530 "parsing/parser.mly" ( _1 ) -# 30792 "parsing/parser.ml" +# 31013 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -30818,9 +31039,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (Parsetree.module_type) = -# 1446 "parsing/parser.mly" +# 1525 "parsing/parser.mly" ( _1 ) -# 30824 "parsing/parser.ml" +# 31045 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -30850,9 +31071,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (Longident.t) = -# 1471 "parsing/parser.mly" +# 1550 "parsing/parser.mly" ( _1 ) -# 30856 "parsing/parser.ml" +# 31077 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -30882,9 +31103,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (Parsetree.pattern) = -# 1466 "parsing/parser.mly" +# 1545 "parsing/parser.mly" ( _1 ) -# 30888 "parsing/parser.ml" +# 31109 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -30914,9 +31135,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (Longident.t) = -# 1476 "parsing/parser.mly" +# 1555 "parsing/parser.mly" ( _1 ) -# 30920 "parsing/parser.ml" +# 31141 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -30958,15 +31179,15 @@ module Tables = struct let _loc__2_ = (_startpos__2_, _endpos__2_) in let _sloc = (_symbolstartpos, _endpos) in -# 3175 "parsing/parser.mly" +# 3242 "parsing/parser.mly" ( mkpat_cons ~loc:_sloc _loc__2_ (ghpat ~loc:_sloc (Ppat_tuple[_1;_3])) ) -# 30964 "parsing/parser.ml" +# 31185 "parsing/parser.ml" in -# 3163 "parsing/parser.mly" +# 3230 "parsing/parser.mly" ( _1 ) -# 30970 "parsing/parser.ml" +# 31191 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -30996,14 +31217,14 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (Parsetree.pattern) = let _1 = -# 3177 "parsing/parser.mly" +# 3244 "parsing/parser.mly" ( Pat.attr _1 _2 ) -# 31002 "parsing/parser.ml" +# 31223 "parsing/parser.ml" in -# 3163 "parsing/parser.mly" +# 3230 "parsing/parser.mly" ( _1 ) -# 31007 "parsing/parser.ml" +# 31228 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -31026,14 +31247,14 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Parsetree.pattern) = let _1 = -# 3179 "parsing/parser.mly" +# 3246 "parsing/parser.mly" ( _1 ) -# 31032 "parsing/parser.ml" +# 31253 "parsing/parser.ml" in -# 3163 "parsing/parser.mly" +# 3230 "parsing/parser.mly" ( _1 ) -# 31037 "parsing/parser.ml" +# 31258 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -31078,15 +31299,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1123 "parsing/parser.mly" +# 1202 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 31084 "parsing/parser.ml" +# 31305 "parsing/parser.ml" in -# 3182 "parsing/parser.mly" +# 3249 "parsing/parser.mly" ( Ppat_alias(_1, _3) ) -# 31090 "parsing/parser.ml" +# 31311 "parsing/parser.ml" in let _endpos__1_ = _endpos__1_inlined1_ in @@ -31094,21 +31315,21 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1158 "parsing/parser.mly" +# 1237 "parsing/parser.mly" ( mkpat ~loc:_sloc _1 ) -# 31100 "parsing/parser.ml" +# 31321 "parsing/parser.ml" in -# 3193 "parsing/parser.mly" +# 3260 "parsing/parser.mly" ( _1 ) -# 31106 "parsing/parser.ml" +# 31327 "parsing/parser.ml" in -# 3163 "parsing/parser.mly" +# 3230 "parsing/parser.mly" ( _1 ) -# 31112 "parsing/parser.ml" +# 31333 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -31149,9 +31370,9 @@ module Tables = struct let _1 = let _loc__3_ = (_startpos__3_, _endpos__3_) in -# 3184 "parsing/parser.mly" +# 3251 "parsing/parser.mly" ( expecting _loc__3_ "identifier" ) -# 31155 "parsing/parser.ml" +# 31376 "parsing/parser.ml" in let _endpos__1_ = _endpos__3_ in @@ -31159,21 +31380,21 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1158 "parsing/parser.mly" +# 1237 "parsing/parser.mly" ( mkpat ~loc:_sloc _1 ) -# 31165 "parsing/parser.ml" +# 31386 "parsing/parser.ml" in -# 3193 "parsing/parser.mly" +# 3260 "parsing/parser.mly" ( _1 ) -# 31171 "parsing/parser.ml" +# 31392 "parsing/parser.ml" in -# 3163 "parsing/parser.mly" +# 3230 "parsing/parser.mly" ( _1 ) -# 31177 "parsing/parser.ml" +# 31398 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -31198,29 +31419,29 @@ module Tables = struct let _v : (Parsetree.pattern) = let _1 = let _1 = let _1 = -# 3186 "parsing/parser.mly" +# 3253 "parsing/parser.mly" ( Ppat_tuple(List.rev _1) ) -# 31204 "parsing/parser.ml" +# 31425 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1158 "parsing/parser.mly" +# 1237 "parsing/parser.mly" ( mkpat ~loc:_sloc _1 ) -# 31212 "parsing/parser.ml" +# 31433 "parsing/parser.ml" in -# 3193 "parsing/parser.mly" +# 3260 "parsing/parser.mly" ( _1 ) -# 31218 "parsing/parser.ml" +# 31439 "parsing/parser.ml" in -# 3163 "parsing/parser.mly" +# 3230 "parsing/parser.mly" ( _1 ) -# 31224 "parsing/parser.ml" +# 31445 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -31261,9 +31482,9 @@ module Tables = struct let _1 = let _loc__3_ = (_startpos__3_, _endpos__3_) in -# 3188 "parsing/parser.mly" +# 3255 "parsing/parser.mly" ( expecting _loc__3_ "pattern" ) -# 31267 "parsing/parser.ml" +# 31488 "parsing/parser.ml" in let _endpos__1_ = _endpos__3_ in @@ -31271,21 +31492,21 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1158 "parsing/parser.mly" +# 1237 "parsing/parser.mly" ( mkpat ~loc:_sloc _1 ) -# 31277 "parsing/parser.ml" +# 31498 "parsing/parser.ml" in -# 3193 "parsing/parser.mly" +# 3260 "parsing/parser.mly" ( _1 ) -# 31283 "parsing/parser.ml" +# 31504 "parsing/parser.ml" in -# 3163 "parsing/parser.mly" +# 3230 "parsing/parser.mly" ( _1 ) -# 31289 "parsing/parser.ml" +# 31510 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -31324,30 +31545,30 @@ module Tables = struct let _v : (Parsetree.pattern) = let _1 = let _1 = let _1 = -# 3190 "parsing/parser.mly" +# 3257 "parsing/parser.mly" ( Ppat_or(_1, _3) ) -# 31330 "parsing/parser.ml" +# 31551 "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 -# 1158 "parsing/parser.mly" +# 1237 "parsing/parser.mly" ( mkpat ~loc:_sloc _1 ) -# 31339 "parsing/parser.ml" +# 31560 "parsing/parser.ml" in -# 3193 "parsing/parser.mly" +# 3260 "parsing/parser.mly" ( _1 ) -# 31345 "parsing/parser.ml" +# 31566 "parsing/parser.ml" in -# 3163 "parsing/parser.mly" +# 3230 "parsing/parser.mly" ( _1 ) -# 31351 "parsing/parser.ml" +# 31572 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -31388,9 +31609,9 @@ module Tables = struct let _1 = let _loc__3_ = (_startpos__3_, _endpos__3_) in -# 3192 "parsing/parser.mly" +# 3259 "parsing/parser.mly" ( expecting _loc__3_ "pattern" ) -# 31394 "parsing/parser.ml" +# 31615 "parsing/parser.ml" in let _endpos__1_ = _endpos__3_ in @@ -31398,21 +31619,21 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1158 "parsing/parser.mly" +# 1237 "parsing/parser.mly" ( mkpat ~loc:_sloc _1 ) -# 31404 "parsing/parser.ml" +# 31625 "parsing/parser.ml" in -# 3193 "parsing/parser.mly" +# 3260 "parsing/parser.mly" ( _1 ) -# 31410 "parsing/parser.ml" +# 31631 "parsing/parser.ml" in -# 3163 "parsing/parser.mly" +# 3230 "parsing/parser.mly" ( _1 ) -# 31416 "parsing/parser.ml" +# 31637 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -31460,24 +31681,24 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4476 "parsing/parser.mly" +# 4548 "parsing/parser.mly" ( _1 ) -# 31466 "parsing/parser.ml" +# 31687 "parsing/parser.ml" in -# 4489 "parsing/parser.mly" +# 4561 "parsing/parser.mly" ( _1, _2 ) -# 31472 "parsing/parser.ml" +# 31693 "parsing/parser.ml" in let _endpos = _endpos__3_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 3165 "parsing/parser.mly" +# 3232 "parsing/parser.mly" ( mkpat_attrs ~loc:_sloc (Ppat_exception _3) _2) -# 31481 "parsing/parser.ml" +# 31702 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -31514,9 +31735,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : (Parsetree.pattern list) = -# 3297 "parsing/parser.mly" +# 3364 "parsing/parser.mly" ( _3 :: _1 ) -# 31520 "parsing/parser.ml" +# 31741 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -31553,9 +31774,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : (Parsetree.pattern list) = -# 3298 "parsing/parser.mly" +# 3365 "parsing/parser.mly" ( [_3; _1] ) -# 31559 "parsing/parser.ml" +# 31780 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -31593,9 +31814,9 @@ module Tables = struct let _endpos = _endpos__3_ in let _v : (Parsetree.pattern list) = let _loc__3_ = (_startpos__3_, _endpos__3_) in -# 3299 "parsing/parser.mly" +# 3366 "parsing/parser.mly" ( expecting _loc__3_ "pattern" ) -# 31599 "parsing/parser.ml" +# 31820 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -31632,9 +31853,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : (Parsetree.pattern list) = -# 3297 "parsing/parser.mly" +# 3364 "parsing/parser.mly" ( _3 :: _1 ) -# 31638 "parsing/parser.ml" +# 31859 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -31671,9 +31892,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : (Parsetree.pattern list) = -# 3298 "parsing/parser.mly" +# 3365 "parsing/parser.mly" ( [_3; _1] ) -# 31677 "parsing/parser.ml" +# 31898 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -31711,9 +31932,9 @@ module Tables = struct let _endpos = _endpos__3_ in let _v : (Parsetree.pattern list) = let _loc__3_ = (_startpos__3_, _endpos__3_) in -# 3299 "parsing/parser.mly" +# 3366 "parsing/parser.mly" ( expecting _loc__3_ "pattern" ) -# 31717 "parsing/parser.ml" +# 31938 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -31736,9 +31957,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Parsetree.pattern) = -# 3198 "parsing/parser.mly" +# 3265 "parsing/parser.mly" ( _1 ) -# 31742 "parsing/parser.ml" +# 31963 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -31774,15 +31995,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1123 "parsing/parser.mly" +# 1202 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 31780 "parsing/parser.ml" +# 32001 "parsing/parser.ml" in -# 3201 "parsing/parser.mly" +# 3268 "parsing/parser.mly" ( Ppat_construct(_1, Some ([], _2)) ) -# 31786 "parsing/parser.ml" +# 32007 "parsing/parser.ml" in let _endpos__1_ = _endpos__2_ in @@ -31790,15 +32011,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1158 "parsing/parser.mly" +# 1237 "parsing/parser.mly" ( mkpat ~loc:_sloc _1 ) -# 31796 "parsing/parser.ml" +# 32017 "parsing/parser.ml" in -# 3207 "parsing/parser.mly" +# 3274 "parsing/parser.mly" ( _1 ) -# 31802 "parsing/parser.ml" +# 32023 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -31858,24 +32079,24 @@ module Tables = struct let _v : (Parsetree.pattern) = let _1 = let _1 = let newtypes = -# 2894 "parsing/parser.mly" +# 2976 "parsing/parser.mly" ( xs ) -# 31864 "parsing/parser.ml" +# 32085 "parsing/parser.ml" in let constr = let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1123 "parsing/parser.mly" +# 1202 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 31873 "parsing/parser.ml" +# 32094 "parsing/parser.ml" in -# 3204 "parsing/parser.mly" +# 3271 "parsing/parser.mly" ( Ppat_construct(constr, Some (newtypes, pat)) ) -# 31879 "parsing/parser.ml" +# 32100 "parsing/parser.ml" in let _endpos__1_ = _endpos_pat_ in @@ -31883,15 +32104,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1158 "parsing/parser.mly" +# 1237 "parsing/parser.mly" ( mkpat ~loc:_sloc _1 ) -# 31889 "parsing/parser.ml" +# 32110 "parsing/parser.ml" in -# 3207 "parsing/parser.mly" +# 3274 "parsing/parser.mly" ( _1 ) -# 31895 "parsing/parser.ml" +# 32116 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -31922,24 +32143,24 @@ module Tables = struct let _endpos = _endpos__2_ in let _v : (Parsetree.pattern) = let _1 = let _1 = -# 3206 "parsing/parser.mly" +# 3273 "parsing/parser.mly" ( Ppat_variant(_1, Some _2) ) -# 31928 "parsing/parser.ml" +# 32149 "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 -# 1158 "parsing/parser.mly" +# 1237 "parsing/parser.mly" ( mkpat ~loc:_sloc _1 ) -# 31937 "parsing/parser.ml" +# 32158 "parsing/parser.ml" in -# 3207 "parsing/parser.mly" +# 3274 "parsing/parser.mly" ( _1 ) -# 31943 "parsing/parser.ml" +# 32164 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -31987,24 +32208,24 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4476 "parsing/parser.mly" +# 4548 "parsing/parser.mly" ( _1 ) -# 31993 "parsing/parser.ml" +# 32214 "parsing/parser.ml" in -# 4489 "parsing/parser.mly" +# 4561 "parsing/parser.mly" ( _1, _2 ) -# 31999 "parsing/parser.ml" +# 32220 "parsing/parser.ml" in let _endpos = _endpos__3_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 3209 "parsing/parser.mly" +# 3276 "parsing/parser.mly" ( mkpat_attrs ~loc:_sloc (Ppat_lazy _3) _2) -# 32008 "parsing/parser.ml" +# 32229 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -32046,15 +32267,15 @@ module Tables = struct let _loc__2_ = (_startpos__2_, _endpos__2_) in let _sloc = (_symbolstartpos, _endpos) in -# 3175 "parsing/parser.mly" +# 3242 "parsing/parser.mly" ( mkpat_cons ~loc:_sloc _loc__2_ (ghpat ~loc:_sloc (Ppat_tuple[_1;_3])) ) -# 32052 "parsing/parser.ml" +# 32273 "parsing/parser.ml" in -# 3170 "parsing/parser.mly" +# 3237 "parsing/parser.mly" ( _1 ) -# 32058 "parsing/parser.ml" +# 32279 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -32084,14 +32305,14 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (Parsetree.pattern) = let _1 = -# 3177 "parsing/parser.mly" +# 3244 "parsing/parser.mly" ( Pat.attr _1 _2 ) -# 32090 "parsing/parser.ml" +# 32311 "parsing/parser.ml" in -# 3170 "parsing/parser.mly" +# 3237 "parsing/parser.mly" ( _1 ) -# 32095 "parsing/parser.ml" +# 32316 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -32114,14 +32335,14 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Parsetree.pattern) = let _1 = -# 3179 "parsing/parser.mly" +# 3246 "parsing/parser.mly" ( _1 ) -# 32120 "parsing/parser.ml" +# 32341 "parsing/parser.ml" in -# 3170 "parsing/parser.mly" +# 3237 "parsing/parser.mly" ( _1 ) -# 32125 "parsing/parser.ml" +# 32346 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -32166,15 +32387,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1123 "parsing/parser.mly" +# 1202 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 32172 "parsing/parser.ml" +# 32393 "parsing/parser.ml" in -# 3182 "parsing/parser.mly" +# 3249 "parsing/parser.mly" ( Ppat_alias(_1, _3) ) -# 32178 "parsing/parser.ml" +# 32399 "parsing/parser.ml" in let _endpos__1_ = _endpos__1_inlined1_ in @@ -32182,21 +32403,21 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1158 "parsing/parser.mly" +# 1237 "parsing/parser.mly" ( mkpat ~loc:_sloc _1 ) -# 32188 "parsing/parser.ml" +# 32409 "parsing/parser.ml" in -# 3193 "parsing/parser.mly" +# 3260 "parsing/parser.mly" ( _1 ) -# 32194 "parsing/parser.ml" +# 32415 "parsing/parser.ml" in -# 3170 "parsing/parser.mly" +# 3237 "parsing/parser.mly" ( _1 ) -# 32200 "parsing/parser.ml" +# 32421 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -32237,9 +32458,9 @@ module Tables = struct let _1 = let _loc__3_ = (_startpos__3_, _endpos__3_) in -# 3184 "parsing/parser.mly" +# 3251 "parsing/parser.mly" ( expecting _loc__3_ "identifier" ) -# 32243 "parsing/parser.ml" +# 32464 "parsing/parser.ml" in let _endpos__1_ = _endpos__3_ in @@ -32247,21 +32468,21 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1158 "parsing/parser.mly" +# 1237 "parsing/parser.mly" ( mkpat ~loc:_sloc _1 ) -# 32253 "parsing/parser.ml" +# 32474 "parsing/parser.ml" in -# 3193 "parsing/parser.mly" +# 3260 "parsing/parser.mly" ( _1 ) -# 32259 "parsing/parser.ml" +# 32480 "parsing/parser.ml" in -# 3170 "parsing/parser.mly" +# 3237 "parsing/parser.mly" ( _1 ) -# 32265 "parsing/parser.ml" +# 32486 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -32286,29 +32507,29 @@ module Tables = struct let _v : (Parsetree.pattern) = let _1 = let _1 = let _1 = -# 3186 "parsing/parser.mly" +# 3253 "parsing/parser.mly" ( Ppat_tuple(List.rev _1) ) -# 32292 "parsing/parser.ml" +# 32513 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1158 "parsing/parser.mly" +# 1237 "parsing/parser.mly" ( mkpat ~loc:_sloc _1 ) -# 32300 "parsing/parser.ml" +# 32521 "parsing/parser.ml" in -# 3193 "parsing/parser.mly" +# 3260 "parsing/parser.mly" ( _1 ) -# 32306 "parsing/parser.ml" +# 32527 "parsing/parser.ml" in -# 3170 "parsing/parser.mly" +# 3237 "parsing/parser.mly" ( _1 ) -# 32312 "parsing/parser.ml" +# 32533 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -32349,9 +32570,9 @@ module Tables = struct let _1 = let _loc__3_ = (_startpos__3_, _endpos__3_) in -# 3188 "parsing/parser.mly" +# 3255 "parsing/parser.mly" ( expecting _loc__3_ "pattern" ) -# 32355 "parsing/parser.ml" +# 32576 "parsing/parser.ml" in let _endpos__1_ = _endpos__3_ in @@ -32359,21 +32580,21 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1158 "parsing/parser.mly" +# 1237 "parsing/parser.mly" ( mkpat ~loc:_sloc _1 ) -# 32365 "parsing/parser.ml" +# 32586 "parsing/parser.ml" in -# 3193 "parsing/parser.mly" +# 3260 "parsing/parser.mly" ( _1 ) -# 32371 "parsing/parser.ml" +# 32592 "parsing/parser.ml" in -# 3170 "parsing/parser.mly" +# 3237 "parsing/parser.mly" ( _1 ) -# 32377 "parsing/parser.ml" +# 32598 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -32412,30 +32633,30 @@ module Tables = struct let _v : (Parsetree.pattern) = let _1 = let _1 = let _1 = -# 3190 "parsing/parser.mly" +# 3257 "parsing/parser.mly" ( Ppat_or(_1, _3) ) -# 32418 "parsing/parser.ml" +# 32639 "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 -# 1158 "parsing/parser.mly" +# 1237 "parsing/parser.mly" ( mkpat ~loc:_sloc _1 ) -# 32427 "parsing/parser.ml" +# 32648 "parsing/parser.ml" in -# 3193 "parsing/parser.mly" +# 3260 "parsing/parser.mly" ( _1 ) -# 32433 "parsing/parser.ml" +# 32654 "parsing/parser.ml" in -# 3170 "parsing/parser.mly" +# 3237 "parsing/parser.mly" ( _1 ) -# 32439 "parsing/parser.ml" +# 32660 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -32476,9 +32697,9 @@ module Tables = struct let _1 = let _loc__3_ = (_startpos__3_, _endpos__3_) in -# 3192 "parsing/parser.mly" +# 3259 "parsing/parser.mly" ( expecting _loc__3_ "pattern" ) -# 32482 "parsing/parser.ml" +# 32703 "parsing/parser.ml" in let _endpos__1_ = _endpos__3_ in @@ -32486,21 +32707,21 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1158 "parsing/parser.mly" +# 1237 "parsing/parser.mly" ( mkpat ~loc:_sloc _1 ) -# 32492 "parsing/parser.ml" +# 32713 "parsing/parser.ml" in -# 3193 "parsing/parser.mly" +# 3260 "parsing/parser.mly" ( _1 ) -# 32498 "parsing/parser.ml" +# 32719 "parsing/parser.ml" in -# 3170 "parsing/parser.mly" +# 3237 "parsing/parser.mly" ( _1 ) -# 32504 "parsing/parser.ml" +# 32725 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -32519,9 +32740,9 @@ module Tables = struct MenhirLib.EngineTypes.next = _menhir_stack; } = _menhir_stack in let _1 : ( -# 937 "parsing/parser.mly" +# 1014 "parsing/parser.mly" (string) -# 32525 "parsing/parser.ml" +# 32746 "parsing/parser.ml" ) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in @@ -32533,30 +32754,30 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1123 "parsing/parser.mly" +# 1202 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 32539 "parsing/parser.ml" +# 32760 "parsing/parser.ml" in -# 2489 "parsing/parser.mly" +# 2568 "parsing/parser.mly" ( Ppat_var _1 ) -# 32545 "parsing/parser.ml" +# 32766 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1158 "parsing/parser.mly" +# 1237 "parsing/parser.mly" ( mkpat ~loc:_sloc _1 ) -# 32554 "parsing/parser.ml" +# 32775 "parsing/parser.ml" in -# 2491 "parsing/parser.mly" +# 2570 "parsing/parser.mly" ( _1 ) -# 32560 "parsing/parser.ml" +# 32781 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -32580,23 +32801,23 @@ module Tables = struct let _endpos = _endpos__1_ in let _v : (Parsetree.pattern) = let _1 = let _1 = -# 2490 "parsing/parser.mly" +# 2569 "parsing/parser.mly" ( Ppat_any ) -# 32586 "parsing/parser.ml" +# 32807 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1158 "parsing/parser.mly" +# 1237 "parsing/parser.mly" ( mkpat ~loc:_sloc _1 ) -# 32594 "parsing/parser.ml" +# 32815 "parsing/parser.ml" in -# 2491 "parsing/parser.mly" +# 2570 "parsing/parser.mly" ( _1 ) -# 32600 "parsing/parser.ml" +# 32821 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -32619,9 +32840,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Parsetree.payload) = -# 4502 "parsing/parser.mly" +# 4574 "parsing/parser.mly" ( PStr _1 ) -# 32625 "parsing/parser.ml" +# 32846 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -32651,9 +32872,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (Parsetree.payload) = -# 4503 "parsing/parser.mly" +# 4575 "parsing/parser.mly" ( PSig _2 ) -# 32657 "parsing/parser.ml" +# 32878 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -32683,9 +32904,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (Parsetree.payload) = -# 4504 "parsing/parser.mly" +# 4576 "parsing/parser.mly" ( PTyp _2 ) -# 32689 "parsing/parser.ml" +# 32910 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -32715,9 +32936,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (Parsetree.payload) = -# 4505 "parsing/parser.mly" +# 4577 "parsing/parser.mly" ( PPat (_2, None) ) -# 32721 "parsing/parser.ml" +# 32942 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -32761,9 +32982,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__4_ in let _v : (Parsetree.payload) = -# 4506 "parsing/parser.mly" +# 4578 "parsing/parser.mly" ( PPat (_2, Some _4) ) -# 32767 "parsing/parser.ml" +# 32988 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -32786,9 +33007,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Parsetree.core_type) = -# 3806 "parsing/parser.mly" +# 3873 "parsing/parser.mly" ( _1 ) -# 32792 "parsing/parser.ml" +# 33013 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -32830,24 +33051,24 @@ module Tables = struct let xs = # 253 "" ( List.rev xs ) -# 32834 "parsing/parser.ml" +# 33055 "parsing/parser.ml" in -# 1228 "parsing/parser.mly" +# 1307 "parsing/parser.mly" ( xs ) -# 32839 "parsing/parser.ml" +# 33060 "parsing/parser.ml" in -# 3798 "parsing/parser.mly" +# 3865 "parsing/parser.mly" ( _1 ) -# 32845 "parsing/parser.ml" +# 33066 "parsing/parser.ml" in -# 3802 "parsing/parser.mly" +# 3869 "parsing/parser.mly" ( (_1, _3) ) -# 32851 "parsing/parser.ml" +# 33072 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos__3_, _startpos_xs_) in @@ -32855,11 +33076,11 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 3808 "parsing/parser.mly" +# 3875 "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" +# 33084 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -32882,14 +33103,14 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Parsetree.core_type) = let _1 = -# 3839 "parsing/parser.mly" +# 3906 "parsing/parser.mly" ( _1 ) -# 32888 "parsing/parser.ml" +# 33109 "parsing/parser.ml" in -# 3806 "parsing/parser.mly" +# 3873 "parsing/parser.mly" ( _1 ) -# 32893 "parsing/parser.ml" +# 33114 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -32927,33 +33148,33 @@ module Tables = struct let _endpos = _endpos__1_ in let _v : (Parsetree.core_type) = let _1 = let _3 = -# 3839 "parsing/parser.mly" +# 3906 "parsing/parser.mly" ( _1 ) -# 32933 "parsing/parser.ml" +# 33154 "parsing/parser.ml" in let _1 = let _1 = let xs = # 253 "" ( List.rev xs ) -# 32940 "parsing/parser.ml" +# 33161 "parsing/parser.ml" in -# 1228 "parsing/parser.mly" +# 1307 "parsing/parser.mly" ( xs ) -# 32945 "parsing/parser.ml" +# 33166 "parsing/parser.ml" in -# 3798 "parsing/parser.mly" +# 3865 "parsing/parser.mly" ( _1 ) -# 32951 "parsing/parser.ml" +# 33172 "parsing/parser.ml" in -# 3802 "parsing/parser.mly" +# 3869 "parsing/parser.mly" ( (_1, _3) ) -# 32957 "parsing/parser.ml" +# 33178 "parsing/parser.ml" in let _startpos__1_ = _startpos_xs_ in @@ -32961,11 +33182,11 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 3808 "parsing/parser.mly" +# 3875 "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" +# 33190 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -33012,9 +33233,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 4463 "parsing/parser.mly" +# 4535 "parsing/parser.mly" ( mk_attr ~loc:(make_loc _sloc) _2 _3 ) -# 33018 "parsing/parser.ml" +# 33239 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -33095,9 +33316,9 @@ module Tables = struct let _v : (Parsetree.value_description * string Asttypes.loc option) = let attrs2 = let _1 = _1_inlined3 in -# 4472 "parsing/parser.mly" +# 4544 "parsing/parser.mly" ( _1 ) -# 33101 "parsing/parser.ml" +# 33322 "parsing/parser.ml" in let _endpos_attrs2_ = _endpos__1_inlined3_ in @@ -33107,30 +33328,30 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1123 "parsing/parser.mly" +# 1202 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 33113 "parsing/parser.ml" +# 33334 "parsing/parser.ml" in let attrs1 = let _1 = _1_inlined1 in -# 4476 "parsing/parser.mly" +# 4548 "parsing/parser.mly" ( _1 ) -# 33121 "parsing/parser.ml" +# 33342 "parsing/parser.ml" in let _endpos = _endpos_attrs2_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 3361 "parsing/parser.mly" +# 3428 "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 ) -# 33134 "parsing/parser.ml" +# 33355 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -33146,14 +33367,14 @@ module Tables = struct let _startpos = _menhir_stack.MenhirLib.EngineTypes.endp in let _endpos = _startpos in let _v : (Asttypes.private_flag) = let _1 = -# 4321 "parsing/parser.mly" +# 4393 "parsing/parser.mly" ( Public ) -# 33152 "parsing/parser.ml" +# 33373 "parsing/parser.ml" in -# 4318 "parsing/parser.mly" +# 4390 "parsing/parser.mly" ( _1 ) -# 33157 "parsing/parser.ml" +# 33378 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -33176,14 +33397,14 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Asttypes.private_flag) = let _1 = -# 4322 "parsing/parser.mly" +# 4394 "parsing/parser.mly" ( Private ) -# 33182 "parsing/parser.ml" +# 33403 "parsing/parser.ml" in -# 4318 "parsing/parser.mly" +# 4390 "parsing/parser.mly" ( _1 ) -# 33187 "parsing/parser.ml" +# 33408 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -33199,9 +33420,9 @@ module Tables = struct let _startpos = _menhir_stack.MenhirLib.EngineTypes.endp in let _endpos = _startpos in let _v : (Asttypes.private_flag * Asttypes.virtual_flag) = -# 4353 "parsing/parser.mly" +# 4425 "parsing/parser.mly" ( Public, Concrete ) -# 33205 "parsing/parser.ml" +# 33426 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -33224,9 +33445,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Asttypes.private_flag * Asttypes.virtual_flag) = -# 4354 "parsing/parser.mly" +# 4426 "parsing/parser.mly" ( Private, Concrete ) -# 33230 "parsing/parser.ml" +# 33451 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -33249,9 +33470,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Asttypes.private_flag * Asttypes.virtual_flag) = -# 4355 "parsing/parser.mly" +# 4427 "parsing/parser.mly" ( Public, Virtual ) -# 33255 "parsing/parser.ml" +# 33476 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -33281,9 +33502,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (Asttypes.private_flag * Asttypes.virtual_flag) = -# 4356 "parsing/parser.mly" +# 4428 "parsing/parser.mly" ( Private, Virtual ) -# 33287 "parsing/parser.ml" +# 33508 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -33313,9 +33534,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (Asttypes.private_flag * Asttypes.virtual_flag) = -# 4357 "parsing/parser.mly" +# 4429 "parsing/parser.mly" ( Private, Virtual ) -# 33319 "parsing/parser.ml" +# 33540 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -33331,9 +33552,9 @@ module Tables = struct let _startpos = _menhir_stack.MenhirLib.EngineTypes.endp in let _endpos = _startpos in let _v : (Asttypes.rec_flag) = -# 4299 "parsing/parser.mly" +# 4371 "parsing/parser.mly" ( Nonrecursive ) -# 33337 "parsing/parser.ml" +# 33558 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -33356,9 +33577,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Asttypes.rec_flag) = -# 4300 "parsing/parser.mly" +# 4372 "parsing/parser.mly" ( Recursive ) -# 33362 "parsing/parser.ml" +# 33583 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -33384,12 +33605,12 @@ module Tables = struct (Longident.t Asttypes.loc * Parsetree.expression) list) = let eo = # 124 "" ( None ) -# 33388 "parsing/parser.ml" +# 33609 "parsing/parser.ml" in -# 3084 "parsing/parser.mly" +# 3151 "parsing/parser.mly" ( eo, fields ) -# 33393 "parsing/parser.ml" +# 33614 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -33430,18 +33651,18 @@ module Tables = struct let x = # 191 "" ( x ) -# 33434 "parsing/parser.ml" +# 33655 "parsing/parser.ml" in # 126 "" ( Some x ) -# 33439 "parsing/parser.ml" +# 33660 "parsing/parser.ml" in -# 3084 "parsing/parser.mly" +# 3151 "parsing/parser.mly" ( eo, fields ) -# 33445 "parsing/parser.ml" +# 33666 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -33467,18 +33688,18 @@ module Tables = struct let _startpos = _startpos_d_ in let _endpos = _endpos_d_ in let _v : (Parsetree.constructor_declaration list) = let x = -# 3593 "parsing/parser.mly" +# 3660 "parsing/parser.mly" ( 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 ) -# 33477 "parsing/parser.ml" +# 33698 "parsing/parser.ml" in -# 1338 "parsing/parser.mly" +# 1417 "parsing/parser.mly" ( [x] ) -# 33482 "parsing/parser.ml" +# 33703 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -33504,18 +33725,18 @@ module Tables = struct let _startpos = _startpos_d_ in let _endpos = _endpos_d_ in let _v : (Parsetree.constructor_declaration list) = let x = -# 3593 "parsing/parser.mly" +# 3660 "parsing/parser.mly" ( 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 ) -# 33514 "parsing/parser.ml" +# 33735 "parsing/parser.ml" in -# 1341 "parsing/parser.mly" +# 1420 "parsing/parser.mly" ( [x] ) -# 33519 "parsing/parser.ml" +# 33740 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -33548,18 +33769,18 @@ module Tables = struct let _startpos = _startpos_xs_ in let _endpos = _endpos_d_ in let _v : (Parsetree.constructor_declaration list) = let x = -# 3593 "parsing/parser.mly" +# 3660 "parsing/parser.mly" ( 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 ) -# 33558 "parsing/parser.ml" +# 33779 "parsing/parser.ml" in -# 1345 "parsing/parser.mly" +# 1424 "parsing/parser.mly" ( x :: xs ) -# 33563 "parsing/parser.ml" +# 33784 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -33586,24 +33807,24 @@ module Tables = struct let _endpos = _endpos_d_ in let _v : (Parsetree.extension_constructor list) = let x = let _1 = -# 3732 "parsing/parser.mly" +# 3799 "parsing/parser.mly" ( 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)) ) -# 33596 "parsing/parser.ml" +# 33817 "parsing/parser.ml" in -# 3726 "parsing/parser.mly" +# 3793 "parsing/parser.mly" ( _1 ) -# 33601 "parsing/parser.ml" +# 33822 "parsing/parser.ml" in -# 1338 "parsing/parser.mly" +# 1417 "parsing/parser.mly" ( [x] ) -# 33607 "parsing/parser.ml" +# 33828 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -33626,14 +33847,14 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Parsetree.extension_constructor list) = let x = -# 3728 "parsing/parser.mly" +# 3795 "parsing/parser.mly" ( _1 ) -# 33632 "parsing/parser.ml" +# 33853 "parsing/parser.ml" in -# 1338 "parsing/parser.mly" +# 1417 "parsing/parser.mly" ( [x] ) -# 33637 "parsing/parser.ml" +# 33858 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -33660,24 +33881,24 @@ module Tables = struct let _endpos = _endpos_d_ in let _v : (Parsetree.extension_constructor list) = let x = let _1 = -# 3732 "parsing/parser.mly" +# 3799 "parsing/parser.mly" ( 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)) ) -# 33670 "parsing/parser.ml" +# 33891 "parsing/parser.ml" in -# 3726 "parsing/parser.mly" +# 3793 "parsing/parser.mly" ( _1 ) -# 33675 "parsing/parser.ml" +# 33896 "parsing/parser.ml" in -# 1341 "parsing/parser.mly" +# 1420 "parsing/parser.mly" ( [x] ) -# 33681 "parsing/parser.ml" +# 33902 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -33700,14 +33921,14 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Parsetree.extension_constructor list) = let x = -# 3728 "parsing/parser.mly" +# 3795 "parsing/parser.mly" ( _1 ) -# 33706 "parsing/parser.ml" +# 33927 "parsing/parser.ml" in -# 1341 "parsing/parser.mly" +# 1420 "parsing/parser.mly" ( [x] ) -# 33711 "parsing/parser.ml" +# 33932 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -33741,24 +33962,24 @@ module Tables = struct let _endpos = _endpos_d_ in let _v : (Parsetree.extension_constructor list) = let x = let _1 = -# 3732 "parsing/parser.mly" +# 3799 "parsing/parser.mly" ( 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)) ) -# 33751 "parsing/parser.ml" +# 33972 "parsing/parser.ml" in -# 3726 "parsing/parser.mly" +# 3793 "parsing/parser.mly" ( _1 ) -# 33756 "parsing/parser.ml" +# 33977 "parsing/parser.ml" in -# 1345 "parsing/parser.mly" +# 1424 "parsing/parser.mly" ( x :: xs ) -# 33762 "parsing/parser.ml" +# 33983 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -33788,14 +34009,14 @@ module Tables = struct let _startpos = _startpos_xs_ in let _endpos = _endpos__1_ in let _v : (Parsetree.extension_constructor list) = let x = -# 3728 "parsing/parser.mly" +# 3795 "parsing/parser.mly" ( _1 ) -# 33794 "parsing/parser.ml" +# 34015 "parsing/parser.ml" in -# 1345 "parsing/parser.mly" +# 1424 "parsing/parser.mly" ( x :: xs ) -# 33799 "parsing/parser.ml" +# 34020 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -33821,18 +34042,18 @@ module Tables = struct let _startpos = _startpos_d_ in let _endpos = _endpos_d_ in let _v : (Parsetree.extension_constructor list) = let x = -# 3732 "parsing/parser.mly" +# 3799 "parsing/parser.mly" ( 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)) ) -# 33831 "parsing/parser.ml" +# 34052 "parsing/parser.ml" in -# 1338 "parsing/parser.mly" +# 1417 "parsing/parser.mly" ( [x] ) -# 33836 "parsing/parser.ml" +# 34057 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -33858,18 +34079,18 @@ module Tables = struct let _startpos = _startpos_d_ in let _endpos = _endpos_d_ in let _v : (Parsetree.extension_constructor list) = let x = -# 3732 "parsing/parser.mly" +# 3799 "parsing/parser.mly" ( 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)) ) -# 33868 "parsing/parser.ml" +# 34089 "parsing/parser.ml" in -# 1341 "parsing/parser.mly" +# 1420 "parsing/parser.mly" ( [x] ) -# 33873 "parsing/parser.ml" +# 34094 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -33902,18 +34123,18 @@ module Tables = struct let _startpos = _startpos_xs_ in let _endpos = _endpos_d_ in let _v : (Parsetree.extension_constructor list) = let x = -# 3732 "parsing/parser.mly" +# 3799 "parsing/parser.mly" ( 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)) ) -# 33912 "parsing/parser.ml" +# 34133 "parsing/parser.ml" in -# 1345 "parsing/parser.mly" +# 1424 "parsing/parser.mly" ( x :: xs ) -# 33917 "parsing/parser.ml" +# 34138 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -33929,9 +34150,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) = -# 1204 "parsing/parser.mly" +# 1283 "parsing/parser.mly" ( [] ) -# 33935 "parsing/parser.ml" +# 34156 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -33988,21 +34209,21 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2358 "parsing/parser.mly" +# 2437 "parsing/parser.mly" ( _1, _3, make_loc _sloc ) -# 33994 "parsing/parser.ml" +# 34215 "parsing/parser.ml" in # 183 "" ( x ) -# 34000 "parsing/parser.ml" +# 34221 "parsing/parser.ml" in -# 1206 "parsing/parser.mly" +# 1285 "parsing/parser.mly" ( x :: xs ) -# 34006 "parsing/parser.ml" +# 34227 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -34025,9 +34246,9 @@ module Tables = struct let _startpos = _startpos_x_ in let _endpos = _endpos_x_ in let _v : (Jane_syntax.Comprehensions.clause list) = -# 1218 "parsing/parser.mly" +# 1297 "parsing/parser.mly" ( [ x ] ) -# 34031 "parsing/parser.ml" +# 34252 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -34057,9 +34278,9 @@ module Tables = struct let _startpos = _startpos_xs_ in let _endpos = _endpos_x_ in let _v : (Jane_syntax.Comprehensions.clause list) = -# 1220 "parsing/parser.mly" +# 1299 "parsing/parser.mly" ( x :: xs ) -# 34063 "parsing/parser.ml" +# 34284 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -34082,9 +34303,9 @@ module Tables = struct let _startpos = _startpos_x_ in let _endpos = _endpos_x_ in let _v : ((Lexing.position * Parsetree.functor_parameter) list) = -# 1218 "parsing/parser.mly" +# 1297 "parsing/parser.mly" ( [ x ] ) -# 34088 "parsing/parser.ml" +# 34309 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -34114,9 +34335,9 @@ module Tables = struct let _startpos = _startpos_xs_ in let _endpos = _endpos_x_ in let _v : ((Lexing.position * Parsetree.functor_parameter) list) = -# 1220 "parsing/parser.mly" +# 1299 "parsing/parser.mly" ( x :: xs ) -# 34120 "parsing/parser.ml" +# 34341 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -34139,9 +34360,9 @@ module Tables = struct let _startpos = _startpos_x_ in let _endpos = _endpos_x_ in let _v : ((Asttypes.arg_label * Parsetree.expression) list) = -# 1218 "parsing/parser.mly" +# 1297 "parsing/parser.mly" ( [ x ] ) -# 34145 "parsing/parser.ml" +# 34366 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -34171,9 +34392,9 @@ module Tables = struct let _startpos = _startpos_xs_ in let _endpos = _endpos_x_ in let _v : ((Asttypes.arg_label * Parsetree.expression) list) = -# 1220 "parsing/parser.mly" +# 1299 "parsing/parser.mly" ( x :: xs ) -# 34177 "parsing/parser.ml" +# 34398 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -34196,9 +34417,9 @@ module Tables = struct let _startpos = _startpos_x_ in let _endpos = _endpos_x_ in let _v : (Asttypes.label list) = -# 1218 "parsing/parser.mly" +# 1297 "parsing/parser.mly" ( [ x ] ) -# 34202 "parsing/parser.ml" +# 34423 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -34228,9 +34449,9 @@ module Tables = struct let _startpos = _startpos_xs_ in let _endpos = _endpos_x_ in let _v : (Asttypes.label list) = -# 1220 "parsing/parser.mly" +# 1299 "parsing/parser.mly" ( x :: xs ) -# 34234 "parsing/parser.ml" +# 34455 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -34266,21 +34487,21 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1123 "parsing/parser.mly" +# 1202 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 34272 "parsing/parser.ml" +# 34493 "parsing/parser.ml" in -# 3791 "parsing/parser.mly" +# 3858 "parsing/parser.mly" ( (_2, None) ) -# 34278 "parsing/parser.ml" +# 34499 "parsing/parser.ml" in -# 1218 "parsing/parser.mly" +# 1297 "parsing/parser.mly" ( [ x ] ) -# 34284 "parsing/parser.ml" +# 34505 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -34344,21 +34565,21 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1123 "parsing/parser.mly" +# 1202 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 34350 "parsing/parser.ml" +# 34571 "parsing/parser.ml" in -# 3793 "parsing/parser.mly" +# 3860 "parsing/parser.mly" ( (tyvar, Some layout) ) -# 34356 "parsing/parser.ml" +# 34577 "parsing/parser.ml" in -# 1218 "parsing/parser.mly" +# 1297 "parsing/parser.mly" ( [ x ] ) -# 34362 "parsing/parser.ml" +# 34583 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -34401,21 +34622,21 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1123 "parsing/parser.mly" +# 1202 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 34407 "parsing/parser.ml" +# 34628 "parsing/parser.ml" in -# 3791 "parsing/parser.mly" +# 3858 "parsing/parser.mly" ( (_2, None) ) -# 34413 "parsing/parser.ml" +# 34634 "parsing/parser.ml" in -# 1220 "parsing/parser.mly" +# 1299 "parsing/parser.mly" ( x :: xs ) -# 34419 "parsing/parser.ml" +# 34640 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -34486,21 +34707,21 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1123 "parsing/parser.mly" +# 1202 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 34492 "parsing/parser.ml" +# 34713 "parsing/parser.ml" in -# 3793 "parsing/parser.mly" +# 3860 "parsing/parser.mly" ( (tyvar, Some layout) ) -# 34498 "parsing/parser.ml" +# 34719 "parsing/parser.ml" in -# 1220 "parsing/parser.mly" +# 1299 "parsing/parser.mly" ( x :: xs ) -# 34504 "parsing/parser.ml" +# 34725 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -34525,12 +34746,12 @@ module Tables = struct let _v : (Parsetree.case list) = let _1 = # 124 "" ( None ) -# 34529 "parsing/parser.ml" +# 34750 "parsing/parser.ml" in -# 1309 "parsing/parser.mly" +# 1388 "parsing/parser.mly" ( [x] ) -# 34534 "parsing/parser.ml" +# 34755 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -34564,13 +34785,13 @@ module Tables = struct # 126 "" ( Some x ) -# 34568 "parsing/parser.ml" +# 34789 "parsing/parser.ml" in -# 1309 "parsing/parser.mly" +# 1388 "parsing/parser.mly" ( [x] ) -# 34574 "parsing/parser.ml" +# 34795 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -34607,9 +34828,9 @@ module Tables = struct let _startpos = _startpos_xs_ in let _endpos = _endpos_x_ in let _v : (Parsetree.case list) = -# 1313 "parsing/parser.mly" +# 1392 "parsing/parser.mly" ( x :: xs ) -# 34613 "parsing/parser.ml" +# 34834 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -34633,20 +34854,20 @@ module Tables = struct let _endpos = _endpos__1_ in let _v : (Parsetree.core_type list) = let xs = let x = -# 3839 "parsing/parser.mly" +# 3906 "parsing/parser.mly" ( _1 ) -# 34639 "parsing/parser.ml" +# 34860 "parsing/parser.ml" in -# 1244 "parsing/parser.mly" +# 1323 "parsing/parser.mly" ( [ x ] ) -# 34644 "parsing/parser.ml" +# 34865 "parsing/parser.ml" in -# 1252 "parsing/parser.mly" +# 1331 "parsing/parser.mly" ( xs ) -# 34650 "parsing/parser.ml" +# 34871 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -34684,20 +34905,20 @@ module Tables = struct let _endpos = _endpos__1_ in let _v : (Parsetree.core_type list) = let xs = let x = -# 3839 "parsing/parser.mly" +# 3906 "parsing/parser.mly" ( _1 ) -# 34690 "parsing/parser.ml" +# 34911 "parsing/parser.ml" in -# 1248 "parsing/parser.mly" +# 1327 "parsing/parser.mly" ( x :: xs ) -# 34695 "parsing/parser.ml" +# 34916 "parsing/parser.ml" in -# 1252 "parsing/parser.mly" +# 1331 "parsing/parser.mly" ( xs ) -# 34701 "parsing/parser.ml" +# 34922 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -34720,14 +34941,14 @@ module Tables = struct let _startpos = _startpos_x_ in let _endpos = _endpos_x_ in let _v : (Jane_syntax.Comprehensions.clause_binding list) = let xs = -# 1244 "parsing/parser.mly" +# 1323 "parsing/parser.mly" ( [ x ] ) -# 34726 "parsing/parser.ml" +# 34947 "parsing/parser.ml" in -# 1252 "parsing/parser.mly" +# 1331 "parsing/parser.mly" ( xs ) -# 34731 "parsing/parser.ml" +# 34952 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -34764,14 +34985,14 @@ module Tables = struct let _startpos = _startpos_xs_ in let _endpos = _endpos_x_ in let _v : (Jane_syntax.Comprehensions.clause_binding list) = let xs = -# 1248 "parsing/parser.mly" +# 1327 "parsing/parser.mly" ( x :: xs ) -# 34770 "parsing/parser.ml" +# 34991 "parsing/parser.ml" in -# 1252 "parsing/parser.mly" +# 1331 "parsing/parser.mly" ( xs ) -# 34775 "parsing/parser.ml" +# 34996 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -34794,14 +35015,14 @@ module Tables = struct let _startpos = _startpos_x_ in let _endpos = _endpos_x_ in let _v : (Parsetree.with_constraint list) = let xs = -# 1244 "parsing/parser.mly" +# 1323 "parsing/parser.mly" ( [ x ] ) -# 34800 "parsing/parser.ml" +# 35021 "parsing/parser.ml" in -# 1252 "parsing/parser.mly" +# 1331 "parsing/parser.mly" ( xs ) -# 34805 "parsing/parser.ml" +# 35026 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -34838,14 +35059,14 @@ module Tables = struct let _startpos = _startpos_xs_ in let _endpos = _endpos_x_ in let _v : (Parsetree.with_constraint list) = let xs = -# 1248 "parsing/parser.mly" +# 1327 "parsing/parser.mly" ( x :: xs ) -# 34844 "parsing/parser.ml" +# 35065 "parsing/parser.ml" in -# 1252 "parsing/parser.mly" +# 1331 "parsing/parser.mly" ( xs ) -# 34849 "parsing/parser.ml" +# 35070 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -34868,14 +35089,14 @@ module Tables = struct let _startpos = _startpos_x_ in let _endpos = _endpos_x_ in let _v : (Parsetree.row_field list) = let xs = -# 1244 "parsing/parser.mly" +# 1323 "parsing/parser.mly" ( [ x ] ) -# 34874 "parsing/parser.ml" +# 35095 "parsing/parser.ml" in -# 1252 "parsing/parser.mly" +# 1331 "parsing/parser.mly" ( xs ) -# 34879 "parsing/parser.ml" +# 35100 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -34912,14 +35133,14 @@ module Tables = struct let _startpos = _startpos_xs_ in let _endpos = _endpos_x_ in let _v : (Parsetree.row_field list) = let xs = -# 1248 "parsing/parser.mly" +# 1327 "parsing/parser.mly" ( x :: xs ) -# 34918 "parsing/parser.ml" +# 35139 "parsing/parser.ml" in -# 1252 "parsing/parser.mly" +# 1331 "parsing/parser.mly" ( xs ) -# 34923 "parsing/parser.ml" +# 35144 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -34942,14 +35163,14 @@ module Tables = struct let _startpos = _startpos_x_ in let _endpos = _endpos_x_ in let _v : (Parsetree.core_type list) = let xs = -# 1244 "parsing/parser.mly" +# 1323 "parsing/parser.mly" ( [ x ] ) -# 34948 "parsing/parser.ml" +# 35169 "parsing/parser.ml" in -# 1252 "parsing/parser.mly" +# 1331 "parsing/parser.mly" ( xs ) -# 34953 "parsing/parser.ml" +# 35174 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -34986,14 +35207,14 @@ module Tables = struct let _startpos = _startpos_xs_ in let _endpos = _endpos_x_ in let _v : (Parsetree.core_type list) = let xs = -# 1248 "parsing/parser.mly" +# 1327 "parsing/parser.mly" ( x :: xs ) -# 34992 "parsing/parser.ml" +# 35213 "parsing/parser.ml" in -# 1252 "parsing/parser.mly" +# 1331 "parsing/parser.mly" ( xs ) -# 34997 "parsing/parser.ml" +# 35218 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -35016,14 +35237,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 = -# 1244 "parsing/parser.mly" +# 1323 "parsing/parser.mly" ( [ x ] ) -# 35022 "parsing/parser.ml" +# 35243 "parsing/parser.ml" in -# 1252 "parsing/parser.mly" +# 1331 "parsing/parser.mly" ( xs ) -# 35027 "parsing/parser.ml" +# 35248 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -35060,14 +35281,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 = -# 1248 "parsing/parser.mly" +# 1327 "parsing/parser.mly" ( x :: xs ) -# 35066 "parsing/parser.ml" +# 35287 "parsing/parser.ml" in -# 1252 "parsing/parser.mly" +# 1331 "parsing/parser.mly" ( xs ) -# 35071 "parsing/parser.ml" +# 35292 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -35090,14 +35311,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 = -# 1244 "parsing/parser.mly" +# 1323 "parsing/parser.mly" ( [ x ] ) -# 35096 "parsing/parser.ml" +# 35317 "parsing/parser.ml" in -# 1252 "parsing/parser.mly" +# 1331 "parsing/parser.mly" ( xs ) -# 35101 "parsing/parser.ml" +# 35322 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -35134,14 +35355,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 = -# 1248 "parsing/parser.mly" +# 1327 "parsing/parser.mly" ( x :: xs ) -# 35140 "parsing/parser.ml" +# 35361 "parsing/parser.ml" in -# 1252 "parsing/parser.mly" +# 1331 "parsing/parser.mly" ( xs ) -# 35145 "parsing/parser.ml" +# 35366 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -35166,30 +35387,30 @@ module Tables = struct let _v : (Parsetree.core_type list) = let xs = let x = let gbl = -# 4334 "parsing/parser.mly" +# 4406 "parsing/parser.mly" ( Nothing ) -# 35172 "parsing/parser.ml" +# 35393 "parsing/parser.ml" in let (_endpos_gbl_, _startpos_gbl_) = (_endpos__0_, _endpos__0_) in let _loc_gbl_ = (_startpos_gbl_, _endpos_gbl_) in -# 3659 "parsing/parser.mly" +# 3726 "parsing/parser.mly" ( mkcty_global_maybe gbl cty (make_loc _loc_gbl_) ) -# 35181 "parsing/parser.ml" +# 35402 "parsing/parser.ml" in -# 1244 "parsing/parser.mly" +# 1323 "parsing/parser.mly" ( [ x ] ) -# 35187 "parsing/parser.ml" +# 35408 "parsing/parser.ml" in -# 1252 "parsing/parser.mly" +# 1331 "parsing/parser.mly" ( xs ) -# 35193 "parsing/parser.ml" +# 35414 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -35221,30 +35442,30 @@ module Tables = struct let _v : (Parsetree.core_type list) = let xs = let x = let gbl = -# 4335 "parsing/parser.mly" +# 4407 "parsing/parser.mly" ( Global ) -# 35227 "parsing/parser.ml" +# 35448 "parsing/parser.ml" in let (_endpos_gbl_, _startpos_gbl_) = (_endpos__1_, _startpos__1_) in let _loc_gbl_ = (_startpos_gbl_, _endpos_gbl_) in -# 3659 "parsing/parser.mly" +# 3726 "parsing/parser.mly" ( mkcty_global_maybe gbl cty (make_loc _loc_gbl_) ) -# 35236 "parsing/parser.ml" +# 35457 "parsing/parser.ml" in -# 1244 "parsing/parser.mly" +# 1323 "parsing/parser.mly" ( [ x ] ) -# 35242 "parsing/parser.ml" +# 35463 "parsing/parser.ml" in -# 1252 "parsing/parser.mly" +# 1331 "parsing/parser.mly" ( xs ) -# 35248 "parsing/parser.ml" +# 35469 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -35284,30 +35505,30 @@ module Tables = struct let x = let _endpos__0_ = _endpos__2_ in let gbl = -# 4334 "parsing/parser.mly" +# 4406 "parsing/parser.mly" ( Nothing ) -# 35290 "parsing/parser.ml" +# 35511 "parsing/parser.ml" in let (_endpos_gbl_, _startpos_gbl_) = (_endpos__0_, _endpos__0_) in let _loc_gbl_ = (_startpos_gbl_, _endpos_gbl_) in -# 3659 "parsing/parser.mly" +# 3726 "parsing/parser.mly" ( mkcty_global_maybe gbl cty (make_loc _loc_gbl_) ) -# 35299 "parsing/parser.ml" +# 35520 "parsing/parser.ml" in -# 1248 "parsing/parser.mly" +# 1327 "parsing/parser.mly" ( x :: xs ) -# 35305 "parsing/parser.ml" +# 35526 "parsing/parser.ml" in -# 1252 "parsing/parser.mly" +# 1331 "parsing/parser.mly" ( xs ) -# 35311 "parsing/parser.ml" +# 35532 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -35353,30 +35574,30 @@ module Tables = struct let _v : (Parsetree.core_type list) = let xs = let x = let gbl = -# 4335 "parsing/parser.mly" +# 4407 "parsing/parser.mly" ( Global ) -# 35359 "parsing/parser.ml" +# 35580 "parsing/parser.ml" in let (_endpos_gbl_, _startpos_gbl_) = (_endpos__1_, _startpos__1_) in let _loc_gbl_ = (_startpos_gbl_, _endpos_gbl_) in -# 3659 "parsing/parser.mly" +# 3726 "parsing/parser.mly" ( mkcty_global_maybe gbl cty (make_loc _loc_gbl_) ) -# 35368 "parsing/parser.ml" +# 35589 "parsing/parser.ml" in -# 1248 "parsing/parser.mly" +# 1327 "parsing/parser.mly" ( x :: xs ) -# 35374 "parsing/parser.ml" +# 35595 "parsing/parser.ml" in -# 1252 "parsing/parser.mly" +# 1331 "parsing/parser.mly" ( xs ) -# 35380 "parsing/parser.ml" +# 35601 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -35413,9 +35634,9 @@ module Tables = struct let _startpos = _startpos_xs_ in let _endpos = _endpos_x_ in let _v : (Parsetree.core_type list) = -# 1275 "parsing/parser.mly" +# 1354 "parsing/parser.mly" ( x :: xs ) -# 35419 "parsing/parser.ml" +# 35640 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -35452,9 +35673,9 @@ module Tables = struct let _startpos = _startpos_x1_ in let _endpos = _endpos_x2_ in let _v : (Parsetree.core_type list) = -# 1279 "parsing/parser.mly" +# 1358 "parsing/parser.mly" ( [ x2; x1 ] ) -# 35458 "parsing/parser.ml" +# 35679 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -35491,9 +35712,9 @@ module Tables = struct let _startpos = _startpos_xs_ in let _endpos = _endpos_x_ in let _v : (Parsetree.expression list) = -# 1275 "parsing/parser.mly" +# 1354 "parsing/parser.mly" ( x :: xs ) -# 35497 "parsing/parser.ml" +# 35718 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -35530,9 +35751,9 @@ module Tables = struct let _startpos = _startpos_x1_ in let _endpos = _endpos_x2_ in let _v : (Parsetree.expression list) = -# 1279 "parsing/parser.mly" +# 1358 "parsing/parser.mly" ( [ x2; x1 ] ) -# 35536 "parsing/parser.ml" +# 35757 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -35569,9 +35790,9 @@ module Tables = struct let _startpos = _startpos_xs_ in let _endpos = _endpos_x_ in let _v : (Parsetree.core_type list) = -# 1275 "parsing/parser.mly" +# 1354 "parsing/parser.mly" ( x :: xs ) -# 35575 "parsing/parser.ml" +# 35796 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -35608,9 +35829,9 @@ module Tables = struct let _startpos = _startpos_x1_ in let _endpos = _endpos_x2_ in let _v : (Parsetree.core_type list) = -# 1279 "parsing/parser.mly" +# 1358 "parsing/parser.mly" ( [ x2; x1 ] ) -# 35614 "parsing/parser.ml" +# 35835 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -35633,9 +35854,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Parsetree.row_field) = -# 4042 "parsing/parser.mly" +# 4114 "parsing/parser.mly" ( _1 ) -# 35639 "parsing/parser.ml" +# 35860 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -35661,9 +35882,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 4044 "parsing/parser.mly" +# 4116 "parsing/parser.mly" ( Rf.inherit_ ~loc:(make_loc _sloc) _1 ) -# 35667 "parsing/parser.ml" +# 35888 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -35688,12 +35909,12 @@ module Tables = struct let _v : (Parsetree.expression list) = let _2 = # 124 "" ( None ) -# 35692 "parsing/parser.ml" +# 35913 "parsing/parser.ml" in -# 1296 "parsing/parser.mly" +# 1375 "parsing/parser.mly" ( [x] ) -# 35697 "parsing/parser.ml" +# 35918 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -35727,13 +35948,13 @@ module Tables = struct # 126 "" ( Some x ) -# 35731 "parsing/parser.ml" +# 35952 "parsing/parser.ml" in -# 1296 "parsing/parser.mly" +# 1375 "parsing/parser.mly" ( [x] ) -# 35737 "parsing/parser.ml" +# 35958 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -35770,9 +35991,9 @@ module Tables = struct let _startpos = _startpos_x_ in let _endpos = _endpos_xs_ in let _v : (Parsetree.expression list) = -# 1300 "parsing/parser.mly" +# 1379 "parsing/parser.mly" ( x :: xs ) -# 35776 "parsing/parser.ml" +# 35997 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -35798,9 +36019,9 @@ module Tables = struct } = _menhir_stack in let oe : (Parsetree.expression option) = Obj.magic oe in let _1 : ( -# 937 "parsing/parser.mly" +# 1014 "parsing/parser.mly" (string) -# 35804 "parsing/parser.ml" +# 36025 "parsing/parser.ml" ) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in @@ -35808,26 +36029,26 @@ module Tables = struct let _v : ((Asttypes.label Asttypes.loc * Parsetree.expression) list) = let _2 = # 124 "" ( None ) -# 35812 "parsing/parser.ml" +# 36033 "parsing/parser.ml" in let x = let label = let _1 = -# 4106 "parsing/parser.mly" +# 4178 "parsing/parser.mly" ( _1 ) -# 35819 "parsing/parser.ml" +# 36040 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1123 "parsing/parser.mly" +# 1202 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 35827 "parsing/parser.ml" +# 36048 "parsing/parser.ml" in -# 3107 "parsing/parser.mly" +# 3174 "parsing/parser.mly" ( let label, e = match oe with | None -> @@ -35837,13 +36058,13 @@ module Tables = struct label, e in label, e ) -# 35841 "parsing/parser.ml" +# 36062 "parsing/parser.ml" in -# 1296 "parsing/parser.mly" +# 1375 "parsing/parser.mly" ( [x] ) -# 35847 "parsing/parser.ml" +# 36068 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -35876,9 +36097,9 @@ module Tables = struct let x : unit = Obj.magic x in let oe : (Parsetree.expression option) = Obj.magic oe in let _1 : ( -# 937 "parsing/parser.mly" +# 1014 "parsing/parser.mly" (string) -# 35882 "parsing/parser.ml" +# 36103 "parsing/parser.ml" ) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in @@ -35886,26 +36107,26 @@ module Tables = struct let _v : ((Asttypes.label Asttypes.loc * Parsetree.expression) list) = let _2 = # 126 "" ( Some x ) -# 35890 "parsing/parser.ml" +# 36111 "parsing/parser.ml" in let x = let label = let _1 = -# 4106 "parsing/parser.mly" +# 4178 "parsing/parser.mly" ( _1 ) -# 35897 "parsing/parser.ml" +# 36118 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1123 "parsing/parser.mly" +# 1202 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 35905 "parsing/parser.ml" +# 36126 "parsing/parser.ml" in -# 3107 "parsing/parser.mly" +# 3174 "parsing/parser.mly" ( let label, e = match oe with | None -> @@ -35915,13 +36136,13 @@ module Tables = struct label, e in label, e ) -# 35919 "parsing/parser.ml" +# 36140 "parsing/parser.ml" in -# 1296 "parsing/parser.mly" +# 1375 "parsing/parser.mly" ( [x] ) -# 35925 "parsing/parser.ml" +# 36146 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -35961,9 +36182,9 @@ module Tables = struct let _2 : unit = Obj.magic _2 in let oe : (Parsetree.expression option) = Obj.magic oe in let _1 : ( -# 937 "parsing/parser.mly" +# 1014 "parsing/parser.mly" (string) -# 35967 "parsing/parser.ml" +# 36188 "parsing/parser.ml" ) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in @@ -35971,21 +36192,21 @@ module Tables = struct let _v : ((Asttypes.label Asttypes.loc * Parsetree.expression) list) = let x = let label = let _1 = -# 4106 "parsing/parser.mly" +# 4178 "parsing/parser.mly" ( _1 ) -# 35977 "parsing/parser.ml" +# 36198 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1123 "parsing/parser.mly" +# 1202 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 35985 "parsing/parser.ml" +# 36206 "parsing/parser.ml" in -# 3107 "parsing/parser.mly" +# 3174 "parsing/parser.mly" ( let label, e = match oe with | None -> @@ -35995,13 +36216,13 @@ module Tables = struct label, e in label, e ) -# 35999 "parsing/parser.ml" +# 36220 "parsing/parser.ml" in -# 1300 "parsing/parser.mly" +# 1379 "parsing/parser.mly" ( x :: xs ) -# 36005 "parsing/parser.ml" +# 36226 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -36026,12 +36247,12 @@ module Tables = struct let _v : (Parsetree.pattern list) = let _2 = # 124 "" ( None ) -# 36030 "parsing/parser.ml" +# 36251 "parsing/parser.ml" in -# 1296 "parsing/parser.mly" +# 1375 "parsing/parser.mly" ( [x] ) -# 36035 "parsing/parser.ml" +# 36256 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -36065,13 +36286,13 @@ module Tables = struct # 126 "" ( Some x ) -# 36069 "parsing/parser.ml" +# 36290 "parsing/parser.ml" in -# 1296 "parsing/parser.mly" +# 1375 "parsing/parser.mly" ( [x] ) -# 36075 "parsing/parser.ml" +# 36296 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -36108,9 +36329,9 @@ module Tables = struct let _startpos = _startpos_x_ in let _endpos = _endpos_xs_ in let _v : (Parsetree.pattern list) = -# 1300 "parsing/parser.mly" +# 1379 "parsing/parser.mly" ( x :: xs ) -# 36114 "parsing/parser.ml" +# 36335 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -36149,7 +36370,7 @@ module Tables = struct let _v : ((Longident.t Asttypes.loc * Parsetree.expression) list) = let _2 = # 124 "" ( None ) -# 36153 "parsing/parser.ml" +# 36374 "parsing/parser.ml" in let x = let label = @@ -36157,9 +36378,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1123 "parsing/parser.mly" +# 1202 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 36163 "parsing/parser.ml" +# 36384 "parsing/parser.ml" in let _startpos_label_ = _startpos__1_ in @@ -36167,7 +36388,7 @@ module Tables = struct let _symbolstartpos = _startpos_label_ in let _sloc = (_symbolstartpos, _endpos) in -# 3090 "parsing/parser.mly" +# 3157 "parsing/parser.mly" ( let constraint_loc, label, e = match eo with | None -> @@ -36177,13 +36398,13 @@ module Tables = struct (_startpos_c_, _endpos), label, e in label, mkexp_opt_constraint ~loc:constraint_loc e c ) -# 36181 "parsing/parser.ml" +# 36402 "parsing/parser.ml" in -# 1296 "parsing/parser.mly" +# 1375 "parsing/parser.mly" ( [x] ) -# 36187 "parsing/parser.ml" +# 36408 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -36229,7 +36450,7 @@ module Tables = struct let _v : ((Longident.t Asttypes.loc * Parsetree.expression) list) = let _2 = # 126 "" ( Some x ) -# 36233 "parsing/parser.ml" +# 36454 "parsing/parser.ml" in let x = let label = @@ -36237,9 +36458,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1123 "parsing/parser.mly" +# 1202 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 36243 "parsing/parser.ml" +# 36464 "parsing/parser.ml" in let _startpos_label_ = _startpos__1_ in @@ -36247,7 +36468,7 @@ module Tables = struct let _symbolstartpos = _startpos_label_ in let _sloc = (_symbolstartpos, _endpos) in -# 3090 "parsing/parser.mly" +# 3157 "parsing/parser.mly" ( let constraint_loc, label, e = match eo with | None -> @@ -36257,13 +36478,13 @@ module Tables = struct (_startpos_c_, _endpos), label, e in label, mkexp_opt_constraint ~loc:constraint_loc e c ) -# 36261 "parsing/parser.ml" +# 36482 "parsing/parser.ml" in -# 1296 "parsing/parser.mly" +# 1375 "parsing/parser.mly" ( [x] ) -# 36267 "parsing/parser.ml" +# 36488 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -36319,9 +36540,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1123 "parsing/parser.mly" +# 1202 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 36325 "parsing/parser.ml" +# 36546 "parsing/parser.ml" in let _startpos_label_ = _startpos__1_ in @@ -36329,7 +36550,7 @@ module Tables = struct let _symbolstartpos = _startpos_label_ in let _sloc = (_symbolstartpos, _endpos) in -# 3090 "parsing/parser.mly" +# 3157 "parsing/parser.mly" ( let constraint_loc, label, e = match eo with | None -> @@ -36339,13 +36560,13 @@ module Tables = struct (_startpos_c_, _endpos), label, e in label, mkexp_opt_constraint ~loc:constraint_loc e c ) -# 36343 "parsing/parser.ml" +# 36564 "parsing/parser.ml" in -# 1300 "parsing/parser.mly" +# 1379 "parsing/parser.mly" ( x :: xs ) -# 36349 "parsing/parser.ml" +# 36570 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -36368,9 +36589,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Parsetree.expression) = -# 2447 "parsing/parser.mly" +# 2526 "parsing/parser.mly" ( _1 ) -# 36374 "parsing/parser.ml" +# 36595 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -36400,9 +36621,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (Parsetree.expression) = -# 2448 "parsing/parser.mly" +# 2527 "parsing/parser.mly" ( _1 ) -# 36406 "parsing/parser.ml" +# 36627 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -36440,24 +36661,24 @@ module Tables = struct let _endpos = _endpos__3_ in let _v : (Parsetree.expression) = let _1 = let _1 = -# 2450 "parsing/parser.mly" +# 2529 "parsing/parser.mly" ( Pexp_sequence(_1, _3) ) -# 36446 "parsing/parser.ml" +# 36667 "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 -# 1156 "parsing/parser.mly" +# 1235 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) -# 36455 "parsing/parser.ml" +# 36676 "parsing/parser.ml" in -# 2451 "parsing/parser.mly" +# 2530 "parsing/parser.mly" ( _1 ) -# 36461 "parsing/parser.ml" +# 36682 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -36511,11 +36732,11 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2453 "parsing/parser.mly" +# 2532 "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)) ) -# 36519 "parsing/parser.ml" +# 36740 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -36583,18 +36804,18 @@ module Tables = struct let _v : (Parsetree.type_exception * string Asttypes.loc option) = let attrs = let _1 = _1_inlined4 in -# 4472 "parsing/parser.mly" +# 4544 "parsing/parser.mly" ( _1 ) -# 36589 "parsing/parser.ml" +# 36810 "parsing/parser.ml" in let _endpos_attrs_ = _endpos__1_inlined4_ in let attrs2 = let _1 = _1_inlined3 in -# 4476 "parsing/parser.mly" +# 4548 "parsing/parser.mly" ( _1 ) -# 36598 "parsing/parser.ml" +# 36819 "parsing/parser.ml" in let _endpos_attrs2_ = _endpos__1_inlined3_ in @@ -36604,17 +36825,17 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1123 "parsing/parser.mly" +# 1202 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 36610 "parsing/parser.ml" +# 36831 "parsing/parser.ml" in let attrs1 = let _1 = _1_inlined1 in -# 4476 "parsing/parser.mly" +# 4548 "parsing/parser.mly" ( _1 ) -# 36618 "parsing/parser.ml" +# 36839 "parsing/parser.ml" in let _endpos = _endpos_attrs_ in @@ -36622,7 +36843,7 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 3624 "parsing/parser.mly" +# 3691 "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 @@ -36632,7 +36853,7 @@ module Tables = struct (Lext_decl (vars_layouts, args, res)) in Te.mk_exception ~attrs ext_ctor, ext ) -# 36636 "parsing/parser.ml" +# 36857 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -36658,21 +36879,21 @@ module Tables = struct let _1 = # 260 "" ( List.flatten xss ) -# 36662 "parsing/parser.ml" +# 36883 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_xss_, _startpos_xss_) in let _endpos = _endpos__1_ in let _startpos = _startpos__1_ in -# 1116 "parsing/parser.mly" +# 1195 "parsing/parser.mly" ( extra_sig _startpos _endpos _1 ) -# 36670 "parsing/parser.ml" +# 36891 "parsing/parser.ml" in -# 1888 "parsing/parser.mly" +# 1967 "parsing/parser.mly" ( _1 ) -# 36676 "parsing/parser.ml" +# 36897 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -36704,9 +36925,9 @@ module Tables = struct let _v : (Parsetree.signature_item) = let _2 = let _1 = _1_inlined1 in -# 4472 "parsing/parser.mly" +# 4544 "parsing/parser.mly" ( _1 ) -# 36710 "parsing/parser.ml" +# 36931 "parsing/parser.ml" in let _endpos__2_ = _endpos__1_inlined1_ in @@ -36714,10 +36935,10 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1903 "parsing/parser.mly" +# 1982 "parsing/parser.mly" ( let docs = symbol_docs _sloc in mksig ~loc:_sloc (Psig_extension (_1, (add_docs_attrs docs _2))) ) -# 36721 "parsing/parser.ml" +# 36942 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -36741,23 +36962,23 @@ module Tables = struct let _endpos = _endpos__1_ in let _v : (Parsetree.signature_item) = let _1 = let _1 = -# 1907 "parsing/parser.mly" +# 1986 "parsing/parser.mly" ( Psig_attribute _1 ) -# 36747 "parsing/parser.ml" +# 36968 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1164 "parsing/parser.mly" +# 1243 "parsing/parser.mly" ( mksig ~loc:_sloc _1 ) -# 36755 "parsing/parser.ml" +# 36976 "parsing/parser.ml" in -# 1909 "parsing/parser.mly" +# 1988 "parsing/parser.mly" ( _1 ) -# 36761 "parsing/parser.ml" +# 36982 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -36781,23 +37002,23 @@ module Tables = struct let _endpos = _endpos__1_ in let _v : (Parsetree.signature_item) = let _1 = let _1 = -# 1912 "parsing/parser.mly" +# 1991 "parsing/parser.mly" ( psig_value _1 ) -# 36787 "parsing/parser.ml" +# 37008 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1181 "parsing/parser.mly" +# 1260 "parsing/parser.mly" ( wrap_mksig_ext ~loc:_sloc _1 ) -# 36795 "parsing/parser.ml" +# 37016 "parsing/parser.ml" in -# 1942 "parsing/parser.mly" +# 2021 "parsing/parser.mly" ( _1 ) -# 36801 "parsing/parser.ml" +# 37022 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -36821,23 +37042,23 @@ module Tables = struct let _endpos = _endpos__1_ in let _v : (Parsetree.signature_item) = let _1 = let _1 = -# 1914 "parsing/parser.mly" +# 1993 "parsing/parser.mly" ( psig_value _1 ) -# 36827 "parsing/parser.ml" +# 37048 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1181 "parsing/parser.mly" +# 1260 "parsing/parser.mly" ( wrap_mksig_ext ~loc:_sloc _1 ) -# 36835 "parsing/parser.ml" +# 37056 "parsing/parser.ml" in -# 1942 "parsing/parser.mly" +# 2021 "parsing/parser.mly" ( _1 ) -# 36841 "parsing/parser.ml" +# 37062 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -36872,26 +37093,26 @@ module Tables = struct let _1 = let _1 = let _1 = -# 1357 "parsing/parser.mly" +# 1436 "parsing/parser.mly" ( let (x, b) = a in x, b :: bs ) -# 36878 "parsing/parser.ml" +# 37099 "parsing/parser.ml" in -# 3397 "parsing/parser.mly" +# 3464 "parsing/parser.mly" ( _1 ) -# 36883 "parsing/parser.ml" +# 37104 "parsing/parser.ml" in -# 3380 "parsing/parser.mly" +# 3447 "parsing/parser.mly" ( _1 ) -# 36889 "parsing/parser.ml" +# 37110 "parsing/parser.ml" in -# 1916 "parsing/parser.mly" +# 1995 "parsing/parser.mly" ( psig_type _1 ) -# 36895 "parsing/parser.ml" +# 37116 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_bs_, _startpos_a_) in @@ -36899,15 +37120,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1181 "parsing/parser.mly" +# 1260 "parsing/parser.mly" ( wrap_mksig_ext ~loc:_sloc _1 ) -# 36905 "parsing/parser.ml" +# 37126 "parsing/parser.ml" in -# 1942 "parsing/parser.mly" +# 2021 "parsing/parser.mly" ( _1 ) -# 36911 "parsing/parser.ml" +# 37132 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -36942,26 +37163,26 @@ module Tables = struct let _1 = let _1 = let _1 = -# 1357 "parsing/parser.mly" +# 1436 "parsing/parser.mly" ( let (x, b) = a in x, b :: bs ) -# 36948 "parsing/parser.ml" +# 37169 "parsing/parser.ml" in -# 3397 "parsing/parser.mly" +# 3464 "parsing/parser.mly" ( _1 ) -# 36953 "parsing/parser.ml" +# 37174 "parsing/parser.ml" in -# 3385 "parsing/parser.mly" +# 3452 "parsing/parser.mly" ( _1 ) -# 36959 "parsing/parser.ml" +# 37180 "parsing/parser.ml" in -# 1918 "parsing/parser.mly" +# 1997 "parsing/parser.mly" ( psig_typesubst _1 ) -# 36965 "parsing/parser.ml" +# 37186 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_bs_, _startpos_a_) in @@ -36969,15 +37190,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1181 "parsing/parser.mly" +# 1260 "parsing/parser.mly" ( wrap_mksig_ext ~loc:_sloc _1 ) -# 36975 "parsing/parser.ml" +# 37196 "parsing/parser.ml" in -# 1942 "parsing/parser.mly" +# 2021 "parsing/parser.mly" ( _1 ) -# 36981 "parsing/parser.ml" +# 37202 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -37062,16 +37283,16 @@ module Tables = struct let attrs2 = let _1 = _1_inlined3 in -# 4472 "parsing/parser.mly" +# 4544 "parsing/parser.mly" ( _1 ) -# 37068 "parsing/parser.ml" +# 37289 "parsing/parser.ml" in let _endpos_attrs2_ = _endpos__1_inlined3_ in let cs = -# 1349 "parsing/parser.mly" +# 1428 "parsing/parser.mly" ( List.rev xs ) -# 37075 "parsing/parser.ml" +# 37296 "parsing/parser.ml" in let tid = let (_endpos__1_, _startpos__1_, _1) = (_endpos__1_inlined2_, _startpos__1_inlined2_, _1_inlined2) in @@ -37079,46 +37300,46 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1123 "parsing/parser.mly" +# 1202 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 37085 "parsing/parser.ml" +# 37306 "parsing/parser.ml" in let _4 = -# 4307 "parsing/parser.mly" +# 4379 "parsing/parser.mly" ( Recursive ) -# 37091 "parsing/parser.ml" +# 37312 "parsing/parser.ml" in let attrs1 = let _1 = _1_inlined1 in -# 4476 "parsing/parser.mly" +# 4548 "parsing/parser.mly" ( _1 ) -# 37098 "parsing/parser.ml" +# 37319 "parsing/parser.ml" in let _endpos = _endpos_attrs2_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 3719 "parsing/parser.mly" +# 3786 "parsing/parser.mly" ( let docs = symbol_docs _sloc in let attrs = attrs1 @ attrs2 in Te.mk tid cs ~params ~priv ~attrs ~docs, ext ) -# 37110 "parsing/parser.ml" +# 37331 "parsing/parser.ml" in -# 3706 "parsing/parser.mly" +# 3773 "parsing/parser.mly" ( _1 ) -# 37116 "parsing/parser.ml" +# 37337 "parsing/parser.ml" in -# 1920 "parsing/parser.mly" +# 1999 "parsing/parser.mly" ( psig_typext _1 ) -# 37122 "parsing/parser.ml" +# 37343 "parsing/parser.ml" in let _endpos__1_ = _endpos__1_inlined3_ in @@ -37126,15 +37347,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1181 "parsing/parser.mly" +# 1260 "parsing/parser.mly" ( wrap_mksig_ext ~loc:_sloc _1 ) -# 37132 "parsing/parser.ml" +# 37353 "parsing/parser.ml" in -# 1942 "parsing/parser.mly" +# 2021 "parsing/parser.mly" ( _1 ) -# 37138 "parsing/parser.ml" +# 37359 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -37226,16 +37447,16 @@ module Tables = struct let attrs2 = let _1 = _1_inlined4 in -# 4472 "parsing/parser.mly" +# 4544 "parsing/parser.mly" ( _1 ) -# 37232 "parsing/parser.ml" +# 37453 "parsing/parser.ml" in let _endpos_attrs2_ = _endpos__1_inlined4_ in let cs = -# 1349 "parsing/parser.mly" +# 1428 "parsing/parser.mly" ( List.rev xs ) -# 37239 "parsing/parser.ml" +# 37460 "parsing/parser.ml" in let tid = let (_endpos__1_, _startpos__1_, _1) = (_endpos__1_inlined3_, _startpos__1_inlined3_, _1_inlined3) in @@ -37243,9 +37464,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1123 "parsing/parser.mly" +# 1202 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 37249 "parsing/parser.ml" +# 37470 "parsing/parser.ml" in let _4 = @@ -37254,41 +37475,41 @@ module Tables = struct let _startpos = _startpos__1_ in let _loc = (_startpos, _endpos) in -# 4309 "parsing/parser.mly" +# 4381 "parsing/parser.mly" ( not_expecting _loc "nonrec flag" ) -# 37260 "parsing/parser.ml" +# 37481 "parsing/parser.ml" in let attrs1 = let _1 = _1_inlined1 in -# 4476 "parsing/parser.mly" +# 4548 "parsing/parser.mly" ( _1 ) -# 37268 "parsing/parser.ml" +# 37489 "parsing/parser.ml" in let _endpos = _endpos_attrs2_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 3719 "parsing/parser.mly" +# 3786 "parsing/parser.mly" ( let docs = symbol_docs _sloc in let attrs = attrs1 @ attrs2 in Te.mk tid cs ~params ~priv ~attrs ~docs, ext ) -# 37280 "parsing/parser.ml" +# 37501 "parsing/parser.ml" in -# 3706 "parsing/parser.mly" +# 3773 "parsing/parser.mly" ( _1 ) -# 37286 "parsing/parser.ml" +# 37507 "parsing/parser.ml" in -# 1920 "parsing/parser.mly" +# 1999 "parsing/parser.mly" ( psig_typext _1 ) -# 37292 "parsing/parser.ml" +# 37513 "parsing/parser.ml" in let _endpos__1_ = _endpos__1_inlined4_ in @@ -37296,15 +37517,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1181 "parsing/parser.mly" +# 1260 "parsing/parser.mly" ( wrap_mksig_ext ~loc:_sloc _1 ) -# 37302 "parsing/parser.ml" +# 37523 "parsing/parser.ml" in -# 1942 "parsing/parser.mly" +# 2021 "parsing/parser.mly" ( _1 ) -# 37308 "parsing/parser.ml" +# 37529 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -37328,23 +37549,23 @@ module Tables = struct let _endpos = _endpos__1_ in let _v : (Parsetree.signature_item) = let _1 = let _1 = -# 1922 "parsing/parser.mly" +# 2001 "parsing/parser.mly" ( psig_exception _1 ) -# 37334 "parsing/parser.ml" +# 37555 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1181 "parsing/parser.mly" +# 1260 "parsing/parser.mly" ( wrap_mksig_ext ~loc:_sloc _1 ) -# 37342 "parsing/parser.ml" +# 37563 "parsing/parser.ml" in -# 1942 "parsing/parser.mly" +# 2021 "parsing/parser.mly" ( _1 ) -# 37348 "parsing/parser.ml" +# 37569 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -37407,9 +37628,9 @@ module Tables = struct let attrs2 = let _1 = _1_inlined3 in -# 4472 "parsing/parser.mly" +# 4544 "parsing/parser.mly" ( _1 ) -# 37413 "parsing/parser.ml" +# 37634 "parsing/parser.ml" in let _endpos_attrs2_ = _endpos__1_inlined3_ in @@ -37419,37 +37640,37 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1123 "parsing/parser.mly" +# 1202 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 37425 "parsing/parser.ml" +# 37646 "parsing/parser.ml" in let attrs1 = let _1 = _1_inlined1 in -# 4476 "parsing/parser.mly" +# 4548 "parsing/parser.mly" ( _1 ) -# 37433 "parsing/parser.ml" +# 37654 "parsing/parser.ml" in let _endpos = _endpos_attrs2_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1961 "parsing/parser.mly" +# 2040 "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 ) -# 37447 "parsing/parser.ml" +# 37668 "parsing/parser.ml" in -# 1924 "parsing/parser.mly" +# 2003 "parsing/parser.mly" ( let (body, ext) = _1 in (Psig_module body, ext) ) -# 37453 "parsing/parser.ml" +# 37674 "parsing/parser.ml" in let _endpos__1_ = _endpos__1_inlined3_ in @@ -37457,15 +37678,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1181 "parsing/parser.mly" +# 1260 "parsing/parser.mly" ( wrap_mksig_ext ~loc:_sloc _1 ) -# 37463 "parsing/parser.ml" +# 37684 "parsing/parser.ml" in -# 1942 "parsing/parser.mly" +# 2021 "parsing/parser.mly" ( _1 ) -# 37469 "parsing/parser.ml" +# 37690 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -37535,9 +37756,9 @@ module Tables = struct let attrs2 = let _1 = _1_inlined4 in -# 4472 "parsing/parser.mly" +# 4544 "parsing/parser.mly" ( _1 ) -# 37541 "parsing/parser.ml" +# 37762 "parsing/parser.ml" in let _endpos_attrs2_ = _endpos__1_inlined4_ in @@ -37548,9 +37769,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1123 "parsing/parser.mly" +# 1202 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 37554 "parsing/parser.ml" +# 37775 "parsing/parser.ml" in let (_endpos_id_, _startpos_id_) = (_endpos__1_, _startpos__1_) in @@ -37558,9 +37779,9 @@ module Tables = struct let _symbolstartpos = _startpos_id_ in let _sloc = (_symbolstartpos, _endpos) in -# 1998 "parsing/parser.mly" +# 2077 "parsing/parser.mly" ( Mty.alias ~loc:(make_loc _sloc) id ) -# 37564 "parsing/parser.ml" +# 37785 "parsing/parser.ml" in let name = @@ -37569,37 +37790,37 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1123 "parsing/parser.mly" +# 1202 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 37575 "parsing/parser.ml" +# 37796 "parsing/parser.ml" in let attrs1 = let _1 = _1_inlined1 in -# 4476 "parsing/parser.mly" +# 4548 "parsing/parser.mly" ( _1 ) -# 37583 "parsing/parser.ml" +# 37804 "parsing/parser.ml" in let _endpos = _endpos_attrs2_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1989 "parsing/parser.mly" +# 2068 "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 ) -# 37597 "parsing/parser.ml" +# 37818 "parsing/parser.ml" in -# 1926 "parsing/parser.mly" +# 2005 "parsing/parser.mly" ( let (body, ext) = _1 in (Psig_module body, ext) ) -# 37603 "parsing/parser.ml" +# 37824 "parsing/parser.ml" in let _endpos__1_ = _endpos__1_inlined4_ in @@ -37607,15 +37828,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1181 "parsing/parser.mly" +# 1260 "parsing/parser.mly" ( wrap_mksig_ext ~loc:_sloc _1 ) -# 37613 "parsing/parser.ml" +# 37834 "parsing/parser.ml" in -# 1942 "parsing/parser.mly" +# 2021 "parsing/parser.mly" ( _1 ) -# 37619 "parsing/parser.ml" +# 37840 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -37639,23 +37860,23 @@ module Tables = struct let _endpos = _endpos__1_ in let _v : (Parsetree.signature_item) = let _1 = let _1 = -# 1928 "parsing/parser.mly" +# 2007 "parsing/parser.mly" ( let (body, ext) = _1 in (Psig_modsubst body, ext) ) -# 37645 "parsing/parser.ml" +# 37866 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1181 "parsing/parser.mly" +# 1260 "parsing/parser.mly" ( wrap_mksig_ext ~loc:_sloc _1 ) -# 37653 "parsing/parser.ml" +# 37874 "parsing/parser.ml" in -# 1942 "parsing/parser.mly" +# 2021 "parsing/parser.mly" ( _1 ) -# 37659 "parsing/parser.ml" +# 37880 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -37741,9 +37962,9 @@ module Tables = struct let attrs2 = let _1 = _1_inlined3 in -# 4472 "parsing/parser.mly" +# 4544 "parsing/parser.mly" ( _1 ) -# 37747 "parsing/parser.ml" +# 37968 "parsing/parser.ml" in let _endpos_attrs2_ = _endpos__1_inlined3_ in @@ -37753,49 +37974,49 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1123 "parsing/parser.mly" +# 1202 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 37759 "parsing/parser.ml" +# 37980 "parsing/parser.ml" in let attrs1 = let _1 = _1_inlined1 in -# 4476 "parsing/parser.mly" +# 4548 "parsing/parser.mly" ( _1 ) -# 37767 "parsing/parser.ml" +# 37988 "parsing/parser.ml" in let _endpos = _endpos_attrs2_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2032 "parsing/parser.mly" +# 2111 "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 ) -# 37781 "parsing/parser.ml" +# 38002 "parsing/parser.ml" in -# 1357 "parsing/parser.mly" +# 1436 "parsing/parser.mly" ( let (x, b) = a in x, b :: bs ) -# 37787 "parsing/parser.ml" +# 38008 "parsing/parser.ml" in -# 2021 "parsing/parser.mly" +# 2100 "parsing/parser.mly" ( _1 ) -# 37793 "parsing/parser.ml" +# 38014 "parsing/parser.ml" in -# 1930 "parsing/parser.mly" +# 2009 "parsing/parser.mly" ( let (ext, l) = _1 in (Psig_recmodule l, ext) ) -# 37799 "parsing/parser.ml" +# 38020 "parsing/parser.ml" in let _endpos__1_ = _endpos_bs_ in @@ -37803,15 +38024,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1181 "parsing/parser.mly" +# 1260 "parsing/parser.mly" ( wrap_mksig_ext ~loc:_sloc _1 ) -# 37809 "parsing/parser.ml" +# 38030 "parsing/parser.ml" in -# 1942 "parsing/parser.mly" +# 2021 "parsing/parser.mly" ( _1 ) -# 37815 "parsing/parser.ml" +# 38036 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -37835,23 +38056,23 @@ module Tables = struct let _endpos = _endpos__1_ in let _v : (Parsetree.signature_item) = let _1 = let _1 = -# 1932 "parsing/parser.mly" +# 2011 "parsing/parser.mly" ( let (body, ext) = _1 in (Psig_modtype body, ext) ) -# 37841 "parsing/parser.ml" +# 38062 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1181 "parsing/parser.mly" +# 1260 "parsing/parser.mly" ( wrap_mksig_ext ~loc:_sloc _1 ) -# 37849 "parsing/parser.ml" +# 38070 "parsing/parser.ml" in -# 1942 "parsing/parser.mly" +# 2021 "parsing/parser.mly" ( _1 ) -# 37855 "parsing/parser.ml" +# 38076 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -37875,23 +38096,23 @@ module Tables = struct let _endpos = _endpos__1_ in let _v : (Parsetree.signature_item) = let _1 = let _1 = -# 1934 "parsing/parser.mly" +# 2013 "parsing/parser.mly" ( let (body, ext) = _1 in (Psig_modtypesubst body, ext) ) -# 37881 "parsing/parser.ml" +# 38102 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1181 "parsing/parser.mly" +# 1260 "parsing/parser.mly" ( wrap_mksig_ext ~loc:_sloc _1 ) -# 37889 "parsing/parser.ml" +# 38110 "parsing/parser.ml" in -# 1942 "parsing/parser.mly" +# 2021 "parsing/parser.mly" ( _1 ) -# 37895 "parsing/parser.ml" +# 38116 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -37915,23 +38136,23 @@ module Tables = struct let _endpos = _endpos__1_ in let _v : (Parsetree.signature_item) = let _1 = let _1 = -# 1936 "parsing/parser.mly" +# 2015 "parsing/parser.mly" ( let (body, ext) = _1 in (Psig_open body, ext) ) -# 37921 "parsing/parser.ml" +# 38142 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1181 "parsing/parser.mly" +# 1260 "parsing/parser.mly" ( wrap_mksig_ext ~loc:_sloc _1 ) -# 37929 "parsing/parser.ml" +# 38150 "parsing/parser.ml" in -# 1942 "parsing/parser.mly" +# 2021 "parsing/parser.mly" ( _1 ) -# 37935 "parsing/parser.ml" +# 38156 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -38008,9 +38229,9 @@ module Tables = struct let cty : (Parsetree.class_type) = Obj.magic cty in let _7 : unit = Obj.magic _7 in let _1_inlined2 : ( -# 937 "parsing/parser.mly" +# 1014 "parsing/parser.mly" (string) -# 38014 "parsing/parser.ml" +# 38235 "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 @@ -38028,9 +38249,9 @@ module Tables = struct let attrs2 = let _1 = _1_inlined3 in -# 4472 "parsing/parser.mly" +# 4544 "parsing/parser.mly" ( _1 ) -# 38034 "parsing/parser.ml" +# 38255 "parsing/parser.ml" in let _endpos_attrs2_ = _endpos__1_inlined3_ in @@ -38040,24 +38261,24 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1123 "parsing/parser.mly" +# 1202 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 38046 "parsing/parser.ml" +# 38267 "parsing/parser.ml" in let attrs1 = let _1 = _1_inlined1 in -# 4476 "parsing/parser.mly" +# 4548 "parsing/parser.mly" ( _1 ) -# 38054 "parsing/parser.ml" +# 38275 "parsing/parser.ml" in let _endpos = _endpos_attrs2_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2379 "parsing/parser.mly" +# 2458 "parsing/parser.mly" ( let attrs = attrs1 @ attrs2 in let loc = make_loc _sloc in @@ -38065,25 +38286,25 @@ module Tables = struct ext, Ci.mk id cty ~virt ~params ~attrs ~loc ~docs ) -# 38069 "parsing/parser.ml" +# 38290 "parsing/parser.ml" in -# 1357 "parsing/parser.mly" +# 1436 "parsing/parser.mly" ( let (x, b) = a in x, b :: bs ) -# 38075 "parsing/parser.ml" +# 38296 "parsing/parser.ml" in -# 2367 "parsing/parser.mly" +# 2446 "parsing/parser.mly" ( _1 ) -# 38081 "parsing/parser.ml" +# 38302 "parsing/parser.ml" in -# 1938 "parsing/parser.mly" +# 2017 "parsing/parser.mly" ( let (ext, l) = _1 in (Psig_class l, ext) ) -# 38087 "parsing/parser.ml" +# 38308 "parsing/parser.ml" in let _endpos__1_ = _endpos_bs_ in @@ -38091,15 +38312,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1181 "parsing/parser.mly" +# 1260 "parsing/parser.mly" ( wrap_mksig_ext ~loc:_sloc _1 ) -# 38097 "parsing/parser.ml" +# 38318 "parsing/parser.ml" in -# 1942 "parsing/parser.mly" +# 2021 "parsing/parser.mly" ( _1 ) -# 38103 "parsing/parser.ml" +# 38324 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -38123,23 +38344,23 @@ module Tables = struct let _endpos = _endpos__1_ in let _v : (Parsetree.signature_item) = let _1 = let _1 = -# 1940 "parsing/parser.mly" +# 2019 "parsing/parser.mly" ( let (ext, l) = _1 in (Psig_class_type l, ext) ) -# 38129 "parsing/parser.ml" +# 38350 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1181 "parsing/parser.mly" +# 1260 "parsing/parser.mly" ( wrap_mksig_ext ~loc:_sloc _1 ) -# 38137 "parsing/parser.ml" +# 38358 "parsing/parser.ml" in -# 1942 "parsing/parser.mly" +# 2021 "parsing/parser.mly" ( _1 ) -# 38143 "parsing/parser.ml" +# 38364 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -38193,22 +38414,22 @@ module Tables = struct let attrs2 = let _1 = _1_inlined1 in -# 4472 "parsing/parser.mly" +# 4544 "parsing/parser.mly" ( _1 ) -# 38199 "parsing/parser.ml" +# 38420 "parsing/parser.ml" in let _endpos_attrs2_ = _endpos__1_inlined1_ in let attrs1 = -# 4476 "parsing/parser.mly" +# 4548 "parsing/parser.mly" ( _1 ) -# 38206 "parsing/parser.ml" +# 38427 "parsing/parser.ml" in let _endpos = _endpos_attrs2_ in let _symbolstartpos = _startpos_is_functor_ in let _sloc = (_symbolstartpos, _endpos) in -# 1779 "parsing/parser.mly" +# 1858 "parsing/parser.mly" ( let attrs = attrs1 @ attrs2 in let loc = make_loc _sloc in @@ -38216,7 +38437,7 @@ module Tables = struct let incl = Incl.mk thing ~attrs ~loc ~docs in is_functor, incl, ext ) -# 38220 "parsing/parser.ml" +# 38441 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos__1_inlined1_, _startpos_is_functor_) in @@ -38224,7 +38445,7 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1944 "parsing/parser.mly" +# 2023 "parsing/parser.mly" ( let is_functor, incl, ext = _1 in let item = if is_functor @@ -38234,7 +38455,7 @@ module Tables = struct in wrap_sig_ext ~loc:_sloc item ext ) -# 38238 "parsing/parser.ml" +# 38459 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -38257,9 +38478,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Constant.t) = -# 4134 "parsing/parser.mly" +# 4206 "parsing/parser.mly" ( Constant.value _1 ) -# 38263 "parsing/parser.ml" +# 38484 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -38282,9 +38503,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Constant.t) = -# 4135 "parsing/parser.mly" +# 4207 "parsing/parser.mly" ( _1 ) -# 38288 "parsing/parser.ml" +# 38509 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -38309,9 +38530,9 @@ module Tables = struct }; } = _menhir_stack in let _2 : ( -# 922 "parsing/parser.mly" +# 999 "parsing/parser.mly" (string * char option) -# 38315 "parsing/parser.ml" +# 38536 "parsing/parser.ml" ) = Obj.magic _2 in let _1 : unit = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in @@ -38322,9 +38543,9 @@ module Tables = struct let _loc__2_ = (_startpos__2_, _endpos__2_) in let _sloc = (_symbolstartpos, _endpos) in -# 4136 "parsing/parser.mly" +# 4208 "parsing/parser.mly" ( unboxed_int _sloc _loc__2_ Negative _2 ) -# 38328 "parsing/parser.ml" +# 38549 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -38349,9 +38570,9 @@ module Tables = struct }; } = _menhir_stack in let _2 : ( -# 899 "parsing/parser.mly" +# 976 "parsing/parser.mly" (string * char option) -# 38355 "parsing/parser.ml" +# 38576 "parsing/parser.ml" ) = Obj.magic _2 in let _1 : unit = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in @@ -38361,9 +38582,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 4137 "parsing/parser.mly" +# 4209 "parsing/parser.mly" ( unboxed_float _sloc Negative _2 ) -# 38367 "parsing/parser.ml" +# 38588 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -38388,9 +38609,9 @@ module Tables = struct }; } = _menhir_stack in let _2 : ( -# 922 "parsing/parser.mly" +# 999 "parsing/parser.mly" (string * char option) -# 38394 "parsing/parser.ml" +# 38615 "parsing/parser.ml" ) = Obj.magic _2 in let _1 : unit = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in @@ -38401,9 +38622,9 @@ module Tables = struct let _loc__2_ = (_startpos__2_, _endpos__2_) in let _sloc = (_symbolstartpos, _endpos) in -# 4138 "parsing/parser.mly" +# 4210 "parsing/parser.mly" ( unboxed_int _sloc _loc__2_ Positive _2 ) -# 38407 "parsing/parser.ml" +# 38628 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -38428,9 +38649,9 @@ module Tables = struct }; } = _menhir_stack in let _2 : ( -# 899 "parsing/parser.mly" +# 976 "parsing/parser.mly" (string * char option) -# 38434 "parsing/parser.ml" +# 38655 "parsing/parser.ml" ) = Obj.magic _2 in let _1 : unit = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in @@ -38440,9 +38661,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 4139 "parsing/parser.mly" +# 4211 "parsing/parser.mly" ( unboxed_float _sloc Positive _2 ) -# 38446 "parsing/parser.ml" +# 38667 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -38465,9 +38686,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Parsetree.constant) = -# 4127 "parsing/parser.mly" +# 4199 "parsing/parser.mly" ( _1 ) -# 38471 "parsing/parser.ml" +# 38692 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -38492,18 +38713,18 @@ module Tables = struct }; } = _menhir_stack in let _2 : ( -# 921 "parsing/parser.mly" +# 998 "parsing/parser.mly" (string * char option) -# 38498 "parsing/parser.ml" +# 38719 "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) = -# 4128 "parsing/parser.mly" +# 4200 "parsing/parser.mly" ( let (n, m) = _2 in Pconst_integer("-" ^ n, m) ) -# 38507 "parsing/parser.ml" +# 38728 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -38528,18 +38749,18 @@ module Tables = struct }; } = _menhir_stack in let _2 : ( -# 898 "parsing/parser.mly" +# 975 "parsing/parser.mly" (string * char option) -# 38534 "parsing/parser.ml" +# 38755 "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) = -# 4129 "parsing/parser.mly" +# 4201 "parsing/parser.mly" ( let (f, m) = _2 in Pconst_float("-" ^ f, m) ) -# 38543 "parsing/parser.ml" +# 38764 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -38564,18 +38785,18 @@ module Tables = struct }; } = _menhir_stack in let _2 : ( -# 921 "parsing/parser.mly" +# 998 "parsing/parser.mly" (string * char option) -# 38570 "parsing/parser.ml" +# 38791 "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) = -# 4130 "parsing/parser.mly" +# 4202 "parsing/parser.mly" ( let (n, m) = _2 in Pconst_integer (n, m) ) -# 38579 "parsing/parser.ml" +# 38800 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -38600,18 +38821,18 @@ module Tables = struct }; } = _menhir_stack in let _2 : ( -# 898 "parsing/parser.mly" +# 975 "parsing/parser.mly" (string * char option) -# 38606 "parsing/parser.ml" +# 38827 "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) = -# 4131 "parsing/parser.mly" +# 4203 "parsing/parser.mly" ( let (f, m) = _2 in Pconst_float(f, m) ) -# 38615 "parsing/parser.ml" +# 38836 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -38652,18 +38873,18 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 3309 "parsing/parser.mly" +# 3376 "parsing/parser.mly" ( let fields, closed = _1 in let closed = match closed with Some () -> Open | None -> Closed in fields, closed ) -# 38660 "parsing/parser.ml" +# 38881 "parsing/parser.ml" in -# 3274 "parsing/parser.mly" +# 3341 "parsing/parser.mly" ( let (fields, closed) = _2 in Ppat_record(fields, closed) ) -# 38667 "parsing/parser.ml" +# 38888 "parsing/parser.ml" in let _endpos__1_ = _endpos__3_ in @@ -38671,15 +38892,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1158 "parsing/parser.mly" +# 1237 "parsing/parser.mly" ( mkpat ~loc:_sloc _1 ) -# 38677 "parsing/parser.ml" +# 38898 "parsing/parser.ml" in -# 3288 "parsing/parser.mly" +# 3355 "parsing/parser.mly" ( _1 ) -# 38683 "parsing/parser.ml" +# 38904 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -38720,19 +38941,19 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 3309 "parsing/parser.mly" +# 3376 "parsing/parser.mly" ( let fields, closed = _1 in let closed = match closed with Some () -> Open | None -> Closed in fields, closed ) -# 38728 "parsing/parser.ml" +# 38949 "parsing/parser.ml" in let _loc__3_ = (_startpos__3_, _endpos__3_) in let _loc__1_ = (_startpos__1_, _endpos__1_) in -# 3277 "parsing/parser.mly" +# 3344 "parsing/parser.mly" ( unclosed "{" _loc__1_ "}" _loc__3_ ) -# 38736 "parsing/parser.ml" +# 38957 "parsing/parser.ml" in let _endpos__1_ = _endpos__3_ in @@ -38740,15 +38961,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1158 "parsing/parser.mly" +# 1237 "parsing/parser.mly" ( mkpat ~loc:_sloc _1 ) -# 38746 "parsing/parser.ml" +# 38967 "parsing/parser.ml" in -# 3288 "parsing/parser.mly" +# 3355 "parsing/parser.mly" ( _1 ) -# 38752 "parsing/parser.ml" +# 38973 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -38787,15 +39008,15 @@ module Tables = struct let _v : (Parsetree.pattern) = let _1 = let _1 = let _2 = -# 3303 "parsing/parser.mly" +# 3370 "parsing/parser.mly" ( ps ) -# 38793 "parsing/parser.ml" +# 39014 "parsing/parser.ml" in let _loc__3_ = (_startpos__3_, _endpos__3_) in -# 3279 "parsing/parser.mly" +# 3346 "parsing/parser.mly" ( fst (mktailpat _loc__3_ _2) ) -# 38799 "parsing/parser.ml" +# 39020 "parsing/parser.ml" in let _endpos__1_ = _endpos__3_ in @@ -38803,15 +39024,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1158 "parsing/parser.mly" +# 1237 "parsing/parser.mly" ( mkpat ~loc:_sloc _1 ) -# 38809 "parsing/parser.ml" +# 39030 "parsing/parser.ml" in -# 3288 "parsing/parser.mly" +# 3355 "parsing/parser.mly" ( _1 ) -# 38815 "parsing/parser.ml" +# 39036 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -38850,16 +39071,16 @@ module Tables = struct let _v : (Parsetree.pattern) = let _1 = let _1 = let _2 = -# 3303 "parsing/parser.mly" +# 3370 "parsing/parser.mly" ( ps ) -# 38856 "parsing/parser.ml" +# 39077 "parsing/parser.ml" in let _loc__3_ = (_startpos__3_, _endpos__3_) in let _loc__1_ = (_startpos__1_, _endpos__1_) in -# 3281 "parsing/parser.mly" +# 3348 "parsing/parser.mly" ( unclosed "[" _loc__1_ "]" _loc__3_ ) -# 38863 "parsing/parser.ml" +# 39084 "parsing/parser.ml" in let _endpos__1_ = _endpos__3_ in @@ -38867,15 +39088,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1158 "parsing/parser.mly" +# 1237 "parsing/parser.mly" ( mkpat ~loc:_sloc _1 ) -# 38873 "parsing/parser.ml" +# 39094 "parsing/parser.ml" in -# 3288 "parsing/parser.mly" +# 3355 "parsing/parser.mly" ( _1 ) -# 38879 "parsing/parser.ml" +# 39100 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -38916,30 +39137,30 @@ module Tables = struct let _1 = let _1 = let _2 = -# 3303 "parsing/parser.mly" +# 3370 "parsing/parser.mly" ( ps ) -# 38922 "parsing/parser.ml" +# 39143 "parsing/parser.ml" in -# 2763 "parsing/parser.mly" +# 2845 "parsing/parser.mly" ( Generic_array.Simple.Literal _2 ) -# 38927 "parsing/parser.ml" +# 39148 "parsing/parser.ml" in -# 2787 "parsing/parser.mly" +# 2869 "parsing/parser.mly" ( _1 ) -# 38933 "parsing/parser.ml" +# 39154 "parsing/parser.ml" in -# 3283 "parsing/parser.mly" +# 3350 "parsing/parser.mly" ( Generic_array.Pattern.to_ast "[|" "|]" (fun elts -> Ppat_array elts) _1 ) -# 38943 "parsing/parser.ml" +# 39164 "parsing/parser.ml" in let _endpos__1_ = _endpos__3_ in @@ -38947,15 +39168,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1158 "parsing/parser.mly" +# 1237 "parsing/parser.mly" ( mkpat ~loc:_sloc _1 ) -# 38953 "parsing/parser.ml" +# 39174 "parsing/parser.ml" in -# 3288 "parsing/parser.mly" +# 3355 "parsing/parser.mly" ( _1 ) -# 38959 "parsing/parser.ml" +# 39180 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -38996,32 +39217,32 @@ module Tables = struct let _1 = let _1 = let _2 = -# 3303 "parsing/parser.mly" +# 3370 "parsing/parser.mly" ( ps ) -# 39002 "parsing/parser.ml" +# 39223 "parsing/parser.ml" in let _loc__3_ = (_startpos__3_, _endpos__3_) in let _loc__1_ = (_startpos__1_, _endpos__1_) in -# 2765 "parsing/parser.mly" +# 2847 "parsing/parser.mly" ( Generic_array.Simple.Unclosed(_loc__1_,_loc__3_) ) -# 39009 "parsing/parser.ml" +# 39230 "parsing/parser.ml" in -# 2787 "parsing/parser.mly" +# 2869 "parsing/parser.mly" ( _1 ) -# 39015 "parsing/parser.ml" +# 39236 "parsing/parser.ml" in -# 3283 "parsing/parser.mly" +# 3350 "parsing/parser.mly" ( Generic_array.Pattern.to_ast "[|" "|]" (fun elts -> Ppat_array elts) _1 ) -# 39025 "parsing/parser.ml" +# 39246 "parsing/parser.ml" in let _endpos__1_ = _endpos__3_ in @@ -39029,15 +39250,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1158 "parsing/parser.mly" +# 1237 "parsing/parser.mly" ( mkpat ~loc:_sloc _1 ) -# 39035 "parsing/parser.ml" +# 39256 "parsing/parser.ml" in -# 3288 "parsing/parser.mly" +# 3355 "parsing/parser.mly" ( _1 ) -# 39041 "parsing/parser.ml" +# 39262 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -39070,24 +39291,24 @@ module Tables = struct let _1 = let _1 = let _1 = -# 2767 "parsing/parser.mly" +# 2849 "parsing/parser.mly" ( Generic_array.Simple.Literal [] ) -# 39076 "parsing/parser.ml" +# 39297 "parsing/parser.ml" in -# 2787 "parsing/parser.mly" +# 2869 "parsing/parser.mly" ( _1 ) -# 39081 "parsing/parser.ml" +# 39302 "parsing/parser.ml" in -# 3283 "parsing/parser.mly" +# 3350 "parsing/parser.mly" ( Generic_array.Pattern.to_ast "[|" "|]" (fun elts -> Ppat_array elts) _1 ) -# 39091 "parsing/parser.ml" +# 39312 "parsing/parser.ml" in let _endpos__1_ = _endpos__2_ in @@ -39095,15 +39316,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1158 "parsing/parser.mly" +# 1237 "parsing/parser.mly" ( mkpat ~loc:_sloc _1 ) -# 39101 "parsing/parser.ml" +# 39322 "parsing/parser.ml" in -# 3288 "parsing/parser.mly" +# 3355 "parsing/parser.mly" ( _1 ) -# 39107 "parsing/parser.ml" +# 39328 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -39142,20 +39363,20 @@ module Tables = struct let _v : (Parsetree.pattern) = let _1 = let _1 = let _2 = -# 3303 "parsing/parser.mly" +# 3370 "parsing/parser.mly" ( ps ) -# 39148 "parsing/parser.ml" +# 39369 "parsing/parser.ml" in -# 2763 "parsing/parser.mly" +# 2845 "parsing/parser.mly" ( Generic_array.Simple.Literal _2 ) -# 39153 "parsing/parser.ml" +# 39374 "parsing/parser.ml" in -# 2787 "parsing/parser.mly" +# 2869 "parsing/parser.mly" ( _1 ) -# 39159 "parsing/parser.ml" +# 39380 "parsing/parser.ml" in let _endpos__1_ = _endpos__3_ in @@ -39163,13 +39384,13 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 3290 "parsing/parser.mly" +# 3357 "parsing/parser.mly" ( Generic_array.Pattern.to_ast "[:" ":]" (ppat_iarray _sloc) _1 ) -# 39173 "parsing/parser.ml" +# 39394 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -39208,22 +39429,22 @@ module Tables = struct let _v : (Parsetree.pattern) = let _1 = let _1 = let _2 = -# 3303 "parsing/parser.mly" +# 3370 "parsing/parser.mly" ( ps ) -# 39214 "parsing/parser.ml" +# 39435 "parsing/parser.ml" in let _loc__3_ = (_startpos__3_, _endpos__3_) in let _loc__1_ = (_startpos__1_, _endpos__1_) in -# 2765 "parsing/parser.mly" +# 2847 "parsing/parser.mly" ( Generic_array.Simple.Unclosed(_loc__1_,_loc__3_) ) -# 39221 "parsing/parser.ml" +# 39442 "parsing/parser.ml" in -# 2787 "parsing/parser.mly" +# 2869 "parsing/parser.mly" ( _1 ) -# 39227 "parsing/parser.ml" +# 39448 "parsing/parser.ml" in let _endpos__1_ = _endpos__3_ in @@ -39231,13 +39452,13 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 3290 "parsing/parser.mly" +# 3357 "parsing/parser.mly" ( Generic_array.Pattern.to_ast "[:" ":]" (ppat_iarray _sloc) _1 ) -# 39241 "parsing/parser.ml" +# 39462 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -39268,14 +39489,14 @@ module Tables = struct let _endpos = _endpos__2_ in let _v : (Parsetree.pattern) = let _1 = let _1 = -# 2767 "parsing/parser.mly" +# 2849 "parsing/parser.mly" ( Generic_array.Simple.Literal [] ) -# 39274 "parsing/parser.ml" +# 39495 "parsing/parser.ml" in -# 2787 "parsing/parser.mly" +# 2869 "parsing/parser.mly" ( _1 ) -# 39279 "parsing/parser.ml" +# 39500 "parsing/parser.ml" in let _endpos__1_ = _endpos__2_ in @@ -39283,13 +39504,13 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 3290 "parsing/parser.mly" +# 3357 "parsing/parser.mly" ( Generic_array.Pattern.to_ast "[:" ":]" (ppat_iarray _sloc) _1 ) -# 39293 "parsing/parser.ml" +# 39514 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -39329,9 +39550,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2657 "parsing/parser.mly" +# 2736 "parsing/parser.mly" ( reloc_exp ~loc:_sloc _2 ) -# 39335 "parsing/parser.ml" +# 39556 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -39370,9 +39591,9 @@ module Tables = struct let _v : (Parsetree.expression) = let _loc__3_ = (_startpos__3_, _endpos__3_) in let _loc__1_ = (_startpos__1_, _endpos__1_) in -# 2659 "parsing/parser.mly" +# 2738 "parsing/parser.mly" ( unclosed "(" _loc__1_ ")" _loc__3_ ) -# 39376 "parsing/parser.ml" +# 39597 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -39419,9 +39640,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2661 "parsing/parser.mly" +# 2740 "parsing/parser.mly" ( mkexp_constraint ~loc:_sloc _2 _3 ) -# 39425 "parsing/parser.ml" +# 39646 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -39473,14 +39694,14 @@ module Tables = struct let _endpos = _endpos__5_ in let _v : (Parsetree.expression) = let _1 = let r = -# 2662 "parsing/parser.mly" +# 2741 "parsing/parser.mly" ( None ) -# 39479 "parsing/parser.ml" +# 39700 "parsing/parser.ml" in -# 2541 "parsing/parser.mly" +# 2620 "parsing/parser.mly" ( array, d, Paren, i, r ) -# 39484 "parsing/parser.ml" +# 39705 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos__5_, _startpos_array_) in @@ -39488,9 +39709,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2663 "parsing/parser.mly" +# 2742 "parsing/parser.mly" ( mk_indexop_expr builtin_indexing_operators ~loc:_sloc _1 ) -# 39494 "parsing/parser.ml" +# 39715 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -39542,14 +39763,14 @@ module Tables = struct let _endpos = _endpos__5_ in let _v : (Parsetree.expression) = let _1 = let r = -# 2662 "parsing/parser.mly" +# 2741 "parsing/parser.mly" ( None ) -# 39548 "parsing/parser.ml" +# 39769 "parsing/parser.ml" in -# 2543 "parsing/parser.mly" +# 2622 "parsing/parser.mly" ( array, d, Brace, i, r ) -# 39553 "parsing/parser.ml" +# 39774 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos__5_, _startpos_array_) in @@ -39557,9 +39778,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2663 "parsing/parser.mly" +# 2742 "parsing/parser.mly" ( mk_indexop_expr builtin_indexing_operators ~loc:_sloc _1 ) -# 39563 "parsing/parser.ml" +# 39784 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -39611,14 +39832,14 @@ module Tables = struct let _endpos = _endpos__5_ in let _v : (Parsetree.expression) = let _1 = let r = -# 2662 "parsing/parser.mly" +# 2741 "parsing/parser.mly" ( None ) -# 39617 "parsing/parser.ml" +# 39838 "parsing/parser.ml" in -# 2545 "parsing/parser.mly" +# 2624 "parsing/parser.mly" ( array, d, Bracket, i, r ) -# 39622 "parsing/parser.ml" +# 39843 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos__5_, _startpos_array_) in @@ -39626,9 +39847,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2663 "parsing/parser.mly" +# 2742 "parsing/parser.mly" ( mk_indexop_expr builtin_indexing_operators ~loc:_sloc _1 ) -# 39632 "parsing/parser.ml" +# 39853 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -39674,9 +39895,9 @@ module Tables = struct let es : (Parsetree.expression list) = Obj.magic es in let _3 : unit = Obj.magic _3 in let _2 : ( -# 916 "parsing/parser.mly" +# 993 "parsing/parser.mly" (string) -# 39680 "parsing/parser.ml" +# 39901 "parsing/parser.ml" ) = Obj.magic _2 in let array : (Parsetree.expression) = Obj.magic array in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in @@ -39684,31 +39905,31 @@ module Tables = struct let _endpos = _endpos__5_ in let _v : (Parsetree.expression) = let _1 = let r = -# 2666 "parsing/parser.mly" +# 2745 "parsing/parser.mly" ( None ) -# 39690 "parsing/parser.ml" +# 39911 "parsing/parser.ml" in let i = -# 3119 "parsing/parser.mly" +# 3186 "parsing/parser.mly" ( es ) -# 39695 "parsing/parser.ml" +# 39916 "parsing/parser.ml" in let d = let _1 = # 124 "" ( None ) -# 39701 "parsing/parser.ml" +# 39922 "parsing/parser.ml" in -# 2557 "parsing/parser.mly" +# 2636 "parsing/parser.mly" ( _1, _2 ) -# 39706 "parsing/parser.ml" +# 39927 "parsing/parser.ml" in -# 2541 "parsing/parser.mly" +# 2620 "parsing/parser.mly" ( array, d, Paren, i, r ) -# 39712 "parsing/parser.ml" +# 39933 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos__5_, _startpos_array_) in @@ -39716,9 +39937,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2667 "parsing/parser.mly" +# 2746 "parsing/parser.mly" ( mk_indexop_expr user_indexing_operators ~loc:_sloc _1 ) -# 39722 "parsing/parser.ml" +# 39943 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -39776,9 +39997,9 @@ module Tables = struct let es : (Parsetree.expression list) = Obj.magic es in let _3 : unit = Obj.magic _3 in let _2 : ( -# 916 "parsing/parser.mly" +# 993 "parsing/parser.mly" (string) -# 39782 "parsing/parser.ml" +# 40003 "parsing/parser.ml" ) = Obj.magic _2 in let _2_inlined1 : (Longident.t) = Obj.magic _2_inlined1 in let _1 : unit = Obj.magic _1 in @@ -39788,39 +40009,39 @@ module Tables = struct let _endpos = _endpos__5_ in let _v : (Parsetree.expression) = let _1 = let r = -# 2666 "parsing/parser.mly" +# 2745 "parsing/parser.mly" ( None ) -# 39794 "parsing/parser.ml" +# 40015 "parsing/parser.ml" in let i = -# 3119 "parsing/parser.mly" +# 3186 "parsing/parser.mly" ( es ) -# 39799 "parsing/parser.ml" +# 40020 "parsing/parser.ml" in let d = let _1 = let _2 = _2_inlined1 in let x = -# 2557 "parsing/parser.mly" +# 2636 "parsing/parser.mly" (_2) -# 39807 "parsing/parser.ml" +# 40028 "parsing/parser.ml" in # 126 "" ( Some x ) -# 39812 "parsing/parser.ml" +# 40033 "parsing/parser.ml" in -# 2557 "parsing/parser.mly" +# 2636 "parsing/parser.mly" ( _1, _2 ) -# 39818 "parsing/parser.ml" +# 40039 "parsing/parser.ml" in -# 2541 "parsing/parser.mly" +# 2620 "parsing/parser.mly" ( array, d, Paren, i, r ) -# 39824 "parsing/parser.ml" +# 40045 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos__5_, _startpos_array_) in @@ -39828,9 +40049,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2667 "parsing/parser.mly" +# 2746 "parsing/parser.mly" ( mk_indexop_expr user_indexing_operators ~loc:_sloc _1 ) -# 39834 "parsing/parser.ml" +# 40055 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -39876,9 +40097,9 @@ module Tables = struct let es : (Parsetree.expression list) = Obj.magic es in let _3 : unit = Obj.magic _3 in let _2 : ( -# 916 "parsing/parser.mly" +# 993 "parsing/parser.mly" (string) -# 39882 "parsing/parser.ml" +# 40103 "parsing/parser.ml" ) = Obj.magic _2 in let array : (Parsetree.expression) = Obj.magic array in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in @@ -39886,31 +40107,31 @@ module Tables = struct let _endpos = _endpos__5_ in let _v : (Parsetree.expression) = let _1 = let r = -# 2666 "parsing/parser.mly" +# 2745 "parsing/parser.mly" ( None ) -# 39892 "parsing/parser.ml" +# 40113 "parsing/parser.ml" in let i = -# 3119 "parsing/parser.mly" +# 3186 "parsing/parser.mly" ( es ) -# 39897 "parsing/parser.ml" +# 40118 "parsing/parser.ml" in let d = let _1 = # 124 "" ( None ) -# 39903 "parsing/parser.ml" +# 40124 "parsing/parser.ml" in -# 2557 "parsing/parser.mly" +# 2636 "parsing/parser.mly" ( _1, _2 ) -# 39908 "parsing/parser.ml" +# 40129 "parsing/parser.ml" in -# 2543 "parsing/parser.mly" +# 2622 "parsing/parser.mly" ( array, d, Brace, i, r ) -# 39914 "parsing/parser.ml" +# 40135 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos__5_, _startpos_array_) in @@ -39918,9 +40139,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2667 "parsing/parser.mly" +# 2746 "parsing/parser.mly" ( mk_indexop_expr user_indexing_operators ~loc:_sloc _1 ) -# 39924 "parsing/parser.ml" +# 40145 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -39978,9 +40199,9 @@ module Tables = struct let es : (Parsetree.expression list) = Obj.magic es in let _3 : unit = Obj.magic _3 in let _2 : ( -# 916 "parsing/parser.mly" +# 993 "parsing/parser.mly" (string) -# 39984 "parsing/parser.ml" +# 40205 "parsing/parser.ml" ) = Obj.magic _2 in let _2_inlined1 : (Longident.t) = Obj.magic _2_inlined1 in let _1 : unit = Obj.magic _1 in @@ -39990,39 +40211,39 @@ module Tables = struct let _endpos = _endpos__5_ in let _v : (Parsetree.expression) = let _1 = let r = -# 2666 "parsing/parser.mly" +# 2745 "parsing/parser.mly" ( None ) -# 39996 "parsing/parser.ml" +# 40217 "parsing/parser.ml" in let i = -# 3119 "parsing/parser.mly" +# 3186 "parsing/parser.mly" ( es ) -# 40001 "parsing/parser.ml" +# 40222 "parsing/parser.ml" in let d = let _1 = let _2 = _2_inlined1 in let x = -# 2557 "parsing/parser.mly" +# 2636 "parsing/parser.mly" (_2) -# 40009 "parsing/parser.ml" +# 40230 "parsing/parser.ml" in # 126 "" ( Some x ) -# 40014 "parsing/parser.ml" +# 40235 "parsing/parser.ml" in -# 2557 "parsing/parser.mly" +# 2636 "parsing/parser.mly" ( _1, _2 ) -# 40020 "parsing/parser.ml" +# 40241 "parsing/parser.ml" in -# 2543 "parsing/parser.mly" +# 2622 "parsing/parser.mly" ( array, d, Brace, i, r ) -# 40026 "parsing/parser.ml" +# 40247 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos__5_, _startpos_array_) in @@ -40030,9 +40251,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2667 "parsing/parser.mly" +# 2746 "parsing/parser.mly" ( mk_indexop_expr user_indexing_operators ~loc:_sloc _1 ) -# 40036 "parsing/parser.ml" +# 40257 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -40078,9 +40299,9 @@ module Tables = struct let es : (Parsetree.expression list) = Obj.magic es in let _3 : unit = Obj.magic _3 in let _2 : ( -# 916 "parsing/parser.mly" +# 993 "parsing/parser.mly" (string) -# 40084 "parsing/parser.ml" +# 40305 "parsing/parser.ml" ) = Obj.magic _2 in let array : (Parsetree.expression) = Obj.magic array in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in @@ -40088,31 +40309,31 @@ module Tables = struct let _endpos = _endpos__5_ in let _v : (Parsetree.expression) = let _1 = let r = -# 2666 "parsing/parser.mly" +# 2745 "parsing/parser.mly" ( None ) -# 40094 "parsing/parser.ml" +# 40315 "parsing/parser.ml" in let i = -# 3119 "parsing/parser.mly" +# 3186 "parsing/parser.mly" ( es ) -# 40099 "parsing/parser.ml" +# 40320 "parsing/parser.ml" in let d = let _1 = # 124 "" ( None ) -# 40105 "parsing/parser.ml" +# 40326 "parsing/parser.ml" in -# 2557 "parsing/parser.mly" +# 2636 "parsing/parser.mly" ( _1, _2 ) -# 40110 "parsing/parser.ml" +# 40331 "parsing/parser.ml" in -# 2545 "parsing/parser.mly" +# 2624 "parsing/parser.mly" ( array, d, Bracket, i, r ) -# 40116 "parsing/parser.ml" +# 40337 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos__5_, _startpos_array_) in @@ -40120,9 +40341,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2667 "parsing/parser.mly" +# 2746 "parsing/parser.mly" ( mk_indexop_expr user_indexing_operators ~loc:_sloc _1 ) -# 40126 "parsing/parser.ml" +# 40347 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -40180,9 +40401,9 @@ module Tables = struct let es : (Parsetree.expression list) = Obj.magic es in let _3 : unit = Obj.magic _3 in let _2 : ( -# 916 "parsing/parser.mly" +# 993 "parsing/parser.mly" (string) -# 40186 "parsing/parser.ml" +# 40407 "parsing/parser.ml" ) = Obj.magic _2 in let _2_inlined1 : (Longident.t) = Obj.magic _2_inlined1 in let _1 : unit = Obj.magic _1 in @@ -40192,39 +40413,39 @@ module Tables = struct let _endpos = _endpos__5_ in let _v : (Parsetree.expression) = let _1 = let r = -# 2666 "parsing/parser.mly" +# 2745 "parsing/parser.mly" ( None ) -# 40198 "parsing/parser.ml" +# 40419 "parsing/parser.ml" in let i = -# 3119 "parsing/parser.mly" +# 3186 "parsing/parser.mly" ( es ) -# 40203 "parsing/parser.ml" +# 40424 "parsing/parser.ml" in let d = let _1 = let _2 = _2_inlined1 in let x = -# 2557 "parsing/parser.mly" +# 2636 "parsing/parser.mly" (_2) -# 40211 "parsing/parser.ml" +# 40432 "parsing/parser.ml" in # 126 "" ( Some x ) -# 40216 "parsing/parser.ml" +# 40437 "parsing/parser.ml" in -# 2557 "parsing/parser.mly" +# 2636 "parsing/parser.mly" ( _1, _2 ) -# 40222 "parsing/parser.ml" +# 40443 "parsing/parser.ml" in -# 2545 "parsing/parser.mly" +# 2624 "parsing/parser.mly" ( array, d, Bracket, i, r ) -# 40228 "parsing/parser.ml" +# 40449 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos__5_, _startpos_array_) in @@ -40232,9 +40453,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2667 "parsing/parser.mly" +# 2746 "parsing/parser.mly" ( mk_indexop_expr user_indexing_operators ~loc:_sloc _1 ) -# 40238 "parsing/parser.ml" +# 40459 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -40288,15 +40509,15 @@ module Tables = struct let _loc__p_ = (_startpos__p_, _endpos__p_) in let _loc__e_ = (_startpos__e_, _endpos__e_) in -# 2550 "parsing/parser.mly" +# 2629 "parsing/parser.mly" ( indexop_unclosed_error _loc__p_ Paren _loc__e_ ) -# 40294 "parsing/parser.ml" +# 40515 "parsing/parser.ml" in -# 2668 "parsing/parser.mly" +# 2747 "parsing/parser.mly" ( _1 ) -# 40300 "parsing/parser.ml" +# 40521 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -40350,15 +40571,15 @@ module Tables = struct let _loc__p_ = (_startpos__p_, _endpos__p_) in let _loc__e_ = (_startpos__e_, _endpos__e_) in -# 2552 "parsing/parser.mly" +# 2631 "parsing/parser.mly" ( indexop_unclosed_error _loc__p_ Brace _loc__e_ ) -# 40356 "parsing/parser.ml" +# 40577 "parsing/parser.ml" in -# 2668 "parsing/parser.mly" +# 2747 "parsing/parser.mly" ( _1 ) -# 40362 "parsing/parser.ml" +# 40583 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -40412,15 +40633,15 @@ module Tables = struct let _loc__p_ = (_startpos__p_, _endpos__p_) in let _loc__e_ = (_startpos__e_, _endpos__e_) in -# 2554 "parsing/parser.mly" +# 2633 "parsing/parser.mly" ( indexop_unclosed_error _loc__p_ Bracket _loc__e_ ) -# 40418 "parsing/parser.ml" +# 40639 "parsing/parser.ml" in -# 2668 "parsing/parser.mly" +# 2747 "parsing/parser.mly" ( _1 ) -# 40424 "parsing/parser.ml" +# 40645 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -40466,9 +40687,9 @@ module Tables = struct let es : (Parsetree.expression list) = Obj.magic es in let _p : unit = Obj.magic _p in let _2 : ( -# 916 "parsing/parser.mly" +# 993 "parsing/parser.mly" (string) -# 40472 "parsing/parser.ml" +# 40693 "parsing/parser.ml" ) = Obj.magic _2 in let _1 : (Parsetree.expression) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in @@ -40476,34 +40697,34 @@ module Tables = struct let _endpos = _endpos__e_ in let _v : (Parsetree.expression) = let _1 = let _4 = -# 3119 "parsing/parser.mly" +# 3186 "parsing/parser.mly" ( es ) -# 40482 "parsing/parser.ml" +# 40703 "parsing/parser.ml" in let _2 = let _1 = # 124 "" ( None ) -# 40488 "parsing/parser.ml" +# 40709 "parsing/parser.ml" in -# 2557 "parsing/parser.mly" +# 2636 "parsing/parser.mly" ( _1, _2 ) -# 40493 "parsing/parser.ml" +# 40714 "parsing/parser.ml" in let _loc__p_ = (_startpos__p_, _endpos__p_) in let _loc__e_ = (_startpos__e_, _endpos__e_) in -# 2550 "parsing/parser.mly" +# 2629 "parsing/parser.mly" ( indexop_unclosed_error _loc__p_ Paren _loc__e_ ) -# 40501 "parsing/parser.ml" +# 40722 "parsing/parser.ml" in -# 2669 "parsing/parser.mly" +# 2748 "parsing/parser.mly" ( _1 ) -# 40507 "parsing/parser.ml" +# 40728 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -40561,9 +40782,9 @@ module Tables = struct let es : (Parsetree.expression list) = Obj.magic es in let _p : unit = Obj.magic _p in let _2 : ( -# 916 "parsing/parser.mly" +# 993 "parsing/parser.mly" (string) -# 40567 "parsing/parser.ml" +# 40788 "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 @@ -40573,42 +40794,42 @@ module Tables = struct let _endpos = _endpos__e_ in let _v : (Parsetree.expression) = let _1 = let _4 = -# 3119 "parsing/parser.mly" +# 3186 "parsing/parser.mly" ( es ) -# 40579 "parsing/parser.ml" +# 40800 "parsing/parser.ml" in let _2 = let _1 = let _2 = _2_inlined1 in let x = -# 2557 "parsing/parser.mly" +# 2636 "parsing/parser.mly" (_2) -# 40587 "parsing/parser.ml" +# 40808 "parsing/parser.ml" in # 126 "" ( Some x ) -# 40592 "parsing/parser.ml" +# 40813 "parsing/parser.ml" in -# 2557 "parsing/parser.mly" +# 2636 "parsing/parser.mly" ( _1, _2 ) -# 40598 "parsing/parser.ml" +# 40819 "parsing/parser.ml" in let _loc__p_ = (_startpos__p_, _endpos__p_) in let _loc__e_ = (_startpos__e_, _endpos__e_) in -# 2550 "parsing/parser.mly" +# 2629 "parsing/parser.mly" ( indexop_unclosed_error _loc__p_ Paren _loc__e_ ) -# 40606 "parsing/parser.ml" +# 40827 "parsing/parser.ml" in -# 2669 "parsing/parser.mly" +# 2748 "parsing/parser.mly" ( _1 ) -# 40612 "parsing/parser.ml" +# 40833 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -40654,9 +40875,9 @@ module Tables = struct let es : (Parsetree.expression list) = Obj.magic es in let _p : unit = Obj.magic _p in let _2 : ( -# 916 "parsing/parser.mly" +# 993 "parsing/parser.mly" (string) -# 40660 "parsing/parser.ml" +# 40881 "parsing/parser.ml" ) = Obj.magic _2 in let _1 : (Parsetree.expression) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in @@ -40664,34 +40885,34 @@ module Tables = struct let _endpos = _endpos__e_ in let _v : (Parsetree.expression) = let _1 = let _4 = -# 3119 "parsing/parser.mly" +# 3186 "parsing/parser.mly" ( es ) -# 40670 "parsing/parser.ml" +# 40891 "parsing/parser.ml" in let _2 = let _1 = # 124 "" ( None ) -# 40676 "parsing/parser.ml" +# 40897 "parsing/parser.ml" in -# 2557 "parsing/parser.mly" +# 2636 "parsing/parser.mly" ( _1, _2 ) -# 40681 "parsing/parser.ml" +# 40902 "parsing/parser.ml" in let _loc__p_ = (_startpos__p_, _endpos__p_) in let _loc__e_ = (_startpos__e_, _endpos__e_) in -# 2552 "parsing/parser.mly" +# 2631 "parsing/parser.mly" ( indexop_unclosed_error _loc__p_ Brace _loc__e_ ) -# 40689 "parsing/parser.ml" +# 40910 "parsing/parser.ml" in -# 2669 "parsing/parser.mly" +# 2748 "parsing/parser.mly" ( _1 ) -# 40695 "parsing/parser.ml" +# 40916 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -40749,9 +40970,9 @@ module Tables = struct let es : (Parsetree.expression list) = Obj.magic es in let _p : unit = Obj.magic _p in let _2 : ( -# 916 "parsing/parser.mly" +# 993 "parsing/parser.mly" (string) -# 40755 "parsing/parser.ml" +# 40976 "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 @@ -40761,42 +40982,42 @@ module Tables = struct let _endpos = _endpos__e_ in let _v : (Parsetree.expression) = let _1 = let _4 = -# 3119 "parsing/parser.mly" +# 3186 "parsing/parser.mly" ( es ) -# 40767 "parsing/parser.ml" +# 40988 "parsing/parser.ml" in let _2 = let _1 = let _2 = _2_inlined1 in let x = -# 2557 "parsing/parser.mly" +# 2636 "parsing/parser.mly" (_2) -# 40775 "parsing/parser.ml" +# 40996 "parsing/parser.ml" in # 126 "" ( Some x ) -# 40780 "parsing/parser.ml" +# 41001 "parsing/parser.ml" in -# 2557 "parsing/parser.mly" +# 2636 "parsing/parser.mly" ( _1, _2 ) -# 40786 "parsing/parser.ml" +# 41007 "parsing/parser.ml" in let _loc__p_ = (_startpos__p_, _endpos__p_) in let _loc__e_ = (_startpos__e_, _endpos__e_) in -# 2552 "parsing/parser.mly" +# 2631 "parsing/parser.mly" ( indexop_unclosed_error _loc__p_ Brace _loc__e_ ) -# 40794 "parsing/parser.ml" +# 41015 "parsing/parser.ml" in -# 2669 "parsing/parser.mly" +# 2748 "parsing/parser.mly" ( _1 ) -# 40800 "parsing/parser.ml" +# 41021 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -40842,9 +41063,9 @@ module Tables = struct let es : (Parsetree.expression list) = Obj.magic es in let _p : unit = Obj.magic _p in let _2 : ( -# 916 "parsing/parser.mly" +# 993 "parsing/parser.mly" (string) -# 40848 "parsing/parser.ml" +# 41069 "parsing/parser.ml" ) = Obj.magic _2 in let _1 : (Parsetree.expression) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in @@ -40852,34 +41073,34 @@ module Tables = struct let _endpos = _endpos__e_ in let _v : (Parsetree.expression) = let _1 = let _4 = -# 3119 "parsing/parser.mly" +# 3186 "parsing/parser.mly" ( es ) -# 40858 "parsing/parser.ml" +# 41079 "parsing/parser.ml" in let _2 = let _1 = # 124 "" ( None ) -# 40864 "parsing/parser.ml" +# 41085 "parsing/parser.ml" in -# 2557 "parsing/parser.mly" +# 2636 "parsing/parser.mly" ( _1, _2 ) -# 40869 "parsing/parser.ml" +# 41090 "parsing/parser.ml" in let _loc__p_ = (_startpos__p_, _endpos__p_) in let _loc__e_ = (_startpos__e_, _endpos__e_) in -# 2554 "parsing/parser.mly" +# 2633 "parsing/parser.mly" ( indexop_unclosed_error _loc__p_ Bracket _loc__e_ ) -# 40877 "parsing/parser.ml" +# 41098 "parsing/parser.ml" in -# 2669 "parsing/parser.mly" +# 2748 "parsing/parser.mly" ( _1 ) -# 40883 "parsing/parser.ml" +# 41104 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -40937,9 +41158,9 @@ module Tables = struct let es : (Parsetree.expression list) = Obj.magic es in let _p : unit = Obj.magic _p in let _2 : ( -# 916 "parsing/parser.mly" +# 993 "parsing/parser.mly" (string) -# 40943 "parsing/parser.ml" +# 41164 "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 @@ -40949,42 +41170,42 @@ module Tables = struct let _endpos = _endpos__e_ in let _v : (Parsetree.expression) = let _1 = let _4 = -# 3119 "parsing/parser.mly" +# 3186 "parsing/parser.mly" ( es ) -# 40955 "parsing/parser.ml" +# 41176 "parsing/parser.ml" in let _2 = let _1 = let _2 = _2_inlined1 in let x = -# 2557 "parsing/parser.mly" +# 2636 "parsing/parser.mly" (_2) -# 40963 "parsing/parser.ml" +# 41184 "parsing/parser.ml" in # 126 "" ( Some x ) -# 40968 "parsing/parser.ml" +# 41189 "parsing/parser.ml" in -# 2557 "parsing/parser.mly" +# 2636 "parsing/parser.mly" ( _1, _2 ) -# 40974 "parsing/parser.ml" +# 41195 "parsing/parser.ml" in let _loc__p_ = (_startpos__p_, _endpos__p_) in let _loc__e_ = (_startpos__e_, _endpos__e_) in -# 2554 "parsing/parser.mly" +# 2633 "parsing/parser.mly" ( indexop_unclosed_error _loc__p_ Bracket _loc__e_ ) -# 40982 "parsing/parser.ml" +# 41203 "parsing/parser.ml" in -# 2669 "parsing/parser.mly" +# 2748 "parsing/parser.mly" ( _1 ) -# 40988 "parsing/parser.ml" +# 41209 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -41038,15 +41259,15 @@ module Tables = struct let attrs = let _1 = _1_inlined1 in -# 4476 "parsing/parser.mly" +# 4548 "parsing/parser.mly" ( _1 ) -# 41044 "parsing/parser.ml" +# 41265 "parsing/parser.ml" in -# 2693 "parsing/parser.mly" +# 2772 "parsing/parser.mly" ( e.pexp_desc, (ext, attrs @ e.pexp_attributes) ) -# 41050 "parsing/parser.ml" +# 41271 "parsing/parser.ml" in let _endpos__1_ = _endpos__5_ in @@ -41054,10 +41275,10 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2671 "parsing/parser.mly" +# 2750 "parsing/parser.mly" ( let desc, attrs = _1 in mkexp_attrs ~loc:_sloc desc attrs ) -# 41061 "parsing/parser.ml" +# 41282 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -41106,24 +41327,24 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4476 "parsing/parser.mly" +# 4548 "parsing/parser.mly" ( _1 ) -# 41112 "parsing/parser.ml" +# 41333 "parsing/parser.ml" in -# 4489 "parsing/parser.mly" +# 4561 "parsing/parser.mly" ( _1, _2 ) -# 41118 "parsing/parser.ml" +# 41339 "parsing/parser.ml" in let _endpos = _endpos__3_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2695 "parsing/parser.mly" +# 2774 "parsing/parser.mly" ( Pexp_construct (mkloc (Lident "()") (make_loc _sloc), None), _2 ) -# 41127 "parsing/parser.ml" +# 41348 "parsing/parser.ml" in let _endpos__1_ = _endpos__3_ in @@ -41131,10 +41352,10 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2671 "parsing/parser.mly" +# 2750 "parsing/parser.mly" ( let desc, attrs = _1 in mkexp_attrs ~loc:_sloc desc attrs ) -# 41138 "parsing/parser.ml" +# 41359 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -41190,23 +41411,23 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4476 "parsing/parser.mly" +# 4548 "parsing/parser.mly" ( _1 ) -# 41196 "parsing/parser.ml" +# 41417 "parsing/parser.ml" in -# 4489 "parsing/parser.mly" +# 4561 "parsing/parser.mly" ( _1, _2 ) -# 41202 "parsing/parser.ml" +# 41423 "parsing/parser.ml" in let _loc__4_ = (_startpos__4_, _endpos__4_) in let _loc__1_ = (_startpos__1_, _endpos__1_) in -# 2697 "parsing/parser.mly" +# 2776 "parsing/parser.mly" ( unclosed "begin" _loc__1_ "end" _loc__4_ ) -# 41210 "parsing/parser.ml" +# 41431 "parsing/parser.ml" in let _endpos__1_ = _endpos__4_ in @@ -41214,10 +41435,10 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2671 "parsing/parser.mly" +# 2750 "parsing/parser.mly" ( let desc, attrs = _1 in mkexp_attrs ~loc:_sloc desc attrs ) -# 41221 "parsing/parser.ml" +# 41442 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -41267,9 +41488,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1123 "parsing/parser.mly" +# 1202 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 41273 "parsing/parser.ml" +# 41494 "parsing/parser.ml" in let _2 = @@ -41277,21 +41498,21 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4476 "parsing/parser.mly" +# 4548 "parsing/parser.mly" ( _1 ) -# 41283 "parsing/parser.ml" +# 41504 "parsing/parser.ml" in -# 4489 "parsing/parser.mly" +# 4561 "parsing/parser.mly" ( _1, _2 ) -# 41289 "parsing/parser.ml" +# 41510 "parsing/parser.ml" in -# 2699 "parsing/parser.mly" +# 2778 "parsing/parser.mly" ( Pexp_new(_3), _2 ) -# 41295 "parsing/parser.ml" +# 41516 "parsing/parser.ml" in let _endpos__1_ = _endpos__1_inlined3_ in @@ -41299,10 +41520,10 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2671 "parsing/parser.mly" +# 2750 "parsing/parser.mly" ( let desc, attrs = _1 in mkexp_attrs ~loc:_sloc desc attrs ) -# 41306 "parsing/parser.ml" +# 41527 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -41365,21 +41586,21 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4476 "parsing/parser.mly" +# 4548 "parsing/parser.mly" ( _1 ) -# 41371 "parsing/parser.ml" +# 41592 "parsing/parser.ml" in -# 4489 "parsing/parser.mly" +# 4561 "parsing/parser.mly" ( _1, _2 ) -# 41377 "parsing/parser.ml" +# 41598 "parsing/parser.ml" in -# 2701 "parsing/parser.mly" +# 2780 "parsing/parser.mly" ( Pexp_pack _4, _3 ) -# 41383 "parsing/parser.ml" +# 41604 "parsing/parser.ml" in let _endpos__1_ = _endpos__5_ in @@ -41387,10 +41608,10 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2671 "parsing/parser.mly" +# 2750 "parsing/parser.mly" ( let desc, attrs = _1 in mkexp_attrs ~loc:_sloc desc attrs ) -# 41394 "parsing/parser.ml" +# 41615 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -41468,11 +41689,11 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 4032 "parsing/parser.mly" +# 4104 "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 ) -# 41476 "parsing/parser.ml" +# 41697 "parsing/parser.ml" in let _3 = @@ -41480,24 +41701,24 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4476 "parsing/parser.mly" +# 4548 "parsing/parser.mly" ( _1 ) -# 41486 "parsing/parser.ml" +# 41707 "parsing/parser.ml" in -# 4489 "parsing/parser.mly" +# 4561 "parsing/parser.mly" ( _1, _2 ) -# 41492 "parsing/parser.ml" +# 41713 "parsing/parser.ml" in let _endpos = _endpos__7_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2703 "parsing/parser.mly" +# 2782 "parsing/parser.mly" ( Pexp_constraint (ghexp ~loc:_sloc (Pexp_pack _4), _6), _3 ) -# 41501 "parsing/parser.ml" +# 41722 "parsing/parser.ml" in let _endpos__1_ = _endpos__7_ in @@ -41505,10 +41726,10 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2671 "parsing/parser.mly" +# 2750 "parsing/parser.mly" ( let desc, attrs = _1 in mkexp_attrs ~loc:_sloc desc attrs ) -# 41512 "parsing/parser.ml" +# 41733 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -41578,23 +41799,23 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4476 "parsing/parser.mly" +# 4548 "parsing/parser.mly" ( _1 ) -# 41584 "parsing/parser.ml" +# 41805 "parsing/parser.ml" in -# 4489 "parsing/parser.mly" +# 4561 "parsing/parser.mly" ( _1, _2 ) -# 41590 "parsing/parser.ml" +# 41811 "parsing/parser.ml" in let _loc__6_ = (_startpos__6_, _endpos__6_) in let _loc__1_ = (_startpos__1_, _endpos__1_) in -# 2705 "parsing/parser.mly" +# 2784 "parsing/parser.mly" ( unclosed "(" _loc__1_ ")" _loc__6_ ) -# 41598 "parsing/parser.ml" +# 41819 "parsing/parser.ml" in let _endpos__1_ = _endpos__6_ in @@ -41602,10 +41823,10 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2671 "parsing/parser.mly" +# 2750 "parsing/parser.mly" ( let desc, attrs = _1 in mkexp_attrs ~loc:_sloc desc attrs ) -# 41609 "parsing/parser.ml" +# 41830 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -41670,27 +41891,27 @@ module Tables = struct let _1 = # 260 "" ( List.flatten xss ) -# 41674 "parsing/parser.ml" +# 41895 "parsing/parser.ml" in -# 2195 "parsing/parser.mly" +# 2274 "parsing/parser.mly" ( _1 ) -# 41679 "parsing/parser.ml" +# 41900 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_xss_, _startpos_xss_) in let _endpos = _endpos__1_ in let _startpos = _startpos__1_ in -# 1117 "parsing/parser.mly" +# 1196 "parsing/parser.mly" ( extra_cstr _startpos _endpos _1 ) -# 41688 "parsing/parser.ml" +# 41909 "parsing/parser.ml" in -# 2182 "parsing/parser.mly" +# 2261 "parsing/parser.mly" ( Cstr.mk _1 _2 ) -# 41694 "parsing/parser.ml" +# 41915 "parsing/parser.ml" in let _2 = @@ -41698,21 +41919,21 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4476 "parsing/parser.mly" +# 4548 "parsing/parser.mly" ( _1 ) -# 41704 "parsing/parser.ml" +# 41925 "parsing/parser.ml" in -# 4489 "parsing/parser.mly" +# 4561 "parsing/parser.mly" ( _1, _2 ) -# 41710 "parsing/parser.ml" +# 41931 "parsing/parser.ml" in -# 2707 "parsing/parser.mly" +# 2786 "parsing/parser.mly" ( Pexp_object _3, _2 ) -# 41716 "parsing/parser.ml" +# 41937 "parsing/parser.ml" in let _endpos__1_ = _endpos__4_ in @@ -41720,10 +41941,10 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2671 "parsing/parser.mly" +# 2750 "parsing/parser.mly" ( let desc, attrs = _1 in mkexp_attrs ~loc:_sloc desc attrs ) -# 41727 "parsing/parser.ml" +# 41948 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -41788,27 +42009,27 @@ module Tables = struct let _1 = # 260 "" ( List.flatten xss ) -# 41792 "parsing/parser.ml" +# 42013 "parsing/parser.ml" in -# 2195 "parsing/parser.mly" +# 2274 "parsing/parser.mly" ( _1 ) -# 41797 "parsing/parser.ml" +# 42018 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_xss_, _startpos_xss_) in let _endpos = _endpos__1_ in let _startpos = _startpos__1_ in -# 1117 "parsing/parser.mly" +# 1196 "parsing/parser.mly" ( extra_cstr _startpos _endpos _1 ) -# 41806 "parsing/parser.ml" +# 42027 "parsing/parser.ml" in -# 2182 "parsing/parser.mly" +# 2261 "parsing/parser.mly" ( Cstr.mk _1 _2 ) -# 41812 "parsing/parser.ml" +# 42033 "parsing/parser.ml" in let _2 = @@ -41816,23 +42037,23 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4476 "parsing/parser.mly" +# 4548 "parsing/parser.mly" ( _1 ) -# 41822 "parsing/parser.ml" +# 42043 "parsing/parser.ml" in -# 4489 "parsing/parser.mly" +# 4561 "parsing/parser.mly" ( _1, _2 ) -# 41828 "parsing/parser.ml" +# 42049 "parsing/parser.ml" in let _loc__4_ = (_startpos__4_, _endpos__4_) in let _loc__1_ = (_startpos__1_, _endpos__1_) in -# 2709 "parsing/parser.mly" +# 2788 "parsing/parser.mly" ( unclosed "object" _loc__1_ "end" _loc__4_ ) -# 41836 "parsing/parser.ml" +# 42057 "parsing/parser.ml" in let _endpos__1_ = _endpos__4_ in @@ -41840,10 +42061,10 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2671 "parsing/parser.mly" +# 2750 "parsing/parser.mly" ( let desc, attrs = _1 in mkexp_attrs ~loc:_sloc desc attrs ) -# 41847 "parsing/parser.ml" +# 42068 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -41872,30 +42093,30 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1123 "parsing/parser.mly" +# 1202 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 41878 "parsing/parser.ml" +# 42099 "parsing/parser.ml" in -# 2797 "parsing/parser.mly" +# 2879 "parsing/parser.mly" ( Pexp_ident (_1) ) -# 41884 "parsing/parser.ml" +# 42105 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1156 "parsing/parser.mly" +# 1235 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) -# 41893 "parsing/parser.ml" +# 42114 "parsing/parser.ml" in -# 2674 "parsing/parser.mly" +# 2753 "parsing/parser.mly" ( _1 ) -# 41899 "parsing/parser.ml" +# 42120 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -41924,30 +42145,30 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1123 "parsing/parser.mly" +# 1202 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 41930 "parsing/parser.ml" +# 42151 "parsing/parser.ml" in -# 2799 "parsing/parser.mly" +# 2881 "parsing/parser.mly" ( Pexp_construct(_1, None) ) -# 41936 "parsing/parser.ml" +# 42157 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1156 "parsing/parser.mly" +# 1235 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) -# 41945 "parsing/parser.ml" +# 42166 "parsing/parser.ml" in -# 2674 "parsing/parser.mly" +# 2753 "parsing/parser.mly" ( _1 ) -# 41951 "parsing/parser.ml" +# 42172 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -41971,23 +42192,23 @@ module Tables = struct let _endpos = _endpos__1_ in let _v : (Parsetree.expression) = let _1 = let _1 = -# 2801 "parsing/parser.mly" +# 2883 "parsing/parser.mly" ( Pexp_variant(_1, None) ) -# 41977 "parsing/parser.ml" +# 42198 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1156 "parsing/parser.mly" +# 1235 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) -# 41985 "parsing/parser.ml" +# 42206 "parsing/parser.ml" in -# 2674 "parsing/parser.mly" +# 2753 "parsing/parser.mly" ( _1 ) -# 41991 "parsing/parser.ml" +# 42212 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -42013,9 +42234,9 @@ module Tables = struct } = _menhir_stack in let _2 : (Parsetree.expression) = Obj.magic _2 in let _1 : ( -# 962 "parsing/parser.mly" +# 1040 "parsing/parser.mly" (string) -# 42019 "parsing/parser.ml" +# 42240 "parsing/parser.ml" ) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in @@ -42027,15 +42248,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1150 "parsing/parser.mly" +# 1229 "parsing/parser.mly" ( mkoperator ~loc:_sloc _1 ) -# 42033 "parsing/parser.ml" +# 42254 "parsing/parser.ml" in -# 2803 "parsing/parser.mly" +# 2885 "parsing/parser.mly" ( Pexp_apply(_1, [Nolabel,_2]) ) -# 42039 "parsing/parser.ml" +# 42260 "parsing/parser.ml" in let _endpos__1_ = _endpos__2_ in @@ -42043,15 +42264,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1156 "parsing/parser.mly" +# 1235 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) -# 42049 "parsing/parser.ml" +# 42270 "parsing/parser.ml" in -# 2674 "parsing/parser.mly" +# 2753 "parsing/parser.mly" ( _1 ) -# 42055 "parsing/parser.ml" +# 42276 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -42084,23 +42305,23 @@ module Tables = struct let _1 = let _1 = let _1 = -# 2804 "parsing/parser.mly" +# 2886 "parsing/parser.mly" ("!") -# 42090 "parsing/parser.ml" +# 42311 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1150 "parsing/parser.mly" +# 1229 "parsing/parser.mly" ( mkoperator ~loc:_sloc _1 ) -# 42098 "parsing/parser.ml" +# 42319 "parsing/parser.ml" in -# 2805 "parsing/parser.mly" +# 2887 "parsing/parser.mly" ( Pexp_apply(_1, [Nolabel,_2]) ) -# 42104 "parsing/parser.ml" +# 42325 "parsing/parser.ml" in let _endpos__1_ = _endpos__2_ in @@ -42108,15 +42329,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1156 "parsing/parser.mly" +# 1235 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) -# 42114 "parsing/parser.ml" +# 42335 "parsing/parser.ml" in -# 2674 "parsing/parser.mly" +# 2753 "parsing/parser.mly" ( _1 ) -# 42120 "parsing/parser.ml" +# 42341 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -42155,14 +42376,14 @@ module Tables = struct let _v : (Parsetree.expression) = let _1 = let _1 = let _2 = -# 3102 "parsing/parser.mly" +# 3169 "parsing/parser.mly" ( xs ) -# 42161 "parsing/parser.ml" +# 42382 "parsing/parser.ml" in -# 2807 "parsing/parser.mly" +# 2889 "parsing/parser.mly" ( Pexp_override _2 ) -# 42166 "parsing/parser.ml" +# 42387 "parsing/parser.ml" in let _endpos__1_ = _endpos__3_ in @@ -42170,15 +42391,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1156 "parsing/parser.mly" +# 1235 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) -# 42176 "parsing/parser.ml" +# 42397 "parsing/parser.ml" in -# 2674 "parsing/parser.mly" +# 2753 "parsing/parser.mly" ( _1 ) -# 42182 "parsing/parser.ml" +# 42403 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -42217,16 +42438,16 @@ module Tables = struct let _v : (Parsetree.expression) = let _1 = let _1 = let _2 = -# 3102 "parsing/parser.mly" +# 3169 "parsing/parser.mly" ( xs ) -# 42223 "parsing/parser.ml" +# 42444 "parsing/parser.ml" in let _loc__3_ = (_startpos__3_, _endpos__3_) in let _loc__1_ = (_startpos__1_, _endpos__1_) in -# 2809 "parsing/parser.mly" +# 2891 "parsing/parser.mly" ( unclosed "{<" _loc__1_ ">}" _loc__3_ ) -# 42230 "parsing/parser.ml" +# 42451 "parsing/parser.ml" in let _endpos__1_ = _endpos__3_ in @@ -42234,15 +42455,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1156 "parsing/parser.mly" +# 1235 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) -# 42240 "parsing/parser.ml" +# 42461 "parsing/parser.ml" in -# 2674 "parsing/parser.mly" +# 2753 "parsing/parser.mly" ( _1 ) -# 42246 "parsing/parser.ml" +# 42467 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -42273,24 +42494,24 @@ module Tables = struct let _endpos = _endpos__2_ in let _v : (Parsetree.expression) = let _1 = let _1 = -# 2811 "parsing/parser.mly" +# 2893 "parsing/parser.mly" ( Pexp_override [] ) -# 42279 "parsing/parser.ml" +# 42500 "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 -# 1156 "parsing/parser.mly" +# 1235 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) -# 42288 "parsing/parser.ml" +# 42509 "parsing/parser.ml" in -# 2674 "parsing/parser.mly" +# 2753 "parsing/parser.mly" ( _1 ) -# 42294 "parsing/parser.ml" +# 42515 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -42334,15 +42555,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1123 "parsing/parser.mly" +# 1202 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 42340 "parsing/parser.ml" +# 42561 "parsing/parser.ml" in -# 2813 "parsing/parser.mly" +# 2895 "parsing/parser.mly" ( Pexp_field(_1, _3) ) -# 42346 "parsing/parser.ml" +# 42567 "parsing/parser.ml" in let _endpos__1_ = _endpos__1_inlined1_ in @@ -42350,15 +42571,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1156 "parsing/parser.mly" +# 1235 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) -# 42356 "parsing/parser.ml" +# 42577 "parsing/parser.ml" in -# 2674 "parsing/parser.mly" +# 2753 "parsing/parser.mly" ( _1 ) -# 42362 "parsing/parser.ml" +# 42583 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -42416,24 +42637,24 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1123 "parsing/parser.mly" +# 1202 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 42422 "parsing/parser.ml" +# 42643 "parsing/parser.ml" in let _loc__1_ = (_startpos__1_, _endpos__1_) in -# 1839 "parsing/parser.mly" +# 1918 "parsing/parser.mly" ( let loc = make_loc _loc__1_ in let me = Mod.ident ~loc _1 in Opn.mk ~loc me ) -# 42431 "parsing/parser.ml" +# 42652 "parsing/parser.ml" in -# 2815 "parsing/parser.mly" +# 2897 "parsing/parser.mly" ( Pexp_open(od, _4) ) -# 42437 "parsing/parser.ml" +# 42658 "parsing/parser.ml" in let _endpos__1_ = _endpos__5_ in @@ -42441,15 +42662,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1156 "parsing/parser.mly" +# 1235 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) -# 42447 "parsing/parser.ml" +# 42668 "parsing/parser.ml" in -# 2674 "parsing/parser.mly" +# 2753 "parsing/parser.mly" ( _1 ) -# 42453 "parsing/parser.ml" +# 42674 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -42502,9 +42723,9 @@ module Tables = struct let _v : (Parsetree.expression) = let _1 = let _1 = let _4 = -# 3102 "parsing/parser.mly" +# 3169 "parsing/parser.mly" ( xs ) -# 42508 "parsing/parser.ml" +# 42729 "parsing/parser.ml" in let od = let _1 = @@ -42512,18 +42733,18 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1123 "parsing/parser.mly" +# 1202 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 42518 "parsing/parser.ml" +# 42739 "parsing/parser.ml" in let _loc__1_ = (_startpos__1_, _endpos__1_) in -# 1839 "parsing/parser.mly" +# 1918 "parsing/parser.mly" ( let loc = make_loc _loc__1_ in let me = Mod.ident ~loc _1 in Opn.mk ~loc me ) -# 42527 "parsing/parser.ml" +# 42748 "parsing/parser.ml" in let _startpos_od_ = _startpos__1_ in @@ -42531,10 +42752,10 @@ module Tables = struct let _symbolstartpos = _startpos_od_ in let _sloc = (_symbolstartpos, _endpos) in -# 2817 "parsing/parser.mly" +# 2899 "parsing/parser.mly" ( (* TODO: review the location of Pexp_override *) Pexp_open(od, mkexp ~loc:_sloc (Pexp_override _4)) ) -# 42538 "parsing/parser.ml" +# 42759 "parsing/parser.ml" in let _endpos__1_ = _endpos__5_ in @@ -42542,15 +42763,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1156 "parsing/parser.mly" +# 1235 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) -# 42548 "parsing/parser.ml" +# 42769 "parsing/parser.ml" in -# 2674 "parsing/parser.mly" +# 2753 "parsing/parser.mly" ( _1 ) -# 42554 "parsing/parser.ml" +# 42775 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -42603,16 +42824,16 @@ module Tables = struct let _v : (Parsetree.expression) = let _1 = let _1 = let _4 = -# 3102 "parsing/parser.mly" +# 3169 "parsing/parser.mly" ( xs ) -# 42609 "parsing/parser.ml" +# 42830 "parsing/parser.ml" in let _loc__5_ = (_startpos__5_, _endpos__5_) in let _loc__3_ = (_startpos__3_, _endpos__3_) in -# 2820 "parsing/parser.mly" +# 2902 "parsing/parser.mly" ( unclosed "{<" _loc__3_ ">}" _loc__5_ ) -# 42616 "parsing/parser.ml" +# 42837 "parsing/parser.ml" in let _endpos__1_ = _endpos__5_ in @@ -42620,15 +42841,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1156 "parsing/parser.mly" +# 1235 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) -# 42626 "parsing/parser.ml" +# 42847 "parsing/parser.ml" in -# 2674 "parsing/parser.mly" +# 2753 "parsing/parser.mly" ( _1 ) -# 42632 "parsing/parser.ml" +# 42853 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -42659,9 +42880,9 @@ module Tables = struct }; } = _menhir_stack in let _1_inlined2 : ( -# 937 "parsing/parser.mly" +# 1014 "parsing/parser.mly" (string) -# 42665 "parsing/parser.ml" +# 42886 "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 @@ -42673,28 +42894,28 @@ module Tables = struct let _3 = let (_endpos__1_, _startpos__1_, _1) = (_endpos__1_inlined2_, _startpos__1_inlined2_, _1_inlined2) in let _1 = -# 4106 "parsing/parser.mly" +# 4178 "parsing/parser.mly" ( _1 ) -# 42679 "parsing/parser.ml" +# 42900 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1123 "parsing/parser.mly" +# 1202 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 42687 "parsing/parser.ml" +# 42908 "parsing/parser.ml" in let _2 = -# 2791 "parsing/parser.mly" +# 2873 "parsing/parser.mly" ( () ) -# 42693 "parsing/parser.ml" +# 42914 "parsing/parser.ml" in -# 2822 "parsing/parser.mly" +# 2904 "parsing/parser.mly" ( Pexp_send(_1, _3) ) -# 42698 "parsing/parser.ml" +# 42919 "parsing/parser.ml" in let _endpos__1_ = _endpos__1_inlined2_ in @@ -42702,15 +42923,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1156 "parsing/parser.mly" +# 1235 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) -# 42708 "parsing/parser.ml" +# 42929 "parsing/parser.ml" in -# 2674 "parsing/parser.mly" +# 2753 "parsing/parser.mly" ( _1 ) -# 42714 "parsing/parser.ml" +# 42935 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -42741,9 +42962,9 @@ module Tables = struct }; } = _menhir_stack in let _1_inlined2 : ( -# 937 "parsing/parser.mly" +# 1014 "parsing/parser.mly" (string) -# 42747 "parsing/parser.ml" +# 42968 "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 @@ -42755,28 +42976,28 @@ module Tables = struct let _3 = let (_endpos__1_, _startpos__1_, _1) = (_endpos__1_inlined2_, _startpos__1_inlined2_, _1_inlined2) in let _1 = -# 4106 "parsing/parser.mly" +# 4178 "parsing/parser.mly" ( _1 ) -# 42761 "parsing/parser.ml" +# 42982 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1123 "parsing/parser.mly" +# 1202 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 42769 "parsing/parser.ml" +# 42990 "parsing/parser.ml" in let _2 = -# 2792 "parsing/parser.mly" +# 2874 "parsing/parser.mly" ( () ) -# 42775 "parsing/parser.ml" +# 42996 "parsing/parser.ml" in -# 2822 "parsing/parser.mly" +# 2904 "parsing/parser.mly" ( Pexp_send(_1, _3) ) -# 42780 "parsing/parser.ml" +# 43001 "parsing/parser.ml" in let _endpos__1_ = _endpos__1_inlined2_ in @@ -42784,15 +43005,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1156 "parsing/parser.mly" +# 1235 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) -# 42790 "parsing/parser.ml" +# 43011 "parsing/parser.ml" in -# 2674 "parsing/parser.mly" +# 2753 "parsing/parser.mly" ( _1 ) -# 42796 "parsing/parser.ml" +# 43017 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -42824,9 +43045,9 @@ module Tables = struct } = _menhir_stack in let _3 : (Parsetree.expression) = Obj.magic _3 in let _1_inlined1 : ( -# 974 "parsing/parser.mly" +# 1052 "parsing/parser.mly" (string) -# 42830 "parsing/parser.ml" +# 43051 "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 @@ -42840,15 +43061,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1150 "parsing/parser.mly" +# 1229 "parsing/parser.mly" ( mkoperator ~loc:_sloc _1 ) -# 42846 "parsing/parser.ml" +# 43067 "parsing/parser.ml" in -# 2824 "parsing/parser.mly" +# 2906 "parsing/parser.mly" ( mkinfix _1 _2 _3 ) -# 42852 "parsing/parser.ml" +# 43073 "parsing/parser.ml" in let _endpos__1_ = _endpos__3_ in @@ -42856,15 +43077,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1156 "parsing/parser.mly" +# 1235 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) -# 42862 "parsing/parser.ml" +# 43083 "parsing/parser.ml" in -# 2674 "parsing/parser.mly" +# 2753 "parsing/parser.mly" ( _1 ) -# 42868 "parsing/parser.ml" +# 43089 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -42888,23 +43109,23 @@ module Tables = struct let _endpos = _endpos__1_ in let _v : (Parsetree.expression) = let _1 = let _1 = -# 2826 "parsing/parser.mly" +# 2908 "parsing/parser.mly" ( Pexp_extension _1 ) -# 42894 "parsing/parser.ml" +# 43115 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1156 "parsing/parser.mly" +# 1235 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) -# 42902 "parsing/parser.ml" +# 43123 "parsing/parser.ml" in -# 2674 "parsing/parser.mly" +# 2753 "parsing/parser.mly" ( _1 ) -# 42908 "parsing/parser.ml" +# 43129 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -42952,18 +43173,18 @@ module Tables = struct let _3 = let (_endpos__2_, _startpos__1_) = (_endpos__2_inlined1_, _startpos__1_inlined1_) in let _1 = -# 2827 "parsing/parser.mly" +# 2909 "parsing/parser.mly" (Lident "()") -# 42958 "parsing/parser.ml" +# 43179 "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 -# 1123 "parsing/parser.mly" +# 1202 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 42967 "parsing/parser.ml" +# 43188 "parsing/parser.ml" in let (_endpos__3_, _startpos__3_) = (_endpos__2_inlined1_, _startpos__1_inlined1_) in @@ -42973,25 +43194,25 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1123 "parsing/parser.mly" +# 1202 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 42979 "parsing/parser.ml" +# 43200 "parsing/parser.ml" in let _loc__1_ = (_startpos__1_, _endpos__1_) in -# 1839 "parsing/parser.mly" +# 1918 "parsing/parser.mly" ( let loc = make_loc _loc__1_ in let me = Mod.ident ~loc _1 in Opn.mk ~loc me ) -# 42988 "parsing/parser.ml" +# 43209 "parsing/parser.ml" in let _loc__3_ = (_startpos__3_, _endpos__3_) in -# 2828 "parsing/parser.mly" +# 2910 "parsing/parser.mly" ( Pexp_open(od, mkexp ~loc:(_loc__3_) (Pexp_construct(_3, None))) ) -# 42995 "parsing/parser.ml" +# 43216 "parsing/parser.ml" in let _endpos__1_ = _endpos__2_inlined1_ in @@ -42999,15 +43220,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1156 "parsing/parser.mly" +# 1235 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) -# 43005 "parsing/parser.ml" +# 43226 "parsing/parser.ml" in -# 2674 "parsing/parser.mly" +# 2753 "parsing/parser.mly" ( _1 ) -# 43011 "parsing/parser.ml" +# 43232 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -43062,9 +43283,9 @@ module Tables = struct let _loc__5_ = (_startpos__5_, _endpos__5_) in let _loc__3_ = (_startpos__3_, _endpos__3_) in -# 2830 "parsing/parser.mly" +# 2912 "parsing/parser.mly" ( unclosed "(" _loc__3_ ")" _loc__5_ ) -# 43068 "parsing/parser.ml" +# 43289 "parsing/parser.ml" in let _endpos__1_ = _endpos__5_ in @@ -43072,15 +43293,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1156 "parsing/parser.mly" +# 1235 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) -# 43078 "parsing/parser.ml" +# 43299 "parsing/parser.ml" in -# 2674 "parsing/parser.mly" +# 2753 "parsing/parser.mly" ( _1 ) -# 43084 "parsing/parser.ml" +# 43305 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -43119,25 +43340,25 @@ module Tables = struct let _endpos = _endpos__3_ in let _v : (Parsetree.expression) = let _1 = let _1 = -# 2832 "parsing/parser.mly" +# 2914 "parsing/parser.mly" ( let (exten, fields) = _2 in Pexp_record(fields, exten) ) -# 43126 "parsing/parser.ml" +# 43347 "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 -# 1156 "parsing/parser.mly" +# 1235 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) -# 43135 "parsing/parser.ml" +# 43356 "parsing/parser.ml" in -# 2674 "parsing/parser.mly" +# 2753 "parsing/parser.mly" ( _1 ) -# 43141 "parsing/parser.ml" +# 43362 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -43179,9 +43400,9 @@ module Tables = struct let _loc__3_ = (_startpos__3_, _endpos__3_) in let _loc__1_ = (_startpos__1_, _endpos__1_) in -# 2835 "parsing/parser.mly" +# 2917 "parsing/parser.mly" ( unclosed "{" _loc__1_ "}" _loc__3_ ) -# 43185 "parsing/parser.ml" +# 43406 "parsing/parser.ml" in let _endpos__1_ = _endpos__3_ in @@ -43189,15 +43410,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1156 "parsing/parser.mly" +# 1235 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) -# 43195 "parsing/parser.ml" +# 43416 "parsing/parser.ml" in -# 2674 "parsing/parser.mly" +# 2753 "parsing/parser.mly" ( _1 ) -# 43201 "parsing/parser.ml" +# 43422 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -43256,27 +43477,27 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1123 "parsing/parser.mly" +# 1202 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 43262 "parsing/parser.ml" +# 43483 "parsing/parser.ml" in let _loc__1_ = (_startpos__1_, _endpos__1_) in -# 1839 "parsing/parser.mly" +# 1918 "parsing/parser.mly" ( let loc = make_loc _loc__1_ in let me = Mod.ident ~loc _1 in Opn.mk ~loc me ) -# 43271 "parsing/parser.ml" +# 43492 "parsing/parser.ml" in let _endpos = _endpos__5_ in -# 2837 "parsing/parser.mly" +# 2919 "parsing/parser.mly" ( let (exten, fields) = _4 in Pexp_open(od, mkexp ~loc:(_startpos__3_, _endpos) (Pexp_record(fields, exten))) ) -# 43280 "parsing/parser.ml" +# 43501 "parsing/parser.ml" in let _endpos__1_ = _endpos__5_ in @@ -43284,15 +43505,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1156 "parsing/parser.mly" +# 1235 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) -# 43290 "parsing/parser.ml" +# 43511 "parsing/parser.ml" in -# 2674 "parsing/parser.mly" +# 2753 "parsing/parser.mly" ( _1 ) -# 43296 "parsing/parser.ml" +# 43517 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -43348,9 +43569,9 @@ module Tables = struct let _loc__5_ = (_startpos__5_, _endpos__5_) in let _loc__3_ = (_startpos__3_, _endpos__3_) in -# 2841 "parsing/parser.mly" +# 2923 "parsing/parser.mly" ( unclosed "{" _loc__3_ "}" _loc__5_ ) -# 43354 "parsing/parser.ml" +# 43575 "parsing/parser.ml" in let _endpos__1_ = _endpos__5_ in @@ -43358,15 +43579,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1156 "parsing/parser.mly" +# 1235 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) -# 43364 "parsing/parser.ml" +# 43585 "parsing/parser.ml" in -# 2674 "parsing/parser.mly" +# 2753 "parsing/parser.mly" ( _1 ) -# 43370 "parsing/parser.ml" +# 43591 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -43407,30 +43628,30 @@ module Tables = struct let _1 = let _1 = let _2 = -# 3119 "parsing/parser.mly" +# 3186 "parsing/parser.mly" ( es ) -# 43413 "parsing/parser.ml" +# 43634 "parsing/parser.ml" in -# 2763 "parsing/parser.mly" +# 2845 "parsing/parser.mly" ( Generic_array.Simple.Literal _2 ) -# 43418 "parsing/parser.ml" +# 43639 "parsing/parser.ml" in -# 2772 "parsing/parser.mly" +# 2854 "parsing/parser.mly" ( Generic_array.Expression.Simple _1 ) -# 43424 "parsing/parser.ml" +# 43645 "parsing/parser.ml" in -# 2843 "parsing/parser.mly" +# 2925 "parsing/parser.mly" ( Generic_array.Expression.to_desc "[|" "|]" (fun elts -> Pexp_array elts) _1 ) -# 43434 "parsing/parser.ml" +# 43655 "parsing/parser.ml" in let _endpos__1_ = _endpos__3_ in @@ -43438,15 +43659,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1156 "parsing/parser.mly" +# 1235 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) -# 43444 "parsing/parser.ml" +# 43665 "parsing/parser.ml" in -# 2674 "parsing/parser.mly" +# 2753 "parsing/parser.mly" ( _1 ) -# 43450 "parsing/parser.ml" +# 43671 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -43487,32 +43708,32 @@ module Tables = struct let _1 = let _1 = let _2 = -# 3119 "parsing/parser.mly" +# 3186 "parsing/parser.mly" ( es ) -# 43493 "parsing/parser.ml" +# 43714 "parsing/parser.ml" in let _loc__3_ = (_startpos__3_, _endpos__3_) in let _loc__1_ = (_startpos__1_, _endpos__1_) in -# 2765 "parsing/parser.mly" +# 2847 "parsing/parser.mly" ( Generic_array.Simple.Unclosed(_loc__1_,_loc__3_) ) -# 43500 "parsing/parser.ml" +# 43721 "parsing/parser.ml" in -# 2772 "parsing/parser.mly" +# 2854 "parsing/parser.mly" ( Generic_array.Expression.Simple _1 ) -# 43506 "parsing/parser.ml" +# 43727 "parsing/parser.ml" in -# 2843 "parsing/parser.mly" +# 2925 "parsing/parser.mly" ( Generic_array.Expression.to_desc "[|" "|]" (fun elts -> Pexp_array elts) _1 ) -# 43516 "parsing/parser.ml" +# 43737 "parsing/parser.ml" in let _endpos__1_ = _endpos__3_ in @@ -43520,15 +43741,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1156 "parsing/parser.mly" +# 1235 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) -# 43526 "parsing/parser.ml" +# 43747 "parsing/parser.ml" in -# 2674 "parsing/parser.mly" +# 2753 "parsing/parser.mly" ( _1 ) -# 43532 "parsing/parser.ml" +# 43753 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -43561,24 +43782,24 @@ module Tables = struct let _1 = let _1 = let _1 = -# 2767 "parsing/parser.mly" +# 2849 "parsing/parser.mly" ( Generic_array.Simple.Literal [] ) -# 43567 "parsing/parser.ml" +# 43788 "parsing/parser.ml" in -# 2772 "parsing/parser.mly" +# 2854 "parsing/parser.mly" ( Generic_array.Expression.Simple _1 ) -# 43572 "parsing/parser.ml" +# 43793 "parsing/parser.ml" in -# 2843 "parsing/parser.mly" +# 2925 "parsing/parser.mly" ( Generic_array.Expression.to_desc "[|" "|]" (fun elts -> Pexp_array elts) _1 ) -# 43582 "parsing/parser.ml" +# 43803 "parsing/parser.ml" in let _endpos__1_ = _endpos__2_ in @@ -43586,15 +43807,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1156 "parsing/parser.mly" +# 1235 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) -# 43592 "parsing/parser.ml" +# 43813 "parsing/parser.ml" in -# 2674 "parsing/parser.mly" +# 2753 "parsing/parser.mly" ( _1 ) -# 43598 "parsing/parser.ml" +# 43819 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -43648,9 +43869,9 @@ module Tables = struct let _1 = let _1 = let _4 = -# 3119 "parsing/parser.mly" +# 3186 "parsing/parser.mly" ( es ) -# 43654 "parsing/parser.ml" +# 43875 "parsing/parser.ml" in let od = let _1 = @@ -43658,36 +43879,36 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1123 "parsing/parser.mly" +# 1202 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 43664 "parsing/parser.ml" +# 43885 "parsing/parser.ml" in let _loc__1_ = (_startpos__1_, _endpos__1_) in -# 1839 "parsing/parser.mly" +# 1918 "parsing/parser.mly" ( let loc = make_loc _loc__1_ in let me = Mod.ident ~loc _1 in Opn.mk ~loc me ) -# 43673 "parsing/parser.ml" +# 43894 "parsing/parser.ml" in let _endpos = _endpos__5_ in -# 2774 "parsing/parser.mly" +# 2856 "parsing/parser.mly" ( Generic_array.Expression.Opened_literal(od, _startpos__3_, _endpos, _4) ) -# 43681 "parsing/parser.ml" +# 43902 "parsing/parser.ml" in -# 2843 "parsing/parser.mly" +# 2925 "parsing/parser.mly" ( Generic_array.Expression.to_desc "[|" "|]" (fun elts -> Pexp_array elts) _1 ) -# 43691 "parsing/parser.ml" +# 43912 "parsing/parser.ml" in let _endpos__1_ = _endpos__5_ in @@ -43695,15 +43916,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1156 "parsing/parser.mly" +# 1235 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) -# 43701 "parsing/parser.ml" +# 43922 "parsing/parser.ml" in -# 2674 "parsing/parser.mly" +# 2753 "parsing/parser.mly" ( _1 ) -# 43707 "parsing/parser.ml" +# 43928 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -43755,37 +43976,37 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1123 "parsing/parser.mly" +# 1202 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 43761 "parsing/parser.ml" +# 43982 "parsing/parser.ml" in let _loc__1_ = (_startpos__1_, _endpos__1_) in -# 1839 "parsing/parser.mly" +# 1918 "parsing/parser.mly" ( let loc = make_loc _loc__1_ in let me = Mod.ident ~loc _1 in Opn.mk ~loc me ) -# 43770 "parsing/parser.ml" +# 43991 "parsing/parser.ml" in let _endpos = _endpos__4_ in -# 2777 "parsing/parser.mly" +# 2859 "parsing/parser.mly" ( (* TODO: review the location of Pexp_array *) Generic_array.Expression.Opened_literal(od, _startpos__3_, _endpos, []) ) -# 43779 "parsing/parser.ml" +# 44000 "parsing/parser.ml" in -# 2843 "parsing/parser.mly" +# 2925 "parsing/parser.mly" ( Generic_array.Expression.to_desc "[|" "|]" (fun elts -> Pexp_array elts) _1 ) -# 43789 "parsing/parser.ml" +# 44010 "parsing/parser.ml" in let _endpos__1_ = _endpos__4_ in @@ -43793,15 +44014,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1156 "parsing/parser.mly" +# 1235 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) -# 43799 "parsing/parser.ml" +# 44020 "parsing/parser.ml" in -# 2674 "parsing/parser.mly" +# 2753 "parsing/parser.mly" ( _1 ) -# 43805 "parsing/parser.ml" +# 44026 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -43855,26 +44076,26 @@ module Tables = struct let _1 = let _1 = let _4 = -# 3119 "parsing/parser.mly" +# 3186 "parsing/parser.mly" ( es ) -# 43861 "parsing/parser.ml" +# 44082 "parsing/parser.ml" in let _loc__5_ = (_startpos__5_, _endpos__5_) in let _loc__3_ = (_startpos__3_, _endpos__3_) in -# 2782 "parsing/parser.mly" +# 2864 "parsing/parser.mly" ( Generic_array.Expression.Simple (Unclosed(_loc__3_, _loc__5_)) ) -# 43868 "parsing/parser.ml" +# 44089 "parsing/parser.ml" in -# 2843 "parsing/parser.mly" +# 2925 "parsing/parser.mly" ( Generic_array.Expression.to_desc "[|" "|]" (fun elts -> Pexp_array elts) _1 ) -# 43878 "parsing/parser.ml" +# 44099 "parsing/parser.ml" in let _endpos__1_ = _endpos__5_ in @@ -43882,15 +44103,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1156 "parsing/parser.mly" +# 1235 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) -# 43888 "parsing/parser.ml" +# 44109 "parsing/parser.ml" in -# 2674 "parsing/parser.mly" +# 2753 "parsing/parser.mly" ( _1 ) -# 43894 "parsing/parser.ml" +# 44115 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -43929,15 +44150,15 @@ module Tables = struct let _v : (Parsetree.expression) = let _1 = let _1 = let _2 = -# 3119 "parsing/parser.mly" +# 3186 "parsing/parser.mly" ( es ) -# 43935 "parsing/parser.ml" +# 44156 "parsing/parser.ml" in let _loc__3_ = (_startpos__3_, _endpos__3_) in -# 2849 "parsing/parser.mly" +# 2931 "parsing/parser.mly" ( fst (mktailexp _loc__3_ _2) ) -# 43941 "parsing/parser.ml" +# 44162 "parsing/parser.ml" in let _endpos__1_ = _endpos__3_ in @@ -43945,15 +44166,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1156 "parsing/parser.mly" +# 1235 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) -# 43951 "parsing/parser.ml" +# 44172 "parsing/parser.ml" in -# 2674 "parsing/parser.mly" +# 2753 "parsing/parser.mly" ( _1 ) -# 43957 "parsing/parser.ml" +# 44178 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -43992,16 +44213,16 @@ module Tables = struct let _v : (Parsetree.expression) = let _1 = let _1 = let _2 = -# 3119 "parsing/parser.mly" +# 3186 "parsing/parser.mly" ( es ) -# 43998 "parsing/parser.ml" +# 44219 "parsing/parser.ml" in let _loc__3_ = (_startpos__3_, _endpos__3_) in let _loc__1_ = (_startpos__1_, _endpos__1_) in -# 2851 "parsing/parser.mly" +# 2933 "parsing/parser.mly" ( unclosed "[" _loc__1_ "]" _loc__3_ ) -# 44005 "parsing/parser.ml" +# 44226 "parsing/parser.ml" in let _endpos__1_ = _endpos__3_ in @@ -44009,15 +44230,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1156 "parsing/parser.mly" +# 1235 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) -# 44015 "parsing/parser.ml" +# 44236 "parsing/parser.ml" in -# 2674 "parsing/parser.mly" +# 2753 "parsing/parser.mly" ( _1 ) -# 44021 "parsing/parser.ml" +# 44242 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -44084,24 +44305,24 @@ module Tables = struct let xs = # 253 "" ( List.rev xs ) -# 44088 "parsing/parser.ml" +# 44309 "parsing/parser.ml" in -# 1228 "parsing/parser.mly" +# 1307 "parsing/parser.mly" ( xs ) -# 44093 "parsing/parser.ml" +# 44314 "parsing/parser.ml" in -# 2744 "parsing/parser.mly" +# 2826 "parsing/parser.mly" ( Jane_syntax.Comprehensions.{ body = _2; clauses = _3 } ) -# 44099 "parsing/parser.ml" +# 44320 "parsing/parser.ml" in -# 2749 "parsing/parser.mly" +# 2831 "parsing/parser.mly" ( Jane_syntax.Comprehensions.Cexp_list_comprehension _1 ) -# 44105 "parsing/parser.ml" +# 44326 "parsing/parser.ml" in let _endpos__1_ = _endpos__4_ in @@ -44109,9 +44330,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2758 "parsing/parser.mly" +# 2840 "parsing/parser.mly" ( Jane_syntax.Comprehensions.expr_of ~loc:(make_loc _sloc) ~attrs:[] _1 ) -# 44115 "parsing/parser.ml" +# 44336 "parsing/parser.ml" in let od = @@ -44120,24 +44341,24 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1123 "parsing/parser.mly" +# 1202 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 44126 "parsing/parser.ml" +# 44347 "parsing/parser.ml" in let _loc__1_ = (_startpos__1_, _endpos__1_) in -# 1839 "parsing/parser.mly" +# 1918 "parsing/parser.mly" ( let loc = make_loc _loc__1_ in let me = Mod.ident ~loc _1 in Opn.mk ~loc me ) -# 44135 "parsing/parser.ml" +# 44356 "parsing/parser.ml" in -# 2853 "parsing/parser.mly" +# 2935 "parsing/parser.mly" ( Pexp_open(od, _3) ) -# 44141 "parsing/parser.ml" +# 44362 "parsing/parser.ml" in let _endpos__1_ = _endpos__4_ in @@ -44145,15 +44366,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1156 "parsing/parser.mly" +# 1235 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) -# 44151 "parsing/parser.ml" +# 44372 "parsing/parser.ml" in -# 2674 "parsing/parser.mly" +# 2753 "parsing/parser.mly" ( _1 ) -# 44157 "parsing/parser.ml" +# 44378 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -44220,24 +44441,24 @@ module Tables = struct let xs = # 253 "" ( List.rev xs ) -# 44224 "parsing/parser.ml" +# 44445 "parsing/parser.ml" in -# 1228 "parsing/parser.mly" +# 1307 "parsing/parser.mly" ( xs ) -# 44229 "parsing/parser.ml" +# 44450 "parsing/parser.ml" in -# 2744 "parsing/parser.mly" +# 2826 "parsing/parser.mly" ( Jane_syntax.Comprehensions.{ body = _2; clauses = _3 } ) -# 44235 "parsing/parser.ml" +# 44456 "parsing/parser.ml" in -# 2751 "parsing/parser.mly" +# 2833 "parsing/parser.mly" ( Jane_syntax.Comprehensions.Cexp_array_comprehension (Mutable, _1) ) -# 44241 "parsing/parser.ml" +# 44462 "parsing/parser.ml" in let _endpos__1_ = _endpos__4_ in @@ -44245,9 +44466,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2758 "parsing/parser.mly" +# 2840 "parsing/parser.mly" ( Jane_syntax.Comprehensions.expr_of ~loc:(make_loc _sloc) ~attrs:[] _1 ) -# 44251 "parsing/parser.ml" +# 44472 "parsing/parser.ml" in let od = @@ -44256,24 +44477,24 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1123 "parsing/parser.mly" +# 1202 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 44262 "parsing/parser.ml" +# 44483 "parsing/parser.ml" in let _loc__1_ = (_startpos__1_, _endpos__1_) in -# 1839 "parsing/parser.mly" +# 1918 "parsing/parser.mly" ( let loc = make_loc _loc__1_ in let me = Mod.ident ~loc _1 in Opn.mk ~loc me ) -# 44271 "parsing/parser.ml" +# 44492 "parsing/parser.ml" in -# 2853 "parsing/parser.mly" +# 2935 "parsing/parser.mly" ( Pexp_open(od, _3) ) -# 44277 "parsing/parser.ml" +# 44498 "parsing/parser.ml" in let _endpos__1_ = _endpos__4_ in @@ -44281,15 +44502,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1156 "parsing/parser.mly" +# 1235 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) -# 44287 "parsing/parser.ml" +# 44508 "parsing/parser.ml" in -# 2674 "parsing/parser.mly" +# 2753 "parsing/parser.mly" ( _1 ) -# 44293 "parsing/parser.ml" +# 44514 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -44356,24 +44577,24 @@ module Tables = struct let xs = # 253 "" ( List.rev xs ) -# 44360 "parsing/parser.ml" +# 44581 "parsing/parser.ml" in -# 1228 "parsing/parser.mly" +# 1307 "parsing/parser.mly" ( xs ) -# 44365 "parsing/parser.ml" +# 44586 "parsing/parser.ml" in -# 2744 "parsing/parser.mly" +# 2826 "parsing/parser.mly" ( Jane_syntax.Comprehensions.{ body = _2; clauses = _3 } ) -# 44371 "parsing/parser.ml" +# 44592 "parsing/parser.ml" in -# 2753 "parsing/parser.mly" +# 2835 "parsing/parser.mly" ( Jane_syntax.Comprehensions.Cexp_array_comprehension (Immutable, _1) ) -# 44377 "parsing/parser.ml" +# 44598 "parsing/parser.ml" in let _endpos__1_ = _endpos__4_ in @@ -44381,9 +44602,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2758 "parsing/parser.mly" +# 2840 "parsing/parser.mly" ( Jane_syntax.Comprehensions.expr_of ~loc:(make_loc _sloc) ~attrs:[] _1 ) -# 44387 "parsing/parser.ml" +# 44608 "parsing/parser.ml" in let od = @@ -44392,24 +44613,24 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1123 "parsing/parser.mly" +# 1202 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 44398 "parsing/parser.ml" +# 44619 "parsing/parser.ml" in let _loc__1_ = (_startpos__1_, _endpos__1_) in -# 1839 "parsing/parser.mly" +# 1918 "parsing/parser.mly" ( let loc = make_loc _loc__1_ in let me = Mod.ident ~loc _1 in Opn.mk ~loc me ) -# 44407 "parsing/parser.ml" +# 44628 "parsing/parser.ml" in -# 2853 "parsing/parser.mly" +# 2935 "parsing/parser.mly" ( Pexp_open(od, _3) ) -# 44413 "parsing/parser.ml" +# 44634 "parsing/parser.ml" in let _endpos__1_ = _endpos__4_ in @@ -44417,15 +44638,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1156 "parsing/parser.mly" +# 1235 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) -# 44423 "parsing/parser.ml" +# 44644 "parsing/parser.ml" in -# 2674 "parsing/parser.mly" +# 2753 "parsing/parser.mly" ( _1 ) -# 44429 "parsing/parser.ml" +# 44650 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -44478,9 +44699,9 @@ module Tables = struct let _v : (Parsetree.expression) = let _1 = let _1 = let _4 = -# 3119 "parsing/parser.mly" +# 3186 "parsing/parser.mly" ( es ) -# 44484 "parsing/parser.ml" +# 44705 "parsing/parser.ml" in let od = let _1 = @@ -44488,30 +44709,30 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1123 "parsing/parser.mly" +# 1202 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 44494 "parsing/parser.ml" +# 44715 "parsing/parser.ml" in let _loc__1_ = (_startpos__1_, _endpos__1_) in -# 1839 "parsing/parser.mly" +# 1918 "parsing/parser.mly" ( let loc = make_loc _loc__1_ in let me = Mod.ident ~loc _1 in Opn.mk ~loc me ) -# 44503 "parsing/parser.ml" +# 44724 "parsing/parser.ml" in let _endpos = _endpos__5_ in let _loc__5_ = (_startpos__5_, _endpos__5_) in -# 2855 "parsing/parser.mly" +# 2937 "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) ) -# 44515 "parsing/parser.ml" +# 44736 "parsing/parser.ml" in let _endpos__1_ = _endpos__5_ in @@ -44519,15 +44740,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1156 "parsing/parser.mly" +# 1235 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) -# 44525 "parsing/parser.ml" +# 44746 "parsing/parser.ml" in -# 2674 "parsing/parser.mly" +# 2753 "parsing/parser.mly" ( _1 ) -# 44531 "parsing/parser.ml" +# 44752 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -44575,18 +44796,18 @@ module Tables = struct let _3 = let (_endpos__2_, _startpos__1_) = (_endpos__2_inlined1_, _startpos__1_inlined1_) in let _1 = -# 2860 "parsing/parser.mly" +# 2942 "parsing/parser.mly" (Lident "[]") -# 44581 "parsing/parser.ml" +# 44802 "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 -# 1123 "parsing/parser.mly" +# 1202 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 44590 "parsing/parser.ml" +# 44811 "parsing/parser.ml" in let (_endpos__3_, _startpos__3_) = (_endpos__2_inlined1_, _startpos__1_inlined1_) in @@ -44596,25 +44817,25 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1123 "parsing/parser.mly" +# 1202 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 44602 "parsing/parser.ml" +# 44823 "parsing/parser.ml" in let _loc__1_ = (_startpos__1_, _endpos__1_) in -# 1839 "parsing/parser.mly" +# 1918 "parsing/parser.mly" ( let loc = make_loc _loc__1_ in let me = Mod.ident ~loc _1 in Opn.mk ~loc me ) -# 44611 "parsing/parser.ml" +# 44832 "parsing/parser.ml" in let _loc__3_ = (_startpos__3_, _endpos__3_) in -# 2861 "parsing/parser.mly" +# 2943 "parsing/parser.mly" ( Pexp_open(od, mkexp ~loc:_loc__3_ (Pexp_construct(_3, None))) ) -# 44618 "parsing/parser.ml" +# 44839 "parsing/parser.ml" in let _endpos__1_ = _endpos__2_inlined1_ in @@ -44622,15 +44843,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1156 "parsing/parser.mly" +# 1235 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) -# 44628 "parsing/parser.ml" +# 44849 "parsing/parser.ml" in -# 2674 "parsing/parser.mly" +# 2753 "parsing/parser.mly" ( _1 ) -# 44634 "parsing/parser.ml" +# 44855 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -44683,16 +44904,16 @@ module Tables = struct let _v : (Parsetree.expression) = let _1 = let _1 = let _4 = -# 3119 "parsing/parser.mly" +# 3186 "parsing/parser.mly" ( es ) -# 44689 "parsing/parser.ml" +# 44910 "parsing/parser.ml" in let _loc__5_ = (_startpos__5_, _endpos__5_) in let _loc__3_ = (_startpos__3_, _endpos__3_) in -# 2864 "parsing/parser.mly" +# 2946 "parsing/parser.mly" ( unclosed "[" _loc__3_ "]" _loc__5_ ) -# 44696 "parsing/parser.ml" +# 44917 "parsing/parser.ml" in let _endpos__1_ = _endpos__5_ in @@ -44700,15 +44921,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1156 "parsing/parser.mly" +# 1235 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) -# 44706 "parsing/parser.ml" +# 44927 "parsing/parser.ml" in -# 2674 "parsing/parser.mly" +# 2753 "parsing/parser.mly" ( _1 ) -# 44712 "parsing/parser.ml" +# 44933 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -44801,11 +45022,11 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 4032 "parsing/parser.mly" +# 4104 "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 ) -# 44809 "parsing/parser.ml" +# 45030 "parsing/parser.ml" in let _5 = @@ -44813,15 +45034,15 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4476 "parsing/parser.mly" +# 4548 "parsing/parser.mly" ( _1 ) -# 44819 "parsing/parser.ml" +# 45040 "parsing/parser.ml" in -# 4489 "parsing/parser.mly" +# 4561 "parsing/parser.mly" ( _1, _2 ) -# 44825 "parsing/parser.ml" +# 45046 "parsing/parser.ml" in let od = @@ -44830,18 +45051,18 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1123 "parsing/parser.mly" +# 1202 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 44836 "parsing/parser.ml" +# 45057 "parsing/parser.ml" in let _loc__1_ = (_startpos__1_, _endpos__1_) in -# 1839 "parsing/parser.mly" +# 1918 "parsing/parser.mly" ( let loc = make_loc _loc__1_ in let me = Mod.ident ~loc _1 in Opn.mk ~loc me ) -# 44845 "parsing/parser.ml" +# 45066 "parsing/parser.ml" in let _startpos_od_ = _startpos__1_ in @@ -44849,12 +45070,12 @@ module Tables = struct let _symbolstartpos = _startpos_od_ in let _sloc = (_symbolstartpos, _endpos) in -# 2867 "parsing/parser.mly" +# 2949 "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) ) -# 44858 "parsing/parser.ml" +# 45079 "parsing/parser.ml" in let _endpos__1_ = _endpos__9_ in @@ -44862,15 +45083,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1156 "parsing/parser.mly" +# 1235 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) -# 44868 "parsing/parser.ml" +# 45089 "parsing/parser.ml" in -# 2674 "parsing/parser.mly" +# 2753 "parsing/parser.mly" ( _1 ) -# 44874 "parsing/parser.ml" +# 45095 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -44955,23 +45176,23 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4476 "parsing/parser.mly" +# 4548 "parsing/parser.mly" ( _1 ) -# 44961 "parsing/parser.ml" +# 45182 "parsing/parser.ml" in -# 4489 "parsing/parser.mly" +# 4561 "parsing/parser.mly" ( _1, _2 ) -# 44967 "parsing/parser.ml" +# 45188 "parsing/parser.ml" in let _loc__8_ = (_startpos__8_, _endpos__8_) in let _loc__3_ = (_startpos__3_, _endpos__3_) in -# 2873 "parsing/parser.mly" +# 2955 "parsing/parser.mly" ( unclosed "(" _loc__3_ ")" _loc__8_ ) -# 44975 "parsing/parser.ml" +# 45196 "parsing/parser.ml" in let _endpos__1_ = _endpos__8_ in @@ -44979,15 +45200,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1156 "parsing/parser.mly" +# 1235 "parsing/parser.mly" ( mkexp ~loc:_sloc _1 ) -# 44985 "parsing/parser.ml" +# 45206 "parsing/parser.ml" in -# 2674 "parsing/parser.mly" +# 2753 "parsing/parser.mly" ( _1 ) -# 44991 "parsing/parser.ml" +# 45212 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -45026,20 +45247,20 @@ module Tables = struct let _v : (Parsetree.expression) = let _1 = let _1 = let _2 = -# 3119 "parsing/parser.mly" +# 3186 "parsing/parser.mly" ( es ) -# 45032 "parsing/parser.ml" +# 45253 "parsing/parser.ml" in -# 2763 "parsing/parser.mly" +# 2845 "parsing/parser.mly" ( Generic_array.Simple.Literal _2 ) -# 45037 "parsing/parser.ml" +# 45258 "parsing/parser.ml" in -# 2772 "parsing/parser.mly" +# 2854 "parsing/parser.mly" ( Generic_array.Expression.Simple _1 ) -# 45043 "parsing/parser.ml" +# 45264 "parsing/parser.ml" in let _endpos__1_ = _endpos__3_ in @@ -45047,7 +45268,7 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2679 "parsing/parser.mly" +# 2758 "parsing/parser.mly" ( Generic_array.Expression.to_expression "[:" ":]" ~loc:_sloc @@ -45057,7 +45278,7 @@ module Tables = struct (Iaexp_immutable_array elts)) _1 ) -# 45061 "parsing/parser.ml" +# 45282 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -45096,22 +45317,22 @@ module Tables = struct let _v : (Parsetree.expression) = let _1 = let _1 = let _2 = -# 3119 "parsing/parser.mly" +# 3186 "parsing/parser.mly" ( es ) -# 45102 "parsing/parser.ml" +# 45323 "parsing/parser.ml" in let _loc__3_ = (_startpos__3_, _endpos__3_) in let _loc__1_ = (_startpos__1_, _endpos__1_) in -# 2765 "parsing/parser.mly" +# 2847 "parsing/parser.mly" ( Generic_array.Simple.Unclosed(_loc__1_,_loc__3_) ) -# 45109 "parsing/parser.ml" +# 45330 "parsing/parser.ml" in -# 2772 "parsing/parser.mly" +# 2854 "parsing/parser.mly" ( Generic_array.Expression.Simple _1 ) -# 45115 "parsing/parser.ml" +# 45336 "parsing/parser.ml" in let _endpos__1_ = _endpos__3_ in @@ -45119,7 +45340,7 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2679 "parsing/parser.mly" +# 2758 "parsing/parser.mly" ( Generic_array.Expression.to_expression "[:" ":]" ~loc:_sloc @@ -45129,7 +45350,7 @@ module Tables = struct (Iaexp_immutable_array elts)) _1 ) -# 45133 "parsing/parser.ml" +# 45354 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -45160,14 +45381,14 @@ module Tables = struct let _endpos = _endpos__2_ in let _v : (Parsetree.expression) = let _1 = let _1 = -# 2767 "parsing/parser.mly" +# 2849 "parsing/parser.mly" ( Generic_array.Simple.Literal [] ) -# 45166 "parsing/parser.ml" +# 45387 "parsing/parser.ml" in -# 2772 "parsing/parser.mly" +# 2854 "parsing/parser.mly" ( Generic_array.Expression.Simple _1 ) -# 45171 "parsing/parser.ml" +# 45392 "parsing/parser.ml" in let _endpos__1_ = _endpos__2_ in @@ -45175,7 +45396,7 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2679 "parsing/parser.mly" +# 2758 "parsing/parser.mly" ( Generic_array.Expression.to_expression "[:" ":]" ~loc:_sloc @@ -45185,7 +45406,7 @@ module Tables = struct (Iaexp_immutable_array elts)) _1 ) -# 45189 "parsing/parser.ml" +# 45410 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -45237,9 +45458,9 @@ module Tables = struct let _endpos = _endpos__5_ in let _v : (Parsetree.expression) = let _1 = let _4 = -# 3119 "parsing/parser.mly" +# 3186 "parsing/parser.mly" ( es ) -# 45243 "parsing/parser.ml" +# 45464 "parsing/parser.ml" in let od = let _1 = @@ -45247,26 +45468,26 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1123 "parsing/parser.mly" +# 1202 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 45253 "parsing/parser.ml" +# 45474 "parsing/parser.ml" in let _loc__1_ = (_startpos__1_, _endpos__1_) in -# 1839 "parsing/parser.mly" +# 1918 "parsing/parser.mly" ( let loc = make_loc _loc__1_ in let me = Mod.ident ~loc _1 in Opn.mk ~loc me ) -# 45262 "parsing/parser.ml" +# 45483 "parsing/parser.ml" in let _endpos = _endpos__5_ in -# 2774 "parsing/parser.mly" +# 2856 "parsing/parser.mly" ( Generic_array.Expression.Opened_literal(od, _startpos__3_, _endpos, _4) ) -# 45270 "parsing/parser.ml" +# 45491 "parsing/parser.ml" in let _endpos__1_ = _endpos__5_ in @@ -45274,7 +45495,7 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2679 "parsing/parser.mly" +# 2758 "parsing/parser.mly" ( Generic_array.Expression.to_expression "[:" ":]" ~loc:_sloc @@ -45284,7 +45505,7 @@ module Tables = struct (Iaexp_immutable_array elts)) _1 ) -# 45288 "parsing/parser.ml" +# 45509 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -45334,27 +45555,27 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1123 "parsing/parser.mly" +# 1202 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 45340 "parsing/parser.ml" +# 45561 "parsing/parser.ml" in let _loc__1_ = (_startpos__1_, _endpos__1_) in -# 1839 "parsing/parser.mly" +# 1918 "parsing/parser.mly" ( let loc = make_loc _loc__1_ in let me = Mod.ident ~loc _1 in Opn.mk ~loc me ) -# 45349 "parsing/parser.ml" +# 45570 "parsing/parser.ml" in let _endpos = _endpos__4_ in -# 2777 "parsing/parser.mly" +# 2859 "parsing/parser.mly" ( (* TODO: review the location of Pexp_array *) Generic_array.Expression.Opened_literal(od, _startpos__3_, _endpos, []) ) -# 45358 "parsing/parser.ml" +# 45579 "parsing/parser.ml" in let _endpos__1_ = _endpos__4_ in @@ -45362,7 +45583,7 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2679 "parsing/parser.mly" +# 2758 "parsing/parser.mly" ( Generic_array.Expression.to_expression "[:" ":]" ~loc:_sloc @@ -45372,7 +45593,7 @@ module Tables = struct (Iaexp_immutable_array elts)) _1 ) -# 45376 "parsing/parser.ml" +# 45597 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -45424,16 +45645,16 @@ module Tables = struct let _endpos = _endpos__5_ in let _v : (Parsetree.expression) = let _1 = let _4 = -# 3119 "parsing/parser.mly" +# 3186 "parsing/parser.mly" ( es ) -# 45430 "parsing/parser.ml" +# 45651 "parsing/parser.ml" in let _loc__5_ = (_startpos__5_, _endpos__5_) in let _loc__3_ = (_startpos__3_, _endpos__3_) in -# 2782 "parsing/parser.mly" +# 2864 "parsing/parser.mly" ( Generic_array.Expression.Simple (Unclosed(_loc__3_, _loc__5_)) ) -# 45437 "parsing/parser.ml" +# 45658 "parsing/parser.ml" in let _endpos__1_ = _endpos__5_ in @@ -45441,7 +45662,7 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2679 "parsing/parser.mly" +# 2758 "parsing/parser.mly" ( Generic_array.Expression.to_expression "[:" ":]" ~loc:_sloc @@ -45451,7 +45672,7 @@ module Tables = struct (Iaexp_immutable_array elts)) _1 ) -# 45455 "parsing/parser.ml" +# 45676 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -45477,9 +45698,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2688 "parsing/parser.mly" +# 2767 "parsing/parser.mly" ( Constant.to_expression ~loc:_sloc _1 ) -# 45483 "parsing/parser.ml" +# 45704 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -45529,24 +45750,24 @@ module Tables = struct let xs = # 253 "" ( List.rev xs ) -# 45533 "parsing/parser.ml" +# 45754 "parsing/parser.ml" in -# 1228 "parsing/parser.mly" +# 1307 "parsing/parser.mly" ( xs ) -# 45538 "parsing/parser.ml" +# 45759 "parsing/parser.ml" in -# 2744 "parsing/parser.mly" +# 2826 "parsing/parser.mly" ( Jane_syntax.Comprehensions.{ body = _2; clauses = _3 } ) -# 45544 "parsing/parser.ml" +# 45765 "parsing/parser.ml" in -# 2749 "parsing/parser.mly" +# 2831 "parsing/parser.mly" ( Jane_syntax.Comprehensions.Cexp_list_comprehension _1 ) -# 45550 "parsing/parser.ml" +# 45771 "parsing/parser.ml" in let _endpos__1_ = _endpos__4_ in @@ -45554,15 +45775,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2758 "parsing/parser.mly" +# 2840 "parsing/parser.mly" ( Jane_syntax.Comprehensions.expr_of ~loc:(make_loc _sloc) ~attrs:[] _1 ) -# 45560 "parsing/parser.ml" +# 45781 "parsing/parser.ml" in -# 2689 "parsing/parser.mly" +# 2768 "parsing/parser.mly" ( _1 ) -# 45566 "parsing/parser.ml" +# 45787 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -45612,24 +45833,24 @@ module Tables = struct let xs = # 253 "" ( List.rev xs ) -# 45616 "parsing/parser.ml" +# 45837 "parsing/parser.ml" in -# 1228 "parsing/parser.mly" +# 1307 "parsing/parser.mly" ( xs ) -# 45621 "parsing/parser.ml" +# 45842 "parsing/parser.ml" in -# 2744 "parsing/parser.mly" +# 2826 "parsing/parser.mly" ( Jane_syntax.Comprehensions.{ body = _2; clauses = _3 } ) -# 45627 "parsing/parser.ml" +# 45848 "parsing/parser.ml" in -# 2751 "parsing/parser.mly" +# 2833 "parsing/parser.mly" ( Jane_syntax.Comprehensions.Cexp_array_comprehension (Mutable, _1) ) -# 45633 "parsing/parser.ml" +# 45854 "parsing/parser.ml" in let _endpos__1_ = _endpos__4_ in @@ -45637,15 +45858,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2758 "parsing/parser.mly" +# 2840 "parsing/parser.mly" ( Jane_syntax.Comprehensions.expr_of ~loc:(make_loc _sloc) ~attrs:[] _1 ) -# 45643 "parsing/parser.ml" +# 45864 "parsing/parser.ml" in -# 2689 "parsing/parser.mly" +# 2768 "parsing/parser.mly" ( _1 ) -# 45649 "parsing/parser.ml" +# 45870 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -45695,24 +45916,24 @@ module Tables = struct let xs = # 253 "" ( List.rev xs ) -# 45699 "parsing/parser.ml" +# 45920 "parsing/parser.ml" in -# 1228 "parsing/parser.mly" +# 1307 "parsing/parser.mly" ( xs ) -# 45704 "parsing/parser.ml" +# 45925 "parsing/parser.ml" in -# 2744 "parsing/parser.mly" +# 2826 "parsing/parser.mly" ( Jane_syntax.Comprehensions.{ body = _2; clauses = _3 } ) -# 45710 "parsing/parser.ml" +# 45931 "parsing/parser.ml" in -# 2753 "parsing/parser.mly" +# 2835 "parsing/parser.mly" ( Jane_syntax.Comprehensions.Cexp_array_comprehension (Immutable, _1) ) -# 45716 "parsing/parser.ml" +# 45937 "parsing/parser.ml" in let _endpos__1_ = _endpos__4_ in @@ -45720,15 +45941,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2758 "parsing/parser.mly" +# 2840 "parsing/parser.mly" ( Jane_syntax.Comprehensions.expr_of ~loc:(make_loc _sloc) ~attrs:[] _1 ) -# 45726 "parsing/parser.ml" +# 45947 "parsing/parser.ml" in -# 2689 "parsing/parser.mly" +# 2768 "parsing/parser.mly" ( _1 ) -# 45732 "parsing/parser.ml" +# 45953 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -45757,30 +45978,30 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1123 "parsing/parser.mly" +# 1202 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 45763 "parsing/parser.ml" +# 45984 "parsing/parser.ml" in -# 3213 "parsing/parser.mly" +# 3280 "parsing/parser.mly" ( Ppat_var (_1) ) -# 45769 "parsing/parser.ml" +# 45990 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1158 "parsing/parser.mly" +# 1237 "parsing/parser.mly" ( mkpat ~loc:_sloc _1 ) -# 45778 "parsing/parser.ml" +# 45999 "parsing/parser.ml" in -# 3214 "parsing/parser.mly" +# 3281 "parsing/parser.mly" ( _1 ) -# 45784 "parsing/parser.ml" +# 46005 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -45803,9 +46024,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Parsetree.pattern) = -# 3215 "parsing/parser.mly" +# 3282 "parsing/parser.mly" ( _1 ) -# 45809 "parsing/parser.ml" +# 46030 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -45845,9 +46066,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 3220 "parsing/parser.mly" +# 3287 "parsing/parser.mly" ( reloc_pat ~loc:_sloc _2 ) -# 45851 "parsing/parser.ml" +# 46072 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -45870,9 +46091,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Parsetree.pattern) = -# 3222 "parsing/parser.mly" +# 3289 "parsing/parser.mly" ( _1 ) -# 45876 "parsing/parser.ml" +# 46097 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -45935,9 +46156,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1123 "parsing/parser.mly" +# 1202 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 45941 "parsing/parser.ml" +# 46162 "parsing/parser.ml" in let _3 = @@ -45945,24 +46166,24 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4476 "parsing/parser.mly" +# 4548 "parsing/parser.mly" ( _1 ) -# 45951 "parsing/parser.ml" +# 46172 "parsing/parser.ml" in -# 4489 "parsing/parser.mly" +# 4561 "parsing/parser.mly" ( _1, _2 ) -# 45957 "parsing/parser.ml" +# 46178 "parsing/parser.ml" in let _endpos = _endpos__5_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 3224 "parsing/parser.mly" +# 3291 "parsing/parser.mly" ( mkpat_attrs ~loc:_sloc (Ppat_unpack _4) _3 ) -# 45966 "parsing/parser.ml" +# 46187 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -46039,11 +46260,11 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 4032 "parsing/parser.mly" +# 4104 "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 ) -# 46047 "parsing/parser.ml" +# 46268 "parsing/parser.ml" in let _4 = @@ -46052,9 +46273,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1123 "parsing/parser.mly" +# 1202 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 46058 "parsing/parser.ml" +# 46279 "parsing/parser.ml" in let (_endpos__4_, _startpos__4_) = (_endpos__1_inlined3_, _startpos__1_inlined3_) in @@ -46063,15 +46284,15 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4476 "parsing/parser.mly" +# 4548 "parsing/parser.mly" ( _1 ) -# 46069 "parsing/parser.ml" +# 46290 "parsing/parser.ml" in -# 4489 "parsing/parser.mly" +# 4561 "parsing/parser.mly" ( _1, _2 ) -# 46075 "parsing/parser.ml" +# 46296 "parsing/parser.ml" in let _endpos = _endpos__7_ in @@ -46079,11 +46300,11 @@ module Tables = struct let _loc__4_ = (_startpos__4_, _endpos__4_) in let _sloc = (_symbolstartpos, _endpos) in -# 3226 "parsing/parser.mly" +# 3293 "parsing/parser.mly" ( mkpat_attrs ~loc:_sloc (Ppat_constraint(mkpat ~loc:_loc__4_ (Ppat_unpack _4), _6)) _3 ) -# 46087 "parsing/parser.ml" +# 46308 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -46107,23 +46328,23 @@ module Tables = struct let _endpos = _endpos__1_ in let _v : (Parsetree.pattern) = let _1 = let _1 = -# 3235 "parsing/parser.mly" +# 3302 "parsing/parser.mly" ( Ppat_any ) -# 46113 "parsing/parser.ml" +# 46334 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1158 "parsing/parser.mly" +# 1237 "parsing/parser.mly" ( mkpat ~loc:_sloc _1 ) -# 46121 "parsing/parser.ml" +# 46342 "parsing/parser.ml" in -# 3230 "parsing/parser.mly" +# 3297 "parsing/parser.mly" ( _1 ) -# 46127 "parsing/parser.ml" +# 46348 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -46161,24 +46382,24 @@ module Tables = struct let _endpos = _endpos__3_ in let _v : (Parsetree.pattern) = let _1 = let _1 = -# 3237 "parsing/parser.mly" +# 3304 "parsing/parser.mly" ( Ppat_interval (_1, _3) ) -# 46167 "parsing/parser.ml" +# 46388 "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 -# 1158 "parsing/parser.mly" +# 1237 "parsing/parser.mly" ( mkpat ~loc:_sloc _1 ) -# 46176 "parsing/parser.ml" +# 46397 "parsing/parser.ml" in -# 3230 "parsing/parser.mly" +# 3297 "parsing/parser.mly" ( _1 ) -# 46182 "parsing/parser.ml" +# 46403 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -46207,30 +46428,30 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1123 "parsing/parser.mly" +# 1202 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 46213 "parsing/parser.ml" +# 46434 "parsing/parser.ml" in -# 3239 "parsing/parser.mly" +# 3306 "parsing/parser.mly" ( Ppat_construct(_1, None) ) -# 46219 "parsing/parser.ml" +# 46440 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1158 "parsing/parser.mly" +# 1237 "parsing/parser.mly" ( mkpat ~loc:_sloc _1 ) -# 46228 "parsing/parser.ml" +# 46449 "parsing/parser.ml" in -# 3230 "parsing/parser.mly" +# 3297 "parsing/parser.mly" ( _1 ) -# 46234 "parsing/parser.ml" +# 46455 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -46254,23 +46475,23 @@ module Tables = struct let _endpos = _endpos__1_ in let _v : (Parsetree.pattern) = let _1 = let _1 = -# 3241 "parsing/parser.mly" +# 3308 "parsing/parser.mly" ( Ppat_variant(_1, None) ) -# 46260 "parsing/parser.ml" +# 46481 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1158 "parsing/parser.mly" +# 1237 "parsing/parser.mly" ( mkpat ~loc:_sloc _1 ) -# 46268 "parsing/parser.ml" +# 46489 "parsing/parser.ml" in -# 3230 "parsing/parser.mly" +# 3297 "parsing/parser.mly" ( _1 ) -# 46274 "parsing/parser.ml" +# 46495 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -46307,20 +46528,20 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1123 "parsing/parser.mly" +# 1202 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 46313 "parsing/parser.ml" +# 46534 "parsing/parser.ml" in let _1 = -# 2791 "parsing/parser.mly" +# 2873 "parsing/parser.mly" ( () ) -# 46319 "parsing/parser.ml" +# 46540 "parsing/parser.ml" in -# 3243 "parsing/parser.mly" +# 3310 "parsing/parser.mly" ( Ppat_type (_2) ) -# 46324 "parsing/parser.ml" +# 46545 "parsing/parser.ml" in let _endpos__1_ = _endpos__1_inlined1_ in @@ -46328,15 +46549,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1158 "parsing/parser.mly" +# 1237 "parsing/parser.mly" ( mkpat ~loc:_sloc _1 ) -# 46334 "parsing/parser.ml" +# 46555 "parsing/parser.ml" in -# 3230 "parsing/parser.mly" +# 3297 "parsing/parser.mly" ( _1 ) -# 46340 "parsing/parser.ml" +# 46561 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -46373,20 +46594,20 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1123 "parsing/parser.mly" +# 1202 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 46379 "parsing/parser.ml" +# 46600 "parsing/parser.ml" in let _1 = -# 2792 "parsing/parser.mly" +# 2874 "parsing/parser.mly" ( () ) -# 46385 "parsing/parser.ml" +# 46606 "parsing/parser.ml" in -# 3243 "parsing/parser.mly" +# 3310 "parsing/parser.mly" ( Ppat_type (_2) ) -# 46390 "parsing/parser.ml" +# 46611 "parsing/parser.ml" in let _endpos__1_ = _endpos__1_inlined1_ in @@ -46394,15 +46615,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1158 "parsing/parser.mly" +# 1237 "parsing/parser.mly" ( mkpat ~loc:_sloc _1 ) -# 46400 "parsing/parser.ml" +# 46621 "parsing/parser.ml" in -# 3230 "parsing/parser.mly" +# 3297 "parsing/parser.mly" ( _1 ) -# 46406 "parsing/parser.ml" +# 46627 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -46445,15 +46666,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1123 "parsing/parser.mly" +# 1202 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 46451 "parsing/parser.ml" +# 46672 "parsing/parser.ml" in -# 3245 "parsing/parser.mly" +# 3312 "parsing/parser.mly" ( Ppat_open(_1, _3) ) -# 46457 "parsing/parser.ml" +# 46678 "parsing/parser.ml" in let _endpos__1_ = _endpos__3_ in @@ -46461,15 +46682,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1158 "parsing/parser.mly" +# 1237 "parsing/parser.mly" ( mkpat ~loc:_sloc _1 ) -# 46467 "parsing/parser.ml" +# 46688 "parsing/parser.ml" in -# 3230 "parsing/parser.mly" +# 3297 "parsing/parser.mly" ( _1 ) -# 46473 "parsing/parser.ml" +# 46694 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -46517,18 +46738,18 @@ module Tables = struct let _3 = let (_endpos__2_, _startpos__1_) = (_endpos__2_inlined1_, _startpos__1_inlined1_) in let _1 = -# 3246 "parsing/parser.mly" +# 3313 "parsing/parser.mly" (Lident "[]") -# 46523 "parsing/parser.ml" +# 46744 "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 -# 1123 "parsing/parser.mly" +# 1202 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 46532 "parsing/parser.ml" +# 46753 "parsing/parser.ml" in let _endpos__3_ = _endpos__2_inlined1_ in @@ -46537,18 +46758,18 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1123 "parsing/parser.mly" +# 1202 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 46543 "parsing/parser.ml" +# 46764 "parsing/parser.ml" in let _endpos = _endpos__3_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 3247 "parsing/parser.mly" +# 3314 "parsing/parser.mly" ( Ppat_open(_1, mkpat ~loc:_sloc (Ppat_construct(_3, None))) ) -# 46552 "parsing/parser.ml" +# 46773 "parsing/parser.ml" in let _endpos__1_ = _endpos__2_inlined1_ in @@ -46556,15 +46777,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1158 "parsing/parser.mly" +# 1237 "parsing/parser.mly" ( mkpat ~loc:_sloc _1 ) -# 46562 "parsing/parser.ml" +# 46783 "parsing/parser.ml" in -# 3230 "parsing/parser.mly" +# 3297 "parsing/parser.mly" ( _1 ) -# 46568 "parsing/parser.ml" +# 46789 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -46612,18 +46833,18 @@ module Tables = struct let _3 = let (_endpos__2_, _startpos__1_) = (_endpos__2_inlined1_, _startpos__1_inlined1_) in let _1 = -# 3248 "parsing/parser.mly" +# 3315 "parsing/parser.mly" (Lident "()") -# 46618 "parsing/parser.ml" +# 46839 "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 -# 1123 "parsing/parser.mly" +# 1202 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 46627 "parsing/parser.ml" +# 46848 "parsing/parser.ml" in let _endpos__3_ = _endpos__2_inlined1_ in @@ -46632,18 +46853,18 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1123 "parsing/parser.mly" +# 1202 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 46638 "parsing/parser.ml" +# 46859 "parsing/parser.ml" in let _endpos = _endpos__3_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 3249 "parsing/parser.mly" +# 3316 "parsing/parser.mly" ( Ppat_open(_1, mkpat ~loc:_sloc (Ppat_construct(_3, None))) ) -# 46647 "parsing/parser.ml" +# 46868 "parsing/parser.ml" in let _endpos__1_ = _endpos__2_inlined1_ in @@ -46651,15 +46872,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1158 "parsing/parser.mly" +# 1237 "parsing/parser.mly" ( mkpat ~loc:_sloc _1 ) -# 46657 "parsing/parser.ml" +# 46878 "parsing/parser.ml" in -# 3230 "parsing/parser.mly" +# 3297 "parsing/parser.mly" ( _1 ) -# 46663 "parsing/parser.ml" +# 46884 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -46716,15 +46937,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1123 "parsing/parser.mly" +# 1202 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 46722 "parsing/parser.ml" +# 46943 "parsing/parser.ml" in -# 3251 "parsing/parser.mly" +# 3318 "parsing/parser.mly" ( Ppat_open (_1, _4) ) -# 46728 "parsing/parser.ml" +# 46949 "parsing/parser.ml" in let _endpos__1_ = _endpos__5_ in @@ -46732,15 +46953,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1158 "parsing/parser.mly" +# 1237 "parsing/parser.mly" ( mkpat ~loc:_sloc _1 ) -# 46738 "parsing/parser.ml" +# 46959 "parsing/parser.ml" in -# 3230 "parsing/parser.mly" +# 3297 "parsing/parser.mly" ( _1 ) -# 46744 "parsing/parser.ml" +# 46965 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -46795,9 +47016,9 @@ module Tables = struct let _loc__5_ = (_startpos__5_, _endpos__5_) in let _loc__3_ = (_startpos__3_, _endpos__3_) in -# 3253 "parsing/parser.mly" +# 3320 "parsing/parser.mly" ( unclosed "(" _loc__3_ ")" _loc__5_ ) -# 46801 "parsing/parser.ml" +# 47022 "parsing/parser.ml" in let _endpos__1_ = _endpos__5_ in @@ -46805,15 +47026,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1158 "parsing/parser.mly" +# 1237 "parsing/parser.mly" ( mkpat ~loc:_sloc _1 ) -# 46811 "parsing/parser.ml" +# 47032 "parsing/parser.ml" in -# 3230 "parsing/parser.mly" +# 3297 "parsing/parser.mly" ( _1 ) -# 46817 "parsing/parser.ml" +# 47038 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -46860,9 +47081,9 @@ module Tables = struct let _1 = let _loc__4_ = (_startpos__4_, _endpos__4_) in -# 3255 "parsing/parser.mly" +# 3322 "parsing/parser.mly" ( expecting _loc__4_ "pattern" ) -# 46866 "parsing/parser.ml" +# 47087 "parsing/parser.ml" in let _endpos__1_ = _endpos__4_ in @@ -46870,15 +47091,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1158 "parsing/parser.mly" +# 1237 "parsing/parser.mly" ( mkpat ~loc:_sloc _1 ) -# 46876 "parsing/parser.ml" +# 47097 "parsing/parser.ml" in -# 3230 "parsing/parser.mly" +# 3297 "parsing/parser.mly" ( _1 ) -# 46882 "parsing/parser.ml" +# 47103 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -46919,9 +47140,9 @@ module Tables = struct let _loc__3_ = (_startpos__3_, _endpos__3_) in let _loc__1_ = (_startpos__1_, _endpos__1_) in -# 3257 "parsing/parser.mly" +# 3324 "parsing/parser.mly" ( unclosed "(" _loc__1_ ")" _loc__3_ ) -# 46925 "parsing/parser.ml" +# 47146 "parsing/parser.ml" in let _endpos__1_ = _endpos__3_ in @@ -46929,15 +47150,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1158 "parsing/parser.mly" +# 1237 "parsing/parser.mly" ( mkpat ~loc:_sloc _1 ) -# 46935 "parsing/parser.ml" +# 47156 "parsing/parser.ml" in -# 3230 "parsing/parser.mly" +# 3297 "parsing/parser.mly" ( _1 ) -# 46941 "parsing/parser.ml" +# 47162 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -46989,24 +47210,24 @@ module Tables = struct let _endpos = _endpos__5_ in let _v : (Parsetree.pattern) = let _1 = let _1 = -# 3259 "parsing/parser.mly" +# 3326 "parsing/parser.mly" ( Ppat_constraint(_2, _4) ) -# 46995 "parsing/parser.ml" +# 47216 "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 -# 1158 "parsing/parser.mly" +# 1237 "parsing/parser.mly" ( mkpat ~loc:_sloc _1 ) -# 47004 "parsing/parser.ml" +# 47225 "parsing/parser.ml" in -# 3230 "parsing/parser.mly" +# 3297 "parsing/parser.mly" ( _1 ) -# 47010 "parsing/parser.ml" +# 47231 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -47061,9 +47282,9 @@ module Tables = struct let _loc__5_ = (_startpos__5_, _endpos__5_) in let _loc__1_ = (_startpos__1_, _endpos__1_) in -# 3261 "parsing/parser.mly" +# 3328 "parsing/parser.mly" ( unclosed "(" _loc__1_ ")" _loc__5_ ) -# 47067 "parsing/parser.ml" +# 47288 "parsing/parser.ml" in let _endpos__1_ = _endpos__5_ in @@ -47071,15 +47292,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1158 "parsing/parser.mly" +# 1237 "parsing/parser.mly" ( mkpat ~loc:_sloc _1 ) -# 47077 "parsing/parser.ml" +# 47298 "parsing/parser.ml" in -# 3230 "parsing/parser.mly" +# 3297 "parsing/parser.mly" ( _1 ) -# 47083 "parsing/parser.ml" +# 47304 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -47126,9 +47347,9 @@ module Tables = struct let _1 = let _loc__4_ = (_startpos__4_, _endpos__4_) in -# 3263 "parsing/parser.mly" +# 3330 "parsing/parser.mly" ( expecting _loc__4_ "type" ) -# 47132 "parsing/parser.ml" +# 47353 "parsing/parser.ml" in let _endpos__1_ = _endpos__4_ in @@ -47136,15 +47357,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1158 "parsing/parser.mly" +# 1237 "parsing/parser.mly" ( mkpat ~loc:_sloc _1 ) -# 47142 "parsing/parser.ml" +# 47363 "parsing/parser.ml" in -# 3230 "parsing/parser.mly" +# 3297 "parsing/parser.mly" ( _1 ) -# 47148 "parsing/parser.ml" +# 47369 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -47223,11 +47444,11 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 4032 "parsing/parser.mly" +# 4104 "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 ) -# 47231 "parsing/parser.ml" +# 47452 "parsing/parser.ml" in let _3 = @@ -47235,23 +47456,23 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4476 "parsing/parser.mly" +# 4548 "parsing/parser.mly" ( _1 ) -# 47241 "parsing/parser.ml" +# 47462 "parsing/parser.ml" in -# 4489 "parsing/parser.mly" +# 4561 "parsing/parser.mly" ( _1, _2 ) -# 47247 "parsing/parser.ml" +# 47468 "parsing/parser.ml" in let _loc__7_ = (_startpos__7_, _endpos__7_) in let _loc__1_ = (_startpos__1_, _endpos__1_) in -# 3266 "parsing/parser.mly" +# 3333 "parsing/parser.mly" ( unclosed "(" _loc__1_ ")" _loc__7_ ) -# 47255 "parsing/parser.ml" +# 47476 "parsing/parser.ml" in let _endpos__1_ = _endpos__7_ in @@ -47259,15 +47480,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1158 "parsing/parser.mly" +# 1237 "parsing/parser.mly" ( mkpat ~loc:_sloc _1 ) -# 47265 "parsing/parser.ml" +# 47486 "parsing/parser.ml" in -# 3230 "parsing/parser.mly" +# 3297 "parsing/parser.mly" ( _1 ) -# 47271 "parsing/parser.ml" +# 47492 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -47291,23 +47512,23 @@ module Tables = struct let _endpos = _endpos__1_ in let _v : (Parsetree.pattern) = let _1 = let _1 = -# 3268 "parsing/parser.mly" +# 3335 "parsing/parser.mly" ( Ppat_extension _1 ) -# 47297 "parsing/parser.ml" +# 47518 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1158 "parsing/parser.mly" +# 1237 "parsing/parser.mly" ( mkpat ~loc:_sloc _1 ) -# 47305 "parsing/parser.ml" +# 47526 "parsing/parser.ml" in -# 3230 "parsing/parser.mly" +# 3297 "parsing/parser.mly" ( _1 ) -# 47311 "parsing/parser.ml" +# 47532 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -47333,9 +47554,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 3231 "parsing/parser.mly" +# 3298 "parsing/parser.mly" ( Constant.to_pattern _1 ~loc:_sloc ) -# 47339 "parsing/parser.ml" +# 47560 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -47354,17 +47575,17 @@ module Tables = struct MenhirLib.EngineTypes.next = _menhir_stack; } = _menhir_stack in let _1 : ( -# 937 "parsing/parser.mly" +# 1014 "parsing/parser.mly" (string) -# 47360 "parsing/parser.ml" +# 47581 "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) = -# 4396 "parsing/parser.mly" +# 4468 "parsing/parser.mly" ( _1 ) -# 47368 "parsing/parser.ml" +# 47589 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -47383,17 +47604,17 @@ module Tables = struct MenhirLib.EngineTypes.next = _menhir_stack; } = _menhir_stack in let _1 : ( -# 990 "parsing/parser.mly" +# 1068 "parsing/parser.mly" (string) -# 47389 "parsing/parser.ml" +# 47610 "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) = -# 4397 "parsing/parser.mly" +# 4469 "parsing/parser.mly" ( _1 ) -# 47397 "parsing/parser.ml" +# 47618 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -47416,9 +47637,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 4398 "parsing/parser.mly" +# 4470 "parsing/parser.mly" ( "and" ) -# 47422 "parsing/parser.ml" +# 47643 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -47441,9 +47662,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 4399 "parsing/parser.mly" +# 4471 "parsing/parser.mly" ( "as" ) -# 47447 "parsing/parser.ml" +# 47668 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -47466,9 +47687,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 4400 "parsing/parser.mly" +# 4472 "parsing/parser.mly" ( "assert" ) -# 47472 "parsing/parser.ml" +# 47693 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -47491,9 +47712,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 4401 "parsing/parser.mly" +# 4473 "parsing/parser.mly" ( "begin" ) -# 47497 "parsing/parser.ml" +# 47718 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -47516,9 +47737,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 4402 "parsing/parser.mly" +# 4474 "parsing/parser.mly" ( "class" ) -# 47522 "parsing/parser.ml" +# 47743 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -47541,9 +47762,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 4403 "parsing/parser.mly" +# 4475 "parsing/parser.mly" ( "constraint" ) -# 47547 "parsing/parser.ml" +# 47768 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -47566,9 +47787,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 4404 "parsing/parser.mly" +# 4476 "parsing/parser.mly" ( "do" ) -# 47572 "parsing/parser.ml" +# 47793 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -47591,9 +47812,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 4405 "parsing/parser.mly" +# 4477 "parsing/parser.mly" ( "done" ) -# 47597 "parsing/parser.ml" +# 47818 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -47616,9 +47837,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 4406 "parsing/parser.mly" +# 4478 "parsing/parser.mly" ( "downto" ) -# 47622 "parsing/parser.ml" +# 47843 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -47641,9 +47862,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 4407 "parsing/parser.mly" +# 4479 "parsing/parser.mly" ( "else" ) -# 47647 "parsing/parser.ml" +# 47868 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -47666,9 +47887,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 4408 "parsing/parser.mly" +# 4480 "parsing/parser.mly" ( "end" ) -# 47672 "parsing/parser.ml" +# 47893 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -47691,9 +47912,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 4409 "parsing/parser.mly" +# 4481 "parsing/parser.mly" ( "exception" ) -# 47697 "parsing/parser.ml" +# 47918 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -47716,9 +47937,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 4410 "parsing/parser.mly" +# 4482 "parsing/parser.mly" ( "external" ) -# 47722 "parsing/parser.ml" +# 47943 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -47741,9 +47962,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 4411 "parsing/parser.mly" +# 4483 "parsing/parser.mly" ( "false" ) -# 47747 "parsing/parser.ml" +# 47968 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -47766,9 +47987,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 4412 "parsing/parser.mly" +# 4484 "parsing/parser.mly" ( "for" ) -# 47772 "parsing/parser.ml" +# 47993 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -47791,9 +48012,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 4413 "parsing/parser.mly" +# 4485 "parsing/parser.mly" ( "fun" ) -# 47797 "parsing/parser.ml" +# 48018 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -47816,9 +48037,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 4414 "parsing/parser.mly" +# 4486 "parsing/parser.mly" ( "function" ) -# 47822 "parsing/parser.ml" +# 48043 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -47841,9 +48062,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 4415 "parsing/parser.mly" +# 4487 "parsing/parser.mly" ( "functor" ) -# 47847 "parsing/parser.ml" +# 48068 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -47866,9 +48087,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 4416 "parsing/parser.mly" +# 4488 "parsing/parser.mly" ( "if" ) -# 47872 "parsing/parser.ml" +# 48093 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -47891,9 +48112,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 4417 "parsing/parser.mly" +# 4489 "parsing/parser.mly" ( "in" ) -# 47897 "parsing/parser.ml" +# 48118 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -47916,9 +48137,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 4418 "parsing/parser.mly" +# 4490 "parsing/parser.mly" ( "include" ) -# 47922 "parsing/parser.ml" +# 48143 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -47941,9 +48162,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 4419 "parsing/parser.mly" +# 4491 "parsing/parser.mly" ( "inherit" ) -# 47947 "parsing/parser.ml" +# 48168 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -47966,9 +48187,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 4420 "parsing/parser.mly" +# 4492 "parsing/parser.mly" ( "initializer" ) -# 47972 "parsing/parser.ml" +# 48193 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -47991,9 +48212,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 4421 "parsing/parser.mly" +# 4493 "parsing/parser.mly" ( "lazy" ) -# 47997 "parsing/parser.ml" +# 48218 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -48016,9 +48237,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 4422 "parsing/parser.mly" +# 4494 "parsing/parser.mly" ( "let" ) -# 48022 "parsing/parser.ml" +# 48243 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -48041,9 +48262,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 4423 "parsing/parser.mly" +# 4495 "parsing/parser.mly" ( "local_" ) -# 48047 "parsing/parser.ml" +# 48268 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -48066,9 +48287,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 4424 "parsing/parser.mly" +# 4496 "parsing/parser.mly" ( "match" ) -# 48072 "parsing/parser.ml" +# 48293 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -48091,9 +48312,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 4425 "parsing/parser.mly" +# 4497 "parsing/parser.mly" ( "method" ) -# 48097 "parsing/parser.ml" +# 48318 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -48116,9 +48337,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 4426 "parsing/parser.mly" +# 4498 "parsing/parser.mly" ( "module" ) -# 48122 "parsing/parser.ml" +# 48343 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -48141,9 +48362,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 4427 "parsing/parser.mly" +# 4499 "parsing/parser.mly" ( "mutable" ) -# 48147 "parsing/parser.ml" +# 48368 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -48166,9 +48387,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 4428 "parsing/parser.mly" +# 4500 "parsing/parser.mly" ( "new" ) -# 48172 "parsing/parser.ml" +# 48393 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -48191,9 +48412,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 4429 "parsing/parser.mly" +# 4501 "parsing/parser.mly" ( "nonrec" ) -# 48197 "parsing/parser.ml" +# 48418 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -48216,9 +48437,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 4430 "parsing/parser.mly" +# 4502 "parsing/parser.mly" ( "object" ) -# 48222 "parsing/parser.ml" +# 48443 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -48241,9 +48462,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 4431 "parsing/parser.mly" +# 4503 "parsing/parser.mly" ( "of" ) -# 48247 "parsing/parser.ml" +# 48468 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -48266,9 +48487,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 4432 "parsing/parser.mly" +# 4504 "parsing/parser.mly" ( "open" ) -# 48272 "parsing/parser.ml" +# 48493 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -48291,9 +48512,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 4433 "parsing/parser.mly" +# 4505 "parsing/parser.mly" ( "or" ) -# 48297 "parsing/parser.ml" +# 48518 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -48316,9 +48537,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 4434 "parsing/parser.mly" +# 4506 "parsing/parser.mly" ( "private" ) -# 48322 "parsing/parser.ml" +# 48543 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -48341,9 +48562,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 4435 "parsing/parser.mly" +# 4507 "parsing/parser.mly" ( "rec" ) -# 48347 "parsing/parser.ml" +# 48568 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -48366,9 +48587,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 4436 "parsing/parser.mly" +# 4508 "parsing/parser.mly" ( "sig" ) -# 48372 "parsing/parser.ml" +# 48593 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -48391,9 +48612,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 4437 "parsing/parser.mly" +# 4509 "parsing/parser.mly" ( "struct" ) -# 48397 "parsing/parser.ml" +# 48618 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -48416,9 +48637,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 4438 "parsing/parser.mly" +# 4510 "parsing/parser.mly" ( "then" ) -# 48422 "parsing/parser.ml" +# 48643 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -48441,9 +48662,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 4439 "parsing/parser.mly" +# 4511 "parsing/parser.mly" ( "to" ) -# 48447 "parsing/parser.ml" +# 48668 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -48466,9 +48687,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 4440 "parsing/parser.mly" +# 4512 "parsing/parser.mly" ( "true" ) -# 48472 "parsing/parser.ml" +# 48693 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -48491,9 +48712,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 4441 "parsing/parser.mly" +# 4513 "parsing/parser.mly" ( "try" ) -# 48497 "parsing/parser.ml" +# 48718 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -48516,9 +48737,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 4442 "parsing/parser.mly" +# 4514 "parsing/parser.mly" ( "type" ) -# 48522 "parsing/parser.ml" +# 48743 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -48541,9 +48762,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 4443 "parsing/parser.mly" +# 4515 "parsing/parser.mly" ( "val" ) -# 48547 "parsing/parser.ml" +# 48768 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -48566,9 +48787,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 4444 "parsing/parser.mly" +# 4516 "parsing/parser.mly" ( "virtual" ) -# 48572 "parsing/parser.ml" +# 48793 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -48591,9 +48812,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 4445 "parsing/parser.mly" +# 4517 "parsing/parser.mly" ( "when" ) -# 48597 "parsing/parser.ml" +# 48818 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -48616,9 +48837,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 4446 "parsing/parser.mly" +# 4518 "parsing/parser.mly" ( "while" ) -# 48622 "parsing/parser.ml" +# 48843 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -48641,9 +48862,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 4447 "parsing/parser.mly" +# 4519 "parsing/parser.mly" ( "with" ) -# 48647 "parsing/parser.ml" +# 48868 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -48666,9 +48887,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Parsetree.type_exception * string Asttypes.loc option) = -# 3601 "parsing/parser.mly" +# 3668 "parsing/parser.mly" ( _1 ) -# 48672 "parsing/parser.ml" +# 48893 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -48742,18 +48963,18 @@ module Tables = struct let _v : (Parsetree.type_exception * string Asttypes.loc option) = let attrs = let _1 = _1_inlined5 in -# 4472 "parsing/parser.mly" +# 4544 "parsing/parser.mly" ( _1 ) -# 48748 "parsing/parser.ml" +# 48969 "parsing/parser.ml" in let _endpos_attrs_ = _endpos__1_inlined5_ in let attrs2 = let _1 = _1_inlined4 in -# 4476 "parsing/parser.mly" +# 4548 "parsing/parser.mly" ( _1 ) -# 48757 "parsing/parser.ml" +# 48978 "parsing/parser.ml" in let lid = @@ -48762,9 +48983,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1123 "parsing/parser.mly" +# 1202 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 48768 "parsing/parser.ml" +# 48989 "parsing/parser.ml" in let id = @@ -48773,30 +48994,30 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1123 "parsing/parser.mly" +# 1202 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 48779 "parsing/parser.ml" +# 49000 "parsing/parser.ml" in let attrs1 = let _1 = _1_inlined1 in -# 4476 "parsing/parser.mly" +# 4548 "parsing/parser.mly" ( _1 ) -# 48787 "parsing/parser.ml" +# 49008 "parsing/parser.ml" in let _endpos = _endpos_attrs_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 3610 "parsing/parser.mly" +# 3677 "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 ) -# 48800 "parsing/parser.ml" +# 49021 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -48825,10 +49046,10 @@ module Tables = struct let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in - let _v : (Parsetree.expression) = -# 3024 "parsing/parser.mly" - ( _2 ) -# 48832 "parsing/parser.ml" + let _v : ((modes * (Lexing.position * Lexing.position)) list -> Parsetree.expression) = +# 3103 "parsing/parser.mly" + ( fun _ -> _2 ) +# 49053 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -48852,18 +49073,18 @@ module Tables = struct MenhirLib.EngineTypes.next = _menhir_stack; }; } = _menhir_stack in - let _2 : (Parsetree.expression) = Obj.magic _2 in + let _2 : ((modes * (Lexing.position * Lexing.position)) list -> Parsetree.expression) = Obj.magic _2 in let _1 : (Asttypes.arg_label * Parsetree.expression option * Parsetree.pattern) = 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.expression) = let _endpos = _endpos__2_ in + let _v : ((modes * (Lexing.position * Lexing.position)) list -> Parsetree.expression) = let _endpos = _endpos__2_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 3026 "parsing/parser.mly" - ( let (l, o, p) = _1 in ghexp ~loc:_sloc (Pexp_fun(l, o, p, _2)) ) -# 48867 "parsing/parser.ml" +# 3105 "parsing/parser.mly" + ( fun flags -> let (l, o, p) = _1 in ghexp ~loc:_sloc (Pexp_fun(l, o, p, _2 flags)) ) +# 49088 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -48905,7 +49126,7 @@ module Tables = struct }; }; } = _menhir_stack in - let _5 : (Parsetree.expression) = Obj.magic _5 in + let _5 : ((modes * (Lexing.position * Lexing.position)) list -> Parsetree.expression) = Obj.magic _5 in let _4 : unit = Obj.magic _4 in let _3 : ((string Asttypes.loc * Asttypes.layout_annotation option) list) = Obj.magic _3 in let _2 : unit = Obj.magic _2 in @@ -48913,13 +49134,13 @@ module Tables = struct let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in let _endpos = _endpos__5_ in - let _v : (Parsetree.expression) = let _endpos = _endpos__5_ in + let _v : ((modes * (Lexing.position * Lexing.position)) list -> Parsetree.expression) = let _endpos = _endpos__5_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 3028 "parsing/parser.mly" - ( mk_newtypes ~loc:_sloc _3 _5 ) -# 48923 "parsing/parser.ml" +# 3107 "parsing/parser.mly" + ( fun flags -> mk_newtypes ~loc:_sloc _3 (_5 flags) ) +# 49144 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -48973,38 +49194,38 @@ module Tables = struct }; }; } = _menhir_stack in - let _7 : (Parsetree.expression) = Obj.magic _7 in + let _7 : ((modes * (Lexing.position * Lexing.position)) list -> 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" +# 1014 "parsing/parser.mly" (string) -# 48984 "parsing/parser.ml" +# 49205 "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 _v : ((modes * (Lexing.position * Lexing.position)) list -> 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" +# 1202 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 48999 "parsing/parser.ml" +# 49220 "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" +# 3109 "parsing/parser.mly" + ( fun flags -> mk_newtypes ~loc:_sloc [_3, Some _5] (_7 flags) ) +# 49229 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -49086,24 +49307,24 @@ module Tables = struct let xs = # 253 "" ( List.rev xs ) -# 49090 "parsing/parser.ml" +# 49311 "parsing/parser.ml" in -# 1228 "parsing/parser.mly" +# 1307 "parsing/parser.mly" ( xs ) -# 49095 "parsing/parser.ml" +# 49316 "parsing/parser.ml" in -# 3798 "parsing/parser.mly" +# 3865 "parsing/parser.mly" ( _1 ) -# 49101 "parsing/parser.ml" +# 49322 "parsing/parser.ml" in -# 3920 "parsing/parser.mly" +# 3992 "parsing/parser.mly" ( Jane_syntax.Layouts.Ltyp_poly { bound_vars; inner_type } ) -# 49107 "parsing/parser.ml" +# 49328 "parsing/parser.ml" in let _endpos__1_ = _endpos__5_ in @@ -49111,40 +49332,45 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1187 "parsing/parser.mly" +# 1266 "parsing/parser.mly" ( Jane_syntax.Layouts.type_of ~loc:(make_loc _sloc) ~attrs:[] _1 ) -# 49117 "parsing/parser.ml" +# 49338 "parsing/parser.ml" in -# 3922 "parsing/parser.mly" +# 3994 "parsing/parser.mly" ( _1 ) -# 49123 "parsing/parser.ml" +# 49344 "parsing/parser.ml" in let _endpos__1_ = _endpos__5_ in -# 1121 "parsing/parser.mly" +# 1200 "parsing/parser.mly" ( extra_rhs_core_type _1 ~pos:_endpos__1_ ) -# 49130 "parsing/parser.ml" +# 49351 "parsing/parser.ml" + + in + let unique_local = + let flags = +# 1275 "parsing/parser.mly" + ( [] ) +# 49358 "parsing/parser.ml" + in + +# 3987 "parsing/parser.mly" + ( flags ) +# 49363 "parsing/parser.ml" in - let local = -# 3913 "parsing/parser.mly" - ( false ) -# 49136 "parsing/parser.ml" - in - let (_endpos_local_, _startpos_local_) = (_endpos_label_, _endpos_label_) in let label = -# 3905 "parsing/parser.mly" +# 3971 "parsing/parser.mly" ( Optional label ) -# 49142 "parsing/parser.ml" +# 49369 "parsing/parser.ml" in - let _loc_local_ = (_startpos_local_, _endpos_local_) in -# 3885 "parsing/parser.mly" - ( Ptyp_arrow(label, mktyp_local_if local domain _loc_local_, codomain) ) -# 49148 "parsing/parser.ml" +# 3952 "parsing/parser.mly" + ( Ptyp_arrow(label, mktyp_with_modes unique_local domain , codomain) ) +# 49374 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_codomain_, _startpos_label_) in @@ -49152,15 +49378,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1160 "parsing/parser.mly" +# 1239 "parsing/parser.mly" ( mktyp ~loc:_sloc _1 ) -# 49158 "parsing/parser.ml" +# 49384 "parsing/parser.ml" in -# 3887 "parsing/parser.mly" +# 3954 "parsing/parser.mly" ( _1 ) -# 49164 "parsing/parser.ml" +# 49390 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -49207,33 +49433,38 @@ module Tables = struct let _1 = let domain = let _1 = -# 3924 "parsing/parser.mly" +# 3996 "parsing/parser.mly" ( ty ) -# 49213 "parsing/parser.ml" +# 49439 "parsing/parser.ml" in let _endpos__1_ = _endpos_ty_ in -# 1121 "parsing/parser.mly" +# 1200 "parsing/parser.mly" ( extra_rhs_core_type _1 ~pos:_endpos__1_ ) -# 49219 "parsing/parser.ml" +# 49445 "parsing/parser.ml" + + in + let unique_local = + let flags = +# 1275 "parsing/parser.mly" + ( [] ) +# 49452 "parsing/parser.ml" + in + +# 3987 "parsing/parser.mly" + ( flags ) +# 49457 "parsing/parser.ml" in - let local = -# 3913 "parsing/parser.mly" - ( false ) -# 49225 "parsing/parser.ml" - in - let (_endpos_local_, _startpos_local_) = (_endpos_label_, _endpos_label_) in let label = -# 3905 "parsing/parser.mly" +# 3971 "parsing/parser.mly" ( Optional label ) -# 49231 "parsing/parser.ml" +# 49463 "parsing/parser.ml" in - let _loc_local_ = (_startpos_local_, _endpos_local_) in -# 3885 "parsing/parser.mly" - ( Ptyp_arrow(label, mktyp_local_if local domain _loc_local_, codomain) ) -# 49237 "parsing/parser.ml" +# 3952 "parsing/parser.mly" + ( Ptyp_arrow(label, mktyp_with_modes unique_local domain , codomain) ) +# 49468 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_codomain_, _startpos_label_) in @@ -49241,15 +49472,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1160 "parsing/parser.mly" +# 1239 "parsing/parser.mly" ( mktyp ~loc:_sloc _1 ) -# 49247 "parsing/parser.ml" +# 49478 "parsing/parser.ml" in -# 3887 "parsing/parser.mly" +# 3954 "parsing/parser.mly" ( _1 ) -# 49253 "parsing/parser.ml" +# 49484 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -49292,14 +49523,14 @@ module Tables = struct MenhirLib.EngineTypes.endp = _endpos_xs_; 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; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; + 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 = label; @@ -49321,8 +49552,8 @@ module Tables = struct let inner_type : (Parsetree.core_type) = Obj.magic inner_type in let _3 : unit = Obj.magic _3 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 x : ((modes * (Lexing.position * Lexing.position)) list) = Obj.magic x in let label : (string) = Obj.magic label in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos_label_ in @@ -49330,7 +49561,6 @@ module Tables = struct let _v : (Parsetree.core_type) = let _1 = let _1 = let domain = - let _startpos__1_ = _startpos__1_inlined1_ in let _1 = let _1 = let _1 = @@ -49339,24 +49569,24 @@ module Tables = struct let xs = # 253 "" ( List.rev xs ) -# 49343 "parsing/parser.ml" +# 49573 "parsing/parser.ml" in -# 1228 "parsing/parser.mly" +# 1307 "parsing/parser.mly" ( xs ) -# 49348 "parsing/parser.ml" +# 49578 "parsing/parser.ml" in -# 3798 "parsing/parser.mly" +# 3865 "parsing/parser.mly" ( _1 ) -# 49354 "parsing/parser.ml" +# 49584 "parsing/parser.ml" in -# 3920 "parsing/parser.mly" +# 3992 "parsing/parser.mly" ( Jane_syntax.Layouts.Ltyp_poly { bound_vars; inner_type } ) -# 49360 "parsing/parser.ml" +# 49590 "parsing/parser.ml" in let _endpos__1_ = _endpos__5_ in @@ -49364,40 +49594,45 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1187 "parsing/parser.mly" +# 1266 "parsing/parser.mly" ( Jane_syntax.Layouts.type_of ~loc:(make_loc _sloc) ~attrs:[] _1 ) -# 49370 "parsing/parser.ml" +# 49600 "parsing/parser.ml" in -# 3922 "parsing/parser.mly" +# 3994 "parsing/parser.mly" ( _1 ) -# 49376 "parsing/parser.ml" +# 49606 "parsing/parser.ml" in let _endpos__1_ = _endpos__5_ in -# 1121 "parsing/parser.mly" +# 1200 "parsing/parser.mly" ( extra_rhs_core_type _1 ~pos:_endpos__1_ ) -# 49383 "parsing/parser.ml" +# 49613 "parsing/parser.ml" + + in + let unique_local = + let flags = +# 1277 "parsing/parser.mly" + ( x ) +# 49620 "parsing/parser.ml" + in + +# 3987 "parsing/parser.mly" + ( flags ) +# 49625 "parsing/parser.ml" in - let local = -# 3915 "parsing/parser.mly" - ( true ) -# 49389 "parsing/parser.ml" - in - let (_endpos_local_, _startpos_local_) = (_endpos__1_, _startpos__1_) in let label = -# 3905 "parsing/parser.mly" +# 3971 "parsing/parser.mly" ( Optional label ) -# 49395 "parsing/parser.ml" +# 49631 "parsing/parser.ml" in - let _loc_local_ = (_startpos_local_, _endpos_local_) in -# 3885 "parsing/parser.mly" - ( Ptyp_arrow(label, mktyp_local_if local domain _loc_local_, codomain) ) -# 49401 "parsing/parser.ml" +# 3952 "parsing/parser.mly" + ( Ptyp_arrow(label, mktyp_with_modes unique_local domain , codomain) ) +# 49636 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_codomain_, _startpos_label_) in @@ -49405,15 +49640,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1160 "parsing/parser.mly" +# 1239 "parsing/parser.mly" ( mktyp ~loc:_sloc _1 ) -# 49411 "parsing/parser.ml" +# 49646 "parsing/parser.ml" in -# 3887 "parsing/parser.mly" +# 3954 "parsing/parser.mly" ( _1 ) -# 49417 "parsing/parser.ml" +# 49652 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -49441,9 +49676,9 @@ module Tables = struct MenhirLib.EngineTypes.endp = _endpos_ty_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; + 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 = label; @@ -49458,7 +49693,7 @@ module Tables = struct let codomain : (Parsetree.core_type) = Obj.magic codomain in let _4 : unit = Obj.magic _4 in let ty : (Parsetree.core_type) = Obj.magic ty in - let _1 : unit = Obj.magic _1 in + let x : ((modes * (Lexing.position * Lexing.position)) list) = Obj.magic x in let label : (string) = Obj.magic label in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos_label_ in @@ -49467,33 +49702,38 @@ module Tables = struct let _1 = let domain = let _1 = -# 3924 "parsing/parser.mly" +# 3996 "parsing/parser.mly" ( ty ) -# 49473 "parsing/parser.ml" +# 49708 "parsing/parser.ml" in let _endpos__1_ = _endpos_ty_ in -# 1121 "parsing/parser.mly" +# 1200 "parsing/parser.mly" ( extra_rhs_core_type _1 ~pos:_endpos__1_ ) -# 49479 "parsing/parser.ml" +# 49714 "parsing/parser.ml" + + in + let unique_local = + let flags = +# 1277 "parsing/parser.mly" + ( x ) +# 49721 "parsing/parser.ml" + in + +# 3987 "parsing/parser.mly" + ( flags ) +# 49726 "parsing/parser.ml" in - let local = -# 3915 "parsing/parser.mly" - ( true ) -# 49485 "parsing/parser.ml" - in - let (_endpos_local_, _startpos_local_) = (_endpos__1_, _startpos__1_) in let label = -# 3905 "parsing/parser.mly" +# 3971 "parsing/parser.mly" ( Optional label ) -# 49491 "parsing/parser.ml" +# 49732 "parsing/parser.ml" in - let _loc_local_ = (_startpos_local_, _endpos_local_) in -# 3885 "parsing/parser.mly" - ( Ptyp_arrow(label, mktyp_local_if local domain _loc_local_, codomain) ) -# 49497 "parsing/parser.ml" +# 3952 "parsing/parser.mly" + ( Ptyp_arrow(label, mktyp_with_modes unique_local domain , codomain) ) +# 49737 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_codomain_, _startpos_label_) in @@ -49501,15 +49741,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1160 "parsing/parser.mly" +# 1239 "parsing/parser.mly" ( mktyp ~loc:_sloc _1 ) -# 49507 "parsing/parser.ml" +# 49747 "parsing/parser.ml" in -# 3887 "parsing/parser.mly" +# 3954 "parsing/parser.mly" ( _1 ) -# 49513 "parsing/parser.ml" +# 49753 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -49584,9 +49824,9 @@ module Tables = struct let _1 : unit = Obj.magic _1 in let _2 : unit = Obj.magic _2 in let label : ( -# 937 "parsing/parser.mly" +# 1014 "parsing/parser.mly" (string) -# 49590 "parsing/parser.ml" +# 49830 "parsing/parser.ml" ) = Obj.magic label in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos_label_ in @@ -49602,24 +49842,24 @@ module Tables = struct let xs = # 253 "" ( List.rev xs ) -# 49606 "parsing/parser.ml" +# 49846 "parsing/parser.ml" in -# 1228 "parsing/parser.mly" +# 1307 "parsing/parser.mly" ( xs ) -# 49611 "parsing/parser.ml" +# 49851 "parsing/parser.ml" in -# 3798 "parsing/parser.mly" +# 3865 "parsing/parser.mly" ( _1 ) -# 49617 "parsing/parser.ml" +# 49857 "parsing/parser.ml" in -# 3920 "parsing/parser.mly" +# 3992 "parsing/parser.mly" ( Jane_syntax.Layouts.Ltyp_poly { bound_vars; inner_type } ) -# 49623 "parsing/parser.ml" +# 49863 "parsing/parser.ml" in let _endpos__1_ = _endpos__5_ in @@ -49627,40 +49867,45 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1187 "parsing/parser.mly" +# 1266 "parsing/parser.mly" ( Jane_syntax.Layouts.type_of ~loc:(make_loc _sloc) ~attrs:[] _1 ) -# 49633 "parsing/parser.ml" +# 49873 "parsing/parser.ml" in -# 3922 "parsing/parser.mly" +# 3994 "parsing/parser.mly" ( _1 ) -# 49639 "parsing/parser.ml" +# 49879 "parsing/parser.ml" in let _endpos__1_ = _endpos__5_ in -# 1121 "parsing/parser.mly" +# 1200 "parsing/parser.mly" ( extra_rhs_core_type _1 ~pos:_endpos__1_ ) -# 49646 "parsing/parser.ml" +# 49886 "parsing/parser.ml" + + in + let unique_local = + let flags = +# 1275 "parsing/parser.mly" + ( [] ) +# 49893 "parsing/parser.ml" + in + +# 3987 "parsing/parser.mly" + ( flags ) +# 49898 "parsing/parser.ml" in - let local = -# 3913 "parsing/parser.mly" - ( false ) -# 49652 "parsing/parser.ml" - in - let (_endpos_local_, _startpos_local_) = (_endpos__2_, _endpos__2_) in let label = -# 3907 "parsing/parser.mly" +# 3973 "parsing/parser.mly" ( Labelled label ) -# 49658 "parsing/parser.ml" +# 49904 "parsing/parser.ml" in - let _loc_local_ = (_startpos_local_, _endpos_local_) in -# 3885 "parsing/parser.mly" - ( Ptyp_arrow(label, mktyp_local_if local domain _loc_local_, codomain) ) -# 49664 "parsing/parser.ml" +# 3952 "parsing/parser.mly" + ( Ptyp_arrow(label, mktyp_with_modes unique_local domain , codomain) ) +# 49909 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_codomain_, _startpos_label_) in @@ -49668,15 +49913,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1160 "parsing/parser.mly" +# 1239 "parsing/parser.mly" ( mktyp ~loc:_sloc _1 ) -# 49674 "parsing/parser.ml" +# 49919 "parsing/parser.ml" in -# 3887 "parsing/parser.mly" +# 3954 "parsing/parser.mly" ( _1 ) -# 49680 "parsing/parser.ml" +# 49925 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -49723,9 +49968,9 @@ module Tables = struct let ty : (Parsetree.core_type) = Obj.magic ty in let _2 : unit = Obj.magic _2 in let label : ( -# 937 "parsing/parser.mly" +# 1014 "parsing/parser.mly" (string) -# 49729 "parsing/parser.ml" +# 49974 "parsing/parser.ml" ) = Obj.magic label in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos_label_ in @@ -49734,33 +49979,38 @@ module Tables = struct let _1 = let domain = let _1 = -# 3924 "parsing/parser.mly" +# 3996 "parsing/parser.mly" ( ty ) -# 49740 "parsing/parser.ml" +# 49985 "parsing/parser.ml" in let _endpos__1_ = _endpos_ty_ in -# 1121 "parsing/parser.mly" +# 1200 "parsing/parser.mly" ( extra_rhs_core_type _1 ~pos:_endpos__1_ ) -# 49746 "parsing/parser.ml" +# 49991 "parsing/parser.ml" + + in + let unique_local = + let flags = +# 1275 "parsing/parser.mly" + ( [] ) +# 49998 "parsing/parser.ml" + in + +# 3987 "parsing/parser.mly" + ( flags ) +# 50003 "parsing/parser.ml" in - let local = -# 3913 "parsing/parser.mly" - ( false ) -# 49752 "parsing/parser.ml" - in - let (_endpos_local_, _startpos_local_) = (_endpos__2_, _endpos__2_) in let label = -# 3907 "parsing/parser.mly" +# 3973 "parsing/parser.mly" ( Labelled label ) -# 49758 "parsing/parser.ml" +# 50009 "parsing/parser.ml" in - let _loc_local_ = (_startpos_local_, _endpos_local_) in -# 3885 "parsing/parser.mly" - ( Ptyp_arrow(label, mktyp_local_if local domain _loc_local_, codomain) ) -# 49764 "parsing/parser.ml" +# 3952 "parsing/parser.mly" + ( Ptyp_arrow(label, mktyp_with_modes unique_local domain , codomain) ) +# 50014 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_codomain_, _startpos_label_) in @@ -49768,15 +50018,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1160 "parsing/parser.mly" +# 1239 "parsing/parser.mly" ( mktyp ~loc:_sloc _1 ) -# 49774 "parsing/parser.ml" +# 50024 "parsing/parser.ml" in -# 3887 "parsing/parser.mly" +# 3954 "parsing/parser.mly" ( _1 ) -# 49780 "parsing/parser.ml" +# 50030 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -49819,14 +50069,14 @@ module Tables = struct MenhirLib.EngineTypes.endp = _endpos_xs_; 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; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.semv = x; + MenhirLib.EngineTypes.startp = _startpos_x_; + MenhirLib.EngineTypes.endp = _endpos_x_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; MenhirLib.EngineTypes.semv = _2; @@ -49854,13 +50104,13 @@ module Tables = struct let inner_type : (Parsetree.core_type) = Obj.magic inner_type in let _3 : unit = Obj.magic _3 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 x : ((modes * (Lexing.position * Lexing.position)) list) = Obj.magic x in let _2 : unit = Obj.magic _2 in let label : ( -# 937 "parsing/parser.mly" +# 1014 "parsing/parser.mly" (string) -# 49864 "parsing/parser.ml" +# 50114 "parsing/parser.ml" ) = Obj.magic label in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos_label_ in @@ -49868,7 +50118,6 @@ module Tables = struct let _v : (Parsetree.core_type) = let _1 = let _1 = let domain = - let _startpos__1_ = _startpos__1_inlined1_ in let _1 = let _1 = let _1 = @@ -49877,24 +50126,24 @@ module Tables = struct let xs = # 253 "" ( List.rev xs ) -# 49881 "parsing/parser.ml" +# 50130 "parsing/parser.ml" in -# 1228 "parsing/parser.mly" +# 1307 "parsing/parser.mly" ( xs ) -# 49886 "parsing/parser.ml" +# 50135 "parsing/parser.ml" in -# 3798 "parsing/parser.mly" +# 3865 "parsing/parser.mly" ( _1 ) -# 49892 "parsing/parser.ml" +# 50141 "parsing/parser.ml" in -# 3920 "parsing/parser.mly" +# 3992 "parsing/parser.mly" ( Jane_syntax.Layouts.Ltyp_poly { bound_vars; inner_type } ) -# 49898 "parsing/parser.ml" +# 50147 "parsing/parser.ml" in let _endpos__1_ = _endpos__5_ in @@ -49902,40 +50151,45 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1187 "parsing/parser.mly" +# 1266 "parsing/parser.mly" ( Jane_syntax.Layouts.type_of ~loc:(make_loc _sloc) ~attrs:[] _1 ) -# 49908 "parsing/parser.ml" +# 50157 "parsing/parser.ml" in -# 3922 "parsing/parser.mly" +# 3994 "parsing/parser.mly" ( _1 ) -# 49914 "parsing/parser.ml" +# 50163 "parsing/parser.ml" in let _endpos__1_ = _endpos__5_ in -# 1121 "parsing/parser.mly" +# 1200 "parsing/parser.mly" ( extra_rhs_core_type _1 ~pos:_endpos__1_ ) -# 49921 "parsing/parser.ml" +# 50170 "parsing/parser.ml" + + in + let unique_local = + let flags = +# 1277 "parsing/parser.mly" + ( x ) +# 50177 "parsing/parser.ml" + in + +# 3987 "parsing/parser.mly" + ( flags ) +# 50182 "parsing/parser.ml" in - let local = -# 3915 "parsing/parser.mly" - ( true ) -# 49927 "parsing/parser.ml" - in - let (_endpos_local_, _startpos_local_) = (_endpos__1_, _startpos__1_) in let label = -# 3907 "parsing/parser.mly" +# 3973 "parsing/parser.mly" ( Labelled label ) -# 49933 "parsing/parser.ml" +# 50188 "parsing/parser.ml" in - let _loc_local_ = (_startpos_local_, _endpos_local_) in -# 3885 "parsing/parser.mly" - ( Ptyp_arrow(label, mktyp_local_if local domain _loc_local_, codomain) ) -# 49939 "parsing/parser.ml" +# 3952 "parsing/parser.mly" + ( Ptyp_arrow(label, mktyp_with_modes unique_local domain , codomain) ) +# 50193 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_codomain_, _startpos_label_) in @@ -49943,15 +50197,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1160 "parsing/parser.mly" +# 1239 "parsing/parser.mly" ( mktyp ~loc:_sloc _1 ) -# 49949 "parsing/parser.ml" +# 50203 "parsing/parser.ml" in -# 3887 "parsing/parser.mly" +# 3954 "parsing/parser.mly" ( _1 ) -# 49955 "parsing/parser.ml" +# 50209 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -49979,9 +50233,9 @@ module Tables = struct MenhirLib.EngineTypes.endp = _endpos_ty_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.semv = x; + MenhirLib.EngineTypes.startp = _startpos_x_; + MenhirLib.EngineTypes.endp = _endpos_x_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; MenhirLib.EngineTypes.semv = _2; @@ -50002,12 +50256,12 @@ module Tables = struct let codomain : (Parsetree.core_type) = Obj.magic codomain in let _4 : unit = Obj.magic _4 in let ty : (Parsetree.core_type) = Obj.magic ty in - let _1 : unit = Obj.magic _1 in + let x : ((modes * (Lexing.position * Lexing.position)) list) = Obj.magic x in let _2 : unit = Obj.magic _2 in let label : ( -# 937 "parsing/parser.mly" +# 1014 "parsing/parser.mly" (string) -# 50011 "parsing/parser.ml" +# 50265 "parsing/parser.ml" ) = Obj.magic label in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos_label_ in @@ -50016,33 +50270,38 @@ module Tables = struct let _1 = let domain = let _1 = -# 3924 "parsing/parser.mly" +# 3996 "parsing/parser.mly" ( ty ) -# 50022 "parsing/parser.ml" +# 50276 "parsing/parser.ml" in let _endpos__1_ = _endpos_ty_ in -# 1121 "parsing/parser.mly" +# 1200 "parsing/parser.mly" ( extra_rhs_core_type _1 ~pos:_endpos__1_ ) -# 50028 "parsing/parser.ml" +# 50282 "parsing/parser.ml" + + in + let unique_local = + let flags = +# 1277 "parsing/parser.mly" + ( x ) +# 50289 "parsing/parser.ml" + in + +# 3987 "parsing/parser.mly" + ( flags ) +# 50294 "parsing/parser.ml" in - let local = -# 3915 "parsing/parser.mly" - ( true ) -# 50034 "parsing/parser.ml" - in - let (_endpos_local_, _startpos_local_) = (_endpos__1_, _startpos__1_) in let label = -# 3907 "parsing/parser.mly" +# 3973 "parsing/parser.mly" ( Labelled label ) -# 50040 "parsing/parser.ml" +# 50300 "parsing/parser.ml" in - let _loc_local_ = (_startpos_local_, _endpos_local_) in -# 3885 "parsing/parser.mly" - ( Ptyp_arrow(label, mktyp_local_if local domain _loc_local_, codomain) ) -# 50046 "parsing/parser.ml" +# 3952 "parsing/parser.mly" + ( Ptyp_arrow(label, mktyp_with_modes unique_local domain , codomain) ) +# 50305 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_codomain_, _startpos_label_) in @@ -50050,15 +50309,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1160 "parsing/parser.mly" +# 1239 "parsing/parser.mly" ( mktyp ~loc:_sloc _1 ) -# 50056 "parsing/parser.ml" +# 50315 "parsing/parser.ml" in -# 3887 "parsing/parser.mly" +# 3954 "parsing/parser.mly" ( _1 ) -# 50062 "parsing/parser.ml" +# 50321 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -50133,24 +50392,24 @@ module Tables = struct let xs = # 253 "" ( List.rev xs ) -# 50137 "parsing/parser.ml" +# 50396 "parsing/parser.ml" in -# 1228 "parsing/parser.mly" +# 1307 "parsing/parser.mly" ( xs ) -# 50142 "parsing/parser.ml" +# 50401 "parsing/parser.ml" in -# 3798 "parsing/parser.mly" +# 3865 "parsing/parser.mly" ( _1 ) -# 50148 "parsing/parser.ml" +# 50407 "parsing/parser.ml" in -# 3920 "parsing/parser.mly" +# 3992 "parsing/parser.mly" ( Jane_syntax.Layouts.Ltyp_poly { bound_vars; inner_type } ) -# 50154 "parsing/parser.ml" +# 50413 "parsing/parser.ml" in let _endpos__1_ = _endpos__5_ in @@ -50158,40 +50417,45 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1187 "parsing/parser.mly" +# 1266 "parsing/parser.mly" ( Jane_syntax.Layouts.type_of ~loc:(make_loc _sloc) ~attrs:[] _1 ) -# 50164 "parsing/parser.ml" +# 50423 "parsing/parser.ml" in -# 3922 "parsing/parser.mly" +# 3994 "parsing/parser.mly" ( _1 ) -# 50170 "parsing/parser.ml" +# 50429 "parsing/parser.ml" in let _endpos__1_ = _endpos__5_ in -# 1121 "parsing/parser.mly" +# 1200 "parsing/parser.mly" ( extra_rhs_core_type _1 ~pos:_endpos__1_ ) -# 50177 "parsing/parser.ml" +# 50436 "parsing/parser.ml" + + in + let unique_local = + let flags = +# 1275 "parsing/parser.mly" + ( [] ) +# 50443 "parsing/parser.ml" + in + +# 3987 "parsing/parser.mly" + ( flags ) +# 50448 "parsing/parser.ml" in - let local = -# 3913 "parsing/parser.mly" - ( false ) -# 50183 "parsing/parser.ml" - in - let (_endpos_local_, _startpos_local_) = (_endpos__0_, _endpos__0_) in let label = -# 3909 "parsing/parser.mly" +# 3975 "parsing/parser.mly" ( Nolabel ) -# 50189 "parsing/parser.ml" +# 50454 "parsing/parser.ml" in - let _loc_local_ = (_startpos_local_, _endpos_local_) in -# 3885 "parsing/parser.mly" - ( Ptyp_arrow(label, mktyp_local_if local domain _loc_local_, codomain) ) -# 50195 "parsing/parser.ml" +# 3952 "parsing/parser.mly" + ( Ptyp_arrow(label, mktyp_with_modes unique_local domain , codomain) ) +# 50459 "parsing/parser.ml" in let _endpos__1_ = _endpos_codomain_ in @@ -50199,15 +50463,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1160 "parsing/parser.mly" +# 1239 "parsing/parser.mly" ( mktyp ~loc:_sloc _1 ) -# 50205 "parsing/parser.ml" +# 50469 "parsing/parser.ml" in -# 3887 "parsing/parser.mly" +# 3954 "parsing/parser.mly" ( _1 ) -# 50211 "parsing/parser.ml" +# 50475 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -50247,33 +50511,38 @@ module Tables = struct let _1 = let domain = let _1 = -# 3924 "parsing/parser.mly" +# 3996 "parsing/parser.mly" ( ty ) -# 50253 "parsing/parser.ml" +# 50517 "parsing/parser.ml" in let _endpos__1_ = _endpos_ty_ in -# 1121 "parsing/parser.mly" +# 1200 "parsing/parser.mly" ( extra_rhs_core_type _1 ~pos:_endpos__1_ ) -# 50259 "parsing/parser.ml" +# 50523 "parsing/parser.ml" + + in + let unique_local = + let flags = +# 1275 "parsing/parser.mly" + ( [] ) +# 50530 "parsing/parser.ml" + in + +# 3987 "parsing/parser.mly" + ( flags ) +# 50535 "parsing/parser.ml" in - let local = -# 3913 "parsing/parser.mly" - ( false ) -# 50265 "parsing/parser.ml" - in - let (_endpos_local_, _startpos_local_) = (_endpos__0_, _endpos__0_) in let label = -# 3909 "parsing/parser.mly" +# 3975 "parsing/parser.mly" ( Nolabel ) -# 50271 "parsing/parser.ml" +# 50541 "parsing/parser.ml" in - let _loc_local_ = (_startpos_local_, _endpos_local_) in -# 3885 "parsing/parser.mly" - ( Ptyp_arrow(label, mktyp_local_if local domain _loc_local_, codomain) ) -# 50277 "parsing/parser.ml" +# 3952 "parsing/parser.mly" + ( Ptyp_arrow(label, mktyp_with_modes unique_local domain , codomain) ) +# 50546 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_codomain_, _startpos_ty_) in @@ -50281,15 +50550,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1160 "parsing/parser.mly" +# 1239 "parsing/parser.mly" ( mktyp ~loc:_sloc _1 ) -# 50287 "parsing/parser.ml" +# 50556 "parsing/parser.ml" in -# 3887 "parsing/parser.mly" +# 3954 "parsing/parser.mly" ( _1 ) -# 50293 "parsing/parser.ml" +# 50562 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -50332,14 +50601,14 @@ module Tables = struct MenhirLib.EngineTypes.endp = _endpos_xs_; 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; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.semv = x; + MenhirLib.EngineTypes.startp = _startpos_x_; + MenhirLib.EngineTypes.endp = _endpos_x_; MenhirLib.EngineTypes.next = _menhir_stack; }; }; @@ -50355,15 +50624,14 @@ module Tables = struct let inner_type : (Parsetree.core_type) = Obj.magic inner_type in let _3 : unit = Obj.magic _3 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 x : ((modes * (Lexing.position * Lexing.position)) list) = Obj.magic x in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in - let _startpos = _startpos__1_ in + let _startpos = _startpos_x_ in let _endpos = _endpos_codomain_ in let _v : (Parsetree.core_type) = let _1 = let _1 = let domain = - let _startpos__1_ = _startpos__1_inlined1_ in let _1 = let _1 = let _1 = @@ -50372,24 +50640,24 @@ module Tables = struct let xs = # 253 "" ( List.rev xs ) -# 50376 "parsing/parser.ml" +# 50644 "parsing/parser.ml" in -# 1228 "parsing/parser.mly" +# 1307 "parsing/parser.mly" ( xs ) -# 50381 "parsing/parser.ml" +# 50649 "parsing/parser.ml" in -# 3798 "parsing/parser.mly" +# 3865 "parsing/parser.mly" ( _1 ) -# 50387 "parsing/parser.ml" +# 50655 "parsing/parser.ml" in -# 3920 "parsing/parser.mly" +# 3992 "parsing/parser.mly" ( Jane_syntax.Layouts.Ltyp_poly { bound_vars; inner_type } ) -# 50393 "parsing/parser.ml" +# 50661 "parsing/parser.ml" in let _endpos__1_ = _endpos__5_ in @@ -50397,56 +50665,61 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1187 "parsing/parser.mly" +# 1266 "parsing/parser.mly" ( Jane_syntax.Layouts.type_of ~loc:(make_loc _sloc) ~attrs:[] _1 ) -# 50403 "parsing/parser.ml" +# 50671 "parsing/parser.ml" in -# 3922 "parsing/parser.mly" +# 3994 "parsing/parser.mly" ( _1 ) -# 50409 "parsing/parser.ml" +# 50677 "parsing/parser.ml" in let _endpos__1_ = _endpos__5_ in -# 1121 "parsing/parser.mly" +# 1200 "parsing/parser.mly" ( extra_rhs_core_type _1 ~pos:_endpos__1_ ) -# 50416 "parsing/parser.ml" +# 50684 "parsing/parser.ml" + + in + let unique_local = + let flags = +# 1277 "parsing/parser.mly" + ( x ) +# 50691 "parsing/parser.ml" + in + +# 3987 "parsing/parser.mly" + ( flags ) +# 50696 "parsing/parser.ml" in - let local = -# 3915 "parsing/parser.mly" - ( true ) -# 50422 "parsing/parser.ml" - in - let (_endpos_local_, _startpos_local_) = (_endpos__1_, _startpos__1_) in let label = -# 3909 "parsing/parser.mly" +# 3975 "parsing/parser.mly" ( Nolabel ) -# 50428 "parsing/parser.ml" +# 50702 "parsing/parser.ml" in - let _loc_local_ = (_startpos_local_, _endpos_local_) in -# 3885 "parsing/parser.mly" - ( Ptyp_arrow(label, mktyp_local_if local domain _loc_local_, codomain) ) -# 50434 "parsing/parser.ml" +# 3952 "parsing/parser.mly" + ( Ptyp_arrow(label, mktyp_with_modes unique_local domain , codomain) ) +# 50707 "parsing/parser.ml" in - let _endpos__1_ = _endpos_codomain_ in + let (_endpos__1_, _startpos__1_) = (_endpos_codomain_, _startpos_x_) in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1160 "parsing/parser.mly" +# 1239 "parsing/parser.mly" ( mktyp ~loc:_sloc _1 ) -# 50444 "parsing/parser.ml" +# 50717 "parsing/parser.ml" in -# 3887 "parsing/parser.mly" +# 3954 "parsing/parser.mly" ( _1 ) -# 50450 "parsing/parser.ml" +# 50723 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -50474,9 +50747,9 @@ module Tables = struct MenhirLib.EngineTypes.endp = _endpos_ty_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.semv = x; + MenhirLib.EngineTypes.startp = _startpos_x_; + MenhirLib.EngineTypes.endp = _endpos_x_; MenhirLib.EngineTypes.next = _menhir_stack; }; }; @@ -50485,57 +50758,62 @@ module Tables = struct let codomain : (Parsetree.core_type) = Obj.magic codomain in let _4 : unit = Obj.magic _4 in let ty : (Parsetree.core_type) = Obj.magic ty in - let _1 : unit = Obj.magic _1 in + let x : ((modes * (Lexing.position * Lexing.position)) list) = Obj.magic x in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in - let _startpos = _startpos__1_ in + let _startpos = _startpos_x_ in let _endpos = _endpos_codomain_ in let _v : (Parsetree.core_type) = let _1 = let _1 = let domain = let _1 = -# 3924 "parsing/parser.mly" +# 3996 "parsing/parser.mly" ( ty ) -# 50499 "parsing/parser.ml" +# 50772 "parsing/parser.ml" in let _endpos__1_ = _endpos_ty_ in -# 1121 "parsing/parser.mly" +# 1200 "parsing/parser.mly" ( extra_rhs_core_type _1 ~pos:_endpos__1_ ) -# 50505 "parsing/parser.ml" +# 50778 "parsing/parser.ml" + + in + let unique_local = + let flags = +# 1277 "parsing/parser.mly" + ( x ) +# 50785 "parsing/parser.ml" + in + +# 3987 "parsing/parser.mly" + ( flags ) +# 50790 "parsing/parser.ml" in - let local = -# 3915 "parsing/parser.mly" - ( true ) -# 50511 "parsing/parser.ml" - in - let (_endpos_local_, _startpos_local_) = (_endpos__1_, _startpos__1_) in let label = -# 3909 "parsing/parser.mly" +# 3975 "parsing/parser.mly" ( Nolabel ) -# 50517 "parsing/parser.ml" +# 50796 "parsing/parser.ml" in - let _loc_local_ = (_startpos_local_, _endpos_local_) in -# 3885 "parsing/parser.mly" - ( Ptyp_arrow(label, mktyp_local_if local domain _loc_local_, codomain) ) -# 50523 "parsing/parser.ml" +# 3952 "parsing/parser.mly" + ( Ptyp_arrow(label, mktyp_with_modes unique_local domain , codomain) ) +# 50801 "parsing/parser.ml" in - let _endpos__1_ = _endpos_codomain_ in + let (_endpos__1_, _startpos__1_) = (_endpos_codomain_, _startpos_x_) in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1160 "parsing/parser.mly" +# 1239 "parsing/parser.mly" ( mktyp ~loc:_sloc _1 ) -# 50533 "parsing/parser.ml" +# 50811 "parsing/parser.ml" in -# 3887 "parsing/parser.mly" +# 3954 "parsing/parser.mly" ( _1 ) -# 50539 "parsing/parser.ml" +# 50817 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -50608,12 +50886,18 @@ module Tables = struct let _endpos = _endpos_codomain_ in let _v : (Parsetree.core_type) = let _1 = let _1 = - let ret_local = -# 3913 "parsing/parser.mly" - ( false ) -# 50615 "parsing/parser.ml" - in - let (_endpos_ret_local_, _startpos_ret_local_) = (_endpos__4_, _endpos__4_) in + let ret_unique_local = + let flags = +# 1275 "parsing/parser.mly" + ( [] ) +# 50894 "parsing/parser.ml" + in + +# 3987 "parsing/parser.mly" + ( flags ) +# 50899 "parsing/parser.ml" + + in let domain = let _1 = let _1 = @@ -50623,24 +50907,24 @@ module Tables = struct let xs = # 253 "" ( List.rev xs ) -# 50627 "parsing/parser.ml" +# 50911 "parsing/parser.ml" in -# 1228 "parsing/parser.mly" +# 1307 "parsing/parser.mly" ( xs ) -# 50632 "parsing/parser.ml" +# 50916 "parsing/parser.ml" in -# 3798 "parsing/parser.mly" +# 3865 "parsing/parser.mly" ( _1 ) -# 50638 "parsing/parser.ml" +# 50922 "parsing/parser.ml" in -# 3920 "parsing/parser.mly" +# 3992 "parsing/parser.mly" ( Jane_syntax.Layouts.Ltyp_poly { bound_vars; inner_type } ) -# 50644 "parsing/parser.ml" +# 50928 "parsing/parser.ml" in let _endpos__1_ = _endpos__5_ in @@ -50648,45 +50932,48 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1187 "parsing/parser.mly" +# 1266 "parsing/parser.mly" ( Jane_syntax.Layouts.type_of ~loc:(make_loc _sloc) ~attrs:[] _1 ) -# 50654 "parsing/parser.ml" +# 50938 "parsing/parser.ml" in -# 3922 "parsing/parser.mly" +# 3994 "parsing/parser.mly" ( _1 ) -# 50660 "parsing/parser.ml" +# 50944 "parsing/parser.ml" in let _endpos__1_ = _endpos__5_ in -# 1121 "parsing/parser.mly" +# 1200 "parsing/parser.mly" ( extra_rhs_core_type _1 ~pos:_endpos__1_ ) -# 50667 "parsing/parser.ml" +# 50951 "parsing/parser.ml" + + in + let arg_unique_local = + let flags = +# 1275 "parsing/parser.mly" + ( [] ) +# 50958 "parsing/parser.ml" + in + +# 3987 "parsing/parser.mly" + ( flags ) +# 50963 "parsing/parser.ml" in - let arg_local = -# 3913 "parsing/parser.mly" - ( false ) -# 50673 "parsing/parser.ml" - in - let (_endpos_arg_local_, _startpos_arg_local_) = (_endpos_label_, _endpos_label_) in let label = -# 3905 "parsing/parser.mly" +# 3971 "parsing/parser.mly" ( Optional label ) -# 50679 "parsing/parser.ml" +# 50969 "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 -# 3896 "parsing/parser.mly" +# 3963 "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_) ) -# 50690 "parsing/parser.ml" + mktyp_with_modes arg_unique_local domain , + mktyp_with_modes ret_unique_local (maybe_curry_typ codomain _loc_codomain_)) ) +# 50977 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_codomain_, _startpos_label_) in @@ -50694,15 +50981,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1160 "parsing/parser.mly" +# 1239 "parsing/parser.mly" ( mktyp ~loc:_sloc _1 ) -# 50700 "parsing/parser.ml" +# 50987 "parsing/parser.ml" in -# 3901 "parsing/parser.mly" +# 3967 "parsing/parser.mly" ( _1 ) -# 50706 "parsing/parser.ml" +# 50993 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -50720,9 +51007,9 @@ module Tables = struct MenhirLib.EngineTypes.endp = _endpos_codomain_; 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 = x; + MenhirLib.EngineTypes.startp = _startpos_x_; + MenhirLib.EngineTypes.endp = _endpos_x_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; MenhirLib.EngineTypes.semv = _4; @@ -50769,7 +51056,7 @@ module Tables = struct }; } = _menhir_stack in let codomain : (Parsetree.core_type) = Obj.magic codomain in - let _1_inlined1 : unit = Obj.magic _1_inlined1 in + let x : ((modes * (Lexing.position * Lexing.position)) list) = Obj.magic x in let _4 : unit = Obj.magic _4 in let _5 : unit = Obj.magic _5 in let inner_type : (Parsetree.core_type) = Obj.magic inner_type in @@ -50782,12 +51069,18 @@ module Tables = struct let _endpos = _endpos_codomain_ in let _v : (Parsetree.core_type) = let _1 = let _1 = - let ret_local = -# 3915 "parsing/parser.mly" - ( true ) -# 50789 "parsing/parser.ml" - in - let (_endpos_ret_local_, _startpos_ret_local_) = (_endpos__1_inlined1_, _startpos__1_inlined1_) in + let ret_unique_local = + let flags = +# 1277 "parsing/parser.mly" + ( x ) +# 51077 "parsing/parser.ml" + in + +# 3987 "parsing/parser.mly" + ( flags ) +# 51082 "parsing/parser.ml" + + in let domain = let _1 = let _1 = @@ -50797,24 +51090,24 @@ module Tables = struct let xs = # 253 "" ( List.rev xs ) -# 50801 "parsing/parser.ml" +# 51094 "parsing/parser.ml" in -# 1228 "parsing/parser.mly" +# 1307 "parsing/parser.mly" ( xs ) -# 50806 "parsing/parser.ml" +# 51099 "parsing/parser.ml" in -# 3798 "parsing/parser.mly" +# 3865 "parsing/parser.mly" ( _1 ) -# 50812 "parsing/parser.ml" +# 51105 "parsing/parser.ml" in -# 3920 "parsing/parser.mly" +# 3992 "parsing/parser.mly" ( Jane_syntax.Layouts.Ltyp_poly { bound_vars; inner_type } ) -# 50818 "parsing/parser.ml" +# 51111 "parsing/parser.ml" in let _endpos__1_ = _endpos__5_ in @@ -50822,45 +51115,48 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1187 "parsing/parser.mly" +# 1266 "parsing/parser.mly" ( Jane_syntax.Layouts.type_of ~loc:(make_loc _sloc) ~attrs:[] _1 ) -# 50828 "parsing/parser.ml" +# 51121 "parsing/parser.ml" in -# 3922 "parsing/parser.mly" +# 3994 "parsing/parser.mly" ( _1 ) -# 50834 "parsing/parser.ml" +# 51127 "parsing/parser.ml" in let _endpos__1_ = _endpos__5_ in -# 1121 "parsing/parser.mly" +# 1200 "parsing/parser.mly" ( extra_rhs_core_type _1 ~pos:_endpos__1_ ) -# 50841 "parsing/parser.ml" +# 51134 "parsing/parser.ml" + + in + let arg_unique_local = + let flags = +# 1275 "parsing/parser.mly" + ( [] ) +# 51141 "parsing/parser.ml" + in + +# 3987 "parsing/parser.mly" + ( flags ) +# 51146 "parsing/parser.ml" in - let arg_local = -# 3913 "parsing/parser.mly" - ( false ) -# 50847 "parsing/parser.ml" - in - let (_endpos_arg_local_, _startpos_arg_local_) = (_endpos_label_, _endpos_label_) in let label = -# 3905 "parsing/parser.mly" +# 3971 "parsing/parser.mly" ( Optional label ) -# 50853 "parsing/parser.ml" +# 51152 "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 -# 3896 "parsing/parser.mly" +# 3963 "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_) ) -# 50864 "parsing/parser.ml" + mktyp_with_modes arg_unique_local domain , + mktyp_with_modes ret_unique_local (maybe_curry_typ codomain _loc_codomain_)) ) +# 51160 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_codomain_, _startpos_label_) in @@ -50868,15 +51164,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1160 "parsing/parser.mly" +# 1239 "parsing/parser.mly" ( mktyp ~loc:_sloc _1 ) -# 50874 "parsing/parser.ml" +# 51170 "parsing/parser.ml" in -# 3901 "parsing/parser.mly" +# 3967 "parsing/parser.mly" ( _1 ) -# 50880 "parsing/parser.ml" +# 51176 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -50921,46 +51217,55 @@ module Tables = struct let _endpos = _endpos_codomain_ in let _v : (Parsetree.core_type) = let _1 = let _1 = - let ret_local = -# 3913 "parsing/parser.mly" - ( false ) -# 50928 "parsing/parser.ml" - in - let (_endpos_ret_local_, _startpos_ret_local_) = (_endpos__4_, _endpos__4_) in + let ret_unique_local = + let flags = +# 1275 "parsing/parser.mly" + ( [] ) +# 51225 "parsing/parser.ml" + in + +# 3987 "parsing/parser.mly" + ( flags ) +# 51230 "parsing/parser.ml" + + in let domain = let _1 = -# 3924 "parsing/parser.mly" +# 3996 "parsing/parser.mly" ( ty ) -# 50935 "parsing/parser.ml" +# 51237 "parsing/parser.ml" in let _endpos__1_ = _endpos_ty_ in -# 1121 "parsing/parser.mly" +# 1200 "parsing/parser.mly" ( extra_rhs_core_type _1 ~pos:_endpos__1_ ) -# 50941 "parsing/parser.ml" +# 51243 "parsing/parser.ml" + + in + let arg_unique_local = + let flags = +# 1275 "parsing/parser.mly" + ( [] ) +# 51250 "parsing/parser.ml" + in + +# 3987 "parsing/parser.mly" + ( flags ) +# 51255 "parsing/parser.ml" in - let arg_local = -# 3913 "parsing/parser.mly" - ( false ) -# 50947 "parsing/parser.ml" - in - let (_endpos_arg_local_, _startpos_arg_local_) = (_endpos_label_, _endpos_label_) in let label = -# 3905 "parsing/parser.mly" +# 3971 "parsing/parser.mly" ( Optional label ) -# 50953 "parsing/parser.ml" +# 51261 "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 -# 3896 "parsing/parser.mly" +# 3963 "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_) ) -# 50964 "parsing/parser.ml" + mktyp_with_modes arg_unique_local domain , + mktyp_with_modes ret_unique_local (maybe_curry_typ codomain _loc_codomain_)) ) +# 51269 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_codomain_, _startpos_label_) in @@ -50968,15 +51273,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1160 "parsing/parser.mly" +# 1239 "parsing/parser.mly" ( mktyp ~loc:_sloc _1 ) -# 50974 "parsing/parser.ml" +# 51279 "parsing/parser.ml" in -# 3901 "parsing/parser.mly" +# 3967 "parsing/parser.mly" ( _1 ) -# 50980 "parsing/parser.ml" +# 51285 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -50994,9 +51299,9 @@ module Tables = struct MenhirLib.EngineTypes.endp = _endpos_codomain_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.semv = x; + MenhirLib.EngineTypes.startp = _startpos_x_; + MenhirLib.EngineTypes.endp = _endpos_x_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; MenhirLib.EngineTypes.semv = _4; @@ -51019,7 +51324,7 @@ module Tables = struct }; } = _menhir_stack in let codomain : (Parsetree.core_type) = Obj.magic codomain in - let _1 : unit = Obj.magic _1 in + let x : ((modes * (Lexing.position * Lexing.position)) list) = Obj.magic x in let _4 : unit = Obj.magic _4 in let ty : (Parsetree.core_type) = Obj.magic ty in let label : (string) = Obj.magic label in @@ -51028,46 +51333,55 @@ module Tables = struct let _endpos = _endpos_codomain_ in let _v : (Parsetree.core_type) = let _1 = let _1 = - let ret_local = -# 3915 "parsing/parser.mly" - ( true ) -# 51035 "parsing/parser.ml" - in - let (_endpos_ret_local_, _startpos_ret_local_) = (_endpos__1_, _startpos__1_) in + let ret_unique_local = + let flags = +# 1277 "parsing/parser.mly" + ( x ) +# 51341 "parsing/parser.ml" + in + +# 3987 "parsing/parser.mly" + ( flags ) +# 51346 "parsing/parser.ml" + + in let domain = let _1 = -# 3924 "parsing/parser.mly" +# 3996 "parsing/parser.mly" ( ty ) -# 51042 "parsing/parser.ml" +# 51353 "parsing/parser.ml" in let _endpos__1_ = _endpos_ty_ in -# 1121 "parsing/parser.mly" +# 1200 "parsing/parser.mly" ( extra_rhs_core_type _1 ~pos:_endpos__1_ ) -# 51048 "parsing/parser.ml" +# 51359 "parsing/parser.ml" + + in + let arg_unique_local = + let flags = +# 1275 "parsing/parser.mly" + ( [] ) +# 51366 "parsing/parser.ml" + in + +# 3987 "parsing/parser.mly" + ( flags ) +# 51371 "parsing/parser.ml" in - let arg_local = -# 3913 "parsing/parser.mly" - ( false ) -# 51054 "parsing/parser.ml" - in - let (_endpos_arg_local_, _startpos_arg_local_) = (_endpos_label_, _endpos_label_) in let label = -# 3905 "parsing/parser.mly" +# 3971 "parsing/parser.mly" ( Optional label ) -# 51060 "parsing/parser.ml" +# 51377 "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 -# 3896 "parsing/parser.mly" +# 3963 "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_) ) -# 51071 "parsing/parser.ml" + mktyp_with_modes arg_unique_local domain , + mktyp_with_modes ret_unique_local (maybe_curry_typ codomain _loc_codomain_)) ) +# 51385 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_codomain_, _startpos_label_) in @@ -51075,15 +51389,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1160 "parsing/parser.mly" +# 1239 "parsing/parser.mly" ( mktyp ~loc:_sloc _1 ) -# 51081 "parsing/parser.ml" +# 51395 "parsing/parser.ml" in -# 3901 "parsing/parser.mly" +# 3967 "parsing/parser.mly" ( _1 ) -# 51087 "parsing/parser.ml" +# 51401 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -51126,14 +51440,14 @@ module Tables = struct MenhirLib.EngineTypes.endp = _endpos_xs_; 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; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; + 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 = label; @@ -51155,22 +51469,27 @@ module Tables = struct let inner_type : (Parsetree.core_type) = Obj.magic inner_type in let _3 : unit = Obj.magic _3 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 x : ((modes * (Lexing.position * Lexing.position)) list) = Obj.magic x in let label : (string) = Obj.magic label in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos_label_ in let _endpos = _endpos_codomain_ in let _v : (Parsetree.core_type) = let _1 = let _1 = - let ret_local = -# 3913 "parsing/parser.mly" - ( false ) -# 51170 "parsing/parser.ml" - in - let (_endpos_ret_local_, _startpos_ret_local_) = (_endpos__4_, _endpos__4_) in + let ret_unique_local = + let flags = +# 1275 "parsing/parser.mly" + ( [] ) +# 51485 "parsing/parser.ml" + in + +# 3987 "parsing/parser.mly" + ( flags ) +# 51490 "parsing/parser.ml" + + in let domain = - let _startpos__1_ = _startpos__1_inlined1_ in let _1 = let _1 = let _1 = @@ -51179,24 +51498,24 @@ module Tables = struct let xs = # 253 "" ( List.rev xs ) -# 51183 "parsing/parser.ml" +# 51502 "parsing/parser.ml" in -# 1228 "parsing/parser.mly" +# 1307 "parsing/parser.mly" ( xs ) -# 51188 "parsing/parser.ml" +# 51507 "parsing/parser.ml" in -# 3798 "parsing/parser.mly" +# 3865 "parsing/parser.mly" ( _1 ) -# 51194 "parsing/parser.ml" +# 51513 "parsing/parser.ml" in -# 3920 "parsing/parser.mly" +# 3992 "parsing/parser.mly" ( Jane_syntax.Layouts.Ltyp_poly { bound_vars; inner_type } ) -# 51200 "parsing/parser.ml" +# 51519 "parsing/parser.ml" in let _endpos__1_ = _endpos__5_ in @@ -51204,45 +51523,48 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1187 "parsing/parser.mly" +# 1266 "parsing/parser.mly" ( Jane_syntax.Layouts.type_of ~loc:(make_loc _sloc) ~attrs:[] _1 ) -# 51210 "parsing/parser.ml" +# 51529 "parsing/parser.ml" in -# 3922 "parsing/parser.mly" +# 3994 "parsing/parser.mly" ( _1 ) -# 51216 "parsing/parser.ml" +# 51535 "parsing/parser.ml" in let _endpos__1_ = _endpos__5_ in -# 1121 "parsing/parser.mly" +# 1200 "parsing/parser.mly" ( extra_rhs_core_type _1 ~pos:_endpos__1_ ) -# 51223 "parsing/parser.ml" +# 51542 "parsing/parser.ml" + + in + let arg_unique_local = + let flags = +# 1277 "parsing/parser.mly" + ( x ) +# 51549 "parsing/parser.ml" + in + +# 3987 "parsing/parser.mly" + ( flags ) +# 51554 "parsing/parser.ml" in - let arg_local = -# 3915 "parsing/parser.mly" - ( true ) -# 51229 "parsing/parser.ml" - in - let (_endpos_arg_local_, _startpos_arg_local_) = (_endpos__1_, _startpos__1_) in let label = -# 3905 "parsing/parser.mly" +# 3971 "parsing/parser.mly" ( Optional label ) -# 51235 "parsing/parser.ml" +# 51560 "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 -# 3896 "parsing/parser.mly" +# 3963 "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_) ) -# 51246 "parsing/parser.ml" + mktyp_with_modes arg_unique_local domain , + mktyp_with_modes ret_unique_local (maybe_curry_typ codomain _loc_codomain_)) ) +# 51568 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_codomain_, _startpos_label_) in @@ -51250,15 +51572,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1160 "parsing/parser.mly" +# 1239 "parsing/parser.mly" ( mktyp ~loc:_sloc _1 ) -# 51256 "parsing/parser.ml" +# 51578 "parsing/parser.ml" in -# 3901 "parsing/parser.mly" +# 3967 "parsing/parser.mly" ( _1 ) -# 51262 "parsing/parser.ml" +# 51584 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -51276,9 +51598,9 @@ module Tables = struct MenhirLib.EngineTypes.endp = _endpos_codomain_; 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 = x_inlined1; + MenhirLib.EngineTypes.startp = _startpos_x_inlined1_; + MenhirLib.EngineTypes.endp = _endpos_x_inlined1_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; MenhirLib.EngineTypes.semv = _4; @@ -51306,14 +51628,14 @@ module Tables = struct MenhirLib.EngineTypes.endp = _endpos_xs_; 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; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; + 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 = label; @@ -51331,28 +51653,34 @@ module Tables = struct }; } = _menhir_stack in let codomain : (Parsetree.core_type) = Obj.magic codomain in - let _1_inlined2 : unit = Obj.magic _1_inlined2 in + let x_inlined1 : ((modes * (Lexing.position * Lexing.position)) list) = Obj.magic x_inlined1 in let _4 : unit = Obj.magic _4 in let _5 : unit = Obj.magic _5 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 * 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 x : ((modes * (Lexing.position * Lexing.position)) list) = Obj.magic x in let label : (string) = Obj.magic label in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos_label_ in let _endpos = _endpos_codomain_ in let _v : (Parsetree.core_type) = let _1 = let _1 = - let ret_local = -# 3915 "parsing/parser.mly" - ( true ) -# 51352 "parsing/parser.ml" - in - let (_endpos_ret_local_, _startpos_ret_local_) = (_endpos__1_inlined2_, _startpos__1_inlined2_) in + let ret_unique_local = + let x = x_inlined1 in + let flags = +# 1277 "parsing/parser.mly" + ( x ) +# 51676 "parsing/parser.ml" + in + +# 3987 "parsing/parser.mly" + ( flags ) +# 51681 "parsing/parser.ml" + + in let domain = - let _startpos__1_ = _startpos__1_inlined1_ in let _1 = let _1 = let _1 = @@ -51361,24 +51689,24 @@ module Tables = struct let xs = # 253 "" ( List.rev xs ) -# 51365 "parsing/parser.ml" +# 51693 "parsing/parser.ml" in -# 1228 "parsing/parser.mly" +# 1307 "parsing/parser.mly" ( xs ) -# 51370 "parsing/parser.ml" +# 51698 "parsing/parser.ml" in -# 3798 "parsing/parser.mly" +# 3865 "parsing/parser.mly" ( _1 ) -# 51376 "parsing/parser.ml" +# 51704 "parsing/parser.ml" in -# 3920 "parsing/parser.mly" +# 3992 "parsing/parser.mly" ( Jane_syntax.Layouts.Ltyp_poly { bound_vars; inner_type } ) -# 51382 "parsing/parser.ml" +# 51710 "parsing/parser.ml" in let _endpos__1_ = _endpos__5_ in @@ -51386,45 +51714,48 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1187 "parsing/parser.mly" +# 1266 "parsing/parser.mly" ( Jane_syntax.Layouts.type_of ~loc:(make_loc _sloc) ~attrs:[] _1 ) -# 51392 "parsing/parser.ml" +# 51720 "parsing/parser.ml" in -# 3922 "parsing/parser.mly" +# 3994 "parsing/parser.mly" ( _1 ) -# 51398 "parsing/parser.ml" +# 51726 "parsing/parser.ml" in let _endpos__1_ = _endpos__5_ in -# 1121 "parsing/parser.mly" +# 1200 "parsing/parser.mly" ( extra_rhs_core_type _1 ~pos:_endpos__1_ ) -# 51405 "parsing/parser.ml" +# 51733 "parsing/parser.ml" + + in + let arg_unique_local = + let flags = +# 1277 "parsing/parser.mly" + ( x ) +# 51740 "parsing/parser.ml" + in + +# 3987 "parsing/parser.mly" + ( flags ) +# 51745 "parsing/parser.ml" in - let arg_local = -# 3915 "parsing/parser.mly" - ( true ) -# 51411 "parsing/parser.ml" - in - let (_endpos_arg_local_, _startpos_arg_local_) = (_endpos__1_, _startpos__1_) in let label = -# 3905 "parsing/parser.mly" +# 3971 "parsing/parser.mly" ( Optional label ) -# 51417 "parsing/parser.ml" +# 51751 "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 -# 3896 "parsing/parser.mly" +# 3963 "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_) ) -# 51428 "parsing/parser.ml" + mktyp_with_modes arg_unique_local domain , + mktyp_with_modes ret_unique_local (maybe_curry_typ codomain _loc_codomain_)) ) +# 51759 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_codomain_, _startpos_label_) in @@ -51432,15 +51763,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1160 "parsing/parser.mly" +# 1239 "parsing/parser.mly" ( mktyp ~loc:_sloc _1 ) -# 51438 "parsing/parser.ml" +# 51769 "parsing/parser.ml" in -# 3901 "parsing/parser.mly" +# 3967 "parsing/parser.mly" ( _1 ) -# 51444 "parsing/parser.ml" +# 51775 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -51468,9 +51799,9 @@ module Tables = struct MenhirLib.EngineTypes.endp = _endpos_ty_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; + 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 = label; @@ -51485,53 +51816,62 @@ module Tables = struct let codomain : (Parsetree.core_type) = Obj.magic codomain in let _4 : unit = Obj.magic _4 in let ty : (Parsetree.core_type) = Obj.magic ty in - let _1 : unit = Obj.magic _1 in + let x : ((modes * (Lexing.position * Lexing.position)) list) = Obj.magic x in let label : (string) = Obj.magic label in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos_label_ in let _endpos = _endpos_codomain_ in let _v : (Parsetree.core_type) = let _1 = let _1 = - let ret_local = -# 3913 "parsing/parser.mly" - ( false ) -# 51499 "parsing/parser.ml" - in - let (_endpos_ret_local_, _startpos_ret_local_) = (_endpos__4_, _endpos__4_) in + let ret_unique_local = + let flags = +# 1275 "parsing/parser.mly" + ( [] ) +# 51831 "parsing/parser.ml" + in + +# 3987 "parsing/parser.mly" + ( flags ) +# 51836 "parsing/parser.ml" + + in let domain = let _1 = -# 3924 "parsing/parser.mly" +# 3996 "parsing/parser.mly" ( ty ) -# 51506 "parsing/parser.ml" +# 51843 "parsing/parser.ml" in let _endpos__1_ = _endpos_ty_ in -# 1121 "parsing/parser.mly" +# 1200 "parsing/parser.mly" ( extra_rhs_core_type _1 ~pos:_endpos__1_ ) -# 51512 "parsing/parser.ml" +# 51849 "parsing/parser.ml" + + in + let arg_unique_local = + let flags = +# 1277 "parsing/parser.mly" + ( x ) +# 51856 "parsing/parser.ml" + in + +# 3987 "parsing/parser.mly" + ( flags ) +# 51861 "parsing/parser.ml" in - let arg_local = -# 3915 "parsing/parser.mly" - ( true ) -# 51518 "parsing/parser.ml" - in - let (_endpos_arg_local_, _startpos_arg_local_) = (_endpos__1_, _startpos__1_) in let label = -# 3905 "parsing/parser.mly" +# 3971 "parsing/parser.mly" ( Optional label ) -# 51524 "parsing/parser.ml" +# 51867 "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 -# 3896 "parsing/parser.mly" +# 3963 "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_) ) -# 51535 "parsing/parser.ml" + mktyp_with_modes arg_unique_local domain , + mktyp_with_modes ret_unique_local (maybe_curry_typ codomain _loc_codomain_)) ) +# 51875 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_codomain_, _startpos_label_) in @@ -51539,15 +51879,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1160 "parsing/parser.mly" +# 1239 "parsing/parser.mly" ( mktyp ~loc:_sloc _1 ) -# 51545 "parsing/parser.ml" +# 51885 "parsing/parser.ml" in -# 3901 "parsing/parser.mly" +# 3967 "parsing/parser.mly" ( _1 ) -# 51551 "parsing/parser.ml" +# 51891 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -51565,9 +51905,9 @@ module Tables = struct MenhirLib.EngineTypes.endp = _endpos_codomain_; 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 = x_inlined1; + MenhirLib.EngineTypes.startp = _startpos_x_inlined1_; + MenhirLib.EngineTypes.endp = _endpos_x_inlined1_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; MenhirLib.EngineTypes.semv = _4; @@ -51580,9 +51920,9 @@ module Tables = struct MenhirLib.EngineTypes.endp = _endpos_ty_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; + 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 = label; @@ -51596,56 +51936,66 @@ module Tables = struct }; } = _menhir_stack in let codomain : (Parsetree.core_type) = Obj.magic codomain in - let _1_inlined1 : unit = Obj.magic _1_inlined1 in + let x_inlined1 : ((modes * (Lexing.position * Lexing.position)) list) = Obj.magic x_inlined1 in let _4 : unit = Obj.magic _4 in let ty : (Parsetree.core_type) = Obj.magic ty in - let _1 : unit = Obj.magic _1 in + let x : ((modes * (Lexing.position * Lexing.position)) list) = Obj.magic x in let label : (string) = Obj.magic label in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos_label_ in let _endpos = _endpos_codomain_ in let _v : (Parsetree.core_type) = let _1 = let _1 = - let ret_local = -# 3915 "parsing/parser.mly" - ( true ) -# 51613 "parsing/parser.ml" - in - let (_endpos_ret_local_, _startpos_ret_local_) = (_endpos__1_inlined1_, _startpos__1_inlined1_) in + let ret_unique_local = + let x = x_inlined1 in + let flags = +# 1277 "parsing/parser.mly" + ( x ) +# 51955 "parsing/parser.ml" + in + +# 3987 "parsing/parser.mly" + ( flags ) +# 51960 "parsing/parser.ml" + + in let domain = let _1 = -# 3924 "parsing/parser.mly" +# 3996 "parsing/parser.mly" ( ty ) -# 51620 "parsing/parser.ml" +# 51967 "parsing/parser.ml" in let _endpos__1_ = _endpos_ty_ in -# 1121 "parsing/parser.mly" +# 1200 "parsing/parser.mly" ( extra_rhs_core_type _1 ~pos:_endpos__1_ ) -# 51626 "parsing/parser.ml" +# 51973 "parsing/parser.ml" + + in + let arg_unique_local = + let flags = +# 1277 "parsing/parser.mly" + ( x ) +# 51980 "parsing/parser.ml" + in + +# 3987 "parsing/parser.mly" + ( flags ) +# 51985 "parsing/parser.ml" in - let arg_local = -# 3915 "parsing/parser.mly" - ( true ) -# 51632 "parsing/parser.ml" - in - let (_endpos_arg_local_, _startpos_arg_local_) = (_endpos__1_, _startpos__1_) in let label = -# 3905 "parsing/parser.mly" +# 3971 "parsing/parser.mly" ( Optional label ) -# 51638 "parsing/parser.ml" +# 51991 "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 -# 3896 "parsing/parser.mly" +# 3963 "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_) ) -# 51649 "parsing/parser.ml" + mktyp_with_modes arg_unique_local domain , + mktyp_with_modes ret_unique_local (maybe_curry_typ codomain _loc_codomain_)) ) +# 51999 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_codomain_, _startpos_label_) in @@ -51653,15 +52003,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1160 "parsing/parser.mly" +# 1239 "parsing/parser.mly" ( mktyp ~loc:_sloc _1 ) -# 51659 "parsing/parser.ml" +# 52009 "parsing/parser.ml" in -# 3901 "parsing/parser.mly" +# 3967 "parsing/parser.mly" ( _1 ) -# 51665 "parsing/parser.ml" +# 52015 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -51736,21 +52086,27 @@ module Tables = struct let _1 : unit = Obj.magic _1 in let _2 : unit = Obj.magic _2 in let label : ( -# 937 "parsing/parser.mly" +# 1014 "parsing/parser.mly" (string) -# 51742 "parsing/parser.ml" +# 52092 "parsing/parser.ml" ) = Obj.magic label in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos_label_ in let _endpos = _endpos_codomain_ in let _v : (Parsetree.core_type) = let _1 = let _1 = - let ret_local = -# 3913 "parsing/parser.mly" - ( false ) -# 51752 "parsing/parser.ml" - in - let (_endpos_ret_local_, _startpos_ret_local_) = (_endpos__4_, _endpos__4_) in + let ret_unique_local = + let flags = +# 1275 "parsing/parser.mly" + ( [] ) +# 52103 "parsing/parser.ml" + in + +# 3987 "parsing/parser.mly" + ( flags ) +# 52108 "parsing/parser.ml" + + in let domain = let _1 = let _1 = @@ -51760,24 +52116,24 @@ module Tables = struct let xs = # 253 "" ( List.rev xs ) -# 51764 "parsing/parser.ml" +# 52120 "parsing/parser.ml" in -# 1228 "parsing/parser.mly" +# 1307 "parsing/parser.mly" ( xs ) -# 51769 "parsing/parser.ml" +# 52125 "parsing/parser.ml" in -# 3798 "parsing/parser.mly" +# 3865 "parsing/parser.mly" ( _1 ) -# 51775 "parsing/parser.ml" +# 52131 "parsing/parser.ml" in -# 3920 "parsing/parser.mly" +# 3992 "parsing/parser.mly" ( Jane_syntax.Layouts.Ltyp_poly { bound_vars; inner_type } ) -# 51781 "parsing/parser.ml" +# 52137 "parsing/parser.ml" in let _endpos__1_ = _endpos__5_ in @@ -51785,45 +52141,48 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1187 "parsing/parser.mly" +# 1266 "parsing/parser.mly" ( Jane_syntax.Layouts.type_of ~loc:(make_loc _sloc) ~attrs:[] _1 ) -# 51791 "parsing/parser.ml" +# 52147 "parsing/parser.ml" in -# 3922 "parsing/parser.mly" +# 3994 "parsing/parser.mly" ( _1 ) -# 51797 "parsing/parser.ml" +# 52153 "parsing/parser.ml" in let _endpos__1_ = _endpos__5_ in -# 1121 "parsing/parser.mly" +# 1200 "parsing/parser.mly" ( extra_rhs_core_type _1 ~pos:_endpos__1_ ) -# 51804 "parsing/parser.ml" +# 52160 "parsing/parser.ml" + + in + let arg_unique_local = + let flags = +# 1275 "parsing/parser.mly" + ( [] ) +# 52167 "parsing/parser.ml" + in + +# 3987 "parsing/parser.mly" + ( flags ) +# 52172 "parsing/parser.ml" in - let arg_local = -# 3913 "parsing/parser.mly" - ( false ) -# 51810 "parsing/parser.ml" - in - let (_endpos_arg_local_, _startpos_arg_local_) = (_endpos__2_, _endpos__2_) in let label = -# 3907 "parsing/parser.mly" +# 3973 "parsing/parser.mly" ( Labelled label ) -# 51816 "parsing/parser.ml" +# 52178 "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 -# 3896 "parsing/parser.mly" +# 3963 "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_) ) -# 51827 "parsing/parser.ml" + mktyp_with_modes arg_unique_local domain , + mktyp_with_modes ret_unique_local (maybe_curry_typ codomain _loc_codomain_)) ) +# 52186 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_codomain_, _startpos_label_) in @@ -51831,15 +52190,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1160 "parsing/parser.mly" +# 1239 "parsing/parser.mly" ( mktyp ~loc:_sloc _1 ) -# 51837 "parsing/parser.ml" +# 52196 "parsing/parser.ml" in -# 3901 "parsing/parser.mly" +# 3967 "parsing/parser.mly" ( _1 ) -# 51843 "parsing/parser.ml" +# 52202 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -51857,9 +52216,9 @@ module Tables = struct MenhirLib.EngineTypes.endp = _endpos_codomain_; 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 = x; + MenhirLib.EngineTypes.startp = _startpos_x_; + MenhirLib.EngineTypes.endp = _endpos_x_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; MenhirLib.EngineTypes.semv = _4; @@ -51912,7 +52271,7 @@ module Tables = struct }; } = _menhir_stack in let codomain : (Parsetree.core_type) = Obj.magic codomain in - let _1_inlined1 : unit = Obj.magic _1_inlined1 in + let x : ((modes * (Lexing.position * Lexing.position)) list) = Obj.magic x in let _4 : unit = Obj.magic _4 in let _5 : unit = Obj.magic _5 in let inner_type : (Parsetree.core_type) = Obj.magic inner_type in @@ -51921,21 +52280,27 @@ module Tables = struct let _1 : unit = Obj.magic _1 in let _2 : unit = Obj.magic _2 in let label : ( -# 937 "parsing/parser.mly" +# 1014 "parsing/parser.mly" (string) -# 51927 "parsing/parser.ml" +# 52286 "parsing/parser.ml" ) = Obj.magic label in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos_label_ in let _endpos = _endpos_codomain_ in let _v : (Parsetree.core_type) = let _1 = let _1 = - let ret_local = -# 3915 "parsing/parser.mly" - ( true ) -# 51937 "parsing/parser.ml" - in - let (_endpos_ret_local_, _startpos_ret_local_) = (_endpos__1_inlined1_, _startpos__1_inlined1_) in + let ret_unique_local = + let flags = +# 1277 "parsing/parser.mly" + ( x ) +# 52297 "parsing/parser.ml" + in + +# 3987 "parsing/parser.mly" + ( flags ) +# 52302 "parsing/parser.ml" + + in let domain = let _1 = let _1 = @@ -51945,24 +52310,24 @@ module Tables = struct let xs = # 253 "" ( List.rev xs ) -# 51949 "parsing/parser.ml" +# 52314 "parsing/parser.ml" in -# 1228 "parsing/parser.mly" +# 1307 "parsing/parser.mly" ( xs ) -# 51954 "parsing/parser.ml" +# 52319 "parsing/parser.ml" in -# 3798 "parsing/parser.mly" +# 3865 "parsing/parser.mly" ( _1 ) -# 51960 "parsing/parser.ml" +# 52325 "parsing/parser.ml" in -# 3920 "parsing/parser.mly" +# 3992 "parsing/parser.mly" ( Jane_syntax.Layouts.Ltyp_poly { bound_vars; inner_type } ) -# 51966 "parsing/parser.ml" +# 52331 "parsing/parser.ml" in let _endpos__1_ = _endpos__5_ in @@ -51970,45 +52335,48 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1187 "parsing/parser.mly" +# 1266 "parsing/parser.mly" ( Jane_syntax.Layouts.type_of ~loc:(make_loc _sloc) ~attrs:[] _1 ) -# 51976 "parsing/parser.ml" +# 52341 "parsing/parser.ml" in -# 3922 "parsing/parser.mly" +# 3994 "parsing/parser.mly" ( _1 ) -# 51982 "parsing/parser.ml" +# 52347 "parsing/parser.ml" in let _endpos__1_ = _endpos__5_ in -# 1121 "parsing/parser.mly" +# 1200 "parsing/parser.mly" ( extra_rhs_core_type _1 ~pos:_endpos__1_ ) -# 51989 "parsing/parser.ml" +# 52354 "parsing/parser.ml" + + in + let arg_unique_local = + let flags = +# 1275 "parsing/parser.mly" + ( [] ) +# 52361 "parsing/parser.ml" + in + +# 3987 "parsing/parser.mly" + ( flags ) +# 52366 "parsing/parser.ml" in - let arg_local = -# 3913 "parsing/parser.mly" - ( false ) -# 51995 "parsing/parser.ml" - in - let (_endpos_arg_local_, _startpos_arg_local_) = (_endpos__2_, _endpos__2_) in let label = -# 3907 "parsing/parser.mly" +# 3973 "parsing/parser.mly" ( Labelled label ) -# 52001 "parsing/parser.ml" +# 52372 "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 -# 3896 "parsing/parser.mly" +# 3963 "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_) ) -# 52012 "parsing/parser.ml" + mktyp_with_modes arg_unique_local domain , + mktyp_with_modes ret_unique_local (maybe_curry_typ codomain _loc_codomain_)) ) +# 52380 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_codomain_, _startpos_label_) in @@ -52016,15 +52384,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1160 "parsing/parser.mly" +# 1239 "parsing/parser.mly" ( mktyp ~loc:_sloc _1 ) -# 52022 "parsing/parser.ml" +# 52390 "parsing/parser.ml" in -# 3901 "parsing/parser.mly" +# 3967 "parsing/parser.mly" ( _1 ) -# 52028 "parsing/parser.ml" +# 52396 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -52071,55 +52439,64 @@ module Tables = struct let ty : (Parsetree.core_type) = Obj.magic ty in let _2 : unit = Obj.magic _2 in let label : ( -# 937 "parsing/parser.mly" +# 1014 "parsing/parser.mly" (string) -# 52077 "parsing/parser.ml" +# 52445 "parsing/parser.ml" ) = Obj.magic label in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos_label_ in let _endpos = _endpos_codomain_ in let _v : (Parsetree.core_type) = let _1 = let _1 = - let ret_local = -# 3913 "parsing/parser.mly" - ( false ) -# 52087 "parsing/parser.ml" - in - let (_endpos_ret_local_, _startpos_ret_local_) = (_endpos__4_, _endpos__4_) in + let ret_unique_local = + let flags = +# 1275 "parsing/parser.mly" + ( [] ) +# 52456 "parsing/parser.ml" + in + +# 3987 "parsing/parser.mly" + ( flags ) +# 52461 "parsing/parser.ml" + + in let domain = let _1 = -# 3924 "parsing/parser.mly" +# 3996 "parsing/parser.mly" ( ty ) -# 52094 "parsing/parser.ml" +# 52468 "parsing/parser.ml" in let _endpos__1_ = _endpos_ty_ in -# 1121 "parsing/parser.mly" +# 1200 "parsing/parser.mly" ( extra_rhs_core_type _1 ~pos:_endpos__1_ ) -# 52100 "parsing/parser.ml" +# 52474 "parsing/parser.ml" + + in + let arg_unique_local = + let flags = +# 1275 "parsing/parser.mly" + ( [] ) +# 52481 "parsing/parser.ml" + in + +# 3987 "parsing/parser.mly" + ( flags ) +# 52486 "parsing/parser.ml" in - let arg_local = -# 3913 "parsing/parser.mly" - ( false ) -# 52106 "parsing/parser.ml" - in - let (_endpos_arg_local_, _startpos_arg_local_) = (_endpos__2_, _endpos__2_) in let label = -# 3907 "parsing/parser.mly" +# 3973 "parsing/parser.mly" ( Labelled label ) -# 52112 "parsing/parser.ml" +# 52492 "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 -# 3896 "parsing/parser.mly" +# 3963 "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_) ) -# 52123 "parsing/parser.ml" + mktyp_with_modes arg_unique_local domain , + mktyp_with_modes ret_unique_local (maybe_curry_typ codomain _loc_codomain_)) ) +# 52500 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_codomain_, _startpos_label_) in @@ -52127,15 +52504,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1160 "parsing/parser.mly" +# 1239 "parsing/parser.mly" ( mktyp ~loc:_sloc _1 ) -# 52133 "parsing/parser.ml" +# 52510 "parsing/parser.ml" in -# 3901 "parsing/parser.mly" +# 3967 "parsing/parser.mly" ( _1 ) -# 52139 "parsing/parser.ml" +# 52516 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -52153,9 +52530,9 @@ module Tables = struct MenhirLib.EngineTypes.endp = _endpos_codomain_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.semv = x; + MenhirLib.EngineTypes.startp = _startpos_x_; + MenhirLib.EngineTypes.endp = _endpos_x_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; MenhirLib.EngineTypes.semv = _4; @@ -52184,60 +52561,69 @@ module Tables = struct }; } = _menhir_stack in let codomain : (Parsetree.core_type) = Obj.magic codomain in - let _1 : unit = Obj.magic _1 in + let x : ((modes * (Lexing.position * Lexing.position)) list) = Obj.magic x in let _4 : unit = Obj.magic _4 in let ty : (Parsetree.core_type) = Obj.magic ty in let _2 : unit = Obj.magic _2 in let label : ( -# 937 "parsing/parser.mly" +# 1014 "parsing/parser.mly" (string) -# 52195 "parsing/parser.ml" +# 52572 "parsing/parser.ml" ) = Obj.magic label in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos_label_ in let _endpos = _endpos_codomain_ in let _v : (Parsetree.core_type) = let _1 = let _1 = - let ret_local = -# 3915 "parsing/parser.mly" - ( true ) -# 52205 "parsing/parser.ml" - in - let (_endpos_ret_local_, _startpos_ret_local_) = (_endpos__1_, _startpos__1_) in + let ret_unique_local = + let flags = +# 1277 "parsing/parser.mly" + ( x ) +# 52583 "parsing/parser.ml" + in + +# 3987 "parsing/parser.mly" + ( flags ) +# 52588 "parsing/parser.ml" + + in let domain = let _1 = -# 3924 "parsing/parser.mly" +# 3996 "parsing/parser.mly" ( ty ) -# 52212 "parsing/parser.ml" +# 52595 "parsing/parser.ml" in let _endpos__1_ = _endpos_ty_ in -# 1121 "parsing/parser.mly" +# 1200 "parsing/parser.mly" ( extra_rhs_core_type _1 ~pos:_endpos__1_ ) -# 52218 "parsing/parser.ml" +# 52601 "parsing/parser.ml" + + in + let arg_unique_local = + let flags = +# 1275 "parsing/parser.mly" + ( [] ) +# 52608 "parsing/parser.ml" + in + +# 3987 "parsing/parser.mly" + ( flags ) +# 52613 "parsing/parser.ml" in - let arg_local = -# 3913 "parsing/parser.mly" - ( false ) -# 52224 "parsing/parser.ml" - in - let (_endpos_arg_local_, _startpos_arg_local_) = (_endpos__2_, _endpos__2_) in let label = -# 3907 "parsing/parser.mly" +# 3973 "parsing/parser.mly" ( Labelled label ) -# 52230 "parsing/parser.ml" +# 52619 "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 -# 3896 "parsing/parser.mly" +# 3963 "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_) ) -# 52241 "parsing/parser.ml" + mktyp_with_modes arg_unique_local domain , + mktyp_with_modes ret_unique_local (maybe_curry_typ codomain _loc_codomain_)) ) +# 52627 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_codomain_, _startpos_label_) in @@ -52245,15 +52631,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1160 "parsing/parser.mly" +# 1239 "parsing/parser.mly" ( mktyp ~loc:_sloc _1 ) -# 52251 "parsing/parser.ml" +# 52637 "parsing/parser.ml" in -# 3901 "parsing/parser.mly" +# 3967 "parsing/parser.mly" ( _1 ) -# 52257 "parsing/parser.ml" +# 52643 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -52296,14 +52682,14 @@ module Tables = struct MenhirLib.EngineTypes.endp = _endpos_xs_; 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; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.semv = x; + MenhirLib.EngineTypes.startp = _startpos_x_; + MenhirLib.EngineTypes.endp = _endpos_x_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; MenhirLib.EngineTypes.semv = _2; @@ -52331,27 +52717,32 @@ module Tables = struct let inner_type : (Parsetree.core_type) = Obj.magic inner_type in let _3 : unit = Obj.magic _3 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 x : ((modes * (Lexing.position * Lexing.position)) list) = Obj.magic x in let _2 : unit = Obj.magic _2 in let label : ( -# 937 "parsing/parser.mly" +# 1014 "parsing/parser.mly" (string) -# 52341 "parsing/parser.ml" +# 52727 "parsing/parser.ml" ) = Obj.magic label in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos_label_ in let _endpos = _endpos_codomain_ in let _v : (Parsetree.core_type) = let _1 = let _1 = - let ret_local = -# 3913 "parsing/parser.mly" - ( false ) -# 52351 "parsing/parser.ml" - in - let (_endpos_ret_local_, _startpos_ret_local_) = (_endpos__4_, _endpos__4_) in + let ret_unique_local = + let flags = +# 1275 "parsing/parser.mly" + ( [] ) +# 52738 "parsing/parser.ml" + in + +# 3987 "parsing/parser.mly" + ( flags ) +# 52743 "parsing/parser.ml" + + in let domain = - let _startpos__1_ = _startpos__1_inlined1_ in let _1 = let _1 = let _1 = @@ -52360,24 +52751,24 @@ module Tables = struct let xs = # 253 "" ( List.rev xs ) -# 52364 "parsing/parser.ml" +# 52755 "parsing/parser.ml" in -# 1228 "parsing/parser.mly" +# 1307 "parsing/parser.mly" ( xs ) -# 52369 "parsing/parser.ml" +# 52760 "parsing/parser.ml" in -# 3798 "parsing/parser.mly" +# 3865 "parsing/parser.mly" ( _1 ) -# 52375 "parsing/parser.ml" +# 52766 "parsing/parser.ml" in -# 3920 "parsing/parser.mly" +# 3992 "parsing/parser.mly" ( Jane_syntax.Layouts.Ltyp_poly { bound_vars; inner_type } ) -# 52381 "parsing/parser.ml" +# 52772 "parsing/parser.ml" in let _endpos__1_ = _endpos__5_ in @@ -52385,45 +52776,48 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1187 "parsing/parser.mly" +# 1266 "parsing/parser.mly" ( Jane_syntax.Layouts.type_of ~loc:(make_loc _sloc) ~attrs:[] _1 ) -# 52391 "parsing/parser.ml" +# 52782 "parsing/parser.ml" in -# 3922 "parsing/parser.mly" +# 3994 "parsing/parser.mly" ( _1 ) -# 52397 "parsing/parser.ml" +# 52788 "parsing/parser.ml" in let _endpos__1_ = _endpos__5_ in -# 1121 "parsing/parser.mly" +# 1200 "parsing/parser.mly" ( extra_rhs_core_type _1 ~pos:_endpos__1_ ) -# 52404 "parsing/parser.ml" +# 52795 "parsing/parser.ml" + + in + let arg_unique_local = + let flags = +# 1277 "parsing/parser.mly" + ( x ) +# 52802 "parsing/parser.ml" + in + +# 3987 "parsing/parser.mly" + ( flags ) +# 52807 "parsing/parser.ml" in - let arg_local = -# 3915 "parsing/parser.mly" - ( true ) -# 52410 "parsing/parser.ml" - in - let (_endpos_arg_local_, _startpos_arg_local_) = (_endpos__1_, _startpos__1_) in let label = -# 3907 "parsing/parser.mly" +# 3973 "parsing/parser.mly" ( Labelled label ) -# 52416 "parsing/parser.ml" +# 52813 "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 -# 3896 "parsing/parser.mly" +# 3963 "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_) ) -# 52427 "parsing/parser.ml" + mktyp_with_modes arg_unique_local domain , + mktyp_with_modes ret_unique_local (maybe_curry_typ codomain _loc_codomain_)) ) +# 52821 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_codomain_, _startpos_label_) in @@ -52431,15 +52825,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1160 "parsing/parser.mly" +# 1239 "parsing/parser.mly" ( mktyp ~loc:_sloc _1 ) -# 52437 "parsing/parser.ml" +# 52831 "parsing/parser.ml" in -# 3901 "parsing/parser.mly" +# 3967 "parsing/parser.mly" ( _1 ) -# 52443 "parsing/parser.ml" +# 52837 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -52457,9 +52851,9 @@ module Tables = struct MenhirLib.EngineTypes.endp = _endpos_codomain_; 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 = x_inlined1; + MenhirLib.EngineTypes.startp = _startpos_x_inlined1_; + MenhirLib.EngineTypes.endp = _endpos_x_inlined1_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; MenhirLib.EngineTypes.semv = _4; @@ -52487,14 +52881,14 @@ module Tables = struct MenhirLib.EngineTypes.endp = _endpos_xs_; 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; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.semv = x; + MenhirLib.EngineTypes.startp = _startpos_x_; + MenhirLib.EngineTypes.endp = _endpos_x_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; MenhirLib.EngineTypes.semv = _2; @@ -52518,33 +52912,39 @@ module Tables = struct }; } = _menhir_stack in let codomain : (Parsetree.core_type) = Obj.magic codomain in - let _1_inlined2 : unit = Obj.magic _1_inlined2 in + let x_inlined1 : ((modes * (Lexing.position * Lexing.position)) list) = Obj.magic x_inlined1 in let _4 : unit = Obj.magic _4 in let _5 : unit = Obj.magic _5 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 * 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 x : ((modes * (Lexing.position * Lexing.position)) list) = Obj.magic x in let _2 : unit = Obj.magic _2 in let label : ( -# 937 "parsing/parser.mly" +# 1014 "parsing/parser.mly" (string) -# 52534 "parsing/parser.ml" +# 52928 "parsing/parser.ml" ) = Obj.magic label in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos_label_ in let _endpos = _endpos_codomain_ in let _v : (Parsetree.core_type) = let _1 = let _1 = - let ret_local = -# 3915 "parsing/parser.mly" - ( true ) -# 52544 "parsing/parser.ml" - in - let (_endpos_ret_local_, _startpos_ret_local_) = (_endpos__1_inlined2_, _startpos__1_inlined2_) in + let ret_unique_local = + let x = x_inlined1 in + let flags = +# 1277 "parsing/parser.mly" + ( x ) +# 52940 "parsing/parser.ml" + in + +# 3987 "parsing/parser.mly" + ( flags ) +# 52945 "parsing/parser.ml" + + in let domain = - let _startpos__1_ = _startpos__1_inlined1_ in let _1 = let _1 = let _1 = @@ -52553,24 +52953,24 @@ module Tables = struct let xs = # 253 "" ( List.rev xs ) -# 52557 "parsing/parser.ml" +# 52957 "parsing/parser.ml" in -# 1228 "parsing/parser.mly" +# 1307 "parsing/parser.mly" ( xs ) -# 52562 "parsing/parser.ml" +# 52962 "parsing/parser.ml" in -# 3798 "parsing/parser.mly" +# 3865 "parsing/parser.mly" ( _1 ) -# 52568 "parsing/parser.ml" +# 52968 "parsing/parser.ml" in -# 3920 "parsing/parser.mly" +# 3992 "parsing/parser.mly" ( Jane_syntax.Layouts.Ltyp_poly { bound_vars; inner_type } ) -# 52574 "parsing/parser.ml" +# 52974 "parsing/parser.ml" in let _endpos__1_ = _endpos__5_ in @@ -52578,45 +52978,48 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1187 "parsing/parser.mly" +# 1266 "parsing/parser.mly" ( Jane_syntax.Layouts.type_of ~loc:(make_loc _sloc) ~attrs:[] _1 ) -# 52584 "parsing/parser.ml" +# 52984 "parsing/parser.ml" in -# 3922 "parsing/parser.mly" +# 3994 "parsing/parser.mly" ( _1 ) -# 52590 "parsing/parser.ml" +# 52990 "parsing/parser.ml" in let _endpos__1_ = _endpos__5_ in -# 1121 "parsing/parser.mly" +# 1200 "parsing/parser.mly" ( extra_rhs_core_type _1 ~pos:_endpos__1_ ) -# 52597 "parsing/parser.ml" +# 52997 "parsing/parser.ml" + + in + let arg_unique_local = + let flags = +# 1277 "parsing/parser.mly" + ( x ) +# 53004 "parsing/parser.ml" + in + +# 3987 "parsing/parser.mly" + ( flags ) +# 53009 "parsing/parser.ml" in - let arg_local = -# 3915 "parsing/parser.mly" - ( true ) -# 52603 "parsing/parser.ml" - in - let (_endpos_arg_local_, _startpos_arg_local_) = (_endpos__1_, _startpos__1_) in let label = -# 3907 "parsing/parser.mly" +# 3973 "parsing/parser.mly" ( Labelled label ) -# 52609 "parsing/parser.ml" +# 53015 "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 -# 3896 "parsing/parser.mly" +# 3963 "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_) ) -# 52620 "parsing/parser.ml" + mktyp_with_modes arg_unique_local domain , + mktyp_with_modes ret_unique_local (maybe_curry_typ codomain _loc_codomain_)) ) +# 53023 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_codomain_, _startpos_label_) in @@ -52624,15 +53027,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1160 "parsing/parser.mly" +# 1239 "parsing/parser.mly" ( mktyp ~loc:_sloc _1 ) -# 52630 "parsing/parser.ml" +# 53033 "parsing/parser.ml" in -# 3901 "parsing/parser.mly" +# 3967 "parsing/parser.mly" ( _1 ) -# 52636 "parsing/parser.ml" +# 53039 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -52660,9 +53063,9 @@ module Tables = struct MenhirLib.EngineTypes.endp = _endpos_ty_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.semv = x; + MenhirLib.EngineTypes.startp = _startpos_x_; + MenhirLib.EngineTypes.endp = _endpos_x_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; MenhirLib.EngineTypes.semv = _2; @@ -52683,58 +53086,67 @@ module Tables = struct let codomain : (Parsetree.core_type) = Obj.magic codomain in let _4 : unit = Obj.magic _4 in let ty : (Parsetree.core_type) = Obj.magic ty in - let _1 : unit = Obj.magic _1 in + let x : ((modes * (Lexing.position * Lexing.position)) list) = Obj.magic x in let _2 : unit = Obj.magic _2 in let label : ( -# 937 "parsing/parser.mly" +# 1014 "parsing/parser.mly" (string) -# 52692 "parsing/parser.ml" +# 53095 "parsing/parser.ml" ) = Obj.magic label in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos_label_ in let _endpos = _endpos_codomain_ in let _v : (Parsetree.core_type) = let _1 = let _1 = - let ret_local = -# 3913 "parsing/parser.mly" - ( false ) -# 52702 "parsing/parser.ml" - in - let (_endpos_ret_local_, _startpos_ret_local_) = (_endpos__4_, _endpos__4_) in + let ret_unique_local = + let flags = +# 1275 "parsing/parser.mly" + ( [] ) +# 53106 "parsing/parser.ml" + in + +# 3987 "parsing/parser.mly" + ( flags ) +# 53111 "parsing/parser.ml" + + in let domain = let _1 = -# 3924 "parsing/parser.mly" +# 3996 "parsing/parser.mly" ( ty ) -# 52709 "parsing/parser.ml" +# 53118 "parsing/parser.ml" in let _endpos__1_ = _endpos_ty_ in -# 1121 "parsing/parser.mly" +# 1200 "parsing/parser.mly" ( extra_rhs_core_type _1 ~pos:_endpos__1_ ) -# 52715 "parsing/parser.ml" +# 53124 "parsing/parser.ml" + + in + let arg_unique_local = + let flags = +# 1277 "parsing/parser.mly" + ( x ) +# 53131 "parsing/parser.ml" + in + +# 3987 "parsing/parser.mly" + ( flags ) +# 53136 "parsing/parser.ml" in - let arg_local = -# 3915 "parsing/parser.mly" - ( true ) -# 52721 "parsing/parser.ml" - in - let (_endpos_arg_local_, _startpos_arg_local_) = (_endpos__1_, _startpos__1_) in let label = -# 3907 "parsing/parser.mly" +# 3973 "parsing/parser.mly" ( Labelled label ) -# 52727 "parsing/parser.ml" +# 53142 "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 -# 3896 "parsing/parser.mly" +# 3963 "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_) ) -# 52738 "parsing/parser.ml" + mktyp_with_modes arg_unique_local domain , + mktyp_with_modes ret_unique_local (maybe_curry_typ codomain _loc_codomain_)) ) +# 53150 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_codomain_, _startpos_label_) in @@ -52742,15 +53154,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1160 "parsing/parser.mly" +# 1239 "parsing/parser.mly" ( mktyp ~loc:_sloc _1 ) -# 52748 "parsing/parser.ml" +# 53160 "parsing/parser.ml" in -# 3901 "parsing/parser.mly" +# 3967 "parsing/parser.mly" ( _1 ) -# 52754 "parsing/parser.ml" +# 53166 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -52768,9 +53180,9 @@ module Tables = struct MenhirLib.EngineTypes.endp = _endpos_codomain_; 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 = x_inlined1; + MenhirLib.EngineTypes.startp = _startpos_x_inlined1_; + MenhirLib.EngineTypes.endp = _endpos_x_inlined1_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; MenhirLib.EngineTypes.semv = _4; @@ -52783,9 +53195,9 @@ module Tables = struct MenhirLib.EngineTypes.endp = _endpos_ty_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.semv = x; + MenhirLib.EngineTypes.startp = _startpos_x_; + MenhirLib.EngineTypes.endp = _endpos_x_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; MenhirLib.EngineTypes.semv = _2; @@ -52805,61 +53217,71 @@ module Tables = struct }; } = _menhir_stack in let codomain : (Parsetree.core_type) = Obj.magic codomain in - let _1_inlined1 : unit = Obj.magic _1_inlined1 in + let x_inlined1 : ((modes * (Lexing.position * Lexing.position)) list) = Obj.magic x_inlined1 in let _4 : unit = Obj.magic _4 in let ty : (Parsetree.core_type) = Obj.magic ty in - let _1 : unit = Obj.magic _1 in + let x : ((modes * (Lexing.position * Lexing.position)) list) = Obj.magic x in let _2 : unit = Obj.magic _2 in let label : ( -# 937 "parsing/parser.mly" +# 1014 "parsing/parser.mly" (string) -# 52817 "parsing/parser.ml" +# 53229 "parsing/parser.ml" ) = Obj.magic label in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos_label_ in let _endpos = _endpos_codomain_ in let _v : (Parsetree.core_type) = let _1 = let _1 = - let ret_local = -# 3915 "parsing/parser.mly" - ( true ) -# 52827 "parsing/parser.ml" - in - let (_endpos_ret_local_, _startpos_ret_local_) = (_endpos__1_inlined1_, _startpos__1_inlined1_) in + let ret_unique_local = + let x = x_inlined1 in + let flags = +# 1277 "parsing/parser.mly" + ( x ) +# 53241 "parsing/parser.ml" + in + +# 3987 "parsing/parser.mly" + ( flags ) +# 53246 "parsing/parser.ml" + + in let domain = let _1 = -# 3924 "parsing/parser.mly" +# 3996 "parsing/parser.mly" ( ty ) -# 52834 "parsing/parser.ml" +# 53253 "parsing/parser.ml" in let _endpos__1_ = _endpos_ty_ in -# 1121 "parsing/parser.mly" +# 1200 "parsing/parser.mly" ( extra_rhs_core_type _1 ~pos:_endpos__1_ ) -# 52840 "parsing/parser.ml" +# 53259 "parsing/parser.ml" + + in + let arg_unique_local = + let flags = +# 1277 "parsing/parser.mly" + ( x ) +# 53266 "parsing/parser.ml" + in + +# 3987 "parsing/parser.mly" + ( flags ) +# 53271 "parsing/parser.ml" in - let arg_local = -# 3915 "parsing/parser.mly" - ( true ) -# 52846 "parsing/parser.ml" - in - let (_endpos_arg_local_, _startpos_arg_local_) = (_endpos__1_, _startpos__1_) in let label = -# 3907 "parsing/parser.mly" +# 3973 "parsing/parser.mly" ( Labelled label ) -# 52852 "parsing/parser.ml" +# 53277 "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 -# 3896 "parsing/parser.mly" +# 3963 "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_) ) -# 52863 "parsing/parser.ml" + mktyp_with_modes arg_unique_local domain , + mktyp_with_modes ret_unique_local (maybe_curry_typ codomain _loc_codomain_)) ) +# 53285 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_codomain_, _startpos_label_) in @@ -52867,15 +53289,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1160 "parsing/parser.mly" +# 1239 "parsing/parser.mly" ( mktyp ~loc:_sloc _1 ) -# 52873 "parsing/parser.ml" +# 53295 "parsing/parser.ml" in -# 3901 "parsing/parser.mly" +# 3967 "parsing/parser.mly" ( _1 ) -# 52879 "parsing/parser.ml" +# 53301 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -52941,12 +53363,18 @@ module Tables = struct let _endpos = _endpos_codomain_ in let _v : (Parsetree.core_type) = let _1 = let _1 = - let ret_local = -# 3913 "parsing/parser.mly" - ( false ) -# 52948 "parsing/parser.ml" - in - let (_endpos_ret_local_, _startpos_ret_local_) = (_endpos__4_, _endpos__4_) in + let ret_unique_local = + let flags = +# 1275 "parsing/parser.mly" + ( [] ) +# 53371 "parsing/parser.ml" + in + +# 3987 "parsing/parser.mly" + ( flags ) +# 53376 "parsing/parser.ml" + + in let domain = let _1 = let _1 = @@ -52956,24 +53384,24 @@ module Tables = struct let xs = # 253 "" ( List.rev xs ) -# 52960 "parsing/parser.ml" +# 53388 "parsing/parser.ml" in -# 1228 "parsing/parser.mly" +# 1307 "parsing/parser.mly" ( xs ) -# 52965 "parsing/parser.ml" +# 53393 "parsing/parser.ml" in -# 3798 "parsing/parser.mly" +# 3865 "parsing/parser.mly" ( _1 ) -# 52971 "parsing/parser.ml" +# 53399 "parsing/parser.ml" in -# 3920 "parsing/parser.mly" +# 3992 "parsing/parser.mly" ( Jane_syntax.Layouts.Ltyp_poly { bound_vars; inner_type } ) -# 52977 "parsing/parser.ml" +# 53405 "parsing/parser.ml" in let _endpos__1_ = _endpos__5_ in @@ -52981,45 +53409,48 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1187 "parsing/parser.mly" +# 1266 "parsing/parser.mly" ( Jane_syntax.Layouts.type_of ~loc:(make_loc _sloc) ~attrs:[] _1 ) -# 52987 "parsing/parser.ml" +# 53415 "parsing/parser.ml" in -# 3922 "parsing/parser.mly" +# 3994 "parsing/parser.mly" ( _1 ) -# 52993 "parsing/parser.ml" +# 53421 "parsing/parser.ml" in let _endpos__1_ = _endpos__5_ in -# 1121 "parsing/parser.mly" +# 1200 "parsing/parser.mly" ( extra_rhs_core_type _1 ~pos:_endpos__1_ ) -# 53000 "parsing/parser.ml" +# 53428 "parsing/parser.ml" + + in + let arg_unique_local = + let flags = +# 1275 "parsing/parser.mly" + ( [] ) +# 53435 "parsing/parser.ml" + in + +# 3987 "parsing/parser.mly" + ( flags ) +# 53440 "parsing/parser.ml" in - let arg_local = -# 3913 "parsing/parser.mly" - ( false ) -# 53006 "parsing/parser.ml" - in - let (_endpos_arg_local_, _startpos_arg_local_) = (_endpos__0_, _endpos__0_) in let label = -# 3909 "parsing/parser.mly" +# 3975 "parsing/parser.mly" ( Nolabel ) -# 53012 "parsing/parser.ml" +# 53446 "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 -# 3896 "parsing/parser.mly" +# 3963 "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_) ) -# 53023 "parsing/parser.ml" + mktyp_with_modes arg_unique_local domain , + mktyp_with_modes ret_unique_local (maybe_curry_typ codomain _loc_codomain_)) ) +# 53454 "parsing/parser.ml" in let _endpos__1_ = _endpos_codomain_ in @@ -53027,15 +53458,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1160 "parsing/parser.mly" +# 1239 "parsing/parser.mly" ( mktyp ~loc:_sloc _1 ) -# 53033 "parsing/parser.ml" +# 53464 "parsing/parser.ml" in -# 3901 "parsing/parser.mly" +# 3967 "parsing/parser.mly" ( _1 ) -# 53039 "parsing/parser.ml" +# 53470 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -53053,9 +53484,9 @@ module Tables = struct MenhirLib.EngineTypes.endp = _endpos_codomain_; 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 = x; + MenhirLib.EngineTypes.startp = _startpos_x_; + MenhirLib.EngineTypes.endp = _endpos_x_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; MenhirLib.EngineTypes.semv = _4; @@ -53096,7 +53527,7 @@ module Tables = struct }; } = _menhir_stack in let codomain : (Parsetree.core_type) = Obj.magic codomain in - let _1_inlined1 : unit = Obj.magic _1_inlined1 in + let x : ((modes * (Lexing.position * Lexing.position)) list) = Obj.magic x in let _4 : unit = Obj.magic _4 in let _5 : unit = Obj.magic _5 in let inner_type : (Parsetree.core_type) = Obj.magic inner_type in @@ -53108,12 +53539,18 @@ module Tables = struct let _endpos = _endpos_codomain_ in let _v : (Parsetree.core_type) = let _1 = let _1 = - let ret_local = -# 3915 "parsing/parser.mly" - ( true ) -# 53115 "parsing/parser.ml" - in - let (_endpos_ret_local_, _startpos_ret_local_) = (_endpos__1_inlined1_, _startpos__1_inlined1_) in + let ret_unique_local = + let flags = +# 1277 "parsing/parser.mly" + ( x ) +# 53547 "parsing/parser.ml" + in + +# 3987 "parsing/parser.mly" + ( flags ) +# 53552 "parsing/parser.ml" + + in let domain = let _1 = let _1 = @@ -53123,24 +53560,24 @@ module Tables = struct let xs = # 253 "" ( List.rev xs ) -# 53127 "parsing/parser.ml" +# 53564 "parsing/parser.ml" in -# 1228 "parsing/parser.mly" +# 1307 "parsing/parser.mly" ( xs ) -# 53132 "parsing/parser.ml" +# 53569 "parsing/parser.ml" in -# 3798 "parsing/parser.mly" +# 3865 "parsing/parser.mly" ( _1 ) -# 53138 "parsing/parser.ml" +# 53575 "parsing/parser.ml" in -# 3920 "parsing/parser.mly" +# 3992 "parsing/parser.mly" ( Jane_syntax.Layouts.Ltyp_poly { bound_vars; inner_type } ) -# 53144 "parsing/parser.ml" +# 53581 "parsing/parser.ml" in let _endpos__1_ = _endpos__5_ in @@ -53148,45 +53585,48 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1187 "parsing/parser.mly" +# 1266 "parsing/parser.mly" ( Jane_syntax.Layouts.type_of ~loc:(make_loc _sloc) ~attrs:[] _1 ) -# 53154 "parsing/parser.ml" +# 53591 "parsing/parser.ml" in -# 3922 "parsing/parser.mly" +# 3994 "parsing/parser.mly" ( _1 ) -# 53160 "parsing/parser.ml" +# 53597 "parsing/parser.ml" in let _endpos__1_ = _endpos__5_ in -# 1121 "parsing/parser.mly" +# 1200 "parsing/parser.mly" ( extra_rhs_core_type _1 ~pos:_endpos__1_ ) -# 53167 "parsing/parser.ml" +# 53604 "parsing/parser.ml" + + in + let arg_unique_local = + let flags = +# 1275 "parsing/parser.mly" + ( [] ) +# 53611 "parsing/parser.ml" + in + +# 3987 "parsing/parser.mly" + ( flags ) +# 53616 "parsing/parser.ml" in - let arg_local = -# 3913 "parsing/parser.mly" - ( false ) -# 53173 "parsing/parser.ml" - in - let (_endpos_arg_local_, _startpos_arg_local_) = (_endpos__0_, _endpos__0_) in let label = -# 3909 "parsing/parser.mly" +# 3975 "parsing/parser.mly" ( Nolabel ) -# 53179 "parsing/parser.ml" +# 53622 "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 -# 3896 "parsing/parser.mly" +# 3963 "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_) ) -# 53190 "parsing/parser.ml" + mktyp_with_modes arg_unique_local domain , + mktyp_with_modes ret_unique_local (maybe_curry_typ codomain _loc_codomain_)) ) +# 53630 "parsing/parser.ml" in let _endpos__1_ = _endpos_codomain_ in @@ -53194,15 +53634,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1160 "parsing/parser.mly" +# 1239 "parsing/parser.mly" ( mktyp ~loc:_sloc _1 ) -# 53200 "parsing/parser.ml" +# 53640 "parsing/parser.ml" in -# 3901 "parsing/parser.mly" +# 3967 "parsing/parser.mly" ( _1 ) -# 53206 "parsing/parser.ml" +# 53646 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -53240,46 +53680,55 @@ module Tables = struct let _endpos = _endpos_codomain_ in let _v : (Parsetree.core_type) = let _1 = let _1 = - let ret_local = -# 3913 "parsing/parser.mly" - ( false ) -# 53247 "parsing/parser.ml" - in - let (_endpos_ret_local_, _startpos_ret_local_) = (_endpos__4_, _endpos__4_) in + let ret_unique_local = + let flags = +# 1275 "parsing/parser.mly" + ( [] ) +# 53688 "parsing/parser.ml" + in + +# 3987 "parsing/parser.mly" + ( flags ) +# 53693 "parsing/parser.ml" + + in let domain = let _1 = -# 3924 "parsing/parser.mly" +# 3996 "parsing/parser.mly" ( ty ) -# 53254 "parsing/parser.ml" +# 53700 "parsing/parser.ml" in let _endpos__1_ = _endpos_ty_ in -# 1121 "parsing/parser.mly" +# 1200 "parsing/parser.mly" ( extra_rhs_core_type _1 ~pos:_endpos__1_ ) -# 53260 "parsing/parser.ml" +# 53706 "parsing/parser.ml" + + in + let arg_unique_local = + let flags = +# 1275 "parsing/parser.mly" + ( [] ) +# 53713 "parsing/parser.ml" + in + +# 3987 "parsing/parser.mly" + ( flags ) +# 53718 "parsing/parser.ml" in - let arg_local = -# 3913 "parsing/parser.mly" - ( false ) -# 53266 "parsing/parser.ml" - in - let (_endpos_arg_local_, _startpos_arg_local_) = (_endpos__0_, _endpos__0_) in let label = -# 3909 "parsing/parser.mly" +# 3975 "parsing/parser.mly" ( Nolabel ) -# 53272 "parsing/parser.ml" +# 53724 "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 -# 3896 "parsing/parser.mly" +# 3963 "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_) ) -# 53283 "parsing/parser.ml" + mktyp_with_modes arg_unique_local domain , + mktyp_with_modes ret_unique_local (maybe_curry_typ codomain _loc_codomain_)) ) +# 53732 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_codomain_, _startpos_ty_) in @@ -53287,15 +53736,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1160 "parsing/parser.mly" +# 1239 "parsing/parser.mly" ( mktyp ~loc:_sloc _1 ) -# 53293 "parsing/parser.ml" +# 53742 "parsing/parser.ml" in -# 3901 "parsing/parser.mly" +# 3967 "parsing/parser.mly" ( _1 ) -# 53299 "parsing/parser.ml" +# 53748 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -53313,9 +53762,9 @@ module Tables = struct MenhirLib.EngineTypes.endp = _endpos_codomain_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.semv = x; + MenhirLib.EngineTypes.startp = _startpos_x_; + MenhirLib.EngineTypes.endp = _endpos_x_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; MenhirLib.EngineTypes.semv = _4; @@ -53332,7 +53781,7 @@ module Tables = struct }; } = _menhir_stack in let codomain : (Parsetree.core_type) = Obj.magic codomain in - let _1 : unit = Obj.magic _1 in + let x : ((modes * (Lexing.position * Lexing.position)) list) = Obj.magic x in let _4 : unit = Obj.magic _4 in let ty : (Parsetree.core_type) = Obj.magic ty in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in @@ -53340,46 +53789,55 @@ module Tables = struct let _endpos = _endpos_codomain_ in let _v : (Parsetree.core_type) = let _1 = let _1 = - let ret_local = -# 3915 "parsing/parser.mly" - ( true ) -# 53347 "parsing/parser.ml" - in - let (_endpos_ret_local_, _startpos_ret_local_) = (_endpos__1_, _startpos__1_) in + let ret_unique_local = + let flags = +# 1277 "parsing/parser.mly" + ( x ) +# 53797 "parsing/parser.ml" + in + +# 3987 "parsing/parser.mly" + ( flags ) +# 53802 "parsing/parser.ml" + + in let domain = let _1 = -# 3924 "parsing/parser.mly" +# 3996 "parsing/parser.mly" ( ty ) -# 53354 "parsing/parser.ml" +# 53809 "parsing/parser.ml" in let _endpos__1_ = _endpos_ty_ in -# 1121 "parsing/parser.mly" +# 1200 "parsing/parser.mly" ( extra_rhs_core_type _1 ~pos:_endpos__1_ ) -# 53360 "parsing/parser.ml" +# 53815 "parsing/parser.ml" + + in + let arg_unique_local = + let flags = +# 1275 "parsing/parser.mly" + ( [] ) +# 53822 "parsing/parser.ml" + in + +# 3987 "parsing/parser.mly" + ( flags ) +# 53827 "parsing/parser.ml" in - let arg_local = -# 3913 "parsing/parser.mly" - ( false ) -# 53366 "parsing/parser.ml" - in - let (_endpos_arg_local_, _startpos_arg_local_) = (_endpos__0_, _endpos__0_) in let label = -# 3909 "parsing/parser.mly" +# 3975 "parsing/parser.mly" ( Nolabel ) -# 53372 "parsing/parser.ml" +# 53833 "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 -# 3896 "parsing/parser.mly" +# 3963 "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_) ) -# 53383 "parsing/parser.ml" + mktyp_with_modes arg_unique_local domain , + mktyp_with_modes ret_unique_local (maybe_curry_typ codomain _loc_codomain_)) ) +# 53841 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_codomain_, _startpos_ty_) in @@ -53387,15 +53845,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1160 "parsing/parser.mly" +# 1239 "parsing/parser.mly" ( mktyp ~loc:_sloc _1 ) -# 53393 "parsing/parser.ml" +# 53851 "parsing/parser.ml" in -# 3901 "parsing/parser.mly" +# 3967 "parsing/parser.mly" ( _1 ) -# 53399 "parsing/parser.ml" +# 53857 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -53438,14 +53896,14 @@ module Tables = struct MenhirLib.EngineTypes.endp = _endpos_xs_; 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; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.semv = x; + MenhirLib.EngineTypes.startp = _startpos_x_; + MenhirLib.EngineTypes.endp = _endpos_x_; MenhirLib.EngineTypes.next = _menhir_stack; }; }; @@ -53461,21 +53919,26 @@ module Tables = struct let inner_type : (Parsetree.core_type) = Obj.magic inner_type in let _3 : unit = Obj.magic _3 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 x : ((modes * (Lexing.position * Lexing.position)) list) = Obj.magic x in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in - let _startpos = _startpos__1_ in + let _startpos = _startpos_x_ in let _endpos = _endpos_codomain_ in let _v : (Parsetree.core_type) = let _1 = let _1 = - let ret_local = -# 3913 "parsing/parser.mly" - ( false ) -# 53475 "parsing/parser.ml" - in - let (_endpos_ret_local_, _startpos_ret_local_) = (_endpos__4_, _endpos__4_) in + let ret_unique_local = + let flags = +# 1275 "parsing/parser.mly" + ( [] ) +# 53934 "parsing/parser.ml" + in + +# 3987 "parsing/parser.mly" + ( flags ) +# 53939 "parsing/parser.ml" + + in let domain = - let _startpos__1_ = _startpos__1_inlined1_ in let _1 = let _1 = let _1 = @@ -53484,24 +53947,24 @@ module Tables = struct let xs = # 253 "" ( List.rev xs ) -# 53488 "parsing/parser.ml" +# 53951 "parsing/parser.ml" in -# 1228 "parsing/parser.mly" +# 1307 "parsing/parser.mly" ( xs ) -# 53493 "parsing/parser.ml" +# 53956 "parsing/parser.ml" in -# 3798 "parsing/parser.mly" +# 3865 "parsing/parser.mly" ( _1 ) -# 53499 "parsing/parser.ml" +# 53962 "parsing/parser.ml" in -# 3920 "parsing/parser.mly" +# 3992 "parsing/parser.mly" ( Jane_syntax.Layouts.Ltyp_poly { bound_vars; inner_type } ) -# 53505 "parsing/parser.ml" +# 53968 "parsing/parser.ml" in let _endpos__1_ = _endpos__5_ in @@ -53509,61 +53972,64 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1187 "parsing/parser.mly" +# 1266 "parsing/parser.mly" ( Jane_syntax.Layouts.type_of ~loc:(make_loc _sloc) ~attrs:[] _1 ) -# 53515 "parsing/parser.ml" +# 53978 "parsing/parser.ml" in -# 3922 "parsing/parser.mly" +# 3994 "parsing/parser.mly" ( _1 ) -# 53521 "parsing/parser.ml" +# 53984 "parsing/parser.ml" in let _endpos__1_ = _endpos__5_ in -# 1121 "parsing/parser.mly" +# 1200 "parsing/parser.mly" ( extra_rhs_core_type _1 ~pos:_endpos__1_ ) -# 53528 "parsing/parser.ml" +# 53991 "parsing/parser.ml" + + in + let arg_unique_local = + let flags = +# 1277 "parsing/parser.mly" + ( x ) +# 53998 "parsing/parser.ml" + in + +# 3987 "parsing/parser.mly" + ( flags ) +# 54003 "parsing/parser.ml" in - let arg_local = -# 3915 "parsing/parser.mly" - ( true ) -# 53534 "parsing/parser.ml" - in - let (_endpos_arg_local_, _startpos_arg_local_) = (_endpos__1_, _startpos__1_) in let label = -# 3909 "parsing/parser.mly" +# 3975 "parsing/parser.mly" ( Nolabel ) -# 53540 "parsing/parser.ml" +# 54009 "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 -# 3896 "parsing/parser.mly" +# 3963 "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_) ) -# 53551 "parsing/parser.ml" + mktyp_with_modes arg_unique_local domain , + mktyp_with_modes ret_unique_local (maybe_curry_typ codomain _loc_codomain_)) ) +# 54017 "parsing/parser.ml" in - let _endpos__1_ = _endpos_codomain_ in + let (_endpos__1_, _startpos__1_) = (_endpos_codomain_, _startpos_x_) in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1160 "parsing/parser.mly" +# 1239 "parsing/parser.mly" ( mktyp ~loc:_sloc _1 ) -# 53561 "parsing/parser.ml" +# 54027 "parsing/parser.ml" in -# 3901 "parsing/parser.mly" +# 3967 "parsing/parser.mly" ( _1 ) -# 53567 "parsing/parser.ml" +# 54033 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -53581,9 +54047,9 @@ module Tables = struct MenhirLib.EngineTypes.endp = _endpos_codomain_; 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 = x_inlined1; + MenhirLib.EngineTypes.startp = _startpos_x_inlined1_; + MenhirLib.EngineTypes.endp = _endpos_x_inlined1_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; MenhirLib.EngineTypes.semv = _4; @@ -53611,14 +54077,14 @@ module Tables = struct MenhirLib.EngineTypes.endp = _endpos_xs_; 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; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.semv = x; + MenhirLib.EngineTypes.startp = _startpos_x_; + MenhirLib.EngineTypes.endp = _endpos_x_; MenhirLib.EngineTypes.next = _menhir_stack; }; }; @@ -53630,27 +54096,33 @@ module Tables = struct }; } = _menhir_stack in let codomain : (Parsetree.core_type) = Obj.magic codomain in - let _1_inlined2 : unit = Obj.magic _1_inlined2 in + let x_inlined1 : ((modes * (Lexing.position * Lexing.position)) list) = Obj.magic x_inlined1 in let _4 : unit = Obj.magic _4 in let _5 : unit = Obj.magic _5 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 * 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 x : ((modes * (Lexing.position * Lexing.position)) list) = Obj.magic x in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in - let _startpos = _startpos__1_ in + let _startpos = _startpos_x_ in let _endpos = _endpos_codomain_ in let _v : (Parsetree.core_type) = let _1 = let _1 = - let ret_local = -# 3915 "parsing/parser.mly" - ( true ) -# 53650 "parsing/parser.ml" - in - let (_endpos_ret_local_, _startpos_ret_local_) = (_endpos__1_inlined2_, _startpos__1_inlined2_) in + let ret_unique_local = + let x = x_inlined1 in + let flags = +# 1277 "parsing/parser.mly" + ( x ) +# 54118 "parsing/parser.ml" + in + +# 3987 "parsing/parser.mly" + ( flags ) +# 54123 "parsing/parser.ml" + + in let domain = - let _startpos__1_ = _startpos__1_inlined1_ in let _1 = let _1 = let _1 = @@ -53659,24 +54131,24 @@ module Tables = struct let xs = # 253 "" ( List.rev xs ) -# 53663 "parsing/parser.ml" +# 54135 "parsing/parser.ml" in -# 1228 "parsing/parser.mly" +# 1307 "parsing/parser.mly" ( xs ) -# 53668 "parsing/parser.ml" +# 54140 "parsing/parser.ml" in -# 3798 "parsing/parser.mly" +# 3865 "parsing/parser.mly" ( _1 ) -# 53674 "parsing/parser.ml" +# 54146 "parsing/parser.ml" in -# 3920 "parsing/parser.mly" +# 3992 "parsing/parser.mly" ( Jane_syntax.Layouts.Ltyp_poly { bound_vars; inner_type } ) -# 53680 "parsing/parser.ml" +# 54152 "parsing/parser.ml" in let _endpos__1_ = _endpos__5_ in @@ -53684,61 +54156,64 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1187 "parsing/parser.mly" +# 1266 "parsing/parser.mly" ( Jane_syntax.Layouts.type_of ~loc:(make_loc _sloc) ~attrs:[] _1 ) -# 53690 "parsing/parser.ml" +# 54162 "parsing/parser.ml" in -# 3922 "parsing/parser.mly" +# 3994 "parsing/parser.mly" ( _1 ) -# 53696 "parsing/parser.ml" +# 54168 "parsing/parser.ml" in let _endpos__1_ = _endpos__5_ in -# 1121 "parsing/parser.mly" +# 1200 "parsing/parser.mly" ( extra_rhs_core_type _1 ~pos:_endpos__1_ ) -# 53703 "parsing/parser.ml" +# 54175 "parsing/parser.ml" + + in + let arg_unique_local = + let flags = +# 1277 "parsing/parser.mly" + ( x ) +# 54182 "parsing/parser.ml" + in + +# 3987 "parsing/parser.mly" + ( flags ) +# 54187 "parsing/parser.ml" in - let arg_local = -# 3915 "parsing/parser.mly" - ( true ) -# 53709 "parsing/parser.ml" - in - let (_endpos_arg_local_, _startpos_arg_local_) = (_endpos__1_, _startpos__1_) in let label = -# 3909 "parsing/parser.mly" +# 3975 "parsing/parser.mly" ( Nolabel ) -# 53715 "parsing/parser.ml" +# 54193 "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 -# 3896 "parsing/parser.mly" +# 3963 "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_) ) -# 53726 "parsing/parser.ml" + mktyp_with_modes arg_unique_local domain , + mktyp_with_modes ret_unique_local (maybe_curry_typ codomain _loc_codomain_)) ) +# 54201 "parsing/parser.ml" in - let _endpos__1_ = _endpos_codomain_ in + let (_endpos__1_, _startpos__1_) = (_endpos_codomain_, _startpos_x_) in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1160 "parsing/parser.mly" +# 1239 "parsing/parser.mly" ( mktyp ~loc:_sloc _1 ) -# 53736 "parsing/parser.ml" +# 54211 "parsing/parser.ml" in -# 3901 "parsing/parser.mly" +# 3967 "parsing/parser.mly" ( _1 ) -# 53742 "parsing/parser.ml" +# 54217 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -53766,9 +54241,9 @@ module Tables = struct MenhirLib.EngineTypes.endp = _endpos_ty_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.semv = x; + MenhirLib.EngineTypes.startp = _startpos_x_; + MenhirLib.EngineTypes.endp = _endpos_x_; MenhirLib.EngineTypes.next = _menhir_stack; }; }; @@ -53777,68 +54252,77 @@ module Tables = struct let codomain : (Parsetree.core_type) = Obj.magic codomain in let _4 : unit = Obj.magic _4 in let ty : (Parsetree.core_type) = Obj.magic ty in - let _1 : unit = Obj.magic _1 in + let x : ((modes * (Lexing.position * Lexing.position)) list) = Obj.magic x in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in - let _startpos = _startpos__1_ in + let _startpos = _startpos_x_ in let _endpos = _endpos_codomain_ in let _v : (Parsetree.core_type) = let _1 = let _1 = - let ret_local = -# 3913 "parsing/parser.mly" - ( false ) -# 53790 "parsing/parser.ml" - in - let (_endpos_ret_local_, _startpos_ret_local_) = (_endpos__4_, _endpos__4_) in + let ret_unique_local = + let flags = +# 1275 "parsing/parser.mly" + ( [] ) +# 54266 "parsing/parser.ml" + in + +# 3987 "parsing/parser.mly" + ( flags ) +# 54271 "parsing/parser.ml" + + in let domain = let _1 = -# 3924 "parsing/parser.mly" +# 3996 "parsing/parser.mly" ( ty ) -# 53797 "parsing/parser.ml" +# 54278 "parsing/parser.ml" in let _endpos__1_ = _endpos_ty_ in -# 1121 "parsing/parser.mly" +# 1200 "parsing/parser.mly" ( extra_rhs_core_type _1 ~pos:_endpos__1_ ) -# 53803 "parsing/parser.ml" +# 54284 "parsing/parser.ml" + + in + let arg_unique_local = + let flags = +# 1277 "parsing/parser.mly" + ( x ) +# 54291 "parsing/parser.ml" + in + +# 3987 "parsing/parser.mly" + ( flags ) +# 54296 "parsing/parser.ml" in - let arg_local = -# 3915 "parsing/parser.mly" - ( true ) -# 53809 "parsing/parser.ml" - in - let (_endpos_arg_local_, _startpos_arg_local_) = (_endpos__1_, _startpos__1_) in let label = -# 3909 "parsing/parser.mly" +# 3975 "parsing/parser.mly" ( Nolabel ) -# 53815 "parsing/parser.ml" +# 54302 "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 -# 3896 "parsing/parser.mly" +# 3963 "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_) ) -# 53826 "parsing/parser.ml" + mktyp_with_modes arg_unique_local domain , + mktyp_with_modes ret_unique_local (maybe_curry_typ codomain _loc_codomain_)) ) +# 54310 "parsing/parser.ml" in - let _endpos__1_ = _endpos_codomain_ in + let (_endpos__1_, _startpos__1_) = (_endpos_codomain_, _startpos_x_) in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1160 "parsing/parser.mly" +# 1239 "parsing/parser.mly" ( mktyp ~loc:_sloc _1 ) -# 53836 "parsing/parser.ml" +# 54320 "parsing/parser.ml" in -# 3901 "parsing/parser.mly" +# 3967 "parsing/parser.mly" ( _1 ) -# 53842 "parsing/parser.ml" +# 54326 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -53856,9 +54340,9 @@ module Tables = struct MenhirLib.EngineTypes.endp = _endpos_codomain_; 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 = x_inlined1; + MenhirLib.EngineTypes.startp = _startpos_x_inlined1_; + MenhirLib.EngineTypes.endp = _endpos_x_inlined1_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; MenhirLib.EngineTypes.semv = _4; @@ -53871,9 +54355,9 @@ module Tables = struct MenhirLib.EngineTypes.endp = _endpos_ty_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.semv = x; + MenhirLib.EngineTypes.startp = _startpos_x_; + MenhirLib.EngineTypes.endp = _endpos_x_; MenhirLib.EngineTypes.next = _menhir_stack; }; }; @@ -53881,71 +54365,81 @@ module Tables = struct }; } = _menhir_stack in let codomain : (Parsetree.core_type) = Obj.magic codomain in - let _1_inlined1 : unit = Obj.magic _1_inlined1 in + let x_inlined1 : ((modes * (Lexing.position * Lexing.position)) list) = Obj.magic x_inlined1 in let _4 : unit = Obj.magic _4 in let ty : (Parsetree.core_type) = Obj.magic ty in - let _1 : unit = Obj.magic _1 in + let x : ((modes * (Lexing.position * Lexing.position)) list) = Obj.magic x in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in - let _startpos = _startpos__1_ in + let _startpos = _startpos_x_ in let _endpos = _endpos_codomain_ in let _v : (Parsetree.core_type) = let _1 = let _1 = - let ret_local = -# 3915 "parsing/parser.mly" - ( true ) -# 53897 "parsing/parser.ml" - in - let (_endpos_ret_local_, _startpos_ret_local_) = (_endpos__1_inlined1_, _startpos__1_inlined1_) in + let ret_unique_local = + let x = x_inlined1 in + let flags = +# 1277 "parsing/parser.mly" + ( x ) +# 54383 "parsing/parser.ml" + in + +# 3987 "parsing/parser.mly" + ( flags ) +# 54388 "parsing/parser.ml" + + in let domain = let _1 = -# 3924 "parsing/parser.mly" +# 3996 "parsing/parser.mly" ( ty ) -# 53904 "parsing/parser.ml" +# 54395 "parsing/parser.ml" in let _endpos__1_ = _endpos_ty_ in -# 1121 "parsing/parser.mly" +# 1200 "parsing/parser.mly" ( extra_rhs_core_type _1 ~pos:_endpos__1_ ) -# 53910 "parsing/parser.ml" +# 54401 "parsing/parser.ml" + + in + let arg_unique_local = + let flags = +# 1277 "parsing/parser.mly" + ( x ) +# 54408 "parsing/parser.ml" + in + +# 3987 "parsing/parser.mly" + ( flags ) +# 54413 "parsing/parser.ml" in - let arg_local = -# 3915 "parsing/parser.mly" - ( true ) -# 53916 "parsing/parser.ml" - in - let (_endpos_arg_local_, _startpos_arg_local_) = (_endpos__1_, _startpos__1_) in let label = -# 3909 "parsing/parser.mly" +# 3975 "parsing/parser.mly" ( Nolabel ) -# 53922 "parsing/parser.ml" +# 54419 "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 -# 3896 "parsing/parser.mly" +# 3963 "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_) ) -# 53933 "parsing/parser.ml" + mktyp_with_modes arg_unique_local domain , + mktyp_with_modes ret_unique_local (maybe_curry_typ codomain _loc_codomain_)) ) +# 54427 "parsing/parser.ml" in - let _endpos__1_ = _endpos_codomain_ in + let (_endpos__1_, _startpos__1_) = (_endpos_codomain_, _startpos_x_) in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1160 "parsing/parser.mly" +# 1239 "parsing/parser.mly" ( mktyp ~loc:_sloc _1 ) -# 53943 "parsing/parser.ml" +# 54437 "parsing/parser.ml" in -# 3901 "parsing/parser.mly" +# 3967 "parsing/parser.mly" ( _1 ) -# 53949 "parsing/parser.ml" +# 54443 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -53972,39 +54466,39 @@ module Tables = struct let ys = # 260 "" ( List.flatten xss ) -# 53976 "parsing/parser.ml" +# 54470 "parsing/parser.ml" in let xs = let items = -# 1196 "parsing/parser.mly" +# 1275 "parsing/parser.mly" ( [] ) -# 53982 "parsing/parser.ml" +# 54476 "parsing/parser.ml" in -# 1625 "parsing/parser.mly" +# 1704 "parsing/parser.mly" ( items ) -# 53987 "parsing/parser.ml" +# 54481 "parsing/parser.ml" in # 267 "" ( xs @ ys ) -# 53993 "parsing/parser.ml" +# 54487 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_xss_, _startpos_xss_) in let _endpos = _endpos__1_ in let _startpos = _startpos__1_ in -# 1115 "parsing/parser.mly" +# 1194 "parsing/parser.mly" ( extra_str _startpos _endpos _1 ) -# 54002 "parsing/parser.ml" +# 54496 "parsing/parser.ml" in -# 1618 "parsing/parser.mly" +# 1697 "parsing/parser.mly" ( _1 ) -# 54008 "parsing/parser.ml" +# 54502 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -54045,7 +54539,7 @@ module Tables = struct let ys = # 260 "" ( List.flatten xss ) -# 54049 "parsing/parser.ml" +# 54543 "parsing/parser.ml" in let xs = let items = @@ -54053,65 +54547,65 @@ module Tables = struct let _1 = let _1 = let attrs = -# 4472 "parsing/parser.mly" +# 4544 "parsing/parser.mly" ( _1 ) -# 54059 "parsing/parser.ml" +# 54553 "parsing/parser.ml" in -# 1632 "parsing/parser.mly" +# 1711 "parsing/parser.mly" ( mkstrexp e attrs ) -# 54064 "parsing/parser.ml" +# 54558 "parsing/parser.ml" in let _startpos__1_ = _startpos_e_ in let _startpos = _startpos__1_ in -# 1127 "parsing/parser.mly" +# 1206 "parsing/parser.mly" ( text_str _startpos @ [_1] ) -# 54072 "parsing/parser.ml" +# 54566 "parsing/parser.ml" in let _startpos__1_ = _startpos_e_ in let _endpos = _endpos__1_ in let _startpos = _startpos__1_ in -# 1146 "parsing/parser.mly" +# 1225 "parsing/parser.mly" ( mark_rhs_docs _startpos _endpos; _1 ) -# 54082 "parsing/parser.ml" +# 54576 "parsing/parser.ml" in -# 1198 "parsing/parser.mly" +# 1277 "parsing/parser.mly" ( x ) -# 54088 "parsing/parser.ml" +# 54582 "parsing/parser.ml" in -# 1625 "parsing/parser.mly" +# 1704 "parsing/parser.mly" ( items ) -# 54094 "parsing/parser.ml" +# 54588 "parsing/parser.ml" in # 267 "" ( xs @ ys ) -# 54100 "parsing/parser.ml" +# 54594 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_xss_, _startpos_e_) in let _endpos = _endpos__1_ in let _startpos = _startpos__1_ in -# 1115 "parsing/parser.mly" +# 1194 "parsing/parser.mly" ( extra_str _startpos _endpos _1 ) -# 54109 "parsing/parser.ml" +# 54603 "parsing/parser.ml" in -# 1618 "parsing/parser.mly" +# 1697 "parsing/parser.mly" ( _1 ) -# 54115 "parsing/parser.ml" +# 54609 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -54137,9 +54631,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1647 "parsing/parser.mly" +# 1726 "parsing/parser.mly" ( val_of_let_bindings ~loc:_sloc _1 ) -# 54143 "parsing/parser.ml" +# 54637 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -54173,9 +54667,9 @@ module Tables = struct let _2 = let _1 = _1_inlined1 in -# 4472 "parsing/parser.mly" +# 4544 "parsing/parser.mly" ( _1 ) -# 54179 "parsing/parser.ml" +# 54673 "parsing/parser.ml" in let _endpos__2_ = _endpos__1_inlined1_ in @@ -54183,10 +54677,10 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1650 "parsing/parser.mly" +# 1729 "parsing/parser.mly" ( let docs = symbol_docs _sloc in Pstr_extension (_1, add_docs_attrs docs _2) ) -# 54190 "parsing/parser.ml" +# 54684 "parsing/parser.ml" in let _endpos__1_ = _endpos__1_inlined1_ in @@ -54194,15 +54688,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1162 "parsing/parser.mly" +# 1241 "parsing/parser.mly" ( mkstr ~loc:_sloc _1 ) -# 54200 "parsing/parser.ml" +# 54694 "parsing/parser.ml" in -# 1679 "parsing/parser.mly" +# 1758 "parsing/parser.mly" ( _1 ) -# 54206 "parsing/parser.ml" +# 54700 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -54226,23 +54720,23 @@ module Tables = struct let _endpos = _endpos__1_ in let _v : (Parsetree.structure_item) = let _1 = let _1 = -# 1653 "parsing/parser.mly" +# 1732 "parsing/parser.mly" ( Pstr_attribute _1 ) -# 54232 "parsing/parser.ml" +# 54726 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1162 "parsing/parser.mly" +# 1241 "parsing/parser.mly" ( mkstr ~loc:_sloc _1 ) -# 54240 "parsing/parser.ml" +# 54734 "parsing/parser.ml" in -# 1679 "parsing/parser.mly" +# 1758 "parsing/parser.mly" ( _1 ) -# 54246 "parsing/parser.ml" +# 54740 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -54266,23 +54760,23 @@ module Tables = struct let _endpos = _endpos__1_ in let _v : (Parsetree.structure_item) = let _1 = let _1 = -# 1657 "parsing/parser.mly" +# 1736 "parsing/parser.mly" ( pstr_primitive _1 ) -# 54272 "parsing/parser.ml" +# 54766 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1179 "parsing/parser.mly" +# 1258 "parsing/parser.mly" ( wrap_mkstr_ext ~loc:_sloc _1 ) -# 54280 "parsing/parser.ml" +# 54774 "parsing/parser.ml" in -# 1679 "parsing/parser.mly" +# 1758 "parsing/parser.mly" ( _1 ) -# 54286 "parsing/parser.ml" +# 54780 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -54306,23 +54800,23 @@ module Tables = struct let _endpos = _endpos__1_ in let _v : (Parsetree.structure_item) = let _1 = let _1 = -# 1659 "parsing/parser.mly" +# 1738 "parsing/parser.mly" ( pstr_primitive _1 ) -# 54312 "parsing/parser.ml" +# 54806 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1179 "parsing/parser.mly" +# 1258 "parsing/parser.mly" ( wrap_mkstr_ext ~loc:_sloc _1 ) -# 54320 "parsing/parser.ml" +# 54814 "parsing/parser.ml" in -# 1679 "parsing/parser.mly" +# 1758 "parsing/parser.mly" ( _1 ) -# 54326 "parsing/parser.ml" +# 54820 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -54357,26 +54851,26 @@ module Tables = struct let _1 = let _1 = let _1 = -# 1357 "parsing/parser.mly" +# 1436 "parsing/parser.mly" ( let (x, b) = a in x, b :: bs ) -# 54363 "parsing/parser.ml" +# 54857 "parsing/parser.ml" in -# 3397 "parsing/parser.mly" +# 3464 "parsing/parser.mly" ( _1 ) -# 54368 "parsing/parser.ml" +# 54862 "parsing/parser.ml" in -# 3380 "parsing/parser.mly" +# 3447 "parsing/parser.mly" ( _1 ) -# 54374 "parsing/parser.ml" +# 54868 "parsing/parser.ml" in -# 1661 "parsing/parser.mly" +# 1740 "parsing/parser.mly" ( pstr_type _1 ) -# 54380 "parsing/parser.ml" +# 54874 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_bs_, _startpos_a_) in @@ -54384,15 +54878,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1179 "parsing/parser.mly" +# 1258 "parsing/parser.mly" ( wrap_mkstr_ext ~loc:_sloc _1 ) -# 54390 "parsing/parser.ml" +# 54884 "parsing/parser.ml" in -# 1679 "parsing/parser.mly" +# 1758 "parsing/parser.mly" ( _1 ) -# 54396 "parsing/parser.ml" +# 54890 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -54477,16 +54971,16 @@ module Tables = struct let attrs2 = let _1 = _1_inlined3 in -# 4472 "parsing/parser.mly" +# 4544 "parsing/parser.mly" ( _1 ) -# 54483 "parsing/parser.ml" +# 54977 "parsing/parser.ml" in let _endpos_attrs2_ = _endpos__1_inlined3_ in let cs = -# 1349 "parsing/parser.mly" +# 1428 "parsing/parser.mly" ( List.rev xs ) -# 54490 "parsing/parser.ml" +# 54984 "parsing/parser.ml" in let tid = let (_endpos__1_, _startpos__1_, _1) = (_endpos__1_inlined2_, _startpos__1_inlined2_, _1_inlined2) in @@ -54494,46 +54988,46 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1123 "parsing/parser.mly" +# 1202 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 54500 "parsing/parser.ml" +# 54994 "parsing/parser.ml" in let _4 = -# 4307 "parsing/parser.mly" +# 4379 "parsing/parser.mly" ( Recursive ) -# 54506 "parsing/parser.ml" +# 55000 "parsing/parser.ml" in let attrs1 = let _1 = _1_inlined1 in -# 4476 "parsing/parser.mly" +# 4548 "parsing/parser.mly" ( _1 ) -# 54513 "parsing/parser.ml" +# 55007 "parsing/parser.ml" in let _endpos = _endpos_attrs2_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 3719 "parsing/parser.mly" +# 3786 "parsing/parser.mly" ( let docs = symbol_docs _sloc in let attrs = attrs1 @ attrs2 in Te.mk tid cs ~params ~priv ~attrs ~docs, ext ) -# 54525 "parsing/parser.ml" +# 55019 "parsing/parser.ml" in -# 3702 "parsing/parser.mly" +# 3769 "parsing/parser.mly" ( _1 ) -# 54531 "parsing/parser.ml" +# 55025 "parsing/parser.ml" in -# 1663 "parsing/parser.mly" +# 1742 "parsing/parser.mly" ( pstr_typext _1 ) -# 54537 "parsing/parser.ml" +# 55031 "parsing/parser.ml" in let _endpos__1_ = _endpos__1_inlined3_ in @@ -54541,15 +55035,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1179 "parsing/parser.mly" +# 1258 "parsing/parser.mly" ( wrap_mkstr_ext ~loc:_sloc _1 ) -# 54547 "parsing/parser.ml" +# 55041 "parsing/parser.ml" in -# 1679 "parsing/parser.mly" +# 1758 "parsing/parser.mly" ( _1 ) -# 54553 "parsing/parser.ml" +# 55047 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -54641,16 +55135,16 @@ module Tables = struct let attrs2 = let _1 = _1_inlined4 in -# 4472 "parsing/parser.mly" +# 4544 "parsing/parser.mly" ( _1 ) -# 54647 "parsing/parser.ml" +# 55141 "parsing/parser.ml" in let _endpos_attrs2_ = _endpos__1_inlined4_ in let cs = -# 1349 "parsing/parser.mly" +# 1428 "parsing/parser.mly" ( List.rev xs ) -# 54654 "parsing/parser.ml" +# 55148 "parsing/parser.ml" in let tid = let (_endpos__1_, _startpos__1_, _1) = (_endpos__1_inlined3_, _startpos__1_inlined3_, _1_inlined3) in @@ -54658,9 +55152,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1123 "parsing/parser.mly" +# 1202 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 54664 "parsing/parser.ml" +# 55158 "parsing/parser.ml" in let _4 = @@ -54669,41 +55163,41 @@ module Tables = struct let _startpos = _startpos__1_ in let _loc = (_startpos, _endpos) in -# 4309 "parsing/parser.mly" +# 4381 "parsing/parser.mly" ( not_expecting _loc "nonrec flag" ) -# 54675 "parsing/parser.ml" +# 55169 "parsing/parser.ml" in let attrs1 = let _1 = _1_inlined1 in -# 4476 "parsing/parser.mly" +# 4548 "parsing/parser.mly" ( _1 ) -# 54683 "parsing/parser.ml" +# 55177 "parsing/parser.ml" in let _endpos = _endpos_attrs2_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 3719 "parsing/parser.mly" +# 3786 "parsing/parser.mly" ( let docs = symbol_docs _sloc in let attrs = attrs1 @ attrs2 in Te.mk tid cs ~params ~priv ~attrs ~docs, ext ) -# 54695 "parsing/parser.ml" +# 55189 "parsing/parser.ml" in -# 3702 "parsing/parser.mly" +# 3769 "parsing/parser.mly" ( _1 ) -# 54701 "parsing/parser.ml" +# 55195 "parsing/parser.ml" in -# 1663 "parsing/parser.mly" +# 1742 "parsing/parser.mly" ( pstr_typext _1 ) -# 54707 "parsing/parser.ml" +# 55201 "parsing/parser.ml" in let _endpos__1_ = _endpos__1_inlined4_ in @@ -54711,15 +55205,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1179 "parsing/parser.mly" +# 1258 "parsing/parser.mly" ( wrap_mkstr_ext ~loc:_sloc _1 ) -# 54717 "parsing/parser.ml" +# 55211 "parsing/parser.ml" in -# 1679 "parsing/parser.mly" +# 1758 "parsing/parser.mly" ( _1 ) -# 54723 "parsing/parser.ml" +# 55217 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -54743,23 +55237,23 @@ module Tables = struct let _endpos = _endpos__1_ in let _v : (Parsetree.structure_item) = let _1 = let _1 = -# 1665 "parsing/parser.mly" +# 1744 "parsing/parser.mly" ( pstr_exception _1 ) -# 54749 "parsing/parser.ml" +# 55243 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1179 "parsing/parser.mly" +# 1258 "parsing/parser.mly" ( wrap_mkstr_ext ~loc:_sloc _1 ) -# 54757 "parsing/parser.ml" +# 55251 "parsing/parser.ml" in -# 1679 "parsing/parser.mly" +# 1758 "parsing/parser.mly" ( _1 ) -# 54763 "parsing/parser.ml" +# 55257 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -54822,9 +55316,9 @@ module Tables = struct let attrs2 = let _1 = _1_inlined3 in -# 4472 "parsing/parser.mly" +# 4544 "parsing/parser.mly" ( _1 ) -# 54828 "parsing/parser.ml" +# 55322 "parsing/parser.ml" in let _endpos_attrs2_ = _endpos__1_inlined3_ in @@ -54834,36 +55328,36 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1123 "parsing/parser.mly" +# 1202 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 54840 "parsing/parser.ml" +# 55334 "parsing/parser.ml" in let attrs1 = let _1 = _1_inlined1 in -# 4476 "parsing/parser.mly" +# 4548 "parsing/parser.mly" ( _1 ) -# 54848 "parsing/parser.ml" +# 55342 "parsing/parser.ml" in let _endpos = _endpos_attrs2_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1700 "parsing/parser.mly" +# 1779 "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 ) -# 54861 "parsing/parser.ml" +# 55355 "parsing/parser.ml" in -# 1667 "parsing/parser.mly" +# 1746 "parsing/parser.mly" ( _1 ) -# 54867 "parsing/parser.ml" +# 55361 "parsing/parser.ml" in let _endpos__1_ = _endpos__1_inlined3_ in @@ -54871,15 +55365,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1179 "parsing/parser.mly" +# 1258 "parsing/parser.mly" ( wrap_mkstr_ext ~loc:_sloc _1 ) -# 54877 "parsing/parser.ml" +# 55371 "parsing/parser.ml" in -# 1679 "parsing/parser.mly" +# 1758 "parsing/parser.mly" ( _1 ) -# 54883 "parsing/parser.ml" +# 55377 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -54958,9 +55452,9 @@ module Tables = struct let attrs2 = let _1 = _1_inlined3 in -# 4472 "parsing/parser.mly" +# 4544 "parsing/parser.mly" ( _1 ) -# 54964 "parsing/parser.ml" +# 55458 "parsing/parser.ml" in let _endpos_attrs2_ = _endpos__1_inlined3_ in @@ -54970,24 +55464,24 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1123 "parsing/parser.mly" +# 1202 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 54976 "parsing/parser.ml" +# 55470 "parsing/parser.ml" in let attrs1 = let _1 = _1_inlined1 in -# 4476 "parsing/parser.mly" +# 4548 "parsing/parser.mly" ( _1 ) -# 54984 "parsing/parser.ml" +# 55478 "parsing/parser.ml" in let _endpos = _endpos_attrs2_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1735 "parsing/parser.mly" +# 1814 "parsing/parser.mly" ( let loc = make_loc _sloc in let attrs = attrs1 @ attrs2 in @@ -54995,25 +55489,25 @@ module Tables = struct ext, Mb.mk name body ~attrs ~loc ~docs ) -# 54999 "parsing/parser.ml" +# 55493 "parsing/parser.ml" in -# 1357 "parsing/parser.mly" +# 1436 "parsing/parser.mly" ( let (x, b) = a in x, b :: bs ) -# 55005 "parsing/parser.ml" +# 55499 "parsing/parser.ml" in -# 1723 "parsing/parser.mly" +# 1802 "parsing/parser.mly" ( _1 ) -# 55011 "parsing/parser.ml" +# 55505 "parsing/parser.ml" in -# 1669 "parsing/parser.mly" +# 1748 "parsing/parser.mly" ( pstr_recmodule _1 ) -# 55017 "parsing/parser.ml" +# 55511 "parsing/parser.ml" in let _endpos__1_ = _endpos_bs_ in @@ -55021,15 +55515,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1179 "parsing/parser.mly" +# 1258 "parsing/parser.mly" ( wrap_mkstr_ext ~loc:_sloc _1 ) -# 55027 "parsing/parser.ml" +# 55521 "parsing/parser.ml" in -# 1679 "parsing/parser.mly" +# 1758 "parsing/parser.mly" ( _1 ) -# 55033 "parsing/parser.ml" +# 55527 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -55053,23 +55547,23 @@ module Tables = struct let _endpos = _endpos__1_ in let _v : (Parsetree.structure_item) = let _1 = let _1 = -# 1671 "parsing/parser.mly" +# 1750 "parsing/parser.mly" ( let (body, ext) = _1 in (Pstr_modtype body, ext) ) -# 55059 "parsing/parser.ml" +# 55553 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1179 "parsing/parser.mly" +# 1258 "parsing/parser.mly" ( wrap_mkstr_ext ~loc:_sloc _1 ) -# 55067 "parsing/parser.ml" +# 55561 "parsing/parser.ml" in -# 1679 "parsing/parser.mly" +# 1758 "parsing/parser.mly" ( _1 ) -# 55073 "parsing/parser.ml" +# 55567 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -55093,23 +55587,23 @@ module Tables = struct let _endpos = _endpos__1_ in let _v : (Parsetree.structure_item) = let _1 = let _1 = -# 1673 "parsing/parser.mly" +# 1752 "parsing/parser.mly" ( let (body, ext) = _1 in (Pstr_open body, ext) ) -# 55099 "parsing/parser.ml" +# 55593 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1179 "parsing/parser.mly" +# 1258 "parsing/parser.mly" ( wrap_mkstr_ext ~loc:_sloc _1 ) -# 55107 "parsing/parser.ml" +# 55601 "parsing/parser.ml" in -# 1679 "parsing/parser.mly" +# 1758 "parsing/parser.mly" ( _1 ) -# 55113 "parsing/parser.ml" +# 55607 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -55179,9 +55673,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 : ( -# 937 "parsing/parser.mly" +# 1014 "parsing/parser.mly" (string) -# 55185 "parsing/parser.ml" +# 55679 "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 @@ -55199,9 +55693,9 @@ module Tables = struct let attrs2 = let _1 = _1_inlined3 in -# 4472 "parsing/parser.mly" +# 4544 "parsing/parser.mly" ( _1 ) -# 55205 "parsing/parser.ml" +# 55699 "parsing/parser.ml" in let _endpos_attrs2_ = _endpos__1_inlined3_ in @@ -55211,24 +55705,24 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1123 "parsing/parser.mly" +# 1202 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 55217 "parsing/parser.ml" +# 55711 "parsing/parser.ml" in let attrs1 = let _1 = _1_inlined1 in -# 4476 "parsing/parser.mly" +# 4548 "parsing/parser.mly" ( _1 ) -# 55225 "parsing/parser.ml" +# 55719 "parsing/parser.ml" in let _endpos = _endpos_attrs2_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 2089 "parsing/parser.mly" +# 2168 "parsing/parser.mly" ( let attrs = attrs1 @ attrs2 in let loc = make_loc _sloc in @@ -55236,25 +55730,25 @@ module Tables = struct ext, Ci.mk id body ~virt ~params ~attrs ~loc ~docs ) -# 55240 "parsing/parser.ml" +# 55734 "parsing/parser.ml" in -# 1357 "parsing/parser.mly" +# 1436 "parsing/parser.mly" ( let (x, b) = a in x, b :: bs ) -# 55246 "parsing/parser.ml" +# 55740 "parsing/parser.ml" in -# 2078 "parsing/parser.mly" +# 2157 "parsing/parser.mly" ( _1 ) -# 55252 "parsing/parser.ml" +# 55746 "parsing/parser.ml" in -# 1675 "parsing/parser.mly" +# 1754 "parsing/parser.mly" ( let (ext, l) = _1 in (Pstr_class l, ext) ) -# 55258 "parsing/parser.ml" +# 55752 "parsing/parser.ml" in let _endpos__1_ = _endpos_bs_ in @@ -55262,15 +55756,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1179 "parsing/parser.mly" +# 1258 "parsing/parser.mly" ( wrap_mkstr_ext ~loc:_sloc _1 ) -# 55268 "parsing/parser.ml" +# 55762 "parsing/parser.ml" in -# 1679 "parsing/parser.mly" +# 1758 "parsing/parser.mly" ( _1 ) -# 55274 "parsing/parser.ml" +# 55768 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -55294,23 +55788,23 @@ module Tables = struct let _endpos = _endpos__1_ in let _v : (Parsetree.structure_item) = let _1 = let _1 = -# 1677 "parsing/parser.mly" +# 1756 "parsing/parser.mly" ( let (ext, l) = _1 in (Pstr_class_type l, ext) ) -# 55300 "parsing/parser.ml" +# 55794 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1179 "parsing/parser.mly" +# 1258 "parsing/parser.mly" ( wrap_mkstr_ext ~loc:_sloc _1 ) -# 55308 "parsing/parser.ml" +# 55802 "parsing/parser.ml" in -# 1679 "parsing/parser.mly" +# 1758 "parsing/parser.mly" ( _1 ) -# 55314 "parsing/parser.ml" +# 55808 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -55364,22 +55858,22 @@ module Tables = struct let attrs2 = let _1 = _1_inlined1 in -# 4472 "parsing/parser.mly" +# 4544 "parsing/parser.mly" ( _1 ) -# 55370 "parsing/parser.ml" +# 55864 "parsing/parser.ml" in let _endpos_attrs2_ = _endpos__1_inlined1_ in let attrs1 = -# 4476 "parsing/parser.mly" +# 4548 "parsing/parser.mly" ( _1 ) -# 55377 "parsing/parser.ml" +# 55871 "parsing/parser.ml" in let _endpos = _endpos_attrs2_ in let _symbolstartpos = _startpos_is_functor_ in let _sloc = (_symbolstartpos, _endpos) in -# 1779 "parsing/parser.mly" +# 1858 "parsing/parser.mly" ( let attrs = attrs1 @ attrs2 in let loc = make_loc _sloc in @@ -55387,7 +55881,7 @@ module Tables = struct let incl = Incl.mk thing ~attrs ~loc ~docs in is_functor, incl, ext ) -# 55391 "parsing/parser.ml" +# 55885 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos__1_inlined1_, _startpos_is_functor_) in @@ -55395,7 +55889,7 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1681 "parsing/parser.mly" +# 1760 "parsing/parser.mly" ( let is_functor, incl, ext = _1 in let item = if is_functor @@ -55405,7 +55899,7 @@ module Tables = struct in wrap_str_ext ~loc:_sloc item ext ) -# 55409 "parsing/parser.ml" +# 55903 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -55428,9 +55922,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 4381 "parsing/parser.mly" +# 4453 "parsing/parser.mly" ( "-" ) -# 55434 "parsing/parser.ml" +# 55928 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -55453,9 +55947,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (string) = -# 4382 "parsing/parser.mly" +# 4454 "parsing/parser.mly" ( "-." ) -# 55459 "parsing/parser.ml" +# 55953 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -55508,9 +56002,9 @@ module Tables = struct let _v : (Parsetree.row_field) = let _5 = let _1 = _1_inlined1 in -# 4476 "parsing/parser.mly" +# 4548 "parsing/parser.mly" ( _1 ) -# 55514 "parsing/parser.ml" +# 56008 "parsing/parser.ml" in let _endpos__5_ = _endpos__1_inlined1_ in @@ -55519,18 +56013,18 @@ module Tables = struct let xs = # 253 "" ( List.rev xs ) -# 55523 "parsing/parser.ml" +# 56017 "parsing/parser.ml" in -# 1260 "parsing/parser.mly" +# 1339 "parsing/parser.mly" ( xs ) -# 55528 "parsing/parser.ml" +# 56022 "parsing/parser.ml" in -# 4062 "parsing/parser.mly" +# 4134 "parsing/parser.mly" ( _1 ) -# 55534 "parsing/parser.ml" +# 56028 "parsing/parser.ml" in let _1 = @@ -55538,20 +56032,20 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1123 "parsing/parser.mly" +# 1202 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 55544 "parsing/parser.ml" +# 56038 "parsing/parser.ml" in let _endpos = _endpos__5_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 4048 "parsing/parser.mly" +# 4120 "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 ) -# 55555 "parsing/parser.ml" +# 56049 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -55583,9 +56077,9 @@ module Tables = struct let _v : (Parsetree.row_field) = let _2 = let _1 = _1_inlined1 in -# 4476 "parsing/parser.mly" +# 4548 "parsing/parser.mly" ( _1 ) -# 55589 "parsing/parser.ml" +# 56083 "parsing/parser.ml" in let _endpos__2_ = _endpos__1_inlined1_ in @@ -55594,20 +56088,20 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1123 "parsing/parser.mly" +# 1202 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 55600 "parsing/parser.ml" +# 56094 "parsing/parser.ml" in let _endpos = _endpos__2_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 4052 "parsing/parser.mly" +# 4124 "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 [] ) -# 55611 "parsing/parser.ml" +# 56105 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -55639,7 +56133,7 @@ module Tables = struct let _v : (Parsetree.toplevel_phrase) = let arg = # 124 "" ( None ) -# 55643 "parsing/parser.ml" +# 56137 "parsing/parser.ml" in let _endpos_arg_ = _endpos__1_inlined1_ in let dir = @@ -55648,23 +56142,23 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1123 "parsing/parser.mly" +# 1202 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 55654 "parsing/parser.ml" +# 56148 "parsing/parser.ml" in let _1 = -# 2791 "parsing/parser.mly" +# 2873 "parsing/parser.mly" ( () ) -# 55660 "parsing/parser.ml" +# 56154 "parsing/parser.ml" in let _endpos = _endpos_arg_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 4270 "parsing/parser.mly" +# 4342 "parsing/parser.mly" ( mk_directive ~loc:_sloc dir arg ) -# 55668 "parsing/parser.ml" +# 56162 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -55695,9 +56189,9 @@ module Tables = struct }; } = _menhir_stack in let _1_inlined2 : ( -# 977 "parsing/parser.mly" +# 1055 "parsing/parser.mly" (string * Location.t * string option) -# 55701 "parsing/parser.ml" +# 56195 "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 @@ -55708,23 +56202,23 @@ module Tables = struct let (_endpos__1_, _startpos__1_, _1) = (_endpos__1_inlined2_, _startpos__1_inlined2_, _1_inlined2) in let x = let _1 = -# 4274 "parsing/parser.mly" +# 4346 "parsing/parser.mly" ( let (s, _, _) = _1 in Pdir_string s ) -# 55714 "parsing/parser.ml" +# 56208 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1184 "parsing/parser.mly" +# 1263 "parsing/parser.mly" ( mk_directive_arg ~loc:_sloc _1 ) -# 55722 "parsing/parser.ml" +# 56216 "parsing/parser.ml" in # 126 "" ( Some x ) -# 55728 "parsing/parser.ml" +# 56222 "parsing/parser.ml" in let _endpos_arg_ = _endpos__1_inlined2_ in @@ -55734,23 +56228,23 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1123 "parsing/parser.mly" +# 1202 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 55740 "parsing/parser.ml" +# 56234 "parsing/parser.ml" in let _1 = -# 2791 "parsing/parser.mly" +# 2873 "parsing/parser.mly" ( () ) -# 55746 "parsing/parser.ml" +# 56240 "parsing/parser.ml" in let _endpos = _endpos_arg_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 4270 "parsing/parser.mly" +# 4342 "parsing/parser.mly" ( mk_directive ~loc:_sloc dir arg ) -# 55754 "parsing/parser.ml" +# 56248 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -55781,9 +56275,9 @@ module Tables = struct }; } = _menhir_stack in let _1_inlined2 : ( -# 921 "parsing/parser.mly" +# 998 "parsing/parser.mly" (string * char option) -# 55787 "parsing/parser.ml" +# 56281 "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 @@ -55794,23 +56288,23 @@ module Tables = struct let (_endpos__1_, _startpos__1_, _1) = (_endpos__1_inlined2_, _startpos__1_inlined2_, _1_inlined2) in let x = let _1 = -# 4275 "parsing/parser.mly" +# 4347 "parsing/parser.mly" ( let (n, m) = _1 in Pdir_int (n ,m) ) -# 55800 "parsing/parser.ml" +# 56294 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1184 "parsing/parser.mly" +# 1263 "parsing/parser.mly" ( mk_directive_arg ~loc:_sloc _1 ) -# 55808 "parsing/parser.ml" +# 56302 "parsing/parser.ml" in # 126 "" ( Some x ) -# 55814 "parsing/parser.ml" +# 56308 "parsing/parser.ml" in let _endpos_arg_ = _endpos__1_inlined2_ in @@ -55820,23 +56314,23 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1123 "parsing/parser.mly" +# 1202 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 55826 "parsing/parser.ml" +# 56320 "parsing/parser.ml" in let _1 = -# 2791 "parsing/parser.mly" +# 2873 "parsing/parser.mly" ( () ) -# 55832 "parsing/parser.ml" +# 56326 "parsing/parser.ml" in let _endpos = _endpos_arg_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 4270 "parsing/parser.mly" +# 4342 "parsing/parser.mly" ( mk_directive ~loc:_sloc dir arg ) -# 55840 "parsing/parser.ml" +# 56334 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -55876,23 +56370,23 @@ module Tables = struct let (_endpos__1_, _startpos__1_, _1) = (_endpos__1_inlined2_, _startpos__1_inlined2_, _1_inlined2) in let x = let _1 = -# 4276 "parsing/parser.mly" +# 4348 "parsing/parser.mly" ( Pdir_ident _1 ) -# 55882 "parsing/parser.ml" +# 56376 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1184 "parsing/parser.mly" +# 1263 "parsing/parser.mly" ( mk_directive_arg ~loc:_sloc _1 ) -# 55890 "parsing/parser.ml" +# 56384 "parsing/parser.ml" in # 126 "" ( Some x ) -# 55896 "parsing/parser.ml" +# 56390 "parsing/parser.ml" in let _endpos_arg_ = _endpos__1_inlined2_ in @@ -55902,23 +56396,23 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1123 "parsing/parser.mly" +# 1202 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 55908 "parsing/parser.ml" +# 56402 "parsing/parser.ml" in let _1 = -# 2791 "parsing/parser.mly" +# 2873 "parsing/parser.mly" ( () ) -# 55914 "parsing/parser.ml" +# 56408 "parsing/parser.ml" in let _endpos = _endpos_arg_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 4270 "parsing/parser.mly" +# 4342 "parsing/parser.mly" ( mk_directive ~loc:_sloc dir arg ) -# 55922 "parsing/parser.ml" +# 56416 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -55958,23 +56452,23 @@ module Tables = struct let (_endpos__1_, _startpos__1_, _1) = (_endpos__1_inlined2_, _startpos__1_inlined2_, _1_inlined2) in let x = let _1 = -# 4277 "parsing/parser.mly" +# 4349 "parsing/parser.mly" ( Pdir_ident _1 ) -# 55964 "parsing/parser.ml" +# 56458 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1184 "parsing/parser.mly" +# 1263 "parsing/parser.mly" ( mk_directive_arg ~loc:_sloc _1 ) -# 55972 "parsing/parser.ml" +# 56466 "parsing/parser.ml" in # 126 "" ( Some x ) -# 55978 "parsing/parser.ml" +# 56472 "parsing/parser.ml" in let _endpos_arg_ = _endpos__1_inlined2_ in @@ -55984,23 +56478,23 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1123 "parsing/parser.mly" +# 1202 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 55990 "parsing/parser.ml" +# 56484 "parsing/parser.ml" in let _1 = -# 2791 "parsing/parser.mly" +# 2873 "parsing/parser.mly" ( () ) -# 55996 "parsing/parser.ml" +# 56490 "parsing/parser.ml" in let _endpos = _endpos_arg_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 4270 "parsing/parser.mly" +# 4342 "parsing/parser.mly" ( mk_directive ~loc:_sloc dir arg ) -# 56004 "parsing/parser.ml" +# 56498 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -56040,23 +56534,23 @@ module Tables = struct let (_endpos__1_, _startpos__1_) = (_endpos__1_inlined2_, _startpos__1_inlined2_) in let x = let _1 = -# 4278 "parsing/parser.mly" +# 4350 "parsing/parser.mly" ( Pdir_bool false ) -# 56046 "parsing/parser.ml" +# 56540 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1184 "parsing/parser.mly" +# 1263 "parsing/parser.mly" ( mk_directive_arg ~loc:_sloc _1 ) -# 56054 "parsing/parser.ml" +# 56548 "parsing/parser.ml" in # 126 "" ( Some x ) -# 56060 "parsing/parser.ml" +# 56554 "parsing/parser.ml" in let _endpos_arg_ = _endpos__1_inlined2_ in @@ -56066,23 +56560,23 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1123 "parsing/parser.mly" +# 1202 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 56072 "parsing/parser.ml" +# 56566 "parsing/parser.ml" in let _1 = -# 2791 "parsing/parser.mly" +# 2873 "parsing/parser.mly" ( () ) -# 56078 "parsing/parser.ml" +# 56572 "parsing/parser.ml" in let _endpos = _endpos_arg_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 4270 "parsing/parser.mly" +# 4342 "parsing/parser.mly" ( mk_directive ~loc:_sloc dir arg ) -# 56086 "parsing/parser.ml" +# 56580 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -56122,23 +56616,23 @@ module Tables = struct let (_endpos__1_, _startpos__1_) = (_endpos__1_inlined2_, _startpos__1_inlined2_) in let x = let _1 = -# 4279 "parsing/parser.mly" +# 4351 "parsing/parser.mly" ( Pdir_bool true ) -# 56128 "parsing/parser.ml" +# 56622 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1184 "parsing/parser.mly" +# 1263 "parsing/parser.mly" ( mk_directive_arg ~loc:_sloc _1 ) -# 56136 "parsing/parser.ml" +# 56630 "parsing/parser.ml" in # 126 "" ( Some x ) -# 56142 "parsing/parser.ml" +# 56636 "parsing/parser.ml" in let _endpos_arg_ = _endpos__1_inlined2_ in @@ -56148,23 +56642,23 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1123 "parsing/parser.mly" +# 1202 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 56154 "parsing/parser.ml" +# 56648 "parsing/parser.ml" in let _1 = -# 2791 "parsing/parser.mly" +# 2873 "parsing/parser.mly" ( () ) -# 56160 "parsing/parser.ml" +# 56654 "parsing/parser.ml" in let _endpos = _endpos_arg_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 4270 "parsing/parser.mly" +# 4342 "parsing/parser.mly" ( mk_directive ~loc:_sloc dir arg ) -# 56168 "parsing/parser.ml" +# 56662 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -56196,7 +56690,7 @@ module Tables = struct let _v : (Parsetree.toplevel_phrase) = let arg = # 124 "" ( None ) -# 56200 "parsing/parser.ml" +# 56694 "parsing/parser.ml" in let _endpos_arg_ = _endpos__1_inlined1_ in let dir = @@ -56205,23 +56699,23 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1123 "parsing/parser.mly" +# 1202 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 56211 "parsing/parser.ml" +# 56705 "parsing/parser.ml" in let _1 = -# 2792 "parsing/parser.mly" +# 2874 "parsing/parser.mly" ( () ) -# 56217 "parsing/parser.ml" +# 56711 "parsing/parser.ml" in let _endpos = _endpos_arg_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 4270 "parsing/parser.mly" +# 4342 "parsing/parser.mly" ( mk_directive ~loc:_sloc dir arg ) -# 56225 "parsing/parser.ml" +# 56719 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -56252,9 +56746,9 @@ module Tables = struct }; } = _menhir_stack in let _1_inlined2 : ( -# 977 "parsing/parser.mly" +# 1055 "parsing/parser.mly" (string * Location.t * string option) -# 56258 "parsing/parser.ml" +# 56752 "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 @@ -56265,23 +56759,23 @@ module Tables = struct let (_endpos__1_, _startpos__1_, _1) = (_endpos__1_inlined2_, _startpos__1_inlined2_, _1_inlined2) in let x = let _1 = -# 4274 "parsing/parser.mly" +# 4346 "parsing/parser.mly" ( let (s, _, _) = _1 in Pdir_string s ) -# 56271 "parsing/parser.ml" +# 56765 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1184 "parsing/parser.mly" +# 1263 "parsing/parser.mly" ( mk_directive_arg ~loc:_sloc _1 ) -# 56279 "parsing/parser.ml" +# 56773 "parsing/parser.ml" in # 126 "" ( Some x ) -# 56285 "parsing/parser.ml" +# 56779 "parsing/parser.ml" in let _endpos_arg_ = _endpos__1_inlined2_ in @@ -56291,23 +56785,23 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1123 "parsing/parser.mly" +# 1202 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 56297 "parsing/parser.ml" +# 56791 "parsing/parser.ml" in let _1 = -# 2792 "parsing/parser.mly" +# 2874 "parsing/parser.mly" ( () ) -# 56303 "parsing/parser.ml" +# 56797 "parsing/parser.ml" in let _endpos = _endpos_arg_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 4270 "parsing/parser.mly" +# 4342 "parsing/parser.mly" ( mk_directive ~loc:_sloc dir arg ) -# 56311 "parsing/parser.ml" +# 56805 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -56338,9 +56832,9 @@ module Tables = struct }; } = _menhir_stack in let _1_inlined2 : ( -# 921 "parsing/parser.mly" +# 998 "parsing/parser.mly" (string * char option) -# 56344 "parsing/parser.ml" +# 56838 "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 @@ -56351,23 +56845,23 @@ module Tables = struct let (_endpos__1_, _startpos__1_, _1) = (_endpos__1_inlined2_, _startpos__1_inlined2_, _1_inlined2) in let x = let _1 = -# 4275 "parsing/parser.mly" +# 4347 "parsing/parser.mly" ( let (n, m) = _1 in Pdir_int (n ,m) ) -# 56357 "parsing/parser.ml" +# 56851 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1184 "parsing/parser.mly" +# 1263 "parsing/parser.mly" ( mk_directive_arg ~loc:_sloc _1 ) -# 56365 "parsing/parser.ml" +# 56859 "parsing/parser.ml" in # 126 "" ( Some x ) -# 56371 "parsing/parser.ml" +# 56865 "parsing/parser.ml" in let _endpos_arg_ = _endpos__1_inlined2_ in @@ -56377,23 +56871,23 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1123 "parsing/parser.mly" +# 1202 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 56383 "parsing/parser.ml" +# 56877 "parsing/parser.ml" in let _1 = -# 2792 "parsing/parser.mly" +# 2874 "parsing/parser.mly" ( () ) -# 56389 "parsing/parser.ml" +# 56883 "parsing/parser.ml" in let _endpos = _endpos_arg_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 4270 "parsing/parser.mly" +# 4342 "parsing/parser.mly" ( mk_directive ~loc:_sloc dir arg ) -# 56397 "parsing/parser.ml" +# 56891 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -56433,23 +56927,23 @@ module Tables = struct let (_endpos__1_, _startpos__1_, _1) = (_endpos__1_inlined2_, _startpos__1_inlined2_, _1_inlined2) in let x = let _1 = -# 4276 "parsing/parser.mly" +# 4348 "parsing/parser.mly" ( Pdir_ident _1 ) -# 56439 "parsing/parser.ml" +# 56933 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1184 "parsing/parser.mly" +# 1263 "parsing/parser.mly" ( mk_directive_arg ~loc:_sloc _1 ) -# 56447 "parsing/parser.ml" +# 56941 "parsing/parser.ml" in # 126 "" ( Some x ) -# 56453 "parsing/parser.ml" +# 56947 "parsing/parser.ml" in let _endpos_arg_ = _endpos__1_inlined2_ in @@ -56459,23 +56953,23 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1123 "parsing/parser.mly" +# 1202 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 56465 "parsing/parser.ml" +# 56959 "parsing/parser.ml" in let _1 = -# 2792 "parsing/parser.mly" +# 2874 "parsing/parser.mly" ( () ) -# 56471 "parsing/parser.ml" +# 56965 "parsing/parser.ml" in let _endpos = _endpos_arg_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 4270 "parsing/parser.mly" +# 4342 "parsing/parser.mly" ( mk_directive ~loc:_sloc dir arg ) -# 56479 "parsing/parser.ml" +# 56973 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -56515,23 +57009,23 @@ module Tables = struct let (_endpos__1_, _startpos__1_, _1) = (_endpos__1_inlined2_, _startpos__1_inlined2_, _1_inlined2) in let x = let _1 = -# 4277 "parsing/parser.mly" +# 4349 "parsing/parser.mly" ( Pdir_ident _1 ) -# 56521 "parsing/parser.ml" +# 57015 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1184 "parsing/parser.mly" +# 1263 "parsing/parser.mly" ( mk_directive_arg ~loc:_sloc _1 ) -# 56529 "parsing/parser.ml" +# 57023 "parsing/parser.ml" in # 126 "" ( Some x ) -# 56535 "parsing/parser.ml" +# 57029 "parsing/parser.ml" in let _endpos_arg_ = _endpos__1_inlined2_ in @@ -56541,23 +57035,23 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1123 "parsing/parser.mly" +# 1202 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 56547 "parsing/parser.ml" +# 57041 "parsing/parser.ml" in let _1 = -# 2792 "parsing/parser.mly" +# 2874 "parsing/parser.mly" ( () ) -# 56553 "parsing/parser.ml" +# 57047 "parsing/parser.ml" in let _endpos = _endpos_arg_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 4270 "parsing/parser.mly" +# 4342 "parsing/parser.mly" ( mk_directive ~loc:_sloc dir arg ) -# 56561 "parsing/parser.ml" +# 57055 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -56597,23 +57091,23 @@ module Tables = struct let (_endpos__1_, _startpos__1_) = (_endpos__1_inlined2_, _startpos__1_inlined2_) in let x = let _1 = -# 4278 "parsing/parser.mly" +# 4350 "parsing/parser.mly" ( Pdir_bool false ) -# 56603 "parsing/parser.ml" +# 57097 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1184 "parsing/parser.mly" +# 1263 "parsing/parser.mly" ( mk_directive_arg ~loc:_sloc _1 ) -# 56611 "parsing/parser.ml" +# 57105 "parsing/parser.ml" in # 126 "" ( Some x ) -# 56617 "parsing/parser.ml" +# 57111 "parsing/parser.ml" in let _endpos_arg_ = _endpos__1_inlined2_ in @@ -56623,23 +57117,23 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1123 "parsing/parser.mly" +# 1202 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 56629 "parsing/parser.ml" +# 57123 "parsing/parser.ml" in let _1 = -# 2792 "parsing/parser.mly" +# 2874 "parsing/parser.mly" ( () ) -# 56635 "parsing/parser.ml" +# 57129 "parsing/parser.ml" in let _endpos = _endpos_arg_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 4270 "parsing/parser.mly" +# 4342 "parsing/parser.mly" ( mk_directive ~loc:_sloc dir arg ) -# 56643 "parsing/parser.ml" +# 57137 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -56679,23 +57173,23 @@ module Tables = struct let (_endpos__1_, _startpos__1_) = (_endpos__1_inlined2_, _startpos__1_inlined2_) in let x = let _1 = -# 4279 "parsing/parser.mly" +# 4351 "parsing/parser.mly" ( Pdir_bool true ) -# 56685 "parsing/parser.ml" +# 57179 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1184 "parsing/parser.mly" +# 1263 "parsing/parser.mly" ( mk_directive_arg ~loc:_sloc _1 ) -# 56693 "parsing/parser.ml" +# 57187 "parsing/parser.ml" in # 126 "" ( Some x ) -# 56699 "parsing/parser.ml" +# 57193 "parsing/parser.ml" in let _endpos_arg_ = _endpos__1_inlined2_ in @@ -56705,23 +57199,23 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1123 "parsing/parser.mly" +# 1202 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 56711 "parsing/parser.ml" +# 57205 "parsing/parser.ml" in let _1 = -# 2792 "parsing/parser.mly" +# 2874 "parsing/parser.mly" ( () ) -# 56717 "parsing/parser.ml" +# 57211 "parsing/parser.ml" in let _endpos = _endpos_arg_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 4270 "parsing/parser.mly" +# 4342 "parsing/parser.mly" ( mk_directive ~loc:_sloc dir arg ) -# 56725 "parsing/parser.ml" +# 57219 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -56761,37 +57255,37 @@ module Tables = struct let _1 = let _1 = let attrs = -# 4472 "parsing/parser.mly" +# 4544 "parsing/parser.mly" ( _1 ) -# 56767 "parsing/parser.ml" +# 57261 "parsing/parser.ml" in -# 1632 "parsing/parser.mly" +# 1711 "parsing/parser.mly" ( mkstrexp e attrs ) -# 56772 "parsing/parser.ml" +# 57266 "parsing/parser.ml" in let _startpos__1_ = _startpos_e_ in let _startpos = _startpos__1_ in -# 1127 "parsing/parser.mly" +# 1206 "parsing/parser.mly" ( text_str _startpos @ [_1] ) -# 56780 "parsing/parser.ml" +# 57274 "parsing/parser.ml" in let _startpos__1_ = _startpos_e_ in let _endpos = _endpos__1_ in let _startpos = _startpos__1_ in -# 1115 "parsing/parser.mly" +# 1194 "parsing/parser.mly" ( extra_str _startpos _endpos _1 ) -# 56789 "parsing/parser.ml" +# 57283 "parsing/parser.ml" in -# 1397 "parsing/parser.mly" +# 1476 "parsing/parser.mly" ( Ptop_def _1 ) -# 56795 "parsing/parser.ml" +# 57289 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -56824,21 +57318,21 @@ module Tables = struct let _1 = # 260 "" ( List.flatten xss ) -# 56828 "parsing/parser.ml" +# 57322 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_xss_, _startpos_xss_) in let _endpos = _endpos__1_ in let _startpos = _startpos__1_ in -# 1115 "parsing/parser.mly" +# 1194 "parsing/parser.mly" ( extra_str _startpos _endpos _1 ) -# 56836 "parsing/parser.ml" +# 57330 "parsing/parser.ml" in -# 1401 "parsing/parser.mly" +# 1480 "parsing/parser.mly" ( Ptop_def _1 ) -# 56842 "parsing/parser.ml" +# 57336 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -56868,9 +57362,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (Parsetree.toplevel_phrase) = -# 1405 "parsing/parser.mly" +# 1484 "parsing/parser.mly" ( _1 ) -# 56874 "parsing/parser.ml" +# 57368 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -56893,9 +57387,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Parsetree.toplevel_phrase) = -# 1408 "parsing/parser.mly" +# 1487 "parsing/parser.mly" ( raise End_of_file ) -# 56899 "parsing/parser.ml" +# 57393 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -56918,9 +57412,9 @@ module Tables = struct let _startpos = _startpos_ty_ in let _endpos = _endpos_ty_ in let _v : (Parsetree.core_type) = -# 3934 "parsing/parser.mly" +# 4006 "parsing/parser.mly" ( ty ) -# 56924 "parsing/parser.ml" +# 57418 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -56948,18 +57442,18 @@ module Tables = struct let xs = # 253 "" ( List.rev xs ) -# 56952 "parsing/parser.ml" +# 57446 "parsing/parser.ml" in -# 1288 "parsing/parser.mly" +# 1367 "parsing/parser.mly" ( xs ) -# 56957 "parsing/parser.ml" +# 57451 "parsing/parser.ml" in -# 3937 "parsing/parser.mly" +# 4009 "parsing/parser.mly" ( Ptyp_tuple tys ) -# 56963 "parsing/parser.ml" +# 57457 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_xs_, _startpos_xs_) in @@ -56967,15 +57461,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1160 "parsing/parser.mly" +# 1239 "parsing/parser.mly" ( mktyp ~loc:_sloc _1 ) -# 56973 "parsing/parser.ml" +# 57467 "parsing/parser.ml" in -# 3939 "parsing/parser.mly" +# 4011 "parsing/parser.mly" ( _1 ) -# 56979 "parsing/parser.ml" +# 57473 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -57005,9 +57499,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (Parsetree.core_type option * Parsetree.core_type option) = -# 3122 "parsing/parser.mly" +# 3189 "parsing/parser.mly" ( (Some _2, None) ) -# 57011 "parsing/parser.ml" +# 57505 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -57051,9 +57545,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__4_ in let _v : (Parsetree.core_type option * Parsetree.core_type option) = -# 3123 "parsing/parser.mly" +# 3190 "parsing/parser.mly" ( (Some _2, Some _4) ) -# 57057 "parsing/parser.ml" +# 57551 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -57083,9 +57577,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (Parsetree.core_type option * Parsetree.core_type option) = -# 3124 "parsing/parser.mly" +# 3191 "parsing/parser.mly" ( (None, Some _2) ) -# 57089 "parsing/parser.ml" +# 57583 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -57115,9 +57609,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (Parsetree.core_type option * Parsetree.core_type option) = -# 3125 "parsing/parser.mly" +# 3192 "parsing/parser.mly" ( syntax_error() ) -# 57121 "parsing/parser.ml" +# 57615 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -57147,9 +57641,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (Parsetree.core_type option * Parsetree.core_type option) = -# 3126 "parsing/parser.mly" +# 3193 "parsing/parser.mly" ( syntax_error() ) -# 57153 "parsing/parser.ml" +# 57647 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -57165,9 +57659,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) = -# 3473 "parsing/parser.mly" +# 3540 "parsing/parser.mly" ( (Ptype_abstract, Public, None) ) -# 57171 "parsing/parser.ml" +# 57665 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -57197,9 +57691,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) = -# 3475 "parsing/parser.mly" +# 3542 "parsing/parser.mly" ( _2 ) -# 57203 "parsing/parser.ml" +# 57697 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -57222,9 +57716,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Longident.t) = -# 4230 "parsing/parser.mly" +# 4302 "parsing/parser.mly" ( _1 ) -# 57228 "parsing/parser.ml" +# 57722 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -57270,39 +57764,39 @@ module Tables = struct let _v : (Parsetree.core_type * (Asttypes.variance * Asttypes.injectivity)) = let _3 = let _1 = _1_inlined2 in -# 4476 "parsing/parser.mly" +# 4548 "parsing/parser.mly" ( _1 ) -# 57276 "parsing/parser.ml" +# 57770 "parsing/parser.ml" in let _2 = let _startpos__1_ = _startpos__1_inlined1_ in let _1 = let _1 = -# 3533 "parsing/parser.mly" +# 3600 "parsing/parser.mly" ( Ptyp_var tyvar ) -# 57285 "parsing/parser.ml" +# 57779 "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" +# 1239 "parsing/parser.mly" ( mktyp ~loc:_sloc _1 ) -# 57294 "parsing/parser.ml" +# 57788 "parsing/parser.ml" in -# 3536 "parsing/parser.mly" +# 3603 "parsing/parser.mly" ( _1 ) -# 57300 "parsing/parser.ml" +# 57794 "parsing/parser.ml" in -# 3527 "parsing/parser.mly" +# 3594 "parsing/parser.mly" ( {_2 with ptyp_attributes = _3}, _1 ) -# 57306 "parsing/parser.ml" +# 57800 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -57341,38 +57835,38 @@ module Tables = struct let _v : (Parsetree.core_type * (Asttypes.variance * Asttypes.injectivity)) = let _3 = let _1 = _1_inlined2 in -# 4476 "parsing/parser.mly" +# 4548 "parsing/parser.mly" ( _1 ) -# 57347 "parsing/parser.ml" +# 57841 "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" +# 3602 "parsing/parser.mly" ( Ptyp_any ) -# 57356 "parsing/parser.ml" +# 57850 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1160 "parsing/parser.mly" +# 1239 "parsing/parser.mly" ( mktyp ~loc:_sloc _1 ) -# 57364 "parsing/parser.ml" +# 57858 "parsing/parser.ml" in -# 3536 "parsing/parser.mly" +# 3603 "parsing/parser.mly" ( _1 ) -# 57370 "parsing/parser.ml" +# 57864 "parsing/parser.ml" in -# 3527 "parsing/parser.mly" +# 3594 "parsing/parser.mly" ( {_2 with ptyp_attributes = _3}, _1 ) -# 57376 "parsing/parser.ml" +# 57870 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -57388,9 +57882,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) = -# 3483 "parsing/parser.mly" +# 3550 "parsing/parser.mly" ( [] ) -# 57394 "parsing/parser.ml" +# 57888 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -57413,9 +57907,9 @@ module Tables = struct let _startpos = _startpos_p_ in let _endpos = _endpos_p_ in let _v : ((Parsetree.core_type * (Asttypes.variance * Asttypes.injectivity)) list) = -# 3485 "parsing/parser.mly" +# 3552 "parsing/parser.mly" ( [p] ) -# 57419 "parsing/parser.ml" +# 57913 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -57455,18 +57949,18 @@ module Tables = struct let xs = # 253 "" ( List.rev xs ) -# 57459 "parsing/parser.ml" +# 57953 "parsing/parser.ml" in -# 1260 "parsing/parser.mly" +# 1339 "parsing/parser.mly" ( xs ) -# 57464 "parsing/parser.ml" +# 57958 "parsing/parser.ml" in -# 3489 "parsing/parser.mly" +# 3556 "parsing/parser.mly" ( ps ) -# 57470 "parsing/parser.ml" +# 57964 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -57482,9 +57976,9 @@ module Tables = struct let _startpos = _menhir_stack.MenhirLib.EngineTypes.endp in let _endpos = _startpos in let _v : (Asttypes.variance * Asttypes.injectivity) = -# 3547 "parsing/parser.mly" +# 3614 "parsing/parser.mly" ( NoVariance, NoInjectivity ) -# 57488 "parsing/parser.ml" +# 57982 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -57507,9 +58001,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Asttypes.variance * Asttypes.injectivity) = -# 3548 "parsing/parser.mly" +# 3615 "parsing/parser.mly" ( Covariant, NoInjectivity ) -# 57513 "parsing/parser.ml" +# 58007 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -57532,9 +58026,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Asttypes.variance * Asttypes.injectivity) = -# 3549 "parsing/parser.mly" +# 3616 "parsing/parser.mly" ( Contravariant, NoInjectivity ) -# 57538 "parsing/parser.ml" +# 58032 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -57557,9 +58051,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Asttypes.variance * Asttypes.injectivity) = -# 3550 "parsing/parser.mly" +# 3617 "parsing/parser.mly" ( NoVariance, Injective ) -# 57563 "parsing/parser.ml" +# 58057 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -57589,9 +58083,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (Asttypes.variance * Asttypes.injectivity) = -# 3551 "parsing/parser.mly" +# 3618 "parsing/parser.mly" ( Covariant, Injective ) -# 57595 "parsing/parser.ml" +# 58089 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -57621,9 +58115,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (Asttypes.variance * Asttypes.injectivity) = -# 3551 "parsing/parser.mly" +# 3618 "parsing/parser.mly" ( Covariant, Injective ) -# 57627 "parsing/parser.ml" +# 58121 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -57653,9 +58147,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (Asttypes.variance * Asttypes.injectivity) = -# 3552 "parsing/parser.mly" +# 3619 "parsing/parser.mly" ( Contravariant, Injective ) -# 57659 "parsing/parser.ml" +# 58153 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -57685,9 +58179,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (Asttypes.variance * Asttypes.injectivity) = -# 3552 "parsing/parser.mly" +# 3619 "parsing/parser.mly" ( Contravariant, Injective ) -# 57691 "parsing/parser.ml" +# 58185 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -57706,20 +58200,20 @@ module Tables = struct MenhirLib.EngineTypes.next = _menhir_stack; } = _menhir_stack in let _1 : ( -# 913 "parsing/parser.mly" +# 990 "parsing/parser.mly" (string) -# 57712 "parsing/parser.ml" +# 58206 "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 -# 3554 "parsing/parser.mly" +# 3621 "parsing/parser.mly" ( if _1 = "+!" then Covariant, Injective else if _1 = "-!" then Contravariant, Injective else expecting _loc__1_ "type_variance" ) -# 57723 "parsing/parser.ml" +# 58217 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -57738,20 +58232,20 @@ module Tables = struct MenhirLib.EngineTypes.next = _menhir_stack; } = _menhir_stack in let _1 : ( -# 962 "parsing/parser.mly" +# 1040 "parsing/parser.mly" (string) -# 57744 "parsing/parser.ml" +# 58238 "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 -# 3558 "parsing/parser.mly" +# 3625 "parsing/parser.mly" ( if _1 = "!+" then Covariant, Injective else if _1 = "!-" then Contravariant, Injective else expecting _loc__1_ "type_variance" ) -# 57755 "parsing/parser.ml" +# 58249 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -57770,9 +58264,9 @@ module Tables = struct MenhirLib.EngineTypes.next = _menhir_stack; } = _menhir_stack in let _1 : ( -# 922 "parsing/parser.mly" +# 999 "parsing/parser.mly" (string * char option) -# 57776 "parsing/parser.ml" +# 58270 "parsing/parser.ml" ) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in @@ -57781,9 +58275,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 4119 "parsing/parser.mly" +# 4191 "parsing/parser.mly" ( unboxed_int _sloc _sloc Positive _1 ) -# 57787 "parsing/parser.ml" +# 58281 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -57802,9 +58296,9 @@ module Tables = struct MenhirLib.EngineTypes.next = _menhir_stack; } = _menhir_stack in let _1 : ( -# 899 "parsing/parser.mly" +# 976 "parsing/parser.mly" (string * char option) -# 57808 "parsing/parser.ml" +# 58302 "parsing/parser.ml" ) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in @@ -57813,9 +58307,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 4120 "parsing/parser.mly" +# 4192 "parsing/parser.mly" ( unboxed_float _sloc Positive _1 ) -# 57819 "parsing/parser.ml" +# 58313 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -57849,39 +58343,39 @@ module Tables = struct let ys = # 260 "" ( List.flatten xss ) -# 57853 "parsing/parser.ml" +# 58347 "parsing/parser.ml" in let xs = let _1 = -# 1196 "parsing/parser.mly" +# 1275 "parsing/parser.mly" ( [] ) -# 57859 "parsing/parser.ml" +# 58353 "parsing/parser.ml" in -# 1428 "parsing/parser.mly" +# 1507 "parsing/parser.mly" ( _1 ) -# 57864 "parsing/parser.ml" +# 58358 "parsing/parser.ml" in # 267 "" ( xs @ ys ) -# 57870 "parsing/parser.ml" +# 58364 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_xss_, _startpos_xss_) in let _endpos = _endpos__1_ in let _startpos = _startpos__1_ in -# 1119 "parsing/parser.mly" +# 1198 "parsing/parser.mly" ( extra_def _startpos _endpos _1 ) -# 57879 "parsing/parser.ml" +# 58373 "parsing/parser.ml" in -# 1421 "parsing/parser.mly" +# 1500 "parsing/parser.mly" ( _1 ) -# 57885 "parsing/parser.ml" +# 58379 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -57929,7 +58423,7 @@ module Tables = struct let ys = # 260 "" ( List.flatten xss ) -# 57933 "parsing/parser.ml" +# 58427 "parsing/parser.ml" in let xs = let _1 = @@ -57937,61 +58431,61 @@ module Tables = struct let _1 = let _1 = let attrs = -# 4472 "parsing/parser.mly" +# 4544 "parsing/parser.mly" ( _1 ) -# 57943 "parsing/parser.ml" +# 58437 "parsing/parser.ml" in -# 1632 "parsing/parser.mly" +# 1711 "parsing/parser.mly" ( mkstrexp e attrs ) -# 57948 "parsing/parser.ml" +# 58442 "parsing/parser.ml" in -# 1137 "parsing/parser.mly" +# 1216 "parsing/parser.mly" ( Ptop_def [_1] ) -# 57954 "parsing/parser.ml" +# 58448 "parsing/parser.ml" in let _startpos__1_ = _startpos_e_ in let _startpos = _startpos__1_ in -# 1135 "parsing/parser.mly" +# 1214 "parsing/parser.mly" ( text_def _startpos @ [_1] ) -# 57962 "parsing/parser.ml" +# 58456 "parsing/parser.ml" in -# 1198 "parsing/parser.mly" +# 1277 "parsing/parser.mly" ( x ) -# 57968 "parsing/parser.ml" +# 58462 "parsing/parser.ml" in -# 1428 "parsing/parser.mly" +# 1507 "parsing/parser.mly" ( _1 ) -# 57974 "parsing/parser.ml" +# 58468 "parsing/parser.ml" in # 267 "" ( xs @ ys ) -# 57980 "parsing/parser.ml" +# 58474 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_xss_, _startpos_e_) in let _endpos = _endpos__1_ in let _startpos = _startpos__1_ in -# 1119 "parsing/parser.mly" +# 1198 "parsing/parser.mly" ( extra_def _startpos _endpos _1 ) -# 57989 "parsing/parser.ml" +# 58483 "parsing/parser.ml" in -# 1421 "parsing/parser.mly" +# 1500 "parsing/parser.mly" ( _1 ) -# 57995 "parsing/parser.ml" +# 58489 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -58028,9 +58522,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__3_ in let _v : (Asttypes.label) = -# 4149 "parsing/parser.mly" +# 4221 "parsing/parser.mly" ( _2 ) -# 58034 "parsing/parser.ml" +# 58528 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -58069,9 +58563,9 @@ module Tables = struct let _v : (Asttypes.label) = let _loc__3_ = (_startpos__3_, _endpos__3_) in let _loc__1_ = (_startpos__1_, _endpos__1_) in -# 4150 "parsing/parser.mly" +# 4222 "parsing/parser.mly" ( unclosed "(" _loc__1_ ")" _loc__3_ ) -# 58075 "parsing/parser.ml" +# 58569 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -58102,9 +58596,9 @@ module Tables = struct let _endpos = _endpos__2_ in let _v : (Asttypes.label) = let _loc__2_ = (_startpos__2_, _endpos__2_) in -# 4151 "parsing/parser.mly" +# 4223 "parsing/parser.mly" ( expecting _loc__2_ "operator" ) -# 58108 "parsing/parser.ml" +# 58602 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -58142,9 +58636,9 @@ module Tables = struct let _endpos = _endpos__3_ in let _v : (Asttypes.label) = let _loc__3_ = (_startpos__3_, _endpos__3_) in -# 4152 "parsing/parser.mly" +# 4224 "parsing/parser.mly" ( expecting _loc__3_ "module-expr" ) -# 58148 "parsing/parser.ml" +# 58642 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -58163,17 +58657,17 @@ module Tables = struct MenhirLib.EngineTypes.next = _menhir_stack; } = _menhir_stack in let _1 : ( -# 937 "parsing/parser.mly" +# 1014 "parsing/parser.mly" (string) -# 58169 "parsing/parser.ml" +# 58663 "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) = -# 4155 "parsing/parser.mly" +# 4227 "parsing/parser.mly" ( _1 ) -# 58177 "parsing/parser.ml" +# 58671 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -58196,9 +58690,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Asttypes.label) = -# 4156 "parsing/parser.mly" +# 4228 "parsing/parser.mly" ( _1 ) -# 58202 "parsing/parser.ml" +# 58696 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -58221,9 +58715,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Longident.t) = -# 4224 "parsing/parser.mly" +# 4296 "parsing/parser.mly" ( _1 ) -# 58227 "parsing/parser.ml" +# 58721 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -58268,9 +58762,9 @@ module Tables = struct let ty : (Parsetree.core_type) = Obj.magic ty in let _5 : unit = Obj.magic _5 in let _1_inlined1 : ( -# 937 "parsing/parser.mly" +# 1014 "parsing/parser.mly" (string) -# 58274 "parsing/parser.ml" +# 58768 "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 @@ -58282,33 +58776,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 = -# 4106 "parsing/parser.mly" +# 4178 "parsing/parser.mly" ( _1 ) -# 58288 "parsing/parser.ml" +# 58782 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1123 "parsing/parser.mly" +# 1202 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 58296 "parsing/parser.ml" +# 58790 "parsing/parser.ml" in let attrs = -# 4476 "parsing/parser.mly" +# 4548 "parsing/parser.mly" ( _1 ) -# 58302 "parsing/parser.ml" +# 58796 "parsing/parser.ml" in let _1 = -# 4374 "parsing/parser.mly" +# 4446 "parsing/parser.mly" ( Fresh ) -# 58307 "parsing/parser.ml" +# 58801 "parsing/parser.ml" in -# 2229 "parsing/parser.mly" +# 2308 "parsing/parser.mly" ( (label, mutable_, Cfk_virtual ty), attrs ) -# 58312 "parsing/parser.ml" +# 58806 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -58353,9 +58847,9 @@ module Tables = struct let _6 : (Parsetree.expression) = Obj.magic _6 in let _5 : unit = Obj.magic _5 in let _1_inlined1 : ( -# 937 "parsing/parser.mly" +# 1014 "parsing/parser.mly" (string) -# 58359 "parsing/parser.ml" +# 58853 "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 @@ -58367,33 +58861,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 = -# 4106 "parsing/parser.mly" +# 4178 "parsing/parser.mly" ( _1 ) -# 58373 "parsing/parser.ml" +# 58867 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1123 "parsing/parser.mly" +# 1202 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 58381 "parsing/parser.ml" +# 58875 "parsing/parser.ml" in let _2 = -# 4476 "parsing/parser.mly" +# 4548 "parsing/parser.mly" ( _1 ) -# 58387 "parsing/parser.ml" +# 58881 "parsing/parser.ml" in let _1 = -# 4377 "parsing/parser.mly" +# 4449 "parsing/parser.mly" ( Fresh ) -# 58392 "parsing/parser.ml" +# 58886 "parsing/parser.ml" in -# 2231 "parsing/parser.mly" +# 2310 "parsing/parser.mly" ( (_4, _3, Cfk_concrete (_1, _6)), _2 ) -# 58397 "parsing/parser.ml" +# 58891 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -58444,9 +58938,9 @@ module Tables = struct let _6 : (Parsetree.expression) = Obj.magic _6 in let _5 : unit = Obj.magic _5 in let _1_inlined2 : ( -# 937 "parsing/parser.mly" +# 1014 "parsing/parser.mly" (string) -# 58450 "parsing/parser.ml" +# 58944 "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 @@ -58459,36 +58953,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 = -# 4106 "parsing/parser.mly" +# 4178 "parsing/parser.mly" ( _1 ) -# 58465 "parsing/parser.ml" +# 58959 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1123 "parsing/parser.mly" +# 1202 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 58473 "parsing/parser.ml" +# 58967 "parsing/parser.ml" in let _2 = let _1 = _1_inlined1 in -# 4476 "parsing/parser.mly" +# 4548 "parsing/parser.mly" ( _1 ) -# 58481 "parsing/parser.ml" +# 58975 "parsing/parser.ml" in let _1 = -# 4378 "parsing/parser.mly" +# 4450 "parsing/parser.mly" ( Override ) -# 58487 "parsing/parser.ml" +# 58981 "parsing/parser.ml" in -# 2231 "parsing/parser.mly" +# 2310 "parsing/parser.mly" ( (_4, _3, Cfk_concrete (_1, _6)), _2 ) -# 58492 "parsing/parser.ml" +# 58986 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -58540,9 +59034,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 : ( -# 937 "parsing/parser.mly" +# 1014 "parsing/parser.mly" (string) -# 58546 "parsing/parser.ml" +# 59040 "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 @@ -58554,30 +59048,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 = -# 4106 "parsing/parser.mly" +# 4178 "parsing/parser.mly" ( _1 ) -# 58560 "parsing/parser.ml" +# 59054 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1123 "parsing/parser.mly" +# 1202 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 58568 "parsing/parser.ml" +# 59062 "parsing/parser.ml" in let _startpos__4_ = _startpos__1_inlined1_ in let _2 = -# 4476 "parsing/parser.mly" +# 4548 "parsing/parser.mly" ( _1 ) -# 58575 "parsing/parser.ml" +# 59069 "parsing/parser.ml" in let (_endpos__2_, _startpos__2_) = (_endpos__1_, _startpos__1_) in let _1 = -# 4377 "parsing/parser.mly" +# 4449 "parsing/parser.mly" ( Fresh ) -# 58581 "parsing/parser.ml" +# 59075 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos__0_, _endpos__0_) in let _endpos = _endpos__7_ in @@ -58593,11 +59087,11 @@ module Tables = struct _startpos__4_ in let _sloc = (_symbolstartpos, _endpos) in -# 2234 "parsing/parser.mly" +# 2313 "parsing/parser.mly" ( let e = mkexp_constraint ~loc:_sloc _7 _5 in (_4, _3, Cfk_concrete (_1, e)), _2 ) -# 58601 "parsing/parser.ml" +# 59095 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -58655,9 +59149,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 : ( -# 937 "parsing/parser.mly" +# 1014 "parsing/parser.mly" (string) -# 58661 "parsing/parser.ml" +# 59155 "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 @@ -58670,33 +59164,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 = -# 4106 "parsing/parser.mly" +# 4178 "parsing/parser.mly" ( _1 ) -# 58676 "parsing/parser.ml" +# 59170 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1123 "parsing/parser.mly" +# 1202 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 58684 "parsing/parser.ml" +# 59178 "parsing/parser.ml" in let _startpos__4_ = _startpos__1_inlined2_ in let _2 = let _1 = _1_inlined1 in -# 4476 "parsing/parser.mly" +# 4548 "parsing/parser.mly" ( _1 ) -# 58693 "parsing/parser.ml" +# 59187 "parsing/parser.ml" in let (_endpos__2_, _startpos__2_) = (_endpos__1_inlined1_, _startpos__1_inlined1_) in let _1 = -# 4378 "parsing/parser.mly" +# 4450 "parsing/parser.mly" ( Override ) -# 58700 "parsing/parser.ml" +# 59194 "parsing/parser.ml" in let _endpos = _endpos__7_ in let _symbolstartpos = if _startpos__1_ != _endpos__1_ then @@ -58711,11 +59205,11 @@ module Tables = struct _startpos__4_ in let _sloc = (_symbolstartpos, _endpos) in -# 2234 "parsing/parser.mly" +# 2313 "parsing/parser.mly" ( let e = mkexp_constraint ~loc:_sloc _7 _5 in (_4, _3, Cfk_concrete (_1, e)), _2 ) -# 58719 "parsing/parser.ml" +# 59213 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -58734,17 +59228,17 @@ module Tables = struct MenhirLib.EngineTypes.next = _menhir_stack; } = _menhir_stack in let _1 : ( -# 921 "parsing/parser.mly" +# 998 "parsing/parser.mly" (string * char option) -# 58740 "parsing/parser.ml" +# 59234 "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) = -# 4112 "parsing/parser.mly" +# 4184 "parsing/parser.mly" ( let (n, m) = _1 in Pconst_integer (n, m) ) -# 58748 "parsing/parser.ml" +# 59242 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -58763,17 +59257,17 @@ module Tables = struct MenhirLib.EngineTypes.next = _menhir_stack; } = _menhir_stack in let _1 : ( -# 876 "parsing/parser.mly" +# 953 "parsing/parser.mly" (char) -# 58769 "parsing/parser.ml" +# 59263 "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) = -# 4113 "parsing/parser.mly" +# 4185 "parsing/parser.mly" ( Pconst_char _1 ) -# 58777 "parsing/parser.ml" +# 59271 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -58792,18 +59286,18 @@ module Tables = struct MenhirLib.EngineTypes.next = _menhir_stack; } = _menhir_stack in let _1 : ( -# 977 "parsing/parser.mly" +# 1055 "parsing/parser.mly" (string * Location.t * string option) -# 58798 "parsing/parser.ml" +# 59292 "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) = -# 4114 "parsing/parser.mly" +# 4186 "parsing/parser.mly" ( let (s, strloc, d) = _1 in Pconst_string (s, strloc, d) ) -# 58807 "parsing/parser.ml" +# 59301 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -58822,17 +59316,17 @@ module Tables = struct MenhirLib.EngineTypes.next = _menhir_stack; } = _menhir_stack in let _1 : ( -# 898 "parsing/parser.mly" +# 975 "parsing/parser.mly" (string * char option) -# 58828 "parsing/parser.ml" +# 59322 "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) = -# 4116 "parsing/parser.mly" +# 4188 "parsing/parser.mly" ( let (f, m) = _1 in Pconst_float (f, m) ) -# 58836 "parsing/parser.ml" +# 59330 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -58899,9 +59393,9 @@ module Tables = struct let _v : (Parsetree.value_description * string Asttypes.loc option) = let attrs2 = let _1 = _1_inlined3 in -# 4472 "parsing/parser.mly" +# 4544 "parsing/parser.mly" ( _1 ) -# 58905 "parsing/parser.ml" +# 59399 "parsing/parser.ml" in let _endpos_attrs2_ = _endpos__1_inlined3_ in @@ -58911,30 +59405,30 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1123 "parsing/parser.mly" +# 1202 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 58917 "parsing/parser.ml" +# 59411 "parsing/parser.ml" in let attrs1 = let _1 = _1_inlined1 in -# 4476 "parsing/parser.mly" +# 4548 "parsing/parser.mly" ( _1 ) -# 58925 "parsing/parser.ml" +# 59419 "parsing/parser.ml" in let _endpos = _endpos_attrs2_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 3342 "parsing/parser.mly" +# 3409 "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 ) -# 58938 "parsing/parser.ml" +# 59432 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -58950,9 +59444,9 @@ module Tables = struct let _startpos = _menhir_stack.MenhirLib.EngineTypes.endp in let _endpos = _startpos in let _v : (Asttypes.virtual_flag) = -# 4338 "parsing/parser.mly" +# 4410 "parsing/parser.mly" ( Concrete ) -# 58956 "parsing/parser.ml" +# 59450 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -58975,9 +59469,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Asttypes.virtual_flag) = -# 4339 "parsing/parser.mly" +# 4411 "parsing/parser.mly" ( Virtual ) -# 58981 "parsing/parser.ml" +# 59475 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -59000,9 +59494,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Asttypes.mutable_flag) = -# 4362 "parsing/parser.mly" +# 4434 "parsing/parser.mly" ( Immutable ) -# 59006 "parsing/parser.ml" +# 59500 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -59032,9 +59526,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (Asttypes.mutable_flag) = -# 4363 "parsing/parser.mly" +# 4435 "parsing/parser.mly" ( Mutable ) -# 59038 "parsing/parser.ml" +# 59532 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -59064,9 +59558,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (Asttypes.mutable_flag) = -# 4364 "parsing/parser.mly" +# 4436 "parsing/parser.mly" ( Mutable ) -# 59070 "parsing/parser.ml" +# 59564 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -59089,9 +59583,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Asttypes.private_flag) = -# 4369 "parsing/parser.mly" +# 4441 "parsing/parser.mly" ( Public ) -# 59095 "parsing/parser.ml" +# 59589 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -59121,9 +59615,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (Asttypes.private_flag) = -# 4370 "parsing/parser.mly" +# 4442 "parsing/parser.mly" ( Private ) -# 59127 "parsing/parser.ml" +# 59621 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -59153,9 +59647,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (Asttypes.private_flag) = -# 4371 "parsing/parser.mly" +# 4443 "parsing/parser.mly" ( Private ) -# 59159 "parsing/parser.ml" +# 59653 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -59217,27 +59711,27 @@ module Tables = struct let xs = # 253 "" ( List.rev xs ) -# 59221 "parsing/parser.ml" +# 59715 "parsing/parser.ml" in -# 1210 "parsing/parser.mly" +# 1289 "parsing/parser.mly" ( xs ) -# 59226 "parsing/parser.ml" +# 59720 "parsing/parser.ml" in -# 3444 "parsing/parser.mly" +# 3511 "parsing/parser.mly" ( _1 ) -# 59232 "parsing/parser.ml" +# 59726 "parsing/parser.ml" in let _endpos__6_ = _endpos_xs_ in let _5 = let _1 = _1_inlined2 in -# 3839 "parsing/parser.mly" +# 3906 "parsing/parser.mly" ( _1 ) -# 59241 "parsing/parser.ml" +# 59735 "parsing/parser.ml" in let _3 = @@ -59246,16 +59740,16 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1123 "parsing/parser.mly" +# 1202 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 59252 "parsing/parser.ml" +# 59746 "parsing/parser.ml" in let _endpos = _endpos__6_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 3753 "parsing/parser.mly" +# 3820 "parsing/parser.mly" ( let lident = loc_last _3 in Pwith_type (_3, @@ -59265,7 +59759,7 @@ module Tables = struct ~manifest:_5 ~priv:_4 ~loc:(make_loc _sloc))) ) -# 59269 "parsing/parser.ml" +# 59763 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -59318,9 +59812,9 @@ module Tables = struct let _v : (Parsetree.with_constraint) = let _5 = let _1 = _1_inlined2 in -# 3839 "parsing/parser.mly" +# 3906 "parsing/parser.mly" ( _1 ) -# 59324 "parsing/parser.ml" +# 59818 "parsing/parser.ml" in let _endpos__5_ = _endpos__1_inlined2_ in @@ -59330,16 +59824,16 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1123 "parsing/parser.mly" +# 1202 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 59336 "parsing/parser.ml" +# 59830 "parsing/parser.ml" in let _endpos = _endpos__5_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 3766 "parsing/parser.mly" +# 3833 "parsing/parser.mly" ( let lident = loc_last _3 in Pwith_typesubst (_3, @@ -59347,7 +59841,7 @@ module Tables = struct ~params:_2 ~manifest:_5 ~loc:(make_loc _sloc))) ) -# 59351 "parsing/parser.ml" +# 59845 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -59396,9 +59890,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1123 "parsing/parser.mly" +# 1202 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 59402 "parsing/parser.ml" +# 59896 "parsing/parser.ml" in let _2 = @@ -59407,15 +59901,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1123 "parsing/parser.mly" +# 1202 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 59413 "parsing/parser.ml" +# 59907 "parsing/parser.ml" in -# 3774 "parsing/parser.mly" +# 3841 "parsing/parser.mly" ( Pwith_module (_2, _4) ) -# 59419 "parsing/parser.ml" +# 59913 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -59464,9 +59958,9 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1123 "parsing/parser.mly" +# 1202 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 59470 "parsing/parser.ml" +# 59964 "parsing/parser.ml" in let _2 = @@ -59475,15 +59969,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1123 "parsing/parser.mly" +# 1202 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 59481 "parsing/parser.ml" +# 59975 "parsing/parser.ml" in -# 3776 "parsing/parser.mly" +# 3843 "parsing/parser.mly" ( Pwith_modsubst (_2, _4) ) -# 59487 "parsing/parser.ml" +# 59981 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -59539,15 +60033,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1123 "parsing/parser.mly" +# 1202 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 59545 "parsing/parser.ml" +# 60039 "parsing/parser.ml" in -# 3778 "parsing/parser.mly" +# 3845 "parsing/parser.mly" ( Pwith_modtype (l, rhs) ) -# 59551 "parsing/parser.ml" +# 60045 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -59603,15 +60097,15 @@ module Tables = struct let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in -# 1123 "parsing/parser.mly" +# 1202 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 59609 "parsing/parser.ml" +# 60103 "parsing/parser.ml" in -# 3780 "parsing/parser.mly" +# 3847 "parsing/parser.mly" ( Pwith_modtypesubst (l, rhs) ) -# 59615 "parsing/parser.ml" +# 60109 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -59634,9 +60128,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in let _v : (Asttypes.private_flag) = -# 3783 "parsing/parser.mly" +# 3850 "parsing/parser.mly" ( Public ) -# 59640 "parsing/parser.ml" +# 60134 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -59666,9 +60160,9 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in let _v : (Asttypes.private_flag) = -# 3784 "parsing/parser.mly" +# 3851 "parsing/parser.mly" ( Private ) -# 59672 "parsing/parser.ml" +# 60166 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -59696,59 +60190,59 @@ end let use_file = fun lexer lexbuf -> - (Obj.magic (MenhirInterpreter.entry `Simplified 2199 lexer lexbuf) : (Parsetree.toplevel_phrase list)) + (Obj.magic (MenhirInterpreter.entry `Simplified 2191 lexer lexbuf) : (Parsetree.toplevel_phrase list)) and toplevel_phrase = fun lexer lexbuf -> - (Obj.magic (MenhirInterpreter.entry `Simplified 2171 lexer lexbuf) : (Parsetree.toplevel_phrase)) + (Obj.magic (MenhirInterpreter.entry `Simplified 2163 lexer lexbuf) : (Parsetree.toplevel_phrase)) and parse_val_longident = fun lexer lexbuf -> - (Obj.magic (MenhirInterpreter.entry `Simplified 2165 lexer lexbuf) : (Longident.t)) + (Obj.magic (MenhirInterpreter.entry `Simplified 2157 lexer lexbuf) : (Longident.t)) and parse_pattern = fun lexer lexbuf -> - (Obj.magic (MenhirInterpreter.entry `Simplified 2161 lexer lexbuf) : (Parsetree.pattern)) + (Obj.magic (MenhirInterpreter.entry `Simplified 2153 lexer lexbuf) : (Parsetree.pattern)) and parse_mty_longident = fun lexer lexbuf -> - (Obj.magic (MenhirInterpreter.entry `Simplified 2157 lexer lexbuf) : (Longident.t)) + (Obj.magic (MenhirInterpreter.entry `Simplified 2149 lexer lexbuf) : (Longident.t)) and parse_module_type = fun lexer lexbuf -> - (Obj.magic (MenhirInterpreter.entry `Simplified 2153 lexer lexbuf) : (Parsetree.module_type)) + (Obj.magic (MenhirInterpreter.entry `Simplified 2145 lexer lexbuf) : (Parsetree.module_type)) and parse_module_expr = fun lexer lexbuf -> - (Obj.magic (MenhirInterpreter.entry `Simplified 2149 lexer lexbuf) : (Parsetree.module_expr)) + (Obj.magic (MenhirInterpreter.entry `Simplified 2141 lexer lexbuf) : (Parsetree.module_expr)) and parse_mod_longident = fun lexer lexbuf -> - (Obj.magic (MenhirInterpreter.entry `Simplified 2145 lexer lexbuf) : (Longident.t)) + (Obj.magic (MenhirInterpreter.entry `Simplified 2137 lexer lexbuf) : (Longident.t)) and parse_mod_ext_longident = fun lexer lexbuf -> - (Obj.magic (MenhirInterpreter.entry `Simplified 2141 lexer lexbuf) : (Longident.t)) + (Obj.magic (MenhirInterpreter.entry `Simplified 2133 lexer lexbuf) : (Longident.t)) and parse_expression = fun lexer lexbuf -> - (Obj.magic (MenhirInterpreter.entry `Simplified 2137 lexer lexbuf) : (Parsetree.expression)) + (Obj.magic (MenhirInterpreter.entry `Simplified 2129 lexer lexbuf) : (Parsetree.expression)) and parse_core_type = fun lexer lexbuf -> - (Obj.magic (MenhirInterpreter.entry `Simplified 2133 lexer lexbuf) : (Parsetree.core_type)) + (Obj.magic (MenhirInterpreter.entry `Simplified 2125 lexer lexbuf) : (Parsetree.core_type)) and parse_constr_longident = fun lexer lexbuf -> - (Obj.magic (MenhirInterpreter.entry `Simplified 2129 lexer lexbuf) : (Longident.t)) + (Obj.magic (MenhirInterpreter.entry `Simplified 2121 lexer lexbuf) : (Longident.t)) and parse_any_longident = fun lexer lexbuf -> - (Obj.magic (MenhirInterpreter.entry `Simplified 2111 lexer lexbuf) : (Longident.t)) + (Obj.magic (MenhirInterpreter.entry `Simplified 2103 lexer lexbuf) : (Longident.t)) and interface = fun lexer lexbuf -> - (Obj.magic (MenhirInterpreter.entry `Simplified 2107 lexer lexbuf) : (Parsetree.signature)) + (Obj.magic (MenhirInterpreter.entry `Simplified 2099 lexer lexbuf) : (Parsetree.signature)) and implementation = fun lexer lexbuf -> @@ -59758,59 +60252,59 @@ module Incremental = struct let use_file = fun initial_position -> - (Obj.magic (MenhirInterpreter.start 2199 initial_position) : (Parsetree.toplevel_phrase list) MenhirInterpreter.checkpoint) + (Obj.magic (MenhirInterpreter.start 2191 initial_position) : (Parsetree.toplevel_phrase list) MenhirInterpreter.checkpoint) and toplevel_phrase = fun initial_position -> - (Obj.magic (MenhirInterpreter.start 2171 initial_position) : (Parsetree.toplevel_phrase) MenhirInterpreter.checkpoint) + (Obj.magic (MenhirInterpreter.start 2163 initial_position) : (Parsetree.toplevel_phrase) MenhirInterpreter.checkpoint) and parse_val_longident = fun initial_position -> - (Obj.magic (MenhirInterpreter.start 2165 initial_position) : (Longident.t) MenhirInterpreter.checkpoint) + (Obj.magic (MenhirInterpreter.start 2157 initial_position) : (Longident.t) MenhirInterpreter.checkpoint) and parse_pattern = fun initial_position -> - (Obj.magic (MenhirInterpreter.start 2161 initial_position) : (Parsetree.pattern) MenhirInterpreter.checkpoint) + (Obj.magic (MenhirInterpreter.start 2153 initial_position) : (Parsetree.pattern) MenhirInterpreter.checkpoint) and parse_mty_longident = fun initial_position -> - (Obj.magic (MenhirInterpreter.start 2157 initial_position) : (Longident.t) MenhirInterpreter.checkpoint) + (Obj.magic (MenhirInterpreter.start 2149 initial_position) : (Longident.t) MenhirInterpreter.checkpoint) and parse_module_type = fun initial_position -> - (Obj.magic (MenhirInterpreter.start 2153 initial_position) : (Parsetree.module_type) MenhirInterpreter.checkpoint) + (Obj.magic (MenhirInterpreter.start 2145 initial_position) : (Parsetree.module_type) MenhirInterpreter.checkpoint) and parse_module_expr = fun initial_position -> - (Obj.magic (MenhirInterpreter.start 2149 initial_position) : (Parsetree.module_expr) MenhirInterpreter.checkpoint) + (Obj.magic (MenhirInterpreter.start 2141 initial_position) : (Parsetree.module_expr) MenhirInterpreter.checkpoint) and parse_mod_longident = fun initial_position -> - (Obj.magic (MenhirInterpreter.start 2145 initial_position) : (Longident.t) MenhirInterpreter.checkpoint) + (Obj.magic (MenhirInterpreter.start 2137 initial_position) : (Longident.t) MenhirInterpreter.checkpoint) and parse_mod_ext_longident = fun initial_position -> - (Obj.magic (MenhirInterpreter.start 2141 initial_position) : (Longident.t) MenhirInterpreter.checkpoint) + (Obj.magic (MenhirInterpreter.start 2133 initial_position) : (Longident.t) MenhirInterpreter.checkpoint) and parse_expression = fun initial_position -> - (Obj.magic (MenhirInterpreter.start 2137 initial_position) : (Parsetree.expression) MenhirInterpreter.checkpoint) + (Obj.magic (MenhirInterpreter.start 2129 initial_position) : (Parsetree.expression) MenhirInterpreter.checkpoint) and parse_core_type = fun initial_position -> - (Obj.magic (MenhirInterpreter.start 2133 initial_position) : (Parsetree.core_type) MenhirInterpreter.checkpoint) + (Obj.magic (MenhirInterpreter.start 2125 initial_position) : (Parsetree.core_type) MenhirInterpreter.checkpoint) and parse_constr_longident = fun initial_position -> - (Obj.magic (MenhirInterpreter.start 2129 initial_position) : (Longident.t) MenhirInterpreter.checkpoint) + (Obj.magic (MenhirInterpreter.start 2121 initial_position) : (Longident.t) MenhirInterpreter.checkpoint) and parse_any_longident = fun initial_position -> - (Obj.magic (MenhirInterpreter.start 2111 initial_position) : (Longident.t) MenhirInterpreter.checkpoint) + (Obj.magic (MenhirInterpreter.start 2103 initial_position) : (Longident.t) MenhirInterpreter.checkpoint) and interface = fun initial_position -> - (Obj.magic (MenhirInterpreter.start 2107 initial_position) : (Parsetree.signature) MenhirInterpreter.checkpoint) + (Obj.magic (MenhirInterpreter.start 2099 initial_position) : (Parsetree.signature) MenhirInterpreter.checkpoint) and implementation = fun initial_position -> @@ -59818,12 +60312,12 @@ module Incremental = struct end -# 4514 "parsing/parser.mly" +# 4586 "parsing/parser.mly" -# 59825 "parsing/parser.ml" +# 60319 "parsing/parser.ml" # 269 "" -# 59830 "parsing/parser.ml" +# 60324 "parsing/parser.ml" diff --git a/ocaml/boot/menhir/parser.mli b/ocaml/boot/menhir/parser.mli index 9fbb4a99929..a8131c304cf 100644 --- a/ocaml/boot/menhir/parser.mli +++ b/ocaml/boot/menhir/parser.mli @@ -7,6 +7,7 @@ type token = | WHEN | VIRTUAL | VAL + | UNIQUE | UNDERSCORE | UIDENT of (string) | TYPE @@ -38,6 +39,7 @@ type token = | OR | OPTLABEL of (string) | OPEN + | ONCE | OF | OBJECT | NONREC diff --git a/ocaml/compilerlibs/Makefile.compilerlibs b/ocaml/compilerlibs/Makefile.compilerlibs index 8d006f87e8c..49c6b159a69 100644 --- a/ocaml/compilerlibs/Makefile.compilerlibs +++ b/ocaml/compilerlibs/Makefile.compilerlibs @@ -84,6 +84,7 @@ TYPING = \ typing/layouts.cmo \ typing/primitive.cmo \ typing/shape.cmo \ + typing/mode.cmo \ typing/types.cmo \ typing/btype.cmo \ typing/oprint.cmo \ @@ -122,6 +123,7 @@ TYPING = \ lambda/debuginfo.cmo lambda/lambda.cmo \ typing/typedecl.cmo \ typing/typeopt.cmo \ + typing/uniqueness_analysis.cmo \ typing/rec_check.cmo \ typing/typecore.cmo \ typing/typeclass.cmo \ diff --git a/ocaml/dune b/ocaml/dune index f2a37c2b12f..80b164e626c 100644 --- a/ocaml/dune +++ b/ocaml/dune @@ -74,7 +74,7 @@ tast_iterator tast_mapper signature_group cmt_format cms_format untypeast includemod includemod_errorprinter typetexp patterns printpat parmatch stypes typedecl typeopt rec_check - typecore + typecore mode uniqueness_analysis typeclass typemod typedecl_variance typedecl_properties typedecl_separability cmt2annot ; manual update: mli only files @@ -299,6 +299,8 @@ (typeopt.mli as compiler-libs/typeopt.mli) (rec_check.mli as compiler-libs/rec_check.mli) (typecore.mli as compiler-libs/typecore.mli) + (mode.mli as compiler-libs/mode.mli) + (uniqueness_analysis.mli as compiler-libs/uniqueness_analysis.mli) (typeclass.mli as compiler-libs/typeclass.mli) (typemod.mli as compiler-libs/typemod.mli) (typedecl_variance.mli as compiler-libs/typedecl_variance.mli) diff --git a/ocaml/lambda/lambda.ml b/ocaml/lambda/lambda.ml index 40adf920d5d..52e4a2e059b 100644 --- a/ocaml/lambda/lambda.ml +++ b/ocaml/lambda/lambda.ml @@ -42,10 +42,12 @@ type field_read_semantics = include (struct - type alloc_mode = + type locality_mode = | Alloc_heap | Alloc_local + type alloc_mode = locality_mode + type modify_mode = | Modify_heap | Modify_maybe_stack @@ -64,31 +66,24 @@ include (struct let modify_heap = Modify_heap let modify_maybe_stack : modify_mode = - (* CR zqian: possible to move this check to a better place? *) - (* idealy I don't want to do the checking here. - if stack allocations are disabled, then the alloc_mode which this modify_mode - depends on should be heap, which makes this modify_mode to be heap *) - - (* one suggestion: move the check to optimize_allocation; - if stack_allocation not enabled, force all allocations to be heap, - which then propagates to all the other modes. - *) if Config.stack_allocation then Modify_maybe_stack else Modify_heap end : sig - type alloc_mode = private + type locality_mode = private | Alloc_heap | Alloc_local + type alloc_mode = locality_mode + type modify_mode = private | Modify_heap | Modify_maybe_stack - val alloc_heap : alloc_mode + val alloc_heap : locality_mode - val alloc_local : alloc_mode + val alloc_local : locality_mode val modify_heap : modify_mode diff --git a/ocaml/lambda/lambda.mli b/ocaml/lambda/lambda.mli index 9e50b82bb30..5642e19d1a7 100644 --- a/ocaml/lambda/lambda.mli +++ b/ocaml/lambda/lambda.mli @@ -34,18 +34,22 @@ type immediate_or_pointer = | Immediate | Pointer -type alloc_mode = private +type locality_mode = private | Alloc_heap | Alloc_local +(** For now we don't have strong update, and thus uniqueness is irrelavent in + middle and back-end; in the future this will be extended with uniqueness *) +type alloc_mode = locality_mode + type modify_mode = private | Modify_heap | Modify_maybe_stack -val alloc_heap : alloc_mode +val alloc_heap : locality_mode (* Actually [Alloc_heap] if [Config.stack_allocation] is [false] *) -val alloc_local : alloc_mode +val alloc_local : locality_mode val modify_heap : modify_mode diff --git a/ocaml/lambda/translcore.ml b/ocaml/lambda/translcore.ml index 1653b3bb1b4..023af05a1d2 100644 --- a/ocaml/lambda/translcore.ml +++ b/ocaml/lambda/translcore.ml @@ -242,7 +242,7 @@ let rec push_defaults loc bindings use_lhs arg_mode arg_sort cases when use_lhs || trivial_pat pat && exp.exp_desc <> Texp_unreachable -> [{case with c_rhs = wrap_bindings bindings exp}] | {c_lhs=pat; c_rhs=exp; c_guard=_} :: _ when bindings <> [] -> - let mode = Value_mode.of_alloc arg_mode in + let mode = Mode.Value.of_alloc arg_mode in let param = Typecore.name_cases "param" cases in let desc = {val_type = pat.pat_type; val_kind = Val_reg; @@ -261,7 +261,8 @@ let rec push_defaults loc bindings use_lhs arg_mode arg_sort cases ({exp with exp_type = pat.pat_type; exp_env = env; exp_desc = Texp_ident (Path.Pident param, mknoloc (Longident.Lident name), - desc, Id_value)}, + desc, Id_value, + (Mode.Value.uniqueness mode, Mode.Value.linearity mode))}, arg_sort, cases, partial) } in @@ -346,7 +347,7 @@ let can_apply_primitive p pmode pos args = else if pos <> Typedtree.Tail then true else begin let return_mode = Ctype.prim_mode pmode p.prim_native_repr_res in - is_heap_mode (transl_alloc_mode return_mode) + is_heap_mode (transl_locality_mode return_mode) end end @@ -370,7 +371,7 @@ and transl_exp1 ~scopes ~in_new_scope sort e = and transl_exp0 ~in_new_scope ~scopes sort e = match e.exp_desc with - | Texp_ident(path, _, desc, kind) -> + | Texp_ident(path, _, desc, kind, _) -> transl_ident (of_location ~scopes e.exp_loc) e.exp_env e.exp_type path desc kind | Texp_constant cst -> @@ -388,8 +389,8 @@ and transl_exp0 ~in_new_scope ~scopes sort e = transl_function ~scopes e alloc_mode param arg_mode arg_sort ret_sort cases partial warnings region curry | Texp_apply({ exp_desc = Texp_ident(path, _, {val_kind = Val_prim p}, - Id_prim pmode); - exp_type = prim_type; } as funct, oargs, pos, alloc_mode) + Id_prim pmode, _); + exp_type = prim_type; } as funct, oargs, pos, ap_mode) when can_apply_primitive p pmode pos oargs -> let rec cut_args prim_repr oargs = match prim_repr, oargs with @@ -419,19 +420,19 @@ and transl_exp0 ~in_new_scope ~scopes sort e = let inlined = Translattribute.get_inlined_attribute funct in let specialised = Translattribute.get_specialised_attribute funct in let position = transl_apply_position pos in - let mode = transl_alloc_mode alloc_mode in + let mode = transl_locality_mode ap_mode in let result_layout = layout_exp sort e in event_after ~scopes e (transl_apply ~scopes ~tailcall ~inlined ~specialised ~position ~mode ~result_layout lam extra_args (of_location ~scopes e.exp_loc)) end - | Texp_apply(funct, oargs, position, alloc_mode) -> + | Texp_apply(funct, oargs, position, ap_mode) -> let tailcall = Translattribute.get_tailcall_attribute funct in let inlined = Translattribute.get_inlined_attribute funct in let specialised = Translattribute.get_specialised_attribute funct in let result_layout = layout_exp sort e in let position = transl_apply_position position in - let mode = transl_alloc_mode alloc_mode in + let mode = transl_locality_mode ap_mode in event_after ~scopes e (transl_apply ~scopes ~tailcall ~inlined ~specialised ~result_layout ~position ~mode (transl_exp ~scopes Sort.for_function funct) @@ -519,7 +520,7 @@ and transl_exp0 ~in_new_scope ~scopes sort e = transl_record ~scopes e.exp_loc e.exp_env (Option.map transl_alloc_mode alloc_mode) fields representation extended_expression - | Texp_field(arg, _, lbl, alloc_mode) -> + | Texp_field(arg, _, lbl, _, alloc_mode) -> let targ = transl_exp ~scopes Sort.for_record arg in let sem = match lbl.lbl_mut with @@ -1446,7 +1447,7 @@ and transl_record ~scopes loc env mode fields repres opt_init_expr = Array.mapi (fun i (lbl, definition) -> match definition with - | Kept typ -> + | Kept (typ, _) -> let field_kind = must_be_value (layout env lbl.lbl_loc Sort.for_record_field typ) in @@ -1531,7 +1532,7 @@ and transl_record ~scopes loc env mode fields repres opt_init_expr = the init record, we must have already checked for void. *) layout_must_be_value lbl.lbl_loc lbl.lbl_layout; match definition with - | Kept _type -> cont + | Kept (_type, _uu) -> cont | Overridden (_lid, expr) -> let upd = match repres with @@ -1740,12 +1741,12 @@ and transl_letop ~scopes loc env let_ ands param param_sort case case_sort | Some (lhs, _) -> Typeopt.function_arg_layout env loc param_sort lhs in let return_layout = layout_exp case_sort case.c_rhs in - let curry = More_args { partial_mode = Alloc_mode.global } in + let curry = More_args { partial_mode = Mode.Alloc.legacy } in let (kind, params, return, _region), body = event_function ~scopes case.c_rhs (function repr -> transl_curried_function ~scopes ~arg_sort:param_sort ~arg_layout - ~arg_mode:(Amode Global) ~return_sort:case_sort + ~arg_mode:Mode.Alloc.legacy ~return_sort:case_sort ~return_layout case.c_rhs.exp_loc repr ~region:true ~curry partial warnings param [case]) in diff --git a/ocaml/lambda/translmode.ml b/ocaml/lambda/translmode.ml index 5b719f21eab..7188ca0f626 100644 --- a/ocaml/lambda/translmode.ml +++ b/ocaml/lambda/translmode.ml @@ -1,11 +1,16 @@ -open Types open Lambda -let transl_alloc_mode alloc_mode = - match Alloc_mode.constrain_lower alloc_mode with +open Mode + +let transl_locality_mode locality = + match Locality.constrain_lower locality with | Global -> alloc_heap | Local -> alloc_local -let transl_modify_mode alloc_mode = - match Alloc_mode.constrain_lower alloc_mode with +let transl_alloc_mode mode = +(* we only take the locality axis *) + transl_locality_mode (Alloc.locality mode) + +let transl_modify_mode locality = + match Locality.constrain_lower locality with | Global -> modify_heap | Local -> modify_maybe_stack \ No newline at end of file diff --git a/ocaml/lambda/translmode.mli b/ocaml/lambda/translmode.mli index 1c84b4c6e24..29843b6a95d 100644 --- a/ocaml/lambda/translmode.mli +++ b/ocaml/lambda/translmode.mli @@ -1,3 +1,7 @@ -val transl_alloc_mode : Types.alloc_mode -> Lambda.alloc_mode +open Mode -val transl_modify_mode : Types.alloc_mode -> Lambda.modify_mode +val transl_locality_mode : Locality.t -> Lambda.locality_mode + +val transl_alloc_mode : Alloc.t -> Lambda.alloc_mode + +val transl_modify_mode : Locality.t -> Lambda.modify_mode diff --git a/ocaml/lambda/translprim.ml b/ocaml/lambda/translprim.ml index b4092909325..07fb66132e4 100644 --- a/ocaml/lambda/translprim.ml +++ b/ocaml/lambda/translprim.ml @@ -124,13 +124,13 @@ let gen_array_set_kind mode = let prim_sys_argv = Primitive.simple_on_values ~name:"caml_sys_argv" ~arity:1 ~alloc:true -let to_alloc_mode ~poly = function +let to_locality ~poly = function | Prim_global, _ -> alloc_heap | Prim_local, _ -> alloc_local | Prim_poly, _ -> match poly with | None -> assert false - | Some mode -> transl_alloc_mode mode + | Some locality -> transl_locality_mode locality let to_modify_mode ~poly = function | Prim_global, _ -> modify_heap @@ -141,7 +141,7 @@ let to_modify_mode ~poly = function | Some mode -> transl_modify_mode mode let lookup_primitive loc poly pos p = - let mode = to_alloc_mode ~poly p.prim_native_repr_res in + let mode = to_locality ~poly p.prim_native_repr_res in let arg_modes = List.map (to_modify_mode ~poly) p.prim_native_repr_args in let get_first_arg_mode () = match arg_modes with @@ -854,8 +854,8 @@ let lambda_of_prim prim_name prim loc args arg_exps = let check_primitive_arity loc p = let mode = match p.prim_native_repr_res with - | Prim_global, _ | Prim_poly, _ -> Some Alloc_mode.global - | Prim_local, _ -> Some Alloc_mode.local + | Prim_global, _ | Prim_poly, _ -> Some Mode.Locality.global + | Prim_local, _ -> Some Mode.Locality.local in let prim = lookup_primitive loc mode Rc_normal p in let ok = @@ -889,7 +889,7 @@ let transl_primitive loc p env ty ~poly_mode path = | None -> prim | Some prim -> prim in - let to_alloc_mode = to_alloc_mode ~poly:poly_mode in + let to_locality = to_locality ~poly:poly_mode in let rec make_params ty repr_args repr_res = match repr_args, repr_res with | [], (_, res_repr) -> @@ -905,7 +905,7 @@ let transl_primitive loc p env ty ~poly_mode path = let arg_layout = Typeopt.layout env (to_location loc) (Sort.of_const arg_sort) arg_ty in - let arg_mode = to_alloc_mode arg in + let arg_mode = to_locality arg in let params, return = make_params ret_ty repr_args repr_res in { name = Ident.create_local "prim"; layout = arg_layout; @@ -927,7 +927,7 @@ let transl_primitive loc p env ty ~poly_mode path = in let body = lambda_of_prim p.prim_name prim loc args None in let region = - match to_alloc_mode p.prim_native_repr_res with + match to_locality p.prim_native_repr_res with | Alloc_heap -> true | Alloc_local -> false in @@ -937,7 +937,7 @@ let transl_primitive loc p env ty ~poly_mode path = | Alloc_heap :: args -> count_nlocal args | (Alloc_local :: _) as args -> List.length args in - let nlocal = count_nlocal (List.map to_alloc_mode p.prim_native_repr_args) in + let nlocal = count_nlocal (List.map to_locality p.prim_native_repr_args) in lfunction ~kind:(Curried {nlocal}) ~params diff --git a/ocaml/lambda/translprim.mli b/ocaml/lambda/translprim.mli index 999c1506817..33d7597d11f 100644 --- a/ocaml/lambda/translprim.mli +++ b/ocaml/lambda/translprim.mli @@ -35,13 +35,13 @@ val check_primitive_arity : val transl_primitive : Lambda.scoped_location -> Primitive.description -> Env.t -> Types.type_expr -> - poly_mode:Types.alloc_mode option -> + poly_mode:Mode.Locality.t option -> Path.t option -> Lambda.lambda val transl_primitive_application : Lambda.scoped_location -> Primitive.description -> Env.t -> - Types.type_expr -> Types.alloc_mode option -> Path.t -> + Types.type_expr -> Mode.Locality.t option -> Path.t -> Typedtree.expression option -> Lambda.lambda list -> Typedtree.expression list -> Lambda.region_close -> Lambda.lambda diff --git a/ocaml/otherlibs/dynlink/Makefile b/ocaml/otherlibs/dynlink/Makefile index 7cffceb21b3..d76edbbc9b6 100644 --- a/ocaml/otherlibs/dynlink/Makefile +++ b/ocaml/otherlibs/dynlink/Makefile @@ -108,6 +108,7 @@ COMPILERLIBS_SOURCES=\ parsing/ast_mapper.ml \ parsing/attr_helper.ml \ parsing/pprintast.ml \ + typing/mode.ml \ typing/path.ml \ typing/shape.ml \ typing/layouts.ml \ diff --git a/ocaml/otherlibs/dynlink/dune b/ocaml/otherlibs/dynlink/dune index 7870e0bc618..4251f0222bb 100644 --- a/ocaml/otherlibs/dynlink/dune +++ b/ocaml/otherlibs/dynlink/dune @@ -57,6 +57,7 @@ shape layouts primitive + mode types btype lazy_backtrack @@ -143,6 +144,7 @@ (copy_files ../../typing/layouts.ml) (copy_files ../../typing/primitive.ml) (copy_files ../../typing/shape.ml) +(copy_files ../../typing/mode.ml) (copy_files ../../typing/types.ml) (copy_files ../../typing/btype.ml) (copy_files ../../typing/subst.ml) @@ -202,6 +204,7 @@ (copy_files ../../typing/layouts.mli) (copy_files ../../typing/primitive.mli) (copy_files ../../typing/shape.mli) +(copy_files ../../typing/mode.mli) (copy_files ../../typing/types.mli) (copy_files ../../typing/btype.mli) (copy_files ../../typing/subst.mli) @@ -296,6 +299,7 @@ .dynlink_compilerlibs.objs/byte/dynlink_compilerlibs__Load_path.cmo .dynlink_compilerlibs.objs/byte/dynlink_compilerlibs__Ast_mapper.cmo .dynlink_compilerlibs.objs/byte/dynlink_compilerlibs__Layouts.cmo + .dynlink_compilerlibs.objs/byte/dynlink_compilerlibs__Mode.cmo .dynlink_compilerlibs.objs/byte/dynlink_compilerlibs__Types.cmo .dynlink_compilerlibs.objs/byte/dynlink_compilerlibs__Btype.cmo .dynlink_compilerlibs.objs/byte/dynlink_compilerlibs__Subst.cmo @@ -370,6 +374,7 @@ .dynlink_compilerlibs.objs/native/dynlink_compilerlibs__Builtin_attributes.cmx .dynlink_compilerlibs.objs/native/dynlink_compilerlibs__Ast_mapper.cmx .dynlink_compilerlibs.objs/native/dynlink_compilerlibs__Layouts.cmx + .dynlink_compilerlibs.objs/native/dynlink_compilerlibs__Mode.cmx .dynlink_compilerlibs.objs/native/dynlink_compilerlibs__Types.cmx .dynlink_compilerlibs.objs/native/dynlink_compilerlibs__Btype.cmx .dynlink_compilerlibs.objs/native/dynlink_compilerlibs__Subst.cmx diff --git a/ocaml/parsing/builtin_attributes.ml b/ocaml/parsing/builtin_attributes.ml index 0336b0afd5d..08e152e3519 100644 --- a/ocaml/parsing/builtin_attributes.ml +++ b/ocaml/parsing/builtin_attributes.ml @@ -635,6 +635,21 @@ let has_local attr = let has_global attrs = check_local ["extension.global"] ["ocaml.global"; "global"] attrs +let check_unique ext_names other_names attr = + if has_attribute ext_names attr then + if not (Language_extension.is_enabled Unique) then + Error () + else + Ok true + else + Ok (has_attribute other_names attr) + +let has_unique attrs = + check_unique ["extension.unique"] ["ocaml.unique"; "unique"] attrs + +let has_once attr = + check_unique ["extension.once"] ["ocaml.once"; "once"] attr + let tailcall attr = let has_nontail = has_attribute ["ocaml.nontail"; "nontail"] attr in let tail_attrs = filter_attributes [["ocaml.tail";"tail"], true] attr in diff --git a/ocaml/parsing/builtin_attributes.mli b/ocaml/parsing/builtin_attributes.mli index f761a5b74fc..ee808e8e794 100644 --- a/ocaml/parsing/builtin_attributes.mli +++ b/ocaml/parsing/builtin_attributes.mli @@ -171,6 +171,10 @@ val has_global: Parsetree.attributes -> (bool,unit) result val tailcall : Parsetree.attributes -> ([`Tail|`Nontail|`Tail_if_possible] option, [`Conflict]) result +val has_unique: Parsetree.attributes -> (bool,unit) result + +val has_once : Parsetree.attributes -> (bool, unit) result + (* [layout] gets the layout in the attributes if one is present. It is the central point at which the layout extension flags are checked. We always allow the [value] annotation, even if the layouts extensions are disabled. diff --git a/ocaml/parsing/lexer.mll b/ocaml/parsing/lexer.mll index 38803a51ead..f61296fffa9 100644 --- a/ocaml/parsing/lexer.mll +++ b/ocaml/parsing/lexer.mll @@ -75,6 +75,7 @@ let keyword_table = "nonrec", NONREC; "object", OBJECT; "of", OF; + "once_", ONCE; "open", OPEN; "or", OR; (* "parser", PARSER; *) @@ -87,6 +88,7 @@ let keyword_table = "true", TRUE; "try", TRY; "type", TYPE; + "unique_", UNIQUE; "val", VAL; "virtual", VIRTUAL; "when", WHEN; diff --git a/ocaml/parsing/location.ml b/ocaml/parsing/location.ml index 029463821b4..79cdfae109b 100644 --- a/ocaml/parsing/location.ml +++ b/ocaml/parsing/location.ml @@ -776,7 +776,7 @@ let batch_mode_printer : report_printer = (self.pp_submsg_txt self report) txt in let pp_submsg_loc self report ppf loc = - if not loc.loc_ghost then + if not (is_dummy_loc loc) then pp_loc self report ppf loc in let pp_submsg_txt _self _ ppf loc = @@ -799,7 +799,7 @@ let terminfo_toplevel_printer (lb: lexbuf): report_printer = in let pp_main_loc _ _ _ _ = () in let pp_submsg_loc _ _ ppf loc = - if not loc.loc_ghost then + if not (is_dummy_loc loc) then Format.fprintf ppf "%a:@ " print_loc loc in { batch_mode_printer with pp; pp_main_loc; pp_submsg_loc } diff --git a/ocaml/parsing/parser.mly b/ocaml/parsing/parser.mly index 8f090cbe7b4..c8e8c5e39a1 100644 --- a/ocaml/parsing/parser.mly +++ b/ocaml/parsing/parser.mly @@ -144,43 +144,120 @@ let mkuplus ~oploc name arg = | _ -> Pexp_apply(mkoperator ~loc:oploc ("~" ^ name), [Nolabel, arg]), [] - -let local_ext_loc loc = mkloc "extension.local" loc - let mk_attr ~loc name payload = Builtin_attributes.(register_attr Parser name); Attr.mk ~loc name payload +let local_ext_loc loc = mkloc "extension.local" loc +let unique_ext_loc loc = mkloc "extension.unique" loc +let once_ext_loc loc = mkloc "extension.once" loc + let local_attr loc = mk_attr ~loc (local_ext_loc loc) (PStr []) +let unique_attr loc = + mk_attr ~loc (unique_ext_loc loc) (PStr []) + +let once_attr loc = + mk_attr ~loc (once_ext_loc loc) (PStr []) + let local_extension loc = Exp.mk ~loc:Location.none (Pexp_extension(local_ext_loc loc, PStr [])) +let unique_extension loc = + Exp.mk ~loc:Location.none (Pexp_extension(unique_ext_loc loc, PStr [])) + +let once_extension loc = + Exp.mk ~loc:Location.none (Pexp_extension(once_ext_loc loc, PStr [])) + let mkexp_stack ~loc ~kwd_loc exp = - ghexp ~loc (Pexp_apply(local_extension (make_loc kwd_loc), [Nolabel, exp])) + let loc = make_loc loc in + Exp.mk ~loc (Pexp_apply(local_extension (make_loc kwd_loc), [Nolabel, exp])) + +let mkexp_unique ~loc ~kwd_loc exp = + let loc = make_loc loc in + Exp.mk ~loc (Pexp_apply(unique_extension (make_loc kwd_loc), [Nolabel, exp])) + +let mkexp_once ~loc ~kwd_loc exp = + let loc = make_loc loc in + Exp.mk ~loc (Pexp_apply(once_extension (make_loc kwd_loc), [Nolabel, exp])) let mkpat_stack pat loc = - {pat with ppat_attributes = local_attr loc :: pat.ppat_attributes} + {pat with + ppat_attributes = local_attr (make_loc loc) :: pat.ppat_attributes} + +let mkpat_unique pat loc = + {pat with + ppat_attributes = unique_attr (make_loc loc) :: pat.ppat_attributes} + +let mkpat_once pat loc = + {pat with + ppat_attributes = once_attr (make_loc loc) :: pat.ppat_attributes} let mktyp_stack typ loc = - {typ with ptyp_attributes = local_attr loc :: typ.ptyp_attributes} + {typ with + ptyp_attributes = local_attr (make_loc loc) :: typ.ptyp_attributes} + +let mktyp_unique typ loc = + {typ with + ptyp_attributes = unique_attr (make_loc loc) :: typ.ptyp_attributes} + +let mktyp_once typ loc = + {typ with + ptyp_attributes = once_attr (make_loc loc) :: typ.ptyp_attributes} let wrap_exp_stack exp loc = - {exp with pexp_attributes = local_attr loc :: exp.pexp_attributes} + {exp with + pexp_attributes = local_attr (make_loc loc) :: exp.pexp_attributes} + +let wrap_exp_unique exp loc = + {exp with + pexp_attributes = unique_attr (make_loc loc) :: exp.pexp_attributes} + +let wrap_exp_once exp loc = + {exp with + pexp_attributes = once_attr (make_loc loc) :: exp.pexp_attributes} + +type modes = Local | Unique | Once -let mkexp_local_if p ~loc ~kwd_loc exp = - if p then mkexp_stack ~loc ~kwd_loc exp else exp +let mkexp_with_mode ~loc ~kwd_loc flag exp = + match flag with + | Local -> mkexp_stack exp ~loc ~kwd_loc + | Unique -> mkexp_unique exp ~loc ~kwd_loc + | Once -> mkexp_once exp ~loc ~kwd_loc -let mkpat_local_if p pat loc = - if p then mkpat_stack pat (make_loc loc) else pat +let mkexp_with_modes flags exp loc = + List.fold_left + (fun exp (flag, kwd_loc) -> mkexp_with_mode flag exp ~loc ~kwd_loc) + exp flags -let mktyp_local_if p typ loc = - if p then mktyp_stack typ (make_loc loc) else typ +let mkpat_with_mode flag pat loc = + match flag with + | Local -> mkpat_stack pat loc + | Unique -> mkpat_unique pat loc + | Once -> mkpat_once pat loc -let wrap_exp_local_if p exp loc = - if p then wrap_exp_stack exp (make_loc loc) else exp +let mkpat_with_modes flags pat = + List.fold_left (fun pat (flag, loc) -> mkpat_with_mode flag pat loc) pat flags + +let mktyp_with_mode flag typ loc = + match flag with + | Local -> mktyp_stack typ loc + | Unique -> mktyp_unique typ loc + | Once -> mktyp_once typ loc + +let mktyp_with_modes flags typ = + List.fold_left (fun typ (flag, loc) -> mktyp_with_mode flag typ loc) typ flags + +let wrap_exp_with_mode flag exp loc = + match flag with + | Local -> wrap_exp_stack exp loc + | Unique -> wrap_exp_unique exp loc + | Once -> wrap_exp_once exp loc + +let wrap_exp_with_modes flags exp = + List.fold_left (fun exp (flag, loc) -> wrap_exp_with_mode flag exp loc) exp flags let exclave_ext_loc loc = mkloc "extension.exclave" loc @@ -951,6 +1028,7 @@ let unboxed_float_type sloc tys = %token NONREC "nonrec" %token OBJECT "object" %token OF "of" +%token ONCE "once_" %token OPEN "open" %token OPTLABEL "?label:" (* just an example *) %token OR "or" @@ -989,6 +1067,7 @@ let unboxed_float_type sloc tys = %token TYPE "type" %token UIDENT "UIdent" (* just an example *) %token UNDERSCORE "_" +%token UNIQUE "unique_" %token VAL "val" %token VIRTUAL "virtual" %token WHEN "when" @@ -2455,31 +2534,31 @@ seq_expr: mkexp ~loc:$sloc (Pexp_extension ($4, payload)) } ; labeled_simple_pattern: - QUESTION LPAREN optional_local label_let_pattern opt_default RPAREN - { (Optional (fst $4), $5, mkpat_local_if $3 (snd $4) $loc($3)) } + QUESTION LPAREN mode_flags label_let_pattern opt_default RPAREN + { (Optional (fst $4), $5, mkpat_with_modes $3 (snd $4) ) } | QUESTION label_var { (Optional (fst $2), None, snd $2) } - | OPTLABEL LPAREN optional_local let_pattern opt_default RPAREN - { (Optional $1, $5, mkpat_local_if $3 $4 $loc($3)) } + | OPTLABEL LPAREN mode_flags let_pattern opt_default RPAREN + { (Optional $1, $5, mkpat_with_modes $3 $4) } | OPTLABEL pattern_var { (Optional $1, None, $2) } - | TILDE LPAREN optional_local label_let_pattern RPAREN + | TILDE LPAREN mode_flags label_let_pattern RPAREN { (Labelled (fst $4), None, - mkpat_local_if $3 (snd $4) $loc($3)) } + mkpat_with_modes $3 (snd $4) ) } | TILDE label_var { (Labelled (fst $2), None, snd $2) } | LABEL simple_pattern { (Labelled $1, None, $2) } - | LABEL LPAREN LOCAL pattern RPAREN - { (Labelled $1, None, mkpat_stack $4 (make_loc $loc($3))) } + | LABEL LPAREN mode_flag+ pattern RPAREN + { (Labelled $1, None, mkpat_with_modes $3 $4 ) } | simple_pattern { (Nolabel, None, $1) } - | LPAREN LOCAL let_pattern RPAREN - { (Nolabel, None, mkpat_stack $3 (make_loc $loc($2))) } + | LPAREN mode_flag+ let_pattern RPAREN + { (Nolabel, None, mkpat_with_modes $2 $3 ) } | LABEL LPAREN poly_pattern RPAREN { (Labelled $1, None, $3) } - | LABEL LPAREN LOCAL poly_pattern RPAREN - { (Labelled $1, None, mkpat_stack $4 (make_loc $loc($2))) } + | LABEL LPAREN mode_flag+ poly_pattern RPAREN + { (Labelled $1, None, mkpat_with_modes $3 $4) } | LPAREN poly_pattern RPAREN { (Nolabel, None, $2) } ; @@ -2594,8 +2673,8 @@ expr: | UNDERSCORE { not_expecting $loc($1) "wildcard \"_\"" } /* END AVOID */ - | LOCAL seq_expr - { mkexp_stack ~loc:$sloc ~kwd_loc:($loc($1)) $2 } + | mode_flag seq_expr + { mkexp_with_modes [$1] $2 $sloc } | EXCLAVE seq_expr { mkexp_exclave ~loc:$sloc ~kwd_loc:($loc($1)) $2 } ; @@ -2725,9 +2804,12 @@ comprehension_clause_binding: We have to have that as a separate rule here because it moves the [local_] over to the RHS of the binding, so we need everything to be visible. *) | attributes LOCAL pattern IN expr - { Jane_syntax.Comprehensions. + { let expr = + mkexp_stack $5 ~kwd_loc:$loc($2) ~loc:$sloc + in + Jane_syntax.Comprehensions. { pattern = $3 - ; iterator = In (mkexp_stack ~loc:$sloc ~kwd_loc:($loc($2)) $5) + ; iterator = In expr ; attributes = $1 } } @@ -2899,7 +2981,7 @@ labeled_simple_expr: let_binding_body_no_punning: let_ident strict_binding { ($1, $2) } - | optional_local let_ident type_constraint EQUAL seq_expr + | mode_flags let_ident type_constraint EQUAL seq_expr { let v = $2 in (* PR#7344 *) let t = match $3 with @@ -2908,20 +2990,18 @@ let_binding_body_no_punning: | _ -> assert false in let loc = Location.(t.ptyp_loc.loc_start, t.ptyp_loc.loc_end) in - let local_loc = $loc($1) in let typ = ghtyp ~loc (Ptyp_poly([],t)) in let patloc = ($startpos($2), $endpos($3)) in let pat = - mkpat_local_if $1 (ghpat ~loc:patloc (Ppat_constraint(v, typ))) - local_loc + mkpat_with_modes $1 (ghpat ~loc:patloc (Ppat_constraint(v, typ))) in let exp = - mkexp_local_if $1 ~loc:$sloc ~kwd_loc:($loc($1)) - (wrap_exp_local_if $1 (mkexp_constraint ~loc:$sloc $5 $3) - local_loc) + mkexp_with_modes $1 + (wrap_exp_with_modes $1 (mkexp_constraint ~loc:$sloc $5 $3)) + $sloc in (pat, exp) } - | optional_local let_ident COLON poly(core_type) EQUAL seq_expr + | mode_flags 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 @@ -2930,12 +3010,11 @@ let_binding_body_no_punning: Jane_syntax.Layouts.type_of ~loc:typ_loc ~attrs:[] ltyp in let pat = - mkpat_local_if $1 + mkpat_with_modes $1 (ghpat ~loc:patloc (Ppat_constraint($2, typ))) - $loc($1) in - let exp = mkexp_local_if $1 ~loc:$sloc ~kwd_loc:($loc($1)) $6 in + let exp = mkexp_with_modes $1 $6 $sloc in (pat, exp) } | let_ident COLON TYPE newtypes DOT core_type EQUAL seq_expr { let exp, poly = @@ -2947,8 +3026,8 @@ let_binding_body_no_punning: | simple_pattern_not_ident COLON core_type EQUAL seq_expr { let loc = ($startpos($1), $endpos($3)) in (ghpat ~loc (Ppat_constraint($1, $3)), $5) } - | LOCAL let_ident local_strict_binding - { ($2, mkexp_stack ~loc:$sloc ~kwd_loc:($loc($1)) $3) } + | mode_flag+ let_ident strict_binding_modes + { ($2, mkexp_with_modes $1 ($3 $1) $sloc) } ; let_binding_body: | let_binding_body_no_punning @@ -3013,37 +3092,25 @@ letop_bindings: let and_ = {pbop_op; pbop_pat; pbop_exp; pbop_loc} in let_pat, let_exp, and_ :: rev_ands } ; -fun_binding: - strict_binding +fun_binding_gen: + strict_binding_modes { $1 } | type_constraint EQUAL seq_expr - { mkexp_constraint ~loc:$sloc $3 $1 } + { fun flags -> wrap_exp_with_modes flags (mkexp_constraint ~loc:$sloc $3 $1 )} ; -strict_binding: +strict_binding_modes: EQUAL seq_expr - { $2 } - | labeled_simple_pattern fun_binding - { let (l, o, p) = $1 in ghexp ~loc:$sloc (Pexp_fun(l, o, p, $2)) } - | 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 - { $1 } - | type_constraint EQUAL seq_expr - { wrap_exp_stack (mkexp_constraint ~loc:$sloc $3 $1) (make_loc $sloc) } -; -local_strict_binding: - EQUAL seq_expr - { $2 } - | labeled_simple_pattern local_fun_binding - { let (l, o, p) = $1 in ghexp ~loc:$sloc (Pexp_fun(l, o, p, $2)) } - | 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 } + { fun _ -> $2 } + | labeled_simple_pattern fun_binding_gen + { fun flags -> let (l, o, p) = $1 in ghexp ~loc:$sloc (Pexp_fun(l, o, p, $2 flags)) } + | LPAREN TYPE newtypes RPAREN fun_binding_gen + { fun flags -> mk_newtypes ~loc:$sloc $3 ($5 flags) } + | LPAREN TYPE mkrhs(LIDENT) COLON layout_annotation RPAREN fun_binding_gen + { fun flags -> mk_newtypes ~loc:$sloc [$3, Some $5] ($7 flags) } +; +%inline strict_binding: + strict_binding_modes + {$1 []} ; %inline match_cases: xs = preceded_or_separated_nonempty_llist(BAR, match_case) @@ -3878,25 +3945,24 @@ function_type: strict_function_type: | mktyp( label = arg_label - local = optional_local + unique_local = mode_flags domain = extra_rhs(param_type) MINUSGREATER codomain = strict_function_type - { Ptyp_arrow(label, mktyp_local_if local domain $loc(local), codomain) } + { Ptyp_arrow(label, mktyp_with_modes unique_local domain , codomain) } ) { $1 } | mktyp( label = arg_label - arg_local = optional_local + arg_unique_local = mode_flags domain = extra_rhs(param_type) MINUSGREATER - ret_local = optional_local + ret_unique_local = mode_flags codomain = tuple_type %prec MINUSGREATER { 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)) } + mktyp_with_modes arg_unique_local domain , + mktyp_with_modes ret_unique_local (maybe_curry_typ codomain $loc(codomain))) } ) { $1 } ; @@ -3908,11 +3974,17 @@ strict_function_type: | /* empty */ { Nolabel } ; -%inline optional_local: - | /* empty */ - { false } - | LOCAL - { true } +%inline mode_flag: + | LOCAL + { (Local, $sloc) } + | UNIQUE + { (Unique, $sloc) } + | ONCE + { (Once, $sloc) } +; +%inline mode_flags: + | flags = iloption(mode_flag+) + { flags } ; %inline param_type: | mktyp_jane_syntax_ltyp( diff --git a/ocaml/testsuite/tests/formatting/test_locations.dlocations.ocamlc.reference b/ocaml/testsuite/tests/formatting/test_locations.dlocations.ocamlc.reference index 260cd75b380..1b8558b59bd 100644 --- a/ocaml/testsuite/tests/formatting/test_locations.dlocations.ocamlc.reference +++ b/ocaml/testsuite/tests/formatting/test_locations.dlocations.ocamlc.reference @@ -86,11 +86,11 @@ let rec fib = function | 0 | 1 -> 1 | n -> (fib (n - 1)) + (fib (n - 2)) pattern (test_locations.ml[17,534+8]..test_locations.ml[17,534+11]) Tpat_var "fib" - alloc_mode global + value_mode Global, Shared, Many expression (test_locations.ml[17,534+14]..test_locations.ml[19,572+34]) Texp_function region true - alloc_mode global + alloc_mode Global, Shared, Many Nolabel [ @@ -105,11 +105,11 @@ let rec fib = function | 0 | 1 -> 1 | n -> (fib (n - 1)) + (fib (n - 2)) pattern (test_locations.ml[19,572+4]..test_locations.ml[19,572+5]) Tpat_var "n" - alloc_mode global + value_mode Global, Unique, Many expression (test_locations.ml[19,572+9]..test_locations.ml[19,572+34]) Texp_apply apply_mode Tail - alloc_mode global + locality_mode Global expression (test_locations.ml[19,572+21]..test_locations.ml[19,572+22]) Texp_ident "Stdlib!.+" [ @@ -118,7 +118,7 @@ let rec fib = function | 0 | 1 -> 1 | n -> (fib (n - 1)) + (fib (n - 2)) expression (test_locations.ml[19,572+9]..test_locations.ml[19,572+20]) Texp_apply apply_mode Default - alloc_mode global + locality_mode Global expression (test_locations.ml[19,572+9]..test_locations.ml[19,572+12]) Texp_ident "fib" [ @@ -127,7 +127,7 @@ let rec fib = function | 0 | 1 -> 1 | n -> (fib (n - 1)) + (fib (n - 2)) expression (test_locations.ml[19,572+13]..test_locations.ml[19,572+20]) Texp_apply apply_mode Default - alloc_mode global + locality_mode Global expression (test_locations.ml[19,572+16]..test_locations.ml[19,572+17]) Texp_ident "Stdlib!.-" [ @@ -146,7 +146,7 @@ let rec fib = function | 0 | 1 -> 1 | n -> (fib (n - 1)) + (fib (n - 2)) expression (test_locations.ml[19,572+23]..test_locations.ml[19,572+34]) Texp_apply apply_mode Default - alloc_mode global + locality_mode Global expression (test_locations.ml[19,572+23]..test_locations.ml[19,572+26]) Texp_ident "fib" [ @@ -155,7 +155,7 @@ let rec fib = function | 0 | 1 -> 1 | n -> (fib (n - 1)) + (fib (n - 2)) expression (test_locations.ml[19,572+27]..test_locations.ml[19,572+34]) Texp_apply apply_mode Default - alloc_mode global + locality_mode Global expression (test_locations.ml[19,572+30]..test_locations.ml[19,572+31]) Texp_ident "Stdlib!.-" [ diff --git a/ocaml/testsuite/tests/formatting/test_locations.dno-locations.ocamlc.reference b/ocaml/testsuite/tests/formatting/test_locations.dno-locations.ocamlc.reference index 497720c15b0..f46605dc688 100644 --- a/ocaml/testsuite/tests/formatting/test_locations.dno-locations.ocamlc.reference +++ b/ocaml/testsuite/tests/formatting/test_locations.dno-locations.ocamlc.reference @@ -86,11 +86,11 @@ let rec fib = function | 0 | 1 -> 1 | n -> (fib (n - 1)) + (fib (n - 2)) pattern Tpat_var "fib" - alloc_mode global + value_mode Global, Shared, Many expression Texp_function region true - alloc_mode global + alloc_mode Global, Shared, Many Nolabel [ @@ -105,11 +105,11 @@ let rec fib = function | 0 | 1 -> 1 | n -> (fib (n - 1)) + (fib (n - 2)) pattern Tpat_var "n" - alloc_mode global + value_mode Global, Unique, Many expression Texp_apply apply_mode Tail - alloc_mode global + locality_mode Global expression Texp_ident "Stdlib!.+" [ @@ -118,7 +118,7 @@ let rec fib = function | 0 | 1 -> 1 | n -> (fib (n - 1)) + (fib (n - 2)) expression Texp_apply apply_mode Default - alloc_mode global + locality_mode Global expression Texp_ident "fib" [ @@ -127,7 +127,7 @@ let rec fib = function | 0 | 1 -> 1 | n -> (fib (n - 1)) + (fib (n - 2)) expression Texp_apply apply_mode Default - alloc_mode global + locality_mode Global expression Texp_ident "Stdlib!.-" [ @@ -146,7 +146,7 @@ let rec fib = function | 0 | 1 -> 1 | n -> (fib (n - 1)) + (fib (n - 2)) expression Texp_apply apply_mode Default - alloc_mode global + locality_mode Global expression Texp_ident "fib" [ @@ -155,7 +155,7 @@ let rec fib = function | 0 | 1 -> 1 | n -> (fib (n - 1)) + (fib (n - 2)) expression Texp_apply apply_mode Default - alloc_mode global + locality_mode Global expression Texp_ident "Stdlib!.-" [ diff --git a/ocaml/testsuite/tests/typing-local/crossing.ml b/ocaml/testsuite/tests/typing-local/crossing.ml index 3d868970149..945a616c387 100644 --- a/ocaml/testsuite/tests/typing-local/crossing.ml +++ b/ocaml/testsuite/tests/typing-local/crossing.ml @@ -161,7 +161,7 @@ let f: local_ _ -> int lazy_t = Line 2, characters 16-17: 2 | fun n -> lazy n ^ -Error: The value n is local, so cannot be used inside a closure that might escape +Error: The value n is local, so cannot be used inside a lazy expression. |}] (* record field crosses mode at projection *) diff --git a/ocaml/testsuite/tests/typing-local/exclave.ml b/ocaml/testsuite/tests/typing-local/exclave.ml index 7d1631fb948..5b735f85650 100644 --- a/ocaml/testsuite/tests/typing-local/exclave.ml +++ b/ocaml/testsuite/tests/typing-local/exclave.ml @@ -200,15 +200,14 @@ val f : unit -> local_ unit = - : unit = () |}] -(* exclave means the inner body must be exactly at local; cannot be global *) +(* local_ on the RHS of arrow types indicates allocating in the parent region. + To match that, exclave_ always returns local. However, the body could be + actually global and implicitly casted to local. In the following, the + [fun x y] is actually global. *) let f () = exclave_ ( (fun x y -> ()) : (string -> string -> unit) ) [%%expect{| -Line 3, characters 4-19: -3 | (fun x y -> ()) : (string -> string -> unit) - ^^^^^^^^^^^^^^^ -Error: This function or one of its parameters escape their region - when it is partially applied +val f : unit -> local_ (string -> (string -> unit)) = |}] \ No newline at end of file diff --git a/ocaml/testsuite/tests/typing-local/local.ml b/ocaml/testsuite/tests/typing-local/local.ml index d3ef806ca22..64a554b1d77 100644 --- a/ocaml/testsuite/tests/typing-local/local.ml +++ b/ocaml/testsuite/tests/typing-local/local.ml @@ -576,7 +576,7 @@ let bug3 () = Line 3, characters 63-64: 3 | fun ~a -> fun[@curry] ~b -> fun[@curry] ~c -> print_string a ^ -Error: The value a is local, so cannot be used inside a closure that might escape +Error: The value a is local, so cannot be used inside a closure that might escape. |}] let overapp ~(local_ a) ~b = (); fun ~c ~d -> () @@ -878,7 +878,7 @@ let obj () = Line 3, characters 33-38: 3 | let _obj = object method foo = thing end in ^^^^^ -Error: The value thing is local, so cannot be used inside a closure that might escape +Error: The value thing is local, so cannot be used inside a class. |}] @@ -930,7 +930,7 @@ let leak_ref_2 = Line 3, characters 39-40: 3 | use_locally (fun x -> let _ = local_ r in r.contents <- Some x; x) 42 ^ -Error: The value r is local, so cannot be used inside a closure that might escape +Error: The value r is local, so cannot be used inside a closure that might escape. |}] let leak_ref_3 = @@ -1036,7 +1036,7 @@ let foo (local_ x) = Line 2, characters 30-31: 2 | let _ = lazy (print_string !x) in ^ -Error: The value x is local, so cannot be used inside a closure that might escape +Error: The value x is local, so cannot be used inside a lazy expression. |}] (* Don't escape through a functor *) @@ -1051,7 +1051,7 @@ let foo (local_ x) = Line 3, characters 27-28: 3 | let () = print_string !x ^ -Error: The value x is local, so cannot be used inside a closure that might escape +Error: The value x is local, so cannot be used inside a module. |}] (* Don't escape through a class method *) @@ -1066,7 +1066,7 @@ let foo (local_ x) = Line 4, characters 18-19: 4 | method m = !x ^ -Error: The value x is local, so cannot be used inside a closure that might escape +Error: The value x is local, so cannot be used inside a class. |}] (* Don't escape through an object method *) @@ -1081,7 +1081,7 @@ let foo (local_ x) = Line 3, characters 16-17: 3 | method m = !x ^ -Error: The value x is local, so cannot be used inside a closure that might escape +Error: The value x is local, so cannot be used inside a class. |}] (* Don't escape through a class instance variable *) @@ -1096,7 +1096,7 @@ let foo (local_ x) = Line 4, characters 15-16: 4 | val m = !x ^ -Error: The value x is local, so cannot be used inside a closure that might escape +Error: The value x is local, so cannot be used inside a class. |}] (* Don't escape through a class instance variable *) @@ -1109,7 +1109,7 @@ let foo (local_ x) = Line 3, characters 13-14: 3 | val m = !x ^ -Error: The value x is local, so cannot be used inside a closure that might escape +Error: The value x is local, so cannot be used inside a class. |}] (* Don't escape through a class local variable *) @@ -1161,7 +1161,7 @@ let foo (local_ x : string ref) = Line 5, characters 15-16: 5 | let y = !x in ^ -Error: The value x is local, so cannot be used inside a closure that might escape +Error: The value x is local, so cannot be used inside a class. |}] let foo (local_ x : string ref) = @@ -1191,7 +1191,7 @@ class d : string -> object method m : string end Line 6, characters 17-18: 6 | inherit d !x ^ -Error: The value x is local, so cannot be used inside a closure that might escape +Error: The value x is local, so cannot be used inside a class. |}] (* Don't escape in initializers *) @@ -1206,7 +1206,7 @@ let foo (local_ x) = Line 3, characters 31-32: 3 | initializer (print_string !x) ^ -Error: The value x is local, so cannot be used inside a closure that might escape +Error: The value x is local, so cannot be used inside a class. |}] (* Don't escape in non-function 'let rec' bindings *) @@ -1260,7 +1260,7 @@ val local_cb : local_ (unit -> 'a) -> 'a = Line 2, characters 41-42: 2 | let foo (local_ x) = local_cb (fun () -> x := 17; 42) ^ -Error: The value x is local, so cannot be used inside a closure that might escape +Error: The value x is local, so cannot be used inside a closure that might escape. Hint: The closure might escape because it is an argument to a tail call |}] @@ -2648,7 +2648,7 @@ Lines 3-6, characters 6-3: Error: Signature mismatch: Modules do not match: sig - val g : 'a -> 'b -> local_ string + val g : 'a -> ('b -> local_ string) val f : 'a -> local_ ('b -> local_ string) end is not included in diff --git a/ocaml/testsuite/tests/typing-unique/unique.ml b/ocaml/testsuite/tests/typing-unique/unique.ml new file mode 100644 index 00000000000..64ecce00494 --- /dev/null +++ b/ocaml/testsuite/tests/typing-unique/unique.ml @@ -0,0 +1,618 @@ +(* TEST + flags += "-extension unique" + * expect +*) + +(* unique means the value is the only usage *) +let dup x = unique_ (x, x) +[%%expect{| +Line 1, characters 24-25: +1 | let dup x = unique_ (x, x) + ^ +Error: This value is used here, but it has already been used as unique: +Line 1, characters 21-22: +1 | let dup x = unique_ (x, x) + ^ + +|}] + +(* unique value can be used more than once *) +let dup (unique_ x) = (x, x) +[%%expect{| +val dup : unique_ 'a -> 'a * 'a = +|}] + +(* once value can be used only once*) +let dup (once_ x) = (x, x) +[%%expect{| +Line 1, characters 24-25: +1 | let dup (once_ x) = (x, x) + ^ +Error: This value is used here, + but it is defined as once and has already been used: +Line 1, characters 21-22: +1 | let dup (once_ x) = (x, x) + ^ + +|}] + +let dup (unique_ x) = (unique_ x, x, x) +[%%expect{| +Line 1, characters 34-35: +1 | let dup (unique_ x) = (unique_ x, x, x) + ^ +Error: This value is used here, but it has already been used as unique: +Line 1, characters 31-32: +1 | let dup (unique_ x) = (unique_ x, x, x) + ^ + +|}] + +let dup (unique_ x) = (x, (unique_ x), x) +[%%expect{| +Line 1, characters 26-37: +1 | let dup (unique_ x) = (x, (unique_ x), x) + ^^^^^^^^^^^ +Error: This value is used here as unique, but it has already been used: +Line 1, characters 23-24: +1 | let dup (unique_ x) = (x, (unique_ x), x) + ^ + +|}] + + +let dup (unique_ x) = ((unique_ x), x) +[%%expect{| +Line 1, characters 36-37: +1 | let dup (unique_ x) = ((unique_ x), x) + ^ +Error: This value is used here, but it has already been used as unique: +Line 1, characters 23-34: +1 | let dup (unique_ x) = ((unique_ x), x) + ^^^^^^^^^^^ + +|}] + +(* below we define a tuple that can be used multiple times, + but manually relax it to once *) +let dup x = once_ (x, x) +[%%expect{| +val dup : 'a -> once_ 'a * 'a = +|}] + +(* closing over unique values gives once closure *) +let f () = + let unique_ k = "foo" in + let g () = (unique_ k) ^ (unique_ k) in + g () ^ g () +[%%expect{| +Line 3, characters 27-38: +3 | let g () = (unique_ k) ^ (unique_ k) in + ^^^^^^^^^^^ +Error: This value is used here, but it has already been used as unique: +Line 3, characters 13-24: +3 | let g () = (unique_ k) ^ (unique_ k) in + ^^^^^^^^^^^ + +|}] + +(* but if the closure doesn't utilize the uniqueness, + then it's not once *) +let f () = + let unique_ k = "foo" in + let g () = k ^ k in + g () ^ g () +[%%expect{| +val f : unit -> string = +|}] + +(* variables inside loops will be made both shared and many *) +(* the following is fine, because k inside loop is shared *) +let f () = + let unique_ k = "foo" in + for i = 1 to 5 do + ignore k + done +[%%expect{| +val f : unit -> unit = +|}] + + +(* The following is bad, because k is once and cannot be used more than once*) +let f () = + let once_ k = "foo" in + for i = 1 to 5 do + k + done +[%%expect{| +Line 4, characters 4-5: +4 | k + ^ +Error: The value k is once, so cannot be used inside a for loop +|}] + +(* The following is bad, because k is used uniquely *) +let f () = + let unique_ k = "foo" in + for i = 1 to 5 do + unique_ k + done +[%%expect{| +Line 4, characters 12-13: +4 | unique_ k + ^ +Error: Found a shared value where a unique value was expected + Hint: This identifier cannot be used uniquely, + because it was defined outside of the for-loop. +|}] + +let f = + let unique_ a = 3 in + let g (unique_ a) = a in + for i = 0 to 5 do + let _ = g a in () + done; + () +[%%expect{| +Line 5, characters 14-15: +5 | let _ = g a in () + ^ +Error: Found a shared value where a unique value was expected + Hint: This identifier cannot be used uniquely, + because it was defined outside of the for-loop. +|}] + +let f = + let g (unique_ a) = a in + for i = 0 to 5 do + let unique_ a = 3 in + let _ = g a in () + done; + () +[%%expect{| +val f : unit = () +|}] + +(* the following is howerver fine, because g doesn't use the uniqueness of k; +in fact, the k inside g is just shared. + *) +let f () = + let unique_ k = "foo" in + let g () = k ^ k in + (* k is unique, and thus g is once *) + g () ^ g () +[%%expect{| +val f : unit -> string = +|}] + +(* closing over once values gives once closure *) +(* note that in g we don't annotate k; becaue once_ is already the most relaxed mode + *) +let f () = + let once_ k = "foo" in + let g () = k in + (g (), g () ) +[%%expect{| +Line 4, characters 9-10: +4 | (g (), g () ) + ^ +Error: This value is used here, + but it is defined as once and has already been used: +Line 4, characters 3-4: +4 | (g (), g () ) + ^ + +|}] + +let x = "foo" +[%%expect{| +val x : string = "foo" +|}] + +(* Top-level must be many *) +let once_ foo = "foo" +[%%expect{| +Line 1, characters 4-21: +1 | let once_ foo = "foo" + ^^^^^^^^^^^^^^^^^ +Error: Found a once value where a many value was expected +|}] + +(* the following is fine - we relax many to once *) +let foo y = once_ x +[%%expect{| +val foo : 'a -> once_ string = +|}] + +(* top-level must be shared; the following unique is weakened to shared *) +let unique_ foo = "foo" +[%%expect{| +val foo : string = "foo" +|}] + + +(* the following is bad - trying to tighten shared to unique *) +let foo y = unique_ x +[%%expect{| +Line 1, characters 20-21: +1 | let foo y = unique_ x + ^ +Error: Found a shared value where a unique value was expected +|}] + + +(* global modality entails shared modality; +this is crucial once we introduce borrowing whose scope is controlled +by locality *) +type 'a glob = { global_ glob: 'a } [@@unboxed] +[%%expect{| +type 'a glob = { global_ glob : 'a; } [@@unboxed] +|}] +let dup (glob : 'a) : 'a glob * 'a glob = unique_ ({glob}, {glob}) +[%%expect{| +val dup : 'a -> 'a glob * 'a glob = +|}] + +(* For strict type/mode match we need module *) +module M : sig + val drop : unique_ 'a -> unique_ unit + end = struct + let drop (unique_ x) = unique_ () +end +[%%expect{| +module M : sig val drop : unique_ 'a -> unique_ unit end +|}] + +(* In the following we won't use module *) +(* printed modes are imprecise *) +let unique_id : 'a. unique_ 'a -> unique_ 'a = fun x -> x +[%%expect{| +val unique_id : unique_ 'a -> unique_ 'a = +|}] + +let shared_id : 'a -> 'a = fun x -> x +[%%expect{| +val shared_id : 'a -> 'a = +|}] + +let tail_unique _x = + let unique_ y = "foo" in unique_id y +[%%expect{| +val tail_unique : 'a -> string = +|}] + +let tail_unique : unique_ 'a list -> unique_ 'a list = function + | [] -> [] + | _ :: xx -> xx +[%%expect{| +val tail_unique : unique_ 'a list -> unique_ 'a list = +|}] + +let higher_order (f : unique_ 'a -> unique_ 'b) (unique_ x : 'a) = unique_ f x +[%%expect{| +val higher_order : (unique_ 'a -> unique_ 'b) -> unique_ 'a -> 'b = +|}] + +let higher_order2 (f : 'a -> unique_ 'b) (x : 'a) = unique_ f x +[%%expect{| +val higher_order2 : ('a -> unique_ 'b) -> 'a -> 'b = +|}] + +let higher_order3 (f : 'a -> 'b) (unique_ x : 'a) = unique_ f x +[%%expect{| +Line 1, characters 60-63: +1 | let higher_order3 (f : 'a -> 'b) (unique_ x : 'a) = unique_ f x + ^^^ +Error: Found a shared value where a unique value was expected +|}] + +let higher_order4 (f : unique_ 'a -> 'b) (x : 'a) = f (shared_id x) +[%%expect{| +Line 1, characters 54-67: +1 | let higher_order4 (f : unique_ 'a -> 'b) (x : 'a) = f (shared_id x) + ^^^^^^^^^^^^^ +Error: Found a shared value where a unique value was expected +|}] + +let higher_order5 (unique_ x) = let f (unique_ x) = unique_ x in higher_order f x +[%%expect{| +val higher_order5 : unique_ 'a -> 'a = +|}] + +let higher_order6 (unique_ x) = let f (unique_ x) = unique_ x in higher_order2 f x +[%%expect{| +Line 1, characters 79-80: +1 | let higher_order6 (unique_ x) = let f (unique_ x) = unique_ x in higher_order2 f x + ^ +Error: This expression has type unique_ 'a -> 'a + but an expression was expected of type 'b -> unique_ 'c +|}] + +type record_update = { x : string } +[%%expect{| +type record_update = { x : string; } +|}] + +let update2 = update { x = "bar" } +[%%expect{| +Line 1, characters 14-20: +1 | let update2 = update { x = "bar" } + ^^^^^^ +Error: Unbound value update +|}] + +let inf1 (unique_ x : float) = unique_ let y = x in y +[%%expect{| +val inf1 : unique_ float -> float = +|}] + +let inf2 (b : bool) (unique_ x : float) = unique_ let y = if b then x else 1.0 in y +[%%expect{| +val inf2 : bool -> unique_ float -> float = +|}] + +let inf3 : bool -> float -> unique_ float -> float = fun b y x -> + let _ = shared_id y in let unique_ z = if b then x else y in z +[%%expect{| +Line 2, characters 58-59: +2 | let _ = shared_id y in let unique_ z = if b then x else y in z + ^ +Error: Found a shared value where a unique value was expected +|}] + +let inf4 (b : bool) (y : float) (unique_ x : float) = + let _ = shared_id y in let unique_ z = if b then x else y in z +[%%expect{| +Line 2, characters 58-59: +2 | let _ = shared_id y in let unique_ z = if b then x else y in z + ^ +Error: This value is used here as unique, but it has already been used: +Line 2, characters 20-21: +2 | let _ = shared_id y in let unique_ z = if b then x else y in z + ^ + +|}] + + +let inf5 (b : bool) (y : float) (unique_ x : float) = + let z = if b then x else y in unique_ z +[%%expect{| +val inf5 : bool -> unique_ float -> unique_ float -> float = +|}] + +let inf6 (unique_ x) = let f x = x in higher_order f x +[%%expect{| +val inf6 : unique_ 'a -> 'a = +|}] + +let unique_default_args ?(unique_ x = 1.0) () = x +[%%expect{| +val unique_default_args : ?x:unique_ float -> unit -> float = +|}] + +(* Unique Local *) + +let ul (unique_ local_ x) = x +[%%expect{| +val ul : local_ unique_ 'a -> local_ 'a = +|}] + +let ul_ret x = unique_ local_ x +[%%expect{| +val ul_ret : unique_ 'a -> local_ 'a = +|}] + +type point = { x : float; y : float } +[%%expect{| +type point = { x : float; y : float; } +|}] + +let overwrite_point t = + unique_ ({t with y = 0.5}, {t with x = 0.5}) +[%%expect{| +val overwrite_point : unique_ point -> point * point = +|}] + +let gc_soundness_nobug (local_ unique_ p) (local_ f) = + local_ { p with x = f } +[%%expect{| +val gc_soundness_nobug : local_ unique_ point -> local_ float -> local_ point = + +|}] + +let rec foo = + fun (local_ o) -> + match (unique_ o) with + | Some () -> foo None + | None -> () +[%%expect{| +val foo : local_ unique_ unit option -> unit = +|}] + +let rec bar = + fun (unique_ o) -> + match o with + | Some () -> () + | None -> bar (local_ Some ()) [@nontail] +[%%expect{| +val bar : local_ unique_ unit option -> unit = +|}] + +let foo : local_ unique_ string -> unit = fun (local_ s) -> () +[%%expect{| +val foo : local_ unique_ string -> unit = +|}] + +let bar : local_ unique_ string -> unit = fun (unique_ s) -> () +[%%expect{| +val bar : local_ unique_ string -> unit = +|}] + +(* Currying *) + +let curry = + let foo ~a ~b ~c ~d = (a, b, c, (unique_ d)) in + foo ~a:3 ~c:4 +[%%expect{| +val curry : b:'_weak1 -> d:unique_ '_weak2 -> int * '_weak1 * int * '_weak2 = + +|}] + +(* the following two failed because top-level must be many *) +(* TODO: maybe a particular error for that? *) +let curry = + let foo ~a ~b ~c ~d = (a, b, (unique_ c), (unique_ d)) in + foo ~a:3 ~c:4 +[%%expect{| +Line 3, characters 2-15: +3 | foo ~a:3 ~c:4 + ^^^^^^^^^^^^^ +Error: Found a once value where a many value was expected +|}] + +let curry = + let foo ~a ~b ~c ~d = ((unique_ a), b, c, d) in + foo ~a:3 ~c:4 +[%%expect{| +Line 3, characters 2-15: +3 | foo ~a:3 ~c:4 + ^^^^^^^^^^^^^ +Error: Found a once value where a many value was expected +|}] + +let curry = + let foo ~a ~b ~c ~d = (a, (unique_ b), c, unique_ d) in + foo ~a:3 ~c:4 +[%%expect{| +val curry : + b:unique_ '_weak3 -> d:unique_ '_weak4 -> int * '_weak3 * int * '_weak4 = + +|}] + +let curry = + let foo ~a ~b ~c ~d = (a, b, (unique_ c), unique_ d) in + let bar = foo ~a:3 ~b:2 ~c:4 in + (bar ~d:3, bar ~d:5) +[%%expect{| +Line 4, characters 13-16: +4 | (bar ~d:3, bar ~d:5) + ^^^ +Error: This value is used here, + but it is defined as once and has already been used: +Line 4, characters 3-6: +4 | (bar ~d:3, bar ~d:5) + ^^^ + +|}] + +let curry = + let foo ~a ~b ~c ~d = (a, b, (unique_ c), unique_ d) in + let bar = foo ~a:3 ~c:4 in + let baz = bar ~b:4 in (baz ~d:3, baz ~d:5) +[%%expect{| +Line 4, characters 35-38: +4 | let baz = bar ~b:4 in (baz ~d:3, baz ~d:5) + ^^^ +Error: This value is used here, + but it is defined as once and has already been used: +Line 4, characters 25-28: +4 | let baz = bar ~b:4 in (baz ~d:3, baz ~d:5) + ^^^ + +|}] + +let curry = + let unique_ x = "foo" in + let foo y = unique_ x in + (foo 1, foo 2) +[%%expect{| +Line 4, characters 10-13: +4 | (foo 1, foo 2) + ^^^ +Error: This value is used here, + but it is defined as once and has already been used: +Line 4, characters 3-6: +4 | (foo 1, foo 2) + ^^^ + +|}] + +type box = { x : int } +[%%expect{| +type box = { x : int; } +|}] + +let curry (unique_ b1 : box) (unique_ b2 : box) = b1 +[%%expect{| +val curry : unique_ box -> unique_ box -> box = +|}] + +let curry : unique_ box -> unique_ box -> unique_ box = fun b1 b2 -> b1 +[%%expect{| +val curry : unique_ box -> unique_ box -> unique_ box = +|}] + +let curry : unique_ box -> (unique_ box -> unique_ box) = fun b1 b2 -> b1 +[%%expect{| +Line 1, characters 58-73: +1 | let curry : unique_ box -> (unique_ box -> unique_ box) = fun b1 b2 -> b1 + ^^^^^^^^^^^^^^^ +Error: This function when partially applied returns a once value, + but expected to be many. +|}] + +(* If both type and mode are wrong, complain about type *) +let f () = + let id2 (x : string) = shared_id x in + let unique_ r = 42 in + id2 r +[%%expect{| +Line 4, characters 6-7: +4 | id2 r + ^ +Error: This expression has type int but an expression was expected of type + string +|}] + + +let foo () = + let unique_ _bar : int -> int -> int = + ((fun y z -> z) : int -> unique_ (int -> int)) in + () +[%%expect{| +Line 3, characters 4-50: +3 | ((fun y z -> z) : int -> unique_ (int -> int)) in + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +Error: This expression has type int -> unique_ (int -> int) + but an expression was expected of type int -> int -> int +|}] + + +let return_local : local_ 'a -> local_ 'a = fun x -> x +let return_global : local_ 'a -> int = fun x -> 0 +[%%expect{| +val return_local : local_ 'a -> local_ 'a = +val return_global : local_ 'a -> int = +|}] + + +(* recursive function *) +(* the following error, because make_tree must return unique + (which is needed for x to be unique), and therefore + cannot return (x, x) *) +type tree = Leaf | Node of tree * tree +let rec make_tree = fun n -> + if n <= 0 then Leaf + else let unique_ x = make_tree (n - 1) + in Node (x, x) +[%%expect{| +type tree = Leaf | Node of tree * tree +Line 5, characters 19-20: +5 | in Node (x, x) + ^ +Error: This value is used here, but it has already been used as unique: +Line 5, characters 16-17: +5 | in Node (x, x) + ^ + +|}] \ No newline at end of file diff --git a/ocaml/testsuite/tests/typing-unique/unique_analysis.ml b/ocaml/testsuite/tests/typing-unique/unique_analysis.ml new file mode 100644 index 00000000000..5a0daa03b99 --- /dev/null +++ b/ocaml/testsuite/tests/typing-unique/unique_analysis.ml @@ -0,0 +1,782 @@ + (* TEST + flags += "-extension unique" + * expect *) + +(* This file is to test uniqueness_analysis.ml *) + +(* First some helper functions *) +let unique_id : 'a. unique_ 'a -> unique_ 'a = fun x -> x +[%%expect{| +val unique_id : unique_ 'a -> unique_ 'a = +|}] + +let shared_id : 'a -> 'a = fun x -> x +[%%expect{| +val shared_id : 'a -> 'a = +|}] + +let ignore_once: once_ 'a -> unit = fun x -> () + +type box = { x : int } +[%%expect{| +val ignore_once : once_ 'a -> unit = +type box = { x : int; } +|}] + +let update : unique_ box -> unique_ box = unique_id +[%%expect{| +val update : unique_ box -> unique_ box = +|}] + + +(* testing Texp_ifthenelse *) + +let branching (unique_ x : float) = unique_ if true then x else x +[%%expect{| +val branching : unique_ float -> float = +|}] + +(* whether we constrain uniqueness or linearity is irrelavant + for testing uniqueness analysis. Therefore, in the rest we + will only constrain uniqueness *) +let branching (once_ x : float) = if true then x else x +[%%expect{| +val branching : once_ float -> once_ float = +|}] + +let branching b = + let unique_ r = { x = 23 } in + if b then update r + else update r +[%%expect{| +val branching : bool -> box = +|}] + +let sequence (unique_ x : float) = unique_ let y = x in (x, y) +[%%expect{| +Line 1, characters 60-61: +1 | let sequence (unique_ x : float) = unique_ let y = x in (x, y) + ^ +Error: This value is used here, but it has already been used as unique: +Line 1, characters 57-58: +1 | let sequence (unique_ x : float) = unique_ let y = x in (x, y) + ^ + +|}] + +let sequence = + let r = { x = 23 } in + let s = update r in + let t = update s in + t +[%%expect{| +val sequence : box = {x = 23} +|}] + +let sequence = + let r = { x = 23 } in + let _s = update r in + let t = update r in + t +[%%expect{| +Line 4, characters 17-18: +4 | let t = update r in + ^ +Error: This value is used here, but it has already been used as unique: +Line 3, characters 18-19: +3 | let _s = update r in + ^ + +|}] + +let children_unique (unique_ xs : float list) = + match xs with + | [] -> (0., []) + | x :: xx -> unique_ (x, xx) +[%%expect{| +val children_unique : unique_ float list -> float * float list = +|}] + +let borrow_match (unique_ fs : 'a list) = + match fs with + | [] -> [] + | x :: xs as gs -> unique_ gs +[%%expect{| +val borrow_match : unique_ 'a list -> 'a list = +|}] + +let borrow_match (unique_ fs : 'a list) = + match fs with + | [] -> [] + | x :: xs -> unique_ fs +[%%expect{| +val borrow_match : unique_ 'a list -> 'a list = +|}] + +let dup_child (unique_ fs : 'a list) = + match fs with + | [] -> ([], []) + | x :: xs as gs -> (unique_ gs), xs +[%%expect{| +Line 4, characters 35-37: +4 | | x :: xs as gs -> (unique_ gs), xs + ^^ +Error: This value is used here, + but it is part of a value that has already been used as unique: +Line 4, characters 21-33: +4 | | x :: xs as gs -> (unique_ gs), xs + ^^^^^^^^^^^^ + +|}] + +let dup_child (unique_ fs : 'a list) = + match fs with + | [] -> ([], []) + | x :: xs as gs -> gs, unique_ xs +[%%expect{| +Line 4, characters 25-35: +4 | | x :: xs as gs -> gs, unique_ xs + ^^^^^^^^^^ +Error: This value is used here as unique, + but it is part of a value that has already been used: +Line 4, characters 21-23: +4 | | x :: xs as gs -> gs, unique_ xs + ^^ + +|}] +let dup_child (unique_ fs : 'a list) = + match fs with + | [] -> ([], []) + | x :: xs as gs -> (unique_ xs), gs +[%%expect{| +Line 4, characters 35-37: +4 | | x :: xs as gs -> (unique_ xs), gs + ^^ +Error: This value is used here, + but part of it has already been used as unique: +Line 4, characters 21-33: +4 | | x :: xs as gs -> (unique_ xs), gs + ^^^^^^^^^^^^ + +|}] +let dup_child (unique_ fs : 'a list) = + match fs with + | [] -> ([], []) + | x :: xs as gs -> xs, unique_ gs +[%%expect{| +Line 4, characters 25-35: +4 | | x :: xs as gs -> xs, unique_ gs + ^^^^^^^^^^ +Error: This value is used here as unique, + but part of it has already been used: +Line 4, characters 21-23: +4 | | x :: xs as gs -> xs, unique_ gs + ^^ + +|}] + + + +let or_patterns1 : unique_ float list -> float list -> float = + fun x y -> match x, y with + | z :: _, _ | _, z :: _ -> unique_ z + | _, _ -> 42.0 +[%%expect{| +Line 3, characters 37-38: +3 | | z :: _, _ | _, z :: _ -> unique_ z + ^ +Error: Found a shared value where a unique value was expected +|}] + +let or_patterns2 : float list -> unique_ float list -> float = + fun x y -> match x, y with + | z :: _, _ | _, z :: _ -> unique_ z + | _, _ -> 42.0 +[%%expect{| +Line 3, characters 37-38: +3 | | z :: _, _ | _, z :: _ -> unique_ z + ^ +Error: Found a shared value where a unique value was expected +|}] + +let or_patterns3 p = + let unique_ x = 3 in let unique_ y = 4 in + match p, x, y with + | true, z, _ | false, _, z -> let _ = unique_id z in unique_id y +[%%expect{| +Line 4, characters 65-66: +4 | | true, z, _ | false, _, z -> let _ = unique_id z in unique_id y + ^ +Error: This value is used here, but it has already been used as unique: +Line 4, characters 50-51: +4 | | true, z, _ | false, _, z -> let _ = unique_id z in unique_id y + ^ + +|}] + +let or_patterns4 p = + let unique_ x = 3 in let unique_ y = 4 in + match p, x, y with + | true, z, _ | false, _, z -> let _ = unique_id x in unique_id y +[%%expect{| +val or_patterns4 : bool -> int = +|}] + +let or_patterns5 p = + let unique_ x = 3 in let unique_ y = 4 in + match p, x, y with + | true, z, _ | false, _, z -> let _ = unique_id z in unique_id x +[%%expect{| +Line 4, characters 65-66: +4 | | true, z, _ | false, _, z -> let _ = unique_id z in unique_id x + ^ +Error: This value is used here, but it has already been used as unique: +Line 4, characters 50-51: +4 | | true, z, _ | false, _, z -> let _ = unique_id z in unique_id x + ^ + +|}] + +(* for some reason the following error message is missing "another use". Don't +know what's wrong *) +let mark_top_shared = + let unique_ xs = 2 :: 3 :: [] in + match xs with + | x :: xx -> + let _ = unique_id xs in + unique_ xx + | [] -> [] +[%%expect{| +Line 6, characters 6-16: +6 | unique_ xx + ^^^^^^^^^^ +Error: This value is used here, + but it is part of a value that has already been used as unique: +Line 5, characters 24-26: +5 | let _ = unique_id xs in + ^^ + +|}] + +let mark_top_shared = + let unique_ xs = 2 :: 3 :: [] in + let _ = unique_id xs in + match xs with + | x :: xx -> unique_ xx + | [] -> [] +[%%expect{| +Line 5, characters 4-11: +5 | | x :: xx -> unique_ xx + ^^^^^^^ +Error: This value is read from here, but it has already been used as unique: +Line 3, characters 20-22: +3 | let _ = unique_id xs in + ^^ + +|}] + +let mark_shared_in_one_branch b x = + if b then unique_id (x, 3.0) + else (x, x) +[%%expect{| +val mark_shared_in_one_branch : bool -> unique_ float -> float * float = + +|}] + +let mark_shared_in_one_branch b x = + if b then (x, x) + else unique_id (x, 3.0) +[%%expect{| +val mark_shared_in_one_branch : bool -> unique_ float -> float * float = + +|}] + +let expr_tuple_match f x y = + match f x, y with + | (a, b), c -> unique_ (a, c) +[%%expect{| +val expr_tuple_match : ('a -> unique_ 'b * 'c) -> 'a -> unique_ 'd -> 'b * 'd = + +|}] + +let expr_tuple_match f x y = + match f x, y with + | (a, b) as t, c -> let d = unique_id t in unique_ (c, d) +[%%expect{| +val expr_tuple_match : + ('a -> unique_ 'b * 'c) -> 'a -> unique_ 'd -> 'd * ('b * 'c) = +|}] + +let expr_tuple_match f x y = + match f x, y with + | (a, b) as t, c -> let d = unique_id t in unique_ (a, d) +[%%expect{| +Line 3, characters 54-55: +3 | | (a, b) as t, c -> let d = unique_id t in unique_ (a, d) + ^ +Error: This value is used here, + but it is part of a value that has already been used as unique: +Line 3, characters 40-41: +3 | | (a, b) as t, c -> let d = unique_id t in unique_ (a, d) + ^ + +|}] + +let tuple_parent_marked a b = + match (a, b) with + | (_, b) as _t -> shared_id b +[%%expect{| +val tuple_parent_marked : 'a -> 'b -> 'b = +|}] + +(* TODO: Improve UA so that the following example can be allowed. The intuition + is that [as _t] in the second branch shouldn't interfere with the first + branch. One way to fix this is to try to link [_t] to the path of `a` and `b`. + *) +let tuple_parent_marked a b = + match (a, b) with + | (true, b') -> unique_id b' + | (false, b') as _t -> shared_id b' +[%%expect{| +Line 3, characters 28-30: +3 | | (true, b') -> unique_id b' + ^^ +Error: This value is used here, but it has already been used as unique: +Line 2, characters 12-13: +2 | match (a, b) with + ^ + +|}] + +let tuple_parent_marked a b = + match (a, b) with + | (false, b) as _t -> shared_id b + | (true, b) -> unique_id b +[%%expect{| +Line 4, characters 27-28: +4 | | (true, b) -> unique_id b + ^ +Error: This value is used here, but it has already been used as unique: +Line 2, characters 12-13: +2 | match (a, b) with + ^ + +|}] + +let unique_match_on a b = + let unique_ t = (a, b) in t +[%%expect{| +val unique_match_on : unique_ 'a -> unique_ 'b -> 'a * 'b = +|}] + +type ('a, 'b) record = { foo : 'a; bar : 'b } +[%%expect{| +type ('a, 'b) record = { foo : 'a; bar : 'b; } +|}] + +let match_function : unique_ 'a * 'b -> 'a * ('a * 'b) = + function + | (a, b) as t -> unique_ (a, t) +[%%expect{| +Line 3, characters 31-32: +3 | | (a, b) as t -> unique_ (a, t) + ^ +Error: This value is used here, + but part of it has already been used as unique: +Line 3, characters 28-29: +3 | | (a, b) as t -> unique_ (a, t) + ^ + +|}] + +let tuple_parent_marked a b = + match (a, b) with + | ((_, a), b) as t -> unique_ (a, t) +[%%expect{| +Line 3, characters 36-37: +3 | | ((_, a), b) as t -> unique_ (a, t) + ^ +Error: This value is used here, + but part of it has already been used as unique: +Line 3, characters 33-34: +3 | | ((_, a), b) as t -> unique_ (a, t) + ^ + +|}] + +(* CR-someday anlorenzen: This one shouldn't fail in a more clever analysis. *) +let or_patterns6 flag f x y = + match flag, f x, y with + | true, a, (_, b) | false, b, (_, a) -> (unique_id a, unique_id b) +[%%expect{| +Line 3, characters 66-67: +3 | | true, a, (_, b) | false, b, (_, a) -> (unique_id a, unique_id b) + ^ +Error: This value is used here, but it has already been used as unique: +Line 3, characters 53-54: +3 | | true, a, (_, b) | false, b, (_, a) -> (unique_id a, unique_id b) + ^ + +|}] + + +type point = { dim : int; x : float; y : float; z : float } +[%%expect{| +type point = { dim : int; x : float; y : float; z : float; } +|}] + +let record_mode_vars (p : point) = + let x = unique_id p.x in + let y = (p.y, p.y) in + (x, y, unique_ p.z) +[%%expect{| +val record_mode_vars : unique_ point -> float * (float * float) * float = + +|}] + +let record_mode_vars (p : point) = + let x = unique_id p.x in + let y = (p.x, p.y) in + (x, y, unique_ p.z) +[%%expect{| +Line 3, characters 11-14: +3 | let y = (p.x, p.y) in + ^^^ +Error: This value is used here, but it has already been used as unique: +Line 2, characters 20-23: +2 | let x = unique_id p.x in + ^^^ + +|}] + +let record_mode_vars (p : point) = + let y = (p.x, p.y) in + let x = unique_id p.x in + (x, y, unique_ p.z) +[%%expect{| +Line 3, characters 20-23: +3 | let x = unique_id p.x in + ^^^ +Error: This value is used here as unique, but it has already been used: +Line 2, characters 11-14: +2 | let y = (p.x, p.y) in + ^^^ + +|}] + +(* testing Texp_function; closure over implicit borrowing *) +let foo () = + let unique_ r = {dim=1; x=2.0; y=3.0; z=4.0} in + let _bar () = match r with + | {dim; x; y; z} -> () + in + unique_id r +[%%expect{| +Line 6, characters 12-13: +6 | unique_id r + ^ +Error: This value is used here as unique, + but it has already been read from in a closure that might be called later: +Line 4, characters 6-20: +4 | | {dim; x; y; z} -> () + ^^^^^^^^^^^^^^ + +|}] + +(* not closing over is fine *) +let foo () = + let r = {dim=1; x=2.0; y=3.0; z=4.0} in + match r with + | {dim; x; y; z} -> () + ; + unique_id r +[%%expect{| +val foo : unit -> point = +|}] + +let foo () = + let unique_ r = {dim=1; x=2.0; y=3.0; z=4.0} in + let _l = lazy (r.z) in + unique_id r +[%%expect{| +Line 4, characters 12-13: +4 | unique_id r + ^ +Error: This value is used here as unique, + but it has already been read from in a closure that might be called later: +Line 3, characters 17-18: +3 | let _l = lazy (r.z) in + ^ + +|}] + + +type mfoo = { + mutable a : string; + b : string; +} + +(* testing Texp_setfield *) + +(* the following is bad - unique_id could strongly update x *) +let foo () = + let x = {a = "hello"; b = "world"} in + ignore (unique_id x); + x.a <- "olleh" +[%%expect{| +type mfoo = { mutable a : string; b : string; } +Line 12, characters 2-3: +12 | x.a <- "olleh" + ^ +Error: This value is written to here, but it has already been used as unique: +Line 11, characters 20-21: +11 | ignore (unique_id x); + ^ + +|}] + +let foo () = + let x = {a = "hello"; b = "world"} in + x.a <- "olleh"; + ignore (unique_id x) +[%%expect{| +val foo : unit -> unit = +|}] + +(* the following is rather interesting - after uniquely used x.b, the x as a +whole is unusable. However, one can still use x.mem_addr and x.a *) +let foo () = + let x = {a = "hello"; b = "world"} in + ignore (unique_id x.b); + x.a <- "olleh"; + ignore (shared_id x.a) +[%%expect{| +val foo : unit -> unit = +|}] + + +(* testing Tpat_lazy *) +let foo () = + match lazy (unique_ "hello") with + | (lazy y) as x -> ignore (shared_id x) +[%%expect{| +val foo : unit -> unit = +|}] + + +let foo () = +match lazy (unique_ "hello") with +| (lazy y) as x -> ignore (unique_id x) + +[%%expect{| +Line 3, characters 37-38: +3 | | (lazy y) as x -> ignore (unique_id x) + ^ +Error: This value is used here as unique, but it has already been used: +Line 3, characters 2-10: +3 | | (lazy y) as x -> ignore (unique_id x) + ^^^^^^^^ + +|}] + +type 'a r_lazy = {x_lazy : 'a Lazy.t; y : string} + +let foo () = + match {x_lazy = lazy (unique_ "hello"); y = "world"} with + | {x_lazy = lazy y} as r -> ignore (unique_id r.x_lazy) +[%%expect{| +type 'a r_lazy = { x_lazy : 'a Lazy.t; y : string; } +Line 5, characters 48-56: +5 | | {x_lazy = lazy y} as r -> ignore (unique_id r.x_lazy) + ^^^^^^^^ +Error: This value is used here as unique, but it has already been used: +Line 5, characters 14-20: +5 | | {x_lazy = lazy y} as r -> ignore (unique_id r.x_lazy) + ^^^^^^ + +|}] + +let foo () = + match {x_lazy = lazy (unique_ "hello"); y = "world"} with + | {x_lazy = lazy y} as r -> ignore (shared_id r.x_lazy) +[%%expect{| +val foo : unit -> unit = +|}] + +let foo () = + match {x_lazy = lazy (unique_ "hello"); y = "world"} with + | {x_lazy = lazy y} as r -> ignore (unique_id r.y) +[%%expect{| +val foo : unit -> unit = +|}] + +(* Testing modalities in records *) +type r_global = {x : string; global_ y : string} +[%%expect{| +type r_global = { x : string; global_ y : string; } +|}] + +let foo () = + let r = {x = "hello"; y = "world"} in + ignore (shared_id r.y); + (* the following is allowed, because using r uniquely implies using r.x + shared *) + ignore (unique_id r) +[%%expect{| +val foo : unit -> unit = +|}] + + (* Similarly for linearity *) +let foo () = + let r = once_ {x = "hello"; y = "world"} in + ignore_once r.y; + ignore_once r; +[%%expect{| +val foo : unit -> unit = +|}] + +let foo () = + let r = once_ {x = "hello"; y = "world"} in + ignore_once r.x; + ignore_once r; +[%%expect{| +Line 4, characters 14-15: +4 | ignore_once r; + ^ +Error: This value is used here, + but part of it is defined as once and has already been used: +Line 3, characters 14-17: +3 | ignore_once r.x; + ^^^ + +|}] + +let foo () = + let r = {x = "hello"; y = "world"} in + ignore (shared_id r.x); + (* doesn't work for normal fields *) + ignore (unique_id r) +[%%expect{| +Line 5, characters 20-21: +5 | ignore (unique_id r) + ^ +Error: This value is used here as unique, + but part of it has already been used: +Line 3, characters 20-23: +3 | ignore (shared_id r.x); + ^^^ + +|}] + +(* testing record update in the presense of modalities *) +let foo () = + let r = {x = "hello"; y = "world"} in + ignore (unique_ {r with x = "hello agin"}); + (* r.y has been used shared; in the following we will use r as unique *) + ignore (unique_id r) +[%%expect{| +val foo : unit -> unit = +|}] + +let foo () = + let r = {x = "hello"; y = "world"} in + ignore (unique_ {r with y = "world again"}); + (* r.x has been used unique; in the following we will use r as unique *) + ignore (unique_id r) +[%%expect{| +Line 5, characters 20-21: +5 | ignore (unique_id r) + ^ +Error: This value is used here, + but part of it has already been used as unique: +Line 3, characters 19-20: +3 | ignore (unique_ {r with y = "world again"}); + ^ + +|}] + +(* testing modalities in constructors *) +type r_global = R_global of string * global_ string +[%%expect{| +type r_global = R_global of string * global_ string +|}] + +let foo () = + let r = R_global ("hello", "world") in + let R_global (_, y) = r in + ignore (shared_id y); + (* the following is allowed, because using r uniquely implies using r.x + shared *) + ignore (unique_id r) +[%%expect{| +val foo : unit -> unit = +|}] + + (* Similarly for linearity *) +let foo () = + let r = once_ (R_global ("hello", "world")) in + let R_global (_, y) = r in + ignore_once y; + ignore_once r; +[%%expect{| +val foo : unit -> unit = +|}] + +let foo () = + let r = once_ (R_global ("hello", "world")) in + let R_global (x, _) = r in + ignore_once x; + ignore_once r; +[%%expect{| +Line 5, characters 14-15: +5 | ignore_once r; + ^ +Error: This value is used here, + but part of it is defined as once and has already been used: +Line 4, characters 14-15: +4 | ignore_once x; + ^ + +|}] + +let foo () = + let r = R_global ("hello", "world") in + let R_global (x, _) = r in + ignore (shared_id x); + (* doesn't work for normal fields *) + ignore (unique_id r) +[%%expect{| +Line 6, characters 20-21: +6 | ignore (unique_id r) + ^ +Error: This value is used here as unique, + but part of it has already been used: +Line 4, characters 20-21: +4 | ignore (shared_id x); + ^ + +|}] + +(* updating record at least reads the memory_address of the record *) +type r = {x : string; y : string} +let foo () = + let r = {x = "hello"; y = "world" } in + ignore (unique_id r); + ignore ({r with x = "hello again"; y = "world again"}) +[%%expect{| +type r = { x : string; y : string; } +Line 5, characters 9-56: +5 | ignore ({r with x = "hello again"; y = "world again"}) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +Warning 23 [useless-record-with]: all the fields are explicitly listed in this record: +the 'with' clause is useless. +Line 5, characters 11-12: +5 | ignore ({r with x = "hello again"; y = "world again"}) + ^ +Error: This value is read from here, but it has already been used as unique: +Line 4, characters 20-21: +4 | ignore (unique_id r); + ^ + +|}] + diff --git a/ocaml/testsuite/tests/typing-unique/unique_mod_class.ml b/ocaml/testsuite/tests/typing-unique/unique_mod_class.ml new file mode 100644 index 00000000000..c04890219b2 --- /dev/null +++ b/ocaml/testsuite/tests/typing-unique/unique_mod_class.ml @@ -0,0 +1,153 @@ +(* TEST + flags += "-extension unique" + * expect +*) + +(* This file tests the interaction between a module/class and its surrounding environment *) + +let unique_id (unique_ x) = ignore x + + +(* you cannot use env vars as unique in classes/objects *) +let texp_object () = + let x = "foo" in + object (self) + val bar = unique_ x + end; +[%%expect{| +val unique_id : unique_ 'a -> unit = +Line 8, characters 20-21: +8 | val bar = unique_ x + ^ +Error: Found a shared value where a unique value was expected + Hint: This identifier cannot be used uniquely, + because it is defined in a class. +|}] + +(* you can use env vars as shared and many, but they might collide with the external uses *) +let texp_object () = + let x = "foo" in + unique_id x; + object (self) + val bar = x + end; +[%%expect{| +Line 5, characters 12-13: +5 | val bar = x + ^ +Error: This value is used here, but it has already been used as unique: +Line 3, characters 12-13: +3 | unique_id x; + ^ + +|}] + +(* you are not allowed to use x uniquely inside the module *) +let texp_letmodule () = + let x = "foo" in + let module Bar = struct + let y = unique_ x + end + in + () +[%%expect{| +Line 4, characters 12-21: +4 | let y = unique_ x + ^^^^^^^^^ +Error: This value is shared but used as unique. +Hint: This value comes from outside the current module or class. +|}] + +(* you can use x as shared and many, but it might collide with external uses. *) +let texp_letmodule () = + let x = "foo" in + unique_id x; + let module Bar = struct + let y = x + end + in + () +[%%expect{| +Line 5, characters 12-13: +5 | let y = x + ^ +Error: This value is used here, but it has already been used as unique: +Line 3, characters 12-13: +3 | unique_id x; + ^ + +|}] + +let texp_open () = + let x = "foo" in + let open (struct let y = unique_ x end) in + () +[%%expect{| +Line 3, characters 27-36: +3 | let open (struct let y = unique_ x end) in + ^^^^^^^^^ +Error: This value is shared but used as unique. +Hint: This value comes from outside the current module or class. +|}] + +let texp_open () = + let x = "foo" in + unique_id x; + let open (struct let y = x end) in + () +[%%expect{| +Line 4, characters 27-28: +4 | let open (struct let y = x end) in + ^ +Error: This value is used here, but it has already been used as unique: +Line 3, characters 12-13: +3 | unique_id x; + ^ + +|}] + +module type bar = sig val y : string end + +let texp_pack () = + let x = "foo" in + let z = (module struct let y = unique_ x end : bar) in + () +[%%expect{| +module type bar = sig val y : string end +Line 5, characters 33-42: +5 | let z = (module struct let y = unique_ x end : bar) in + ^^^^^^^^^ +Error: This value is shared but used as unique. +Hint: This value comes from outside the current module or class. +|}] + +let texp_pack () = + let x = "foo" in + unique_id x; + let z = (module struct let y = x end : bar) in + () +[%%expect{| +Line 4, characters 33-34: +4 | let z = (module struct let y = x end : bar) in + ^ +Error: This value is used here, but it has already been used as unique: +Line 3, characters 12-13: +3 | unique_id x; + ^ + +|}] + +module M = struct + let foo = "hello" +end + + +let value_from_module () = + unique_id M.foo +[%%expect{| +module M : sig val foo : string end +Line 7, characters 12-17: +7 | unique_id M.foo + ^^^^^ +Error: Found a shared value where a unique value was expected +|}] \ No newline at end of file diff --git a/ocaml/testsuite/tests/typing-unique/unique_typedecl.ml b/ocaml/testsuite/tests/typing-unique/unique_typedecl.ml new file mode 100644 index 00000000000..ce0dbe038e8 --- /dev/null +++ b/ocaml/testsuite/tests/typing-unique/unique_typedecl.ml @@ -0,0 +1,69 @@ +(* TEST +flags += "-extension unique" +* expect *) + +(* This file tests how unique_ and once_ are interpreated in signatures + especially when currying is involved *) + +(* When a [unique_] argument appears in a function type with multiple arguments, +return modes are implicitly once_ until the final argument. *) +type equ_fn = unit +constraint +'a -> unique_ 'b -> 'c -> 'd -> 'e += 'a -> unique_ 'b -> once_ ('c -> once_ ('d -> 'e)) +[%%expect{| +type equ_fn = unit +|}] + +(* similar for once_ *) +type equ_fn = unit +constraint +'a -> once_ 'b -> 'c -> 'd -> 'e += 'a -> once_ 'b -> once_ ('c -> once_ ('d -> 'e)) +[%%expect{| +type equ_fn = unit +|}] + +(* uniqueness of closures are by default shared, + regardless of anything; unique would be better + except for some backward compatibility issues *) +type equ_fn = unit +constraint +'a -> unique_ 'b -> 'c -> 'd -> 'e += 'a -> unique_ 'b -> unique_ once_ ('c -> unique_ once_ ('d -> 'e)) +[%%expect{| +Lines 3-4, characters 0-68: +3 | 'a -> unique_ 'b -> 'c -> 'd -> 'e +4 | = 'a -> unique_ 'b -> unique_ once_ ('c -> unique_ once_ ('d -> 'e)) +Error: The type constraints are not consistent. + Type 'a -> unique_ 'b -> 'c -> 'd -> 'e is not compatible with type + 'a -> unique_ 'b -> unique_ once_ ('c -> unique_ once_ ('d -> 'e)) + Type unique_ 'b -> 'c -> 'd -> 'e is not compatible with type + unique_ 'b -> unique_ once_ ('c -> unique_ once_ ('d -> 'e)) +|}] + +type distinct_sarg = unit constraint unique_ int -> int = int -> int +[%%expect{| +Line 1, characters 37-68: +1 | type distinct_sarg = unit constraint unique_ int -> int = int -> int + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +Error: The type constraints are not consistent. + Type unique_ int -> int is not compatible with type int -> int +|}] +type distinct_sret = unit constraint int -> unique_ int = int -> int +[%%expect{| +Line 1, characters 37-68: +1 | type distinct_sret = unit constraint int -> unique_ int = int -> int + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +Error: The type constraints are not consistent. + Type int -> unique_ int is not compatible with type int -> int +|}] +type distinct_sarg_sret = unit constraint unique_ int -> int = unique_ int -> unique_ int +[%%expect{| +Line 1, characters 42-89: +1 | type distinct_sarg_sret = unit constraint unique_ int -> int = unique_ int -> unique_ int + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +Error: The type constraints are not consistent. + Type unique_ int -> int is not compatible with type + unique_ int -> unique_ int +|}] \ No newline at end of file diff --git a/ocaml/toplevel/native/topeval.ml b/ocaml/toplevel/native/topeval.ml index 70db4fd8587..3c44ba2ef49 100644 --- a/ocaml/toplevel/native/topeval.ml +++ b/ocaml/toplevel/native/topeval.ml @@ -134,7 +134,7 @@ let name_expression ~loc ~attrs sort exp = in let sg = [Sig_value(id, vd, Exported)] in let pat = - { pat_desc = Tpat_var(id, mknoloc name, Value_mode.global); + { pat_desc = Tpat_var(id, mknoloc name, Mode.Value.legacy); pat_loc = loc; pat_extra = []; pat_type = exp.exp_type; diff --git a/ocaml/toplevel/topdirs.ml b/ocaml/toplevel/topdirs.ml index dce7c05fb9c..b86be792dbe 100644 --- a/ocaml/toplevel/topdirs.ml +++ b/ocaml/toplevel/topdirs.ml @@ -258,7 +258,7 @@ let match_generic_printer_type desc path args printer_type = List.fold_right (fun ty_arg ty -> let arrow_desc = - Asttypes.Nolabel,Alloc_mode.global,Alloc_mode.global + Asttypes.Nolabel,Mode.Alloc.legacy,Mode.Alloc.legacy in Ctype.newty (Tarrow (arrow_desc, Ctype.newmono ty_arg, ty, commu_var ()))) @@ -419,7 +419,7 @@ let reg_show_prim name to_sig doc = let () = reg_show_prim "show_val" (fun env loc id lid -> - let _path, desc, _ = Env.lookup_value ~loc lid env in + let _path, desc, _, _ = Env.lookup_value ~loc lid env in [ Sig_value (id, desc, Exported) ] ) "Print the signature of the corresponding value." diff --git a/ocaml/typing/cmt2annot.ml b/ocaml/typing/cmt2annot.ml index 53ba2b1615e..b2d203c14f6 100644 --- a/ocaml/typing/cmt2annot.ml +++ b/ocaml/typing/cmt2annot.ml @@ -72,7 +72,7 @@ let rec iterator ~scope rebuild_env = and expr sub exp = begin match exp.exp_desc with - | Texp_ident (path, _, _, _) -> + | Texp_ident (path, _, _, _, _) -> let full_name = Path.name ~paren:Oprint.parenthesized_ident path in let env = if rebuild_env then diff --git a/ocaml/typing/ctype.ml b/ocaml/typing/ctype.ml index 46b1e3d72fd..e4713117cbe 100644 --- a/ocaml/typing/ctype.ml +++ b/ocaml/typing/ctype.ml @@ -518,8 +518,8 @@ let remove_mode_and_layout_variables ty = | Tvar { layout } -> Layout.default_to_value layout | Tunivar { layout } -> Layout.default_to_value layout | Tarrow ((_,marg,mret),targ,tret,_) -> - let _ = Alloc_mode.constrain_lower marg in - let _ = Alloc_mode.constrain_lower mret in + let _ = Mode.Alloc.constrain_legacy marg in + let _ = Mode.Alloc.constrain_legacy mret in go targ; go tret | _ -> iter_type_expr go ty end @@ -1554,8 +1554,8 @@ let instance_label fixed lbl = ) let prim_mode mvar = function - | Primitive.Prim_global, _ -> Alloc_mode.global - | Primitive.Prim_local, _ -> Alloc_mode.local + | Primitive.Prim_global, _ -> Mode.Locality.global + | Primitive.Prim_local, _ -> Mode.Locality.local | Primitive.Prim_poly, _ -> match mvar with | Some mvar -> mvar @@ -1563,12 +1563,17 @@ let prim_mode mvar = function let rec instance_prim_locals locals mvar macc finalret ty = match locals, get_desc ty with - | l :: locals, Tarrow ((lbl,_,mret),arg,ret,commu) -> - let marg = prim_mode (Some mvar) l in - let macc = Alloc_mode.join [marg; mret; macc] in + | l :: locals, Tarrow ((lbl,marg,mret),arg,ret,commu) -> + let marg = Mode.Alloc.with_locality (prim_mode (Some mvar) l) marg in + let macc = + Mode.Alloc.join [mret; + Mode.Alloc.close_over marg; + Mode.Alloc.partial_apply macc + ] + in let mret = match locals with - | [] -> finalret + | [] -> Mode.Alloc.with_locality finalret mret | _ :: _ -> macc (* curried arrow *) in let ret = instance_prim_locals locals mvar macc finalret ret in @@ -1581,10 +1586,10 @@ let instance_prim_mode (desc : Primitive.description) ty = let is_poly = function Primitive.Prim_poly, _ -> true | _ -> false in if is_poly desc.prim_native_repr_res || List.exists is_poly desc.prim_native_repr_args then - let mode = Alloc_mode.newvar () in + let mode = Mode.Locality.newvar () in let finalret = prim_mode (Some mode) desc.prim_native_repr_res in instance_prim_locals desc.prim_native_repr_args - mode Alloc_mode.global finalret ty, + mode Mode.Alloc.legacy finalret ty, Some mode else ty, None @@ -3072,9 +3077,9 @@ let unify_package env unify_list lv1 p1 fl1 lv2 p2 fl2 = && !package_subtype env p2 fl2 p1 fl1 then () else raise Not_found let unify_alloc_mode_for tr_exn a b = - match Alloc_mode.equate a b with + match Mode.Alloc.equate a b with | Ok () -> () - | Error () -> raise_unexplained_for tr_exn + | Error _ -> raise_unexplained_for tr_exn (* force unification in Reither when one side has a non-conjunctive type *) let rigid_variants = ref false @@ -3785,10 +3790,10 @@ exception Filter_arrow_failed of filter_arrow_failure type filtered_arrow = { ty_arg : type_expr; - arg_mode : alloc_mode; + arg_mode : Mode.Alloc.t; arg_sort : sort; ty_ret : type_expr; - ret_mode : alloc_mode; + ret_mode : Mode.Alloc.t; ret_sort : sort } @@ -3826,8 +3831,8 @@ let filter_arrow env t l ~force_tpoly = end in let ty_ret = newvar2 level l_res in - let arg_mode = Alloc_mode.newvar () in - let ret_mode = Alloc_mode.newvar () in + let arg_mode = Mode.Alloc.newvar () in + let ret_mode = Mode.Alloc.newvar () in let t' = newty2 ~level (Tarrow ((l, arg_mode, ret_mode), ty_arg, ty_ret, commu_ok)) in @@ -4330,13 +4335,13 @@ let relevant_pairs pairs v = let moregen_alloc_mode v a1 a2 = match match v with - | Invariant -> Alloc_mode.equate a1 a2 - | Covariant -> Alloc_mode.submode a1 a2 - | Contravariant -> Alloc_mode.submode a2 a1 + | Invariant -> Mode.Alloc.equate a1 a2 + | Covariant -> Mode.Alloc.submode a1 a2 + | Contravariant -> Mode.Alloc.submode a2 a1 | Bivariant -> Ok () with | Ok () -> () - | Error () -> raise_unexplained_for Moregen + | Error _ -> raise_unexplained_for Moregen let may_instantiate inst_nongen t1 = let level = get_level t1 in @@ -5307,11 +5312,11 @@ let has_constr_row' env t = let build_submode posi m = if posi then begin - let m', changed = Alloc_mode.newvar_below m in + let m', changed = Mode.Alloc.newvar_below m in let c = if changed then Changed else Unchanged in m', c end else begin - let m', changed = Alloc_mode.newvar_above m in + let m', changed = Mode.Alloc.newvar_above m in let c = if changed then Changed else Unchanged in m', c end @@ -5528,9 +5533,9 @@ let subtype_error ~env ~trace ~unification_trace = ~unification_trace)) let subtype_alloc_mode env trace a1 a2 = - match Alloc_mode.submode a1 a2 with + match Mode.Alloc.submode a1 a2 with | Ok () -> () - | Error () -> subtype_error ~env ~trace ~unification_trace:[] + | Error _ -> subtype_error ~env ~trace ~unification_trace:[] let rec subtype_rec env trace t1 t2 cstrs = if eq_type t1 t2 then cstrs else diff --git a/ocaml/typing/ctype.mli b/ocaml/typing/ctype.mli index 878fcc27b44..4360d998374 100644 --- a/ocaml/typing/ctype.mli +++ b/ocaml/typing/ctype.mli @@ -177,10 +177,10 @@ val instance_label: bool -> label_description -> type_expr list * type_expr * type_expr (* Same, for a label *) val prim_mode : - alloc_mode option -> (Primitive.mode * Primitive.native_repr) - -> alloc_mode + Mode.Locality.t option -> (Primitive.mode * Primitive.native_repr) + -> Mode.Locality.t val instance_prim_mode: - Primitive.description -> type_expr -> type_expr * alloc_mode option + Primitive.description -> type_expr -> type_expr * Mode.Locality.t option val apply: Env.t -> type_expr list -> type_expr -> type_expr list -> type_expr @@ -245,10 +245,10 @@ val unify_delaying_layout_checks : type filtered_arrow = { ty_arg : type_expr; - arg_mode : alloc_mode; + arg_mode : Mode.Alloc.t; arg_sort : sort; ty_ret : type_expr; - ret_mode : alloc_mode; + ret_mode : Mode.Alloc.t; ret_sort : sort } diff --git a/ocaml/typing/env.ml b/ocaml/typing/env.ml index 65da1fedab6..5401203fc64 100644 --- a/ocaml/typing/env.ml +++ b/ocaml/typing/env.ml @@ -155,7 +155,7 @@ type module_unbound_reason = type summary = Env_empty - | Env_value of summary * Ident.t * value_description * Types.value_mode + | Env_value of summary * Ident.t * value_description * Mode.Value.t | Env_type of summary * Ident.t * type_declaration | Env_extension of summary * Ident.t * extension_constructor | Env_module of summary * Ident.t * module_presence * module_declaration @@ -315,14 +315,34 @@ module TycompTbl = type empty = | -type escaping_context = - | Return - | Tailcall_argument +type closure_context = | Tailcall_function + | Tailcall_argument | Partial_application + | Return + +type escaping_context = + | Letop + | Probe + | Class + | Module + | Lazy + +type shared_context = + | For_loop + | While_loop + | Letop + | Closure + | Comprehension + | Class + | Module + | Probe + | Lazy type value_lock = - | Lock of { mode : Alloc_mode.t; escaping_context : escaping_context option } + | Escape_lock of escaping_context + | Share_lock of shared_context + | Closure_lock of closure_context option * Mode.Locality.t * Mode.Linearity.t | Region_lock | Exclave_lock | Unboxed_lock (* to prevent capture of terms with non-value types *) @@ -615,7 +635,7 @@ and address_lazy = (address_unforced, address) Lazy_backtrack.t and value_data = { vda_description : Subst.Lazy.value_description; vda_address : address_lazy; - vda_mode : Value_mode.t; + vda_mode : Mode.Value.t; vda_shape : Shape.t } and value_entry = @@ -672,6 +692,10 @@ type unbound_value_hint = | No_hint | Missing_rec of Location.t +type closure_error = + | Locality of closure_context option + | Linearity + type lookup_error = | Unbound_value of Longident.t * unbound_value_hint | Unbound_type of Longident.t @@ -693,7 +717,9 @@ type lookup_error = | Generative_used_as_applicative of Longident.t | Illegal_reference_to_recursive_module | Cannot_scrape_alias of Longident.t * Path.t - | Local_value_used_in_closure of Longident.t * escaping_context option + | Local_value_escaping of Longident.t * escaping_context + | Once_value_used_in of Longident.t * shared_context + | Value_used_in_closure of Longident.t * closure_error | Local_value_used_in_exclave of Longident.t | Non_value_used_in_object of Longident.t * type_expr * Layout.Violation.t @@ -1779,7 +1805,7 @@ let rec components_of_module_maker let vda_shape = Shape.proj cm_shape (Shape.Item.value id) in let vda = { vda_description = decl'; vda_address = addr; - vda_mode = Value_mode.global; vda_shape } + vda_mode = Mode.Value.legacy; vda_shape } in c.comp_values <- NameMap.add (Ident.name id) vda c.comp_values; | Sig_type(id, decl, _, _) -> @@ -2230,7 +2256,7 @@ let add_functor_arg id env = functor_args = Ident.add id () env.functor_args; summary = Env_functor_arg (env.summary, id)} -let add_value_lazy ?check ?shape ?(mode = Value_mode.global) id desc env = +let add_value_lazy ?check ?shape ?(mode = Mode.Value.legacy) id desc env = let addr = value_declaration_address env id desc in let shape = shape_or_leaf desc.Subst.Lazy.val_uid shape in store_value ?check mode id addr desc shape env @@ -2303,7 +2329,7 @@ let enter_value ?check name desc env = let id = Ident.create_local name in let desc = Subst.Lazy.of_value_description desc in let addr = value_declaration_address env id desc in - let env = store_value ?check Value_mode.global id addr desc (Shape.leaf desc.val_uid) env in + let env = store_value ?check (Mode.Value.legacy) id addr desc (Shape.leaf desc.val_uid) env in (id, env) let enter_type ~scope name info env = @@ -2342,8 +2368,16 @@ let enter_cltype ~scope name desc env = let enter_module ~scope ?arg s presence mty env = enter_module_declaration ~scope ?arg s presence (md mty) env -let add_lock ?escaping_context mode env = - let lock = Lock { mode; escaping_context } in +let add_escape_lock escaping_context env = + let lock = Escape_lock escaping_context in + { env with values = IdTbl.add_lock lock env.values } + +let add_share_lock shared_context env = + let lock = Share_lock shared_context in + { env with values = IdTbl.add_lock lock env.values } + +let add_closure_lock ?closure_context locality linearity env = + let lock = Closure_lock (closure_context, locality, linearity) in { env with values = IdTbl.add_lock lock env.values } let add_region_lock env = @@ -2915,38 +2949,96 @@ let lookup_ident_module (type a) (load : a load) ~errors ~use ~loc s env = end end +let escape_mode ~errors ~env ~loc id vmode escaping_context = + match + Mode.Regionality.submode + (Mode.Value.locality vmode) + (Mode.Regionality.global) + with + | Ok () -> () + | Error _ -> + may_lookup_error errors loc env + (Local_value_escaping (id, escaping_context)) + +let share_mode ~errors ~env ~loc id vmode shared_context = + match + Mode.Linearity.submode + (Mode.Value.linearity vmode) + Mode.Linearity.many + with + | Error _ -> + may_lookup_error errors loc env + (Once_value_used_in (id, shared_context)) + | Ok () -> Mode.Value.with_uniqueness Mode.Uniqueness.shared vmode + +let closure_mode ~errors ~env ~loc id vmode closure_context locality linearity = + begin + match + Mode.Regionality.submode + (Mode.Value.locality vmode) + (Mode.Regionality.of_locality locality) + with + | Error _ -> + may_lookup_error errors loc env + (Value_used_in_closure (id, Locality closure_context)) + | Ok () -> () + end; + begin + match Mode.Linearity.submode (Mode.Value.linearity vmode) linearity with + | Error _ -> + may_lookup_error errors loc env + (Value_used_in_closure (id, Linearity)) + | Ok () -> () + end; + let uniqueness = + Mode.Uniqueness.join + [ Mode.Value.uniqueness vmode; + Mode.Linearity.to_dual linearity] + in + Mode.Value.with_uniqueness uniqueness vmode + +let exclave_mode ~errors ~env ~loc id vmode = + match + Mode.Regionality.submode + (Mode.Value.locality vmode) + Mode.Regionality.regional +with +| Ok () -> Mode.Value.regional_to_local vmode +| Error _ -> + may_lookup_error errors loc env + (Local_value_used_in_exclave id) + let lock_mode ~errors ~loc env id vda locks = let vmode = vda.vda_mode in List.fold_left - (fun (vmode, must_box) lock -> + (fun (vmode, must_lock, reason) lock -> match lock with - | Region_lock -> Value_mode.local_to_regional vmode, must_box - | Lock {mode; escaping_context} -> - begin - match Value_mode.submode vmode (Value_mode.of_alloc mode) with - | Ok () -> vmode, must_box - | Error _ -> - may_lookup_error errors loc env - (Local_value_used_in_closure (id, escaping_context)) - end + | Region_lock -> (Mode.Value.local_to_regional vmode, must_lock, reason) + | Escape_lock escaping_context -> + escape_mode ~errors ~env ~loc id vmode escaping_context; + (vmode, must_lock, reason) + | Share_lock shared_context -> + let vmode = share_mode ~errors ~env ~loc id vmode shared_context in + vmode, must_lock, Some shared_context + | Closure_lock (closure_context, locality, linearity) -> + let vmode = + closure_mode ~errors ~env ~loc id vmode closure_context + locality linearity + in + vmode, must_lock, reason | Exclave_lock -> - begin - match Value_mode.submode vmode Value_mode.regional with - | Ok () -> Value_mode.regional_to_local vmode, must_box - | Error _ -> - may_lookup_error errors loc env - (Local_value_used_in_exclave id); - end - | Unboxed_lock -> vmode, true - ) - (vmode, false) locks + let vmode = exclave_mode ~errors ~env ~loc id vmode in + vmode, must_lock, reason + | Unboxed_lock -> + vmode, true, reason + ) (vmode, false, None) locks let lookup_ident_value ~errors ~use ~loc name env = match IdTbl.find_name_and_modes wrap_value ~mark:use name env.values with | (path, locks, Val_bound vda) -> - let mode, must_box = lock_mode ~errors ~loc env (Lident name) vda locks in + let mode, must_box, reasons = lock_mode ~errors ~loc env (Lident name) vda locks in use_value ~use ~loc path vda; - path, vda.vda_description, mode, must_box + path, vda.vda_description, mode, must_box, reasons | (_, _, Val_unbound reason) -> report_value_unbound ~errors ~loc env reason (Lident name) | exception Not_found -> @@ -3225,8 +3317,8 @@ let lookup_value_lazy ~errors ~use ~loc lid env = | Lident s -> lookup_ident_value ~errors ~use ~loc s env | Ldot(l, s) -> let path, desc = lookup_dot_value ~errors ~use ~loc l s env in - let mode = Value_mode.global in - path, desc, mode, false + let mode = Mode.Value.legacy in + path, desc, mode, false, None | Lapply _ -> assert false let lookup_type_full ~errors ~use ~loc lid env = @@ -3317,7 +3409,9 @@ let find_module_by_name lid env = let find_value_by_name lid env = let loc = Location.(in_file !input_name) in - let path, desc, _, _ = lookup_value_lazy ~errors:false ~use:false ~loc lid env in + let path, desc, _, _, _ = + lookup_value_lazy ~errors:false ~use:false ~loc lid env + in path, Subst.Lazy.force_value_description desc let find_type_by_name lid env = @@ -3354,7 +3448,7 @@ let lookup_module ?(use=true) ~loc lid env = let lookup_value ?(use=true) ~loc lid env = check_value_name (Longident.last lid) loc; - let path, desc, mode, must_box = + let path, desc, mode, must_box, reasons = lookup_value_lazy ~errors:true ~use ~loc lid env in let vd = Subst.Lazy.force_value_description desc in @@ -3366,7 +3460,7 @@ let lookup_value ?(use=true) ~loc lid env = | Result.Error err -> lookup_error loc env (Non_value_used_in_object (lid, vd.val_type, err)) end; - path, vd, mode + path, vd, mode, reasons let lookup_type ?(use=true) ~loc lid env = lookup_type ~errors:true ~use ~loc lid env @@ -3715,6 +3809,26 @@ let extract_instance_variables env = | Val_ivar _ -> name :: acc | _ -> acc) None env [] +let string_of_escaping_context : escaping_context -> string = + function + | Letop -> "a letop" + | Probe -> "a probe" + | Class -> "a class" + | Module -> "a module" + | Lazy -> "a lazy expression" + +let string_of_shared_context = + function + | For_loop -> "a for loop" + | While_loop -> "a while loop" + | Letop -> "a letop" + | Closure -> "a closure that is not once" + | Comprehension -> "a comprehension" + | Class -> "a class" + | Module -> "a module" + | Probe -> "a probe" + | Lazy -> "a lazy expression" + let report_lookup_error _loc env ppf = function | Unbound_value(lid, hint) -> begin fprintf ppf "Unbound value %a" !print_longident lid; @@ -3822,13 +3936,28 @@ let report_lookup_error _loc env ppf = function fprintf ppf "The module %a is an alias for module %a, which %s" !print_longident lid !print_path p cause - | Local_value_used_in_closure (lid, context) -> + | Local_value_escaping (lid, context) -> fprintf ppf "@[The value %a is local, so cannot be used \ - inside a closure that might escape@]" - !print_longident lid; - begin match context with - | Some Tailcall_argument -> + inside %s.@]" + !print_longident lid (string_of_escaping_context context); + | Once_value_used_in (lid, context) -> + fprintf ppf + "@[The value %a is once, so cannot be used \ + inside %s@]" + !print_longident lid (string_of_shared_context context) + | Value_used_in_closure (lid, error) -> + let e0, e1 = + match error with + | Locality _ -> "local", "might escape" + | Linearity -> "once", "is many" + in + fprintf ppf + "@[The value %a is %s, so cannot be used \ + inside a closure that %s.@]" + !print_longident lid e0 e1; + begin match error with + | Locality (Some Tailcall_argument) -> fprintf ppf "@.@[Hint: The closure might escape because it \ is an argument to a tail call@]" | _ -> () diff --git a/ocaml/typing/env.mli b/ocaml/typing/env.mli index ea2e6a1c11e..01445e89dea 100644 --- a/ocaml/typing/env.mli +++ b/ocaml/typing/env.mli @@ -35,7 +35,7 @@ type module_unbound_reason = type summary = Env_empty - | Env_value of summary * Ident.t * value_description * Types.value_mode + | Env_value of summary * Ident.t * value_description * Mode.Value.t | Env_type of summary * Ident.t * type_declaration | Env_extension of summary * Ident.t * extension_constructor | Env_module of summary * Ident.t * module_presence * module_declaration @@ -178,11 +178,33 @@ type unbound_value_hint = | No_hint | Missing_rec of Location.t -type escaping_context = - | Return - | Tailcall_argument +type closure_context = | Tailcall_function + | Tailcall_argument | Partial_application + | Return + +type escaping_context = + | Letop + | Probe + | Class + | Module + | Lazy + +type shared_context = + | For_loop + | While_loop + | Letop + | Closure + | Comprehension + | Class + | Module + | Probe + | Lazy + +type closure_error = + | Locality of closure_context option + | Linearity type lookup_error = | Unbound_value of Longident.t * unbound_value_hint @@ -205,7 +227,9 @@ type lookup_error = | Generative_used_as_applicative of Longident.t | Illegal_reference_to_recursive_module | Cannot_scrape_alias of Longident.t * Path.t - | Local_value_used_in_closure of Longident.t * escaping_context option + | Local_value_escaping of Longident.t * escaping_context + | Once_value_used_in of Longident.t * shared_context + | Value_used_in_closure of Longident.t * closure_error | Local_value_used_in_exclave of Longident.t | Non_value_used_in_object of Longident.t * type_expr * Layout.Violation.t @@ -223,9 +247,16 @@ val lookup_error: Location.t -> t -> lookup_error -> 'a [lookup_foo ~use:true] exactly one time -- otherwise warnings may be emitted the wrong number of times. *) +(** The returned shared_context looks strange, but useful for error printing + when the returned uniqueness mode is too high because of some linearity_lock + during lookup, and fail to satisfy expected_mode in the caller. + + TODO: A better approach is passing down the expected mode to this function + as argument, so that sub-moding error is triggered at the place where error + hints are immediately available. *) val lookup_value: ?use:bool -> loc:Location.t -> Longident.t -> t -> - Path.t * value_description * Types.value_mode + Path.t * value_description * Mode.Value.t * shared_context option val lookup_type: ?use:bool -> loc:Location.t -> Longident.t -> t -> Path.t * type_declaration @@ -305,10 +336,10 @@ val make_copy_of_types: t -> (t -> t) (* Insertion by identifier *) val add_value_lazy: - ?check:(string -> Warnings.t) -> ?mode:(Types.value_mode) -> + ?check:(string -> Warnings.t) -> ?mode:(Mode.Value.t) -> Ident.t -> Subst.Lazy.value_description -> t -> t val add_value: - ?check:(string -> Warnings.t) -> ?mode:(Types.value_mode) -> + ?check:(string -> Warnings.t) -> ?mode:(Mode.Value.t) -> Ident.t -> Types.value_description -> t -> t val add_type: check:bool -> Ident.t -> type_declaration -> t -> t val add_extension: @@ -403,7 +434,14 @@ val enter_unbound_module : string -> module_unbound_reason -> t -> t (* Lock the environment *) -val add_lock : ?escaping_context:escaping_context -> Types.alloc_mode -> t -> t +val add_escape_lock : escaping_context -> t -> t + +(** `once` variables beyond the share lock cannot be accessed. Moreover, + `unique` variables beyond the lock can still be accessed, but will be + relaxed to `shared` *) +val add_share_lock : shared_context -> t -> t +val add_closure_lock : ?closure_context:closure_context -> Mode.Locality.t + -> Mode.Linearity.t -> t -> t val add_region_lock : t -> t val add_exclave_lock : t -> t val add_unboxed_lock : t -> t diff --git a/ocaml/typing/includecore.ml b/ocaml/typing/includecore.ml index 6a1b6cee289..533634d7a14 100644 --- a/ocaml/typing/includecore.ml +++ b/ocaml/typing/includecore.ml @@ -98,7 +98,9 @@ let value_descriptions ~loc env name let ty1_global, _ = Ctype.instance_prim_mode p1 vd1.val_type in let ty2_global = let ty2, mode2 = Ctype.instance_prim_mode p2 vd2.val_type in - Option.iter Alloc_mode.make_global_exn mode2; + Option.iter + (fun m -> Mode.Locality.submode_exn m Mode.Locality.global) + mode2; ty2 in (try Ctype.moregeneral env true ty1_global ty2_global @@ -106,7 +108,9 @@ let value_descriptions ~loc env name let ty1_local, _ = Ctype.instance_prim_mode p1 vd1.val_type in let ty2_local = let ty2, mode2 = Ctype.instance_prim_mode p2 vd2.val_type in - Option.iter Alloc_mode.make_local_exn mode2; + Option.iter + (fun m -> Mode.Locality.submode_exn Mode.Locality.local m) + mode2; ty2 in (try Ctype.moregeneral env true ty1_local ty2_local diff --git a/ocaml/typing/mode.ml b/ocaml/typing/mode.ml new file mode 100644 index 00000000000..f56ad750c17 --- /dev/null +++ b/ocaml/typing/mode.ml @@ -0,0 +1,1139 @@ +(**************************************************************************) +(* *) +(* OCaml *) +(* *) +(* Xavier Leroy and Jerome Vouillon, projet Cristal, INRIA Rocquencourt *) +(* *) +(* Copyright 1996 Institut National de Recherche en Informatique et *) +(* en Automatique. *) +(* *) +(* All rights reserved. This file is distributed under the terms of *) +(* the GNU Lesser General Public License version 2.1, with the *) +(* special exception on linking described in the file LICENSE. *) +(* *) +(**************************************************************************) + +type 'a var = { + mutable upper : 'a; + mutable lower : 'a; + mutable vlower : 'a var list; + mutable mark : bool; + mvid : int; +} + +type changes = + | Cnil : changes + | Cupper : 'a var * 'a * changes -> changes + | Clower : 'a var * 'a * changes -> changes + | Cvlower : 'a var * 'a var list * changes -> changes + +let set_lower ~log v lower = + log := Clower (v, v.lower, !log); + v.lower <- lower + +let set_upper ~log v upper = + log := Cupper (v, v.upper, !log); + v.upper <- upper + +let set_vlower ~log v vlower = + log := Cvlower (v, v.vlower, !log); + v.vlower <- vlower + +let rec undo_changes = function + | Cnil -> () + | Cupper (v, upper, rest) -> + v.upper <- upper; + undo_changes rest + | Clower (v, lower, rest) -> + v.lower <- lower; + undo_changes rest + | Cvlower (v, vlower, rest) -> + v.vlower <- vlower; + undo_changes rest + +let change_log : (changes -> unit) ref = ref (fun _ -> ()) + +let is_not_nil = function + | Cnil -> false + | Cupper _ | Clower _ | Cvlower _ -> true + +let log_changes changes = if is_not_nil changes then !change_log changes + +type ('a, 'b) const_or_var = Const of 'a | Var of 'b + +type ('loc, 'u, 'lin) modes = { + locality : 'loc; + uniqueness : 'u; + linearity : 'lin; +} + +module type Lattice = sig + type t + + val min : t + val max : t + val eq : t -> t -> bool + val le : t -> t -> bool + val join : t -> t -> t + val meet : t -> t -> t + val print : Format.formatter -> t -> unit +end + +module type Solver = sig + type const + type t + type var + + val of_const : const -> t + val min_mode : t + val max_mode : t + val is_const : t -> bool + val submode : t -> t -> (unit, unit) Result.t + val submode_exn : t -> t -> unit + val equate : t -> t -> (unit, unit) Result.t + val constrain_upper : t -> const + val newvar : unit -> t + val newvar_below : t -> t * bool + val newvar_above : t -> t * bool + val join : t list -> t + val meet : t list -> t + val constrain_lower : t -> const + val const_or_var : t -> (const, var) const_or_var + val check_const : t -> const option + val print_var : Format.formatter -> var -> unit + val print : Format.formatter -> t -> unit + val print' : ?verbose:bool -> ?label:string -> Format.formatter -> t -> unit +end + +module Solver (L : Lattice) : Solver with type const := L.t = struct + type nonrec var = L.t var + type t = Amode of L.t | Amodevar of var + + let next_id = ref (-1) + + let fresh () = + incr next_id; + { upper = L.max; lower = L.min; vlower = []; mvid = !next_id; mark = false } + + exception NotSubmode + + let of_const c = Amode c + let min_mode = Amode L.min + let max_mode = Amode L.max + let is_const = function Amode _ -> true | Amodevar _ -> false + + let submode_cv ~log m v = + if L.le m v.lower then () + else if not (L.le m v.upper) then raise NotSubmode + else + let m = L.join v.lower m in + set_lower ~log v m; + if L.eq m v.upper then set_vlower ~log v [] + + let rec submode_vc ~log v m = + if L.le v.upper m then () + else if not (L.le v.lower m) then raise NotSubmode + else + let m = L.meet v.upper m in + set_upper ~log v m; + v.vlower + |> List.iter (fun a -> + (* a <= v <= m *) + submode_vc ~log a m; + set_lower ~log v (L.join v.lower a.lower)); + if L.eq v.lower m then set_vlower ~log v [] + + let submode_vv ~log a b = + (* Printf.printf " %a <= %a\n" pp_v a pp_v b; *) + if L.le a.upper b.lower then () + else if a == b || List.memq a b.vlower then () + else ( + submode_vc ~log a b.upper; + set_vlower ~log b (a :: b.vlower); + submode_cv ~log a.lower b) + + let rec all_equal v = function + | [] -> true + | v' :: rest -> if v == v' then all_equal v rest else false + + let join_vc v m = + if L.le v.upper m then Amode m + else if L.le m v.lower then Amodevar v + else + let log = ref Cnil in + let v' = fresh () in + submode_cv ~log m v'; + submode_vv ~log v v'; + log_changes !log; + Amodevar v' + + let join_vsc vs m = + match vs with + | [] -> Amode m + | v :: rest -> + if all_equal v rest then join_vc v m + else + let log = ref Cnil in + let v = fresh () in + submode_cv ~log m v; + List.iter (fun v' -> submode_vv ~log v' v) vs; + log_changes !log; + Amodevar v + + let meet_vc v m = + if L.le m v.lower then Amode m + else if L.le v.upper m then Amodevar v + else + let log = ref Cnil in + let v' = fresh () in + submode_vc ~log v' m; + submode_vv ~log v' v; + log_changes !log; + Amodevar v' + + let meet_vsc vs m = + match vs with + | [] -> Amode m + | v :: rest -> + if all_equal v rest then meet_vc v m + else + let log = ref Cnil in + let v = fresh () in + submode_vc ~log v m; + List.iter (fun v' -> submode_vv ~log v v') vs; + log_changes !log; + Amodevar v + + let submode a b = + let log = ref Cnil in + match + match (a, b) with + | Amode a, Amode b -> if not (L.le a b) then raise NotSubmode + | Amodevar v, Amode c -> submode_vc ~log v c + | Amode c, Amodevar v -> submode_cv ~log c v + | Amodevar a, Amodevar b -> submode_vv ~log a b + with + | () -> + log_changes !log; + Ok () + | exception NotSubmode -> + undo_changes !log; + Error () + + let submode_exn t1 t2 = + match submode t1 t2 with + | Ok () -> () + | Error () -> invalid_arg "submode_exn" + + let equate a b = + match (submode a b, submode b a) with + | Ok (), Ok () -> Ok () + | Error (), _ | _, Error () -> Error () + + let constrain_upper = function + | Amode m -> m + | Amodevar v -> + submode_exn (Amode v.upper) (Amodevar v); + v.upper + + let newvar () = Amodevar (fresh ()) + + let newvar_below = function + | Amode c when L.eq c L.min -> (min_mode, false) + | m -> + let v = newvar () in + submode_exn v m; + (v, true) + + let newvar_above = function + | Amode c when L.eq c L.max -> (max_mode, false) + | m -> + let v = newvar () in + submode_exn m v; + (v, true) + + let join ms = + let rec aux vars const = function + | [] -> join_vsc vars const + | Amode c :: _ when L.eq c L.max -> max_mode + | Amode c :: ms -> aux vars (L.join c const) ms + | Amodevar v :: ms -> aux (v :: vars) const ms + in + aux [] L.min ms + + let meet ms = + let rec aux vars const = function + | [] -> meet_vsc vars const + | Amode c :: _ when L.eq c L.min -> min_mode + | Amode c :: ms -> aux vars (L.join c const) ms + | Amodevar v :: ms -> aux (v :: vars) const ms + in + aux [] L.max ms + + exception Became_constant + + let compress_vlower v = + let nmarked = ref 0 in + let mark v' = + assert (not v'.mark); + v'.mark <- true; + incr nmarked + in + let unmark v' = + assert v'.mark; + v'.mark <- false; + decr nmarked + in + let new_lower = ref v.lower in + let new_vlower = ref v.vlower in + (* Ensure that each transitive lower bound of v + is a direct lower bound of v *) + let rec trans v' = + if L.le v'.upper !new_lower then () + else if v'.mark then () + else ( + mark v'; + new_vlower := v' :: !new_vlower; + trans_low v') + and trans_low v' = + assert (v != v'); + if not (L.le v'.lower v.upper) then + Misc.fatal_error "compress_vlower: invalid bounds"; + if not (L.le v'.lower !new_lower) then ( + new_lower := L.join !new_lower v'.lower; + if !new_lower = v.upper then + (* v is now a constant, no need to keep computing bounds *) + raise Became_constant); + List.iter trans v'.vlower + in + mark v; + List.iter mark v.vlower; + let became_constant = + match List.iter trans_low v.vlower with + | () -> false + | exception Became_constant -> true + in + List.iter unmark !new_vlower; + unmark v; + assert (!nmarked = 0); + if became_constant then new_vlower := []; + if !new_lower != v.lower || !new_vlower != v.vlower then ( + let log = ref Cnil in + set_lower ~log v !new_lower; + set_vlower ~log v !new_vlower; + log_changes !log) + + let constrain_lower = function + | Amode m -> m + | Amodevar v -> + compress_vlower v; + submode_exn (Amodevar v) (Amode v.lower); + v.lower + + let const_or_var = function + | Amode m -> Const m + | Amodevar v -> + compress_vlower v; + if L.eq v.lower v.upper then Const v.lower else Var v + + let check_const a = + match const_or_var a with Const m -> Some m | Var _ -> None + + let print_var_id ppf v = Format.fprintf ppf "?%i" v.mvid + + let print_var ppf v = + if v.vlower = [] then print_var_id ppf v + else + Format.fprintf ppf "%a[> %a]" print_var_id v + (Format.pp_print_list print_var_id) + v.vlower + + let print' ?(verbose = true) ?label ppf a = + match const_or_var a with + | Const m -> L.print ppf m + | Var v -> + (match label with None -> () | Some s -> Format.fprintf ppf "%s:" s); + if verbose then print_var ppf v else Format.fprintf ppf "?" + + let print ppf a = print' ~verbose:true ?label:None ppf a +end + +module type DualLattice = sig + include Lattice + + type dual + + val to_dual : t -> dual + val of_dual : dual -> t +end + +module type DualSolver = sig + include Solver + + type dual + + val to_dual : t -> dual + val of_dual : dual -> t +end + +module DualSolver + (Dual : Lattice) + (Solver : Solver with type const := Dual.t) + (L : DualLattice with type dual := Dual.t) : + DualSolver with type const := L.t and type dual := Solver.t = struct + type var = Solver.var + type t = Solver.t + + let of_const c = Solver.of_const (L.to_dual c) + let is_const a = Solver.is_const a + let submode a b = Solver.submode b a + let submode_exn a b = Solver.submode_exn b a + let equate a b = Solver.equate b a + let constrain_upper a = L.of_dual (Solver.constrain_lower a) + let constrain_lower a = L.of_dual (Solver.constrain_upper a) + let to_dual a = a + let of_dual a = a + let min_mode = of_dual Solver.max_mode + let max_mode = of_dual Solver.min_mode + let newvar () = Solver.newvar () + + let newvar_below a = + let a', changed = Solver.newvar_above a in + (a', changed) + + let newvar_above a = + let a', changed = Solver.newvar_below a in + (a', changed) + + let join ts = Solver.meet ts + let meet ts = Solver.join ts + + let const_or_var a = + match Solver.const_or_var a with + | Const c -> Const (L.of_dual c) + | Var v -> Var v + + let check_const a = + match Solver.check_const a with + | Some m -> Some (L.of_dual m) + | None -> None + + let print_var = Solver.print_var + + let print' ?(verbose = true) ?label ppf a = + match Solver.const_or_var a with + | Const m -> L.print ppf (L.of_dual m) + | Var v -> + (match label with None -> () | Some s -> Format.fprintf ppf "%s:" s); + if verbose then + (* caret stands for dual *) + Format.fprintf ppf "^%a" print_var v + else Format.fprintf ppf "?" + + let print ppf m = print' ~verbose:true ?label:None ppf m +end + +module Locality = struct + module Const = struct + type t = Global | Local + + let min = Global + let max = Local + let legacy = Global + + let le a b = + match (a, b) with Global, _ | _, Local -> true | Local, Global -> false + + let eq a b = + match (a, b) with + | Global, Global | Local, Local -> true + | Local, Global | Global, Local -> false + + let join a b = + match (a, b) with + | Local, _ | _, Local -> Local + | Global, Global -> Global + + let meet a b = + match (a, b) with + | Global, _ | _, Global -> Global + | Local, Local -> Local + + let print ppf = function + | Global -> Format.fprintf ppf "Global" + | Local -> Format.fprintf ppf "Local" + end + + include Solver (Const) + + let global = of_const Const.Global + let local = of_const Const.Local + let legacy = global + let constrain_legacy = constrain_lower +end + +module Regionality = struct + module Const = struct + type t = Global | Regional | Local + + let r_as_l : t -> Locality.Const.t = function + | Local | Regional -> Local + | Global -> Global + + let r_as_g : t -> Locality.Const.t = function + | Local -> Local + | Regional | Global -> Global + + let of_localities ~(r_as_l : Locality.Const.t) ~(r_as_g : Locality.Const.t) + = + match (r_as_l, r_as_g) with + | Global, Global -> Global + | Global, Local -> assert false + | Local, Global -> Regional + | Local, Local -> Local + + let print ppf t = + let s = + match t with + | Global -> "Global" + | Regional -> "Regional" + | Local -> "Local" + in + Format.fprintf ppf "%s" s + end + + type t = { r_as_l : Locality.t; r_as_g : Locality.t } + + let of_locality l = { r_as_l = l; r_as_g = l } + + let of_const c = + let r_as_l, r_as_g = + match c with + | Const.Global -> (Locality.global, Locality.global) + | Const.Regional -> (Locality.local, Locality.global) + | Const.Local -> (Locality.local, Locality.local) + in + { r_as_l; r_as_g } + + let local = of_const Local + let regional = of_const Regional + let global = of_const Global + let legacy = global + + let max_mode = + let r_as_l = Locality.max_mode in + let r_as_g = Locality.max_mode in + { r_as_l; r_as_g } + + let min_mode = + let r_as_l = Locality.min_mode in + let r_as_g = Locality.min_mode in + { r_as_l; r_as_g } + + let local_to_regional t = { t with r_as_g = Locality.global } + let regional_to_global t = { t with r_as_l = t.r_as_g } + let regional_to_local t = { t with r_as_g = t.r_as_l } + let global_to_regional t = { t with r_as_l = Locality.local } + let regional_to_global_locality t = t.r_as_g + let regional_to_local_locality t = t.r_as_l + + type error = [ `Regionality | `Locality ] + + let submode t1 t2 = + match Locality.submode t1.r_as_l t2.r_as_l with + | Error () -> Error `Regionality + | Ok () -> ( + match Locality.submode t1.r_as_g t2.r_as_g with + | Error () -> Error `Locality + | Ok () as ok -> ok) + + let equate a b = + match (submode a b, submode b a) with + | Ok (), Ok () -> Ok () + | Error e, _ | _, Error e -> Error e + + let join ts = + let r_as_l = Locality.join (List.map (fun t -> t.r_as_l) ts) in + let r_as_g = Locality.join (List.map (fun t -> t.r_as_g) ts) in + { r_as_l; r_as_g } + + let constrain_upper t = + let r_as_l = Locality.constrain_upper t.r_as_l in + let r_as_g = Locality.constrain_upper t.r_as_g in + Const.of_localities ~r_as_l ~r_as_g + + let constrain_lower t = + let r_as_l = Locality.constrain_lower t.r_as_l in + let r_as_g = Locality.constrain_lower t.r_as_g in + Const.of_localities ~r_as_l ~r_as_g + + let newvar () = + let r_as_l = Locality.newvar () in + let r_as_g, _ = Locality.newvar_below r_as_l in + { r_as_l; r_as_g } + + let newvar_below t = + let r_as_l, changed1 = Locality.newvar_below t.r_as_l in + let r_as_g, changed2 = Locality.newvar_below t.r_as_g in + Locality.submode_exn r_as_g r_as_l; + ({ r_as_l; r_as_g }, changed1 || changed2) + + let newvar_above t = + let r_as_l, changed1 = Locality.newvar_above t.r_as_l in + let r_as_g, changed2 = Locality.newvar_above t.r_as_g in + Locality.submode_exn r_as_g r_as_l; + ({ r_as_l; r_as_g }, changed1 || changed2) + + let check_const t = + match Locality.check_const t.r_as_l with + | None -> None + | Some r_as_l -> ( + match Locality.check_const t.r_as_g with + | None -> None + | Some r_as_g -> Some (Const.of_localities ~r_as_l ~r_as_g)) + + let print' ?(verbose = true) ?label ppf t = + match check_const t with + | Some l -> Const.print ppf l + | None -> ( + match label with + | None -> () + | Some l -> + Format.fprintf ppf "%s: " l; + Format.fprintf ppf "r_as_l=%a r_as_g=%a" + (Locality.print' ~verbose ?label:None) + t.r_as_l + (Locality.print' ~verbose ?label:None) + t.r_as_g) + + let print ppf m = print' ~verbose:true ?label:None ppf m +end + +module Uniqueness = struct + module Const = struct + type t = Unique | Shared + + let legacy = Shared + let min = Unique + let max = Shared + + let le a b = + match (a, b) with + | Unique, _ | _, Shared -> true + | Shared, Unique -> false + + let eq a b = + match (a, b) with + | Unique, Unique | Shared, Shared -> true + | Shared, Unique | Unique, Shared -> false + + let join a b = + match (a, b) with + | Shared, _ | _, Shared -> Shared + | Unique, Unique -> Unique + + let meet a b = + match (a, b) with + | Unique, _ | _, Unique -> Unique + | Shared, Shared -> Shared + + let print ppf = function + | Shared -> Format.fprintf ppf "Shared" + | Unique -> Format.fprintf ppf "Unique" + end + + include Solver (Const) + + let constrain_legacy = constrain_upper + let unique = of_const Const.Unique + let shared = of_const Const.Shared + let legacy = shared +end + +module Linearity = struct + module Const = struct + type t = Many | Once + + let legacy = Many + let min = Many + let max = Once + + let le a b = + match (a, b) with Many, _ | _, Once -> true | Once, Many -> false + + let eq a b = + match (a, b) with + | Many, Many | Once, Once -> true + | Once, Many | Many, Once -> false + + let join a b = + match (a, b) with Once, _ | _, Once -> Once | Many, Many -> Many + + let meet a b = + match (a, b) with Many, _ | _, Many -> Many | Once, Once -> Once + + let print ppf = function + | Once -> Format.fprintf ppf "Once" + | Many -> Format.fprintf ppf "Many" + + let to_dual : t -> Uniqueness.Const.t = function + | Once -> Unique + | Many -> Shared + + let of_dual : Uniqueness.Const.t -> t = function + | Unique -> Once + | Shared -> Many + end + + include DualSolver (Uniqueness.Const) (Uniqueness) (Const) + + let once = of_const Once + let many = of_const Many + let legacy = many + let constrain_legacy = constrain_lower +end + +module Alloc = struct + module Const = struct + type t = (Locality.Const.t, Uniqueness.Const.t, Linearity.Const.t) modes + + let legacy = + { + locality = Locality.Const.legacy; + uniqueness = Uniqueness.Const.legacy; + linearity = Linearity.Const.legacy; + } + + let join { locality = loc1; uniqueness = u1; linearity = lin1 } + { locality = loc2; uniqueness = u2; linearity = lin2 } = + { + locality = Locality.Const.join loc1 loc2; + uniqueness = Uniqueness.Const.join u1 u2; + linearity = Linearity.Const.join lin1 lin2; + } + + (** constrain uncurried function ret_mode from arg_mode *) + let close_over arg_mode = + let locality = arg_mode.locality in + (* uniqueness of the returned function is not constrained *) + let uniqueness = Uniqueness.Const.min in + let linearity = + Linearity.Const.join arg_mode.linearity + (* In addition, unique argument make the returning function once. + In other words, if argument <= unique, returning function >= once. + That is, returning function >= (dual of argument) *) + (Linearity.Const.of_dual arg_mode.uniqueness) + in + { locality; uniqueness; linearity } + + (** constrain uncurried function ret_mode from the mode of the whole + function *) + let partial_apply alloc_mode = + let locality = alloc_mode.locality in + let uniqueness = Uniqueness.Const.min in + let linearity = alloc_mode.linearity in + { locality; uniqueness; linearity } + + let min = + { + locality = Locality.Const.min; + uniqueness = Uniqueness.Const.min; + linearity = Linearity.Const.min; + } + + let min_with_uniqueness uniqueness = { min with uniqueness } + end + + type t = (Locality.t, Uniqueness.t, Linearity.t) modes + + let of_const { locality; uniqueness; linearity } : t = + { + locality = Locality.of_const locality; + uniqueness = Uniqueness.of_const uniqueness; + linearity = Linearity.of_const linearity; + } + + let prod locality uniqueness linearity = { locality; uniqueness; linearity } + + let legacy = + { + locality = Locality.legacy; + uniqueness = Uniqueness.legacy; + linearity = Linearity.legacy; + } + + let local = { legacy with locality = Locality.local } + let unique = { legacy with uniqueness = Uniqueness.unique } + let local_unique = { local with uniqueness = Uniqueness.unique } + + let is_const { locality; uniqueness; linearity } = + Locality.is_const locality + && Uniqueness.is_const uniqueness + && Linearity.is_const linearity + + let min_mode : t = + { + locality = Locality.min_mode; + uniqueness = Uniqueness.min_mode; + linearity = Linearity.min_mode; + } + + let max_mode : t = + { + locality = Locality.max_mode; + uniqueness = Uniqueness.max_mode; + linearity = Linearity.max_mode; + } + + let locality t = t.locality + let uniqueness t = t.uniqueness + let linearity t = t.linearity + + type error = [ `Locality | `Uniqueness | `Linearity ] + + let submode { locality = loc1; uniqueness = u1; linearity = lin1 } + { locality = loc2; uniqueness = u2; linearity = lin2 } = + match Locality.submode loc1 loc2 with + | Ok () -> ( + match Uniqueness.submode u1 u2 with + | Ok () -> ( + match Linearity.submode lin1 lin2 with + | Ok () -> Ok () + | Error () -> Error `Linearity) + | Error () -> Error `Uniqueness) + | Error () -> Error `Locality + + let submode_exn ({ locality = loc1; uniqueness = u1; linearity = lin1 } : t) + ({ locality = loc2; uniqueness = u2; linearity = lin2 } : t) = + Locality.submode_exn loc1 loc2; + Uniqueness.submode_exn u1 u2; + Linearity.submode_exn lin1 lin2 + + let equate ({ locality = loc1; uniqueness = u1; linearity = lin1 } : t) + ({ locality = loc2; uniqueness = u2; linearity = lin2 } : t) = + match Locality.equate loc1 loc2 with + | Ok () -> ( + match Uniqueness.equate u1 u2 with + | Ok () -> ( + match Linearity.equate lin1 lin2 with + | Ok () -> Ok () + | Error () -> Error `Linearity) + | Error () -> Error `Uniqueness) + | Error () -> Error `Locality + + let join ms : t = + { + locality = Locality.join (List.map (fun (t : t) -> t.locality) ms); + uniqueness = Uniqueness.join (List.map (fun (t : t) -> t.uniqueness) ms); + linearity = Linearity.join (List.map (fun (t : t) -> t.linearity) ms); + } + + let constrain_upper { locality; uniqueness; linearity } = + { + locality = Locality.constrain_upper locality; + uniqueness = Uniqueness.constrain_upper uniqueness; + linearity = Linearity.constrain_upper linearity; + } + + let constrain_lower { locality; uniqueness; linearity } = + { + locality = Locality.constrain_lower locality; + uniqueness = Uniqueness.constrain_lower uniqueness; + linearity = Linearity.constrain_lower linearity; + } + + (* constrain to the legacy modes*) + let constrain_legacy { locality; uniqueness; linearity } = + { + locality = Locality.constrain_legacy locality; + uniqueness = Uniqueness.constrain_legacy uniqueness; + linearity = Linearity.constrain_legacy linearity; + } + + let newvar () = + { + locality = Locality.newvar (); + uniqueness = Uniqueness.newvar (); + linearity = Linearity.newvar (); + } + + let newvar_below { locality; uniqueness; linearity } = + let locality, changed1 = Locality.newvar_below locality in + let uniqueness, changed2 = Uniqueness.newvar_below uniqueness in + let linearity, changed3 = Linearity.newvar_below linearity in + ({ locality; uniqueness; linearity }, changed1 || changed2 || changed3) + + let newvar_below_comonadic {locality; uniqueness; linearity} = + let locality, changed1 = Locality.newvar_below locality in + let linearity, changed2 = Linearity.newvar_below linearity in + ({ locality; uniqueness; linearity }, changed1 || changed2) + + let newvar_above { locality; uniqueness; linearity } = + let locality, changed1 = Locality.newvar_above locality in + let uniqueness, changed2 = Uniqueness.newvar_above uniqueness in + let linearity, changed3 = Linearity.newvar_above linearity in + ({ locality; uniqueness; linearity }, changed1 || changed2 || changed3) + + let of_uniqueness uniqueness = + { + locality = Locality.newvar (); + uniqueness; + linearity = Linearity.newvar (); + } + + let of_locality locality = + { + locality; + uniqueness = Uniqueness.newvar (); + linearity = Linearity.newvar (); + } + + let of_linearity linearity = + { + locality = Locality.newvar (); + uniqueness = Uniqueness.newvar (); + linearity; + } + + let with_locality locality t = { t with locality } + let with_uniqueness uniqueness t = { t with uniqueness } + let with_linearity linearity t = { t with linearity } + + let check_const { locality; uniqueness; linearity } = + { + locality = Locality.check_const locality; + uniqueness = Uniqueness.check_const uniqueness; + linearity = Linearity.check_const linearity; + } + + let print' ?(verbose = true) ppf { locality; uniqueness; linearity } = + Format.fprintf ppf "%a, %a, %a" + (Locality.print' ~verbose ~label:"locality") + locality + (Uniqueness.print' ~verbose ~label:"uniqueness") + uniqueness + (Linearity.print' ~verbose ~label:"linearity") + linearity + + let print ppf m = print' ~verbose:true ppf m + + (** constrain uncurried function ret_mode from arg_mode *) + let close_over arg_mode = + let locality = arg_mode.locality in + (* uniqueness of the returned function is not constrained *) + let uniqueness = Uniqueness.of_const Uniqueness.Const.min in + let linearity = + Linearity.join + [ + arg_mode.linearity; + (* In addition, unique argument make the returning function once. + In other words, if argument <= unique, returning function >= once. + That is, returning function >= (dual of argument) *) + Linearity.of_dual arg_mode.uniqueness; + ] + in + { locality; uniqueness; linearity } + + (** constrain uncurried function ret_mode from the mode of the whole function + *) + let partial_apply alloc_mode = + let locality = alloc_mode.locality in + let uniqueness = Uniqueness.of_const Uniqueness.Const.min in + let linearity = alloc_mode.linearity in + { locality; uniqueness; linearity } +end + +module Value = struct + module Const = struct + type t = (Regionality.Const.t, Uniqueness.Const.t, Linearity.Const.t) modes + + let r_as_l : t -> Alloc.Const.t = function + | { locality; uniqueness; linearity } -> + let locality = Regionality.Const.r_as_l locality in + { locality; uniqueness; linearity } + [@@warning "-unused-value-declaration"] + + let r_as_g : t -> Alloc.Const.t = function + | { locality; uniqueness; linearity } -> + let locality = Regionality.Const.r_as_g locality in + { locality; uniqueness; linearity } + [@@warning "-unused-value-declaration"] + end + + type t = (Regionality.t, Uniqueness.t, Linearity.t) modes + + let legacy = + { + locality = Regionality.legacy; + uniqueness = Uniqueness.legacy; + linearity = Linearity.legacy; + } + + let regional = { legacy with locality = Regionality.regional } + let local = { legacy with locality = Regionality.local } + let unique = { legacy with uniqueness = Uniqueness.unique } + let regional_unique = { regional with uniqueness = Uniqueness.unique } + let local_unique = { local with uniqueness = Uniqueness.unique } + + let of_const { locality; uniqueness; linearity } = + { + locality = Regionality.of_const locality; + uniqueness = Uniqueness.of_const uniqueness; + linearity = Linearity.of_const linearity; + } + + let max_mode = + let locality = Regionality.max_mode in + let uniqueness = Uniqueness.max_mode in + let linearity = Linearity.max_mode in + { locality; uniqueness; linearity } + + let min_mode = + let locality = Regionality.min_mode in + let uniqueness = Uniqueness.min_mode in + let linearity = Linearity.min_mode in + { locality; uniqueness; linearity } + + let locality t = t.locality + let uniqueness t = t.uniqueness + let linearity t = t.linearity + let min_with_uniqueness u = { min_mode with uniqueness = u } + let max_with_uniqueness u = { max_mode with uniqueness = u } + + let min_with_locality locality = + { min_mode with locality } + + let max_with_locality locality = + { max_mode with locality } + + let min_with_linearity linearity = + { min_mode with linearity } + + let with_locality locality t = { t with locality } + let with_uniqueness uniqueness t = { t with uniqueness } + let with_linearity linearity t = { t with linearity } + let to_local t = { t with locality = Regionality.local } + let to_global t = { t with locality = Regionality.global } + let to_unique t = { t with uniqueness = Uniqueness.unique } + let to_shared t = { t with uniqueness = Uniqueness.shared } + let to_once t = { t with linearity = Linearity.once } + let to_many t = { t with linearity = Linearity.many } + + let of_alloc { locality; uniqueness; linearity } = + let locality = Regionality.of_locality locality in + { locality; uniqueness; linearity } + + let local_to_regional t = + { t with locality = Regionality.local_to_regional t.locality } + + let regional_to_global t = + { t with locality = Regionality.regional_to_global t.locality } + + let regional_to_local t = + { t with locality = Regionality.regional_to_local t.locality } + + let global_to_regional t = + { t with locality = Regionality.global_to_regional t.locality } + + let regional_to_global_alloc t = + { t with locality = Regionality.regional_to_global_locality t.locality } + + let regional_to_local_alloc t = + { t with locality = Regionality.regional_to_local_locality t.locality } + + let regional_to_global_locality t = + Regionality.regional_to_global_locality t.locality + + let regional_to_local_locality t = + Regionality.regional_to_local_locality t.locality + + type error = [ `Regionality | `Locality | `Uniqueness | `Linearity ] + + let submode t1 t2 = + match Regionality.submode t1.locality t2.locality with + | Error _ as e -> e + | Ok () -> ( + match Uniqueness.submode t1.uniqueness t2.uniqueness with + | Error () -> Error `Uniqueness + | Ok () -> ( + match Linearity.submode t1.linearity t2.linearity with + | Error () -> Error `Linearity + | Ok () as ok -> ok)) + + let submode_exn t1 t2 = + match submode t1 t2 with + | Ok () -> () + | Error _ -> invalid_arg "submode_exn" + + let equate ({ locality = loc1; uniqueness = u1; linearity = lin1 } : t) + ({ locality = loc2; uniqueness = u2; linearity = lin2 } : t) = + match Regionality.equate loc1 loc2 with + | Ok () -> ( + match Uniqueness.equate u1 u2 with + | Ok () -> ( + match Linearity.equate lin1 lin2 with + | Ok () -> Ok () + | Error () -> Error `Linearity) + | Error () -> Error `Uniqueness) + | Error e -> Error e + + let rec submode_meet t = function + | [] -> Ok () + | t' :: rest -> ( + match submode t t' with + | Ok () -> submode_meet t rest + | Error _ as err -> err) + + let join ts = + let locality = Regionality.join (List.map (fun t -> t.locality) ts) in + let uniqueness = Uniqueness.join (List.map (fun t -> t.uniqueness) ts) in + let linearity = Linearity.join (List.map (fun t -> t.linearity) ts) in + { locality; uniqueness; linearity } + + let constrain_upper t = + let locality = Regionality.constrain_upper t.locality in + let uniqueness = Uniqueness.constrain_upper t.uniqueness in + let linearity = Linearity.constrain_upper t.linearity in + { locality; uniqueness; linearity } + + let constrain_lower t = + let locality = Regionality.constrain_lower t.locality in + let uniqueness = Uniqueness.constrain_lower t.uniqueness in + let linearity = Linearity.constrain_lower t.linearity in + { locality; uniqueness; linearity } + + let newvar () = + let locality = Regionality.newvar () in + let uniqueness = Uniqueness.newvar () in + let linearity = Linearity.newvar () in + { locality; uniqueness; linearity } + + let newvar_below { locality; uniqueness; linearity } = + let locality, changed1 = Regionality.newvar_below locality in + let uniqueness, changed2 = Uniqueness.newvar_below uniqueness in + let linearity, changed3 = Linearity.newvar_below linearity in + ({ locality; uniqueness; linearity }, changed1 || changed2 || changed3) + + let newvar_above { locality; uniqueness; linearity } = + let locality, changed1 = Regionality.newvar_above locality in + let uniqueness, changed2 = Uniqueness.newvar_above uniqueness in + let linearity, changed3 = Linearity.newvar_above linearity in + ({ locality; uniqueness; linearity }, changed1 || changed2 || changed3) + + let check_const t = + let locality = Regionality.check_const t.locality in + let uniqueness = Uniqueness.check_const t.uniqueness in + let linearity = Linearity.check_const t.linearity in + { locality; uniqueness; linearity } + + let print' ?(verbose = true) ppf t = + Format.fprintf ppf "%a, %a, %a" + (Regionality.print' ~verbose ~label:"locality") + t.locality + (Uniqueness.print' ~verbose ~label:"uniqueness") + t.uniqueness + (Linearity.print' ~verbose ~label:"linearity") + t.linearity + + let print ppf t = print' ~verbose:true ppf t +end diff --git a/ocaml/typing/mode.mli b/ocaml/typing/mode.mli new file mode 100644 index 00000000000..44f60104079 --- /dev/null +++ b/ocaml/typing/mode.mli @@ -0,0 +1,349 @@ +(**************************************************************************) +(* *) +(* OCaml *) +(* *) +(* Xavier Leroy, projet Cristal, INRIA Rocquencourt *) +(* *) +(* Copyright 1996 Institut National de Recherche en Informatique et *) +(* en Automatique. *) +(* *) +(* All rights reserved. This file is distributed under the terms of *) +(* the GNU Lesser General Public License version 2.1, with the *) +(* special exception on linking described in the file LICENSE. *) +(* *) +(**************************************************************************) + +type changes + +val undo_changes : changes -> unit +val change_log : (changes -> unit) ref + +module Locality : sig + module Const : sig + type t = Global | Local + + val legacy : t + val min : t + val max : t + val le : t -> t -> bool + val join : t -> t -> t + val meet : t -> t -> t + val print : Format.formatter -> t -> unit + end + + type t + + val legacy : t + val of_const : Const.t -> t + val global : t + val local : t + val submode : t -> t -> (unit, unit) result + val submode_exn : t -> t -> unit + val equate : t -> t -> (unit, unit) result + val join : t list -> t + val constrain_upper : t -> Const.t + val constrain_lower : t -> Const.t + val newvar : unit -> t + val newvar_below : t -> t * bool + val newvar_above : t -> t * bool + val check_const : t -> Const.t option + val print' : ?verbose:bool -> ?label:string -> Format.formatter -> t -> unit + val print : Format.formatter -> t -> unit +end + +module Regionality : sig + module Const : sig + type t = Global | Regional | Local + end + + type t + type error = [ `Regionality | `Locality ] + + val global : t + val regional : t + val local : t + val submode : t -> t -> (unit, error) result + val of_locality : Locality.t -> t + val regional_to_local : t -> t + val global_to_regional : t -> t + val local_to_regional : t -> t + val regional_to_global : t -> t + val regional_to_global_locality : t -> Locality.t + val print : Format.formatter -> t -> unit +end + +module Uniqueness : sig + module Const : sig + type t = Unique | Shared + + val legacy : t + val min : t + val max : t + val le : t -> t -> bool + val join : t -> t -> t + val meet : t -> t -> t + val print : Format.formatter -> t -> unit + end + + type t + + val legacy : t + val of_const : Const.t -> t + val unique : t + val shared : t + val submode : t -> t -> (unit, unit) result + val submode_exn : t -> t -> unit + val equate : t -> t -> (unit, unit) result + val join : t list -> t + val meet : t list -> t + val constrain_upper : t -> Const.t + val constrain_lower : t -> Const.t + val newvar : unit -> t + val newvar_below : t -> t * bool + val newvar_above : t -> t * bool + val check_const : t -> Const.t option + val print' : ?verbose:bool -> ?label:string -> Format.formatter -> t -> unit + val print : Format.formatter -> t -> unit +end + +module Linearity : sig + module Const : sig + type t = Many | Once + + val legacy : t + val min : t + val max : t + val le : t -> t -> bool + val join : t -> t -> t + val meet : t -> t -> t + val print : Format.formatter -> t -> unit + val to_dual : t -> Uniqueness.Const.t + val of_dual : Uniqueness.Const.t -> t + end + + type t + + val of_const : Const.t -> t + val to_dual : t -> Uniqueness.t + val of_dual : Uniqueness.t -> t + val once : t + val many : t + val submode : t -> t -> (unit, unit) result + val submode_exn : t -> t -> unit + val equate : t -> t -> (unit, unit) result + val join : t list -> t + val constrain_upper : t -> Const.t + val constrain_lower : t -> Const.t + val newvar : unit -> t + val newvar_below : t -> t * bool + val newvar_above : t -> t * bool + val check_const : t -> Const.t option + val print' : ?verbose:bool -> ?label:string -> Format.formatter -> t -> unit + val print : Format.formatter -> t -> unit +end + +type ('a, 'b, 'c) modes = { locality : 'a; uniqueness : 'b; linearity : 'c } + +module Alloc : sig + module Const : sig + type t = (Locality.Const.t, Uniqueness.Const.t, Linearity.Const.t) modes + + val legacy : t + val join : t -> t -> t + val close_over : t -> t + val partial_apply : t -> t + val min_with_uniqueness : Uniqueness.Const.t -> t + end + + type t + + val legacy : t + val local : t + val unique : t + val local_unique : t + val prod : Locality.t -> Uniqueness.t -> Linearity.t -> t + + val of_const : Const.t -> t + val is_const : t -> bool + val min_mode : t + val max_mode : t + + (** Projections to Locality, Uniqueness and Linearity *) + + val locality : t -> Locality.t + val uniqueness : t -> Uniqueness.t + val linearity : t -> Linearity.t + + type error = [ `Locality | `Uniqueness | `Linearity ] + + val submode : t -> t -> (unit, error) result + val submode_exn : t -> t -> unit + val equate : t -> t -> (unit, error) result + val join : t list -> t + + (* Force a mode variable to its upper bound *) + val constrain_upper : t -> Const.t + + (* Force a mode variable to its lower bound *) + val constrain_lower : t -> Const.t + + (* Force a mode variable to legacys *) + val constrain_legacy : t -> Const.t + val newvar : unit -> t + val newvar_below : t -> t * bool + + (* Same as [newvar_below] but only on the comonadic axes *) + val newvar_below_comonadic : t -> t * bool + + val newvar_above : t -> t * bool + val with_locality : Locality.t -> t -> t + val with_uniqueness : Uniqueness.t -> t -> t + val with_linearity : Linearity.t -> t -> t + val of_uniqueness : Uniqueness.t -> t + val of_locality : Locality.t -> t + val of_linearity : Linearity.t -> t + + val check_const : + t -> + ( Locality.Const.t option, + Uniqueness.Const.t option, + Linearity.Const.t option ) + modes + + val print' : ?verbose:bool -> Format.formatter -> t -> unit + val print : Format.formatter -> t -> unit + val close_over : t -> t + val partial_apply : t -> t +end + +module Value : sig + module Const : sig + type t = (Regionality.Const.t, Uniqueness.Const.t, Linearity.Const.t) modes + end + + type t + + val legacy : t + val regional : t + val local : t + val unique : t + val regional_unique : t + val local_unique : t + val of_const : Const.t -> t + val max_mode : t + val min_mode : t + + (** Injections from Locality and Uniqueness into [Value_mode.t] *) + + (* The 'min_with_*' functions extend the min_mode, + the 'max_with_' functions extend the max_mode, + the 'with_*' functions extend given mode. + *) + val min_with_uniqueness : Uniqueness.t -> t + val max_with_uniqueness : Uniqueness.t -> t + val min_with_locality : Regionality.t -> t + val max_with_locality : Regionality.t -> t + val min_with_linearity : Linearity.t -> t + val with_locality : Regionality.t -> t -> t + val with_uniqueness : Uniqueness.t -> t -> t + val with_linearity : Linearity.t -> t -> t + + (** Projections to Locality, Uniqueness and Linearity *) + + val locality : t -> Regionality.t + val uniqueness : t -> Uniqueness.t + val linearity : t -> Linearity.t + + (** Injections from [Alloc.t] into [Value_mode.t] *) + + val of_alloc : Alloc.t -> t + (** [of_alloc] maps [Global] to [Global] and [Local] to [Local] *) + + (** Kernel operators *) + + val local_to_regional : t -> t + (** The kernel operator [local_to_regional] maps [Local] to + [Regional] and leaves the others unchanged. *) + + val regional_to_global : t -> t + (** The kernel operator [regional_to_global] maps [Regional] + to [Global] and leaves the others unchanged. *) + + val to_global : t -> t + val to_unique : t -> t + val to_many : t -> t + + (** Closure operators *) + + val regional_to_local : t -> t + (** The closure operator [regional_to_local] maps [Regional] + to [Local] and leaves the others unchanged. *) + + val global_to_regional : t -> t + (** The closure operator [global_to_regional] maps [Global] to + [Regional] and leaves the others unchanged. *) + + val to_local : t -> t + val to_shared : t -> t + val to_once : t -> t + + (** Note that the kernal and closure operators are in the following + adjunction relationship: + {v + local_to_regional + -| regional_to_local + -| regional_to_global + -| global_to_regional + v} + + Equivalently, + {v + local_to_regional a <= b iff a <= regional_to_local b + regional_to_local a <= b iff a <= regional_to_global b + regional_to_global a <= b iff a <= global_to_regional b + v} + + As well as: + {v + to_global -| to_local + to_unique -| to_shared + v} + *) + + (** Versions of the operators that return [Alloc.t] *) + + val regional_to_global_alloc : t -> Alloc.t + (** Maps [Regional] to [Global] and leaves the others unchanged. *) + + val regional_to_local_alloc : t -> Alloc.t + (** Maps [Regional] to [Local] and leaves the others unchanged. *) + + val regional_to_global_locality : t -> Locality.t + (** Maps [Regional] to [Global] *) + + val regional_to_local_locality : t -> Locality.t + (** Maps [Regional] to [Local] *) + + type error = [ `Regionality | `Locality | `Uniqueness | `Linearity ] + + val submode : t -> t -> (unit, error) result + val submode_exn : t -> t -> unit + val equate : t -> t -> (unit, error) result + val submode_meet : t -> t list -> (unit, error) result + val join : t list -> t + val constrain_upper : t -> Const.t + val constrain_lower : t -> Const.t + val newvar : unit -> t + val newvar_below : t -> t * bool + val newvar_above : t -> t * bool + + val check_const : + t -> + ( Regionality.Const.t option, + Uniqueness.Const.t option, + Linearity.Const.t option ) + modes + + val print' : ?verbose:bool -> Format.formatter -> t -> unit + val print : Format.formatter -> t -> unit +end diff --git a/ocaml/typing/oprint.ml b/ocaml/typing/oprint.ml index 791e3408737..6e04faeba77 100644 --- a/ocaml/typing/oprint.ml +++ b/ocaml/typing/oprint.ml @@ -288,13 +288,81 @@ let pr_var_layout ppf (v, l) = match l with let pr_var_layouts = print_list pr_var_layout (fun ppf -> fprintf ppf "@ ") -let join_modes rm1 am2 = - match rm1, am2 with - | Oam_local, _ -> Oam_local - | _, Oam_local -> Oam_local - | Oam_unknown, _ -> Oam_unknown - | _, Oam_unknown -> Oam_unknown - | Oam_global, Oam_global -> Oam_global +let join_locality lm1 lm2 = + match lm1, lm2 with + | Olm_local, _ -> Olm_local + | _, Olm_local -> Olm_local + | Olm_unknown, _ -> Olm_unknown + | _, Olm_unknown -> Olm_unknown + | Olm_global, Olm_global -> Olm_global + +let join_uniqueness u1 u2 = + match u1, u2 with + | Oum_shared, _ -> Oum_shared + | _, Oum_shared -> Oum_shared + | Oum_unknown, _ -> Oum_unknown + | _, Oum_unknown -> Oum_unknown + | Oum_unique, Oum_unique -> Oum_unique + +let join_linearity l1 l2 = + match l1, l2 with + | Olinm_once, _ + | _, Olinm_once -> Olinm_once + | Olinm_unknown, _ + | _, Olinm_unknown -> Olinm_unknown + | Olinm_many, Olinm_many -> Olinm_many + +let uniqueness_to_linearity = function + | Oum_unique -> Olinm_once + | Oum_shared -> Olinm_many + | Oum_unknown -> Olinm_unknown + +let join_modes m1 m2 = + { oam_locality = join_locality m1.oam_locality m2.oam_locality; + oam_uniqueness = join_uniqueness m1.oam_uniqueness m2.oam_uniqueness; + oam_linearity = join_linearity m1.oam_linearity m2.oam_linearity } + +let default_mode = + { oam_locality = Olm_global; + oam_uniqueness = Oum_shared; + oam_linearity = Olinm_many; } + +let close_over arg_mode = + let oam_locality = arg_mode.oam_locality in + let oam_uniqueness = Oum_shared in + let oam_linearity = + join_linearity + arg_mode.oam_linearity + (uniqueness_to_linearity arg_mode.oam_uniqueness) + in + { oam_locality; + oam_uniqueness; + oam_linearity } + +let partial_apply alloc_mode = + let oam_locality = alloc_mode.oam_locality in + let oam_uniqueness = Oum_shared in + let oam_linearity = alloc_mode.oam_linearity in + { oam_locality; oam_uniqueness; oam_linearity } + +let same_locality m1 m2 = + match m1.oam_locality, m2.oam_locality with + | Olm_local, Olm_local | Olm_global, Olm_global -> true + | _, _ -> false + +let same_uniqueness m1 m2 = + match m1.oam_uniqueness, m2.oam_uniqueness with + | Oum_unique, Oum_unique | Oum_shared, Oum_shared -> true + | _, _ -> false + +let same_linearity m1 m2 = + match m1.oam_linearity, m2.oam_linearity with + | Olinm_many, Olinm_many | Olinm_once, Olinm_once -> true + | _, _ -> false + +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 rec print_out_type_0 mode ppf = function @@ -309,6 +377,45 @@ let rec print_out_type_0 mode ppf = | ty -> print_out_type_1 mode ppf ty +and print_out_type_mode mode ppf ty = + let is_local = + match mode.oam_locality with + | Olm_local -> true + | _ -> false + in + let is_unique = + match mode.oam_uniqueness with + | Oum_unique -> true + | _ -> false + in + let is_once = + match mode.oam_linearity with + | Olinm_once -> true + | _ -> false + in + if (not is_local || Language_extension.is_enabled Local) && + (not is_unique || Language_extension.is_enabled Unique) && + (not is_once || Language_extension.is_enabled Unique) + (* this branch does not need attributes at all *) + then begin + if is_local then begin + pp_print_string ppf "local_"; + pp_print_space ppf () end; + if is_unique then begin + pp_print_string ppf "unique_"; + pp_print_space ppf () end; + if is_once then begin + pp_print_string ppf "once_"; + pp_print_space ppf () end; + print_out_type_2 mode ppf ty end + else + (* otherwise we would rather print everything in attributes + even if extensions are enabled *) + let ty = if is_unique then Otyp_attribute (ty, {oattr_name="unique"}) else ty in + let ty = if is_local then Otyp_attribute (ty, {oattr_name="local"}) else ty in + let ty = if is_once then Otyp_attribute (ty, {oattr_name="once"}) else ty in + print_out_type ppf ty + and print_out_type_1 mode ppf = function | Otyp_arrow (lab, am, ty1, rm, ty2) -> @@ -317,40 +424,26 @@ and print_out_type_1 mode ppf = print_out_arg am ppf ty1; pp_print_string ppf " ->"; pp_print_space ppf (); - let mode = join_modes mode am in + let mode = + join_modes + (partial_apply mode) + (close_over am) + in print_out_ret mode rm ppf ty2; pp_close_box ppf () - | ty -> - match mode with - | Oam_local -> - print_out_type_local mode ppf ty - | Oam_unknown -> print_out_type_2 mode ppf ty - | Oam_global -> print_out_type_2 mode ppf ty + | ty -> print_out_type_mode mode ppf ty and print_out_arg am ppf ty = - match am with - | Oam_local -> - print_out_type_local am ppf ty - | Oam_global -> print_out_type_2 am ppf ty - | Oam_unknown -> print_out_type_2 am ppf ty - -and print_out_ret mode rm ppf ty = - match mode, rm with - | Oam_local, Oam_local - | Oam_global, Oam_global -> print_out_type_1 rm ppf ty - | _, Oam_local -> - print_out_type_local rm ppf ty - | _, Oam_global -> print_out_type_2 rm ppf ty - | _, Oam_unknown -> print_out_type_1 rm ppf ty - -and print_out_type_local m ppf ty = - if Language_extension.is_enabled Local then begin - pp_print_string ppf "local_"; - pp_print_space ppf (); - print_out_type_2 m ppf ty - end else begin - print_out_type ppf (Otyp_attribute (ty, {oattr_name="local"})) - end + print_out_type_mode am ppf ty + +and print_out_ret mode rm ppf = + function + (* the 'mode' argument only has meaning if we are talking about closure *) + | Otyp_arrow _ as ty -> + if same_locality mode rm && same_uniqueness mode rm && same_linearity mode rm + then print_out_type_1 rm ppf ty + else print_out_type_mode rm ppf ty + | ty -> print_out_type_mode rm ppf ty and print_out_type_2 mode ppf = function @@ -418,9 +511,9 @@ and print_out_type_3 mode ppf = (print_out_type_0 mode) t print_out_layout lay and print_out_type ppf typ = - print_out_type_0 Oam_global ppf typ + print_out_type_0 default_mode ppf typ and print_simple_out_type ppf typ = - print_out_type_3 Oam_global ppf typ + print_out_type_3 default_mode ppf typ and print_record_decl ppf lbls = fprintf ppf "{%a@;<1 -2>}" (print_list_init print_out_label (fun ppf -> fprintf ppf "@ ")) lbls @@ -520,7 +613,7 @@ let rec print_out_class_type ppf = fprintf ppf "@[%a%a@]" pr_tyl tyl print_ident id | Octy_arrow (lab, ty, cty) -> fprintf ppf "@[%s%a ->@ %a@]" (if lab <> "" then lab ^ ":" else "") - (print_out_type_2 Oam_global) ty print_out_class_type cty + (print_out_type_2 default_mode) ty print_out_class_type cty | Octy_signature (self_ty, csil) -> let pr_param ppf = function diff --git a/ocaml/typing/outcometree.mli b/ocaml/typing/outcometree.mli index 42184dcf7db..c6f863d75f9 100644 --- a/ocaml/typing/outcometree.mli +++ b/ocaml/typing/outcometree.mli @@ -111,10 +111,25 @@ and out_variant = | Ovar_fields of (string * bool * out_type list) list | Ovar_typ of out_type +and out_locality = + | Olm_local + | Olm_global + | Olm_unknown + +and out_uniqueness = + | Oum_unique + | Oum_shared + | Oum_unknown + +and out_linearity = + | Olinm_many + | Olinm_once + | Olinm_unknown + and out_alloc_mode = - | Oam_local - | Oam_global - | Oam_unknown + { oam_locality : out_locality; + oam_uniqueness : out_uniqueness; + oam_linearity : out_linearity } type out_class_type = | Octy_constr of out_ident * out_type list diff --git a/ocaml/typing/parmatch.ml b/ocaml/typing/parmatch.ml index 636fd7af047..5af0010734a 100644 --- a/ocaml/typing/parmatch.ml +++ b/ocaml/typing/parmatch.ml @@ -37,7 +37,7 @@ let omega_list = Patterns.omega_list let extra_pat = make_pat - (Tpat_var (Ident.create_local "+", mknoloc "+", Value_mode.max_mode)) + (Tpat_var (Ident.create_local "+", mknoloc "+", Mode.Value.max_mode)) Ctype.none Env.empty @@ -930,7 +930,7 @@ let build_other ext env = make_pat (Tpat_var (Ident.create_local "*extension*", {txt="*extension*"; loc = d.pat_loc}, - Value_mode.max_mode)) + Mode.Value.max_mode)) Ctype.none Env.empty | Construct _ -> begin match ext with @@ -2438,7 +2438,7 @@ let all_rhs_idents exp = let open Tast_iterator in let expr_iter iter exp = match exp.exp_desc with - | Texp_ident (path, _lid, _descr, _kind) -> + | Texp_ident (path, _lid, _descr, _kind, _mode) -> List.iter (fun id -> ids := Ident.Set.add id !ids) (Path.heads path) (* Use default iterator methods for rest of match.*) | _ -> Tast_iterator.default_iterator.expr iter exp diff --git a/ocaml/typing/patterns.ml b/ocaml/typing/patterns.ml index 343d5b3830a..e761e3d5712 100644 --- a/ocaml/typing/patterns.ml +++ b/ocaml/typing/patterns.ml @@ -79,8 +79,8 @@ end module General = struct type view = [ | Half_simple.view - | `Var of Ident.t * string loc * value_mode - | `Alias of pattern * Ident.t * string loc * value_mode + | `Var of Ident.t * string loc * Mode.Value.t + | `Alias of pattern * Ident.t * string loc * Mode.Value.t ] type pattern = view pattern_data diff --git a/ocaml/typing/patterns.mli b/ocaml/typing/patterns.mli index 3116386b742..9f6b4862f71 100644 --- a/ocaml/typing/patterns.mli +++ b/ocaml/typing/patterns.mli @@ -65,8 +65,8 @@ end module General : sig type view = [ | Half_simple.view - | `Var of Ident.t * string loc * value_mode - | `Alias of pattern * Ident.t * string loc * value_mode + | `Var of Ident.t * string loc * Mode.Value.t + | `Alias of pattern * Ident.t * string loc * Mode.Value.t ] type pattern = view pattern_data diff --git a/ocaml/typing/printtyp.ml b/ocaml/typing/printtyp.ml index 7df050c54f9..1736ed648e9 100644 --- a/ocaml/typing/printtyp.ml +++ b/ocaml/typing/printtyp.ml @@ -23,6 +23,7 @@ open Path open Asttypes open Layouts open Types +open Mode open Btype open Outcometree @@ -607,7 +608,9 @@ and raw_type_desc ppf = function (Layout.to_string layout) | Tarrow((l,arg,ret),t1,t2,c) -> fprintf ppf "@[Tarrow((\"%s\",%a,%a),@,%a,@,%a,@,%s)@]" - (string_of_label l) Alloc_mode.print arg Alloc_mode.print ret + (string_of_label l) + (Alloc.print' ~verbose:true) arg + (Alloc.print' ~verbose:true) ret raw_type t1 raw_type t2 (if is_commu_ok c then "Cok" else "Cunknown") | Ttuple tl -> @@ -1188,6 +1191,28 @@ let out_layout_option_of_layout layout = then Some (Olay_var (Sort.var_name v)) else None +let tree_of_mode mode = + let {locality; uniqueness; linearity} = Alloc.check_const mode in + let oam_locality = + match locality with + | Some Global -> Olm_global + | Some Local -> Olm_local + | None -> Olm_unknown + in + let oam_uniqueness = + match uniqueness with + | Some Unique -> Oum_unique + | Some Shared -> Oum_shared + | None -> Oum_unknown + in + let oam_linearity = + match linearity with + | Some Many -> Olinm_many + | Some Once -> Olinm_once + | None -> Olinm_unknown + in + {oam_locality; oam_uniqueness; oam_linearity} + let rec tree_of_typexp mode ty = let px = proxy ty in if List.memq px !printed_aliases && not (List.memq px !delayed) then @@ -1219,19 +1244,9 @@ let rec tree_of_typexp mode ty = else tree_of_typexp mode ty1 in - let am = - match Alloc_mode.check_const marg with - | Some Global -> Oam_global - | Some Local -> Oam_local - | None -> Oam_unknown - in + let am = tree_of_mode marg in let t2 = tree_of_typexp mode ty2 in - let rm = - match Alloc_mode.check_const mret with - | Some Global -> Oam_global - | Some Local -> Oam_local - | None -> Oam_unknown - in + let rm = tree_of_mode mret in Otyp_arrow (lab, am, t1, rm, t2) | Ttuple tyl -> Otyp_tuple (tree_of_typlist mode tyl) diff --git a/ocaml/typing/printtyped.ml b/ocaml/typing/printtyped.ml index 639de0fa009..81dc5c7d3b9 100644 --- a/ocaml/typing/printtyped.ml +++ b/ocaml/typing/printtyped.ml @@ -357,23 +357,16 @@ and expression_extra i ppf (x,_,attrs) = attributes i ppf attrs; and alloc_mode i ppf m = - line i ppf "alloc_mode %s\n" - (match Types.Alloc_mode.check_const m with - | Some Global -> "global" - | Some Local -> "local" - | None -> "" - ) + line i ppf "alloc_mode %a\n" (Mode.Alloc.print' ~verbose:false) m and alloc_mode_option i ppf m = Option.iter (alloc_mode i ppf) m +and locality_mode i ppf m = + line i ppf "locality_mode %a\n" + (Mode.Locality.print' ~verbose:false ?label:None) m + and value_mode i ppf m = - line i ppf "alloc_mode %s\n" - (match Types.Value_mode.check_const m with - | Some Global -> "global" - | Some Local -> "local" - | Some Regional -> "regional" - | None -> "" - ) + line i ppf "value_mode %a\n" (Mode.Value.print' ~verbose:false) m and expression_alloc_mode i ppf (expr, am) = alloc_mode i ppf am; @@ -390,7 +383,7 @@ and expression i ppf x = List.iter (expression_extra (i+1) ppf) extra; end; match x.exp_desc with - | Texp_ident (li,_,_,_) -> line i ppf "Texp_ident %a\n" fmt_path li; + | Texp_ident (li,_,_,_,_) -> line i ppf "Texp_ident %a\n" fmt_path li; | Texp_instvar (_, li,_) -> line i ppf "Texp_instvar %a\n" fmt_path li; | Texp_constant (c) -> line i ppf "Texp_constant %a\n" fmt_constant c; | Texp_let (rf, l, e) -> @@ -410,7 +403,7 @@ and expression i ppf x = | Tail -> "Tail" | Nontail -> "Nontail" | Default -> "Default"); - alloc_mode i ppf am; + locality_mode i ppf am; expression i ppf e; list i label_x_apply_arg ppf l; | Texp_match (e, sort, l, _partial) -> @@ -443,14 +436,14 @@ and expression i ppf x = record_representation (i+1) ppf representation; line i ppf "extended_expression =\n"; option (i+1) expression ppf extended_expression; - | Texp_field (e, li, _, am) -> + | Texp_field (e, li, _, _, am) -> line i ppf "Texp_field\n"; alloc_mode_option i ppf am; expression i ppf e; longident i ppf li; | Texp_setfield (e1, am, li, _, e2) -> line i ppf "Texp_setfield\n"; - alloc_mode i ppf am; + locality_mode i ppf am; expression i ppf e1; longident i ppf li; expression i ppf e2; diff --git a/ocaml/typing/rec_check.ml b/ocaml/typing/rec_check.ml index 7b429cd495d..00316b44601 100644 --- a/ocaml/typing/rec_check.ml +++ b/ocaml/typing/rec_check.ml @@ -147,7 +147,7 @@ let classify_expression : Typedtree.expression -> sd = | Texp_let (rec_flag, vb, e) -> let env = classify_value_bindings rec_flag env vb in classify_expression env e - | Texp_ident (path, _, _, _) -> + | Texp_ident (path, _, _, _, _) -> classify_path env path (* non-binding cases *) @@ -169,7 +169,7 @@ let classify_expression : Typedtree.expression -> sd = | Texp_record _ -> Static - | Texp_apply ({exp_desc = Texp_ident (_, _, vd, Id_prim _)}, _, _, _) + | Texp_apply ({exp_desc = Texp_ident (_, _, vd, Id_prim _, _)}, _, _, _) when is_ref vd -> Static | Texp_apply (_, args, _, _) @@ -534,7 +534,7 @@ let array_mode exp = match Typeopt.array_kind exp with *) let rec expression : Typedtree.expression -> term_judg = fun exp -> match exp.exp_desc with - | Texp_ident (pth, _, _, _) -> + | Texp_ident (pth, _, _, _, _) -> path pth | Texp_let (rec_flag, bindings, body) -> (* @@ -583,7 +583,7 @@ let rec expression : Typedtree.expression -> term_judg = | Texp_instvar (self_path, pth, _inst_var) -> join [path self_path << Dereference; path pth] | Texp_apply - ({exp_desc = Texp_ident (_, _, vd, Id_prim _)}, [_, Arg (arg, _)], _, _) + ({exp_desc = Texp_ident (_, _, vd, Id_prim _, _)}, [_, Arg (arg, _)], _, _) when is_ref vd -> (* G |- e: m[Guard] @@ -718,7 +718,7 @@ let rec expression : Typedtree.expression -> term_judg = join [ expression e1 << Dereference ] - | Texp_field (e, _, _, _) -> + | Texp_field (e, _, _, _, _) -> (* G |- e: m[Dereference] ----------------------- diff --git a/ocaml/typing/tast_iterator.ml b/ocaml/typing/tast_iterator.ml index 34294478afd..fdf93c1a6dc 100644 --- a/ocaml/typing/tast_iterator.ml +++ b/ocaml/typing/tast_iterator.ml @@ -230,7 +230,7 @@ let expr sub {exp_extra; exp_desc; exp_env; _} = | _, Overridden (_, exp) -> sub.expr sub exp) fields; Option.iter (sub.expr sub) extended_expression; - | Texp_field (exp, _, _, _) -> sub.expr sub exp + | Texp_field (exp, _, _, _, _) -> sub.expr sub exp | Texp_setfield (exp1, _, _, _, exp2) -> sub.expr sub exp1; sub.expr sub exp2 diff --git a/ocaml/typing/tast_mapper.ml b/ocaml/typing/tast_mapper.ml index c3678f67dea..8e2c4c3162d 100644 --- a/ocaml/typing/tast_mapper.ml +++ b/ocaml/typing/tast_mapper.ml @@ -336,7 +336,7 @@ let expr sub x = Texp_variant (l, Option.map (fun (e, am) -> (sub.expr sub e, am)) expo) | Texp_record { fields; representation; extended_expression; alloc_mode } -> let fields = Array.map (function - | label, Kept t -> label, Kept t + | label, Kept (t, uu) -> label, Kept (t, uu) | label, Overridden (lid, exp) -> label, Overridden (lid, sub.expr sub exp)) fields @@ -346,8 +346,8 @@ let expr sub x = extended_expression = Option.map (sub.expr sub) extended_expression; alloc_mode } - | Texp_field (exp, lid, ld, am) -> - Texp_field (sub.expr sub exp, lid, ld, am) + | Texp_field (exp, lid, ld, mode, am) -> + Texp_field (sub.expr sub exp, lid, ld, mode, am) | Texp_setfield (exp1, am, lid, ld, exp2) -> Texp_setfield ( sub.expr sub exp1, diff --git a/ocaml/typing/typeclass.ml b/ocaml/typing/typeclass.ml index f83aa5d1bf7..cb622d66456 100644 --- a/ocaml/typing/typeclass.ml +++ b/ocaml/typing/typeclass.ml @@ -18,9 +18,9 @@ open Asttypes open Path open Layouts open Types -open Typecore open Typetexp open Format +open Mode type 'a class_info = { cls_id : Ident.t; @@ -195,7 +195,7 @@ let rec constructor_type constr cty = | Cty_signature _ -> constr | Cty_arrow (l, ty, cty) -> - let arrow_desc = l, Alloc_mode.global, Alloc_mode.global in + let arrow_desc = l, Mode.Alloc.legacy, Mode.Alloc.legacy in let ty = Ctype.newmono ty in Ctype.newty (Tarrow (arrow_desc, ty, constructor_type constr cty, commu_ok)) @@ -261,9 +261,9 @@ let unify_delayed_method_type loc env label ty expected_ty= raise(Error(loc, env, Field_type_mismatch ("method", label, trace))) let type_constraint val_env sty sty' loc = - let cty = transl_simple_type val_env ~closed:false Global sty in + let cty = transl_simple_type val_env ~closed:false Alloc.Const.legacy sty in let ty = cty.ctyp_type in - let cty' = transl_simple_type val_env ~closed:false Global sty' in + let cty' = transl_simple_type val_env ~closed:false Alloc.Const.legacy sty' in let ty' = cty'.ctyp_type in begin try Ctype.unify val_env ty ty' with Ctype.Unify err -> @@ -303,7 +303,7 @@ let rec class_type_field env sign self_scope ctf = | Pctf_val ({txt=lab}, mut, virt, sty) -> mkctf_with_attrs (fun () -> - let cty = transl_simple_type env ~closed:false Global sty in + let cty = transl_simple_type env ~closed:false Alloc.Const.legacy sty in let ty = cty.ctyp_type in begin match Ctype.constrain_type_layout @@ -338,7 +338,7 @@ let rec class_type_field env sign self_scope ctf = ) :: !delayed_meth_specs; Tctf_method (lab, priv, virt, returned_cty) | _ -> - let cty = transl_simple_type env ~closed:false Global sty in + let cty = transl_simple_type env ~closed:false Alloc.Const.legacy sty in let ty = cty.ctyp_type in add_method loc env lab priv virt ty sign; Tctf_method (lab, priv, virt, cty)) @@ -362,7 +362,7 @@ and class_signature virt env pcsig self_scope loc = (* Introduce a dummy method preventing self type from being closed. *) Ctype.add_dummy_method env ~scope:self_scope sign; - let self_cty = transl_simple_type env ~closed:false Global sty in + let self_cty = transl_simple_type env ~closed:false Alloc.Const.legacy sty in let self_type = self_cty.ctyp_type in begin try Ctype.unify env self_type sign.csig_self @@ -412,7 +412,7 @@ and class_type_aux env virt self_scope scty = List.length styl))); let ctys = List.map2 (fun sty ty -> - let cty' = transl_simple_type env ~closed:false Global sty in + let cty' = transl_simple_type env ~closed:false Alloc.Const.legacy sty in let ty' = cty'.ctyp_type in begin try Ctype.unify env ty' ty with Ctype.Unify err -> @@ -432,7 +432,7 @@ and class_type_aux env virt self_scope scty = cltyp (Tcty_signature clsig) typ | Pcty_arrow (l, sty, scty) -> - let cty = transl_simple_type env ~closed:false Global sty in + let cty = transl_simple_type env ~closed:false Alloc.Const.legacy sty in let ty = cty.ctyp_type in let ty = if Btype.is_optional l @@ -664,7 +664,7 @@ let rec class_field_first_pass self_loc cl_num sign self_scope acc cf = with_attrs (fun () -> if !Clflags.principal then Ctype.begin_def (); - let cty = Typetexp.transl_simple_type val_env ~closed:false Global styp in + let cty = Typetexp.transl_simple_type val_env ~closed:false Alloc.Const.legacy styp in let ty = cty.ctyp_type in if !Clflags.principal then begin Ctype.end_def (); @@ -714,7 +714,7 @@ let rec class_field_first_pass self_loc cl_num sign self_scope acc cf = No_overriding ("instance variable", label.txt))) end; if !Clflags.principal then Ctype.begin_def (); - let definition = type_exp val_env sdefinition in + let definition = Typecore.type_exp val_env sdefinition in if !Clflags.principal then begin Ctype.end_def (); Ctype.generalize_structure definition.exp_type @@ -757,7 +757,7 @@ let rec class_field_first_pass self_loc cl_num sign self_scope acc cf = with_attrs (fun () -> let sty = Ast_helper.Typ.force_poly sty in - let cty = transl_simple_type val_env ~closed:false Global sty in + let cty = transl_simple_type val_env ~closed:false Alloc.Const.legacy sty in let ty = cty.ctyp_type in add_method loc val_env label.txt priv Virtual ty sign; let field = @@ -797,7 +797,7 @@ let rec class_field_first_pass self_loc cl_num sign self_scope acc cf = | Some sty -> let sty = Ast_helper.Typ.force_poly sty in let cty' = - Typetexp.transl_simple_type val_env ~closed:false Global sty + Typetexp.transl_simple_type val_env ~closed:false Alloc.Const.legacy sty in cty'.ctyp_type in @@ -810,10 +810,10 @@ let rec class_field_first_pass self_loc cl_num sign self_scope acc cf = Ctype.newvar (Layout.value ~why:Object_field) in Ctype.unify val_env (Ctype.newmono ty') ty; - type_approx val_env sbody ty' + Typecore.type_approx val_env sbody ty' | Tpoly (ty1, tl) -> let _, ty1' = Ctype.instance_poly false tl ty1 in - type_approx val_env sbody ty1' + Typecore.type_approx val_env sbody ty1' | _ -> assert false with Ctype.Unify err -> raise(Error(loc, val_env, @@ -943,14 +943,14 @@ and class_field_second_pass cl_num sign met_env field = (fun () -> let ty = Btype.method_type label.txt sign in let self_type = sign.Types.csig_self in - let arrow_desc = Nolabel, Alloc_mode.global, Alloc_mode.global in + let arrow_desc = Nolabel, Mode.Alloc.legacy, Mode.Alloc.legacy in let self_param_type = Btype.newgenty (Tpoly(self_type, [])) in let meth_type = - mk_expected (Btype.newgenty + Typecore.mk_expected (Btype.newgenty (Tarrow(arrow_desc, self_param_type, ty, commu_ok))) in Ctype.raise_nongen_level (); - let texp = type_expect met_env sdefinition meth_type in + let texp = Typecore.type_expect met_env sdefinition meth_type in Ctype.end_def (); let kind = Tcfk_concrete (override, texp) in let desc = Tcf_method(label, priv, kind) in @@ -964,12 +964,12 @@ and class_field_second_pass cl_num sign met_env field = Ctype.raise_nongen_level (); let unit_type = Ctype.instance Predef.type_unit in let self_param_type = Ctype.newmono sign.Types.csig_self in - let arrow_desc = Nolabel, Alloc_mode.global, Alloc_mode.global in + let arrow_desc = Nolabel, Mode.Alloc.legacy, Mode.Alloc.legacy in let meth_type = - mk_expected (Ctype.newty + Typecore.mk_expected (Ctype.newty (Tarrow (arrow_desc, self_param_type, unit_type, commu_ok))) in - let texp = type_expect met_env sexpr meth_type in + let texp = Typecore.type_expect met_env sexpr meth_type in Ctype.end_def (); let desc = Tcf_initializer texp in met_env, mkcf desc loc attributes) @@ -1001,8 +1001,16 @@ and class_fields_second_pass cl_num sign met_env fields = and class_structure cl_num virt self_scope final val_env met_env loc { pcstr_self = spat; pcstr_fields = str } = (* Environment for substructures *) - let val_env = Env.add_lock Alloc_mode.global (Env.add_unboxed_lock val_env) in - let met_env = Env.add_lock Alloc_mode.global (Env.add_unboxed_lock met_env) in + (* Classes and objects are treated very conservatively because the + implementation is unclear. So just to be safe, we add locks here so that + class and objects: + - cannot refer to local or once variables in the + environment + - access to unique variables will be relaxed to shared *) + let val_env = Env.add_escape_lock Class (Env.add_unboxed_lock val_env) in + let val_env = Env.add_share_lock Class val_env in + let met_env = Env.add_escape_lock Class (Env.add_unboxed_lock met_env) in + let met_env = Env.add_share_lock Class met_env in let par_env = met_env in (* Location of self. Used for locations of self arguments *) @@ -1018,10 +1026,10 @@ and class_structure cl_num virt self_scope final val_env met_env loc end; (* Self binder *) - let (self_pat, self_pat_vars) = type_self_pattern val_env spat in + let (self_pat, self_pat_vars) = Typecore.type_self_pattern val_env spat in let val_env, par_env = List.fold_right - (fun {pv_id; _} (val_env, par_env) -> + (fun {Typecore.pv_id; _} (val_env, par_env) -> let name = Ident.name pv_id in let val_env = enter_self_val name val_env in let par_env = enter_self_val name par_env in @@ -1073,7 +1081,7 @@ and class_structure cl_num virt self_scope final val_env met_env loc in let met_env = List.fold_right - (fun {pv_id; pv_type; pv_loc; pv_as_var; pv_attributes} met_env -> + (fun {Typecore.pv_id; pv_type; pv_loc; pv_as_var; pv_attributes} met_env -> add_self_met pv_loc pv_id sign self_var_kind vars cl_num pv_as_var pv_type pv_attributes met_env) self_pat_vars met_env @@ -1107,7 +1115,7 @@ and class_expr_aux cl_num val_env met_env virt self_scope scl = if Path.same decl.cty_path unbound_class then raise(Error(scl.pcl_loc, val_env, Unbound_class_2 lid.txt)); let tyl = List.map - (fun sty -> transl_simple_type val_env ~closed:false Global sty) + (fun sty -> transl_simple_type val_env ~closed:false Alloc.Const.legacy sty) styl in let (params, clty) = @@ -1157,7 +1165,7 @@ and class_expr_aux cl_num val_env met_env virt self_scope scl = cl_attributes = scl.pcl_attributes; } | Pcl_fun (l, Some default, spat, sbody) -> - if has_poly_constraint spat then + if Typecore.has_poly_constraint spat then raise(Error(spat.ppat_loc, val_env, Polymorphic_class_parameter)); let loc = default.pexp_loc in let open Ast_helper in @@ -1196,7 +1204,7 @@ and class_expr_aux cl_num val_env met_env virt self_scope scl = in class_expr cl_num val_env met_env virt self_scope sfun | Pcl_fun (l, None, spat, scl') -> - if has_poly_constraint spat then + if Typecore.has_poly_constraint spat then raise(Error(spat.ppat_loc, val_env, Polymorphic_class_parameter)); if !Clflags.principal then Ctype.begin_def (); let (pat, pv, val_env', met_env) = @@ -1218,7 +1226,7 @@ and class_expr_aux cl_num val_env met_env virt self_scope scl = (id, {exp_desc = Texp_ident(path, mknoloc (Longident.Lident (Ident.name id)), vd, - Id_value); + Id_value, shared_many_use); exp_loc = Location.none; exp_extra = []; exp_type = Ctype.instance vd.val_type; exp_attributes = []; (* check *) @@ -1232,11 +1240,12 @@ and class_expr_aux cl_num val_env met_env virt self_scope scl = | _ -> true in let partial = - let dummy = type_exp val_env (Ast_helper.Exp.unreachable ()) in + let dummy = Typecore.type_exp val_env (Ast_helper.Exp.unreachable ()) in Typecore.check_partial val_env pat.pat_type pat.pat_loc [{c_lhs = pat; c_guard = None; c_rhs = dummy}] in - let val_env' = Env.add_lock Alloc_mode.global val_env' in + let val_env' = Env.add_escape_lock Class val_env' in + let val_env' = Env.add_share_lock Class val_env' in Ctype.raise_nongen_level (); let cl = class_expr cl_num val_env' met_env virt self_scope scl' in Ctype.end_def (); @@ -1289,20 +1298,20 @@ and class_expr_aux cl_num val_env met_env virt self_scope scl = let use_arg sarg l' = Arg ( if not optional || Btype.is_optional l' then - let arg = type_argument val_env sarg ty ty0 in + let arg = Typecore.type_argument val_env sarg ty ty0 in arg, Sort.value else - let ty' = extract_option_type val_env ty - and ty0' = extract_option_type val_env ty0 in - let arg = type_argument val_env sarg ty' ty0' in - option_some val_env arg Value_mode.global, + let ty' = Typecore.extract_option_type val_env ty + and ty0' = Typecore.extract_option_type val_env ty0 in + let arg = Typecore.type_argument val_env sarg ty' ty0' in + Typecore.option_some val_env arg Mode.Value.legacy, (* CR layouts v5: Change the sort when options can hold non-values. *) Sort.value ) in let eliminate_optional_arg () = - Arg (option_none val_env ty0 Location.none, + Arg (Typecore.option_none val_env ty0 Location.none, (* CR layouts v5: Change the sort when options can hold non-values. *) Sort.value @@ -1338,9 +1347,9 @@ and class_expr_aux cl_num val_env met_env virt self_scope scl = if Btype.is_optional l && List.mem_assoc Nolabel sargs then eliminate_optional_arg () else begin - let mode_closure = Alloc_mode.global in - let mode_arg = Alloc_mode.global in - let mode_ret = Alloc_mode.global in + let mode_closure = Mode.Alloc.legacy in + let mode_arg = Mode.Alloc.legacy in + let mode_ret = Mode.Alloc.legacy in let sort_arg = Sort.value in Omitted { mode_closure; mode_arg; mode_ret; sort_arg } end @@ -1401,7 +1410,7 @@ and class_expr_aux cl_num val_env met_env virt self_scope scl = let expr = {exp_desc = Texp_ident(path, mknoloc(Longident.Lident (Ident.name id)),vd, - Id_value); + Id_value, shared_many_use); exp_loc = Location.none; exp_extra = []; exp_type = Ctype.instance vd.val_type; exp_attributes = []; @@ -1427,7 +1436,7 @@ and class_expr_aux cl_num val_env met_env virt self_scope scl = in let cl = class_expr cl_num val_env met_env virt self_scope scl' in let () = if rec_flag = Recursive then - check_recursive_bindings val_env defs + Typecore.check_recursive_bindings val_env defs in rc {cl_desc = Tcl_let (rec_flag, defs, vals, cl); cl_loc = scl.pcl_loc; @@ -1502,7 +1511,7 @@ let rec approx_declaration cl = classes to work with layouts *) in let arg = Ctype.newmono arg in - let arrow_desc = l, Alloc_mode.global, Alloc_mode.global in + let arrow_desc = l, Mode.Alloc.legacy, Mode.Alloc.legacy in Ctype.newty (Tarrow (arrow_desc, arg, approx_declaration cl, commu_ok)) | Pcl_let (_, _, cl) -> @@ -1521,7 +1530,7 @@ let rec approx_description ct = relax layouts in classes *) in let arg = Ctype.newmono arg in - let arrow_desc = l, Alloc_mode.global, Alloc_mode.global in + let arrow_desc = l, Mode.Alloc.legacy, Mode.Alloc.legacy in Ctype.newty (Tarrow (arrow_desc, arg, approx_description ct, commu_ok)) | _ -> Ctype.newvar (Layout.value ~why:Object) @@ -2006,7 +2015,7 @@ let class_declarations env cls = (fun ci -> ci.cls_id, ci.cls_info.ci_expr) info) in - check_recursive_class_bindings env ids exprs; + Typecore.check_recursive_class_bindings env ids exprs; info, env let class_descriptions env cls = diff --git a/ocaml/typing/typecore.ml b/ocaml/typing/typecore.ml index baf7ad36a73..83422c43f1f 100644 --- a/ocaml/typing/typecore.ml +++ b/ocaml/typing/typecore.ml @@ -20,9 +20,11 @@ open Asttypes open Parsetree open Layouts open Types +open Mode open Typedtree open Btype open Ctype +open Uniqueness_analysis type comprehension_type = | List_comprehension @@ -179,16 +181,20 @@ type error = | Missing_type_constraint | Wrong_expected_kind of wrong_kind_sort * wrong_kind_context * type_expr | Expr_not_a_record_type of type_expr - | Local_value_escapes of Value_mode.error * submode_reason * Env.escaping_context option + | Submode_failed of + Value.error * submode_reason * + Env.closure_context option * + Env.shared_context option | Local_application_complete of Asttypes.arg_label * [`Prefix|`Single_arg|`Entire_apply] - | Param_mode_mismatch of type_expr - | Uncurried_function_escapes + | Param_mode_mismatch of type_expr * Alloc.error + | Uncurried_function_escapes of Alloc.error | Local_return_annotation_mismatch of Location.t | Function_returns_local | Tail_call_local_returning | Bad_tail_annotation of [`Conflict|`Not_a_tailcall] | Optional_poly_param | Exclave_in_nontail_position + | Exclave_returns_not_local | Unboxed_int_literals_not_supported | Unboxed_float_literals_not_supported | Function_type_not_rep of type_expr * Layout.Violation.t @@ -292,13 +298,13 @@ type position_in_region = together with the mode of that region, and whether it is also the tail of a function (for tail call escape detection) *) - | RTail of Value_mode.t * position_in_function + | RTail of Regionality.t * position_in_function type expected_mode = { position : position_in_region; - escaping_context : Env.escaping_context option; + closure_context : Env.closure_context option; (* the upper bound of mode*) - mode : Value_mode.t; + mode : Value.t; (* in some scnearios, the above `mode` will be the exact mode of the expression to be typed, indicated by the `exact` field. @@ -308,7 +314,6 @@ type expected_mode = - Taking an exact as upper bound could cause issues. In particular for the inner function of an uncurried function. - Therefore, if we just take it as exact regardless of the `exact` field, we should be safe. Moreover, note that for most allocations, they want to use expected_mode.mode as exact anyway, because that would be the @@ -316,7 +321,13 @@ type expected_mode = is uncurried functions where the mode constraints are tricky. *) exact : bool; - tuple_modes : Value_mode.t list; + + (* Indicates that the expression was directly annotated with [local], which + should force any allocations to be on the stack. If [true] the [mode] field + must be greater than [local]. *) + strictly_local : bool; + + tuple_modes : Value.t list; (* for t in tuple_modes, t <= regional_to_global mode *) } @@ -325,7 +336,7 @@ type position_and_mode = { apply_position : apply_position; (* [Some m] if [position] is [Tail], where m is the mode of the surrounding function's return mode *) - region_mode : Value_mode.t option; + region_mode : Regionality.t option; } let position_and_mode_default = { @@ -367,60 +378,118 @@ let check_tail_call_local_returning loc env ap_mode {region_mode; _} = (* This application is at the tail of a function with a region; if ap_mode is local, funct_ret_mode needs to be local as well. *) match - Value_mode.submode (Value_mode.of_alloc ap_mode) region_mode + Regionality.submode (Regionality.of_locality ap_mode) region_mode with | Ok () -> () | Error _ -> raise (Error (loc, env, Tail_call_local_returning)) end | None -> () +(* Describes how a modality affects field projection. Returns the mode + of the projection given the mode of the record. *) +let _modality_unbox_left global_flag mode = + match global_flag with + | Global -> + mode |> Value.to_global |> Value.to_shared |> Value.to_many + | Unrestricted -> mode + +(* Describes how a modality affects record construction. Gives the + expected mode of the field given the expected mode of the record. *) +let _modality_box_right global_flag mode = + match global_flag with + | Global -> + mode |> Value.to_global |> Value.to_shared |> Value.to_many + | Unrestricted -> mode + +(* Describes how a modality affects field projection. Returns the mode + of the projection given the mode of the record. *) +let modality_unbox_left global_flag mode = + match global_flag with + | Global -> + mode |> Value.to_global |> Value.to_shared |> Value.to_many + | Unrestricted -> mode + +(* Describes how a modality affects record construction. Gives the + expected mode of the field given the expected mode of the record. *) +let modality_box_right global_flag mode = + match global_flag with + | Global -> + mode |> Value.to_global |> Value.to_shared |> Value.to_many + | Unrestricted -> mode + let mode_default mode = { position = RNontail; - escaping_context = None; + closure_context = None; mode = mode; exact = false; + strictly_local = false; tuple_modes = [] } +let mode_legacy = mode_default Value.legacy + (* used when entering a function; mode is the mode of the function region *) let mode_return mode = - { (mode_default (Value_mode.local_to_regional mode)) with - position = RTail (mode, FTail); - escaping_context = Some Return; + { (mode_default (Value.local_to_regional mode)) with + position = RTail (Value.locality mode, FTail); + closure_context = Some Return; } (* used when entering a region.*) let mode_region mode = - { (mode_default (Value_mode.local_to_regional mode)) with - position = RTail (mode, FNontail); - escaping_context = None; + { (mode_default (Value.local_to_regional mode)) with + position = RTail (Value.locality mode, FNontail); + closure_context = None; } -let mode_local = - mode_default Value_mode.local - -let mode_local_with_position position = - { mode_local with position } +let mode_max = + mode_default Value.max_mode -let mode_global = - mode_default Value_mode.global +let mode_max_with_position position = + { mode_max with position } let mode_subcomponent expected_mode = - mode_default (Value_mode.regional_to_global expected_mode.mode) + mode_default (Value.regional_to_global expected_mode.mode) + +let mode_box_modality gf expected_mode = + mode_default (modality_box_right gf expected_mode.mode) + +let mode_global expected_mode = + { expected_mode with + mode = Value.to_global expected_mode.mode } + +let mode_local expected_mode = + { expected_mode with + mode = Value.to_local expected_mode.mode } + +let mode_exclave expected_mode = + mode_default (Value.to_local expected_mode.mode) + +let mode_strictly_local expected_mode = + { (mode_local expected_mode) + with strictly_local = true + } + +let mode_unique expected_mode = + { expected_mode with + mode = Value.to_unique expected_mode.mode } + +let mode_once expected_mode = + { expected_mode with + mode = Value.to_once expected_mode.mode } let mode_tailcall_function mode = { (mode_default mode) with - escaping_context = Some Tailcall_function } + closure_context = Some Tailcall_function } let mode_tailcall_argument mode = { (mode_default mode) with - escaping_context = Some Tailcall_argument } + closure_context = Some Tailcall_argument } let mode_partial_application expected_mode = - { (mode_default (Value_mode.regional_to_global expected_mode.mode)) - with - escaping_context = Some Partial_application } + { (mode_default (Value.regional_to_global expected_mode.mode)) with + closure_context = Some Partial_application } let mode_trywith expected_mode = @@ -435,53 +504,51 @@ let mode_exact mode = exact = true } let mode_argument ~funct ~index ~position ~partial_app alloc_mode = - let vmode = Value_mode.of_alloc alloc_mode in + let vmode = Value.of_alloc alloc_mode in if partial_app then mode_default vmode else match funct.exp_desc, index, (position : apply_position) with | Texp_ident (_, _, {val_kind = Val_prim {Primitive.prim_name = ("%sequor"|"%sequand")}}, - Id_prim _), 1, Tail -> + Id_prim _, _), 1, Tail -> (* The second argument to (&&) and (||) is in tail position if the call is *) (* vmode is wrong; fine because of mode crossing on boolean *) mode_return vmode - | Texp_ident (_, _, _, Id_prim _), _, _ -> + | Texp_ident (_, _, _, Id_prim _, _), _, _ -> (* Other primitives cannot be tail-called *) mode_default vmode | _, _, (Nontail | Default) -> mode_default vmode | _, _, Tail -> - mode_tailcall_argument (Value_mode.local_to_regional vmode) + mode_tailcall_argument (Value.local_to_regional vmode) -let mode_lazy = - { mode_global with - position = RTail (Value_mode.global, FTail) } +let mode_lazy expected_mode = + { (mode_global expected_mode) with + position = RTail (Regionality.global, FTail) } - -let submode ~loc ~env ~reason mode expected_mode = +(* expected_mode.closure_context explains why expected_mode.mode is low; + shared_context explains why mode.uniqueness is high *) +let submode ~loc ~env ?(reason = Other) ?shared_context mode expected_mode = let res = match expected_mode.tuple_modes with - | [] -> Value_mode.submode mode expected_mode.mode - | ts -> Value_mode.submode_meet mode ts + | [] -> Value.submode mode expected_mode.mode + | ts -> Value.submode_meet mode ts in match res with | Ok () -> () | Error failure_reason -> - let context = expected_mode.escaping_context in - let error = Local_value_escapes(failure_reason, reason, context) in + let closure_context = expected_mode.closure_context in + let error = + Submode_failed(failure_reason, reason, closure_context, shared_context) + in raise (Error(loc, env, error)) let escape ~loc ~env ~reason m = - submode ~loc ~env ~reason m mode_global - -let eqmode ~loc ~env m1 m2 err = - match Alloc_mode.equate m1 m2 with - | Ok () -> () - | Error () -> raise (Error(loc, env, err)) + submode ~loc ~env ~reason m mode_legacy type expected_pat_mode = - { mode : Value_mode.t; - tuple_modes : Value_mode.t list; } + { mode : Value.t; + tuple_modes : Value.t list; } let simple_pat_mode mode = { mode; tuple_modes = [] } @@ -489,17 +556,16 @@ let simple_pat_mode mode = let tuple_pat_mode mode tuple_modes = { mode; tuple_modes } -let allocations : Alloc_mode.t list ref = Local_store.s_ref [] +let allocations : Alloc.t list ref = Local_store.s_ref [] let reset_allocations () = allocations := [] let register_allocation_mode alloc_mode = - match alloc_mode with - | Amode _const -> () - | Amodevar _ -> allocations := alloc_mode :: !allocations + if not (Alloc.is_const alloc_mode) then + allocations := alloc_mode :: !allocations let register_allocation_value_mode mode = - let alloc_mode = Value_mode.regional_to_global_alloc mode in + let alloc_mode = Value.regional_to_global_alloc mode in register_allocation_mode alloc_mode; alloc_mode @@ -508,7 +574,7 @@ let register_allocation (expected_mode : expected_mode) = let optimise_allocations () = List.iter - (fun mode -> ignore (Alloc_mode.constrain_upper mode)) + (fun mode -> ignore (Alloc.constrain_upper mode)) !allocations; reset_allocations () @@ -668,17 +734,99 @@ let has_poly_constraint spat = let mode_cross env (ty : type_expr) = is_principal ty && is_always_global env ty -let mode_cross_to_global env ty mode = +let mode_cross_to_min env ty mode = if mode_cross env ty then - Value_mode.global + Value.min_mode else mode let expect_mode_cross env ty (expected_mode : expected_mode) = if mode_cross env ty then - {expected_mode with mode = Value_mode.local; exact = false} + { expected_mode with + mode = Value.max_mode; + exact = false; + strictly_local = false } else expected_mode +let has_unique_attr loc attrs = + match Builtin_attributes.has_unique attrs with + | Ok l -> l + | Error () -> + raise(Typetexp.Error(loc, Env.empty, Unsupported_extension Unique)) + +let has_once_attr loc attrs = + match Builtin_attributes.has_once attrs with + | Ok l -> l + | Error () -> + raise(Typetexp.Error(loc, Env.empty, Unsupported_extension Unique)) + +let has_unique_attr_pat ppat = + has_unique_attr ppat.ppat_loc ppat.ppat_attributes + +let has_unique_attr_exp pexp = + has_unique_attr pexp.pexp_loc pexp.pexp_attributes + +let has_once_attr_pat ppat = + has_once_attr ppat.ppat_loc ppat.ppat_attributes + +let has_once_attr_exp pexp = + has_once_attr pexp.pexp_loc pexp.pexp_attributes + +let mode_annots_none = + {locality = None; uniqueness = None; linearity = None} + +let mode_annots_from_pat_attrs sp = + let locality = + if has_local_attr_pat sp then Some Locality.Const.Local + else None + and uniqueness = + if has_unique_attr_pat sp then Some Uniqueness.Const.Unique + else None + and linearity = + if has_once_attr_pat sp then Some Linearity.Const.Once + else None + in + {locality; uniqueness; linearity} + +let mode_annots_or_default annot ~default = + let locality = Option.value annot.locality ~default:default.locality in + let uniqueness = Option.value annot.uniqueness ~default:default.uniqueness in + let linearity = Option.value annot.linearity ~default:default.linearity in + {locality; uniqueness; linearity} + +let mode_annots_from_exp_attrs exp = + let locality = + if has_local_attr_exp exp then Some Locality.Const.Local + else None + and uniqueness = + if has_unique_attr_exp exp then Some Uniqueness.Const.Unique + else None + and linearity = + if has_once_attr_exp exp then Some Linearity.Const.Once + else None + in + {locality; uniqueness; linearity} + +let apply_mode_annots ~loc ~env ~ty_expected ann mode = + let error axis = + raise (Error(loc, env, Param_mode_mismatch (ty_expected, axis))) + in + Option.iter (fun locality -> + match Locality.equate (Locality.of_const locality) (Alloc.locality mode) with + | Ok () -> () + | Error () -> error `Locality + ) ann.locality; + Option.iter (fun uniqueness -> + match Uniqueness.equate (Uniqueness.of_const uniqueness) (Alloc.uniqueness mode) with + | Ok () -> () + | Error () -> error `Uniqueness + ) ann.uniqueness; + Option.iter (fun linearity -> + match Linearity.equate (Linearity.of_const linearity) (Alloc.linearity mode) with + | Ok () -> () + | Error () -> error `Linearity + ) ann.linearity + (* Typing of patterns *) (* unification inside type_exp and type_expect *) @@ -778,7 +926,7 @@ let finalize_variants p = type pattern_variable = { pv_id: Ident.t; - pv_mode: Value_mode.t; + pv_mode: Value.t; pv_type: type_expr; pv_loc: Location.t; pv_as_var: bool; @@ -994,7 +1142,7 @@ let enter_orpat_variables loc env p1_vs p2_vs = | Unify err -> raise(Error(loc, env, Or_pattern_type_clash(x1, err))) end; - let m = Value_mode.join [m1; m2] in + let m = Value.join [m1; m2] in let var = { pv1 with pv_mode = m } in let vars, alist = unify_vars rem1 rem2 in var :: vars, (x2, x1) :: alist @@ -1046,7 +1194,7 @@ and build_as_type_aux ~refine ~mode (env : Env.t ref) p = let priv = (cstr.cstr_private = Private) in let mode = if priv || pl <> [] then mode - else Value_mode.newvar () + else Value.newvar () in let keep = priv || cstr.cstr_existentials <> [] || @@ -1063,7 +1211,7 @@ and build_as_type_aux ~refine ~mode (env : Env.t ref) p = | Tpat_variant(l, p', _) -> let ty = Option.map (build_as_type env) p' in let mode = - if p' = None then Value_mode.newvar () + if p' = None then Value.newvar () else mode in let ty = @@ -1107,7 +1255,7 @@ and build_as_type_aux ~refine ~mode (env : Env.t ref) p = let ty1, mode1 = build_as_type_and_mode ~refine ~mode env p1 in let ty2, mode2 = build_as_type_and_mode ~refine ~mode env p2 in unify_pat ~refine env {p2 with pat_type = ty2} ty1; - ty1, Value_mode.join [mode1; mode2] + ty1, Value.join [mode1; mode2] | Some row -> let Row {fields; fixed; name} = row_repr row in let all_constant = @@ -1118,7 +1266,7 @@ and build_as_type_aux ~refine ~mode (env : Env.t ref) p = fields in let mode = - if all_constant then Value_mode.newvar () + if all_constant then Value.newvar () else mode in let ty = @@ -1132,7 +1280,7 @@ and build_as_type_aux ~refine ~mode (env : Env.t ref) p = | Tpat_constant _ -> let mode = if Ctype.is_always_global !env p.pat_type - then Value_mode.newvar () + then Value.newvar () else mode in p.pat_type, mode @@ -1187,7 +1335,7 @@ let solve_constructor_annotation tps env name_list sty ty_args ty_ex = name_list in begin_def (); - let cty, ty, force = Typetexp.transl_simple_type_delayed !env Global sty in + let cty, ty, force = Typetexp.transl_simple_type_delayed !env Alloc.Const.legacy sty in end_def (); generalize_structure ty; tps.tps_pattern_force <- force :: tps.tps_pattern_force; @@ -1447,7 +1595,7 @@ let type_for_loop_like_index ~error ~loc ~env ~param ~any ~var = | Ppat_any -> any (Ident.create_local "_for") | Ppat_var name -> var ~name - ~pv_mode:Value_mode.global + ~pv_mode:Value.min_mode ~pv_type:(instance Predef.type_int) ~pv_loc:loc ~pv_as_var:false @@ -2280,7 +2428,7 @@ and type_pat_aux map_fold_cont (fun p -> let alloc_mode = match mutability with - | Mutable -> simple_pat_mode Value_mode.global + | Mutable -> simple_pat_mode Value.legacy | Immutable -> alloc_mode in type_pat ~alloc_mode tps Value p ty_elt) spl (fun pl -> @@ -2344,7 +2492,7 @@ and type_pat_aux end | Ppat_var name -> let ty = instance expected_ty in - let alloc_mode = mode_cross_to_global !env expected_ty alloc_mode.mode in + let alloc_mode = mode_cross_to_min !env expected_ty alloc_mode.mode in let id = (* PR#7330 *) if name.txt = "*extension*" then Ident.create_local name.txt @@ -2388,7 +2536,7 @@ and type_pat_aux assert construction_not_used_in_counterexamples; type_pat tps Value sq expected_ty (fun q -> let ty_var, mode = solve_Ppat_alias ~refine ~mode:alloc_mode.mode env q in - let mode = mode_cross_to_global !env expected_ty mode in + let mode = mode_cross_to_min !env expected_ty mode in let id = enter_variable ~is_as_variable:true tps loc name mode ty_var sp.ppat_attributes @@ -2530,11 +2678,7 @@ and type_pat_aux map_fold_cont (fun (p,(ty, gf)) -> - let alloc_mode = - match gf with - | Global -> Value_mode.global - | Unrestricted -> alloc_mode.mode - in + let alloc_mode = modality_unbox_left gf alloc_mode.mode in let alloc_mode = simple_pat_mode alloc_mode in type_pat ~alloc_mode tps Value p ty) (List.combine sargs (List.combine ty_args_ty ty_args_gf)) @@ -2581,9 +2725,7 @@ and type_pat_aux let ty_arg = solve_Ppat_record_field ~refine loc env label label_lid record_ty in let alloc_mode = - match label.lbl_global with - | Global -> Value_mode.global - | Unrestricted -> alloc_mode.mode + modality_unbox_left label.lbl_global alloc_mode.mode in let alloc_mode = simple_pat_mode alloc_mode in type_pat tps Value ~alloc_mode sarg ty_arg (fun arg -> @@ -2727,12 +2869,13 @@ and type_pat_aux | Ppat_constraint(sp', sty) -> assert construction_not_used_in_counterexamples; (* Pretend separate = true *) - let type_mode = - if has_local_attr_pat sp then Alloc_mode.Local - else Alloc_mode.Global - in let cty, ty, expected_ty' = - solve_Ppat_constraint ~refine tps loc env type_mode sty expected_ty in + let mode_annots = mode_annots_from_pat_attrs sp in + let type_modes = + mode_annots_or_default mode_annots ~default:Alloc.Const.legacy + in + solve_Ppat_constraint ~refine tps loc env type_modes sty expected_ty + in type_pat ~alloc_mode tps category sp' expected_ty' (fun p -> (*Format.printf "%a@.%a@." Printtyp.raw_type_expr ty @@ -2762,7 +2905,7 @@ and type_pat_aux loc, sp.ppat_attributes) :: p.pat_extra } ) | Ppat_exception p -> - let alloc_mode = simple_pat_mode Value_mode.global in + let alloc_mode = simple_pat_mode Value.legacy in type_pat tps Value ~alloc_mode p Predef.type_exn (fun p_exn -> rcp k { pat_desc = Tpat_exception p_exn; @@ -2796,7 +2939,7 @@ let partial_pred ~lev ~splitting_mode ?(explode=0) } in try let tps = create_type_pat_state Modules_ignored in - let alloc_mode = simple_pat_mode Value_mode.global in + let alloc_mode = simple_pat_mode Value.min_mode in let typed_p = type_pat tps Value ~lev ~mode ~alloc_mode env p expected_ty in set_state state env; (* types are invalidated but we don't need them here *) @@ -2859,7 +3002,7 @@ let type_class_arg_pattern cl_num val_env met_env l spat = let tps = create_type_pat_state Modules_rejected in (* CR layouts: will change when we relax layout restrictions in classes. *) let nv = newvar (Layout.value ~why:Class_argument) in - let alloc_mode = simple_pat_mode Value_mode.global in + let alloc_mode = simple_pat_mode Value.legacy in let pat = type_pat tps Value ~no_existentials:In_class_args ~alloc_mode (ref val_env) spat nv in @@ -2916,7 +3059,7 @@ let type_self_pattern env spat = let spat = Pat.mk(Ppat_alias (spat, mknoloc "selfpat-*")) in let tps = create_type_pat_state Modules_rejected in let nv = newvar (Layout.value ~why:Object) in - let alloc_mode = simple_pat_mode Value_mode.global in + let alloc_mode = simple_pat_mode Value.legacy in let pat = type_pat tps Value ~no_existentials:In_self_pattern ~alloc_mode (ref env) spat nv in @@ -2996,7 +3139,7 @@ let rec final_subexpression exp = let is_prim ~name funct = match funct.exp_desc with - | Texp_ident (_, _, {val_kind=Val_prim{Primitive.prim_name; _}}, Id_prim _) -> + | Texp_ident (_, _, {val_kind=Val_prim{Primitive.prim_name; _}}, Id_prim _, _) -> prim_name = name | _ -> false @@ -3023,26 +3166,26 @@ type untyped_apply_arg = ty_arg0 : type_expr; sort_arg : sort; commuted : bool; - mode_fun : Alloc_mode.t; - mode_arg : Alloc_mode.t; + mode_fun : Alloc.t; + mode_arg : Alloc.t; wrapped_in_some : bool; } | Unknown_arg of { sarg : Parsetree.expression; ty_arg_mono : type_expr; sort_arg : sort; - mode_fun : Alloc_mode.t; - mode_arg : Alloc_mode.t; } + mode_fun : Alloc.t; + mode_arg : Alloc.t} | Eliminated_optional_arg of - { mode_fun: Alloc_mode.t; + { mode_fun: Alloc.t; ty_arg : type_expr; sort_arg : sort; - mode_arg : Alloc_mode.t; + mode_arg : Alloc.t; level: int; } type untyped_omitted_param = - { mode_fun: Alloc_mode.t; + { mode_fun: Alloc.t; ty_arg : type_expr; - mode_arg : Alloc_mode.t; + mode_arg : Alloc.t; level: int; sort_arg : sort } @@ -3071,7 +3214,7 @@ let remaining_function_type ty_ret mode_ret rev_args = (Tarrow (arrow_desc, ty_arg, ty_ret, commu_ok)) in let mode_ret = - Alloc_mode.join (mode_fun :: closed_args) + Alloc.join (mode_fun :: closed_args) in (ty_ret, mode_ret, closed_args)) (ty_ret, mode_ret, []) rev_args @@ -3109,9 +3252,9 @@ let check_local_application_complete ~env ~app_loc args = | _ -> false in let submode m1 m2 = - match Alloc_mode.submode m1 m2 with + match Alloc.submode m1 m2 with | Ok () -> () - | Error () -> + | Error _ -> let loc, loc_kind = match arg with | Arg (Known_arg {sarg; _} | Unknown_arg {sarg; _}) -> @@ -3164,8 +3307,8 @@ let collect_unknown_apply_args env funct ty_fun mode_fun rev_args sargs ret_tvar then Location.prerr_warning sarg.pexp_loc Warnings.Ignored_extra_argument; - let mode_arg = Alloc_mode.newvar () in - let mode_ret = Alloc_mode.newvar () in + let mode_arg = Alloc.newvar () in + let mode_ret = Alloc.newvar () in let kind = (lbl, mode_arg, mode_ret) in unify env ty_fun (newty (Tarrow(kind,ty_arg,ty_res,commu_var ()))); @@ -3313,12 +3456,17 @@ let type_omitted_parameters expected_mode env ty_ret mode_ret args = (fun (marg, exp) -> submode ~loc:exp.exp_loc ~env ~reason:Other marg (mode_partial_application expected_mode); - Value_mode.regional_to_local_alloc marg) + Value.regional_to_local_alloc marg) open_args in let closed_args = new_closed_args @ closed_args in let open_args = [] in - let mode_closure = Alloc_mode.join (mode_fun :: closed_args) in + let mode_closed_args = List.map Alloc.close_over closed_args in + let mode_partial_fun = Alloc.partial_apply mode_fun in + let mode_closure, _ = + Alloc.newvar_above (Alloc.join + (mode_partial_fun:: mode_closed_args)) + in register_allocation_mode mode_closure; let arg = Omitted { mode_closure; mode_arg; mode_ret; sort_arg } in let args = (lbl, arg) :: args in @@ -3373,7 +3521,7 @@ let rec is_nonexpansive exp = | Kept _ -> true) fields && is_nonexpansive_opt extended_expression - | Texp_field(exp, _, _, _) -> is_nonexpansive exp + | Texp_field(exp, _, _, _, _) -> is_nonexpansive exp | Texp_ifthenelse(_cond, ifso, ifnot) -> is_nonexpansive ifso && is_nonexpansive_opt ifnot | Texp_sequence (_e1, _layout, e2) -> is_nonexpansive e2 (* PR#4354 *) @@ -3412,7 +3560,7 @@ let rec is_nonexpansive exp = { exp_desc = Texp_ident (_, _, {val_kind = Val_prim {Primitive.prim_name = ("%raise" | "%reraise" | "%raise_notrace")}}, - Id_prim _) }, + Id_prim _, _) }, [Nolabel, Arg (e, _)], _, _) -> is_nonexpansive e | Texp_array (_, _ :: _, _) @@ -3520,6 +3668,16 @@ let is_local_returning_expr e = {txt = "extension.local"|"ocaml.local"|"local"}, PStr []) }, [Nolabel, _]) -> true, e.pexp_loc + | Pexp_apply + ({ pexp_desc = Pexp_extension( + {txt = "extension.unique"|"ocaml.unique"|"unique"}, PStr []) }, + [Nolabel, exp]) -> + loop exp + | Pexp_apply + ({ pexp_desc = Pexp_extension( + {txt = "extension.once" | "ocaml.once" | "once"}, PStr []) }, + [Nolabel, exp]) -> + loop exp | Pexp_ident _ | Pexp_constant _ | Pexp_apply _ | Pexp_tuple _ | Pexp_construct _ | Pexp_variant _ | Pexp_record _ | Pexp_field _ | Pexp_setfield _ | Pexp_array _ | Pexp_while _ | Pexp_for _ | Pexp_send _ @@ -3614,8 +3772,8 @@ let rec approx_type env sty = Typetexp.transl_simple_type env ~closed:false arg_mode arg_sty in let ret = approx_type env sty in - let marg = Alloc_mode.of_const arg_mode in - let mret = Alloc_mode.newvar () in + let marg = Alloc.of_const arg_mode in + let mret = Alloc.newvar () in newty (Tarrow ((p,marg,mret), arg_ty.ctyp_type, ret, commu_ok)) end | Ptyp_arrow (p, arg_sty, sty) -> @@ -3626,8 +3784,8 @@ let rec approx_type env sty = else newvar (Layout.of_new_sort_var ~why:Function_argument) in let ret = approx_type env sty in - let marg = Alloc_mode.of_const arg_mode in - let mret = Alloc_mode.newvar () in + let marg = Alloc.of_const arg_mode in + let mret = Alloc.newvar () in newty (Tarrow ((p,marg,mret), newmono arg, ret, commu_ok)) | Ptyp_tuple args -> newty (Ttuple (List.map (approx_type env) args)) @@ -3656,9 +3814,9 @@ let type_pattern_approx env spat ty_expected = | None -> match spat.ppat_desc with | Ppat_constraint(_, ({ptyp_desc=Ptyp_poly _} as sty)) -> + let mode_annots = mode_annots_from_pat_attrs spat in let arg_type_mode = - if has_local_attr_pat spat then Alloc_mode.Local - else Alloc_mode.Global + mode_annots_or_default mode_annots ~default:Alloc.Const.legacy in let ty_pat = Typetexp.transl_simple_type env ~closed:false arg_type_mode sty @@ -3669,15 +3827,15 @@ let type_pattern_approx env spat ty_expected = | _ -> () let rec type_function_approx env loc label spato sexp in_function ty_expected = - let has_local, has_poly = + let mode_annots, has_poly = match spato with - | None -> false, false + | None -> None, false | Some spat -> - let has_local = has_local_attr_pat spat in + let mode_annots = mode_annots_from_pat_attrs spat in let has_poly = has_poly_constraint spat in if has_poly && is_optional label then raise(Error(spat.ppat_loc, env, Optional_poly_param)); - has_local, has_poly + Some mode_annots, has_poly in let loc_fun, ty_fun = match in_function with @@ -3692,9 +3850,10 @@ let rec type_function_approx env loc label spato sexp in_function ty_expected = in raise (Error(loc_fun, env, err)) in - if has_local then - eqmode ~loc ~env arg_mode Alloc_mode.local - (Param_mode_mismatch ty_expected); + Option.iter + (fun mode_annots -> + apply_mode_annots ~loc ~env ~ty_expected mode_annots arg_mode) + mode_annots; if has_poly then begin match spato with | None -> () @@ -3745,6 +3904,16 @@ and type_approx_aux env sexp in_function ty_expected = {txt = "extension.local"|"ocaml.local"|"local"}, PStr []) }, [Nolabel, e]) -> type_approx_aux env e None ty_expected + | Pexp_apply + ({ pexp_desc = Pexp_extension( + {txt = "extension.unique" | "ocaml.unique" | "unique"}, PStr []) }, + [Nolabel, e]) -> + type_approx_aux env e None ty_expected + | Pexp_apply + ({ pexp_desc = Pexp_extension( + {txt = "extension.once" | "ocaml.once" | "once"}, PStr []) }, + [Nolabel, e]) -> + type_approx_aux env e None ty_expected | Pexp_apply ({ pexp_desc = Pexp_extension({txt = "extension.escape"}, PStr []) }, [Nolabel, e]) -> @@ -4165,6 +4334,27 @@ let with_explanation explanation f = let err = Expr_type_clash(err', Some explanation, exp') in raise (Error (loc', env', err)) +let unique_use ~loc ~env mode_l mode_r = + let uniqueness = Value.uniqueness mode_r in + let linearity = Value.linearity mode_l in + if not (Language_extension.is_enabled Unique) then begin + (* if unique extension is not enabled, we will not run uniqueness analysis; + instead, we force all uses to be shared and many. This is equivalent to + running a UA which forces everything *) + (match Uniqueness.submode Uniqueness.shared uniqueness with + | Ok () -> () + | Error () -> + raise (Error(loc, env, Submode_failed(`Uniqueness, Other, None, None))) + ); + (match Linearity.submode linearity Linearity.many with + | Ok () -> () + | Error () -> + raise (Error (loc, env, Submode_failed(`Linearity, Other, None, None))) + ); + (Uniqueness.shared, Linearity.many) + end + else (uniqueness, linearity) + let rec type_exp ?recarg env expected_mode sexp = (* We now delegate everything to type_expect *) type_expect ?recarg env expected_mode sexp @@ -4220,7 +4410,7 @@ and type_expect_ jexp | None -> match sexp.pexp_desc with | Pexp_ident lid -> - let path, mode, desc, kind = type_ident env ~recarg lid in + let path, mode, shared_context, desc, kind = type_ident env ~recarg lid in let exp_desc = match desc.val_kind with | Val_ivar (_, cl_num) -> @@ -4236,15 +4426,20 @@ and type_expect_ let (path, _) = Env.find_value_by_name (Longident.Lident ("self-" ^ cl_num)) env in - Texp_ident(path, lid, desc, kind) + Texp_ident(path, lid, desc, kind, + unique_use ~loc ~env mode expected_mode.mode) | _ -> - Texp_ident(path, lid, desc, kind) + Texp_ident(path, lid, desc, kind, + unique_use ~loc ~env mode expected_mode.mode) in - ruem ~mode ~expected_mode { + let exp = rue { exp_desc; exp_loc = loc; exp_extra = []; exp_type = desc.val_type; exp_attributes = sexp.pexp_attributes; exp_env = env } + in + submode ~loc ~env ?shared_context mode expected_mode; + exp | Pexp_constant(Pconst_string (str, _, _) as cst) -> let cst = constant_or_raise env loc cst in (* Terrible hack for format strings *) @@ -4413,12 +4608,12 @@ and type_expect_ ~attrs:[Attr.mk (mknoloc "#default") (PStr [])] [Vb.mk spat smatch] sbody in - let has_local = has_local_attr_pat spat in + let mode_annots = mode_annots_from_pat_attrs spat in type_function ?in_function loc sexp.pexp_attributes env expected_mode ty_expected_explained - l ~has_local ~has_poly:false [Exp.case pat body] + l ~mode_annots ~has_poly:false [Exp.case pat body] | Pexp_fun (l, None, spat, sbody) -> - let has_local = has_local_attr_pat spat in + let mode_annots = mode_annots_from_pat_attrs spat in let has_poly = has_poly_constraint spat in if has_poly && is_optional l then raise(Error(spat.ppat_loc, env, Optional_poly_param)); @@ -4427,42 +4622,64 @@ and type_expect_ raise (Typetexp.Error (loc, env, Unsupported_extension Polymorphic_parameters)); type_function ?in_function loc sexp.pexp_attributes env - expected_mode ty_expected_explained l ~has_local + expected_mode ty_expected_explained l ~mode_annots ~has_poly [Ast_helper.Exp.case spat sbody] | Pexp_function caselist -> + let mode_annots = mode_annots_none in type_function ?in_function loc sexp.pexp_attributes env expected_mode - ty_expected_explained Nolabel ~has_local:false ~has_poly:false caselist + ty_expected_explained Nolabel ~mode_annots ~has_poly:false caselist + | Pexp_apply + ({ pexp_desc = Pexp_extension({ + txt = ("ocaml.unique" | "unique" | "extension.unique" as txt)}, PStr []) }, + [Nolabel, sbody]) -> + if txt = "extension.unique" && not (Language_extension.is_enabled Unique) then + raise (Typetexp.Error (loc, Env.empty, Unsupported_extension Unique)); + let expected_mode = mode_unique expected_mode in + let expected_mode = expect_mode_cross env ty_expected expected_mode in + let exp = + type_expect ?in_function ~recarg env expected_mode sbody + ty_expected_explained + in + {exp with exp_loc = loc} + | Pexp_apply + ({ pexp_desc = Pexp_extension({ + txt = ("ocaml.once" | "once" | "extension.once" as txt)}, PStr []) }, + [Nolabel, sbody]) -> + if txt = "extension.once" && not (Language_extension.is_enabled Unique) then + raise (Typetexp.Error (loc, Env.empty, Unsupported_extension Unique)); + let expected_mode = expect_mode_cross env ty_expected expected_mode in + submode ~loc ~env ~reason:Other + (Value.min_with_linearity Linearity.once) expected_mode; + let expected_mode = mode_once expected_mode in + let exp = + type_expect ?in_function ~recarg env expected_mode sbody + ty_expected_explained + in + {exp with exp_loc = loc} | Pexp_apply - ({ pexp_desc = Pexp_extension({txt = ("ocaml.local" | "local" | "extension.local" as txt)}, PStr []) }, + ({ pexp_desc = Pexp_extension({ + txt = ("ocaml.local" | "local" | "extension.local" as txt)}, PStr []) }, [Nolabel, sbody]) -> if txt = "extension.local" && not (Language_extension.is_enabled Local) then raise (Typetexp.Error (loc, Env.empty, Unsupported_extension Local)); - - let mode = if mode_cross env ty_expected then - (* when mode crosses, we check the inner expr with the most relaxed mode *) - {expected_mode with mode = Value_mode.local; exact = false} - (* moreover, because mode crosses, expected_mode is completely useless *) - else begin - (* if mode does not cross, expected.mode must be local *) - submode ~loc ~env ~reason:Other Value_mode.local expected_mode; - (* and we require the inner expr to be exact local *) - {expected_mode with mode = Value_mode.local; exact = true} - end - in + let expected_mode = expect_mode_cross env ty_expected expected_mode in + submode ~loc ~env ~reason:Other + (Value.min_with_locality Regionality.local) expected_mode; + let expected_mode = mode_strictly_local expected_mode in let exp = - type_expect ?in_function ~recarg env mode sbody - ty_expected_explained + type_expect ?in_function ~recarg env expected_mode sbody ty_expected_explained in - { exp with exp_loc = loc } + {exp with exp_loc = loc} | Pexp_apply ({ pexp_desc = Pexp_extension({txt = "extension.escape"}, PStr []) }, [Nolabel, sbody]) -> + submode ~loc ~env ~reason:Other Value.legacy expected_mode; let exp = - type_expect ?in_function ~recarg env mode_global sbody + type_expect ?in_function ~recarg env mode_legacy sbody ty_expected_explained in - { exp with exp_loc = loc } + {exp with exp_loc = loc} | Pexp_apply ({ pexp_desc = Pexp_extension({ txt = "extension.exclave" | "ocaml.exclave" | "exclave" as txt}, PStr []) }, @@ -4473,18 +4690,22 @@ and type_expect_ match expected_mode.position with | RNontail -> raise (Error (loc, env, Exclave_in_nontail_position)) - | RTail (mode, _) -> - (* mode' is RNontail, because currently our language cannot construct - region in the tail of another region.*) - let mode' = mode_exact mode in + | RTail (regionality, _) -> (* The middle-end relies on all functions which allocate into their parent's region having a return mode of local. *) - submode ~loc ~env ~reason:Other Value_mode.local mode'; + (match Regionality.submode Regionality.local regionality with + | Ok () -> () + | Error _ -> raise (Error(loc, env, Exclave_returns_not_local)) + ); + (* mode' is RNontail, because currently our language cannot construct + region in the tail of another region.*) + let mode' = mode_exclave expected_mode in let new_env = Env.add_exclave_lock env in let exp = type_expect ?in_function ~recarg new_env mode' sbody ty_expected_explained in - submode ~loc ~env ~reason:Other Value_mode.regional expected_mode; + submode ~loc ~env ~reason:Other + (Value.min_with_locality Regionality.regional) expected_mode; { exp_desc = Texp_exclave exp; exp_loc = loc; exp_extra = []; @@ -4499,10 +4720,10 @@ and type_expect_ let funct_mode, funct_expected_mode = match pm.apply_position with | Tail -> - let mode = Value_mode.local_to_regional (Value_mode.newvar ()) in + let mode = Value.local_to_regional (Value.newvar ()) in mode, mode_tailcall_function mode | Nontail | Default -> - let mode = Value_mode.newvar () in + let mode = Value.newvar () in mode, mode_default mode in (* does the function return a tvar which is too generic? *) @@ -4549,13 +4770,13 @@ and type_expect_ let rt, funct = type_sfunct sfunct in match funct.exp_desc, sargs with | Texp_ident (_, _, {val_kind = Val_prim {prim_name = "%revapply"}; val_type}, - Id_prim _), + Id_prim _, _), [Nolabel, sarg; Nolabel, actual_sfunct] when is_inferred actual_sfunct && check_apply_prim_type Revapply val_type -> type_sfunct_args actual_sfunct [Nolabel, sarg] | Texp_ident (_, _, {val_kind = Val_prim {prim_name = "%apply"}; val_type}, - Id_prim _), + Id_prim _, _), [Nolabel, actual_sfunct; Nolabel, sarg] when check_apply_prim_type Apply val_type -> type_sfunct_args actual_sfunct [Nolabel, sarg] @@ -4576,11 +4797,11 @@ and type_expect_ let arg_pat_mode, arg_expected_mode = match cases_tuple_arity caselist with | Not_local_tuple | Maybe_local_tuple -> - let mode = Value_mode.newvar () in + let mode = Value.newvar () in simple_pat_mode mode, mode_default mode | Local_tuple arity -> - let modes = List.init arity (fun _ -> Value_mode.newvar ()) in - let mode = Value_mode.regional_to_local (Value_mode.join modes) in + let modes = List.init arity (fun _ -> Value.newvar ()) in + let mode = Value.regional_to_local (Value.join modes) in tuple_pat_mode mode modes, mode_tuple mode modes in begin_def (); @@ -4606,7 +4827,7 @@ and type_expect_ type_expect env (mode_trywith expected_mode) sbody ty_expected_explained in - let arg_mode = simple_pat_mode Value_mode.global in + let arg_mode = simple_pat_mode Value.legacy in let cases, _ = type_cases Value env arg_mode expected_mode Predef.type_exn ty_expected_explained false loc caselist in @@ -4632,7 +4853,7 @@ and type_expect_ if List.compare_length_with expected_mode.tuple_modes arity = 0 then expected_mode.tuple_modes else begin - let arg_mode = Value_mode.regional_to_global expected_mode.mode in + let arg_mode = Value.regional_to_global expected_mode.mode in List.init arity (fun _ -> arg_mode) end in @@ -4717,12 +4938,14 @@ and type_expect_ | Some sexp -> if !Clflags.principal then begin_def (); (* TODO: mode can be more relaxed than this if fields are global *) - let exp = type_exp ~recarg env (mode_subcomponent expected_mode) sexp in + let mode = Value.newvar () in + submode ~loc ~env mode (mode_subcomponent expected_mode); + let exp = type_exp ~recarg env (mode_default mode) sexp in if !Clflags.principal then begin end_def (); generalize_structure exp.exp_type end; - Some exp + Some (exp, mode) in let ty_record, expected_type = let expected_opath = @@ -4738,7 +4961,7 @@ and type_expect_ let opt_exp_opath = match opt_exp with | None -> None - | Some exp -> + | Some (exp, _) -> match extract_concrete_record env exp.exp_type with | Record_type (p0, p, _, _) -> Some (p0, p, is_principal exp.exp_type) | Maybe_a_record_type -> None @@ -4822,7 +5045,7 @@ and type_expect_ lbl.lbl_all in None, label_definitions - | Some exp -> + | Some (exp, mode) -> let ty_exp = instance exp.exp_type in let unify_kept lbl = let _, ty_arg1, ty_res1 = instance_label false lbl in @@ -4836,7 +5059,16 @@ and type_expect_ unify_exp_types loc env ty_arg1 ty_arg2; with_explanation (fun () -> unify_exp_types loc env (instance ty_expected) ty_res2); - Kept ty_arg1 + let mode = modality_unbox_left lbl.lbl_global mode in + let rmode = + (* We skip a potential [mode_subcomponent] since + it does not affect uniqueness. *) + expected_mode + in + let expected_mode = + mode_box_modality lbl.lbl_global rmode + in + Kept (ty_arg1, unique_use ~loc ~env mode expected_mode.mode) end in let label_definitions = Array.map unify_kept lbl.lbl_all in @@ -4874,12 +5106,7 @@ and type_expect_ | Record_float -> Some (register_allocation expected_mode) | _ -> None in - let mode = - match label.lbl_global with - | Global -> Value_mode.global - | Unrestricted -> rmode - in - + let mode = modality_unbox_left label.lbl_global rmode in if !Clflags.principal then begin_def (); @@ -4896,9 +5123,10 @@ and type_expect_ end_def (); generalize_structure ty_arg end; - let mode = mode_cross_to_global env ty_arg mode in + let mode = mode_cross_to_min env ty_arg mode in + let uu = unique_use ~loc ~env mode expected_mode.mode in ruem ~mode ~expected_mode { - exp_desc = Texp_field(record, lid, label, alloc_mode); + exp_desc = Texp_field(record, lid, label, uu, alloc_mode); exp_loc = loc; exp_extra = []; exp_type = ty_arg; exp_attributes = sexp.pexp_attributes; @@ -4919,7 +5147,7 @@ and type_expect_ raise(Error(loc, env, Label_not_mutable lid.txt)); rue { exp_desc = Texp_setfield(record, - Value_mode.regional_to_local_alloc rmode, + (Alloc.locality (Value.regional_to_local_alloc rmode)), label_loc, label, newval); exp_loc = loc; exp_extra = []; exp_type = instance Predef.type_unit; @@ -4937,7 +5165,7 @@ and type_expect_ sargl | Pexp_ifthenelse(scond, sifso, sifnot) -> let cond = - type_expect env mode_local scond + type_expect env mode_max scond (mk_expected ~explanation:If_conditional Predef.type_bool) in begin match sifnot with @@ -4979,14 +5207,15 @@ and type_expect_ exp_attributes = sexp.pexp_attributes; exp_env = env } | Pexp_while(scond, sbody) -> + let env = Env.add_share_lock While_loop env in let cond_env = Env.add_region_lock env in - let mode = mode_region Value_mode.local in + let mode = mode_region Value.max_mode in let wh_cond = type_expect cond_env mode scond (mk_expected ~explanation:While_loop_conditional Predef.type_bool) in let body_env = Env.add_region_lock env in - let position = RTail (Value_mode.local, FNontail) in + let position = RTail (Regionality.local, FNontail) in let wh_body, wh_body_sort = type_statement ~explanation:While_loop_body ~position body_env sbody @@ -5000,18 +5229,19 @@ and type_expect_ exp_env = env } | Pexp_for(param, slow, shigh, dir, sbody) -> let for_from = - type_expect env (mode_region Value_mode.local) slow + type_expect env (mode_region Value.max_mode) slow (mk_expected ~explanation:For_loop_start_index Predef.type_int) in let for_to = - type_expect env (mode_region Value_mode.local) shigh + type_expect env (mode_region Value.max_mode) shigh (mk_expected ~explanation:For_loop_stop_index Predef.type_int) in + let env = Env.add_share_lock For_loop env in let for_id, new_env = type_for_loop_index ~loc ~env ~param in let new_env = Env.add_region_lock new_env in - let position = RTail (Value_mode.local, FNontail) in + let position = RTail (Regionality.local, FNontail) in let for_body, for_body_sort = type_statement ~explanation:For_loop_body ~position new_env sbody in @@ -5025,9 +5255,9 @@ and type_expect_ | Pexp_constraint (sarg, sty) -> (* Pretend separate = true, 1% slowdown for lablgtk *) begin_def (); + let mode_annots = mode_annots_from_exp_attrs sexp in let type_mode = - if has_local_attr_exp sexp then Alloc_mode.Local - else Alloc_mode.Global + mode_annots_or_default mode_annots ~default:Alloc.Const.legacy in let cty = Typetexp.transl_simple_type env ~closed:false type_mode sty in let ty = cty.ctyp_type in @@ -5048,9 +5278,9 @@ and type_expect_ (* Pretend separate = true, 1% slowdown for lablgtk *) (* Also see PR#7199 for a problem with the following: let separate = !Clflags.principal || Env.has_local_constraints env in*) + let mode_annots = mode_annots_from_exp_attrs sexp in let type_mode = - if has_local_attr_exp sexp then Alloc_mode.Local - else Alloc_mode.Global + mode_annots_or_default mode_annots ~default:Alloc.Const.legacy in let (arg, ty',cty,cty') = match sty with @@ -5065,7 +5295,7 @@ and type_expect_ let gen = generalizable (get_level tv) arg.exp_type in unify_var env tv arg.exp_type; begin match arg.exp_desc, !self_coercion, get_desc ty' with - Texp_ident(_, _, {val_kind=Val_self _}, _), (path,r) :: _, + Texp_ident(_, _, {val_kind=Val_self _}, _, _), (path,r) :: _, Tconstr(path',_,_) when Path.same path path' -> (* prerr_endline "self coercion"; *) r := loc :: !r; @@ -5130,11 +5360,11 @@ and type_expect_ } | Pexp_send (e, {txt=met}) -> if !Clflags.principal then begin_def (); - let obj = type_exp env mode_global e in + let obj = type_exp env mode_legacy e in let pm = position_and_mode env expected_mode sexp in let (meth, typ) = match obj.exp_desc with - | Texp_ident(_, _, {val_kind = Val_self(sign, meths, _, _)}, _) -> + | Texp_ident(_, _, {val_kind = Val_self(sign, meths, _, _)}, _, _) -> let id, typ = match meths with | Self_concrete meths -> @@ -5164,7 +5394,7 @@ and type_expect_ end in Tmeth_val id, typ - | Texp_ident(_, _, {val_kind = Val_anc (sign, meths, cl_num)}, _) -> + | Texp_ident(_, _, {val_kind = Val_anc (sign, meths, cl_num)}, _, _) -> let id = match Meths.find met meths with | id -> id @@ -5264,7 +5494,7 @@ and type_expect_ match mut with | Mutable -> let newval = - type_expect env mode_global snewval + type_expect env mode_legacy snewval (mk_expected (instance ty)) in let (path_self, _) = @@ -5302,7 +5532,7 @@ and type_expect_ begin try let id = Vars.find lab.txt vars in let ty = Btype.instance_variable_type lab.txt sign in - (id, lab, type_expect env mode_global snewval (mk_expected (instance ty))) + (id, lab, type_expect env mode_legacy snewval (mk_expected (instance ty))) with Not_found -> let vars = Vars.fold (fun var _ li -> var::li) vars [] in @@ -5378,7 +5608,7 @@ and type_expect_ | Pexp_assert (e) -> let cond = - type_expect env mode_local e + type_expect env mode_max e (mk_expected ~explanation:Assert_condition Predef.type_bool) in let exp_type = @@ -5400,8 +5630,9 @@ and type_expect_ let to_unify = Predef.type_lazy_t ty in with_explanation (fun () -> unify_exp_types loc env to_unify (generic_instance ty_expected)); - let env = Env.add_lock Alloc_mode.global env in - let arg = type_expect env mode_lazy e (mk_expected ty) in + let env = Env.add_escape_lock Lazy env in + let env = Env.add_share_lock Lazy env in + let arg = type_expect env (mode_lazy expected_mode) e (mk_expected ty) in re { exp_desc = Texp_lazy arg; exp_loc = loc; exp_extra = []; @@ -5424,7 +5655,9 @@ and type_expect_ match sty with None -> ty_expected, None | Some sty -> let sty = Ast_helper.Typ.force_poly sty in - let cty = Typetexp.transl_simple_type env ~closed:false Global sty in + let cty = + Typetexp.transl_simple_type env ~closed:false Alloc.Const.legacy sty + in cty.ctyp_type, Some cty in if !Clflags.principal then begin @@ -5532,7 +5765,7 @@ and type_expect_ let ty_func_result = newvar (Layout.of_sort ~why:Function_result body_sort) in - let arrow_desc = Nolabel, Alloc_mode.global, Alloc_mode.global in + let arrow_desc = Nolabel, Alloc.legacy, Alloc.legacy in let ty_func = newty (Tarrow(arrow_desc, newmono ty_params, ty_func_result, commu_ok)) in @@ -5561,12 +5794,13 @@ and type_expect_ let exp, ands = type_andops env slet.pbop_exp sands ty_andops in - let body_env = Env.add_lock Alloc_mode.global env in + let body_env = Env.add_escape_lock Letop env in + let body_env = Env.add_share_lock Letop body_env in let scase = Ast_helper.Exp.case spat_params sbody in let cases, partial = type_cases Value body_env - (simple_pat_mode Value_mode.global) - (mode_return Value_mode.global) + (simple_pat_mode Value.legacy) + (mode_return Value.legacy) ty_params (mk_expected ty_func_result) true loc [scase] in let body = @@ -5653,9 +5887,10 @@ and type_expect_ | _ -> raise (Error (loc, env, Probe_format)) in check_probe_name name name_loc env; - let env = Env.add_lock Alloc_mode.global env in + let env = Env.add_escape_lock Probe env in + let env = Env.add_share_lock Probe env in Env.add_probe name; - let exp = type_expect env mode_global arg + let exp = type_expect env mode_legacy arg (mk_expected Predef.type_unit) in rue { exp_desc = Texp_probe {name; handler=exp; enabled_at_init}; @@ -5696,7 +5931,7 @@ and type_expect_ exp_env = env } and type_ident env ?(recarg=Rejected) lid = - let (path, desc, mode) = Env.lookup_value ~loc:lid.loc lid.txt env in + let (path, desc, mode, reason) = Env.lookup_value ~loc:lid.loc lid.txt env in let is_recarg = match get_desc desc.val_type with | Tconstr(p, _, _) -> Path.is_constructor_typath p @@ -5716,19 +5951,23 @@ and type_ident env ?(recarg=Rejected) lid = | Val_prim prim -> let ty, mode = instance_prim_mode prim (instance desc.val_type) in begin match prim.prim_native_repr_res, mode with - | (Prim_poly, _), Some mode -> register_allocation_mode mode + (* if the locality of returning value of the primitive is poly + we then register allocation for further optimization *) + | (Prim_poly, _), Some mode -> + register_allocation_mode + (Alloc.prod mode Uniqueness.shared Linearity.many) | _ -> () end; ty, Id_prim mode | _ -> instance desc.val_type, Id_value in - path, mode, { desc with val_type }, kind + path, mode, reason, { desc with val_type }, kind and type_binding_op_ident env s = let loc = s.loc in let lid = Location.mkloc (Longident.Lident s.txt) loc in - let path, mode, desc, kind = type_ident env lid in - submode ~env ~loc:lid.loc ~reason:Other mode mode_global; + let path, mode, _reason, desc, kind = type_ident env lid in + submode ~env ~loc:lid.loc ~reason:Other mode mode_legacy; let path = match desc.val_kind with | Val_ivar _ -> @@ -5745,17 +5984,19 @@ and type_binding_op_ident env s = path, desc and type_function ?in_function loc attrs env (expected_mode : expected_mode) - ty_expected_explained arg_label ~has_local ~has_poly caselist = + ty_expected_explained arg_label ~mode_annots ~has_poly caselist = let { ty = ty_expected; explanation } = ty_expected_explained in - let alloc_mode = Value_mode.regional_to_global_alloc expected_mode.mode in + let alloc_mode = Value.regional_to_global_alloc expected_mode.mode in let alloc_mode = if expected_mode.exact then (* expected_mode.mode is exact *) alloc_mode else (* expected_mode.mode is upper bound *) - fst (Alloc_mode.newvar_below alloc_mode) + fst (Alloc.newvar_below alloc_mode) in + if expected_mode.strictly_local then + Locality.submode_exn Locality.local (Alloc.locality alloc_mode); register_allocation_mode alloc_mode; let (loc_fun, ty_fun) = match in_function with @@ -5785,9 +6026,7 @@ and type_function ?in_function loc attrs env (expected_mode : expected_mode) in raise (Error(loc_fun, env, err)) in - if has_local then - eqmode ~loc ~env arg_mode Alloc_mode.local - (Param_mode_mismatch ty_expected'); + apply_mode_annots ~loc ~env ~ty_expected mode_annots arg_mode; if separate then begin end_def (); generalize_structure ty_arg; @@ -5813,9 +6052,10 @@ and type_function ?in_function loc attrs env (expected_mode : expected_mode) | None -> let region_locked = not (is_local_returning_function caselist) in let env = - Env.add_lock - ?escaping_context:expected_mode.escaping_context - alloc_mode + Env.add_closure_lock + ?closure_context:expected_mode.closure_context + (Alloc.locality alloc_mode) + (Alloc.linearity alloc_mode) env in let env = @@ -5824,42 +6064,49 @@ and type_function ?in_function loc attrs env (expected_mode : expected_mode) in env, region_locked in - let arg_value_mode = Value_mode.of_alloc arg_mode in + let arg_value_mode = Value.of_alloc arg_mode in let arg_value_mode = - if region_locked then Value_mode.local_to_regional arg_value_mode + if region_locked then Value.local_to_regional arg_value_mode else arg_value_mode in let cases_expected_mode, curry = if uncurried_function then begin (* no need to check mode crossing in this case*) (* because ty_res always a function *) - let inner_alloc_mode, _ = Alloc_mode.newvar_below ret_mode in - begin match Alloc_mode.submode arg_mode inner_alloc_mode with + let inner_alloc_mode, _ = Alloc.newvar_below ret_mode in + begin match + Alloc.submode (Alloc.close_over arg_mode) inner_alloc_mode + with | Ok () -> () - | Error () -> - raise (Error(loc_fun, env, Uncurried_function_escapes)) + | Error e -> + raise (Error(loc_fun, env, Uncurried_function_escapes e)) end; - begin match Alloc_mode.submode alloc_mode inner_alloc_mode with + begin match + Alloc.submode (Alloc.partial_apply alloc_mode) inner_alloc_mode + with | Ok () -> () - | Error () -> - raise (Error(loc_fun, env, Uncurried_function_escapes)) + | Error e -> + raise (Error(loc_fun, env, Uncurried_function_escapes e)) end; - mode_exact (Value_mode.of_alloc inner_alloc_mode), + mode_exact (Value.of_alloc inner_alloc_mode), More_args {partial_mode = inner_alloc_mode} end else begin - let ret_value_mode = Value_mode.of_alloc ret_mode in + let ret_value_mode = Value.of_alloc ret_mode in let ret_value_mode = if region_locked then mode_return ret_value_mode else begin - match Alloc_mode.submode Alloc_mode.local ret_mode with - | Ok () -> mode_local + (* if the function has no region, we force the ret_mode to be local *) + match + Locality.submode Locality.local (Alloc.locality ret_mode) + with + | Ok () -> mode_default ret_value_mode | Error () -> raise (Error (loc_fun, env, Function_returns_local)) end in let ret_value_mode = expect_mode_cross env ty_ret ret_value_mode in ret_value_mode, - Final_arg { partial_mode = Alloc_mode.join [arg_mode; alloc_mode] } + Final_arg { partial_mode = Alloc.join [arg_mode; alloc_mode] } end in let in_function = @@ -5910,7 +6157,7 @@ and type_function ?in_function loc attrs env (expected_mode : expected_mode) and type_label_access env srecord usage lid = if !Clflags.principal then begin_def (); - let mode = Value_mode.newvar () in + let mode = Value.newvar () in let record = type_exp ~recarg:Allowed env (mode_default mode) srecord in if !Clflags.principal then begin end_def (); @@ -6216,13 +6463,7 @@ and type_label_exp create env (expected_mode : expected_mode) loc ty_expected expected_mode | _ -> mode_subcomponent expected_mode in - let arg_mode = - match label.lbl_global with - | Global -> - mode_global - | Unrestricted -> - rmode - in + let arg_mode = mode_box_modality label.lbl_global rmode in let arg = type_argument env arg_mode sarg ty_arg (instance ty_arg) in @@ -6271,7 +6512,7 @@ and type_argument ?explanation ?recarg env (mode : expected_mode) sarg Tarrow(_, ty_arg, ty_res, _) when lv' = generic_level || not !Clflags.principal -> let ty_res', ty_res, changed = loosen_ret_modes ty_res' ty_res in - let mret, changed' = Alloc_mode.newvar_below mret in + let mret, changed' = Alloc.newvar_below_comonadic mret in if changed || changed' then newty2 ~level:lv' (Tarrow((l, marg, mret), ty_arg', ty_res', commu_ok)), newty2 ~level:lv (Tarrow((l, marg, mret), ty_arg, ty_res, commu_ok)), @@ -6315,7 +6556,7 @@ and type_argument ?explanation ?recarg env (mode : expected_mode) sarg (* apply optional arguments when expected type is "" *) (* we must be very careful about not breaking the semantics *) if !Clflags.principal then begin_def (); - let exp_mode = Value_mode.newvar_below mode.mode in + let exp_mode, _ = Value.newvar_below mode.mode in let texp = type_exp env {mode with mode = exp_mode} sarg in if !Clflags.principal then begin end_def (); @@ -6370,6 +6611,7 @@ and type_argument ?explanation ?recarg env (mode : expected_mode) sarg } in let exp_env = Env.add_value ~mode id desc env in + let uu = unique_use ~loc:sarg.pexp_loc ~env mode mode in {pat_desc = Tpat_var (id, mknoloc name, mode); pat_type = ty;pat_extra=[]; pat_attributes = []; pat_loc = Location.none; pat_env = env}, @@ -6377,9 +6619,9 @@ and type_argument ?explanation ?recarg env (mode : expected_mode) sarg exp_extra = []; exp_attributes = []; exp_desc = Texp_ident(Path.Pident id, mknoloc (Longident.Lident name), - desc, Id_value)} + desc, Id_value, uu)} in - let eta_mode = Value_mode.local_to_regional (Value_mode.of_alloc marg) in + let eta_mode = Value.local_to_regional (Value.of_alloc marg) in let eta_pat, eta_var = var_pair ~mode:eta_mode "eta" ty_arg in (* CR layouts v10: When we add abstract layouts, the eta expansion here becomes impossible in some cases - we'll need better errors. For test @@ -6394,18 +6636,20 @@ and type_argument ?explanation ?recarg env (mode : expected_mode) sarg let arg_sort = type_sort ~why:Function_argument ty_arg in let ret_sort = type_sort ~why:Function_result ty_res in let func texp = - let ret_mode = Value_mode.of_alloc mret in + let ret_mode = Value.of_alloc mret in let e = {texp with exp_type = ty_res; exp_desc = Texp_apply (texp, args @ [Nolabel, Arg (eta_var, arg_sort)], Nontail, - Value_mode.regional_to_global_alloc ret_mode)} + ret_mode + |> Value.locality + |> Regionality.regional_to_global_locality)} in let cases = [case eta_pat e] in let param = name_cases "param" cases in let partial_mode = - Alloc_mode.join [marg; Value_mode.regional_to_global_alloc mode.mode] + Alloc.join [marg; Value.regional_to_global_alloc mode.mode] in let curry = Final_arg {partial_mode} in { texp with exp_type = ty_fun; @@ -6441,7 +6685,7 @@ and type_argument ?explanation ?recarg env (mode : expected_mode) sarg and type_apply_arg env ~app_loc ~funct ~index ~position ~partial_app (lbl, arg) = match arg with | Arg (Unknown_arg { sarg; ty_arg_mono; mode_arg; sort_arg }) -> - let mode, _ = Alloc_mode.newvar_below mode_arg in + let mode, _ = Alloc.newvar_below mode_arg in let expected_mode = mode_argument ~funct ~index ~position ~partial_app mode in let arg = @@ -6454,7 +6698,7 @@ and type_apply_arg env ~app_loc ~funct ~index ~position ~partial_app (lbl, arg) (lbl, Arg (arg, expected_mode.mode, sort_arg)) | Arg (Known_arg { sarg; ty_arg; ty_arg0; mode_arg; wrapped_in_some; sort_arg }) -> - let mode, _ = Alloc_mode.newvar_below mode_arg in + let mode, _ = Alloc.newvar_below mode_arg in let expected_mode = mode_argument ~funct ~index ~position ~partial_app mode in let ty_arg', vars = tpoly_get_poly ty_arg in @@ -6512,7 +6756,7 @@ and type_apply_arg env ~app_loc ~funct ~index ~position ~partial_app (lbl, arg) (lbl, Arg (arg, expected_mode.mode, sort_arg)) | Arg (Eliminated_optional_arg { ty_arg; sort_arg; _ }) -> let arg = option_none env (instance ty_arg) Location.none in - (lbl, Arg (arg, Value_mode.global, sort_arg)) + (lbl, Arg (arg, Value.legacy, sort_arg)) | Omitted _ as arg -> (lbl, arg) and type_application env app_loc expected_mode pm @@ -6533,9 +6777,9 @@ and type_application env app_loc expected_mode pm end_def (); generalize_structure ty_ret end; - let ap_mode = ret_mode in + let ap_mode = Alloc.locality ret_mode in let mode_res = - mode_cross_to_global env ty_ret (Value_mode.of_alloc ret_mode) + mode_cross_to_min env ty_ret (Value.of_alloc ret_mode) in submode ~loc:app_loc ~env ~reason:Other mode_res expected_mode; @@ -6568,7 +6812,7 @@ and type_application env app_loc expected_mode pm if !Clflags.principal then begin_def () ; let ty_ret, mode_ret, untyped_args = collect_apply_args env funct ignore_labels ty (instance ty) - (Value_mode.regional_to_local_alloc funct_mode) sargs ret_tvar + (Value.regional_to_local_alloc funct_mode) sargs ret_tvar in let partial_app = is_partial_apply untyped_args in let pm = if partial_app then position_and_mode_default else pm in @@ -6586,9 +6830,9 @@ and type_application env app_loc expected_mode pm end_def () ; generalize_structure ty_ret end; - let ap_mode = mode_ret in + let ap_mode = Alloc.locality mode_ret in let mode_ret = - mode_cross_to_global env ty_ret (Value_mode.of_alloc mode_ret) + mode_cross_to_min env ty_ret (Value.of_alloc mode_ret) in submode ~loc:app_loc ~env ~reason:(Application ty_ret) mode_ret expected_mode; @@ -6679,13 +6923,7 @@ and type_construct env (expected_mode : expected_mode) loc lid sarg let args = List.map2 (fun e ((ty, gf),t0) -> - let argument_mode = - match gf with - | Global -> - mode_global - | Unrestricted -> - argument_mode - in + let argument_mode = mode_box_modality gf argument_mode in type_argument ~recarg env argument_mode e ty t0) sargs (List.combine ty_args ty_args0) in @@ -6704,7 +6942,7 @@ and type_construct env (expected_mode : expected_mode) loc lid sarg and type_statement ?explanation ?(position=RNontail) env sexp = begin_def(); - let exp = type_exp env (mode_local_with_position position) sexp in + let exp = type_exp env (mode_max_with_position position) sexp in end_def(); let ty = expand_head env exp.exp_type in (* We're requiring the statement to have a representable layout. But that @@ -6882,7 +7120,7 @@ and type_cases | None -> None | Some scond -> Some - (type_expect ext_env mode_local scond + (type_expect ext_env mode_max scond (mk_expected ~explanation:When_guard Predef.type_bool)) in let exp = @@ -7003,7 +7241,7 @@ and type_newtype ~loc ~env ~expected_mode ~rue ~attributes and type_let ?(check = fun s -> Warnings.Unused_var s) ?(check_strict = fun s -> Warnings.Unused_var_strict s) - ?(force_global = false) + ?(force_toplevel = false) existential_context env rec_flag spat_sexp_list allow_modules = let open Ast_helper in @@ -7026,6 +7264,14 @@ and type_let | Pexp_fun _ | Pexp_function _ -> true | Pexp_constraint (e, _) | Pexp_newtype (_, e) + | Pexp_apply + ({ pexp_desc = Pexp_extension({ + txt = "extension.once" | "ocaml.once" | "once"}, PStr []) }, + [Nolabel, e]) + | Pexp_apply + ({ pexp_desc = Pexp_extension({ + txt = "extension.unique" | "ocaml.unique" | "unique"}, PStr []) }, + [Nolabel, e]) | Pexp_apply ({ pexp_desc = Pexp_extension( {txt = "extension.local"|"ocaml.local"|"local"}, PStr []) }, @@ -7042,8 +7288,8 @@ and type_let let check = if is_fake_let then check_strict else check in let rec_mode_var = match rec_flag with - | Recursive when entirely_functions -> Some (Value_mode.newvar ()) - | Recursive -> Some Value_mode.global + | Recursive when entirely_functions -> Some (Value.newvar ()) + | Recursive -> Some Value.legacy | Nonrecursive -> None in let spatl = @@ -7063,20 +7309,20 @@ and type_let | _ -> spat in let pat_mode, exp_mode = - if force_global - then simple_pat_mode Value_mode.global, mode_global + if force_toplevel + then simple_pat_mode Value.legacy, mode_legacy else match rec_mode_var with | None -> begin match pat_tuple_arity spat with | Not_local_tuple | Maybe_local_tuple -> - let mode = Value_mode.newvar () in + let mode = Value.newvar () in simple_pat_mode mode, mode_default mode | Local_tuple arity -> let modes = - List.init arity (fun _ -> Value_mode.newvar ()) + List.init arity (fun _ -> Value.newvar ()) in let mode = - Value_mode.regional_to_local (Value_mode.join modes) + Value.regional_to_local (Value.join modes) in tuple_pat_mode mode modes, mode_tuple mode modes end @@ -7341,7 +7587,7 @@ and type_andops env sarg sands expected_ty = let rec loop env let_sarg rev_sands expected_ty = match rev_sands with | [] -> - type_expect env mode_global let_sarg + type_expect env mode_legacy let_sarg (mk_expected expected_ty), [] | { pbop_op = sop; pbop_exp = sexp; pbop_loc = loc; _ } :: rest -> @@ -7354,7 +7600,7 @@ and type_andops env sarg sands expected_ty = let ty_result = newvar (Layout.of_sort ~why:Function_result op_result_sort) in - let arrow_desc = (Nolabel,Alloc_mode.global,Alloc_mode.global) in + let arrow_desc = (Nolabel,Alloc.legacy,Alloc.legacy) in let ty_rest_fun = newty (Tarrow(arrow_desc, newmono ty_arg, ty_result, commu_ok)) in @@ -7374,7 +7620,7 @@ and type_andops env sarg sands expected_ty = end; let let_arg, rest = loop env let_sarg rest ty_rest in let exp = - type_expect env mode_global sexp (mk_expected ty_arg) + type_expect env mode_legacy sexp (mk_expected ty_arg) in begin try unify env (instance ty_result) (instance expected_ty) @@ -7407,7 +7653,7 @@ and type_generic_array sargl = let type_, base_argument_mode = match mutability with - | Mutable -> Predef.type_array, mode_default Value_mode.global + | Mutable -> Predef.type_array, mode_default Value.legacy | Immutable -> Predef.type_iarray, mode_subcomponent expected_mode in let alloc_mode = register_allocation expected_mode in @@ -7574,7 +7820,7 @@ and type_comprehension_expr let comp_body = (* To understand why comprehension bodies are checked at [mode_global], see "What modes should comprehensions use?", above *) - type_expect new_env mode_global sbody (mk_expected element_ty) + type_expect new_env mode_legacy sbody (mk_expected element_ty) in re { exp_desc = make_texp { comp_body ; comp_clauses } ; exp_loc = loc @@ -7615,7 +7861,7 @@ and type_comprehension_clause ~loc ~comprehension_type ~container_type env [type_comprehension_expr]*) type_expect env - mode_local + mode_max cond (mk_expected ~explanation:Comprehension_when Predef.type_bool) in @@ -7645,7 +7891,7 @@ and type_comprehension_iterator use?" in [type_comprehension_expr]*) type_expect env - mode_local + mode_max bound (mk_expected ~explanation Predef.type_int) in @@ -7668,7 +7914,7 @@ and type_comprehension_iterator use?" in [type_comprehension_expr]*) type_expect env - mode_global + mode_legacy seq (mk_expected ~explanation:(Comprehension_in_iterator comprehension_type) @@ -7682,7 +7928,7 @@ and type_comprehension_iterator tps Value ~no_existentials:In_self_pattern - ~alloc_mode:(simple_pat_mode Value_mode.global) + ~alloc_mode:(simple_pat_mode Value.legacy) (ref env) pattern item_ty @@ -7721,24 +7967,33 @@ and type_unboxed_constant ~loc ~env ~rue ~attributes cst = exp_env = env } -(* Typing of toplevel bindings *) +let maybe_check_uniqueness_exp exp = + if Language_extension.is_enabled Unique then + check_uniqueness_exp exp -let type_binding env rec_flag ?force_global spat_sexp_list = +let maybe_check_uniqueness_value_bindings vbl = + if Language_extension.is_enabled Unique then + check_uniqueness_value_bindings vbl + +(* Typing of toplevel bindings *) +let type_binding env rec_flag ?force_toplevel spat_sexp_list = Typetexp.TyVarEnv.reset (); let (pat_exp_list, new_env) = type_let ~check:(fun s -> Warnings.Unused_value_declaration s) ~check_strict:(fun s -> Warnings.Unused_value_declaration s) - ?force_global + ?force_toplevel At_toplevel env rec_flag spat_sexp_list Modules_rejected in + maybe_check_uniqueness_value_bindings pat_exp_list; (pat_exp_list, new_env) let type_let existential_ctx env rec_flag spat_sexp_list = let (pat_exp_list, new_env) = type_let existential_ctx env rec_flag spat_sexp_list Modules_rejected in + maybe_check_uniqueness_value_bindings pat_exp_list; (pat_exp_list, new_env) (* Typing of toplevel expressions *) @@ -7747,19 +8002,22 @@ let type_expression env layout sexp = Typetexp.TyVarEnv.reset (); begin_def(); let expected = mk_expected (newvar layout) in - let exp = type_expect env mode_global sexp expected in + let exp = type_expect env mode_legacy sexp expected in end_def(); if maybe_expansive exp then lower_contravariant env exp.exp_type; generalize exp.exp_type; - match sexp.pexp_desc with - Pexp_ident lid -> - let loc = sexp.pexp_loc in - (* Special case for keeping type variables when looking-up a variable *) - let (_path, desc, _mode) = - Env.lookup_value ~use:false ~loc lid.txt env - in - {exp with exp_type = desc.val_type} - | _ -> exp + let exp = + match sexp.pexp_desc with + Pexp_ident lid -> + let loc = sexp.pexp_loc in + (* Special case for keeping type variables when looking-up a variable *) + let (_path, desc, _mode, _reasons) = + Env.lookup_value ~use:false ~loc lid.txt env + in + {exp with exp_type = desc.val_type} + | _ -> exp + in + maybe_check_uniqueness_exp exp; exp let type_representable_expression ~why env sexp = let sort = Sort.new_var () in @@ -7888,7 +8146,7 @@ let report_type_expected_explanation expl ppf = because "a when-clause in a comprehension" let escaping_hint failure_reason submode_reason - (context : Env.escaping_context option) = + (context : Env.closure_context option) = begin match failure_reason, context with | `Locality, Some Return -> [ Location.msg @@ -7907,6 +8165,7 @@ let escaping_hint failure_reason submode_reason end @ begin match submode_reason with + (* TODO: generalize this to other axis as well *) | Application result_ty -> (* [get_non_local_arity ty] returns [Some (n_args, sureness)] iff [ty] is a function type with [n_args] arguments and its return type is @@ -7915,7 +8174,9 @@ let escaping_hint failure_reason submode_reason let rec loop sureness n ty = match get_desc ty with | Tarrow ((_, _, res_mode), _, res_ty, _) -> - begin match Alloc_mode.check_const res_mode with + begin match + Locality.check_const (Alloc.locality res_mode) + with | Some Global -> Some (n+1, true) | (None | Some Local) as res_mode -> @@ -7942,6 +8203,51 @@ let escaping_hint failure_reason submode_reason | Other -> [] end +let sharedness_hint _fail_reason submode_reason context = + (match context with + | None -> [] + | Some Env.For_loop -> + [Location.msg + "@[Hint: This identifier cannot be used uniquely,@ \ + because it was defined outside of the for-loop.@]"] + | Some Env.While_loop -> + [Location.msg + "@[Hint: This identifier cannot be used uniquely,@ \ + because it was defined outside of the while-loop.@]"] + | Some Env.Comprehension -> + [Location.msg + "@[Hint: This identifier cannot be used uniquely,@ \ + because it was defined outside of the comprehension.@]"] + | Some Env.Letop -> + [Location.msg + "@[Hint: This identifier cannot be used uniquely,@ \ + because it was defined outside of the let-op.@]"] + | Some Env.Class -> + [Location.msg + "@[Hint: This identifier cannot be used uniquely,@ \ + because it is defined in a class.@]"] + | Some Env.Closure -> + [Location.msg + "@[Hint: This identifier was defined outside of the current closure.@ \ + Either this closure has to be once, or the identifier can be used only@ \ + as shared.@]"] + | Some Env.Module -> + [Location.msg + "@[Hint: This identifier cannot be used uniquely,@ \ + because it is defined in a module.@]"] + | Some Env.Probe -> + [Location.msg + "@[Hint: This identifier cannot be used uniquely,@ \ + because it is defined outside of the probe.@]"] + | Some Env.Lazy -> + [Location.msg + "@[Hint: This identifier cannot be used uniquely,@ \ + because it is defined outside of the lazy expression.@]"] + ) + @ + match submode_reason with + | Application _ | Other -> [] + let report_type_expected_explanation_opt expl ppf = match expl with | None -> () @@ -8372,14 +8678,22 @@ let report_error ~loc env = function "This expression has type %a@ \ which is not a record type." Printtyp.type_expr ty - | Local_value_escapes(failure_reason, submode_reason, context) -> - let sub = escaping_hint failure_reason submode_reason context in - let mode = - match failure_reason with - | `Locality -> "local " - | `Regionality -> "" - in - Location.errorf ~loc ~sub "This %svalue escapes its region" mode + | Submode_failed(fail_reason, submode_reason, closure_context, shared_context) + -> + let sub = + match fail_reason with + | `Linearity | `Uniqueness -> + sharedness_hint fail_reason submode_reason shared_context + | `Locality | `Regionality -> + escaping_hint fail_reason submode_reason closure_context + in + Location.errorf ~loc ~sub begin + match fail_reason with + | `Locality -> "This local value escapes its region" + | `Regionality -> "This value escapes its region" + | `Uniqueness -> "Found a shared value where a unique value was expected" + | `Linearity -> "Found a once value where a many value was expected" + end | Local_application_complete (lbl, loc_kind) -> let sub = match loc_kind with @@ -8403,14 +8717,26 @@ let report_error ~loc env = function Location.errorf ~loc ~sub "@[This application is complete, but surplus arguments were provided afterwards.@ \ When passing or calling a local value, extra arguments are passed in a separate application.@]" - | Param_mode_mismatch ty -> - Location.errorf ~loc - "@[This function has a local parameter, but was expected to have type:@ %a@]" - Printtyp.type_expr ty - | Uncurried_function_escapes -> + | Param_mode_mismatch (ty, mkind) -> + let mkind = + match mkind with + | `Locality -> "local" + | `Uniqueness -> "unique" + | `Linearity -> "once" + in Location.errorf ~loc - "This function or one of its parameters escape their region@ \ - when it is partially applied" + "@[This function has a %s parameter, but was expected to have type:@ %a@]" + mkind Printtyp.type_expr ty + | Uncurried_function_escapes e -> begin + match e with + | `Locality -> + Location.errorf ~loc "This function or one of its parameters escape their region @ \ + when it is partially applied." + | `Uniqueness -> assert false + | `Linearity -> + Location.errorf ~loc "This function when partially applied returns a once value,@ \ + but expected to be many." + end | Local_return_annotation_mismatch _ -> Location.errorf ~loc "This function return is not annotated with \"local_\"@ \ @@ -8422,8 +8748,11 @@ let report_error ~loc env = function | `Conflict -> "is contradictory" | `Not_a_tailcall -> "is not on a tail call") | Exclave_in_nontail_position -> - Location.errorf ~loc + Location.errorf ~loc "Exclave expression should only be in tail position of the current region" + | Exclave_returns_not_local -> + Location.errorf ~loc + "The body of exclave expression should be local" | Optional_poly_param -> Location.errorf ~loc "Optional parameters cannot be polymorphic" @@ -8466,7 +8795,16 @@ let () = Env.add_delayed_check_forward := add_delayed_check; () -(* drop unnecessary arguments from the external API *) -let type_expect env e ty = type_expect env mode_global e ty -let type_exp env e = type_exp env mode_global e -let type_argument env e t1 t2 = type_argument env mode_global e t1 t2 +(* drop unnecessary arguments from the external API + and check for uniqueness *) +let type_expect env e ty = + let exp = type_expect env mode_legacy e ty in + maybe_check_uniqueness_exp exp; exp + +let type_exp env e = + let exp = type_exp env mode_legacy e in + maybe_check_uniqueness_exp exp; exp + +let type_argument env e t1 t2 = + let exp = type_argument env mode_legacy e t1 t2 in + maybe_check_uniqueness_exp exp; exp diff --git a/ocaml/typing/typecore.mli b/ocaml/typing/typecore.mli index f02d7e5377f..24f81fc54f5 100644 --- a/ocaml/typing/typecore.mli +++ b/ocaml/typing/typecore.mli @@ -63,7 +63,7 @@ type type_expected = private { type pattern_variable = { pv_id: Ident.t; - pv_mode: Value_mode.t; + pv_mode: Mode.Value.t; pv_type: type_expr; pv_loc: Location.t; pv_as_var: bool; @@ -112,7 +112,7 @@ type existential_restriction = val type_binding: Env.t -> rec_flag -> - ?force_global:bool -> + ?force_toplevel:bool -> Parsetree.value_binding list -> Typedtree.value_binding list * Env.t val type_let: @@ -146,7 +146,7 @@ val type_argument: type_expr -> type_expr -> Typedtree.expression val option_some: - Env.t -> Typedtree.expression -> value_mode -> Typedtree.expression + Env.t -> Typedtree.expression -> Mode.Value.t -> Typedtree.expression val option_none: Env.t -> type_expr -> Location.t -> Typedtree.expression val extract_option_type: Env.t -> type_expr -> type_expr @@ -171,7 +171,7 @@ type submode_reason = | Other (* add more cases here for better hints *) -val escape : loc:Location.t -> env:Env.t -> reason:submode_reason -> value_mode -> unit +val escape : loc:Location.t -> env:Env.t -> reason:submode_reason -> Mode.Value.t -> unit val self_coercion : (Path.t * Location.t list ref) list ref @@ -256,16 +256,19 @@ type error = | Missing_type_constraint | Wrong_expected_kind of wrong_kind_sort * wrong_kind_context * type_expr | Expr_not_a_record_type of type_expr - | Local_value_escapes of Value_mode.error * submode_reason * Env.escaping_context option + | Submode_failed of + Mode.Value.error * submode_reason * + Env.closure_context option * Env.shared_context option | Local_application_complete of Asttypes.arg_label * [`Prefix|`Single_arg|`Entire_apply] - | Param_mode_mismatch of type_expr - | Uncurried_function_escapes + | Param_mode_mismatch of type_expr * Mode.Alloc.error + | Uncurried_function_escapes of Mode.Alloc.error | Local_return_annotation_mismatch of Location.t | Function_returns_local | Tail_call_local_returning | Bad_tail_annotation of [`Conflict|`Not_a_tailcall] | Optional_poly_param | Exclave_in_nontail_position + | Exclave_returns_not_local | Unboxed_int_literals_not_supported | Unboxed_float_literals_not_supported | Function_type_not_rep of type_expr * Layout.Violation.t diff --git a/ocaml/typing/typedecl.ml b/ocaml/typing/typedecl.ml index fd1aeaa11b4..69dc5fcad02 100644 --- a/ocaml/typing/typedecl.ml +++ b/ocaml/typing/typedecl.ml @@ -352,7 +352,7 @@ let transl_labels env univars closed lbls = Builtin_attributes.warning_scope attrs (fun () -> let arg = Ast_helper.Typ.force_poly arg in - let cty = transl_simple_type env ?univars ~closed Global arg in + let cty = transl_simple_type env ?univars ~closed Mode.Alloc.Const.legacy arg in let gbl = match mut with | Mutable -> Types.Global @@ -385,7 +385,7 @@ let transl_labels env univars closed lbls = let transl_types_gf env univars closed tyl = let mk arg = - let cty = transl_simple_type env ?univars ~closed Global arg in + let cty = transl_simple_type env ?univars ~closed Mode.Alloc.Const.legacy arg in let gf = transl_global_flags arg.ptyp_loc arg.ptyp_attributes in (cty, gf) in @@ -441,7 +441,9 @@ let make_constructor let args, targs = transl_constructor_arguments env univars closed sargs in - let tret_type = transl_simple_type env ?univars ~closed Global sret_type in + let tret_type = + transl_simple_type env ?univars ~closed Mode.Alloc.Const.legacy sret_type + in let ret_type = tret_type.ctyp_type in (* TODO add back type_path as a parameter ? *) begin match get_desc ret_type with @@ -600,8 +602,8 @@ let transl_declaration env sdecl (id, uid) = let params = List.map (fun (cty, _) -> cty.ctyp_type) tparams in let cstrs = List.map (fun (sty, sty', loc) -> - transl_simple_type env ~closed:false Global sty, - transl_simple_type env ~closed:false Global sty', loc) + transl_simple_type env ~closed:false Mode.Alloc.Const.legacy sty, + transl_simple_type env ~closed:false Mode.Alloc.Const.legacy sty', loc) sdecl.ptype_cstrs in let unboxed_attr = get_unboxed_from_attributes sdecl in @@ -625,7 +627,7 @@ let transl_declaration env sdecl (id, uid) = None -> None, None | Some sty -> let no_row = not (is_fixed_type sdecl) in - let cty = transl_simple_type env ~closed:no_row Global sty in + let cty = transl_simple_type env ~closed:no_row Mode.Alloc.Const.legacy sty in Some cty, Some cty.ctyp_type in let any = Layout.any ~why:Initial_typedecl_env in @@ -1924,7 +1926,7 @@ let make_native_repr env core_type sort ty ~global_repr = end let prim_const_mode m = - match Types.Alloc_mode.check_const m with + match Mode.Locality.check_const m with | Some Global -> Prim_global | Some Local -> Prim_local | None -> assert false @@ -1958,10 +1960,11 @@ let rec parse_native_repr_attributes env core_type ty rmode ~global_repr = let mode = if Builtin_attributes.has_local_opt ct1.ptyp_attributes then Prim_poly - else prim_const_mode marg + else prim_const_mode (Mode.Alloc.locality marg) in let repr_args, repr_res = - parse_native_repr_attributes env ct2 t2 (prim_const_mode mret) ~global_repr + parse_native_repr_attributes env ct2 t2 + (prim_const_mode (Mode.Alloc.locality mret)) ~global_repr in ((mode, repr_arg) :: repr_args, repr_res) | (Ptyp_poly (_, t) | Ptyp_alias (t, _)), _, _ -> @@ -2094,8 +2097,8 @@ let transl_with_constraint id ?fixed_row_path ~sig_env ~sig_decl ~outer_env let arity = List.length params in let constraints = List.map (fun (ty, ty', loc) -> - let cty = transl_simple_type env ~closed:false Global ty in - let cty' = transl_simple_type env ~closed:false Global ty' in + let cty = transl_simple_type env ~closed:false Mode.Alloc.Const.legacy ty in + let cty' = transl_simple_type env ~closed:false Mode.Alloc.Const.legacy ty' in (* Note: We delay the unification of those constraints after the unification of parameters, so that clashing constraints report an error on the constraint location @@ -2107,7 +2110,7 @@ let transl_with_constraint id ?fixed_row_path ~sig_env ~sig_decl ~outer_env let (tman, man) = match sdecl.ptype_manifest with None -> None, None | Some sty -> - let cty = transl_simple_type env ~closed:no_row Global sty in + let cty = transl_simple_type env ~closed:no_row Mode.Alloc.Const.legacy sty in Some cty, Some cty.ctyp_type in (* In the second part, we check the consistency between the two diff --git a/ocaml/typing/typedtree.ml b/ocaml/typing/typedtree.ml index 4a6ddb83522..662590ab67f 100644 --- a/ocaml/typing/typedtree.ml +++ b/ocaml/typing/typedtree.ml @@ -33,6 +33,12 @@ type _ pattern_category = | Value : value pattern_category | Computation : computation pattern_category +type unique_barrier = Mode.Uniqueness.t option + +type unique_use = Mode.Uniqueness.t * Mode.Linearity.t + +let shared_many_use = (Mode.Uniqueness.shared, Mode.Linearity.many) + type pattern = value general_pattern and 'k general_pattern = 'k pattern_desc pattern_data @@ -54,9 +60,9 @@ and pat_extra = and 'k pattern_desc = (* value patterns *) | Tpat_any : value pattern_desc - | Tpat_var : Ident.t * string loc * value_mode -> value pattern_desc + | Tpat_var : Ident.t * string loc * Mode.Value.t -> value pattern_desc | Tpat_alias : - value general_pattern * Ident.t * string loc * value_mode -> value pattern_desc + value general_pattern * Ident.t * string loc * Mode.Value.t -> value pattern_desc | Tpat_constant : constant -> value pattern_desc | Tpat_tuple : value general_pattern list -> value pattern_desc | Tpat_construct : @@ -100,39 +106,42 @@ and exp_extra = and fun_curry_state = - | More_args of { partial_mode : Types.alloc_mode } - | Final_arg of { partial_mode : Types.alloc_mode } + | More_args of { partial_mode : Mode.Alloc.t } + | Final_arg of { partial_mode : Mode.Alloc.t } and expression_desc = Texp_ident of - Path.t * Longident.t loc * Types.value_description * ident_kind + Path.t * Longident.t loc * Types.value_description * ident_kind * unique_use | Texp_constant of constant | Texp_let of rec_flag * value_binding list * expression | Texp_function of { arg_label : arg_label; param : Ident.t; cases : value case list; partial : partial; region : bool; curry : fun_curry_state; warnings : Warnings.state; - arg_mode : Types.alloc_mode; + arg_mode : Mode.Alloc.t; arg_sort : sort; ret_sort : sort; - alloc_mode : Types.alloc_mode } - | Texp_apply of expression * (arg_label * apply_arg) list * apply_position * Types.alloc_mode + alloc_mode : Mode.Alloc.t } + | Texp_apply of + expression * (arg_label * apply_arg) list * apply_position * + Mode.Locality.t | Texp_match of expression * sort * computation case list * partial | Texp_try of expression * value case list - | Texp_tuple of expression list * Types.alloc_mode + | Texp_tuple of expression list * Mode.Alloc.t | Texp_construct of - Longident.t loc * constructor_description * expression list * Types.alloc_mode option - | Texp_variant of label * (expression * Types.alloc_mode) option + Longident.t loc * constructor_description * expression list * Mode.Alloc.t option + | Texp_variant of label * (expression * Mode.Alloc.t) option | Texp_record of { fields : ( Types.label_description * record_label_definition ) array; representation : Types.record_representation; extended_expression : expression option; - alloc_mode : Types.alloc_mode option + alloc_mode : Mode.Alloc.t option } - | Texp_field of expression * Longident.t loc * label_description * Types.alloc_mode option + | Texp_field of + expression * Longident.t loc * label_description * unique_use * Mode.Alloc.t option | Texp_setfield of - expression * Types.alloc_mode * Longident.t loc * label_description * expression - | Texp_array of mutable_flag * expression list * Types.alloc_mode + expression * Mode.Locality.t * Longident.t loc * label_description * expression + | Texp_array of mutable_flag * expression list * Mode.Alloc.t | Texp_list_comprehension of comprehension | Texp_array_comprehension of mutable_flag * comprehension | Texp_ifthenelse of expression * expression * expression option @@ -151,7 +160,7 @@ and expression_desc = for_body : expression; for_body_sort : sort; } - | Texp_send of expression * meth * apply_position * Types.alloc_mode + | Texp_send of expression * meth * apply_position * Mode.Alloc.t | Texp_new of Path.t * Longident.t loc * Types.class_declaration * apply_position | Texp_instvar of Path.t * Path.t * string loc @@ -182,7 +191,7 @@ and expression_desc = | Texp_probe_is_enabled of { name:string } | Texp_exclave of expression -and ident_kind = Id_value | Id_prim of Types.alloc_mode option +and ident_kind = Id_value | Id_prim of Mode.Locality.t option and meth = | Tmeth_name of string @@ -224,7 +233,7 @@ and 'k case = } and record_label_definition = - | Kept of Types.type_expr + | Kept of Types.type_expr * unique_use | Overridden of Longident.t loc * expression and binding_op = @@ -243,9 +252,9 @@ and ('a, 'b) arg_or_omitted = | Omitted of 'b and omitted_parameter = - { mode_closure : alloc_mode; - mode_arg : alloc_mode; - mode_ret : alloc_mode; + { mode_closure : Mode.Alloc.t; + mode_arg : Mode.Alloc.t; + mode_ret : Mode.Alloc.t; sort_arg : sort } and apply_arg = (expression * sort, omitted_parameter) arg_or_omitted @@ -413,7 +422,7 @@ and primitive_coercion = { pc_desc: Primitive.description; pc_type: type_expr; - pc_poly_mode: alloc_mode option; + pc_poly_mode: Mode.Locality.t option; pc_env: Env.t; pc_loc : Location.t; } @@ -859,7 +868,7 @@ let rec iter_bound_idents d type full_bound_ident_action = - Ident.t -> string loc -> type_expr -> value_mode -> sort -> unit + Ident.t -> string loc -> type_expr -> Mode.Value.t -> sort -> unit (* The intent is that the sort should be the sort of the type of the pattern. It's used to avoid computing layouts from types. `f` then gets passed diff --git a/ocaml/typing/typedtree.mli b/ocaml/typing/typedtree.mli index c7a874064e7..0930a1f7739 100644 --- a/ocaml/typing/typedtree.mli +++ b/ocaml/typing/typedtree.mli @@ -41,6 +41,17 @@ type _ pattern_category = | Value : value pattern_category | Computation : computation pattern_category +(* The following will be used in the future when overwriting is introduced and + code-motion need to be checked. This will be associated to each field + projection, and represents the usage of the record immediately after this + projection. If it points to unique, that means this projection must be + borrowed and cannot be moved *) +type unique_barrier = Mode.Uniqueness.t option + +type unique_use = Mode.Uniqueness.t * Mode.Linearity.t + +val shared_many_use : unique_use + type pattern = value general_pattern and 'k general_pattern = 'k pattern_desc pattern_data @@ -77,10 +88,10 @@ and 'k pattern_desc = (* value patterns *) | Tpat_any : value pattern_desc (** _ *) - | Tpat_var : Ident.t * string loc * Types.value_mode -> value pattern_desc + | Tpat_var : Ident.t * string loc * Mode.Value.t -> value pattern_desc (** x *) | Tpat_alias : - value general_pattern * Ident.t * string loc * Types.value_mode -> value pattern_desc + value general_pattern * Ident.t * string loc * Mode.Value.t -> value pattern_desc (** P as a *) | Tpat_constant : constant -> value pattern_desc (** 1, 'a', "true", 1.0, 1l, 1L, 1n *) @@ -175,10 +186,10 @@ and exp_extra = (** fun (type t : immediate) -> *) and fun_curry_state = - | More_args of { partial_mode : Types.alloc_mode } + | More_args of { partial_mode : Mode.Alloc.t } (** [partial_mode] is the mode of the resulting closure if this function is partially applied *) - | Final_arg of { partial_mode : Types.alloc_mode } + | Final_arg of { partial_mode : Mode.Alloc.t } (** [partial_mode] is relevant for the final arg only because of an optimisation that Simplif does to merge functions, which might result in this arg no longer being @@ -199,7 +210,7 @@ and fun_curry_state = *) and expression_desc = Texp_ident of - Path.t * Longident.t loc * Types.value_description * ident_kind + Path.t * Longident.t loc * Types.value_description * ident_kind * unique_use (** x M.x *) @@ -213,10 +224,10 @@ and expression_desc = cases : value case list; partial : partial; region : bool; curry : fun_curry_state; warnings : Warnings.state; - arg_mode : Types.alloc_mode; + arg_mode : Mode.Alloc.t; arg_sort : Layouts.sort; ret_sort : Layouts.sort; - alloc_mode : Types.alloc_mode} + alloc_mode : Mode.Alloc.t} (** [Pexp_fun] and [Pexp_function] both translate to [Texp_function]. See {!Parsetree} for more details. @@ -230,7 +241,7 @@ and expression_desc = partial_mode is the mode of the resulting closure if this function is partially applied to a single argument. *) - | Texp_apply of expression * (arg_label * apply_arg) list * apply_position * Types.alloc_mode + | Texp_apply of expression * (arg_label * apply_arg) list * apply_position * Mode.Locality.t (** E0 ~l1:E1 ... ~ln:En The expression can be Omitted if the expression is abstracted over @@ -257,10 +268,11 @@ and expression_desc = *) | Texp_try of expression * value case list (** try E with P1 -> E1 | ... | PN -> EN *) - | Texp_tuple of expression list * Types.alloc_mode + | Texp_tuple of expression list * Mode.Alloc.t (** (E1, ..., EN) *) | Texp_construct of - Longident.t loc * Types.constructor_description * expression list * Types.alloc_mode option + Longident.t loc * Types.constructor_description * + expression list * Mode.Alloc.t option (** C [] C E [E] C (E1, ..., En) [E1;...;En] @@ -269,7 +281,7 @@ and expression_desc = or [None] if the constructor is [Cstr_unboxed] or [Cstr_constant], in which case it does not need allocation. *) - | Texp_variant of label * (expression * Types.alloc_mode) option + | Texp_variant of label * (expression * Mode.Alloc.t) option (** [alloc_mode] is the allocation mode of the variant, or [None] if the variant has no argument, in which case it does not need allocation. @@ -278,7 +290,7 @@ and expression_desc = fields : ( Types.label_description * record_label_definition ) array; representation : Types.record_representation; extended_expression : expression option; - alloc_mode : Types.alloc_mode option + alloc_mode : Mode.Alloc.t option } (** { l1=P1; ...; ln=Pn } (extended_expression = None) { E0 with l1=P1; ...; ln=Pn } (extended_expression = Some E0) @@ -294,14 +306,16 @@ and expression_desc = or [None] if it is [Record_unboxed], in which case it does not need allocation. *) - | Texp_field of expression * Longident.t loc * Types.label_description * Types.alloc_mode option + | Texp_field of expression * Longident.t loc * Types.label_description * + unique_use * Mode.Alloc.t option (** [alloc_mode] is the allocation mode of the result; available ONLY - when getting a (float) field from a [Record_float] record + only when getting a (float) field from a [Record_float] record *) | Texp_setfield of - expression * Types.alloc_mode * Longident.t loc * Types.label_description * expression + expression * Mode.Locality.t * Longident.t loc * + Types.label_description * expression (** [alloc_mode] translates to the [modify_mode] of the record *) - | Texp_array of mutable_flag * expression list * Types.alloc_mode + | Texp_array of mutable_flag * expression list * Mode.Alloc.t | Texp_list_comprehension of comprehension | Texp_array_comprehension of mutable_flag * comprehension | Texp_ifthenelse of expression * expression * expression option @@ -320,7 +334,7 @@ and expression_desc = for_body : expression; for_body_sort : Layouts.sort; } - | Texp_send of expression * meth * apply_position * Types.alloc_mode + | Texp_send of expression * meth * apply_position * Mode.Alloc.t (** [alloc_mode] is the allocation mode of the result *) | Texp_new of Path.t * Longident.t loc * Types.class_declaration * apply_position @@ -353,7 +367,7 @@ and expression_desc = | Texp_probe_is_enabled of { name:string } | Texp_exclave of expression -and ident_kind = Id_value | Id_prim of Types.alloc_mode option +and ident_kind = Id_value | Id_prim of Mode.Locality.t option and meth = Tmeth_name of string @@ -403,7 +417,7 @@ and 'k case = } and record_label_definition = - | Kept of Types.type_expr + | Kept of Types.type_expr * unique_use | Overridden of Longident.t loc * expression and binding_op = @@ -424,9 +438,9 @@ and ('a, 'b) arg_or_omitted = | Omitted of 'b and omitted_parameter = - { mode_closure : Types.alloc_mode; - mode_arg : Types.alloc_mode; - mode_ret : Types.alloc_mode; + { mode_closure : Mode.Alloc.t; + mode_arg : Mode.Alloc.t; + mode_ret : Mode.Alloc.t; sort_arg : Layouts.sort } and apply_arg = (expression * Layouts.sort, omitted_parameter) arg_or_omitted @@ -600,7 +614,7 @@ and primitive_coercion = { pc_desc: Primitive.description; pc_type: Types.type_expr; - pc_poly_mode: Types.alloc_mode option; + pc_poly_mode: Mode.Locality.t option; pc_env: Env.t; pc_loc : Location.t; } @@ -950,7 +964,7 @@ val let_bound_idents_full: value_binding list -> (Ident.t * string loc * Types.type_expr) list val let_bound_idents_with_modes_and_sorts: value_binding list - -> (Ident.t * (Location.t * Types.value_mode * Layouts.sort) list) list + -> (Ident.t * (Location.t * Mode.Value.t * Layouts.sort) list) list (** Alpha conversion of patterns *) val alpha_pat: diff --git a/ocaml/typing/typemod.ml b/ocaml/typing/typemod.ml index b55cde580b3..6b1c58f258c 100644 --- a/ocaml/typing/typemod.ml +++ b/ocaml/typing/typemod.ml @@ -2352,7 +2352,8 @@ and type_module_aux ~alias sttn funct_body anchor env smod = Named (id, param, mty), Types.Named (id, mty.mty_type), newenv, var, true in - let newenv = Env.add_lock Alloc_mode.global newenv in + let newenv = Env.add_escape_lock Module newenv in + let newenv = Env.add_share_lock Module newenv in let body, body_shape = type_module true funct_body None newenv sbody in { mod_desc = Tmod_functor(t_arg, body); mod_type = Mty_functor(ty_arg, body.mod_type); @@ -2652,13 +2653,13 @@ and type_structure ?(toplevel = None) funct_body anchor env sstr = in Tstr_eval (expr, sort, attrs), [], shape_map, env | Pstr_value(rec_flag, sdefs) -> - let force_global = + let force_toplevel = (* Values bound by '_' still escape in the toplevel, because they may be printed even though they are not named *) Option.is_some toplevel in let (defs, newenv) = - Typecore.type_binding env rec_flag ~force_global sdefs in + Typecore.type_binding env rec_flag ~force_toplevel sdefs in let () = if rec_flag = Recursive then Typecore.check_recursive_bindings env defs in diff --git a/ocaml/typing/types.ml b/ocaml/typing/types.ml index d427dc319ae..e8bc7f04dd0 100644 --- a/ocaml/typing/types.ml +++ b/ocaml/typing/types.ml @@ -44,21 +44,7 @@ and type_desc = | Tpackage of Path.t * (Longident.t * type_expr) list and arrow_desc = - arg_label * alloc_mode * alloc_mode - -and alloc_mode_const = Global | Local - -and alloc_mode_var = { - mutable upper: alloc_mode_const; - mutable lower: alloc_mode_const; - mutable vlower: alloc_mode_var list; - mutable mark: bool; - mvid: int; -} - -and alloc_mode = - | Amode of alloc_mode_const - | Amodevar of alloc_mode_var + arg_label * Mode.Alloc.t * Mode.Alloc.t and row_desc = { row_fields: (label * row_field) list; @@ -591,26 +577,20 @@ let signature_item_id = function | Sig_class_type (id, _, _, _) -> id -type value_mode = - { r_as_l : alloc_mode; - r_as_g : alloc_mode; } - (**** Definitions for backtracking ****) type change = - Ctype of type_expr * type_desc - | Ccompress of type_expr * type_desc * type_desc - | Clevel of type_expr * int - | Cscope of type_expr * int - | Cname of - (Path.t * type_expr list) option ref * (Path.t * type_expr list) option - | Crow of [`none|`some] row_field_gen ref - | Ckind of [`var] field_kind_gen - | Ccommu of [`var] commutable_gen - | Cuniv of type_expr option ref * type_expr option - | Cmode_upper of alloc_mode_var * alloc_mode_const - | Cmode_lower of alloc_mode_var * alloc_mode_const - | Cmode_vlower of alloc_mode_var * alloc_mode_var list + Ctype : type_expr * type_desc -> change + | Ccompress : type_expr * type_desc * type_desc -> change + | Clevel : type_expr * int -> change + | Cscope : type_expr * int -> change + | Cname : + (Path.t * type_expr list) option ref * (Path.t * type_expr list) option -> change + | Crow : [`none|`some] row_field_gen ref -> change + | Ckind : [`var] field_kind_gen -> change + | Ccommu : [`var] commutable_gen -> change + | Cuniv : type_expr option ref * type_expr option -> change + | Cmodes : Mode.changes -> change type changes = Change of change * changes ref @@ -624,18 +604,8 @@ let log_change ch = !trail := Change (ch, r'); trail := r' -let log_changes chead ctail = - if chead = Unchanged then (assert (!ctail = Unchanged)) - else begin - !trail := chead; - trail := ctail - end - -let append_change ctail ch = - assert (!(!ctail) = Unchanged); - let r' = ref Unchanged in - (!ctail) := Change (ch, r'); - ctail := r' +let () = + Mode.change_log := (fun changes -> log_change (Cmodes changes)) (* constructor and accessors for [field_kind] *) @@ -884,9 +854,7 @@ let undo_change = function | Ckind (FKvar r) -> r.field_kind <- FKprivate | Ccommu (Cvar r) -> r.commu <- Cunknown | Cuniv (r, v) -> r := v - | Cmode_upper (v, u) -> v.upper <- u - | Cmode_lower (v, l) -> v.lower <- l - | Cmode_vlower (v, vs) -> v.vlower <- vs + | Cmodes ms -> Mode.undo_changes ms type snapshot = changes ref * int let last_snapshot = Local_store.s_ref 0 @@ -1045,446 +1013,4 @@ let undo_compress (changes, _old) = | _ -> ()) log -module Alloc_mode = struct - type nonrec const = alloc_mode_const = Global | Local - type t = alloc_mode = - | Amode of const - | Amodevar of alloc_mode_var - - let global = Amode Global - let local = Amode Local - let of_const = function - | Global -> global - | Local -> local - - let min_mode = global - - let max_mode = local - - let le_const a b = - match a, b with - | Global, _ | _, Local -> true - | Local, Global -> false - - let join_const a b = - match a, b with - | Local, _ | _, Local -> Local - | Global, Global -> Global - - let meet_const a b = - match a, b with - | Global, _ | _, Global -> Global - | Local, Local -> Local - - exception NotSubmode -(* - let pp_c ppf = function - | Global -> Printf.fprintf ppf "0" - | Local -> Printf.fprintf ppf "1" - let pp_v ppf v = - let i = v.mvid in - (if i < 26 then Printf.fprintf ppf "%c" (Char.chr (Char.code 'a' + i)) - else Printf.fprintf ppf "v%d" i); - Printf.fprintf ppf "[%a%a]" pp_c v.lower pp_c v.upper -*) - - let set_lower ~log v lower = - append_change log (Cmode_lower (v, v.lower)); - v.lower <- lower - - let set_upper ~log v upper = - append_change log (Cmode_upper (v, v.upper)); - v.upper <- upper - - let set_vlower ~log v vlower = - append_change log (Cmode_vlower (v, v.vlower)); - v.vlower <- vlower - - let submode_cv ~log m v = - (* Printf.printf " %a <= %a\n" pp_c m pp_v v; *) - if le_const m v.lower then () - else if not (le_const m v.upper) then raise NotSubmode - else begin - let m = join_const v.lower m in - set_lower ~log v m; - if m = v.upper then set_vlower ~log v [] - end - - let rec submode_vc ~log v m = - (* Printf.printf " %a <= %a\n" pp_v v pp_c m; *) - if le_const v.upper m then () - else if not (le_const v.lower m) then raise NotSubmode - else begin - let m = meet_const v.upper m in - set_upper ~log v m; - v.vlower |> List.iter (fun a -> - (* a <= v <= m *) - submode_vc ~log a m; - set_lower ~log v (join_const v.lower a.lower); - ); - if v.lower = m then set_vlower ~log v [] - end - - let submode_vv ~log a b = - (* Printf.printf " %a <= %a\n" pp_v a pp_v b; *) - if le_const a.upper b.lower then () - else if a == b || List.memq a b.vlower then () - else begin - submode_vc ~log a b.upper; - set_vlower ~log b (a :: b.vlower); - submode_cv ~log a.lower b; - end - - let submode a b = - let log_head = ref Unchanged in - let log = ref log_head in - match - match a, b with - | Amode a, Amode b -> - if not (le_const a b) then raise NotSubmode - | Amodevar v, Amode c -> - (* Printf.printf "%a <= %a\n" pp_v v pp_c c; *) - submode_vc ~log v c - | Amode c, Amodevar v -> - (* Printf.printf "%a <= %a\n" pp_c c pp_v v; *) - submode_cv ~log c v - | Amodevar a, Amodevar b -> - (* Printf.printf "%a <= %a\n" pp_v a pp_v b; *) - submode_vv ~log a b - with - | () -> - log_changes !log_head !log; - Ok () - | exception NotSubmode -> - let backlog = rev_log [] !log_head in - List.iter undo_change backlog; - Error () - - let submode_exn t1 t2 = - match submode t1 t2 with - | Ok () -> () - | Error () -> invalid_arg "submode_exn" - - let equate a b = - match submode a b, submode b a with - | Ok (), Ok () -> Ok () - | Error (), _ | _, Error () -> Error () - - let make_global_exn t = - submode_exn t global - - let make_local_exn t = - submode_exn local t - - let next_id = ref (-1) - let fresh () = - incr next_id; - { upper = Local; - lower = Global; - vlower = []; - mvid = !next_id; - mark = false } - - let rec all_equal v = function - | [] -> true - | v' :: rest -> - if v == v' then all_equal v rest - else false - - let joinvars vars = - match vars with - | [] -> global - | v :: rest -> - let v = - if all_equal v rest then v - else begin - let v = fresh () in - List.iter (fun v' -> submode_exn (Amodevar v') (Amodevar v)) vars; - v - end - in - Amodevar v - - let join ms = - let rec aux vars = function - | [] -> joinvars vars - | Amode Global :: ms -> aux vars ms - | Amode Local :: _ -> local - | Amodevar v :: ms -> aux (v :: vars) ms - in aux [] ms - - let constrain_upper = function - | Amode m -> m - | Amodevar v -> - submode_exn (Amode v.upper) (Amodevar v); - v.upper - - exception Became_constant - let compress_vlower v = - let nmarked = ref 0 in - let mark v' = - assert (not v'.mark); - v'.mark <- true; - incr nmarked - in - let unmark v' = - assert v'.mark; - v'.mark <- false; - decr nmarked - in - let new_lower = ref v.lower in - let new_vlower = ref v.vlower in - (* Ensure that each transitive lower bound of v - is a direct lower bound of v *) - let rec trans v' = - if le_const v'.upper !new_lower then () - else if v'.mark then () - else begin - mark v'; - new_vlower := v' :: !new_vlower; - trans_low v' - end - and trans_low v' = - assert (v != v'); - if not (le_const v'.lower v.upper) then - Misc.fatal_error "compress_vlower: invalid bounds"; - if not (le_const v'.lower !new_lower) then begin - new_lower := join_const !new_lower v'.lower; - if !new_lower = v.upper then - (* v is now a constant, no need to keep computing bounds *) - raise Became_constant - end; - List.iter trans v'.vlower - in - mark v; - List.iter mark v.vlower; - let became_constant = - match List.iter trans_low v.vlower with - | () -> false - | exception Became_constant -> true - in - List.iter unmark !new_vlower; - unmark v; - assert (!nmarked = 0); - if became_constant then new_vlower := []; - if !new_lower != v.lower || !new_vlower != v.vlower then begin - let log_head = ref Unchanged in - let log = ref log_head in - set_lower ~log v !new_lower; - set_vlower ~log v !new_vlower; - log_changes !log_head !log; - end - - let constrain_lower = function - | Amode m -> m - | Amodevar v -> - compress_vlower v; - submode_exn (Amodevar v) (Amode v.lower); - v.lower - - let newvar () = Amodevar (fresh ()) - - let newvar_below = function - | Amode Global -> Amode Global, false - | m -> - let v = newvar () in - submode_exn v m; - v, true - - let newvar_above = function - | Amode Local -> Amode Local, false - | m -> - let v = newvar () in - submode_exn m v; - v, true - - let check_const = function - | Amode m -> Some m - | Amodevar v -> - compress_vlower v; - if v.lower = v.upper then Some v.lower else None - - let print_const ppf = function - | Global -> Format.fprintf ppf "Global" - | Local -> Format.fprintf ppf "Local" - - let print_var_id ppf v = - Format.fprintf ppf "?%i" v.mvid - - let print_var ppf v = - compress_vlower v; - if v.lower = v.upper then begin - print_const ppf v.lower - end else if v.vlower = [] then begin - print_var_id ppf v - end else begin - Format.fprintf ppf "%a[> %a]" - print_var_id v - (Format.pp_print_list print_var_id) v.vlower - end - - let print ppf = function - | Amode m -> print_const ppf m - | Amodevar v -> print_var ppf v - -end -module Value_mode = struct - - type const = - | Global - | Regional - | Local - - let r_as_l : const -> Alloc_mode.const = function - | Global -> Global - | Regional -> Local - | Local -> Local - [@@warning "-unused-value-declaration"] - - let r_as_g : const -> Alloc_mode.const = function - | Global -> Global - | Regional -> Global - | Local -> Local - [@@warning "-unused-value-declaration"] - - let of_alloc_consts - ~(r_as_l : Alloc_mode.const) - ~(r_as_g : Alloc_mode.const) = - match r_as_l, r_as_g with - | Global, Global -> Global - | Global, Local -> assert false - | Local, Global -> Regional - | Local, Local -> Local - - type t = value_mode = - { r_as_l : Alloc_mode.t; - (* [r_as_l] is the image of the mode under the [r_as_l] function *) - r_as_g : Alloc_mode.t; - (* [r_as_g] is the image of the mode under the [r_as_g] function. - Always less than [r_as_l]. *) } - - let global = - let r_as_l = Alloc_mode.global in - let r_as_g = Alloc_mode.global in - { r_as_l; r_as_g } - - let regional = - let r_as_l = Alloc_mode.local in - let r_as_g = Alloc_mode.global in - { r_as_l; r_as_g } - - let local = - let r_as_l = Alloc_mode.local in - let r_as_g = Alloc_mode.local in - { r_as_l; r_as_g } - - let of_const = function - | Global -> global - | Regional -> regional - | Local -> local - - let max_mode = - let r_as_l = Alloc_mode.max_mode in - let r_as_g = Alloc_mode.max_mode in - { r_as_l; r_as_g } - - let min_mode = - let r_as_l = Alloc_mode.min_mode in - let r_as_g = Alloc_mode.min_mode in - { r_as_l; r_as_g } - - let of_alloc mode = - let r_as_l = mode in - let r_as_g = mode in - { r_as_l; r_as_g } - - let local_to_regional t = { t with r_as_g = Alloc_mode.global } - - let regional_to_global t = { t with r_as_l = t.r_as_g } - - let regional_to_local t = { t with r_as_g = t.r_as_l } - - let global_to_regional t = { t with r_as_l = Alloc_mode.local } - - let regional_to_global_alloc t = t.r_as_g - - let regional_to_local_alloc t = t.r_as_l - - type error = [`Regionality | `Locality] - - let submode t1 t2 = - match Alloc_mode.submode t1.r_as_l t2.r_as_l with - | Error () -> Error `Regionality - | Ok () as ok -> begin - match Alloc_mode.submode t1.r_as_g t2.r_as_g with - | Ok () -> ok - | Error () -> Error `Locality - end - - let submode_exn t1 t2 = - match submode t1 t2 with - | Ok () -> () - | Error _ -> invalid_arg "submode_exn" - - let rec submode_meet t = function - | [] -> Ok () - | t' :: rest -> - match submode t t' with - | Ok () -> submode_meet t rest - | Error _ as err -> err - - let join ts = - let r_as_l = Alloc_mode.join (List.map (fun t -> t.r_as_l) ts) in - let r_as_g = Alloc_mode.join (List.map (fun t -> t.r_as_g) ts) in - { r_as_l; r_as_g } - - let constrain_upper t = - let r_as_l = Alloc_mode.constrain_upper t.r_as_l in - let r_as_g = Alloc_mode.constrain_upper t.r_as_g in - of_alloc_consts ~r_as_l ~r_as_g - - let constrain_lower t = - let r_as_l = Alloc_mode.constrain_lower t.r_as_l in - let r_as_g = Alloc_mode.constrain_lower t.r_as_g in - of_alloc_consts ~r_as_l ~r_as_g - - let newvar () = - let r_as_l = Alloc_mode.newvar () in - let r_as_g = Alloc_mode.newvar () in - Alloc_mode.submode_exn r_as_g r_as_l; - { r_as_l; r_as_g } - - let newvar_below = function - | { r_as_l = Amode Global; - r_as_g = Amode Global } -> - global - | m -> - let v = newvar () in - submode_exn v m; - v - - let check_const t = - match Alloc_mode.check_const t.r_as_l with - | None -> None - | Some r_as_l -> - match Alloc_mode.check_const t.r_as_g with - | None -> None - | Some r_as_g -> - Some (of_alloc_consts ~r_as_l ~r_as_g) - - let print_const ppf = function - | Global -> Format.fprintf ppf "Global" - | Regional -> Format.fprintf ppf "Regional" - | Local -> Format.fprintf ppf "Local" - - let print ppf t = - match check_const t with - | Some const -> print_const ppf const - | None -> - Format.fprintf ppf - "@[<2>r_as_l: %a@ r_as_g: %a@]" - Alloc_mode.print t.r_as_l - Alloc_mode.print t.r_as_g - -end diff --git a/ocaml/typing/types.mli b/ocaml/typing/types.mli index 160d186da9d..e48ff49a7b6 100644 --- a/ocaml/typing/types.mli +++ b/ocaml/typing/types.mli @@ -137,21 +137,9 @@ and type_desc = (** Type of a first-class module (a.k.a package). *) and arrow_desc = - arg_label * alloc_mode * alloc_mode + arg_label * Mode.Alloc.t * Mode.Alloc.t -and alloc_mode_const = Global | Local -and alloc_mode_var = { - mutable upper: alloc_mode_const; - mutable lower: alloc_mode_const; - mutable vlower: alloc_mode_var list; - mutable mark: bool; - mvid: int; -} - -and alloc_mode = - | Amode of alloc_mode_const - | Amodevar of alloc_mode_var and fixed_explanation = | Univar of type_expr (** The row type was bound to an univar *) @@ -801,11 +789,6 @@ val bound_value_identifiers: signature -> Ident.t list val signature_item_id : signature_item -> Ident.t -type value_mode = - (* See Value_mode below *) - { r_as_l : alloc_mode; - r_as_g : alloc_mode; } - (**** Utilities for backtracking ****) type snapshot @@ -850,148 +833,3 @@ val link_kind: inside:field_kind -> field_kind -> unit val link_commu: inside:commutable -> commutable -> unit val set_commu_ok: commutable -> unit - -(**** Allocation modes ****) - -module Alloc_mode : sig - - (* Modes are ordered so that [global] is a submode of [local] *) - type t = alloc_mode - type const = alloc_mode_const = Global | Local - - val global : t - - val local : t - - val of_const : const -> t - - val min_mode : t - - val max_mode : t - - val submode : t -> t -> (unit, unit) result - - val submode_exn : t -> t -> unit - - val equate : t -> t -> (unit, unit) result - - val make_global_exn : t -> unit - - val make_local_exn : t -> unit - - val join_const : const -> const -> const - - val join : t list -> t - - (* Force a mode variable to its upper bound *) - val constrain_upper : t -> const - - (* Force a mode variable to its lower bound *) - val constrain_lower : t -> const - - val newvar : unit -> t - - val newvar_below : t -> t * bool - - val newvar_above : t -> t * bool - - val check_const : t -> const option - - val print : Format.formatter -> t -> unit - -end - -module Value_mode : sig - - type const = - | Global - | Regional - | Local - - type t = value_mode - - val global : t - - val regional : t - - val local : t - - val of_const : const -> t - - val max_mode : t - - val min_mode : t - - (** Injections from [Alloc_mode.t] into [Value_mode.t] *) - - (** [of_alloc] maps [Global] to [Global] and [Local] to [Local] *) - val of_alloc : Alloc_mode.t -> t - - (** Kernel operators *) - - (** The kernel operator [local_to_regional] maps [Local] to - [Regional] and leaves the others unchanged. *) - val local_to_regional : t -> t - - (** The kernel operator [regional_to_global] maps [Regional] - to [Global] and leaves the others unchanged. *) - val regional_to_global : t -> t - - (** Closure operators *) - - (** The closure operator [regional_to_local] maps [Regional] - to [Local] and leaves the others unchanged. *) - val regional_to_local : t -> t - - (** The closure operator [global_to_regional] maps [Global] to - [Regional] and leaves the others unchanged. *) - val global_to_regional : t -> t - - (** Note that the kernal and closure operators are in the following - adjunction relationship: - {v - local_to_regional - -| regional_to_local - -| regional_to_global - -| global_to_regional - v} - - Equivalently, - {v - local_to_regional a <= b iff a <= regional_to_local b - regional_to_local a <= b iff a <= regional_to_global b - regional_to_global a <= b iff a <= global_to_regional b - v} - *) - - (** Versions of the operators that return [Alloc.t] *) - - (** Maps [Regional] to [Global] and leaves the others unchanged. *) - val regional_to_global_alloc : t -> Alloc_mode.t - - (** Maps [Regional] to [Local] and leaves the others unchanged. *) - val regional_to_local_alloc : t -> Alloc_mode.t - - type error = [`Regionality | `Locality] - - val submode : t -> t -> (unit, error) result - - val submode_exn : t -> t -> unit - - val submode_meet : t -> t list -> (unit, error) result - - val join : t list -> t - - val constrain_upper : t -> const - - val constrain_lower : t -> const - - val newvar : unit -> t - - val newvar_below : t -> t - - val check_const : t -> const option - - val print : Format.formatter -> t -> unit - -end diff --git a/ocaml/typing/typetexp.ml b/ocaml/typing/typetexp.ml index 2dfe6114e50..309f96f8b76 100644 --- a/ocaml/typing/typetexp.ml +++ b/ocaml/typing/typetexp.ml @@ -23,6 +23,7 @@ open Parsetree open Typedtree open Layouts open Types +open Mode open Ctype exception Already_bound @@ -493,11 +494,28 @@ let get_type_param_name styp = | _ -> 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 - | Ok true -> Alloc_mode.Local - | Ok false -> Alloc_mode.Global - | Error () -> - raise (Error(styp.ptyp_loc, Env.empty, Unsupported_extension Local)) + let locality = + match Builtin_attributes.has_local styp.ptyp_attributes with + | Ok true -> Locality.Const.Local + | Ok false -> Locality.Const.Global + | Error () -> + raise (Error(styp.ptyp_loc, Env.empty, Unsupported_extension Local)) + in + let uniqueness = + match Builtin_attributes.has_unique styp.ptyp_attributes with + | Ok true -> Uniqueness.Const.Unique + | Ok false -> Uniqueness.Const.Shared + | Error () -> + raise (Error(styp.ptyp_loc, Env.empty, Unsupported_extension Unique)) + in + let linearity = + match Builtin_attributes.has_once styp.ptyp_attributes with + | Ok true -> Linearity.Const.Once + | Ok false -> Linearity.Const.Many + | Error () -> + raise (Error(styp.ptyp_loc, Env.empty, Unsupported_extension Unique)) + in + { locality = locality; uniqueness; linearity } let rec extract_params styp = let final styp = @@ -566,7 +584,15 @@ and transl_type_aux env policy mode styp = | (l, arg_mode, arg) :: rest -> check_arg_type arg; let arg_cty = transl_type env policy arg_mode arg in - let acc_mode = Alloc_mode.join_const acc_mode arg_mode in + let acc_mode = + Alloc.Const.join + (Alloc.Const.close_over arg_mode) + (Alloc.Const.partial_apply acc_mode) + in + let acc_mode = + Alloc.Const.join acc_mode + (Alloc.Const.min_with_uniqueness Uniqueness.Const.Shared) + in let ret_mode = match rest with | [] -> ret_mode @@ -586,8 +612,8 @@ and transl_type_aux env policy mode styp = (newconstr Predef.path_option [Btype.tpoly_get_mono arg_ty]) end in - let arg_mode = Alloc_mode.of_const arg_mode in - let ret_mode = Alloc_mode.of_const ret_mode in + let arg_mode = Alloc.of_const arg_mode in + let ret_mode = Alloc.of_const ret_mode in let arrow_desc = (l, arg_mode, ret_mode) in (* CR layouts v3: For now, we require function arguments and returns to have a representable layout. See comment in @@ -614,7 +640,7 @@ and transl_type_aux env policy mode styp = loop mode args | Ptyp_tuple stl -> assert (List.length stl >= 2); - let ctys = List.map (transl_type env policy Alloc_mode.Global) stl in + let ctys = List.map (transl_type env policy Alloc.Const.legacy) stl in List.iter (fun {ctyp_type; ctyp_loc} -> (* CR layouts v5: remove value requirement *) match @@ -640,7 +666,7 @@ and transl_type_aux env policy mode styp = raise(Error(styp.ptyp_loc, env, Type_arity_mismatch(lid.txt, decl.type_arity, List.length stl))); - let args = List.map (transl_type env policy Alloc_mode.Global) stl in + let args = List.map (transl_type env policy Alloc.Const.legacy) stl in let params = instance_list decl.type_params in let unify_param = match decl.type_manifest with @@ -696,7 +722,7 @@ and transl_type_aux env policy mode styp = raise(Error(styp.ptyp_loc, env, Type_arity_mismatch(lid.txt, decl.type_arity, List.length stl))); - let args = List.map (transl_type env policy Alloc_mode.Global) stl in + let args = List.map (transl_type env policy Alloc.Const.legacy) stl in let params = instance_list decl.type_params in List.iter2 (fun (sty, cty) ty' -> @@ -767,7 +793,7 @@ and transl_type_aux env policy mode styp = let tl = Builtin_attributes.warning_scope rf_attributes (fun () -> - List.map (transl_type env policy Alloc_mode.Global) stl) + List.map (transl_type env policy Alloc.Const.legacy) stl) in List.iter (fun {ctyp_type; ctyp_loc} -> (* CR layouts: at some point we'll allow different layouts in @@ -796,7 +822,7 @@ and transl_type_aux env policy mode styp = add_typed_field styp.ptyp_loc l.txt f; Ttag (l,c,tl) | Rinherit sty -> - let cty = transl_type env policy Alloc_mode.Global sty in + let cty = transl_type env policy Alloc.Const.legacy sty in let ty = cty.ctyp_type in let nm = match get_desc cty.ctyp_type with @@ -868,7 +894,7 @@ and transl_type_aux env policy mode styp = let l, mty = create_package_mty true styp.ptyp_loc env (p, l) in let mty = TyVarEnv.with_local_scope (fun () -> !transl_modtype env mty) in let ptys = List.map (fun (s, pty) -> - s, transl_type env policy Alloc_mode.Global pty + s, transl_type env policy Alloc.Const.legacy pty ) l in List.iter (fun (s,{ctyp_type=ty}) -> match @@ -1045,7 +1071,9 @@ and transl_fields env policy o fields = | Otag (s, ty1) -> begin let ty1 = Builtin_attributes.warning_scope of_attributes - (fun () -> transl_type env policy Alloc_mode.Global (Ast_helper.Typ.force_poly ty1)) + (fun () -> + transl_type env policy Alloc.Const.legacy + (Ast_helper.Typ.force_poly ty1)) in begin match @@ -1063,7 +1091,7 @@ and transl_fields env policy o fields = field end | Oinherit sty -> begin - let cty = transl_type env policy Alloc_mode.Global sty in + let cty = transl_type env policy Alloc.Const.legacy sty in let nm = match get_desc cty.ctyp_type with Tconstr(p, _, _) -> Some p @@ -1146,7 +1174,7 @@ let transl_simple_type_univars env styp = let typ, univs = TyVarEnv.collect_univars begin fun () -> begin_def (); let policy = TyVarEnv.univars_policy in - let typ = transl_type env policy Alloc_mode.Global styp in + let typ = transl_type env policy Alloc.Const.legacy styp in TyVarEnv.globalize_used_variables policy env (); end_def (); generalize typ.ctyp_type; @@ -1173,7 +1201,7 @@ let transl_simple_type_delayed env mode styp = let transl_type_scheme_mono env styp = begin_def(); - let typ = transl_simple_type env ~closed:false Alloc_mode.Global styp in + let typ = transl_simple_type env ~closed:false Alloc.Const.legacy styp in end_def(); (* This next line is very important: it stops [val] and [external] declarations from having undefaulted layout variables. Without @@ -1187,7 +1215,7 @@ 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 + transl_simple_type env ~univars ~closed:true Alloc.Const.legacy inner_type in end_def(); generalize typ.ctyp_type; diff --git a/ocaml/typing/typetexp.mli b/ocaml/typing/typetexp.mli index 0057719ef2e..3c0b780853c 100644 --- a/ocaml/typing/typetexp.mli +++ b/ocaml/typing/typetexp.mli @@ -17,6 +17,7 @@ open Layouts open Types +open Mode module TyVarEnv : sig (* this is just the subset of [TyVarEnv] that is needed outside @@ -55,12 +56,12 @@ end val valid_tyvar_name : string -> bool val transl_simple_type: - Env.t -> ?univars:TyVarEnv.poly_univars -> closed:bool -> alloc_mode_const + Env.t -> ?univars:TyVarEnv.poly_univars -> closed:bool -> Alloc.Const.t -> Parsetree.core_type -> Typedtree.core_type val transl_simple_type_univars: Env.t -> Parsetree.core_type -> Typedtree.core_type val transl_simple_type_delayed - : Env.t -> alloc_mode_const + : Env.t -> Alloc.Const.t -> Parsetree.core_type -> Typedtree.core_type * type_expr * (unit -> unit) (* Translate a type, but leave type variables unbound. Returns @@ -76,7 +77,7 @@ val transl_type_param: 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 +val get_alloc_mode : Parsetree.core_type -> Alloc.Const.t exception Already_bound diff --git a/ocaml/typing/uniqueness_analysis.ml b/ocaml/typing/uniqueness_analysis.ml new file mode 100644 index 00000000000..8cb295bd4fa --- /dev/null +++ b/ocaml/typing/uniqueness_analysis.ml @@ -0,0 +1,1536 @@ +(**************************************************************************) +(* *) +(* OCaml *) +(* *) +(* Xavier Leroy, projet Cristal, INRIA Rocquencourt *) +(* *) +(* Copyright 1996 Institut National de Recherche en Informatique et *) +(* en Automatique. *) +(* *) +(* All rights reserved. This file is distributed under the terms of *) +(* the GNU Lesser General Public License version 2.1, with the *) +(* special exception on linking described in the file LICENSE. *) +(* *) +(**************************************************************************) + +(* Uniqueness analysis, ran after type-checking *) + +open Asttypes +open Types +open Typedtree +module Uniqueness = Mode.Uniqueness +module Linearity = Mode.Linearity + +module Occurrence = struct + type t = { loc : Location.t } + (** The occurrence of a potentially unique ident in the expression. Currently + it's just the location; might add more things in the future *) + + let mk loc = { loc } +end + +let rec iter_error f = function + | [] -> Ok () + | x :: xs -> ( match f x with Ok () -> iter_error f xs | Error e -> Error e) + +module Maybe_unique : sig + type t + (** The type representing a usage that could be either unique or shared *) + + val extract_occurrence : t -> Occurrence.t + (** extract an arbitrary occurrence from this usage *) + + val singleton : unique_use -> Occurrence.t -> t + (** construct a single usage *) + + val meet : t -> t -> t + + type axis = Uniqueness | Linearity + + type cannot_force = { occ : Occurrence.t; axis : axis } + (** Describes why cannot force shared - including the failing occurrence, and + the failing axis *) + + val mark_multi_use : t -> (unit, cannot_force) result + (** Call this function to indicate that this is used multiple times *) + + val uniqueness : t -> Uniqueness.t + (** Returns the uniqueness represented by this usage. If this identifier is + expected to be unique in any branch, it will return unique. If the current + usage is forced, it will return shared. *) +end = struct + type t = (unique_use * Occurrence.t) list + (** Occurrences with modes to be forced shared and many in the future if + needed. This is a list because of multiple control flows. For example, if + a value is used shared in one branch but unique in another branch, then + overall the value is used uniquely (this is a "stricter" requirement). + Therefore, techincally, the mode this list represents is the meet of all + modes in the lists. (recall that shared > unique). Therefore, if this + virtual mode needs to be forced shared, the whole list needs to be forced + shared. *) + + let singleton unique_use occ : t = [ (unique_use, occ) ] + let uniqueness l = Uniqueness.meet (List.map (fun ((uniq, _), _) -> uniq) l) + + type axis = Uniqueness | Linearity + type cannot_force = { occ : Occurrence.t; axis : axis } + + let mark_multi_use l = + let force_one ((uni, lin), occ) = + (* values being multi-used means two things: + - the expected mode must be higher than [shared] + - the access mode must be lower than [many] *) + match Linearity.submode lin Linearity.many with + | Error () -> Error { occ; axis = Linearity } + | Ok () -> ( + match Uniqueness.submode Uniqueness.shared uni with + | Ok () -> Ok () + | Error () -> Error { occ; axis = Uniqueness }) + in + iter_error force_one l + + let extract_occurrence = function [] -> assert false | (_, occ) :: _ -> occ + let meet l0 l1 = l0 @ l1 +end + +module Maybe_shared : sig + type t + type access = Read | Write + + val string_of_access : access -> string + + (** The type representing a usage that could be either shared or borrowed *) + + val extract_occurrence_access : t -> Occurrence.t * access + (** Extract an arbitrary occurrence from the usage *) + + val set_barrier : t -> Uniqueness.t -> unit + (** set a barrier. The uniqueness mode represents the usage immediately + following the current usage. If that mode is Unique, the current usage + must be Borrowed (hence no code motion); if that mode is not restricted + to Unique, this usage can be Borrowed or Shared (prefered). Raise if + called more than once. *) + + val meet : t -> t -> t + val singleton : unique_barrier ref -> Occurrence.t -> access -> t +end = struct + type access = Read | Write + + let string_of_access = function Read -> "read from" | Write -> "written to" + + type t = (unique_barrier ref * Occurrence.t * access) list + (** list of occurences together with modes to be forced as borrowed in the + future if needed. It is a list because of multiple control flows. For + example, if a value is used borrowed in one branch but shared in another, + then the overall usage is shared. Therefore, the mode this list represents + is the meet of all modes in the list. (recall that borrowed > shared). + Therefore, if this virtual mode needs to be forced borrowed, the whole list + needs to be forced borrowed. *) + + let meet l0 l1 = l0 @ l1 + let singleton r occ access = [ (r, occ, access) ] + + let extract_occurrence_access = function + | [] -> assert false + | (_, occ, access) :: _ -> (occ, access) + + let set_barrier t uniq = + List.iter + (fun (barrier, _, _) -> + match !barrier with + | None -> barrier := Some uniq + | Some _ -> assert false) + t +end + +module Shared : sig + type t + + type reason = + | Forced (** shared because forced *) + | Lazy (** shared because it is the argument of lazy forcing *) + | Lifted of Maybe_shared.access + (** shared because lifted from implicit borrowing, carries the original + access *) + + val singleton : Occurrence.t -> reason -> t + (** The occurrence is only for future error messages. The share_reason must + corresponds to the occurrence *) + + val extract_occurrence : t -> Occurrence.t + val reason : t -> reason +end = struct + type reason = Forced | Lazy | Lifted of Maybe_shared.access + type t = Occurrence.t * reason + + let singleton occ reason = (occ, reason) + let extract_occurrence (occ, _) = occ + let reason (_, reason) = reason +end + +module Usage : sig + type t = + | Unused (** empty usage *) + | Borrowed of Occurrence.t + (** A borrowed usage with an arbitrary occurrence. The occurrence is + only for future error messages. Currently not used, because we don't + have explicit borrowing *) + | Maybe_shared of Maybe_shared.t + (** A usage that could be either borrowed or shared. *) + | Shared of Shared.t (** A shared usage *) + | Maybe_unique of Maybe_unique.t + (** A usage that could be either unique or shared. *) + + val shared : Occurrence.t -> Shared.reason -> t + val maybe_unique : unique_use -> Occurrence.t -> t + + val extract_occurrence : t -> Occurrence.t option + (** Extract an arbitrary occurrence from a usage *) + + type first_or_second = First | Second + + type error = { + cannot_force : Maybe_unique.cannot_force; + there : t; (** The other usage *) + first_or_second : first_or_second; + (** Is it the first or second usage that's failing force? *) + } + + exception Error of error + + val seq : t -> t -> t + (** Sequential composition *) + + val choose : t -> t -> t + (** Non-deterministic choice *) + + val par : t -> t -> t + (** Parallel composition *) +end = struct + (* We have Unused (top) > Borrowed > Shared > Unique > Error (bot). + + - Unused means unused + - Borrowed means read-only access confined to a region + - Shared means read-only access that may escape a region. For example, + storing the value in a cell that can be accessed later. + - Unique means accessing the value as if it's the only pointer. Example + includes overwriting. + - Error means error happens when composing usage. + + Some observations: + - It is sound to relax mode towards Error. It grants the access more + "capability" and usually helps performance. + For example, relaxing borrowed to shared allows code motion of + projections. Relaxing shared to unique allows in-place update. + + An example of the relaxing borrowed to shared: + + let x = r.a in + (a lot of codes) + x + + In first line, r.memory_address is accessed as borrowed. But if we weaken + it to shared and it still mode checks, that means + - there is no "unique" access in the "a lot of codes" + - or equivalently, that r.memory_address stays unchanged and safe to read + + and as a result, we can delay the projection at `x`. + + The downside of relaxing is the loss of completeness: if we relax too + much the program will fail type check. In the extreme case we relax it to + Error which fails type check outright (and extremely sound, hehe). + + - The purpose of this uniqueness analysis is to figure out the most relaxed + mode for each use, such that we get the best performance, while still + type-check. Currently there are really only two choices worth figuring out, + Namely + - borrowed or shared? + - shared or unique? + + As a result, instead of having full-range inference, we only care about the + following ranges: + - unused + - borrowed (Currently not useful, because we don't have explicit borrowing) + - borrowed or shared + - shared + - shared or unique + - error + + error is represented as exception which is just easier. + *) + + type t = + | Unused + | Borrowed of Occurrence.t + | Maybe_shared of Maybe_shared.t + | Shared of Shared.t + | Maybe_unique of Maybe_unique.t + + let shared occ reason = Shared (Shared.singleton occ reason) + + let maybe_unique unique_use occ = + Maybe_unique (Maybe_unique.singleton unique_use occ) + + let extract_occurrence = function + | Unused -> None + | Borrowed occ -> Some occ + | Maybe_shared t -> Some (Maybe_shared.extract_occurrence_access t |> fst) + | Shared t -> Some (Shared.extract_occurrence t) + | Maybe_unique t -> Some (Maybe_unique.extract_occurrence t) + + let choose m0 m1 = + match (m0, m1) with + | Unused, m | m, Unused -> m + | Borrowed _, t | t, Borrowed _ -> t + | Maybe_shared l0, Maybe_shared l1 -> + Maybe_shared (Maybe_shared.meet l0 l1) + | Maybe_shared _, t | t, Maybe_shared _ -> t + | Shared _, t | t, Shared _ -> t + | Maybe_unique l0, Maybe_unique l1 -> + Maybe_unique (Maybe_unique.meet l0 l1) + + type first_or_second = First | Second + + type error = { + cannot_force : Maybe_unique.cannot_force; + there : t; + first_or_second : first_or_second; + } + + exception Error of error + + let force_shared_multiuse t there first_or_second = + match Maybe_unique.mark_multi_use t with + | Ok () -> () + | Error cannot_force -> + raise (Error { cannot_force; there; first_or_second }) + + let par m0 m1 = + match (m0, m1) with + | Unused, m | m, Unused -> m + | Borrowed occ, Borrowed _ -> Borrowed occ + | Borrowed _, Maybe_shared t | Maybe_shared t, Borrowed _ -> Maybe_shared t + | Borrowed _, Shared t | Shared t, Borrowed _ -> Shared t + | Borrowed occ, Maybe_unique t | Maybe_unique t, Borrowed occ -> + force_shared_multiuse t (Borrowed occ) First; + shared (Maybe_unique.extract_occurrence t) Shared.Forced + | Maybe_shared t0, Maybe_shared t1 -> + Maybe_shared (Maybe_shared.meet t0 t1) + | Maybe_shared _, Shared occ | Shared occ, Maybe_shared _ -> + (* The barrier stays empty; if there is any unique after this, it + will error *) + Shared occ + | Maybe_shared t0, Maybe_unique t1 | Maybe_unique t1, Maybe_shared t0 -> + (* t1 must be shared *) + force_shared_multiuse t1 (Maybe_shared t0) First; + (* The barrier stays empty; if there is any unique after this, it will + error *) + shared (Maybe_unique.extract_occurrence t1) Shared.Forced + | Shared t0, Shared _ -> Shared t0 + | Shared t0, Maybe_unique t1 -> + force_shared_multiuse t1 (Shared t0) Second; + Shared t0 + | Maybe_unique t1, Shared t0 -> + force_shared_multiuse t1 (Shared t0) First; + Shared t0 + | Maybe_unique t0, Maybe_unique t1 -> + force_shared_multiuse t0 m1 First; + force_shared_multiuse t1 m0 Second; + shared (Maybe_unique.extract_occurrence t0) Shared.Forced + + let seq m0 m1 = + match (m0, m1) with + | Unused, m | m, Unused -> m + | Borrowed _, t -> t + | Maybe_shared _, Borrowed _ -> m0 + | Maybe_shared l0, Maybe_shared l1 -> + Maybe_shared (Maybe_shared.meet l0 l1) + | Maybe_shared _, Shared _ -> m1 + | Maybe_shared l0, Maybe_unique l1 -> + (* Four cases (semi-colon meaning sequential composition): + Borrowed;Shared = Shared + Borrowed;Unique = Unique + Shared;Shared = Shared + Shared;Unique = Error + + We are in a dilemma: recall that Borrowed->Shared allows code + motion, and Shared->Unique allows unique overwriting. We can't have + both. We first note is that the first is a soft optimization, and + the second is a hard requirement. + + A reasonable solution is thus to check if the m1 actually needs + to use the "unique" capabilities. If not, there is no need to + relax it to Unique, and we will make it Shared, and make m0 + Shared for code-motion. However, there is no good way to do that, + because the "unique_use" in "maybe_unique" is not complete, + because the type-checking and uniqueness analysis is performed on + a per-top-level-expr basis. + + Our solution is to record on the m0 that it is constrained by the + m1. I.e. if m1 is Unique, then m0 cannot be Shared. After the type + checking of the whole file, m1 will correctly tells whether it needs + to be Unique, and by extension whether m0 can be Shared. *) + let uniq = Maybe_unique.uniqueness l1 in + Maybe_shared.set_barrier l0 uniq; + m1 + | Shared _, Borrowed _ -> m0 + | Maybe_unique l, Borrowed occ -> + force_shared_multiuse l m1 First; + shared occ Shared.Forced + | Shared _, Maybe_shared _ -> m0 + | Maybe_unique l0, Maybe_shared l1 -> + (* Four cases: + Shared;Borrowed = Shared + Shared;Shared = Shared + Unique;Borrowed = Error + Unique;Shared = Error + + As you can see, we need to force the m0 to Shared, and m1 needn't + be constrained. The result is always Shared. + *) + let occ, _ = Maybe_shared.extract_occurrence_access l1 in + force_shared_multiuse l0 m1 First; + shared occ Shared.Forced + | Shared _, Shared _ -> m0 + | Maybe_unique l, Shared _ -> + force_shared_multiuse l m1 First; + m1 + | Shared _, Maybe_unique l -> + force_shared_multiuse l m0 Second; + m0 + | Maybe_unique l0, Maybe_unique l1 -> + force_shared_multiuse l0 m1 First; + force_shared_multiuse l1 m0 Second; + shared (Maybe_unique.extract_occurrence l0) Shared.Forced +end + +module Projection : sig + (** Projections from parent to child. *) + type t = + | Tuple_field of int + | Record_field of string + | Construct_field of string * int + | Variant_field of label + | Memory_address + + module Map : Map.S with type key = t +end = struct + module T = struct + type t = + | Tuple_field of int + | Record_field of string + | Construct_field of string * int + | Variant_field of label + | Memory_address + + let compare t1 t2 = + match (t1, t2) with + | Tuple_field i, Tuple_field j -> Int.compare i j + | Record_field l1, Record_field l2 -> String.compare l1 l2 + | Construct_field (l1, i), Construct_field (l2, j) -> ( + match String.compare l1 l2 with 0 -> Int.compare i j | i -> i) + | Variant_field l1, Variant_field l2 -> String.compare l1 l2 + | Memory_address, Memory_address -> 0 + | ( Tuple_field _, + (Record_field _ | Construct_field _ | Variant_field _ | Memory_address) + ) -> + -1 + | ( (Record_field _ | Construct_field _ | Variant_field _ | Memory_address), + Tuple_field _ ) -> + 1 + | Record_field _, (Construct_field _ | Variant_field _ | Memory_address) + -> + -1 + | (Construct_field _ | Variant_field _ | Memory_address), Record_field _ + -> + 1 + | Construct_field _, (Variant_field _ | Memory_address) -> -1 + | (Variant_field _ | Memory_address), Construct_field _ -> 1 + | Variant_field _, Memory_address -> -1 + | Memory_address, Variant_field _ -> 1 + end + + include T + module Map = Map.Make (T) +end + +type boundary_reason = + | Paths_from_mod_class (* currently will never trigger *) + | Free_var_of_mod_class (* currently will never trigger *) + | Out_of_mod_class + +(** The relation between two nodes in a usage tree. Obviously the list must be + non-empty *) +type relation = + | Self + | Ancestor of Projection.t list + | Descendant of Projection.t list + +type error = + | Usage of { + inner : Usage.error; + (** Describes the error concerning the two usages *) + first_is_of_second : relation; + (** The relation between the two usages in the tree *) + } + | Boundary of { + cannot_force : Maybe_unique.cannot_force; + reason : boundary_reason; + } + +exception Error of error + +(** lifting module Usage to trees *) +module Usage_tree : sig + module Path : sig + type t + (** Represents a path from the root to a node in a tree *) + + val child : Projection.t -> t -> t + (** Constructing a child path *) + + val root : t + (** The path representing the root node *) + end + + type t + (** Usage tree, lifted from [Usage.t] *) + + val seq : t -> t -> t + (** Sequential composition lifted from [Usage.seq] *) + + val choose : t -> t -> t + (** Non-deterministic choice lifted from [Usage.choose] *) + + val par : t -> t -> t + (** Parallel composition lifted from [Usage.par] *) + + val singleton : Usage.t -> Path.t -> t + (** A singleton tree containing only one leaf *) + + val mapi : (Path.t -> Usage.t -> Usage.t) -> t -> t + (** Runs a function through the tree; the function must be monotone *) +end = struct + type t = { children : t Projection.Map.t; usage : Usage.t } + (** Represents a tree of usage. Each node records the choose on all possible + execution paths. As a result, trees such as `S -> U` is valid, even though + it would be invalid if it was the result of a single path: using a parent + shared and a child uniquely is obviously bad. However, it might be the + result of "choos"ing multiple path: choose `S` `N -> U`, which is valid. + + INVARIANT: children >= parent. For example, having a shared child under a + unique parent is nonsense. The invariant is preserved because Usage.choose, + Usage.par, and Usage.seq above are monotone, and Usage_tree.par and + Usage_tree.seq, Usage_tree.choose here are node-wise. *) + + module Path = struct + type t = Projection.t list + + let child (a : Projection.t) (p : t) : t = p @ [ a ] + let root : t = [] + end + + let mapi_aux projs f t = + let rec loop projs t = + let usage = f projs t.usage in + let children = + Projection.Map.mapi (fun proj t -> loop (proj :: projs) t) t.children + in + { usage; children } + in + loop projs t + + let mapi f t = mapi_aux [] f t + + let rec mapi2 f t0 t1 = + let usage = f Self t0.usage t1.usage in + let children = + Projection.Map.merge + (fun proj c0 c1 -> + match (c0, c1) with + | None, None -> assert false + | None, Some c1 -> + Some + (mapi_aux [ proj ] + (fun projs r -> f (Ancestor projs) t0.usage r) + c1) + | Some c0, None -> + Some + (mapi_aux [ proj ] + (fun projs l -> f (Descendant projs) l t1.usage) + c0) + | Some c0, Some c1 -> Some (mapi2 f c0 c1)) + t0.children t1.children + in + { usage; children } + + let lift f t0 t1 = + mapi2 + (fun first_is_of_second t0 t1 -> + try f t0 t1 + with Usage.Error error -> + raise (Error (Usage { inner = error; first_is_of_second }))) + t0 t1 + + let choose t0 t1 = lift Usage.choose t0 t1 + let seq t0 t1 = lift Usage.seq t0 t1 + let par t0 t1 = lift Usage.par t0 t1 + + let rec singleton leaf = function + | [] -> { usage = leaf; children = Projection.Map.empty } + | proj :: path -> + { + usage = Unused; + children = Projection.Map.singleton proj (singleton leaf path); + } +end + +(** Lift Usage_tree to forest *) +module Usage_forest : sig + module Path : sig + type t + + val child : Projection.t -> t -> t + (** Construct a child path from a parent *) + + val fresh_root : unit -> t + (** Create a fresh tree in the forest *) + end + + type t + (** Represents a forest of usage. *) + + val seq : t -> t -> t + (** Similar to [Usage_tree.seq] but lifted to forests *) + + val choose : t -> t -> t + (** Similar to [Usage_tree.choose] but lifted to forests *) + + val par : t -> t -> t + (** Similar to [Usage_tree.par] but lifted to forests *) + + val seqs : t list -> t + val chooses : t list -> t + val pars : t list -> t + + val unused : t + (** The empty forest *) + + val singleton : Usage.t -> Path.t -> t + (** The forest with only one usage, given by the path and the usage *) + + val map : (Usage.t -> Usage.t) -> t -> t + (** Run a function through a forest. The function must be monotone *) +end = struct + module Root_id = struct + module T = struct + (* Contains only one field but we might extend in the future *) + type t = { id : int } [@@unboxed] + + let compare t1 t2 = t1.id - t2.id + end + + include T + module Map = Map.Make (T) + + let stamp = ref 0 + + let fresh () = + let id = !stamp in + stamp := id + 1; + { id } + end + + type t = Usage_tree.t Root_id.Map.t + + module Path = struct + type t = Root_id.t * Usage_tree.Path.t + + let child proj ((rootid, path) : t) : t = + (rootid, Usage_tree.Path.child proj path) + + let fresh_root () : t = (Root_id.fresh (), Usage_tree.Path.root) + end + + let unused = Root_id.Map.empty + + (** [f] must be monotone *) + let map2 f t0 t1 = + Root_id.Map.merge + (fun _rootid t0 t1 -> + match (t0, t1) with + | None, None -> assert false + | None, Some t1 -> Some t1 + | Some t0, None -> Some t0 + | Some t0, Some t1 -> Some (f t0 t1)) + t0 t1 + + let choose t0 t1 = map2 Usage_tree.choose t0 t1 + let seq t0 t1 = map2 Usage_tree.seq t0 t1 + let par t0 t1 = map2 Usage_tree.par t0 t1 + let chooses l = List.fold_left choose unused l + let seqs l = List.fold_left seq unused l + let pars l = List.fold_left par unused l + + let singleton leaf ((rootid, path') : Path.t) = + Root_id.Map.singleton rootid (Usage_tree.singleton leaf path') + + (** f must be monotone *) + let map f = + Root_id.Map.mapi (fun _root tree -> + Usage_tree.mapi (fun _projs usage -> f usage) tree) +end + +module UF = Usage_forest + +module Paths : sig + [@@@warning "-unused-value-declaration"] + + type t + (** Represents a list of [UF.Path.t] *) + + val child : Projection.t -> t -> t + (** Returns the element-wise child *) + + val untracked : t + (** Representing values whose modes are managed by the type checker. + They are ignored by uniqueness analysis and represented as empty lists *) + + val modal_child : global_flag -> Projection.t -> t -> t + (** [modal_child gf proj t] is [child prof t] when [gf] is [Unrestricted] + and is [untracked] otherwise. *) + + val tuple_field : int -> t -> t + (** [tuple_field i t] is [child (Projection.Tuple_field i) t]. *) + + val record_field : global_flag -> string -> t -> t + (** [record_field gf s t] is + [modal_child gf (Projection.Record_field s) t]. *) + + val construct_field : global_flag -> string -> int -> t -> t + (** [construct_field gf s i t] is + [modal_child gf (Projection.Construct_field(s, i)) t]. *) + + val variant_field : string -> t -> t + (** [variant_field s t] is [child (Projection.Variant_field s) t]. *) + + val memory_address : t -> t + (** [memory_address t] is [child Projection.Memory_address t]. *) + + val mark : Usage.t -> t -> UF.t + val fresh : unit -> t + val choose : t -> t -> t + + val mark_implicit_borrow_memory_address : + Maybe_shared.access -> Occurrence.t -> t -> UF.t + + val mark_shared : Occurrence.t -> Shared.reason -> t -> UF.t +end = struct + type t = UF.Path.t list + + let choose a b = a @ b + let untracked = [] + let child proj t = List.map (UF.Path.child proj) t + + let modal_child gf proj t = + match gf with + | Global -> untracked + | Unrestricted -> child proj t + + let tuple_field i t = child (Projection.Tuple_field i) t + let record_field gf s t = modal_child gf (Projection.Record_field s) t + + let construct_field gf s i t = + modal_child gf (Projection.Construct_field (s, i)) t + + let variant_field s t = child (Projection.Variant_field s) t + let memory_address t = child Projection.Memory_address t + let mark usage t = UF.chooses (List.map (UF.singleton usage) t) + let fresh () = [ UF.Path.fresh_root () ] + + let mark_implicit_borrow_memory_address access occ paths = + (* Currently we just generate a dummy unique_barrier ref that won't be + consumed. The distinction between implicit and explicit borrowing is + still needed because they are handled differently in closures *) + let barrier = ref None in + mark + (Maybe_shared (Maybe_shared.singleton barrier occ access)) + (memory_address paths) + + let mark_shared occ reason paths = mark (Usage.shared occ reason) paths +end + +let force_shared_boundary unique_use occ ~reason = + let maybe_unique = Maybe_unique.singleton unique_use occ in + match Maybe_unique.mark_multi_use maybe_unique with + | Ok () -> () + | Error cannot_force -> raise (Error (Boundary { cannot_force; reason })) + +module Value : sig + type t + (** See [mk] for its meaning *) + + val existing : Paths.t -> unique_use -> Occurrence.t -> t + (** A value contains the list of paths it could points to, the unique_use if + it's a variable, and its occurrence in the source code. [unique_use] could + be None if it's not a variable (e.g. result of an application) *) + + val fresh : t + (** A value not yet being existing by the analysis *) + + val untracked : unique_use -> Occurrence.t -> t + (** The untracked value, lifted from [Paths.untracked] *) + + val paths : t -> Paths.t option + (** [paths t] is [None] if [t] is fresh and [Some p] if [t] is + existing where [p] are its associated paths *) + + val implicit_record_field : global_flag -> string -> t -> unique_use -> t + (** [implicit_record_field gf s t u] is [fresh] if [t] is [fresh], + otherwise it is [existing (Paths.record_field gf s p) o u] where [p] + are the paths of [t] and [o] is [t]'s occurrence. This is used for the + implicit record field values for kept fields in a [{ foo with ... }] + expression. *) + + val mark_maybe_unique : t -> UF.t + (** Mark the value as shared_or_unique *) + + val mark_implicit_borrow_memory_address : Maybe_shared.access -> t -> UF.t + (** Mark the memory_address of the value as implicitly borrowed + (borrow_or_shared). We still ask for the [occ] argument, because + [Value.occ] is the occurrence of the value, not necessary the place where + it is borrowed. *) + + val mark_shared : reason:boundary_reason -> t -> UF.t +end = struct + type t = + | Fresh + | Existing of { + paths : Paths.t; + unique_use : unique_use; + occ : Occurrence.t; + } + + let existing paths unique_use occ = Existing { paths; unique_use; occ } + let fresh = Fresh + let paths = function Fresh -> None | Existing { paths; _ } -> Some paths + let untracked unique_use occ = existing Paths.untracked unique_use occ + + let implicit_record_field gf s t unique_use = + match t with + | Fresh -> Fresh + | Existing { paths; occ; unique_use = _ } -> + let paths = Paths.record_field gf s paths in + Existing { paths; occ; unique_use } + + let mark_implicit_borrow_memory_address access = function + | Fresh -> UF.unused + | Existing { paths; occ; _ } -> + Paths.mark_implicit_borrow_memory_address access occ paths + + let mark_maybe_unique = function + | Fresh -> UF.unused + | Existing { paths; unique_use; occ } -> + Paths.mark (Usage.maybe_unique unique_use occ) paths + + let mark_shared ~reason = function + | Fresh -> UF.unused + | Existing { paths; unique_use; occ } -> + force_shared_boundary unique_use occ ~reason; + let shared = Usage.shared occ Shared.Forced in + Paths.mark shared paths +end + +module Ienv : sig + module Extension : sig + type t + (** Extention to Ienv. Usually generated by a pattern *) + + val disjunct : t -> t -> t + (** Composition for [OR] patterns. This operation is commutative *) + + val conjunct : t -> t -> t + (** Composition for conjunctive patterns. The two extensions must be + disjoint. *) + + val conjuncts : t list -> t + (** Similar to [conjunct] but lifted to lists *) + + val empty : t + (** The empty extension *) + + val singleton : Ident.t -> Paths.t -> t + (* Constructing a mapping with only one mapping *) + end + + type t + (** Mapping from identifiers to a list of possible nodes, each represented by + a path into the forest, instead of directly ponting to the node. *) + + val extend : t -> Extension.t -> t + (** Extend a mapping with an extension *) + + val empty : t + (** The empty mapping *) + + val find_opt : Ident.t -> t -> Paths.t option + (** Find the list of paths corresponding to an identifier *) +end = struct + module Extension = struct + type t = Paths.t Ident.Map.t + + let disjunct ienv0 ienv1 = + Ident.Map.merge + (fun _id locs0 locs1 -> + match (locs0, locs1) with + | None, None -> None + | Some paths0, Some paths1 -> Some (Paths.choose paths0 paths1) + (* cannot bind variable only in one of the OR-patterns *) + | _, _ -> assert false) + ienv0 ienv1 + + let empty = Ident.Map.empty + + let conjunct ienv0 ienv1 = + Ident.Map.union + (fun _id _ _ -> + (* cannot bind variable twice in a single pattern *) + assert false) + ienv0 ienv1 + + let conjuncts = List.fold_left conjunct empty + let singleton id locs = Ident.Map.singleton id locs + end + + type t = Paths.t Ident.Map.t + + let empty = Ident.Map.empty + + let extend t ex = + Ident.Map.union + (* the extension shadows the original *) + (fun _id _paths0 paths1 -> Some paths1) + t ex + + let find_opt = Ident.Map.find_opt +end + +(* The fun algebraic stuff ends. Here comes the concrete mess *) + +(* Forcing due to boundary is more about OCaml than the algebra, hence defined + here (as opposed to earlier) *) + +type value_to_match = + | Match_tuple of Value.t list + (** The value being matched is a tuple; we treat it specially so matching + tuples against tuples merely create alias instead of uses; We need [Value.t] + instead of [Paths.t] because the tuple could be bound to a variable, in which + case all values in the tuple is considered used *) + | Match_single of Paths.t (** The value being matched is not a tuple *) + +let conjuncts_pattern_match l = + let exts, ufs = List.split l in + (Ienv.Extension.conjuncts exts, UF.pars ufs) + +let rec pattern_match_tuple pat values = + match pat.pat_desc with + | Tpat_or (pat0, pat1, _) -> + let ext0, uf0 = pattern_match_tuple pat0 values in + let ext1, uf1 = pattern_match_tuple pat1 values in + (Ienv.Extension.disjunct ext0 ext1, UF.choose uf0 uf1) + | Tpat_tuple pats -> + List.map2 + (fun pat value -> + let paths = + match Value.paths value with + | None -> Paths.fresh () + | Some paths -> paths + in + pattern_match_single pat paths) + pats values + |> conjuncts_pattern_match + | _ -> + (* Mark all values in the tuple as used, because we are binding the tuple + to a variable *) + let uf = UF.seqs (List.map Value.mark_maybe_unique values) in + let paths = Paths.fresh () in + let ext, uf' = pattern_match_single pat paths in + (ext, UF.seq uf uf') + +and pattern_match_single pat paths : Ienv.Extension.t * UF.t = + let loc = pat.pat_loc in + let occ = Occurrence.mk loc in + match pat.pat_desc with + | Tpat_or (pat0, pat1, _) -> + let ext0, uf0 = pattern_match_single pat0 paths in + let ext1, uf1 = pattern_match_single pat1 paths in + (Ienv.Extension.disjunct ext0 ext1, UF.choose uf0 uf1) + | Tpat_any -> (Ienv.Extension.empty, UF.unused) + | Tpat_var (id, _, _) -> (Ienv.Extension.singleton id paths, UF.unused) + | Tpat_alias (pat', id, _, _) -> + let ext0 = Ienv.Extension.singleton id paths in + let ext1, uf = pattern_match_single pat' paths in + (Ienv.Extension.conjunct ext0 ext1, uf) + | Tpat_constant _ -> + ( Ienv.Extension.empty, + Paths.mark_implicit_borrow_memory_address Read occ paths ) + | Tpat_construct (lbl, cd, pats, _) -> + let uf_read = Paths.mark_implicit_borrow_memory_address Read occ paths in + let pats_args = List.combine pats cd.cstr_args in + let ext, uf_pats = + List.mapi + (fun i (pat, (_, gf)) -> + let name = Longident.last lbl.txt in + let paths = Paths.construct_field gf name i paths in + pattern_match_single pat paths) + pats_args + |> conjuncts_pattern_match + in + (ext, UF.par uf_read uf_pats) + | Tpat_variant (lbl, arg, _) -> + let uf_read = Paths.mark_implicit_borrow_memory_address Read occ paths in + let ext, uf_arg = + match arg with + | Some arg -> + let paths = Paths.variant_field lbl paths in + pattern_match_single arg paths + | None -> (Ienv.Extension.empty, UF.unused) + in + (ext, UF.par uf_read uf_arg) + | Tpat_record (pats, _) -> + let uf_read = Paths.mark_implicit_borrow_memory_address Read occ paths in + let ext, uf_pats = + List.map + (fun (_, l, pat) -> + let paths = Paths.record_field l.lbl_global l.lbl_name paths in + pattern_match_single pat paths) + pats + |> conjuncts_pattern_match + in + (ext, UF.par uf_read uf_pats) + | Tpat_array (_, pats) -> + let uf_read = Paths.mark_implicit_borrow_memory_address Read occ paths in + let ext, uf_pats = + List.map + (fun pat -> + let paths = Paths.fresh () in + pattern_match_single pat paths) + pats + |> conjuncts_pattern_match + in + (ext, UF.par uf_read uf_pats) + | Tpat_lazy arg -> + (* forcing a lazy expression is like calling a nullary-function *) + let uf_force = Paths.mark_shared occ Lazy paths in + let paths = Paths.fresh () in + let ext, uf_arg = pattern_match_single arg paths in + (ext, UF.par uf_force uf_arg) + | Tpat_tuple args -> + let uf_read = Paths.mark_implicit_borrow_memory_address Read occ paths in + let ext, uf_args = + List.mapi + (fun i arg -> + let paths = Paths.tuple_field i paths in + pattern_match_single arg paths) + args + |> conjuncts_pattern_match + in + (ext, UF.par uf_read uf_args) + +let pattern_match pat = function + | Match_tuple values -> pattern_match_tuple pat values + | Match_single paths -> pattern_match_single pat paths + +(* We ignore exceptions in uniqueness analysis. *) +let comp_pattern_match pat value = + match split_pattern pat with + | Some pat', _ -> pattern_match pat' value + | None, _ -> (Ienv.Extension.empty, UF.unused) + +let value_of_ident ienv unique_use occ path = + match path with + | Path.Pident id -> ( + match Ienv.find_opt id ienv with + (* TODO: for better error message, we should record in ienv why some + variables are not in it. *) + | None -> + force_shared_boundary ~reason:Out_of_mod_class unique_use occ; + None + | Some paths -> + let value = Value.existing paths unique_use occ in + Some value) + (* accessing a module, which is forced by typemod to be shared and many. + Here we force it again just to be sure *) + | Path.Pdot _ -> + force_shared_boundary ~reason:Paths_from_mod_class unique_use occ; + None + | Path.Papply _ -> assert false + +(* TODO: replace the dirty hack. + The following functions are dirty hacks and used for modules and classes. + Currently we treat the boundary between modules/classes and their surrounding + environment coarsely. To be specific, all references in the modules/classes + pointing to the environment are treated as many and shared. This translates + to enforcement on both ends: + - inside the module, those uses needs to be forced as many and shared + - need a UF.t which marks those uses as many and shared, so that the + parent expression can detect conflict if any. *) + +(** Returns all open variables inside a module. *) +let open_variables ienv f = + let ll = ref [] in + let iter = + { + Tast_iterator.default_iterator with + expr = + (fun self e -> + (match e.exp_desc with + | Texp_ident (path, _, _, _, unique_use) -> ( + let occ = Occurrence.mk e.exp_loc in + match value_of_ident ienv unique_use occ path with + | None -> () + | Some value -> ll := value :: !ll) + | _ -> ()); + Tast_iterator.default_iterator.expr self e); + } + in + f iter; + !ll + +(** Marks all open variables in a class/module as shared, + as well as returning a UF reflecting all those shared usage. *) +let mark_shared_open_variables ienv f _loc = + let ll = open_variables ienv f in + let ufs = + List.map + (fun value -> Value.mark_shared value ~reason:Free_var_of_mod_class) + ll + in + UF.pars ufs + +let lift_implicit_borrowing uf = + UF.map + (function + | Maybe_shared t -> + (* implicit borrowing lifted. *) + let occ, access = Maybe_shared.extract_occurrence_access t in + Usage.shared occ (Shared.Lifted access) + | m -> + (* other usage stays the same *) + m) + uf + +(* There are two modes our algorithm will work at. + + In the first mode, we care about if the expression can be considered as + alias, for example, we want `a.x.y` to return the alias of a.x.y in addition + to the usage of borrowing a and a.x. Note that a.x.y is not included in the + usage, and the caller is responsible to mark a.x.y if it is used. + + In the second mode, we don't care about if the expression can be considered + as alias. Checking a.x.y will return the usage of borrowing a and a.x, and + using a.x.y. This mode is used in most occasions. *) + +(** Corresponds to the second mode *) +let rec check_uniqueness_exp (ienv : Ienv.t) exp : UF.t = + match exp.exp_desc with + | Texp_ident _ -> + let value, uf = check_uniqueness_exp_as_value ienv exp in + UF.seq uf (Value.mark_maybe_unique value) + | Texp_constant _ -> UF.unused + | Texp_let (_, vbs, body) -> + let ext, uf_vbs = check_uniqueness_value_bindings ienv vbs in + let uf_body = check_uniqueness_exp (Ienv.extend ienv ext) body in + UF.seq uf_vbs uf_body + | Texp_function { cases; _ } -> + (* `param` is only a hint not a binder; + actual binding done in cases by Tpat_var and Tpat_alias *) + let value = Match_single (Paths.fresh ()) in + let uf = check_uniqueness_cases ienv value cases in + (* we are constructing a closure here, and therefore any implicit + borrowing of free variables in the closure is in fact using shared. *) + lift_implicit_borrowing uf + | Texp_apply (fn, args, _, _) -> + let uf_fn = check_uniqueness_exp ienv fn in + let uf_args = + List.map + (fun (_, arg) -> + match arg with + | Arg (e, _) -> check_uniqueness_exp ienv e + | Omitted _ -> UF.unused) + args + in + UF.pars (uf_fn :: uf_args) + | Texp_match (arg, _, cases, _) -> + let value, uf_arg = check_uniqueness_exp_for_match ienv arg in + let uf_cases = check_uniqueness_comp_cases ienv value cases in + UF.seq uf_arg uf_cases + | Texp_try (body, cases) -> + let uf_body = check_uniqueness_exp ienv body in + let value = Match_single (Paths.fresh ()) in + let uf_cases = check_uniqueness_cases ienv value cases in + (* we don't know how much of e will be run; safe to assume all of them *) + UF.seq uf_body uf_cases + | Texp_tuple (es, _) -> + UF.pars (List.map (fun e -> check_uniqueness_exp ienv e) es) + | Texp_construct (_, _, es, _) -> + UF.pars (List.map (fun e -> check_uniqueness_exp ienv e) es) + | Texp_variant (_, None) -> UF.unused + | Texp_variant (_, Some (arg, _)) -> check_uniqueness_exp ienv arg + | Texp_record { fields; extended_expression } -> + let value, uf_ext = + match extended_expression with + | None -> (Value.fresh, UF.unused) + | Some exp -> + let value, uf_exp = check_uniqueness_exp_as_value ienv exp in + let uf_read = + Value.mark_implicit_borrow_memory_address Read value + in + (value, UF.par uf_exp uf_read) + in + let uf_fields = + Array.map + (fun field -> + match field with + | l, Kept (_, unique_use) -> + let value = + Value.implicit_record_field l.lbl_global l.lbl_name value + unique_use + in + Value.mark_maybe_unique value + | _, Overridden (_, e) -> check_uniqueness_exp ienv e) + fields + in + UF.par uf_ext (UF.pars (Array.to_list uf_fields)) + | Texp_field _ -> + let value, uf = check_uniqueness_exp_as_value ienv exp in + UF.seq uf (Value.mark_maybe_unique value) + | Texp_setfield (rcd, _, _, _, arg) -> + let value, uf_rcd = check_uniqueness_exp_as_value ienv rcd in + let uf_arg = check_uniqueness_exp ienv arg in + let uf_write = Value.mark_implicit_borrow_memory_address Write value in + UF.pars [ uf_rcd; uf_arg; uf_write ] + | Texp_array (_, es, _) -> + UF.pars (List.map (fun e -> check_uniqueness_exp ienv e) es) + | Texp_ifthenelse (if_, then_, else_opt) -> + (* if' is only borrowed, not used; but probably doesn't matter because of + mode crossing *) + let uf_cond = check_uniqueness_exp ienv if_ in + let uf_then = check_uniqueness_exp ienv then_ in + let uf_else = + match else_opt with + | Some else_ -> check_uniqueness_exp ienv else_ + | None -> UF.unused + in + UF.seq uf_cond (UF.choose uf_then uf_else) + | Texp_sequence (e0, _, e1) -> + let uf0 = check_uniqueness_exp ienv e0 in + let uf1 = check_uniqueness_exp ienv e1 in + UF.seq uf0 uf1 + | Texp_while { wh_cond; wh_body; _ } -> + let uf_cond = check_uniqueness_exp ienv wh_cond in + let uf_body = check_uniqueness_exp ienv wh_body in + UF.seq uf_cond uf_body + | Texp_list_comprehension { comp_body; comp_clauses } -> + let uf_body = check_uniqueness_exp ienv comp_body in + let uf_clauses = check_uniqueness_comprehensions ienv comp_clauses in + UF.par uf_body uf_clauses + | Texp_array_comprehension (_, { comp_body; comp_clauses }) -> + let uf_body = check_uniqueness_exp ienv comp_body in + let uf_clauses = check_uniqueness_comprehensions ienv comp_clauses in + UF.par uf_body uf_clauses + | Texp_for { for_from; for_to; for_body; _ } -> + let uf_from = check_uniqueness_exp ienv for_from in + let uf_to = check_uniqueness_exp ienv for_to in + let uf_body = check_uniqueness_exp ienv for_body in + UF.seq (UF.par uf_from uf_to) uf_body + | Texp_send (e, _, _, _) -> check_uniqueness_exp ienv e + | Texp_new _ -> UF.unused + | Texp_instvar _ -> UF.unused + | Texp_setinstvar (_, _, _, e) -> check_uniqueness_exp ienv e + | Texp_override (_, ls) -> + UF.pars (List.map (fun (_, _, e) -> check_uniqueness_exp ienv e) ls) + | Texp_letmodule (_, _, _, mod_expr, body) -> + let uf_mod = + mark_shared_open_variables ienv + (fun iter -> iter.module_expr iter mod_expr) + mod_expr.mod_loc + in + let uf_body = check_uniqueness_exp ienv body in + UF.seq uf_mod uf_body + | Texp_letexception (_, e) -> check_uniqueness_exp ienv e + | Texp_assert e -> check_uniqueness_exp ienv e + | Texp_lazy e -> + let uf = check_uniqueness_exp ienv e in + lift_implicit_borrowing uf + | Texp_object (cls_struc, _) -> + (* the object (methods, values) will be type-checked by Typeclass, + which invokes uniqueness check.*) + mark_shared_open_variables ienv + (fun iter -> iter.class_structure iter cls_struc) + exp.exp_loc + | Texp_pack mod_expr -> + (* the module will be type-checked by Typemod which invokes uniqueness + analysis. *) + mark_shared_open_variables ienv + (fun iter -> iter.module_expr iter mod_expr) + mod_expr.mod_loc + | Texp_letop { let_; ands; body } -> + let uf_let = check_uniqueness_binding_op ienv let_ in + let uf_ands = + List.map (fun bop -> check_uniqueness_binding_op ienv bop) ands + in + let uf_body = + check_uniqueness_cases ienv (Match_single (Paths.fresh ())) [ body ] + in + let uf_body = lift_implicit_borrowing uf_body in + UF.pars (uf_let :: (uf_ands @ [ uf_body ])) + | Texp_unreachable -> UF.unused + | Texp_extension_constructor _ -> UF.unused + | Texp_open (open_decl, e) -> + let uf = + mark_shared_open_variables ienv + (fun iter -> iter.open_declaration iter open_decl) + open_decl.open_loc + in + UF.seq uf (check_uniqueness_exp ienv e) + | Texp_probe { handler } -> check_uniqueness_exp ienv handler + | Texp_probe_is_enabled _ -> UF.unused + | Texp_exclave e -> check_uniqueness_exp ienv e + +(** +Corresponds to the first mode. + +Look at exp and see if it can be treated as an alias. Currently only +[Texp_ident] and [Texp_field] (and recursively so) are treated so. If it returns +[Some Value.t], the caller is responsible to mark it as used as needed *) +and check_uniqueness_exp_as_value ienv exp : Value.t * UF.t = + let loc = exp.exp_loc in + match exp.exp_desc with + | Texp_ident (p, _, _, _, unique_use) -> + let occ = Occurrence.mk loc in + let value = + match value_of_ident ienv unique_use occ p with + | None -> + (* cross module access - don't track *) + Value.untracked unique_use occ + | Some value -> value + in + (value, UF.unused) + | Texp_field (e, _, l, unique_use, _) -> ( + let value, uf = check_uniqueness_exp_as_value ienv e in + match Value.paths value with + | None -> (Value.fresh, uf) + | Some paths -> + (* accessing the field meaning borrowing the parent record's mem + block. Note that the field itself is not borrowed or used *) + let uf_read = Value.mark_implicit_borrow_memory_address Read value in + let occ = Occurrence.mk loc in + let paths = Paths.record_field l.lbl_global l.lbl_name paths in + let value = Value.existing paths unique_use occ in + (value, UF.seq uf uf_read)) + (* CR-someday anlorenzen: This could also support let-bindings. *) + | _ -> (Value.fresh, check_uniqueness_exp ienv exp) + +(** take typed expression, do some parsing and returns [value_to_match] *) +and check_uniqueness_exp_for_match ienv exp : value_to_match * UF.t = + match exp.exp_desc with + | Texp_tuple (es, _) -> + let values, ufs = + List.split (List.map (check_uniqueness_exp_as_value ienv) es) + in + (Match_tuple values, UF.pars ufs) + | _ -> + let value, uf = check_uniqueness_exp_as_value ienv exp in + let paths = + match Value.paths value with + | None -> Paths.fresh () + | Some paths -> paths + in + (Match_single paths, uf) + +(** Returns [ienv] and [uf]. + [ienv] is the new bindings introduced; + [uf] is the usage forest caused by the binding +*) +and check_uniqueness_value_bindings ienv vbs = + (* we imitate how data are accessed at runtime *) + let exts, uf_vbs = + List.split + (List.map + (fun vb -> + let value, uf_value = + check_uniqueness_exp_for_match ienv vb.vb_expr + in + let ienv, uf_pat = pattern_match vb.vb_pat value in + (ienv, UF.seq uf_value uf_pat)) + vbs) + in + (Ienv.Extension.conjuncts exts, UF.pars uf_vbs) + +(* type signature needed because high-ranked *) +and check_uniqueness_cases_gen : + 'a. + ('a Typedtree.general_pattern -> _ -> _) -> _ -> _ -> 'a case list -> _ = + fun pat_match ienv value cases -> + (* In the following we imitate how data are accessed at runtime for cases *) + (* we first evaluate all LHS including all the guards, in parallel *) + let exts, uf_pats = + List.split + (List.map + (fun case -> + let ext, uf_lhs = pat_match case.c_lhs value in + let uf_guard = + match case.c_guard with + | None -> UF.unused + | Some g -> check_uniqueness_exp (Ienv.extend ienv ext) g + in + (ext, UF.par uf_lhs uf_guard)) + cases) + in + (* we then evaluate all RHS, in _parallel_ *) + let uf_cases = + List.map2 + (fun ext case -> check_uniqueness_exp (Ienv.extend ienv ext) case.c_rhs) + exts cases + in + UF.seq (UF.pars uf_pats) (UF.chooses uf_cases) + +and check_uniqueness_cases ienv value cases = + check_uniqueness_cases_gen pattern_match ienv value cases + +and check_uniqueness_comp_cases ienv value cases = + check_uniqueness_cases_gen comp_pattern_match ienv value cases + +and check_uniqueness_comprehensions ienv cs = + UF.pars + (List.map + (fun c -> + match c with + | Texp_comp_when e -> check_uniqueness_exp ienv e + | Texp_comp_for cbs -> + check_uniqueness_comprehension_clause_binding ienv cbs) + cs) + +and check_uniqueness_comprehension_clause_binding ienv cbs = + UF.pars + (List.map + (fun cb -> + match cb.comp_cb_iterator with + | Texp_comp_range { start; stop; _ } -> + let uf_start = check_uniqueness_exp ienv start in + let uf_stop = check_uniqueness_exp ienv stop in + UF.par uf_start uf_stop + | Texp_comp_in { sequence; _ } -> check_uniqueness_exp ienv sequence) + cbs) + +and check_uniqueness_binding_op ienv bo = + let occ = Occurrence.mk bo.bop_loc in + let uf_path = + match value_of_ident ienv shared_many_use occ bo.bop_op_path with + | Some value -> Value.mark_maybe_unique value + | None -> UF.unused + in + let uf_exp = check_uniqueness_exp ienv bo.bop_exp in + UF.par uf_path uf_exp + +let check_uniqueness_exp exp = + let _ = check_uniqueness_exp Ienv.empty exp in + () + +let check_uniqueness_value_bindings vbs = + let _ = check_uniqueness_value_bindings Ienv.empty vbs in + () + +let report_multi_use inner first_is_of_second = + let { Usage.cannot_force = { occ; axis }; there; first_or_second } = inner in + let here_usage = "used" in + let there_usage = + match there with + | Usage.Maybe_shared t -> ( + let _, access = Maybe_shared.extract_occurrence_access t in + match access with Read -> "read from" | Write -> "written to") + | Usage.Shared t -> ( + match Shared.reason t with + | Forced | Lazy -> "used" + | Lifted access -> + Maybe_shared.string_of_access access + ^ " in a closure that might be called later") + | _ -> "used" + in + let first, first_usage, second, second_usage = + match first_or_second with + | Usage.First -> + ( occ, + here_usage, + Option.get (Usage.extract_occurrence there), + there_usage ) + | Usage.Second -> + ( Option.get (Usage.extract_occurrence there), + there_usage, + occ, + here_usage ) + in + let first_is_of_second = + match first_is_of_second with + | Self + | Ancestor [ Projection.Memory_address ] + | Descendant [ Projection.Memory_address ] -> + "it" + | Descendant _ -> "part of it" + | Ancestor _ -> "it is part of a value that" + in + + (* English is sadly not very composible, we write out all four cases + manually *) + let error = + match (first_or_second, axis) with + | First, Uniqueness -> + Format.dprintf + "This value is %s here,@ but %s has already been %s as unique:" + second_usage first_is_of_second first_usage + | First, Linearity -> + Format.dprintf + "This value is %s here,@ but %s is defined as once and has already \ + been %s:" + second_usage first_is_of_second first_usage + | Second, Uniqueness -> + Format.dprintf + "This value is %s here as unique,@ but %s has already been %s:" + second_usage first_is_of_second first_usage + | Second, Linearity -> + Format.dprintf + "This value is defined as once and %s here,@ but %s has already been \ + %s:" + second_usage first_is_of_second first_usage + in + let sub = [ Location.msg ~loc:first.loc "" ] in + Location.errorf ~loc:second.loc ~sub "@[%t@]" error + +let report_boundary cannot_force reason = + let { Maybe_unique.occ; axis } = cannot_force in + let reason = + match reason with + | Paths_from_mod_class -> "another module or class" + | Free_var_of_mod_class -> "outside the current module or class" + | Out_of_mod_class -> "outside the current module or class" + in + let error = + match axis with + | Uniqueness -> "This value is shared but used as unique" + | Linearity -> "This value is once but used as many" + in + Location.errorf ~loc:occ.loc "@[%s.\nHint: This value comes from %s.@]" error + reason + +let report_error err = + Printtyp.wrap_printing_env ~error:true Env.empty (fun () -> + match err with + | Usage { inner; first_is_of_second } -> + report_multi_use inner first_is_of_second + | Boundary { cannot_force; reason } -> report_boundary cannot_force reason) + +let () = + Location.register_error_of_exn (function + | Error e -> Some (report_error e) + | _ -> None) diff --git a/ocaml/typing/uniqueness_analysis.mli b/ocaml/typing/uniqueness_analysis.mli new file mode 100644 index 00000000000..5786dada150 --- /dev/null +++ b/ocaml/typing/uniqueness_analysis.mli @@ -0,0 +1,22 @@ +(**************************************************************************) +(* *) +(* OCaml *) +(* *) +(* Xavier Leroy, projet Cristal, INRIA Rocquencourt *) +(* *) +(* Copyright 1996 Institut National de Recherche en Informatique et *) +(* en Automatique. *) +(* *) +(* All rights reserved. This file is distributed under the terms of *) +(* the GNU Lesser General Public License version 2.1, with the *) +(* special exception on linking described in the file LICENSE. *) +(* *) +(**************************************************************************) + +open Typedtree + +(* Check that idents which are used more than once, are not used with mode unique. *) +val check_uniqueness_exp : expression -> unit + +(* Check that idents which are used more than once, are not used with mode unique. *) +val check_uniqueness_value_bindings : value_binding list -> unit diff --git a/ocaml/typing/untypeast.ml b/ocaml/typing/untypeast.ml index 4d5f624d242..73e939e4d32 100644 --- a/ocaml/typing/untypeast.ml +++ b/ocaml/typing/untypeast.ml @@ -489,7 +489,7 @@ let expression sub exp = in let desc = match exp.exp_desc with - Texp_ident (_path, lid, _, _) -> Pexp_ident (map_loc sub lid) + Texp_ident (_path, lid, _, _, _) -> Pexp_ident (map_loc sub lid) | Texp_constant cst -> Pexp_constant (constant cst) | Texp_let (rec_flag, list, exp) -> Pexp_let (rec_flag, @@ -542,7 +542,7 @@ let expression sub exp = [] fields in Pexp_record (list, Option.map (sub.expr sub) extended_expression) - | Texp_field (exp, lid, _label, _) -> + | Texp_field (exp, lid, _label, _, _) -> Pexp_field (sub.expr sub exp, map_loc sub lid) | Texp_setfield (exp1, _, lid, _label, exp2) -> Pexp_setfield (sub.expr sub exp1, map_loc sub lid, diff --git a/ocaml/utils/language_extension.ml b/ocaml/utils/language_extension.ml index f592c1381fd..a7c41bb3993 100644 --- a/ocaml/utils/language_extension.ml +++ b/ocaml/utils/language_extension.ml @@ -45,6 +45,7 @@ let get_level_ops : type a. a t -> (module Extension_level with type t = a) = function | Comprehensions -> (module Unit) | Local -> (module Unit) + | Unique -> (module Unit) | Include_functor -> (module Unit) | Polymorphic_parameters -> (module Unit) | Immutable_arrays -> (module Unit) @@ -73,13 +74,14 @@ let pair_of_string_exn extn_name = match pair_of_string extn_name with let equal_t (type a b) (a : a t) (b : b t) : (a, b) Misc.eq option = match a, b with | Comprehensions, Comprehensions -> Some Refl | Local, Local -> Some Refl + | Unique, Unique -> Some Refl | Include_functor, Include_functor -> Some Refl | Polymorphic_parameters, Polymorphic_parameters -> Some Refl | Immutable_arrays, Immutable_arrays -> Some Refl | Module_strengthening, Module_strengthening -> Some Refl | Layouts, Layouts -> Some Refl | SIMD, SIMD -> Some Refl - | (Comprehensions | Local | Include_functor | Polymorphic_parameters | + | (Comprehensions | Local | Unique | Include_functor | Polymorphic_parameters | Immutable_arrays | Module_strengthening | Layouts | SIMD), _ -> None let equal a b = Option.is_some (equal_t a b) diff --git a/ocaml/utils/language_extension.mli b/ocaml/utils/language_extension.mli index d5d9125b7db..2fcdd232c53 100644 --- a/ocaml/utils/language_extension.mli +++ b/ocaml/utils/language_extension.mli @@ -11,6 +11,7 @@ type maturity = Language_extension_kernel.maturity = Stable | Beta | Alpha type 'a t = 'a Language_extension_kernel.t = | Comprehensions : unit t | Local : unit t + | Unique : unit t | Include_functor : unit t | Polymorphic_parameters : unit t | Immutable_arrays : unit t diff --git a/ocaml/utils/language_extension_kernel.ml b/ocaml/utils/language_extension_kernel.ml index eae564c13d5..8811c903713 100644 --- a/ocaml/utils/language_extension_kernel.ml +++ b/ocaml/utils/language_extension_kernel.ml @@ -4,6 +4,7 @@ type maturity = Stable | Beta | Alpha type _ t = | Comprehensions : unit t | Local : unit t + | Unique : unit t | Include_functor : unit t | Polymorphic_parameters : unit t | Immutable_arrays : unit t @@ -19,6 +20,7 @@ module Exist = struct let all = [ Pack Comprehensions ; Pack Local + ; Pack Unique ; Pack Include_functor ; Pack Polymorphic_parameters ; Pack Immutable_arrays @@ -36,6 +38,7 @@ end let to_string : type a. a t -> string = function | Comprehensions -> "comprehensions" | Local -> "local" + | Unique -> "unique" | Include_functor -> "include_functor" | Polymorphic_parameters -> "polymorphic_parameters" | Immutable_arrays -> "immutable_arrays" @@ -51,6 +54,7 @@ let pair_of_string extn_name : Exist_pair.t option = match String.lowercase_ascii extn_name with | "comprehensions" -> Some (Pair (Comprehensions, ())) | "local" -> Some (Pair (Local, ())) + | "unique" -> Some (Pair (Unique, ())) | "include_functor" -> Some (Pair (Include_functor, ())) | "polymorphic_parameters" -> Some (Pair (Polymorphic_parameters, ())) | "immutable_arrays" -> Some (Pair (Immutable_arrays, ())) @@ -81,6 +85,7 @@ let of_string extn_name : Exist.t option = *) let is_erasable : type a. a t -> bool = function | Local + | Unique | Layouts -> true | Comprehensions diff --git a/ocaml/utils/language_extension_kernel.mli b/ocaml/utils/language_extension_kernel.mli index 7ccbd98160b..c65cb81bbea 100644 --- a/ocaml/utils/language_extension_kernel.mli +++ b/ocaml/utils/language_extension_kernel.mli @@ -13,6 +13,7 @@ type maturity = Stable | Beta | Alpha type _ t = | Comprehensions : unit t | Local : unit t + | Unique : unit t | Include_functor : unit t | Polymorphic_parameters : unit t | Immutable_arrays : unit t From 134dbe91b276816cfd0ee5b29862e88028c5f2da Mon Sep 17 00:00:00 2001 From: Zesen Qian Date: Wed, 16 Aug 2023 17:36:57 +0100 Subject: [PATCH 2/8] fix .depend --- ocaml/.depend | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ocaml/.depend b/ocaml/.depend index 5ebeda3af08..def9f19e5ff 100644 --- a/ocaml/.depend +++ b/ocaml/.depend @@ -1549,6 +1549,7 @@ typing/typeclass.cmo : \ parsing/parsetree.cmi \ typing/oprint.cmi \ typing/mode.cmi \ + utils/misc.cmi \ parsing/longident.cmi \ parsing/location.cmi \ typing/layouts.cmi \ @@ -1579,6 +1580,7 @@ typing/typeclass.cmx : \ parsing/parsetree.cmi \ typing/oprint.cmx \ typing/mode.cmx \ + utils/misc.cmx \ parsing/longident.cmx \ parsing/location.cmx \ typing/layouts.cmx \ @@ -1918,7 +1920,6 @@ typing/typemod.cmo : \ parsing/parsetree.cmi \ parsing/parse.cmi \ typing/mtype.cmi \ - typing/mode.cmi \ utils/misc.cmi \ parsing/longident.cmi \ parsing/location.cmi \ @@ -1961,7 +1962,6 @@ typing/typemod.cmx : \ parsing/parsetree.cmi \ parsing/parse.cmx \ typing/mtype.cmx \ - typing/mode.cmx \ utils/misc.cmx \ parsing/longident.cmx \ parsing/location.cmx \ From f2fe018328c62f779a8594539ede00e7abe1d574 Mon Sep 17 00:00:00 2001 From: Zesen Qian Date: Wed, 16 Aug 2023 17:45:16 +0100 Subject: [PATCH 3/8] bootstrap --- ocaml/boot/ocamlc | Bin 3560483 -> 3625862 bytes ocaml/boot/ocamllex | Bin 372351 -> 372351 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/ocaml/boot/ocamlc b/ocaml/boot/ocamlc index caa775e700e3827723567d76606239c6fbb7970b..43eff29a5e6c61f3b992e7751e4e6a2d5653161d 100755 GIT binary patch delta 447594 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 z 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

xnyDgMrh`m3 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

3y&MH0>qY%!;z;&tjVjcMikEzY>m!6#yc9d9 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

  • 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

    -GIF8FDc5}2Z&Vf?|SWD(oDVP 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%0D1Sp{AVOxRFCBcQo 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

    TL0-W`J? zg7}WrmX^9e?Ak5YZno*O#c=Sw3dn?Y4GB@lTD)p*Ph?M{ac<}OBpFHSXi;UcqoY0nI}UoTgfanj~3=>a80mr z@DNzI_tyJ;L0AWSEq^xGxtfJe1rG)1)cXe!2390z+2A1<1$U60Qt!8h+`N?^-c77|>IM&aq@EL6iGqsj{d3QySWb*mDMUpR z`_COCHnX?pj>+vkcnHNQO@}SW&EM2;{poABiBeJa=dnr3)&#LvqkDa^jnz8=lZ}v@Xi) z^WeeFWv(H4CfE}_2{Dfp4Hs37iVo}zti0NDwdWTjhpnYfJMV~c3bWvDYIfhqt34=a zKaD+sl@AF>i-x|C@8@!*5M}_>V9mHq4S5${?OD_Q0JP_c`M=#Dq?xzufrAty zJW1M+7>?eUx)M)QGsCuw>*IjY!bD<2LLerdCW9;QlN8Jk!AsJjdmNXNU+g0V_w6J` za{UC!&nHv(GE3fRisiMJ+*5iwRJ&q#g_|U}8VsgizaC%Vj#Gl~6GPEJB1D-8HNQ7j z2QXrD_T+oE%$~6Kww+Vg0BV8Fyuph_+DJyk@<+!Hk)O8}cGM^J{y^{i!Yv0T?7e-_ z9Wx|pQp>ufrC4(Xw&bfXcAc>I&T-SgV1CyZr%l-V)0(@AVZ7w`eR1c6y?0ygJ`QuD zZ@oWvY5tI{!3lfsIq)-(%)dtt<)emBZQg#*0E;uXzvP}S4E*R-|HBHHf44}6onzt6{9nIcHu5W$0V3br~>l;=-Or9D^+z9D|i%$_Ti#*(t|h+2V)~mUk%g5v(F4_~Uf{06ykX5jd(Watt;V zo61~AkTw~=8Ol<5uBle3AUxA#(^R}8bev<29@}XybDpx#Fw(Lw$iBdISp4LPh{Z2ZHW85i0-MQ|+C@yBEqsA& z|I&yVzWubowd^z?*%#Q~&%VH4lYN0Tid>5XTxz#0Oko%>0}?j^!k0M0#h0%zfJ4l?Qt-|p)8P~y`BVO9{Zx4lfqS&p3$R<UL=32 zY^AurkL|epsl8Z76&XIY&yYWr+5wv=;L4_s=@c_lp?ir+_>p*ijMPH=d-Rg&Sx2Z^7|BXSjeTnoZ~$17BOp3_`vWvpS8Yj#0=j) z!}+YetMl1Fu>lcS@)6-@%@=S>e6z!wLJ^_t{h1IEx1UbItrt+(+RuC{`+(GLz}a&Y zO2u74>jkc9ghz1m83Qln$5X-dTA0ixv!lXfF8!^^EYG2syp&x2_a%1^i&)M?9co51 zo2~njF&*0yG?}G#lUbRON+B%ED;zs+miOxkU#6o7mpYP{>hX zKIO@`TxMXigB;q!h`WMpzH1s{oO$yZ10FX5>AvIfR809?`P^Epd~WHZd@k>&nB_8Z z=}*KR%S0@cZ@_bF)3FSwWtj4L?jGbiZa|dJrFc6claX*l`P|V%B$$qc%2FsIWLcgG z5pnY(mxV$kiR@b_#CDiZnGTzm8u*sJ6cTA1GiWYzO#|L8ip9-m48*hf0U#QG&OB!x zR4dQ^wKLB#f?~Nx$)&%*J>=S(MU1e-pXsnOukbk|X83mI%rmcY=9$`^=je!nv~mhW zwmS1XeFdtOl|Er)GJJI0DVIe3mpb#%iITa^dnjym$n7-R7;s`0MY)YQ!tYbq73FSU zPDx8#f|uZvgTWw`*V)6_!*amc1CSo}wSH1zaYG+}-&^MF z;jKc-XagehI+h9FGeW>I82H>N6cJ*MOo)iPnp5zcsT9s`mMykD@(u$on0C!J;?5qW z4^h|`B-hcYBxjF!3e{1AA&l1!ZmF}>SLZC1E%@!AnC%F;^ylb9uCi0ad`E@vEcJ|Y zmYN3|F~i3QR%#yx{QU+5w4MX@M2=lj>X|GOFk*~Mp@Y4On5s!=xA+y@r21#R1+!uFUy&QYG&EyJF}D#PQ;*} zaOux6jmIq_ma|Csz(vUVtPwMOR5J_JOv?|<&4>>X*q+$}Q)-V}KQ=NMzWtyP>gd~d zrQ!~->CDRBpF4+FTW8YF*)7da;hA_fayh%6RVjEf6xXvlvx*xa2_qJ8227`%0eckw zNGD?Qesbxrcr>~G1`$(U7rry#0Mv1j5i@*9BH-MB-!22<4CLg4D)JL{v1h4BklJmZ zrcex+wzeM{+-ymuWFMojtEc&tYa|sZ{>+>`^v5J5`#6Qo2f2HO=;X(pfg(#PkJIb) z+MjcJk;{t`5HlYom;Q&FoAn*0m@bCubgs96LV7nw>C@az%^QhSIOltM$HPifm~qrnR;Whtm{GljF?FX(F;K}5tK zW*>x7ac2<*bU<8vwd-nOPwuTn&z_44>iEt|XJxkAS&1B#=-G(*YRTn)L2@k(B8E{_ zhkG_VE75%nEZs*1E3?a-m7XM?vl7E%C5FYy-2Q;SFLFrjetCapX3I3~M1SbBWo{}3 z<0MGi+HI%!+Cwh}6-0>GHU5HN-&yIc5pYgt(dAJ~JZC4WX<$`2E3*4LD=Z_O7505j z#4M-DrN6*rayOMih?q81T3eNcR;7B%u>hPAVszir`Y z4*H9gj|~j@2!%>#8gW<9%wWEr4Ac-L?&Nha5U-zwa zbwx_EGM`oE%qARG86pV&){_OOLOL!YMlpIJedHCr5Wqf z9U%~MFC|o^E@xOt1MNnL><+#gVfmG(%vzfwXoLzzyDYRBL6Rr}i>xyH&Ojeqamc|c zX){7F4+anyf1aL2`Ek!QfT{@K8et>|pLQce$bsDm^Dpc(jC5y{vk8sV6sjX117cHX zDLX|_XOp^FneS|JjTW)cFyYGw?4^KCRThc3;o9S;m8As}O|_we2FTe|jC~pRd-9IL zInE||Kf#qcsXc20NkU)=N!W{=P1f2}J|l#guZbiDha^zKX@Z*0 zIGf@|rmQ^_%Hp-Kdkv`YNfIJNlE^v(vktiYZ@P0jB*A|L$03R7?)M-GK%LXsGDu>& z+ah8GI#fR3u60h&Zh|BTE6!0VsC)=X>@?N7$B7K&mefEJ&5#6;&5UE!h1%UKxFmQ^ zT@nH3bVwpe%LutQ08WxXiu)M3*_I;AgQiCTCrM0?XIBx}%TYu&Gw0MhlEbG7nBj6s z0N**CB;j3(9RVIgZSQ1vqIdA0cNKcaoum`&PV|mDO^4At?(}XY9Cl~nG2zPxiif!3 z4c=qu9z20ubdNhtk19(GyP9fqPN(4R&rQt^x4gq&#_n{x2~IjuG?MoYo?A%5{W##I0ePhU+$??su5B~_^VLPTzm`ul@LPW&;7OZO58ERe5&A>RnKfBk#8QX zK%0>v>i*icK^Y+(35_(LVUwj-3fir;u6vX_O+!MQNrBC#8oAk6Ha2@Re!JLMyBB?7 zthE7sVQgp`8>{-z7slq55e^$`8Z|@&I{PB_csc`BzejOZu2>N`6wv;kL$iD2)ggjhg6L8Cf1}p$C~ojuqNLy(@2E&_`9;E zc>W3`Y*03{rUEwu68t{GS9U5}mBR&f1ye zgnK^03+DUk)aQIr-ztIS+vPjvJ8eGYTb4gAm5;@Fksw;(vJ|X=i%C+cAOxkte8z4r z*otp_F2v^zn+o=GvS*CUuAp)ll4z0~1QD*0#+nLQpC@SC(8J8YrYjY3 z6b4VYY`Sll`v99>Sj>O~KPr55D05L)48J2poZLWvHoa&@(F)T-rK0qW6x_VNxT?6u ze5QCVn{MOzi`mB6wMvyL@y4Yu1FygON(7nI7*rkD6!mXfZ%I+BESETxq6 zk=o7cOPbkqd4I_w#CLG$K_izdSTYron4X=_;iy;opBgl;7jg4?>po?K5d&-jn-GUm zOfVf|6Kqi^#RPM$^#Ge--Nz zptX>${!RUdV}t|5N*$$L;a)<}(yNUeuAtNoNldV=B8cU611@~iG81P5)tT+wV_M@M zg8J(yceA@oZ)JDee#P!~zv$cmcPi?5cj@og-JyF*KS1ah0}i{p>|)`&Uj&|`>}vOm zBF@vUMY>k@nC(||2Q3Asn7Bj<>~5UB_?46HNayHiwqIFZM=PH~)^<%D9t}b_G)iE$Xz7s&nzrnQ`Hzo(V-lrHL0|AV9aN9CC!quMT z$nv>PXXR6xWfN}YAGeMccv)pxJt>dvBuZ@0-|rY`i)KX$Vm*+>?>`bPYz_^xY%*`P zY_c`vk0Xd{M;6QKlT{nf8paVon0S^!fVj&VN#s0LR0zSz1ynDTa`>jk!<6LN>bfX* z2U{Hn8obn>LD;jOt@a!xI1a+#mMn+2quqJYhAYzbRL%x8CXE`;y` z7X1t?>uWfPgq9fr;hv$4kOW-gPp}0GfCzXAYWLdL3xejYDY6t2e_1um%9-m{3egEgus=m@Bh$G{c^rx#Bc?(LLQh^dPhJx(ztHw5VHo8geIA>K*gV@N{2ndY zz~=db=;!lb2+mU-Jmpcsp;XN>GFptY572+;C#4yG6r-WkphPsqv0(#?a`?N7oRrJ8 zLz_G@TAD4`209^HM{CPQMr-1>w~C(=5WRp$8Q5lz+Fr*mN+HhVqhOL($FJI{%yodldYy zx;9E@n3EZo?x$_KM_igqh7rmqN)vz$8od~4blE4t~G59(OEtwY$CWK z1pM=F5cnLXjlRLafBJ^#tU+uOl~1k+@xgZ!!yiF}FF1rubvq=5t@92%lBJetjGk*V zq@!(Vj9w+zY3@*Y~Yjr%!1ToD5Pb)%#CYLbOy ziq69Q?0(L|;?e0Wyg8b)(DlY>)gbmBCka=Ccun79_#=q$1+lc6Cb9KmfX9n@^2X@7 z7Ex2}{TriKqn^<*RLFh25V#`53%QTsk08SDR7etAF9dkJkhNpd>+;DMUYEXONt`e8 zV&IAp#FH4CE}mqHPVzkJlvI5AZKL3vkvjlBjU`cH(?LQKFQ(1O0L`BP=6fI8gE=dk3zbGeFVTvcAqqWJC(16Xn04(qf zc2L|zfhdp>r$&|?GGwCvL?}JZ8yPqPL->@Rt`3b13dTiPao)-ufV`DEKtQx(BO_y4 zBkP3m6MDRlsEF{>~jcF|A|m~9KG<+ zEor@wkA1*4E{6QPK|8>BFRYr}u@@#wqP(I+^uj5Vqk*xsY(_Hu3Bn?o+^l9^1U0Fi ziUKDZcp@KFL@_H+X5%M9>2Xx#lgSwsA#CHK{8W*SFkX>9w?@n2sTN9=M0rJtsTLCX zbtvjZ*dj*?n^N&<6Dkq)GExznC~^x-#A%rPnthF0#>v4i-Tgnzy$hIC#g#U^?|b*@ zKBv18T0!uFLQtfY7CTDNC@Nz>h%p2O1EZ*nGKvO;k&7P1OVlV)qP7}B5bq=syg+IIiiJaU(Q2`P!tuUwEo*{_d+j{q}2EfwqV&!*{J{FB%=kzTq`(VCJW#VjUgneL>fb z0NW&ju6?3hN=K)F3%#nCZH4{y!wVl|~*_t+XR(U$Ce4@?2uy&#uc@~p;6$T;K6s?mx zUc68y8ilgILMjAPoj6em{SE8FI)o?l(^9d{?h;2a^r%YIc9(FQh$R!Pwo!~bZ$`~T zvy7Egg}8nxy=k4?@%ju-G?K7iRu|N!Iza+uzx)uZoc(F3SciWeIkSs@65A%y(`2=6 z(uMgmYbKhLL|T=IiT2x>xR=Ms4@QdOz(hjirwDcgM}?syxe5ZMLv9QT)IHn*`tD^0E?L&)iL~{w&OakyQuByNx^uLgIr6}>G1*n*rG>bFx5;#q0@F^ zNuO)lq|Xn{s&Puo*V0i&q0d6Ek}=szvnBeIIlCt+3BgoVl}to5yZ5c&Td0|zmWp*a z<@vL_I3=-dBE58>rcJuAdUlOdI!UBeiRB5m%rU_qd=$e$i32lH0{elZ!eFLcnn2l) z4Z#L*H9svC>*&YaIbHh!Y@0|g{itb^e!MWJ*8OrxqK!x_m_q1P4+;LjR^1#nq39PS zvR}fFx}smXbb+#8UkknlSj_Be9nzPOOd(z-I_c;XOqtTDB-&Fq(WVjHPUU{}BI>j**vOSorQbQ?3K9P4i23 z!Vxds;U*Pcy5m)6X<6XoynUA-J251l$2&55e+t(Suku?;TS{B~zJ7mQa>CouIvn?A z#^9b^ulhYuGwu0fQJ{5CT;<3llu_9vukvLoC(ciD;cTN)C7QZ`BM=X&9%K0=75I+S<~mdRg~?Lo;^KFrY2 z;xB2K*{v^My2HuKQZMnB@!Lpz=@7Z}U&%u0Kg*>LnAhQ=@J{;=STr=eJsijWm$qyF zqsmVEPX_FN54pnp-}OIg*ZxyH`_Epu{-caDKp$q&^acH&p7+0Qq`w5O(@Ov2a^C;# z?0-0+w*O=swM0WPF5}{I-IS;o)o&RSRl-{U!8@1e?*x=^WgG8Yt`YlV(D}|Ka$|pa z=MtP+sw15JTPE@5rR_iLJX~Sg6Ch)Jto_-RU1A}w|1Hz%x3nx}dt8poFwn?oTQ*Pe zqHTKY(W=Lm_j+v?`{TnHuR<^$W~txmy&7$U)lsL{H=q~j#{wZh8{74VUT)yF|XkW=9Wgvti7N2TZ~=mgZ?Adk-_KsdOQf8 z(TBfMAN6&zbH2`+`Z|uo5$oQ;ap%5Xu?Y|l;Jjm$f~srkwVk~$^$9R`#?=#fk^J-f-gmN+Mwn3Sdw>b}zp?M^ zIzOaP+xK8lbS&OcHhaOLm*?-xK%sOW{a_ zZ;#6tdtbh1w`&>3>Y%9K>J~5Cd)WW~T<__iU3x!(<8PAo9z82;@8{aS2dwXGuUnU3 zsb^ zoK&#?Sts#y5n~%uG#*R$c_4H}^Je-5dhVUO`|a$xUkL*8;-o_{Y0sVI`wS<%Xn6>ygmr#UEg666%8w!7umCCJe{wNb9eLqxaz-T5ZHw!g;HRmx7gOGoz) zSA;s0oTFEDm)_OW*?XXIlU~7hj$6E59%oEnufMmy*Xm&&dF|d%VTj0AHwDax^DAO` z8ezquWhBaD@FdtcZ-O_;o9s=ge1v#%xHr|CM)#cV%>>eHl45^UlWdssF2V4R@#c9~ zL9sRX9UhGHuJz`73y97I7cG-_?^W4|>Mh>w-Xaf%^zQMN_MYG^i{Nj)CwUKfE4{~b zMtQ3Nead?_m{RRMAH*+m;Xrx;zZa#1tn`5QvbP5L>nxWZ!1BBuHMV=b7cpld#N`TQ zdpNZ8z@89XdLWn@wxd2WdLe@9mP7Q8l&Xe}veH~xTgK6QEbS@dLpWIBky0zvvSa(6 zn3S57maAjw0mVfbQ!~Am)XIUd(gRgR(A=`+QGXU$o-Hh4aR#wXY%9W12Anws)D3me zU0(bwu0p-jr8laPBGu-qZ>>lr{j4gsy?ZG=8x%(wjH5cncvpC!69U=9RudK_2;DBPW%v_heUGyLpdIlo{2V@ZBZ{A562k_bDL1& zeiqg^lT_T#0;=@H0&btD2$w*rEndqcg-Bi{JN+XbNU}EU>Cl3e4JNiwtZX7yAL|6e zY4|ObHd5Cn%h3o-XY|@$IZaV2r?I3tThM(rD zB^BvpDWHbqeFN=W_09crNGC~_B+LanJVYtQNkrt*<-I?GhsyPhw-|fg7 zCWb>BCUU)CDy|n+>*yWTo-4KX1^c?b4dbOeUZ|w^(R=KDe5JI=@(BF#4ZzS`_bG87 z^q=cRxNNs>M6FFkNAHnRFq0jr>A%~N6523+XT9GITLOjJ-nWc!y_ZM^aJA6;@w-ih z$VAC%FA7p?T2Zx^-b-KnHL@ceAKnu8(TieA4aINY?L}TFVEXKZ0$uCT4f-E13JPA$ zMKQL}dJ17)yeL*^%|ApI4z1r3btyK8%v-mPGF2}Cbz@?A#fxCKf9OI>4(&AsFWgH@z5661}H zhjn!8z>|0zMflnAMx%;RC|+TwJ4$EAEBL3X+B#;EK=Px-Lc3rKW8mbe*p8={4`W?E z=4R1}tVos&YUS+k?KlwGx?;o|1z)gKj%hcX6q~s##VfeUHd=ih$DVj&%%ZS4Y_&`( zAF;%%TJeftjHr3Bcd_71k)zbO$p+SBtSlQluDZ2tuZ|z%pIKA|FF+tc61>u2rIk9{ z6e0&x241#^W#BRyX;L<|xHYdSh8IjVEvBwi)h@*Ha)Jn@U=?nT*(|n5t}PUM8U8f! zh*~y_7@A9qv96#zl)5KJ)UxY|p*c1TlWuR@ z3jxbeSzMA>O54WcmDuqrCt@%W%VH>(Lfyc<_#VNvl+YoUNI+Fto7}2~yHnZ~qRWrC zEX(msPmG|_jtq`X?59|#LyhpL@RNMN8(GsRzhWH*|5zrwQXDt$XMAa zm1FC;SUPP{YRe~ zg??5fsK{3I)7)x}aWG0{H?l{{M2;d%6=BiRm+Xhi8UoDtU-mQCY>@LbY9S z*iKx9D<8}Sdp!s++XngJnf!D(3AB-WL@nDEg?449^>8RmhNwW?upMo3LCDc_kJ!CU zISY;`Rp7;cImQ&dr{M0F@L2IHzA~x!WX{|O0fUa49%$QZf7c&{5`&cSa6L*D`%eG$ zj<+9Z+rNKz1Y)Wx9NWQPR8?B$s%pnU%kX$Z^d4I(e)mh{*j#Bgc+H|4a^*ukRSq!l zhgNgcR^|mgh0fv|Jxv>jo%H13b)-w$_U;?D?YUGGMswI+X*LR5Bq-c5a!FhN1E4J0 z@?W`9HjFSyppMK>g;tt7o?BcybOJRhmDLlJ0*XVWj_!A~?cX=PHW?wB02`W=jV8(& zIW#%-4qQQkCaBq8c~yCp@+#B0%gim*${-Hg?NK#h?uJe26jENL!)Dv4qn44|wPa`P zR7}`keSjokdwG?1BxjIcaiB1^I^|Tn&7=1eYOq$6SFjHGWrS}KAvYlDoz#d#s5x3z zH9ZwNg_KvQHI$cH!|<)aQm#Uy{nv(Mr0FS;(bE;Cr$S0L_S%Z7rfS*TsRq3FRB6KS zdmewv<9WeGZXoDZN9(<9?OFMGHBrand)s<-Tzzj_C5kuWoaOd=+xnK`&1B+v@#c=2h&_WpW%CSSW#o!OVJsUQLWwJIZO5mf5!CqUXTr2i@y*zwjS|I6P;NY|{0wn5 zf!CM8jtGjT0&vNBnHf8fVClF%YQGGUs5H?F9|2)7FvF$Be);k z4If0yOU8v?Vhs|cO>l)mTfqx|7OqgO*HREWd{80Gm74gJLx9z$Ys=vXX zFfae6Wh#KbQFKM@*zG==@i#h#9oOCmGfuy+?R*kGi9bbtQrIBpQOdvRm~b}fCoZF}s6YY=^cJ_-%`5QDkmlT*iwE85yS zl9g>I{v%Nd(wrqttdoh&ZM$AR24ri{C+j3UTu`J|KDh9>x~{L5fq?*sYh)eG%MaeA zs+Ua5kELtj%E6ULvW=x)^HAqE`Bxpu{|S4`1cY($eo zl0!(9uGM2wMKxWUuH|idriQ~B4oeP6rx2VR!gAb~Pzos~CD#@*Rh4>dWr=0OUW7TU z?4_A>rMj5voV#s+P?aBfPs*AY)VM79)aco6EJNSONrv9*eotpJS=?36~}N?K!1>N(FNS&M3K#zqxHtUQ+3!bAUh)V2|bI07^W=SXSxd z9%QjhhzF;VIZ)}t+Xh7lTKH6=q{>nr3io_)F|M=Hr(s#RKuH?fMEHwfH^u26_oe=o zKCw^z1yio{2XfcKPGR&IQ@Ev5#Z&#Lmz}~?zq}yA%%}P-AE-Lg|6NQgaL z1^VkP5YFKm{qyID_Ny}RGK?Biv4tL6~IKmD6*ymCGUjk2giRv%SUa4m| za@W<}Mi%ww@T>k1^ce9Px0ZUs^?EXQ>KEV3AXahs`7!|8H2Ec&|7CLuThM=tdAg)R zL_7>za_?grQh8>^-^1sF?Vfv6pxcQ)1o&+}Mv89=F!}Iwdx~u!HvaK-Oe`3;@h^@C>8r%`ALlWT2i2O7 z#R;=K9%G8t1O!6Smd69FH_!GY9{A5_UGCzVkHwWwWSfQ~h5FB=uex~PKVJCWjtvNk z$lQr9&-1Y%;HyJcy#IK4s=*XLL*2v!2+YO%W{+TbHV+3Ei4#-`DvuTj(Td``21$rV z?s@#|-C@A~vDV5HSn^*E;-Yfp$#w55PV)#oT6}Py zC;FLSDAZ4?^dMF&Up@tdDc1?wj=P_3JCg4_x)hYP4E!?WzRcY5#{~ZvbZ8?MaTVWT z*pk3ZKY(wzDsPc3Eo|?Y_DtKCyC_j-lqd&vK^aOQFS4k^*%RAD3E&2T?=WnM?XIj? z%GnHn(jo6?eYUF-;Wb8yy6~Ey4*NFbMHY3NF~!hEEaED@!>}c`yK)hU z-g~93qOmT#h7AfrjIJ?Jc%@PU=gROJD2Ci(5+aJBErqKRH@s3x;HSyr3e2>IR|Y<@ zOseYTY7u0`5d=~AW2u15Dw2w`0#VyiR6BjrQYZ#v9eEXF9l0p?LaYm~HpH!%>RL^R5`6*>KOJfZ6{XU35Jof zq2>f*gQ3e+$mO8m-a+sk-wiy!V7>4Tf>0}tKS^MMj~9W{0)2%zhly`@lnN8qMtAyyTtavpU7%XYEbamgU`;L}*Y`k7`ZLw;yjlZfEj83Xq&WtdoIvA5oEwMc+++wj+ zM4Nf1kHlkX?5A8#%#Ihj^r65+1TUhs3I8lVLrdW16-{W?8 z*$U;axOlHszW9hQh4NDu7Nkckmj8pZ3E*zA%B$Goc3xPT%K@@JIQIuX-c3+Thr@P781S3cKg#-UY~+E6Ra#9VU8y* zKOjaR;T7T2cEwCmw0I9rd_gl#EJ$85vF;LE5;hYpMd8S{{HH3p+)-KN@Q;iwu|0xVS;!HsjTBv@Ofn-k(+t8B z$%*eM+2($YRn;la6`2S&f$4UuoINVsVzD)ufm*FHvyxec8;*cWZdwfgWYz?L2#_Bc z3L}#{@?04(wPN!lXqAH;$%9z4KQMxC*%wG8oFJmBN?vgIw;bmODApkH7cUOKD+qN6L{j}BO za!w0koC@Xaapm_i{>hkBS#r$d$>GJ80ZUK|xx+Bn21j5QJI+d}bxX&#VwrW(N_d3L zhLxg)7l#)cwNO$*LgLAO?uA-n?l4FPWzpt-Y$+zKTRK8)nMa$n?02kM)3&RbkN$To zf{$g^pP{)D)IbQ8A6tQ!=LQ!rCTX{2;v4a#RSpKr_d3S>TibA`Vc34he*nrT+5@;6 zy4FYTNZ5iJanNpm#9&f7Qx-Z~CY4LBrrhyuYbLP8pBhI27LmuGhh@ML{>MfS|AAmD zDU^~>i^HQWTPh=}rky-2oF9f~61t9mc&)9+F`l=_0&QgOrmeCLdgvb93d*h}mhQpv zscumrT-Nc#YxoxicE=4kW~`-f*A7S-^!U6DcWU-*X2y==jOB$CP1HhXY}(J>6|iRl z;VpvGarip?7fu%4dnLRnkUh(r0?|Bt?clS4q{|C4q)vx3$MJPNGUu@HGYqu~Dcl7T zC{%Vd2xm0&Zf)UHe2XMp!*StTB#KfyE{tUOncF3#>t1!2G_rQbR#d@7YO10mp%!u& zEZMQqR-Ps4O)ITi9ndiu64gy%%tg0dYr^aoC^xP^$Z`6=Nx8HT$G>Rg9NynDa*dPR z$mz@pN5U?+q@=@jH6?(&@XZtVyKZ#z@?QP`^Krtg83JX zgv08ps%5VjU*JP~3&t1e+SS1uXF9R}|0)-4tGfgbpJN*lRkzVh`p~&G6F!fG>2KQP zfpjgqadc3ste;Z?)9sv##4U}p)C$);#9kj_`E@6x+)RAtodan}c+}_M)6v>SbQlbC zEZP=qRTvo2vqZggG~uO+dKPKITi9Ybvh3m^YYM}Mma1lFRX3<^5RgVP*B9+rvLBf0 zzEuMv+gxIe0nxSCQl0$wQ1UENXxX)~K1{0$GB4VJi-t(cK%vgs5$sU3O$oKVSho0zW$B94*$&jiPJm)SiGx2aAy-`HGSMtZkrhpmgpm*{EEl=W zun?9;K+e8^wau!bZP_-B+^A*M>*`BRC1NM*Ecav`IWjMrD`|#h6r@K*Ad{kShvS$KqvbJWm#(tx z)o^0eb!d~$sJX03c~rRYI(}We!ZLNv$QFx~tn0Oi3RpEA7F+1D#AZr(8)g^yxszuVHlC$06Sk^o`_QcQ@w3#7ROhWX(cCn zMy4zgt8afoEuN(#h9=n_+6s=9bNwC`!V*-IoLfniOaJpM5|4flD@?@_&SY_T(?yvm z1B>nV;Jzbm)V5QQEfZ?-^k^Z9RjgS|LNqDV(7zbS$OP4`7VMB* z1mmkmerFh19J1gianiMWAr?}xbS;mXhlzd?hge~Ix>oOA5T@{6Ct~=`I!`LLi~Vgy zkFe`|T1sBE>`|JGnei$~v<=bV7O~HOD8%a)kJ2WkW-B1i^&-`{qPf{e3JM3OqC)vitW75;A6g?l= z4m>aI&*$qun3^S&NFGY*AO>g(Ay5;( z)?9J-Tt%I23|hK`5hv&$OGr!aPpkL)+lwFa;&l~!&lM!E>QA2Omk(UU^;ByrI7s(i$Z6|jEN%wV7xw0A5k6=mC5i}#40v=`8H z0$beZBc%rRN2FkG6LIAC5fn$cN@PXgr^}ftxA9AUmD|DzfB}VxIMI`p+wc|kC!;5K zof4N(?qy&__8+0WzZGA(O}^x(XkO1nRH$+rzvNfBtz|^zVgT?3gNsp_WN_pFq>EK0 z2t^rigcPVHDL;}NiI{>j4S29`-0XV(TMY?lte}WXjqS+(d zrJM6-wpK2tO)Z@Mymu$*$*|U)D;F2tnK;oqm>);v{6@14i40u|`UCMj+#SBV@ox7} z0(}I(!u%jb^bWBa@2*>bCuI+M8UK1&-BvlsE6xH}?u~aVR~~I@yt_CfY^&4AK6XJG zc~dKYOk$@R;nFqw$a!E{>CrK??J{LQGiE#MqQ9p5(l6#`hYT(i`}vr`%3*tOgpL_? zSJBZs?lBRJlW}CDrtG;`Zux);GWlEim`L$k*xC;6Lt94lJkj%Zn@&kBlOU;zMVO*? zUrD5%W*t?6;$tFUTNouL$~`8Mzs4lQ>RII6yTv&Io)SSPA$)?3LzpX;b>D(;JPc!e z%!(o&dJkW-PRr@)SSy^<72`ERYs_0FQ3<_NsJygWdv8%cDtmmcqV#NWbDh-+=!mEY|Je*9N1Zo5Ftzum@r zK3ib;H}WeiAI@p^T>t-`q4r-ok~{UDTR)fIxBkW+lW{m=uU?M<0FodFfAo`r!RPn)C;gIy*ZzZ{GC#-~ax-_cls; z*Q9?p=^dmEZ@=}{`t|G9z4_)FZ&crSJ{|nO#FFgPJbCUk~*=L@4`srW&>ZvE6eBz1!wR-jAzpVb^7r%JyvBy?D zD(UB4(#jQ&JpAxOHa+;@^5x5a_OqWYLwewWpZ@eGKUuo;{`>E{@7{awx##Y?@4D;G zJMUbAbjKZw7ytOjihE54<&{@lamD3K^DevW(w|@Y*S4dA^aOtsPB;(f zc2VJqHW-R|vYFd`lUtO7Ridpf~E@URJ>y)b+XHRS*V zzfG~C-q<1rrRWw^r+Z)Xu3>X{viCNR0T>J%Ks5r0kH7$g3&*tZX~{A3gSQ9$C0Ory z$WILi2>!eA++cCI$-mk=Iy^agI{s^Lk#}VH>-fb|yXWmUJIazhq9I4UNL-irRmW`D zz$+l(zGQ4X!a|}ZmXf*N;^ejXsq`LgkNz5uO#T=Q2;WYRAGkQ4k}mUOSt^f=uT9sN zKFzxCH@md39uL?Ke4&2&0mB9zI%q5?<*Y#YofM>i_P8&diC0Y)j6TvkML6rbqSfOz zr9)K`WZzKwD=?oc4`WODBIf?H{<}P~RQ{#^EK7~k#;oKqJSeE}=y@k$c+*VFDfZ<| zal$-(0VT+nG7aqUzjY-yv2@b#vG2Dxh*4WngIwiS<7pOXy0K~kI5d(PWbvc z=-KUx68G=8g%r;=?MkaYGQvA4yC#s^C|0mx`Ic=(R|R@-Pp(!pEXE^N&u&qUZ*FtRKJD+D$Oii z1-}LPNk2_9+g+t9-B7xx{=|j@O81pIOMk5!5T8(YX#8pYt%N2c(&Ou{PCl(4&VR-d zTo_)Rj0lG`KrMIxX2F++H2l=_PTnoePCin&KJVcit}Y8MBt|{)?4niI8eCYno&f(C z0>e(`U?Zqx&KmRj;R#*rfbebR_<5yHg|aN^fQI=EpOj1GL(AO;eb61MHcYR3t$a?y zyt+3Jd}P$27L7;9PaoocF=J|2TGyFe=pDfS^I=)mPe%_fO0!DV@IvY2$_ou^O5bkW ztraF~Y;Sm{G;Pe33g%wxiwBnCvrfeLp8O$4u)Kx*%70H*G(#`@j!as;nQ658bEPSg4a`;};Z- z^v#QifsoL@8Bw2V&{A#Q9<_HHN5sKX{mS5{ z{7M^;+V=G;2S@nrkKY;iJ?mG7bjR;$zj8=7{7%Jh8Gf($mG&n5&i5-{J`ul*@Oucq z5ActM?&|j2?B!!0IdDvL1gw6(=N-Dofn#C}e;qn;=%f>lJ8aB|YDRZ#Oe)=|LIwJl zr01SDej)p)UOxVp+TUHIr@Q=?xSn^|t$IWW10CVq!1IQlz&t){EQWi0ryZr}>0QJW z-7h87^ZLKyc^t_JrD~dWmkHK=3jrhc9lJ1I1i=1jrvKAs!Vr|U6V~zwbHL`O*{%Vs z`@ycj9B~)L{ats-$1<;*sd&u)?rC-}Nm9fGCcm=l(^@j$^;ZAi?Nn{_E4v{&>;~VZ**)7)dXrfA{~~*s<4q_F&pnTX_p9+J|A^j-aKvQ4a>UCNSpHzI ziJtdW(cRA4y;~KRL;2M=@qcX)X8icL=(uCzvyMa?^0WNPk&lG~j@m<2hgbDgn!U$b z+VBLn?fs$W4bi4>AsZU!Y3=BTz!XCsAAvRm8@`3+Qu>grp;fYPeAcyVDIR0Rv7Qds zTIqx2L+^mT;8$5vA2d#jr`1jH4(Rp-g5E_8VtqeAOxOf|1F*X-@N7IG923m8GQI`+ zktZVr!ny0KyV>S&8cU7cxWG28X+8$aE=vBh;gCUpX`D+~GzpudhqQf{Rvzm|K^4oI|pBZ$Vx06I>g zyWXY8-Hv2TjaEYBg8FYq@Q%irjhEEl)VQqa+daDn7uI9+>sL1oX=*RctADnsd;JSd zV@t0!9MQA~xs~4JrKE-t;SI+<5}&p2B1Gef<$k&NZC#O;u;8iNAo${ik9CgcV-_z;F52_+R1v)J7uL^%(G$W!C3V6glrhg zaiLiJCVxiHfBoOJ37zVpX!{51X!Hi3YB=T!aC6 zZjWBnc(12-9pib2px;as0rYN7zpm`n&1<@ewZrbJ3}||jC8&Lb9&KJZ1|xDyWx(!R zxc6=PuyRlxW?=n&&7U^kQ<>MaRq>jGN_**2bOdJIcj)M^9GQq#Xz1Uxx^gH8pXR@- zY<{Bhro2)Lsx*uG);*Liw1S#`TR9T_Yt^k!nt|^4Zo}!mqoy7>#;>cK(6lIf+i$9j z(}C_bq+bJR`%OW2-gC>h@;l`use()o#DXnnxDU}PG*RVF~rzb2=F;?G>(yTv@ zfJ-+TVQ&3yNWS$s;WZ&xeZrQyr$8_w&AxO#TfTG)^U4(iPHcqjE7w();XgI5tvuV% zS$VGcg8@q$C!_U+$|sF5nfJ`Mu7-Lom<-wRdmP^$JlnLAGws-m7{%+P6E<(e)JRUQ zYp8bf_M6m*u~EQKpfhQ$5o4Ps^;;R>8b^F`ag-sZP=9b3l)P}#LuzWM7m!_s}vNPGf z<1Vpq91qZa8CTVBFXix;AWqYM=i3sG-Fka3G`!ceI=Q70{^CJSF*W@*eWl92r;k=f zcDt%uYtu-A@h@N(xL0_;EwNu6I96Oxcl@)!nYzZ&|ltO_<__SPevfJ}GrE{Jz$9uTbbkM>)$f1=p*Lhn$2 zSb9KuwF&}cL^>TUt?2<_UADXT3$}RcC@7ed?dlKqznZp2cSBB(^gzIR`h)!HuykhGS;NGA&Vox$Mrz_4H1>aEJoO9yAY)0ydo>2YZ5Ot1E)1*_7*;g|fL-ec)e>4CwI z)AN%3vmwBnX|L^eH`l4*Mx0JPXo_9rX zQ#c?wB5X|-d9xvCYHP0qF_|n#du<)rjlDA>N@B z6z=1FKkUR%U+$k0EcTXpUlDN-bRjx2%)3fWl^y0Eot%oX zxF}ds^?Sf6XzfA#iJ+C~&(m4{d&$40bHaUs%hOBKNAZy2-N`*1C;yyuhCdqPaA*2h z{1yMCu%Ca1cV}{M@^kNdG*$Am_$$$`vi+l9VFWK1Q!Rq%rT$oNd2(9(A5_#kG=9V% z79{>euX-bf@H{p~OOt`#p~;l&ACl9(<>_j8=nPo@+TbRCSa`5^Cj?FOenQOnuNaGa zV5+Nwn=pjKa#KwPbOcoVXYUHC=#L6J!vWb@VXJ>ea0lcJ^LvIvqFcmN#5^g!pqgIp z{Vce{TaaFh{*R@tz)+@D`aSXXaj?~qv{m*M|LpWqFx6=_)Sn1b^@^KlD*uIW03fa2 zBOJlxuiko?YKfW(A6+;i_%7r;5iId1<2B;#-W8M+{|0iZm`L#;2s$TNf|r}lqOH6; z{geFPrO&IN>>n{*rbiD#yjzKA0V#iM9%6fME~VYXiN3 z4Egh3itfQAJ%>Y>^}%J2#c>l<1SC5>INCo6JZ5;WrPrnh!ae6C_!qe8VEO^v_>gpF zFb5-ex_4JPCzzX?Y9h_*pBGf;rf(*TU@I`wX%#KW&VZnkXsfs{hcG@k-h;iCY4wJG z5=`}`zb?4dUmt%7rn@sd7`P93_Xby`v!bOmRospqVpau{{I|lJaFum~|BnCr@ZfY_ zJOJY`05q)#c(?jTSHt_mh2fC!Kg20G17Ml-a`k{{DJIcdbR+-Y(oeEuyoa*++4sGF z53}sX@ZhjL`zGUE^mMQ!tb?m{vJ(hN7i2%ce4i6#>Q9(M;!oKUaNERrgmL(Bb~$5c zR=qu31a?0R7se0zo4~GTvJwFWQ&I*HHV3;q{mtHrXd}W8l(Xz0Vr95Id@#NcBl6?y zd&2J6_(1WRAA~~@n5Re2AfA9*yf(hb`)35Melo%TIeZAQa%Om2xUd@T6Su)xFo`hD z7+ANl7h>BHX=^st+Yuz$X#eQ!7XOm~c81$v$o-k{l{oAdB(VANU@}~6CIb1j(Wmh3 zwqS9vDp){n;jQtE@X2stIxFnVu0T9t481hF7faWSU~xJltlpZ9iKYNy9zzK%vlg>; zls_k(>EEAT8xBd{q+y_(hTqG*E3&Wq4REL>*>#qkKPvY9iJ0*S#(p>PfO(kl2-DdK zn3C_N2x!q=-UKBTBT7;M|1v^K71iK}0v)^LL{ZcSD`YQ3^ZVW?DW9qdE zyDMnturvAy&=H7s7o^{ZiI(7!;uUbo1K~9vVPePWV5$qMVg5-;N8G21U{VIk!|^5) z^_D|iLOc71_~&2*CP7rc;QBDblsptpH8Wm{#dEqpF|2cOBkLbe#B>^!{3%=rL%^#r z0!y+x;&1q8_)S=J`}-5)w-7bXOIyQ!$py(Tamn${@DFKqX55)xo9ze7jieKzkuJjR z!3YKp=sOH{?!p3Y15M_3pD+qR}F{8|2E$v-6* z!3k%Horfg@V_9^Q1E`3G-f&>j=vS#O-1gDr;PjUmvm|*OPdz-GhB~J3la>B&Iq<=p z@Ew1hKZ;S*AB{1s&eLcVErrL;02eY2d3Y~Cq@ql_elo_GlQEDnoq-}7z})Rvj4AcZG=Z~Cy3YN z(l>$=gF9kBodC0)9A+5Qu^dwvb567)IR;|xkkRUyO-v`GcP0Xw4Fcs#h&l!KKP5ajydZu8y*(*C7-A-2v$`sfEt+?QcLl^O z31*7J2G)dF-$#3Q#!rX)ghK%3R6QE2&7fde@Nn>;N~l8AN`F-FB(@hPFg7Ea-4y?4 zay)D^5gxJFUxnZ^iaiSJl4V#K5!q=JyoOJkj|~UJM}@73qV@4tlFQJqA@NBRg(-M4 z#;d1_5h-uPSD`aQv2^{`UmyG~oq#V0;C9ZPxTTA*fZnWCF=#o+yCRzCzZJX?k1}i5 zfMgKG1lyDS5n@k4k48{T=!H|_?*)_M8-inkg>c4!VZZoTOvF)`q^F?QGlJQOjz_~B z#|NwMKVE1W8t&5Y-Ed>rS&ff|xSQY*!{VmsL-_vK_yi(gqO6aHVY{?ddh>7`yPm|m z#yuehYU3j>n4IxH;rW$}>jL=nv|?bAxzV5e&B=G;LlNzU`zHn8@D9ZyKam~D%Hjvr zlQ3Y1s|X;JKzBcrB$(Uf-fWfJz#`mS%sFJ z_z%hOWgW2iPnd)m#U&SH0~xu3S@8Q-YHdY`=P9A$m00;D0mu0sP@QM2j1f zGhvd`A>mqg4v@@%ggfEL6QlJ()kHkZYiumRrZfIu@vorc^YOn@AXhQ?du#kg{6X}) z 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 Date: Thu, 17 Aug 2023 10:51:03 +0100 Subject: [PATCH 4/8] fix oprint --- ocaml/testsuite/tests/typing-local/local.ml | 2 +- ocaml/typing/oprint.ml | 29 +++++++++++++++------ 2 files changed, 22 insertions(+), 9 deletions(-) diff --git a/ocaml/testsuite/tests/typing-local/local.ml b/ocaml/testsuite/tests/typing-local/local.ml index 64a554b1d77..c4a30e37f91 100644 --- a/ocaml/testsuite/tests/typing-local/local.ml +++ b/ocaml/testsuite/tests/typing-local/local.ml @@ -2648,7 +2648,7 @@ Lines 3-6, characters 6-3: Error: Signature mismatch: Modules do not match: sig - val g : 'a -> ('b -> local_ string) + val g : 'a -> 'b -> local_ string val f : 'a -> local_ ('b -> local_ string) end is not included in diff --git a/ocaml/typing/oprint.ml b/ocaml/typing/oprint.ml index 6e04faeba77..e136f2daac4 100644 --- a/ocaml/typing/oprint.ml +++ b/ocaml/typing/oprint.ml @@ -345,19 +345,30 @@ let partial_apply alloc_mode = let oam_linearity = alloc_mode.oam_linearity in { oam_locality; oam_uniqueness; oam_linearity } -let same_locality m1 m2 = - match m1.oam_locality, m2.oam_locality with +(* Following functions are used to check if the return mode can omitted in the + case of currying *) +let same_locality expected real = + match expected, real with + (* If expected and real matches, can omit *) | Olm_local, Olm_local | Olm_global, Olm_global -> true + (* If the real mode is unknown, we'd rather not put extra parentheses, because + we wouldn't put "unknown" around the parentheses either, which would make + the printing even less precise *) + | _, Olm_unknown -> true + (* In all other cases (the real mode is known), we will print the mode to be + safe*) | _, _ -> false -let same_uniqueness m1 m2 = - match m1.oam_uniqueness, m2.oam_uniqueness with +let same_uniqueness expected real = + match expected, real with | Oum_unique, Oum_unique | Oum_shared, Oum_shared -> true - | _, _ -> false + | _, Oum_unknown -> true + | _, _ -> false -let same_linearity m1 m2 = - match m1.oam_linearity, m2.oam_linearity with +let same_linearity expected real = + match expected, real with | Olinm_many, Olinm_many | Olinm_once, Olinm_once -> true + | _, Olinm_unknown -> true | _, _ -> false let print_out_layout ppf = function @@ -440,7 +451,9 @@ and print_out_ret mode rm ppf = function (* the 'mode' argument only has meaning if we are talking about closure *) | Otyp_arrow _ as ty -> - if same_locality mode rm && same_uniqueness mode rm && same_linearity mode rm + if same_locality mode.oam_locality rm.oam_locality && + same_uniqueness mode.oam_uniqueness rm.oam_uniqueness && + same_linearity mode.oam_linearity rm.oam_linearity then print_out_type_1 rm ppf ty else print_out_type_mode rm ppf ty | ty -> print_out_type_mode rm ppf ty From 1f4796f8ec11c27d608bfce75cebd515b1ff4e39 Mon Sep 17 00:00:00 2001 From: Zesen Qian Date: Thu, 17 Aug 2023 11:23:52 +0100 Subject: [PATCH 5/8] fix chamelon --- chamelon/compat.jst.ml | 35 ++++++++++++++++++----------------- ocaml/dune | 2 +- ocaml/typing/mode.mli | 1 + 3 files changed, 20 insertions(+), 18 deletions(-) diff --git a/chamelon/compat.jst.ml b/chamelon/compat.jst.ml index 360e79ccf23..5f10db3fae2 100644 --- a/chamelon/compat.jst.ml +++ b/chamelon/compat.jst.ml @@ -1,31 +1,32 @@ open Typedtree open Types +open Mode let dummy_layout = Layouts.Layout.value ~why:Type_argument -let dummy_value_mode = { r_as_l = Amode Global; r_as_g = Amode Global } +let dummy_value_mode = Value.legacy let mkTvar name = Tvar { name; layout = dummy_layout } let mkTarrow (label, t1, t2, comm) = - Tarrow ((label, Amode Global, Amode Global), t1, t2, comm) + Tarrow ((label, Alloc.legacy, Alloc.legacy), t1, t2, comm) type texp_ident_identifier = ident_kind let mkTexp_ident ?id:(ident_kind = Id_value) (path, longident, vd) = - Texp_ident (path, longident, vd, ident_kind) + Texp_ident (path, longident, vd, ident_kind, (Uniqueness.legacy, Linearity.legacy)) type nonrec apply_arg = apply_arg -type texp_apply_identifier = apply_position * alloc_mode +type texp_apply_identifier = apply_position * Locality.t -let mkTexp_apply ?id:(pos, mode = (Default, Amode Global)) (exp, args) = +let mkTexp_apply ?id:(pos, mode = (Default, Locality.legacy)) (exp, args) = Texp_apply (exp, args, pos, mode) -type texp_tuple_identifier = alloc_mode +type texp_tuple_identifier = Alloc.t -let mkTexp_tuple ?id:(mode = Amode Global) exps = Texp_tuple (exps, mode) +let mkTexp_tuple ?id:(mode = Alloc.legacy) exps = Texp_tuple (exps, mode) -type texp_construct_identifier = alloc_mode option +type texp_construct_identifier = Alloc.t option -let mkTexp_construct ?id:(mode = Some (Amode Global)) (name, desc, args) = +let mkTexp_construct ?id:(mode = Some (Alloc.legacy)) (name, desc, args) = Texp_construct (name, desc, args, mode) type texp_function = { @@ -36,8 +37,8 @@ type texp_function = { type texp_function_identifier = { partial : partial; - arg_mode : alloc_mode; - alloc_mode : alloc_mode; + arg_mode : Alloc.t; + alloc_mode : Alloc.t; region : bool; curry : fun_curry_state; warnings : Warnings.state; @@ -48,10 +49,10 @@ type texp_function_identifier = { let texp_function_defaults = { partial = Total; - arg_mode = Amode Global; - alloc_mode = Amode Global; + arg_mode = Alloc.legacy; + alloc_mode = Alloc.legacy; region = false; - curry = Final_arg { partial_mode = Amode Global }; + curry = Final_arg { partial_mode = Alloc.legacy }; warnings = Warnings.backup (); arg_sort = Layouts.Sort.value; ret_sort = Layouts.Sort.value; @@ -106,7 +107,7 @@ type matched_expression_desc = let view_texp (e : expression_desc) = match e with - | Texp_ident (path, longident, vd, ident_kind) -> + | Texp_ident (path, longident, vd, ident_kind, _) -> Texp_ident (path, longident, vd, ident_kind) | Texp_apply (exp, args, pos, mode) -> Texp_apply (exp, args, (pos, mode)) | Texp_construct (name, desc, args, mode) -> @@ -142,12 +143,12 @@ let view_texp (e : expression_desc) = | Texp_match (e, sort, cases, partial) -> Texp_match (e, cases, partial, sort) | _ -> O e -type tpat_var_identifier = value_mode +type tpat_var_identifier = Value.t let mkTpat_var ?id:(mode = dummy_value_mode) (ident, name) = Tpat_var (ident, name, mode) -type tpat_alias_identifier = value_mode +type tpat_alias_identifier = Value.t let mkTpat_alias ?id:(mode = dummy_value_mode) (p, ident, name) = Tpat_alias (p, ident, name, mode) diff --git a/ocaml/dune b/ocaml/dune index 80b164e626c..2d1d80e63ee 100644 --- a/ocaml/dune +++ b/ocaml/dune @@ -69,7 +69,7 @@ ;; TYPING ident path layouts primitive shape types btype oprint subst predef datarepr - cmi_format persistent_env env errortrace + cmi_format persistent_env env errortrace mode typedtree printtyped ctype printtyp includeclass mtype envaux includecore tast_iterator tast_mapper signature_group cmt_format cms_format untypeast includemod includemod_errorprinter diff --git a/ocaml/typing/mode.mli b/ocaml/typing/mode.mli index 44f60104079..d35ca486932 100644 --- a/ocaml/typing/mode.mli +++ b/ocaml/typing/mode.mli @@ -123,6 +123,7 @@ module Linearity : sig type t + val legacy : t val of_const : Const.t -> t val to_dual : t -> Uniqueness.t val of_dual : Uniqueness.t -> t From f7e78ff2643064e452def2e4e1c3853259d31bf4 Mon Sep 17 00:00:00 2001 From: Zesen Qian Date: Thu, 17 Aug 2023 11:30:53 +0100 Subject: [PATCH 6/8] make fmt, hehe --- chamelon/compat.jst.ml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/chamelon/compat.jst.ml b/chamelon/compat.jst.ml index 5f10db3fae2..bec6f98472c 100644 --- a/chamelon/compat.jst.ml +++ b/chamelon/compat.jst.ml @@ -12,7 +12,8 @@ let mkTarrow (label, t1, t2, comm) = type texp_ident_identifier = ident_kind let mkTexp_ident ?id:(ident_kind = Id_value) (path, longident, vd) = - Texp_ident (path, longident, vd, ident_kind, (Uniqueness.legacy, Linearity.legacy)) + Texp_ident + (path, longident, vd, ident_kind, (Uniqueness.legacy, Linearity.legacy)) type nonrec apply_arg = apply_arg type texp_apply_identifier = apply_position * Locality.t @@ -26,7 +27,7 @@ let mkTexp_tuple ?id:(mode = Alloc.legacy) exps = Texp_tuple (exps, mode) type texp_construct_identifier = Alloc.t option -let mkTexp_construct ?id:(mode = Some (Alloc.legacy)) (name, desc, args) = +let mkTexp_construct ?id:(mode = Some Alloc.legacy) (name, desc, args) = Texp_construct (name, desc, args, mode) type texp_function = { From f5390ae837be580bd18483b2098bfe5e6d32b10a Mon Sep 17 00:00:00 2001 From: Zesen Qian Date: Thu, 17 Aug 2023 12:09:01 +0100 Subject: [PATCH 7/8] fix issues --- ocaml/testsuite/tests/typing-local/exclave.ml | 12 +++-- ocaml/typing/oprint.ml | 48 +++++++++++-------- ocaml/typing/typecore.ml | 4 +- 3 files changed, 37 insertions(+), 27 deletions(-) diff --git a/ocaml/testsuite/tests/typing-local/exclave.ml b/ocaml/testsuite/tests/typing-local/exclave.ml index 5b735f85650..6c68aeeb7aa 100644 --- a/ocaml/testsuite/tests/typing-local/exclave.ml +++ b/ocaml/testsuite/tests/typing-local/exclave.ml @@ -200,14 +200,16 @@ val f : unit -> local_ unit = - : unit = () |}] -(* local_ on the RHS of arrow types indicates allocating in the parent region. - To match that, exclave_ always returns local. However, the body could be - actually global and implicitly casted to local. In the following, the - [fun x y] is actually global. *) +(* exclave_ should follow the allocation behaviour of local_. That means the + body must be strictly local (which only matters when allocating functions) *) let f () = exclave_ ( (fun x y -> ()) : (string -> string -> unit) ) [%%expect{| -val f : unit -> local_ (string -> (string -> unit)) = +Line 3, characters 4-19: +3 | (fun x y -> ()) : (string -> string -> unit) + ^^^^^^^^^^^^^^^ +Error: This function or one of its parameters escape their region + when it is partially applied. |}] \ No newline at end of file diff --git a/ocaml/typing/oprint.ml b/ocaml/typing/oprint.ml index e136f2daac4..b63b186ce3c 100644 --- a/ocaml/typing/oprint.ml +++ b/ocaml/typing/oprint.ml @@ -347,7 +347,7 @@ let partial_apply alloc_mode = (* Following functions are used to check if the return mode can omitted in the case of currying *) -let same_locality expected real = +let locality_agree expected real = match expected, real with (* If expected and real matches, can omit *) | Olm_local, Olm_local | Olm_global, Olm_global -> true @@ -359,22 +359,42 @@ let same_locality expected real = safe*) | _, _ -> false -let same_uniqueness expected real = +let uniqueness_agree expected real = match expected, real with | Oum_unique, Oum_unique | Oum_shared, Oum_shared -> true | _, Oum_unknown -> true | _, _ -> false -let same_linearity expected real = +let linearity_agree expected real = match expected, real with | Olinm_many, Olinm_many | Olinm_once, Olinm_once -> true | _, Olinm_unknown -> true | _, _ -> false +let mode_agree expected real = + locality_agree expected.oam_locality real.oam_locality && + uniqueness_agree expected.oam_uniqueness real.oam_uniqueness && + linearity_agree expected.oam_linearity real.oam_linearity + 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 is_local mode = + match mode.oam_locality with + | Olm_local -> true + | _ -> false + +let is_unique mode = + match mode.oam_uniqueness with + | Oum_unique -> true + | _ -> false + +let is_once mode = + match mode.oam_linearity with + | Olinm_once -> true + | _ -> false + let rec print_out_type_0 mode ppf = function | Otyp_alias (ty, s) -> @@ -389,21 +409,9 @@ let rec print_out_type_0 mode ppf = print_out_type_1 mode ppf ty and print_out_type_mode mode ppf ty = - let is_local = - match mode.oam_locality with - | Olm_local -> true - | _ -> false - in - let is_unique = - match mode.oam_uniqueness with - | Oum_unique -> true - | _ -> false - in - let is_once = - match mode.oam_linearity with - | Olinm_once -> true - | _ -> false - in + let is_local = is_local mode in + let is_unique = is_unique mode in + let is_once = is_once mode in if (not is_local || Language_extension.is_enabled Local) && (not is_unique || Language_extension.is_enabled Unique) && (not is_once || Language_extension.is_enabled Unique) @@ -451,9 +459,7 @@ and print_out_ret mode rm ppf = function (* the 'mode' argument only has meaning if we are talking about closure *) | Otyp_arrow _ as ty -> - if same_locality mode.oam_locality rm.oam_locality && - same_uniqueness mode.oam_uniqueness rm.oam_uniqueness && - same_linearity mode.oam_linearity rm.oam_linearity + if mode_agree mode rm then print_out_type_1 rm ppf ty else print_out_type_mode rm ppf ty | ty -> print_out_type_mode rm ppf ty diff --git a/ocaml/typing/typecore.ml b/ocaml/typing/typecore.ml index 83422c43f1f..25146da6103 100644 --- a/ocaml/typing/typecore.ml +++ b/ocaml/typing/typecore.ml @@ -463,7 +463,9 @@ let mode_local expected_mode = mode = Value.to_local expected_mode.mode } let mode_exclave expected_mode = - mode_default (Value.to_local expected_mode.mode) + { (mode_default (Value.to_local expected_mode.mode)) + with strictly_local = true + } let mode_strictly_local expected_mode = { (mode_local expected_mode) From 69aed74540ca1a434563ee4be0cd786ed61f0168 Mon Sep 17 00:00:00 2001 From: Zesen Qian Date: Thu, 17 Aug 2023 13:39:07 +0100 Subject: [PATCH 8/8] fix chamelon for roundtrip --- chamelon/compat.jst.ml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/chamelon/compat.jst.ml b/chamelon/compat.jst.ml index bec6f98472c..e7cd7df249f 100644 --- a/chamelon/compat.jst.ml +++ b/chamelon/compat.jst.ml @@ -9,11 +9,11 @@ let mkTvar name = Tvar { name; layout = dummy_layout } let mkTarrow (label, t1, t2, comm) = Tarrow ((label, Alloc.legacy, Alloc.legacy), t1, t2, comm) -type texp_ident_identifier = ident_kind +type texp_ident_identifier = ident_kind * unique_use -let mkTexp_ident ?id:(ident_kind = Id_value) (path, longident, vd) = - Texp_ident - (path, longident, vd, ident_kind, (Uniqueness.legacy, Linearity.legacy)) +let mkTexp_ident ?id:(ident_kind, uu = (Id_value, shared_many_use)) + (path, longident, vd) = + Texp_ident (path, longident, vd, ident_kind, uu) type nonrec apply_arg = apply_arg type texp_apply_identifier = apply_position * Locality.t @@ -108,8 +108,8 @@ type matched_expression_desc = let view_texp (e : expression_desc) = match e with - | Texp_ident (path, longident, vd, ident_kind, _) -> - Texp_ident (path, longident, vd, ident_kind) + | Texp_ident (path, longident, vd, ident_kind, uu) -> + Texp_ident (path, longident, vd, (ident_kind, uu)) | Texp_apply (exp, args, pos, mode) -> Texp_apply (exp, args, (pos, mode)) | Texp_construct (name, desc, args, mode) -> Texp_construct (name, desc, args, mode)