diff --git a/backend/cmmgen.ml b/backend/cmmgen.ml index e0ac6ca26d5..47a071cf8f9 100644 --- a/backend/cmmgen.ml +++ b/backend/cmmgen.ml @@ -398,13 +398,13 @@ let is_strict : kind_for_unboxing -> bool = function (* [exttype_of_sort] and [machtype_of_sort] should be kept in sync with [Typeopt.layout_of_const_sort]. *) (* CR layouts v5: Void case should probably be typ_void *) -let exttype_of_sort (s : Layouts.Sort.const) = +let exttype_of_sort (s : Jkind.Sort.const) = match s with | Value -> XInt | Float64 -> XFloat | Void -> Misc.fatal_error "Cmmgen.exttype_of_sort: void encountered" -let machtype_of_sort (s : Layouts.Sort.const) = +let machtype_of_sort (s : Jkind.Sort.const) = match s with | Value -> typ_val | Float64 -> typ_float diff --git a/chamelon/compat.jst.ml b/chamelon/compat.jst.ml index ec23e4ce9b9..37ac0989868 100644 --- a/chamelon/compat.jst.ml +++ b/chamelon/compat.jst.ml @@ -2,9 +2,9 @@ open Typedtree open Types open Mode -let dummy_layout = Layouts.Layout.value ~why:Type_argument +let dummy_jkind = Jkind.value ~why:Type_argument let dummy_value_mode = Value.legacy -let mkTvar name = Tvar { name; layout = dummy_layout } +let mkTvar name = Tvar { name; jkind = dummy_jkind } let mkTarrow (label, t1, t2, comm) = Tarrow ((label, Alloc.legacy, Alloc.legacy), t1, t2, comm) @@ -43,8 +43,8 @@ type texp_function_identifier = { region : bool; curry : fun_curry_state; warnings : Warnings.state; - arg_sort : Layouts.sort; - ret_sort : Layouts.sort; + arg_sort : Jkind.sort; + ret_sort : Jkind.sort; } let texp_function_defaults = @@ -55,8 +55,8 @@ let texp_function_defaults = region = false; curry = Final_arg { partial_mode = Alloc.legacy }; warnings = Warnings.backup (); - arg_sort = Layouts.Sort.value; - ret_sort = Layouts.Sort.value; + arg_sort = Jkind.Sort.value; + ret_sort = Jkind.Sort.value; } let mkTexp_function ?(id = texp_function_defaults) @@ -76,14 +76,14 @@ let mkTexp_function ?(id = texp_function_defaults) ret_sort = id.ret_sort; } -type texp_sequence_identifier = Layouts.sort +type texp_sequence_identifier = Jkind.sort -let mkTexp_sequence ?id:(sort = Layouts.Sort.value) (e1, e2) = +let mkTexp_sequence ?id:(sort = Jkind.Sort.value) (e1, e2) = Texp_sequence (e1, sort, e2) -type texp_match_identifier = Layouts.sort +type texp_match_identifier = Jkind.sort -let mkTexp_match ?id:(sort = Layouts.Sort.value) (e, cases, partial) = +let mkTexp_match ?id:(sort = Jkind.Sort.value) (e, cases, partial) = Texp_match (e, sort, cases, partial) type matched_expression_desc = @@ -180,9 +180,9 @@ let view_tpat (type a) (p : a pattern_desc) : a matched_pattern_desc = | Tpat_array (mut, l) -> Tpat_array (l, mut) | _ -> O p -type tstr_eval_identifier = Layouts.sort +type tstr_eval_identifier = Jkind.sort -let mkTstr_eval ?id:(sort = Layouts.Sort.value) (e, attrs) = +let mkTstr_eval ?id:(sort = Jkind.Sort.value) (e, attrs) = Tstr_eval (e, sort, attrs) type matched_structure_item_desc = @@ -194,9 +194,9 @@ let view_tstr (si : structure_item_desc) = | Tstr_eval (e, sort, attrs) -> Tstr_eval (e, attrs, sort) | _ -> O si -type arg_identifier = Layouts.sort +type arg_identifier = Jkind.sort -let mkArg ?id:(sort = Layouts.Sort.value) e = Arg (e, sort) +let mkArg ?id:(sort = Jkind.Sort.value) e = Arg (e, sort) let map_arg_or_omitted f arg = match arg with Arg (e, sort) -> Arg (f e, sort) | Omitted o -> Omitted o @@ -223,7 +223,7 @@ let mk_constructor_description cstr_name = cstr_attributes = []; cstr_inlined = None; cstr_uid = Uid.internal_not_actually_unique; - cstr_arg_layouts = [||]; + cstr_arg_jkinds = [||]; cstr_repr = Variant_boxed [||]; cstr_constant = true; } @@ -234,7 +234,7 @@ let mk_value_binding ~vb_pat ~vb_expr ~vb_attributes = vb_expr; vb_attributes; vb_loc = Location.none; - vb_sort = Layouts.Sort.value; + vb_sort = Jkind.Sort.value; } let mkTtyp_any = Ttyp_var (None, None) diff --git a/native_toplevel/opttopdirs.ml b/native_toplevel/opttopdirs.ml index a048a3097cb..769ae59424b 100644 --- a/native_toplevel/opttopdirs.ml +++ b/native_toplevel/opttopdirs.ml @@ -138,7 +138,7 @@ let match_printer_type ppf desc typename = raise Exit in Ctype.begin_def(); - let ty_arg = Ctype.newvar (Layouts.Layout.value ~why:Debug_printer_argument) in + let ty_arg = Ctype.newvar (Jkind.value ~why:Debug_printer_argument) in Ctype.unify !toplevel_env (Ctype.newconstr printer_type [ty_arg]) (Ctype.instance desc.val_type); diff --git a/ocaml/.depend b/ocaml/.depend index 9b2c6d7b8d1..3b2fc96dcdb 100644 --- a/ocaml/.depend +++ b/ocaml/.depend @@ -668,6 +668,7 @@ typing/btype.cmx : \ typing/btype.cmi : \ typing/types.cmi \ typing/path.cmi \ + typing/jkind.cmi \ parsing/asttypes.cmi typing/cmt2annot.cmo : \ typing/typedtree.cmi \ @@ -708,6 +709,7 @@ typing/ctype.cmo : \ parsing/longident.cmi \ parsing/location.cmi \ utils/local_store.cmi \ + typing/jkind.cmi \ typing/ident.cmi \ typing/errortrace.cmi \ typing/env.cmi \ @@ -726,6 +728,7 @@ typing/ctype.cmx : \ parsing/longident.cmx \ parsing/location.cmx \ utils/local_store.cmx \ + typing/jkind.cmx \ typing/ident.cmx \ typing/errortrace.cmx \ typing/env.cmx \ @@ -740,6 +743,7 @@ typing/ctype.cmi : \ typing/mode.cmi \ parsing/longident.cmi \ parsing/location.cmi \ + typing/jkind.cmi \ typing/ident.cmi \ typing/errortrace.cmi \ typing/env.cmi \ @@ -749,6 +753,7 @@ typing/datarepr.cmo : \ typing/types.cmi \ typing/path.cmi \ parsing/location.cmi \ + typing/jkind.cmi \ typing/ident.cmi \ typing/btype.cmi \ parsing/asttypes.cmi \ @@ -757,6 +762,7 @@ typing/datarepr.cmx : \ typing/types.cmx \ typing/path.cmx \ parsing/location.cmx \ + typing/jkind.cmx \ typing/ident.cmx \ typing/btype.cmx \ parsing/asttypes.cmi \ @@ -783,6 +789,7 @@ typing/env.cmo : \ utils/load_path.cmi \ utils/lazy_backtrack.cmi \ utils/language_extension.cmi \ + typing/jkind.cmi \ typing/ident.cmi \ typing/datarepr.cmi \ utils/compilation_unit.cmi \ @@ -809,6 +816,7 @@ typing/env.cmx : \ utils/load_path.cmx \ utils/lazy_backtrack.cmx \ utils/language_extension.cmx \ + typing/jkind.cmx \ typing/ident.cmx \ typing/datarepr.cmx \ utils/compilation_unit.cmx \ @@ -830,6 +838,7 @@ typing/env.cmi : \ parsing/longident.cmi \ parsing/location.cmi \ utils/load_path.cmi \ + typing/jkind.cmi \ utils/import_info.cmi \ typing/ident.cmi \ utils/compilation_unit.cmi \ @@ -860,16 +869,19 @@ typing/envaux.cmi : \ typing/errortrace.cmo : \ typing/types.cmi \ typing/path.cmi \ + typing/jkind.cmi \ parsing/asttypes.cmi \ typing/errortrace.cmi typing/errortrace.cmx : \ typing/types.cmx \ typing/path.cmx \ + typing/jkind.cmx \ parsing/asttypes.cmi \ typing/errortrace.cmi typing/errortrace.cmi : \ typing/types.cmi \ typing/path.cmi \ + typing/jkind.cmi \ parsing/asttypes.cmi typing/ident.cmo : \ utils/misc.cmi \ @@ -913,6 +925,7 @@ typing/includecore.cmo : \ typing/path.cmi \ typing/mode.cmi \ utils/misc.cmi \ + typing/jkind.cmi \ typing/ident.cmi \ typing/errortrace.cmi \ typing/env.cmi \ @@ -930,6 +943,7 @@ typing/includecore.cmx : \ typing/path.cmx \ typing/mode.cmx \ utils/misc.cmx \ + typing/jkind.cmx \ typing/ident.cmx \ typing/errortrace.cmx \ typing/env.cmx \ @@ -944,6 +958,7 @@ typing/includecore.cmi : \ typing/typedtree.cmi \ typing/path.cmi \ parsing/location.cmi \ + typing/jkind.cmi \ typing/ident.cmi \ typing/errortrace.cmi \ typing/env.cmi \ @@ -1138,6 +1153,7 @@ typing/parmatch.cmo : \ utils/misc.cmi \ parsing/longident.cmi \ parsing/location.cmi \ + typing/jkind.cmi \ parsing/jane_syntax.cmi \ typing/ident.cmi \ typing/env.cmi \ @@ -1163,6 +1179,7 @@ typing/parmatch.cmx : \ utils/misc.cmx \ parsing/longident.cmx \ parsing/location.cmx \ + typing/jkind.cmx \ parsing/jane_syntax.cmx \ typing/ident.cmx \ typing/env.cmx \ @@ -1258,6 +1275,7 @@ typing/predef.cmo : \ typing/path.cmi \ parsing/parsetree.cmi \ parsing/location.cmi \ + typing/jkind.cmi \ typing/ident.cmi \ typing/btype.cmi \ parsing/asttypes.cmi \ @@ -1268,6 +1286,7 @@ typing/predef.cmx : \ typing/path.cmx \ parsing/parsetree.cmi \ parsing/location.cmx \ + typing/jkind.cmx \ typing/ident.cmx \ typing/btype.cmx \ parsing/asttypes.cmi \ @@ -1327,6 +1346,7 @@ typing/printtyp.cmo : \ utils/misc.cmi \ parsing/longident.cmi \ parsing/location.cmi \ + typing/jkind.cmi \ typing/ident.cmi \ typing/errortrace.cmi \ typing/env.cmi \ @@ -1351,6 +1371,7 @@ typing/printtyp.cmx : \ utils/misc.cmx \ parsing/longident.cmx \ parsing/location.cmx \ + typing/jkind.cmx \ typing/ident.cmx \ typing/errortrace.cmx \ typing/env.cmx \ @@ -1485,6 +1506,7 @@ typing/subst.cmo : \ parsing/location.cmi \ utils/local_store.cmi \ utils/lazy_backtrack.cmi \ + typing/jkind.cmi \ typing/ident.cmi \ utils/clflags.cmi \ typing/btype.cmi \ @@ -1498,6 +1520,7 @@ typing/subst.cmx : \ parsing/location.cmx \ utils/local_store.cmx \ utils/lazy_backtrack.cmx \ + typing/jkind.cmx \ typing/ident.cmx \ utils/clflags.cmx \ typing/btype.cmx \ @@ -1560,6 +1583,7 @@ typing/typeclass.cmo : \ utils/misc.cmi \ parsing/longident.cmi \ parsing/location.cmi \ + typing/jkind.cmi \ parsing/jane_syntax.cmi \ typing/includeclass.cmi \ typing/ident.cmi \ @@ -1591,6 +1615,7 @@ typing/typeclass.cmx : \ utils/misc.cmx \ parsing/longident.cmx \ parsing/location.cmx \ + typing/jkind.cmx \ parsing/jane_syntax.cmx \ typing/includeclass.cmx \ typing/ident.cmx \ @@ -1610,6 +1635,7 @@ typing/typeclass.cmi : \ parsing/parsetree.cmi \ parsing/longident.cmi \ parsing/location.cmi \ + typing/jkind.cmi \ typing/ident.cmi \ typing/errortrace.cmi \ typing/env.cmi \ @@ -1640,6 +1666,7 @@ typing/typecore.cmo : \ parsing/location.cmi \ utils/local_store.cmi \ utils/language_extension.cmi \ + typing/jkind.cmi \ parsing/jane_syntax.cmi \ typing/ident.cmi \ typing/errortrace.cmi \ @@ -1677,6 +1704,7 @@ typing/typecore.cmx : \ parsing/location.cmx \ utils/local_store.cmx \ utils/language_extension.cmx \ + typing/jkind.cmx \ parsing/jane_syntax.cmx \ typing/ident.cmx \ typing/errortrace.cmx \ @@ -1699,6 +1727,7 @@ typing/typecore.cmi : \ parsing/longident.cmi \ parsing/location.cmi \ utils/language_extension.cmi \ + typing/jkind.cmi \ typing/ident.cmi \ typing/errortrace.cmi \ typing/env.cmi \ @@ -1722,6 +1751,7 @@ typing/typedecl.cmo : \ utils/misc.cmi \ parsing/longident.cmi \ parsing/location.cmi \ + typing/jkind.cmi \ parsing/jane_syntax.cmi \ typing/includecore.cmi \ typing/ident.cmi \ @@ -1756,6 +1786,7 @@ typing/typedecl.cmx : \ utils/misc.cmx \ parsing/longident.cmx \ parsing/location.cmx \ + typing/jkind.cmx \ parsing/jane_syntax.cmx \ typing/includecore.cmx \ typing/ident.cmx \ @@ -1780,6 +1811,7 @@ typing/typedecl.cmi : \ parsing/parsetree.cmi \ parsing/longident.cmi \ parsing/location.cmi \ + typing/jkind.cmi \ typing/includecore.cmi \ typing/ident.cmi \ typing/errortrace.cmi \ @@ -1805,6 +1837,7 @@ typing/typedecl_separability.cmo : \ typing/types.cmi \ typing/typedecl_properties.cmi \ parsing/location.cmi \ + typing/jkind.cmi \ typing/env.cmi \ typing/ctype.cmi \ utils/config.cmi \ @@ -1814,6 +1847,7 @@ typing/typedecl_separability.cmx : \ typing/types.cmx \ typing/typedecl_properties.cmx \ parsing/location.cmx \ + typing/jkind.cmx \ typing/env.cmx \ typing/ctype.cmx \ utils/config.cmx \ @@ -1868,6 +1902,7 @@ typing/typedtree.cmo : \ typing/mode.cmi \ parsing/longident.cmi \ parsing/location.cmi \ + typing/jkind.cmi \ parsing/jane_asttypes.cmi \ typing/ident.cmi \ typing/env.cmi \ @@ -1883,6 +1918,7 @@ typing/typedtree.cmx : \ typing/mode.cmx \ parsing/longident.cmx \ parsing/location.cmx \ + typing/jkind.cmx \ parsing/jane_asttypes.cmi \ typing/ident.cmx \ typing/env.cmx \ @@ -1924,6 +1960,7 @@ typing/typemod.cmo : \ parsing/longident.cmi \ parsing/location.cmi \ utils/load_path.cmi \ + typing/jkind.cmi \ parsing/jane_syntax.cmi \ typing/includemod_errorprinter.cmi \ typing/includemod.cmi \ @@ -1965,6 +2002,7 @@ typing/typemod.cmx : \ parsing/longident.cmx \ parsing/location.cmx \ utils/load_path.cmx \ + typing/jkind.cmx \ parsing/jane_syntax.cmx \ typing/includemod_errorprinter.cmx \ typing/includemod.cmx \ @@ -1994,6 +2032,7 @@ typing/typemod.cmi : \ parsing/parsetree.cmi \ parsing/longident.cmi \ parsing/location.cmi \ + typing/jkind.cmi \ typing/includemod.cmi \ typing/ident.cmi \ typing/env.cmi \ @@ -2010,6 +2049,7 @@ typing/typeopt.cmo : \ parsing/location.cmi \ utils/language_extension.cmi \ lambda/lambda.cmi \ + typing/jkind.cmi \ typing/ident.cmi \ typing/env.cmi \ typing/ctype.cmi \ @@ -2028,6 +2068,7 @@ typing/typeopt.cmx : \ parsing/location.cmx \ utils/language_extension.cmx \ lambda/lambda.cmx \ + typing/jkind.cmx \ typing/ident.cmx \ typing/env.cmx \ typing/ctype.cmx \ @@ -2098,6 +2139,7 @@ typing/typetexp.cmo : \ parsing/longident.cmi \ parsing/location.cmi \ utils/language_extension.cmi \ + typing/jkind.cmi \ parsing/jane_syntax.cmi \ parsing/jane_asttypes.cmi \ typing/errortrace.cmi \ @@ -2123,6 +2165,7 @@ typing/typetexp.cmx : \ parsing/longident.cmx \ parsing/location.cmx \ utils/language_extension.cmx \ + typing/jkind.cmx \ parsing/jane_syntax.cmx \ parsing/jane_asttypes.cmi \ typing/errortrace.cmx \ @@ -2143,6 +2186,7 @@ typing/typetexp.cmi : \ parsing/longident.cmi \ parsing/location.cmi \ utils/language_extension.cmi \ + typing/jkind.cmi \ parsing/jane_asttypes.cmi \ typing/errortrace.cmi \ typing/env.cmi \ @@ -2918,6 +2962,7 @@ asmcomp/cmmgen.cmo : \ typing/primitive.cmi \ utils/misc.cmi \ lambda/lambda.cmi \ + typing/jkind.cmi \ lambda/debuginfo.cmi \ utils/config.cmi \ middle_end/compilenv.cmi \ @@ -2938,6 +2983,7 @@ asmcomp/cmmgen.cmx : \ typing/primitive.cmx \ utils/misc.cmx \ lambda/lambda.cmx \ + typing/jkind.cmx \ lambda/debuginfo.cmx \ utils/config.cmx \ middle_end/compilenv.cmx \ @@ -3858,6 +3904,7 @@ lambda/matching.cmo : \ parsing/longident.cmi \ parsing/location.cmi \ lambda/lambda.cmi \ + typing/jkind.cmi \ typing/ident.cmi \ typing/env.cmi \ lambda/debuginfo.cmi \ @@ -3880,6 +3927,7 @@ lambda/matching.cmx : \ parsing/longident.cmx \ parsing/location.cmx \ lambda/lambda.cmx \ + typing/jkind.cmx \ typing/ident.cmx \ typing/env.cmx \ lambda/debuginfo.cmx \ @@ -4085,6 +4133,7 @@ lambda/translclass.cmo : \ lambda/matching.cmi \ parsing/location.cmi \ lambda/lambda.cmi \ + typing/jkind.cmi \ typing/ident.cmi \ typing/env.cmi \ lambda/debuginfo.cmi \ @@ -4102,6 +4151,7 @@ lambda/translclass.cmx : \ lambda/matching.cmx \ parsing/location.cmx \ lambda/lambda.cmx \ + typing/jkind.cmx \ typing/ident.cmx \ typing/env.cmx \ lambda/debuginfo.cmx \ @@ -4142,6 +4192,7 @@ lambda/translcore.cmo : \ parsing/longident.cmi \ parsing/location.cmi \ lambda/lambda.cmi \ + typing/jkind.cmi \ typing/ident.cmi \ typing/env.cmi \ lambda/debuginfo.cmi \ @@ -4177,6 +4228,7 @@ lambda/translcore.cmx : \ parsing/longident.cmx \ parsing/location.cmx \ lambda/lambda.cmx \ + typing/jkind.cmx \ typing/ident.cmx \ typing/env.cmx \ lambda/debuginfo.cmx \ @@ -4214,6 +4266,7 @@ lambda/translmod.cmo : \ parsing/longident.cmi \ parsing/location.cmi \ lambda/lambda.cmi \ + typing/jkind.cmi \ typing/ident.cmi \ typing/env.cmi \ lambda/debuginfo.cmi \ @@ -4239,6 +4292,7 @@ lambda/translmod.cmx : \ parsing/longident.cmx \ parsing/location.cmx \ lambda/lambda.cmx \ + typing/jkind.cmx \ typing/ident.cmx \ typing/env.cmx \ lambda/debuginfo.cmx \ @@ -4309,6 +4363,7 @@ lambda/translprim.cmo : \ lambda/matching.cmi \ parsing/location.cmi \ lambda/lambda.cmi \ + typing/jkind.cmi \ typing/ident.cmi \ typing/env.cmi \ lambda/debuginfo.cmi \ @@ -4330,6 +4385,7 @@ lambda/translprim.cmx : \ lambda/matching.cmx \ parsing/location.cmx \ lambda/lambda.cmx \ + typing/jkind.cmx \ typing/ident.cmx \ typing/env.cmx \ lambda/debuginfo.cmx \ @@ -6816,6 +6872,7 @@ toplevel/genprintval.cmo : \ parsing/longident.cmi \ parsing/location.cmi \ parsing/lexer.cmi \ + typing/jkind.cmi \ typing/ident.cmi \ typing/env.cmi \ typing/datarepr.cmi \ @@ -6836,6 +6893,7 @@ toplevel/genprintval.cmx : \ parsing/longident.cmx \ parsing/location.cmx \ parsing/lexer.cmx \ + typing/jkind.cmx \ typing/ident.cmx \ typing/env.cmx \ typing/datarepr.cmx \ @@ -6932,6 +6990,7 @@ toplevel/topdirs.cmo : \ parsing/longident.cmi \ parsing/location.cmi \ utils/load_path.cmi \ + typing/jkind.cmi \ typing/ident.cmi \ typing/env.cmi \ bytecomp/dll.cmi \ @@ -6957,6 +7016,7 @@ toplevel/topdirs.cmx : \ parsing/longident.cmx \ parsing/location.cmx \ utils/load_path.cmx \ + typing/jkind.cmx \ typing/ident.cmx \ typing/env.cmx \ bytecomp/dll.cmx \ diff --git a/ocaml/asmcomp/cmmgen.ml b/ocaml/asmcomp/cmmgen.ml index 9399f665a5e..1d20b8db7f8 100644 --- a/ocaml/asmcomp/cmmgen.ml +++ b/ocaml/asmcomp/cmmgen.ml @@ -340,13 +340,13 @@ let join_unboxed_number_kind ~strict k1 k2 = (* [exttype_of_sort] and [machtype_of_sort] should be kept in sync with [Typeopt.layout_of_const_sort]. *) (* CR layouts v5: Void case should probably be typ_void *) -let exttype_of_sort (s : Layouts.Sort.const) = +let exttype_of_sort (s : Jkind.Sort.const) = match s with | Value -> XInt | Float64 -> XFloat | Void -> Misc.fatal_error "Cmmgen.exttype_of_sort: void encountered" -let machtype_of_sort (s : Layouts.Sort.const) = +let machtype_of_sort (s : Jkind.Sort.const) = match s with | Value -> typ_val | Float64 -> typ_float diff --git a/ocaml/boot/menhir/parser.ml b/ocaml/boot/menhir/parser.ml index c410692143a..a41a1d2fe5e 100644 --- a/ocaml/boot/menhir/parser.ml +++ b/ocaml/boot/menhir/parser.ml @@ -844,12 +844,12 @@ let pat_of_label lbl = Pat.mk ~loc:lbl.loc (Ppat_var (loc_last lbl)) let mk_newtypes ~loc newtypes exp = - let mk_one (name, layout) exp = - match layout with + let mk_one (name, jkind) exp = + match jkind with | None -> mkexp ~loc (Pexp_newtype (name, exp)) - | Some layout -> + | Some jkind -> Jane_syntax.Layouts.expr_of ~loc:(make_loc loc) - (Lexp_newtype (name, layout, exp)) + (Lexp_newtype (name, jkind, exp)) in List.fold_right mk_one newtypes exp @@ -1042,7 +1042,7 @@ let all_params_as_newtypes = in let as_newtype { pparam_desc; _ } = match pparam_desc with - | Pparam_newtype (x, layout) -> Some (x, layout) + | Pparam_newtype (x, jkind) -> Some (x, jkind) | Pparam_val _ -> None in fun params -> @@ -1134,7 +1134,7 @@ let mk_directive ~loc name arg = pdir_loc = make_loc loc; } -let check_layout ~loc id : const_layout = +let check_jkind ~loc id : const_jkind = match id with | "any" -> Any | "value" -> Value @@ -1772,7 +1772,7 @@ module Tables = struct Obj.repr () and default_reduction = - (16, "\000\000\000\000\000\000\003\161\003\160\003\159\003\158\003\157\003o\003\156\003\155\003\154\003\153\003\152\003\151\003\150\003\149\003\148\003\147\003\146\003\145\003\144\003\143\003\142\003\141\003\140\003\139\003\138\003\137\003n\003\136\003\135\003\134\003\133\003\132\003\131\003\130\003\129\003\128\003\127\003~\003}\003|\003{\003z\003y\003x\003w\003v\003u\003t\003s\003r\003q\003p\000\000\000\000\0003\000\147\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\017\002\014\001\249\002\011\002\n\002\t\002\015\002\019\000\000\004\018\002\r\002\012\001\250\002\017\002\b\002\007\002\006\002\005\002\004\002\002\002\018\002\016\000\000\000\000\000\000\001\030\000\000\000\000\001\253\000\000\000\000\000\000\001\255\000\000\000\000\000\000\002\001\002\023\002\020\002\003\001\251\002\021\002\022\000\000\004\016\004\015\004\019\000\000\000\000\000\000\000\000\000\000\001\224\001\226\001\225\000\028\001\152\000\149\000\000\001\024\001\025\000\000\000\000\000\000\0022\0021\000\000\000\000\000\000\000\000\0001\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\004\n\000\000\004\005\000\000\000\000\004\007\000\000\004\t\000\000\004\006\004\b\000\000\000\000\000\000\000\000\002G\000\000\001h\000\000\000\000\000\000\000\000\002F\002E\000\000\004\000\000\000\002\179\002\178\000\000\000\000\003\253\000\000\000\000\003\252\000\000\000\000\000\000\001B\001C\000\000\000\000\000\000\000~\000\000\000\027\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\251\001\164\000\000\000\000\000\000\004\029\000\000\000\000\000\000\000\000\000\000\003[\000\000\002\245\002\240\002\241\002\246\000\000\002\243\002\238\002\239\002\244\000\000\000\000\000\000\000\000\000\000\001\187\001\186\000\000\003Y\000\000\000\000\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\149\000\000\000\000\000\000\000\000\001!\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\001\162\000\000\000\000\001\165\001\163\001\171\000K\003\025\003\221\003\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{\000\000\001*\000\000\002\248\002\247\000\000\000\000\000\000\002\027\000\000\000\000\000,\000\000\000\000\000\000\001\150\000\000\000\000\001\170\000\000\001\169\000\000\001\153\001\168\000\000\001\151\000l\000%\000\000\000\000\001\215\000\000\000\029\000\000\000\000\000\000\003\175\000\000\000\000\003\251\000/\000\000\000\000\000&\000\000\000\030\000\000\000\000\001\t\000\000\000\000\000\000\000'\000\000\000\031\000\000\000\000\000\000\000\000\000\000\002\163\000\000\000\000\000\000\000\000\000\000\002\164\000\000\000\018\000\000\000\000\000\000\000\000\003\176\000\000\000\000\000\000\000\000\003\177\000\000\000\000\000\000\000\000\000\000\000\143\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\003\166\000\000\000\000\000\000\000\000\000\000\003\167\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\168\000\000\000\000\000\000\000\000\000\000\003\169\000\000\000\000\000\000\000\000\002\196\002\174\000\000\000)\000\000\002\175\000\000\000\000\002\024\000\000\000\000\000\000\000\000\003\222\000\000\003\223\000\000\000\000\000(\000\000\000\000\000\000\000*\000\000\000+\000\000\000-\000\000\000\000\000.\002\160\002\159\000\000\000\000\000\000\000\000\000\000\000\000\004\027\000\000\003`\004\011\004\012\000\000\003_\004\030\000}\004\028\002\242\003U\004\020\002\237\003V\002g\003X\000\000\000\000\000\000\000\000\003\\\003m\003^\000\000\000\000\000\000\003f\003c\000\000\000\000\000\000\002c\002U\000\000\000\000\000\000\000\000\002Y\000\000\002T\000\000\002f\003l\000\000\000\000\000\000\000\000\001\220\000\000\000\000\002e\003]\000\133\000\000\000\000\000\132\000\000\003g\003W\000\000\002_\000\000\000\000\003j\000\000\003i\003h\000\000\002[\000\000\000\000\002W\002V\002d\002\\\000\000\000\131\000\000\003e\003d\000\000\003b\000\000\002\250\002\249\000\000\000\000\002\209\003a\000\000\000\000\000\000\000\000\002\029\001\131\001\132\002\253\000\000\002\252\002\251\003\000\000\000\002\255\002\254\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0018\000\000\0017\0019\000\000\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\n\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\197\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\003\255\000\000\000\000\000\000\000\000\000\000\001\196\000\000\000\000\000\000\001\161\001\204\001\160\001\200\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\172\000\000\000\000\002\173\000\000\002\156\002\155\000\000\001\195\001\194\000\000\001\011\000\000\000\000\001\180\000\000\000\000\001\184\000\000\0026\0025\000\000\000\000\0024\0023\001\183\001\181\000\000\001\185\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000y\003\031\001\166\000z\003#\003!\000\000\000\000\000\000\003/\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003G\000\000\003F\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002r\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0015\000\000\000\000\0014\002q\0016\000\000\000\000\000\000\000\000\000\000\000\000\001\217\000\000\000\000\000\000\001\001\001\218\000\000\001\000\000\000\001\216\001\228\000\000\000\000\000\000\000\000\000\000\001@\000\000\000\000\001=\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001>\000\000\000\000\001;\000\000\000\000\002\161\000\000\000\000\000\000\000\000\000\000\002\162\000\000\000\000\000\000\001?\001:\001<\000\000\001\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\002\167\002\165\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\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\176\000\000\000\000\000\000\000\000\000\000\003\248\000\000\000\000\003\247\000\000\000\000\000\000\000\000\001.\001-\000\000\001/\000\000\000\000\000\000\003+\000\000\000\000\000\000\003\r\003\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\021\003.\003 \003N\000\000\000\000\000\224\002\213\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\250\000\000\000\000\000\000\000\000\000\000\000\000\000\178\000\177\000\000\000\000\000\000\001\007\001\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\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\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\164\000\000\000\000\000\000\000\000\000\000\000\000\001K\000\000\000\000\000\000\000\000\001I\000\000\000\000\001G\001F\000\000\0020\000\000\000\000\000\156\003\165\002\151\000\000\000\000\000\000\000\000\001M\000\000\000\000\001L\000\000\002b\000\000\000\000\002n\000\000\000\000\002p\000\000\000\000\002l\002k\002i\002j\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\001H\001N\001D\000\000\000\000\001n\000\022\001P\000\000\000\000\000\000\003\015\003\006\000\000\000\000\003\014\003\005\000\000\000\000\000\000\000\000\003\017\003\b\000\000\000\000\002\202\000\000\000\000\003\021\003\012\000\000\000\000\003\019\003\n\003'\000\000\000\000\000\000\000\000\000\000\003\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\020\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\018\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\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\158\002\157\000\175\002\203\000\000\003\007\000\000\000\000\003\011\000\000\000\000\003\t\000\255\000\000\000\144\000\145\000\000\000\000\000\000\000\000\000\172\000\000\000\179\000\000\000\000\001\134\000\000\001\135\001\133\002\166\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001Y\000\000\000\000\001Z\000\000\000\000\000\225\000\000\001\\\001[\000\000\000\000\0030\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\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\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\002\171\002\170\000\000\003B\002\154\002\153\003L\000\000\003M\003K\000\000\000\000\003A\000\000\000\000\000\000\000\000\000\000\000\000\003@\0039\000\000\003:\0038\000\000\000\000\003?\000\000\003D\000\000\000\000\000\000\000\000\000\000\003>\000\000\003E\003C\000\000\000\000\003=\000\000\000\000\003*\003)\000\000\000\000\000\000\002\136\000\000\000\000\000\000\000\000\002\212\002\135\000\000\0034\0033\000\000\000\000\000\000\001\167\000\000\003\023\000\000\003\024\003\022\000\000\0032\0031\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\206\003&\000\000\003%\003$\000\000\000\000\000\000\000\000\000\000\003P\000\000\003<\003;\000\000\000\000\003O\000\000\000\000\000\000\000\000\000\000\003R\0037\000\000\0036\0035\000\000\000\000\003Q\000\161\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\000\000\000\000\000\000\000\000\000\000\158\000\000\001\174\000\000\000\000\000\000\000\127\000\000\000\000\000\128\000\000\000\000\000\000\000\000\001\208\001\209\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001#\000\000\000\000\000\139\000\000\001&\001$\000\000\000\000\000\000\000\000\000\000\000\000\000\000\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\000\000\000\000\000\000\000\000\000\000\159\000\129\000\000\000\000\002\134\000\000\000\000\001O\002.\000\000\0012\000\000\000\000\0011\0013\001W\000\000\000\000\000\000\000\000\000\000\000\252\000\000\000\000\000\000\000\000\000\000\003T\003J\000\000\003I\003H\000\000\000\000\003S\003\"\000\000\000\000\000\000\000\000\003\026\000\000\003\028\000\000\003\027\000\000\003\002\003\001\000\000\003\003\000\000\000\000\000\000\000\254\000\000\000\000\000\000\000\000\002D\0028\000\000\002B\000\000\002>\000\000\002@\000\000\002:\000\000\000\000\002<\000\000\002C\0027\000\000\002A\000\000\002=\000\000\002?\000\000\0029\000\000\000\000\002;\000\000\001\246\000\000\000\000\000\000\001\245\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\202\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001d\003\214\000\000\000\000\003\213\000\000\000\000\000\000\000\000\000\000\002w\000\000\000\000\000\000\001\028\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\230\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\003\163\000\000\000\000\002\215\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\248\000\000\000\000\000\000\001\247\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\203\000\000\000\000\000\000\000\000\001\189\000\000\001\188\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001f\002\229\000\000\000\000\000\000\002\227\000\000\000\000\000\000\002\226\000\000\001\176\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004!\000\000\000\000\002\180\000\000\000\154\000\000\002\181\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000O\000\000\000\000\000\000\000\000\001\214\000\000\001\213\000\000\000\000\000\000\000\000\000R\000\000\000\000\000\000\002\132\000\000\002\131\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\001w\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001b\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\001`\002\233\002\219\000\000\002\225\002\220\002\232\002\231\002\230\002\228\001q\000\000\002\217\000\000\000\000\000\000\000\000\002\235\000\000\000\000\000\000\000\000\000\000\000\000\002\149\000\000\000\000\001j\002\031\002\221\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\241\001\237\000\000\000\000\000\000\001\018\000\000\000\000\002\139\002\149\000\000\000\000\001l\002\137\002\138\000\000\000\000\000\000\000\000\000\000\001\244\001\240\001\236\000\000\000\000\001\019\000\000\000\000\001\243\001\239\001\235\001\233\002\222\002\218\002\234\001p\002t\002\216\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\206\000\000\000\000\000\000\004\024\000\000\000\000\004\026\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\004\023\000\000\000\000\004\025\000\000\000\000\000\000\002\127\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\149\000\000\000\000\001\147\001\145\000\000\000A\000\000\000\000\004'\000\000\004&\000\000\000\000\000\000\001\143\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\148\000\000\000\000\001\146\001\144\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\001R\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;\001S\000\000\000J\0007\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001Q\000\000\000`\000_\000\000\000\000\000e\000d\000\000\000\000\002!\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\001y\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\001^\003\217\003\208\000\000\000\000\003\212\003\162\003\207\003\216\003\215\001u\000\000\000\000\003\205\000\000\000\000\000\000\000\000\003\219\000\000\003\209\003\206\003\218\002s\000\000\000\000\003\203\0004\003\202\000\000\000\000\000\152\000\000\001 \000\000\000\000\001t\001s\000\000\002|\001\023\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\150\000\000\003\211\002\144\002\145\002\140\002\142\002\141\002\143\000\000\000\000\000\000\000\151\000\000\000\000\000\000\002\149\000\000\001\022\000\000\000\000\000\000\000\000\003\210\000\000\001\178\001\177\000\000\000\000\003k\003Z\000\000\000L\000\000\000\000\000M\000\000\000\000\003\030\003\029\000\000\000\000\000\164\000\000\000\253\000\000\000\148\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\001\142\001\136\000\000\000\000\001\137\000$\000\000\000#\000\000\000\000\000\000\000\000\000\000\000\000\003\170\000\000\000\000\000\000\000\000\000\000\003\171\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\172\000\000\000\000\000\000\000\000\000\000\003\173\000\000\000\000\000\000\000\000\001\242\001\238\000\000\001\234\003\250\000\000\002\149\000\000\001\021\000\000\000\000\000\000\000\000\002\224\002\148\002\146\002\147\000\000\000\000\000\000\000\000\002\149\000\000\001\020\000\000\000\000\000\000\000\000\002\223\000\000\001\191\001\190\000\000\000\026\000\000\004\031\000\000\0005\000\000\000\000\000\000\000\000\000\171\000\000\001\026\000\001\000\000\000\000\001\031\000\002\000\000\000\000\000\000\001\155\001\156\000\003\000\000\000\000\000\000\000\000\001\158\001\159\001\157\000\023\001\154\000\024\000\000\002H\000\000\000\004\000\000\002I\000\000\000\005\000\000\002J\000\000\000\000\002K\000\006\000\000\000\007\000\000\002L\000\000\000\b\000\000\002M\000\000\000\t\000\000\002N\000\000\000\n\000\000\002O\000\000\000\011\000\000\002P\000\000\000\000\002Q\000\012\000\000\000\000\002R\000\r\000\000\000\000\000\000\000\000\000\000\003\237\003\232\003\233\003\236\003\234\000\000\000\000\000\000\003\230\003\225\003\226\003\229\003\227\000\000\003\241\000\014\000\000\003\240\000\000\001{\000\000\000\000\003\238\000\000\003\239\000\000\000\000\000\000\000\000\001\127\001\128\000\000\000\000\001~\001}\000\015\000\000\000\000\000\000\004\014\000\000\004\r") + (16, "\000\000\000\000\000\000\003\161\003\160\003\159\003\158\003\157\003o\003\156\003\155\003\154\003\153\003\152\003\151\003\150\003\149\003\148\003\147\003\146\003\145\003\144\003\143\003\142\003\141\003\140\003\139\003\138\003\137\003n\003\136\003\135\003\134\003\133\003\132\003\131\003\130\003\129\003\128\003\127\003~\003}\003|\003{\003z\003y\003x\003w\003v\003u\003t\003s\003r\003q\003p\000\000\000\000\0003\000\147\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\017\002\014\001\249\002\011\002\n\002\t\002\015\002\019\000\000\004\018\002\r\002\012\001\250\002\017\002\b\002\007\002\006\002\005\002\004\002\002\002\018\002\016\000\000\000\000\000\000\001\030\000\000\000\000\001\253\000\000\000\000\000\000\001\255\000\000\000\000\000\000\002\001\002\023\002\020\002\003\001\251\002\021\002\022\000\000\004\016\004\015\004\019\000\000\000\000\000\000\000\000\000\000\001\224\001\226\001\225\000\028\001\152\000\149\000\000\001\024\001\025\000\000\000\000\000\000\0022\0021\000\000\000\000\000\000\000\000\0001\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\004\n\000\000\004\005\000\000\000\000\004\007\000\000\004\t\000\000\004\006\004\b\000\000\000\000\000\000\000\000\002G\000\000\001h\000\000\000\000\000\000\000\000\002F\002E\000\000\004\000\000\000\002\179\002\178\000\000\000\000\003\253\000\000\000\000\003\252\000\000\000\000\000\000\001#\001$\000\000\000\000\000\000\000~\000\000\000\027\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\251\001\164\000\000\000\000\000\000\004\029\000\000\000\000\000\000\000\000\000\000\003[\000\000\002\245\002\240\002\241\002\246\000\000\002\243\002\238\002\239\002\244\000\000\000\000\000\000\000\000\000\000\001\187\001\186\000\000\003Y\000\000\000\000\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\149\000\000\000\000\000\000\000\000\001!\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\001\162\000\000\000\000\001\165\001\163\001\171\000K\003\025\003\221\003\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{\000\000\001-\000\000\002\248\002\247\000\000\000\000\000\000\002\027\000\000\000\000\000,\000\000\000\000\000\000\001\150\000\000\000\000\001\170\000\000\001\169\000\000\001\153\001\168\000\000\001\151\000l\000%\000\000\000\000\001\215\000\000\000\029\000\000\000\000\000\000\003\175\000\000\000\000\003\251\000/\000\000\000\000\000&\000\000\000\030\000\000\000\000\001\t\000\000\000\000\000\000\000'\000\000\000\031\000\000\000\000\000\000\000\000\000\000\002\163\000\000\000\000\000\000\000\000\000\000\002\164\000\000\000\018\000\000\000\000\000\000\000\000\003\176\000\000\000\000\000\000\000\000\003\177\000\000\000\000\000\000\000\000\000\000\000\143\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\003\166\000\000\000\000\000\000\000\000\000\000\003\167\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\168\000\000\000\000\000\000\000\000\000\000\003\169\000\000\000\000\000\000\000\000\002\196\002\174\000\000\000)\000\000\002\175\000\000\000\000\002\024\000\000\000\000\000\000\000\000\003\222\000\000\003\223\000\000\000\000\000(\000\000\000\000\000\000\000*\000\000\000+\000\000\000-\000\000\000\000\000.\002\160\002\159\000\000\000\000\000\000\000\000\000\000\000\000\004\027\000\000\003`\004\011\004\012\000\000\003_\004\030\000}\004\028\002\242\003U\004\020\002\237\003V\002g\003X\000\000\000\000\000\000\000\000\003\\\003m\003^\000\000\000\000\000\000\003f\003c\000\000\000\000\000\000\002c\002U\000\000\000\000\000\000\000\000\002Y\000\000\002T\000\000\002f\003l\000\000\000\000\000\000\000\000\001\220\000\000\000\000\002e\003]\000\133\000\000\000\000\000\132\000\000\003g\003W\000\000\002_\000\000\000\000\003j\000\000\003i\003h\000\000\002[\000\000\000\000\002W\002V\002d\002\\\000\000\000\131\000\000\003e\003d\000\000\003b\000\000\002\250\002\249\000\000\000\000\002\209\003a\000\000\000\000\000\000\000\000\002\029\001\131\001\132\002\253\000\000\002\252\002\251\003\000\000\000\002\255\002\254\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:\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\001\n\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\197\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\003\255\000\000\000\000\000\000\000\000\000\000\001\196\000\000\000\000\000\000\001\161\001\204\001\160\001\200\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\172\000\000\000\000\002\173\000\000\002\156\002\155\000\000\001\195\001\194\000\000\001\011\000\000\000\000\001\180\000\000\000\000\001\184\000\000\0026\0025\000\000\000\000\0024\0023\001\183\001\181\000\000\001\185\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000y\003\031\001\166\000z\003#\003!\000\000\000\000\000\000\003/\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003G\000\000\003F\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002r\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0018\000\000\000\000\0017\002q\0019\000\000\000\000\000\000\000\000\000\000\000\000\001\217\000\000\000\000\000\000\001\001\001\218\000\000\001\000\000\000\001\216\001\228\000\000\000\000\000\000\000\000\000\000\001C\000\000\000\000\001@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001A\000\000\000\000\001>\000\000\000\000\002\161\000\000\000\000\000\000\000\000\000\000\002\162\000\000\000\000\000\000\001B\001=\001?\000\000\001\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\002\167\002\165\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\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\176\000\000\000\000\000\000\000\000\000\000\003\248\000\000\000\000\003\247\000\000\000\000\000\000\000\000\0011\0010\000\000\0012\000\000\000\000\000\000\003+\000\000\000\000\000\000\003\r\003\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\021\003.\003 \003N\000\000\000\000\000\224\002\213\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\250\000\000\000\000\000\000\000\000\000\000\000\000\000\178\000\177\000\000\000\000\000\000\001\007\001\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\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\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\164\000\000\000\000\000\000\000\000\000\000\000\000\001K\000\000\000\000\000\000\000\000\001I\000\000\000\000\001G\001F\000\000\0020\000\000\000\000\000\156\003\165\002\151\000\000\000\000\000\000\000\000\001M\000\000\000\000\001L\000\000\002b\000\000\000\000\002n\000\000\000\000\002p\000\000\000\000\002l\002k\002i\002j\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\001H\001N\001D\000\000\000\000\001n\000\022\001P\000\000\000\000\000\000\003\015\003\006\000\000\000\000\003\014\003\005\000\000\000\000\000\000\000\000\003\017\003\b\000\000\000\000\002\202\000\000\000\000\003\021\003\012\000\000\000\000\003\019\003\n\003'\000\000\000\000\000\000\000\000\000\000\003\016\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\020\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\018\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\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\158\002\157\000\175\002\203\000\000\003\007\000\000\000\000\003\011\000\000\000\000\003\t\000\255\000\000\000\144\000\145\000\000\000\000\000\000\000\000\000\172\000\000\000\179\000\000\000\000\001\134\000\000\001\135\001\133\002\166\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001Y\000\000\000\000\001Z\000\000\000\000\000\225\000\000\001\\\001[\000\000\000\000\0030\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\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\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\002\171\002\170\000\000\003B\002\154\002\153\003L\000\000\003M\003K\000\000\000\000\003A\000\000\000\000\000\000\000\000\000\000\000\000\003@\0039\000\000\003:\0038\000\000\000\000\003?\000\000\003D\000\000\000\000\000\000\000\000\000\000\003>\000\000\003E\003C\000\000\000\000\003=\000\000\000\000\003*\003)\000\000\000\000\000\000\002\136\000\000\000\000\000\000\000\000\002\212\002\135\000\000\0034\0033\000\000\000\000\000\000\001\167\000\000\003\023\000\000\003\024\003\022\000\000\0032\0031\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\206\003&\000\000\003%\003$\000\000\000\000\000\000\000\000\000\000\003P\000\000\003<\003;\000\000\000\000\003O\000\000\000\000\000\000\000\000\000\000\003R\0037\000\000\0036\0035\000\000\000\000\003Q\000\161\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\000\000\000\000\000\000\000\000\000\000\158\000\000\001\174\000\000\000\000\000\000\000\127\000\000\000\000\000\128\000\000\000\000\000\000\000\000\001\208\001\209\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001&\000\000\000\000\000\139\000\000\001)\001'\000\000\000\000\000\000\000\000\000\000\000\000\000\000\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\000\000\000\000\000\000\000\000\000\000\159\000\129\000\000\000\000\002\134\000\000\000\000\001O\002.\000\000\0015\000\000\000\000\0014\0016\001W\000\000\000\000\000\000\000\000\000\000\000\252\000\000\000\000\000\000\000\000\000\000\003T\003J\000\000\003I\003H\000\000\000\000\003S\003\"\000\000\000\000\000\000\000\000\003\026\000\000\003\028\000\000\003\027\000\000\003\002\003\001\000\000\003\003\000\000\000\000\000\000\000\254\000\000\000\000\000\000\000\000\002D\0028\000\000\002B\000\000\002>\000\000\002@\000\000\002:\000\000\000\000\002<\000\000\002C\0027\000\000\002A\000\000\002=\000\000\002?\000\000\0029\000\000\000\000\002;\000\000\001\246\000\000\000\000\000\000\001\245\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\202\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001d\003\214\000\000\000\000\003\213\000\000\000\000\000\000\000\000\000\000\002w\000\000\000\000\000\000\001\028\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\230\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\003\163\000\000\000\000\002\215\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\248\000\000\000\000\000\000\001\247\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\203\000\000\000\000\000\000\000\000\001\189\000\000\001\188\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001f\002\229\000\000\000\000\000\000\002\227\000\000\000\000\000\000\002\226\000\000\001\176\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004!\000\000\000\000\002\180\000\000\000\154\000\000\002\181\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000O\000\000\000\000\000\000\000\000\001\214\000\000\001\213\000\000\000\000\000\000\000\000\000R\000\000\000\000\000\000\002\132\000\000\002\131\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\001w\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001b\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\001`\002\233\002\219\000\000\002\225\002\220\002\232\002\231\002\230\002\228\001q\000\000\002\217\000\000\000\000\000\000\000\000\002\235\000\000\000\000\000\000\000\000\000\000\000\000\002\149\000\000\000\000\001j\002\031\002\221\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\241\001\237\000\000\000\000\000\000\001\018\000\000\000\000\002\139\002\149\000\000\000\000\001l\002\137\002\138\000\000\000\000\000\000\000\000\000\000\001\244\001\240\001\236\000\000\000\000\001\019\000\000\000\000\001\243\001\239\001\235\001\233\002\222\002\218\002\234\001p\002t\002\216\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\206\000\000\000\000\000\000\004\024\000\000\000\000\004\026\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\004\023\000\000\000\000\004\025\000\000\000\000\000\000\002\127\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\149\000\000\000\000\001\147\001\145\000\000\000A\000\000\000\000\004'\000\000\004&\000\000\000\000\000\000\001\143\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\148\000\000\000\000\001\146\001\144\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\001R\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;\001S\000\000\000J\0007\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001Q\000\000\000`\000_\000\000\000\000\000e\000d\000\000\000\000\002!\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\001y\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\001^\003\217\003\208\000\000\000\000\003\212\003\162\003\207\003\216\003\215\001u\000\000\000\000\003\205\000\000\000\000\000\000\000\000\003\219\000\000\003\209\003\206\003\218\002s\000\000\000\000\003\203\0004\003\202\000\000\000\000\000\152\000\000\001 \000\000\000\000\001t\001s\000\000\002|\001\023\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\150\000\000\003\211\002\144\002\145\002\140\002\142\002\141\002\143\000\000\000\000\000\000\000\151\000\000\000\000\000\000\002\149\000\000\001\022\000\000\000\000\000\000\000\000\003\210\000\000\001\178\001\177\000\000\000\000\003k\003Z\000\000\000L\000\000\000\000\000M\000\000\000\000\003\030\003\029\000\000\000\000\000\164\000\000\000\253\000\000\000\148\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\001\142\001\136\000\000\000\000\001\137\000$\000\000\000#\000\000\000\000\000\000\000\000\000\000\000\000\003\170\000\000\000\000\000\000\000\000\000\000\003\171\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\172\000\000\000\000\000\000\000\000\000\000\003\173\000\000\000\000\000\000\000\000\001\242\001\238\000\000\001\234\003\250\000\000\002\149\000\000\001\021\000\000\000\000\000\000\000\000\002\224\002\148\002\146\002\147\000\000\000\000\000\000\000\000\002\149\000\000\001\020\000\000\000\000\000\000\000\000\002\223\000\000\001\191\001\190\000\000\000\026\000\000\004\031\000\000\0005\000\000\000\000\000\000\000\000\000\171\000\000\001\026\000\001\000\000\000\000\001\031\000\002\000\000\000\000\000\000\001\155\001\156\000\003\000\000\000\000\000\000\000\000\001\158\001\159\001\157\000\023\001\154\000\024\000\000\002H\000\000\000\004\000\000\002I\000\000\000\005\000\000\002J\000\000\000\000\002K\000\006\000\000\000\007\000\000\002L\000\000\000\b\000\000\002M\000\000\000\t\000\000\002N\000\000\000\n\000\000\002O\000\000\000\011\000\000\002P\000\000\000\000\002Q\000\012\000\000\000\000\002R\000\r\000\000\000\000\000\000\000\000\000\000\003\237\003\232\003\233\003\236\003\234\000\000\000\000\000\000\003\230\003\225\003\226\003\229\003\227\000\000\003\241\000\014\000\000\003\240\000\000\001{\000\000\000\000\003\238\000\000\003\239\000\000\000\000\000\000\000\000\001\127\001\128\000\000\000\000\001~\001}\000\015\000\000\000\000\000\000\004\014\000\000\004\r") and error = (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\003\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\196@\021@\004\012\"A\192\001\"\000[\b\b\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\0000\000\001\000\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\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\000\000\000\000\000\004 \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\0001\016\005P\001\003\b\144p\000h\128\022\192\002`\004\004\129\004 \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\b\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\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\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\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\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\000\000\000\000\000\000\000\128\001\000\002\000\000\000\000\000\000\002;\b\002,*7\226c\208\005\128\250\000\000\0068\b\236 \b\176\168\223\137\143@\022\003\232\000\000\028\224#\176\129\"\194\163~&=\000X\015\160\000\000c\128\000\000\000\000\000\000 \000\000\000\002\000\000\000\000\000\b\000\000\128\000\000\000\000\000\000\000\b\000\128\000\000\000\b\236 \b\176\168\223\137\143@\022\003\232\000\000\024\224\000\144\128\"\000\160(&9\000\024\001\128\000\000c\003\000\000\"\000\000\000\000\000\000\000\152\000 \160$\000\002;\b\002.*7\226g\208\005\128\250\016\000\0068\b\236 \b\176\168\223\137\159@\022\003\232@\000\024\224#\176\128\"\194\163~&=\000X\015\161\000\000c\128\002B\000\136\130\128\160\153\228\000`\006\000\000\001\140\000\t\b\002 \n\002\130g\144\001\128\024\000\000\0060\000$ \b\128(\n\t\142@\006\000`\000\000\024\192\000\144\128\"\000\160(&9\000\024\001\128\000\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\00057\183z\255+\234\185\254\255\239\176\246\251o\255\223\000\128\000\000\000\000(\0068\000\000\000\000\000\000\000\002\142\195\016\143\202\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(\236!\b\176\168\223\137\143@\022\003\232\000\000\024\224\163\176\132\"\194\163~&=\000X\015\160\000\000c\130\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\001\000\002\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\001\000\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\002\142\194\016\139\n\141\248\152\244\001`>\128\000\001\142\n;\bB,*7\226c\208\005\128\250\000\000\0068 d!\b\016\000J\t\139@\014\128`\000\000\016@\000\000\000\000\000\000\000\000@\000\000\000\b\000#\004@\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#\176\128\"\226\163~&}\000X\015\160\000\000c\128\142\194\000\139\n\141\248\153\244\001`>\128\000\001\142\002;\b\002,*7\226c\208\005\128\250\000\000\0068\000d \b\024\000J\t\155@\014\128d\000\000\017@\001\144\128 @\001(&m\000:\001\144\000\000E\000\006B\000\129\000\004\160\152\180\000\232\006@\000\001\020\000\025\b\002\004\000\018\130b\208\003\160\025\000\000\004\016\004\000\000\000\000\001\000\000\016\000\000\000\000\000\b\129\016#\176\128\"\194\163~&=\000X\015\160\000\000c\128\006R\000\161\160\004\160\153\172\000\232\006\000\000\001\004\000\025H\002\132\128\018\130f\176\003\160\024\000\000\004\016\000e \n\018\000J\t\138\192\014\128`\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\0009\b\002\004 \019\130b\208\003\160\025\000\000\004\016\000\000\001\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\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\001\000\000\000\000\000\016\000\000\000\002\000\000\000\000\000\000\004\000\000\000\000\000@\000\000\000\b\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\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\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\b=\012B? \179\202b\211\227\228\025\130\000d\178\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\004\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\000\000\000\000\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\160\000\000\000\000\000\000\000\004\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\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\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\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\131\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\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\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\001\144\128 @\001(&)\000:\001\128\000\000A\002\014C\016\143\200,\242\152\180\248\249\006`\128\025,\184\000\000@\000\000\000\000\004\000\000\000\000\000\0020D \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\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\144\128 @\001(&-\000:\001\144\000\000A\000\000\000\016\000\000\000\000\001\000\000\000\000\000\000\140\017\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\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\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\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\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\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\128R\130b\176\003\160\024\128\000\148\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\016\000\000\000\000\000\000\000\000\004\000\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\000\000\000\000\000\004\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\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\003Q)w\007\208>\011\007\003\254\139\to\022\254p\242;\b\002,*7\226c\208\005\128\250\000\000\0068\000d \b\024\000J\t\155@\014\128d\000\000\017@\001\144\128 @\001(&m\000:\001\144\000\000E\000\006B\000\129\000\004\160\152\180\000\232\006@\000\001\020\rD\165\220\031@\248,\028\015\250,%\188[\249\195\192d \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\000\000\000\000\000\000\000\000\000\025\b\002\006\000\018\130f\208\003\160\025\000\000\004\016\000d \b\016\000J\t\155@\014\128d\000\000\016@\001\144\128 @\001(&-\000:\001\144\000\000A\000\000\000\000\000\000\000\000\001\000\000\000\000 \000\136\017\002;\b\002,*7\226c\208\005\128\250\000\000\0068\b\236 \b\176\168\223\137\143@\022\003\232\000\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\00605\018\151p}\003\224\176p?\233\176\150\251o\231\015\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\t\b\002 \n\002\130c\144\001\128\024\000\000\006057\183z\255+\234\185\254\255\239\176\246\251o\255\223\000\000\000\000\000\000 \000(\000\000\000\000\000\000\000\000\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\002\000\0006\000\000\000\000\000\000\000\000\000\000\000\192P\n;\bZ,*7\226c\208\005\128\250\000\001\0078\b\236 \b\176\168\223\137\143@\022\003\232\000\000\024\224\001\144\128 `\001(&m\000:\001\144\000\000E\000\006B\000\129\000\004\160\153\180\000\232\006@\000\001\020\000\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\212\222\221\235\252\175\170\231\251\255\190\195\219\237\191\255<\000\000\000\000\000\000\160\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\002@\000\131\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\b\000\000\200\000\000\000\000\004\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\000\000\000\000\000\002\000\0002\000\000\000\000\001\000\000\000\000 \000 \000\0008\000\003\128\160\003\139\130\000\000 \000\000\000\000\000 \000\003 \000\000\000\000\016\000\000\000\002\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\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\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\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\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\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\001\144\128 `\001(&m\000:\001\144\000\000E\000\006B\000\129\000\004\160\153\180\000\232\006@\000\001\020\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\212\222\221\235\252\175\170\231\251\255\190\195\219\237\191\255?Q)w\007\208>\011\007\003\254\155\to\182\254p\240\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\000\000\000\000\000\001\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\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\001\144\128 `\001(&m\000:\001\144\000\000E\000\006B\000\129\000\004\160\153\180\000\232\006@\000\001\020\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\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\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\003Q)w\007\208>\011\007\003\254\139\to\022\254p\253D\165\220\031@\248,\028\015\250,%\188[\249\195\192\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\212\222\221\235\252\175\170\231\251\255\190\195\219\237\191\255?Q)w\007\208>\011\007\003\254\155\to\182\254p\242;\b\002,*7\226c\208\005\128\250\000\000\0068\000d \b\024\000J\t\155@\014\128d\000\000\017@\001\144\128 @\001(&m\000:\001\144\000\000E\000\006B\000\129\000\004\160\152\180\000\232\006@\000\001\020\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\247\250\221\227\246\175\254\231\253\255\250\207\251\197\191\255\189\243\236\136\016W\227h\000\019\007\000{G\022\002\131B;\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\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\003Q)w\007\208>\011\007\003\254\139\to\022\254p\253D\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\001\144\128 `\001(&m\000:\001\144\000\000E\000\006B\000\129\000\004\160\153\180\000\232\006@\000\001\020\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\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\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\003Q)w\007\208>\011\007\003\254\139\to\022\254p\253D\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\001\144\128 `\001(&m\000:\001\144\000\000E\000\006B\000\129\000\004\160\153\180\000\232\006@\000\001\020\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\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\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\003Q)w\007\208>\011\007\003\254\139\to\022\254p\253D\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\001\144\128 `\001(&m\000:\001\144\000\000E\000\006B\000\129\000\004\160\153\180\000\232\006@\000\001\020\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\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\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\003Q)w\007\208>\011\007\003\254\139\to\022\254p\253D\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\001\144\128 `\001(&m\000:\001\144\000\000E\000\006B\000\129\000\004\160\153\180\000\232\006@\000\001\020\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\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\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\003Q)w\007\208>\011\007\003\254\139\to\022\254p\253D\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\001\144\128 `\001(&m\000:\001\144\000\000E\000\006B\000\129\000\004\160\153\180\000\232\006@\000\001\020\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\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\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\003Q)w\007\208>\011\007\003\254\139\to\022\254p\253D\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\001\144\128 `\001(&m\000:\001\144\000\000E\000\006B\000\129\000\004\160\153\180\000\232\006@\000\001\020\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\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\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\003Q)w\007\208>\011\007\003\254\139\to\022\254p\253D\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\001\144\128 `\001(&m\000:\001\144\000\000E\000\006B\000\129\000\004\160\153\180\000\232\006@\000\001\020\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\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\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\003Q)w\007\208>\011\007\003\254\139\to\022\254p\253D\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\001\144\128 `\001(&m\000:\001\144\000\000E\000\006B\000\129\000\004\160\153\180\000\232\006@\000\001\020\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\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\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\003Q)w\007\208>\011\007\003\254\139\to\022\254p\253D\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\001\144\128 `\001(&m\000:\001\144\000\000E\000\006B\000\129\000\004\160\153\180\000\232\006@\000\001\020\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\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\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\003Q)w\007\208>\011\007\003\254\139\to\022\254p\253D\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\001\144\128 `\001(&m\000:\001\144\000\000E\000\006B\000\129\000\004\160\153\180\000\232\006@\000\001\020\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\212J]\193\244\015\130\193\192\255\162\194[\197\191\156<\014B\000\129\b\004\224\153\180\000\232\006\000\000\001\004\0009\b\002\004 \019\130b\208\003\160\024\000\000\004\016!u$Z\019\002J\153\250\192n\128v\192\n\241T#\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<\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\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\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\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\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\004\000\000\000\000\128\002 D\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\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 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\000\000\000\000\000\000\000\000\001\000\000\000\000 \000\136\017\b\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\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\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\001\144\128 @\001(&-\000:\001\144\000\000A\000\000\000\000\000\000\000\000\001\000\000\000\000 \000\136\017\000\000\000\000\000\000\002\128\000\000\000\000\000\000\000\000\000\000e \n\018\000J\t\138\192\014\128b\000\002P@\131\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\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\000\000\000\000\000\000\000\000\000!\016\004P\001\002\000\144`\000h\128\020\192\000 \004\132@\017@\004\b\130A\128\193\162\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\000\000\000\000\000\000\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\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\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\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\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\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\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\019`|\000\192 \016\015\128\016\002\000\r\134\003\163\176\133\162\194\163~&=\000X\015\160\000\016s\128\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\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\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\128\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\000\000\000\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\0068\000d \b\024\000J\t\155@\014\128d\000\000\017@\001\144\128 @\001(&m\000:\001\144\000\000E\000\006B\000\129\000\004\160\152\180\000\232\006@\000\001\020\rD\165\220\031@\248,\028\015\250,%\188[\249\195\245\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\000\000\000\000\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\128\006B\000\129\128\004\160\153\180\000\232\006@\000\001\020\000\025\b\002\004\000\018\130f\208\003\160\025\000\000\004P\000d \b\016\000J\t\139@\014\128d\000\000\017@\212J]\193\244\015\130\193\192\255\162\194[\197\191\156?Q)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\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\0068\000d \b\024\000J\t\155@\014\128d\000\000\017@\001\144\128 @\001(&m\000:\001\144\000\000E\000\006B\000\129\000\004\160\152\180\000\232\006@\000\001\020\rD\165\220\031@\248,\028\015\250,%\188[\249\195\245\018\151p}\003\224\176p?\232\176\150\241o\231\015\000\128\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\b\000\000@\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\128\006B\000\129\128\004\160\153\180\000\232\006@\000\001\020\000\025\b\002\004\000\018\130f\208\003\160\025\000\000\004P\000d \b\016\000J\t\139@\014\128d\000\000\017@\212J]\193\244\015\130\193\192\255\162\194[\197\191\156?Q)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\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\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\003Q)w\007\208>\011\007\003\254\139\to\022\254p\253D\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\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\0068\000d \b\024\000J\t\155@\014\128d\000\000\017@\001\144\128 @\001(&m\000:\001\144\000\000E\000\006B\000\129\000\004\160\152\180\000\232\006@\000\001\020\rD\165\220\031@\248,\028\015\250,%\188[\249\195\245\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\000\000\000\000\000\000\128\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\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\003Q)w\007\208>\011\007\003\254\139\to\022\254p\253D\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\0068\000d \b\024\000J\t\155@\014\128d\000\000\017@\001\144\128 @\001(&m\000:\001\144\000\000E\000\006B\000\129\000\004\160\152\180\000\232\006@\000\001\020\rD\165\220\031@\248,\028\015\250,%\188[\249\195\245\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\001\144\128 `\001(&m\000:\001\144\000\000E\000\006B\000\129\000\004\160\153\180\000\232\006@\000\001\020\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\212J]\193\244\015\130\193\192\255\162\194[\197\191\156?S{w\175\242\190\175\159\239\254\251\015o\182\255\252\242;\b\002,*7\226c\208\005\128\250\000\000\0068\000d \b\024\000J\t\155@\014\128d\000\000\017@\001\144\128 @\001(&m\000:\001\144\000\000E\000\006B\000\129\000\004\160\152\180\000\232\006@\000\001\020\rD\165\220\031@\248,\028\015\250,%\188[\249\195\245\018\151p}\003\224\176p?\232\176\150\241o\231\015\212\222\221\235\252\175\170\231\251\255\190\195\219\237\191\255\127S{w\175\242\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\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\0005\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\000\000\000\000\000\000\016\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#\176\128\"\194\163~&=\000X\015\160\b\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\212J]\193\244\015\130\193\192\255\162\194[\197\191\156<\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\0068\000d \b\024\000J\t\155@\014\128d\000\000\017@\001\144\128 @\001(&m\000:\001\144\000\000E\000\006B\000\129\000\004\160\152\180\000\232\006@\000\001\020\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\001\144\128 `\001(&m\000:\001\144\000\000E\000\006B\000\129\000\004\160\153\180\000\232\006@\000\001\020\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\212J]\193\244\015\130\193\192\255\162\194[\197\191\156?Q)w\007\208>\011\007\003\254\139\to\022\254p\242;\b\002,*7\226c\208\005\128\250\000\000\0068\000d \b\024\000J\t\155@\014\128d\000\000\017@\001\144\128 @\001(&m\000:\001\144\000\000E\000\006B\000\129\000\004\160\152\180\000\232\006@\000\001\020\rD\165\220\031@\248,\028\015\250,%\188[\249\195\245\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\000\000\000\000\000\000\000\000\001\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\000\000\000\000\000\000\000\000\000\000\128\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\000d \b\016\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\b\t\bB \n\002\130c\144\001\128\024\000\000\0060 \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\002;\b\002,*7\226c\208\005\128\250\000\001\0068\000d \b\024\000J\t\155@\014\128d\000\000\017@\001\144\128 @\001(&m\000:\001\144\000\000E\000\006B\000\129\000\004\160\152\180\000\232\006@\000\001\020\t\000\000\128\000\000\000\000\000\000\000\000 \000\003\000@\b\236 \b\176\168\223\137\143@\022\003\232\000\000\024\224\001\144\128 `\001(&m\000:\001\144\000\000E\000\006B\000\129\000\004\160\153\180\000\232\006@\000\001\020\000\025\b\002\004\000\018\130b\208\003\160\025\000\000\004P\004\000\000@\000\000\000\000\000\000\000\000\128\000\012\005\000\016\000A\001\240\003\000\128@>\000B\b\0006\024\012\006B\000\129\000\004\224\153\180\000\232\006@\000\001\004\001\000\000\016\000\000\000\000\000\000\000\000 \000\001\001\001\000d \b\016\000N\t\155@\014\128d\000\000\016@\001\144\128 @\0018&-\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\004\000\b\000\000\000\002 D\b\236 \b\176\168\223\137\143@\022\003\232\000\000\024\224\001\144\128 `\001(&m\000:\001\144\000\000E\000\006B\000\129\000\004\160\153\180\000\232\006@\000\001\020\000\025\b\002\004\000\018\130b\208\003\160\025\000\000\004P\004\000\000@\000\000\000\000\000\000\000\000\128\000\012\005\004\016\000A\001\240\003\000\128@>\000B\b\0006\024\028\000\000\000\000\000\000\000\001\000\002\000\000 \000\136\017\002;\b\002,*7\226c\208\005\128\250\000\000\0068\000d \b\024\000J\t\155@\014\128d\000\000\017@\001\144\128 @\001(&m\000:\001\144\000\000E\000\006B\000\129\000\004\160\152\180\000\232\006@\000\001\020\001\000\000\016\000\000\000\000\000\000\000\000 \000\003\001A\004\000\016@|\000\192 \016\015\128\016\130\000\r\134\007#\176\128\"\194\163~&=\000X\015\160\000\000c\128\006B\000\129\128\004\160\153\180\000\232\006@\000\001\020\000\025\b\002\004\000\018\130f\208\003\160\025\000\000\004P\000d \b\016\000J\t\139@\014\128d\000\000\017@\000\b\000\000\000\000\000\000\000\000\000\000\000@ \004\000\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@\000\004\000\000\000\000\000\000\000\000\b\000\000\192PA\000\004\016\031\0000\b\004\003\224\004 \128\003a\129\192\002\016\000|\000\192 \016\015\128\016\002\016\t\130\003#\176\128\"\194\163~&=\000X\015\160\000\000c\128\006B\000\129\128\004\160\153\180\000\232\006@\000\001\020\000\025\b\002\004\000\018\130f\208\003\160\025\000\000\004P\000d \b\016\000J\t\139@\014\128d\000\000\017@\016\000\001\000\000\000\000\000\000\000\000\002\000\0000\020\016@\001\004\007\192\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\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\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 1\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#\176\128\"\194\163~&=\000X\015\160\000\000s\128\006B\000\129\128\004\160\153\180\000\232\006@\000\001\020\000\025\b\002\004\000\018\130f\208\003\160\025\000\000\004P\000d \b\016\000J\t\139@\014\128d\000\000\017@\144\000\b\000\000\000\000\000\000\000\000\002\000\000 \020\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\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\001\144\128 `\001(&m\000:\001\144\000\000E\000\006B\000\129\000\004\160\153\180\000\232\006@\000\001\020\000\025\b\002\004\000\018\130b\208\003\160\025\000\000\004P$\000\002@\000\000\000\000\000\000\000\000\128\000\b\001\000\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\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\002@\001$\007\192\012\002\001\000\248\001\b \000\152 1\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\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\000\144\128\"\000\160(&9\000\024\001\128\000\000c\001\000\000\000\000\000\000\000\000\000\000\152\000\000\160\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\b\128\000\000\000\000\000\000\000\000\b\000\t\000\002\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\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\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\001\000\000\000\000\000\000\000\000\000\000\152\000\000\160\000\000\000\b\000\000\000\000\002\128c\128\000\000\000\000\000\000\0000\000\002 \000\000\000\000\000\000\t\128\002\n\002@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003Q)w\007\208>\011\007\003\254\155\to\182\254p\240\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000 \000\000\000\000\000\000\000\000\000\000\000\000@\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\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\006B\000\129\128\004\160\153\180\000\232\006@\000\001\020\000\025\b\002\004\000\018\130f\208\003\160\025\000\000\004P\000d \b\016\000J\t\139@\014\128d\000\000\017@\128\000\b\128\000\000\000\000\000\000\000\128\000\000 \004\002\000\001\"\007\192\012\002\001\000\248\003\000 \000\152 8\000\000\128\000\000\000\000\000\000\000\b\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\b\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\006B\000\129\128\004\160\153\180\000\232\006@\000\001\020\000\025\b\002\004\000\018\130f\208\003\160\025\000\000\004P\000d \b\016\000J\t\139@\014\128d\000\000\017@\144\000\t\000\000\000\000\000\000\000\000\002\000\000 \004\000@\000\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\000\000\000\000\000\000\000\000\000\000\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\144\031\0000\b\004\003\224\004 \128\002`\128\196\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\006B\000\129\128\004\160\153\180\000\232\006@\000\001\020\000\025\b\002\004\000\018\130f\208\003\160\025\000\000\004P\000d \b\016\000J\t\139@\014\128d\000\000\017@\144\000\b\000\000\000\000\000\000\000\000\002\000\000 \020\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\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\000\000\000\000\000\000\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\000\000\000\000\000\000\000\128\001\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\001\128\000\000 \000\000\000@\000\000\000\000\000\000\000\000\006\000\000\000\000\000\000\001\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\b\000\000\000\000\000\002\000\000@\000\000\129\000 \000\000 \000\000\000\016\000\000\000\000\002\017\000E\000\016 \137\007\000\006\136\001L\000\002\000@\b\002\002\000\000\130\130\000\000\000\001\000\000\000\000\000\016\000\000\000\000\001\000\000\016\000\000\000\002\000\000\000\000\000\129\000 \000\000 \000\000\000\016\000\000\000\000\002\017\000E\000\016 \137\007\000\006\136\001L\000\002\000@\000\000\000\000\000\000\000\000\000\b\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\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\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\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\128\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\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\001\128\0000\000\000(\184(\000\002 \000\000\000\000\000\000\000\000\000\000@ \000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\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\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\"\000\000\000\000\001\000\000\001\000\000\000\000\001\000\000\000\136\000\000\000\000\004\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\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\136\000\000\000\000\004\000\000\004\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\002\000\000@ \000\000\000\000\128\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\128\0000\000\000(\184 \000\002\000\000\000\000\000\002\019\001E\000\0160)\007\000\006\136\001L\002\002\016@\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000`\000\012\000\000\n.\b\000\000\136\000\000\000\000\000\001\128\0000\000\000(\184 \000\002\000\000\000\000\000\002\019\001E\000\0160)\007\000\006\136\001L\002\002\016HL\005\020\000@\192\164\028\000\026 \0050\b\bA\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\132\192Q@\004\b\nA\192\001\162\000S\000\128\132\016\006\000\000\192\000\000\162\224\160\000\b\128\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@\000\000\000@\000\000\128\000\000\000\000\000\000 \000\000\000\024\000\003\000\000\002\139\130\128\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\0000\000\000(\184 \000\002\000\000\000\000\000\002\019\000E\000\016 )\007\000\006\136\001L\002\002\016HL\005\020\000@\192\164\028\000\026 \0050\b\bA\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\001\128\0000\000\000(\184 \000\002\000\000\000\000\000\002\019\000E\000\016 )\007\000\006\136\001L\002\002\016HL\005\020\000@\192\164\028\000\026 \0050\b\bA\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\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\003\144\130 B\0018&m\000:\001\128\000\000A\000\014B\b\129\b\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\000\228 \b\016\128N\t\139@\014\128`\000\000\016@\132@\017@\004\b\002A\128\001\162\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\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\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\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\003Q)w\007\208>\011\007\003\254\139\to\022\254p\253D\165\220\031@\248,\028\015\250,%\188[\249\195\192\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\144\128 `\001(&m\000:\001\144\000\000E\000\006B\000\129\000\004\160\153\180\000\232\006@\000\001\020\000\025\b\002\004\000\018\130b\208\003\160\025\000\000\004P$\000\002\000\000\000\000\000\000\000\000\000\128\000\012\001\000\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 \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\t\000\004\128\031\0000\b\004\003\224\004 \128\003`\128\196\000\000\000\000\000\000\000\000\000\000\000\128\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\b\016\002\002\000\002\002\004\000\000\001\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\000\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 \b\b\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\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\001\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\006B\000\129\000\004\160\152\180\000\232\006@\000\001\020\rD\165\220\031@\248,\028\015\250,%\188[\249\195\192\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\144\128 `\001(&m\000:\001\144\000\000E\000\006B\000\129\000\004\160\153\180\000\232\006@\000\001\020\000\025\b\002\004\000\018\130b\208\003\160\025\000\000\004P \000\001\000\000\000\000\000\000\000\000\000\000\000\nA\000\000\000\000\000\000\000\000\000\000\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\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@\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\b\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@\000\004\000\000\004\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\b\002\002\000\000\130\130\000\000\000\001\000\000\000\000\000\016\000\001\000\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\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") @@ -1781,13 +1781,13 @@ module Tables = struct 15 and action = - ((32, "\000\000t\014\000\000\127n\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\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\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\000\000\000{n\000\000\000\000\000\000\000\000\000\000\021\252\000\000{n\000\000t\014\000\000\024\246\000\000\021\156\000\000\002j\000\000\217L\000\000\000\000\000\000\000\000\000\000\000\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\022H\000\000\001\152\000\000\000\157\000\000\000\000\000\000\000\030\000\000\000\170\000\000\000\000\000\000\003\192\000\000\001D\000\000\003p\000\000\000\000\000\000\000F\000\000\002\"\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\001\132\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\216\000\001\011.\000\000\210^\000\000\211\000\000\000\211\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\006F\000\000\000\000\000\000\000\000\000\000\177\020\000\000\005\n\000\000\004\240\000\000\000\000\000\000\000\000\000\001\011\242\000\000vR\000\000\006F\000\000\005\202\000\000\000\000\000\000\000\000\000\000\006F\000\000y\148\000\000\006F\000\000\006B\000\000\174*\000\000~\236\000\000\021\252\000\000rh\000\000\214\030\000\000\021\252\000\000\131L\000\000\127n\000\000\021\252\000\000\174:\000\000\000\000\000\000\021\006\000\000\000\000\000\000\174:\000\000\028\248\000\000\000\000\000\000\030\194\000\000\000\000\000\000\003P\000\000\000\000\000\000\000\000\000\000\002X\000\000\000,\000\000\001\226\000\000\006F\000\000\000\000\000\000\021\252\000\000\000\000\000\000\006F\000\000\000,\000\000\002T\000\000\006F\000\000\000\000\000\000\000\000\000\000\004\208\000\000\000\000\000\000\030\194\000\000\000\000\000\000\000\000\000\000\003\202\000\000\021\150\000\000\000\000\000\000\006F\000\000\021\150\000\000\000\000\000\000\tj\000\000\252R\000\000\006F\000\000\000\000\000\000\000\000\000\000\255\190\000\000\255\130\000\000\230\226\000\000\000\000\000\000\006F\000\000\000\000\000\001\003\142\000\001\007\158\000\000\000\000\000\000\006F\000\000\176D\000\000\006F\000\000\007\000\000\000\000\000\000\000\177\246\000\000\214\200\000\001\007\158\000\000{\226\000\001\012D\000\000\006F\000\000\176D\000\001\007\158\000\000{n\000\000t\014\000\000\000\000\000\000\000\000\000\000\000\000\000\000\127n\000\000\021\252\000\000\000\000\000\000\000\000\000\000\017\204\000\000\127\n\000\000\021\252\000\000\1788\000\000\175\024\000\000\000\000\000\000\000q\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\138\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000vr\000\000\022@\000\000\022\212\000\000\003\204\000\000\006\240\000\000\000\000\000\000\000\000\000\000\t\152\000\000\000\000\000\000rh\000\000\007f\000\000\007\226\000\000\021\252\000\000\028\n\000\000\021\252\000\000t\014\000\000\127n\000\000\021\252\000\000\179\016\000\000\174:\000\000\n\020\000\000\252R\000\000\255\190\000\000\000\000\000\001\004\014\000\000{n\000\000t\014\000\000t\014\000\000\000\000\000\000\000\000\000\000\000\000\000\000z\128\000\000z\128\000\000\021\252\000\000\028\n\000\000\029\132\000\000\021\252\000\000\136$\000\000\000\000\000\000\023\158\000\000\004\020\000\000\011 \000\000\000\000\000\000\007\156\000\000\011\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\127n\000\000\021\252\000\000\000\000\000\000r\n\000\000\243\188\000\000\131L\000\000\000\000\000\000\001\012\000\000\136\234\000\000\175\024\000\000\231\130\000\000\231\130\000\000\243\n\000\000\000\000\000\000\011 \000\000\000\000\000\000\003Z\000\000\000\000\000\000\000\000\000\000\029\146\000\000\216\210\000\001\b\014\000\000\000\000\000\000\216\210\000\001\b\014\000\000\000\000\000\000\216\210\000\000\216\210\000\000\007b\000\000\000\000\000\000\005.\000\000\005\240\000\000\000\000\000\000\005\232\000\000\000\000\000\000\t\004\000\000\000\000\000\000\000\000\000\000\011\202\000\000\000\000\000\000\000\000\000\000\000\000\000\000\216\210\000\000\006F\000\000\000\000\000\000\179\000\000\000\000\000\000\000\185p\000\000\216\210\000\000\186Z\000\000\000\000\000\000\184\134\000\000|\218\000\000\000\000\000\000\000\000\000\000\181\196\000\000\007b\000\000\000\000\000\000\179\236\000\000\000\000\000\001\015r\000\001\007\158\000\000\000\000\000\000\005x\000\000\007b\000\000\007b\000\000\000\000\000\000\180\216\000\000\000\000\000\000\216\210\000\000\174p\000\001\007\158\000\000\002\196\000\000\006F\000\000\000\000\000\000\t\236\000\000\006F\000\000\t\192\000\000\006F\000\000\011$\000\000\000\000\000\000\216\210\000\000\000\000\000\000\012t\000\000\012\000\000\000\216\210\000\000\187D\000\000\000\000\000\000\174p\000\000\188.\000\000\216\210\000\000\189\024\000\000\000\000\000\000\174p\000\000\190\002\000\000\182\176\000\000|\218\000\000\183\156\000\000\000\000\000\000\208J\000\000\000\019\000\000\006F\000\000\000\000\000\000\006\220\000\000\011r\000\000\006F\000\000\r\134\000\000\000\000\000\000\006F\000\000\012\218\000\000\006F\000\000\r\168\000\000\000\000\000\000\005\006\000\000\000\000\000\000\216\210\000\000\007\030\000\000\014\006\000\000\007\226\000\000\004\006\000\000\216\210\000\000\012\188\000\000\015$\000\000\216\210\000\000\190\236\000\000\000\000\000\000\174p\000\000\191\214\000\000\015*\000\000\216\210\000\000\192\192\000\000\000\000\000\000\174p\000\000\193\170\000\000\182\n\000\001\007\158\000\000\006\030\000\000\216\210\000\000\r\128\000\000\015n\000\000\216\210\000\000\194\148\000\000\000\000\000\000\174p\000\000\195~\000\000\016\016\000\000\216\210\000\000\196h\000\000\000\000\000\000\174p\000\000\197R\000\000\174p\000\000\198<\000\000\000\000\000\000\000\000\000\000\003\216\000\000\000\000\000\000\216\210\000\000\000\000\000\000\001\020\000\001\012\150\000\000\000\000\000\000\216\210\000\000\006P\000\000\216\210\000\000r6\000\000\000\000\000\000vB\000\000\000\000\000\000\011\140\000\000\b\234\000\000\000\000\000\000\015\144\000\000\216\210\000\000\011\162\000\000\000\000\000\000\012 \000\000\000\000\000\000\017\212\000\000\000\000\000\000\000\000\000\000\002t\000\000\000\000\000\000\000\000\000\000\000\000\000\000!z\000\000\012\202\000\000\175\024\000\000\127n\000\000\021\252\000\000\175\024\000\000\000\000\000\000\007b\000\000\000\000\000\000\000\000\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\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000~v\000\000!4\000\000\000q\000\000\002\138\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\028\000\000\030\194\000\000\231\130\000\000\000\000\000\000\000\000\000\000\233\192\000\000\021\252\000\000\175\024\000\000\000\000\000\000\000\000\000\000\221\028\000\000\175\024\000\000\228\230\000\000\244X\000\000\000\000\000\000\239\188\000\000\000\000\000\000\175\024\000\000\000\000\000\000\000\000\000\000\176\024\000\000zd\000\000\000\184\000\000\000\184\000\000\000\000\000\000\016f\000\000\175\024\000\000\000\000\000\000\000\000\000\000\000\000\000\000\030\b\000\000\016\164\000\000\000\000\000\000q\254\000\000\000\000\000\000\000\000\000\000\244\250\000\000\000\000\000\001\004\210\000\000\216\210\000\000\000\000\000\000\b\140\000\000\000\000\000\000\000\000\000\000\245\156\000\000\000\000\000\001\012\190\000\000\012\226\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\232\000\000\000\000\000\000\031\228\000\000\000\000\000\000\000\000\000\000\244X\000\000\000\000\000\000\005H\000\000\000\000\000\000\000\000\000\000s\194\000\000\217\250\000\000\000\000\000\000\000\000\000\000\025\156\000\000\007\142\000\000\031\172\000\000\011\190\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\005Z\000\000\000\000\000\000\000\000\000\000\000\000\000\000\006\154\000\000\000\000\000\000\000\000\000\000\208\244\000\000\0046\000\000\030\140\000\000\023\160\000\001\011.\000\000\tB\000\000\216\210\000\000\016\248\000\000\019\016\000\000\017\014\000\000\018l\000\000\000\000\000\000\018\194\000\000\000\000\000\000\000\000\000\000\b\004\000\000\030\140\000\000\017\014\000\000\006\226\000\000\000\000\000\000\209\188\000\000{\206\000\000z\128\000\000\021\252\000\000\028\n\000\000\000\182\000\000\004\030\000\000\022\200\000\000\000\000\000\000\018\022\000\000rh\000\000rh\000\000\000\182\000\000\004\030\000\000\012J\000\000rh\000\000\000\000\000\000\2364\000\000\014D\000\000\174:\000\000\011 \000\000\005\172\000\001\r\004\000\000\000\000\000\000\216\210\000\000\2322\000\000\216\210\000\000\218\170\000\000\232\188\000\000\216\210\000\000\006\218\000\000\216\210\000\000\233F\000\000\000\000\000\000\007\248\000\000\r\226\000\000\b\184\000\000rh\000\000\236\230\000\000\000\000\000\000\nj\000\000\014\166\000\000\214 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000rh\000\000\237D\000\000rh\000\000\237\246\000\000\003|\000\000\005\240\000\000\2194\000\000\n8\000\000\005\240\000\000\219\190\000\000\000\000\000\000\238T\000\000\br\000\000\000\000\000\000\220H\000\000\000\000\000\000\000\000\000\000\bT\000\000\000\000\000\000\000\000\000\000\004\144\000\000\000\000\000\000\012b\000\000\028\n\000\000\000\000\000\000\214\240\000\000w$\000\000\000\000\000\000\023N\000\000\000\000\000\000\000\000\000\000rh\000\000\t`\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\212R\000\000\000\000\000\000\t\204\000\000\000\000\000\000\132\026\000\000\132\242\000\000\001\190\000\000\001\186\000\000\137\176\000\000\024\002\000\000\177\168\000\000\127n\000\000\021\252\000\000t\212\000\000\127n\000\000\021\252\000\000\017\204\000\000\017\204\000\000\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\024\000\000\025\014\000\000s\012\000\000\000\000\000\000\1284\000\000\128\250\000\000z\128\000\000\021\252\000\000\028\n\000\000\0060\000\000{0\000\000\000\000\000\000\005\156\000\000\000\000\000\000\129\192\000\000\130\134\000\000\246>\000\000\029\212\000\000\216\210\000\000\t\014\000\000\000\000\000\000\127n\000\000\021\252\000\000\000\000\000\000\233\192\000\000\021\252\000\000\243\n\000\000\175\024\000\000r\234\000\000\000\000\000\000\127n\000\000\021\252\000\000yh\000\000\005B\000\000\000\000\000\000\217\250\000\000\026\176\000\001\011.\000\000\nN\000\000\216\210\000\000\020\028\000\000\021(\000\000\175\024\000\000\006\226\000\000\019$\000\000\000\000\000\000\006\226\000\000\019\132\000\000\000\000\000\000\000\000\000\000\000\000\000\000vr\000\000\nz\000\000\019\242\000\000\019\172\000\000\006F\000\000\020r\000\000\000\000\000\000\020\218\000\000\006F\000\000\020~\000\000\000\000\000\000\000\000\000\000\020\132\000\000\000\000\000\000\003\208\000\000\000\000\000\000\000\000\000\000w(\000\001\r\174\000\000\0120\000\000\216\210\000\000\0156\000\000\000\000\000\000\175\024\000\000\020\144\000\000\000\000\000\001\000^\000\000vr\000\000xR\000\001\r\174\000\000\r<\000\000\216\210\000\000\015\152\000\000\000\000\000\000\175\024\000\000\030\136\000\000\000\000\000\000\011r\000\000\006F\000\000\000\000\000\000\020\138\000\000\006F\000\000\020\014\000\000\006F\000\000\021\028\000\000\000\000\000\000\014H\000\000\216\210\000\000\016B\000\000\000\000\000\000\000\000\000\000\000\000\000\000\212\252\000\000\000\000\000\000\000\000\000\000\000p\000\000|\218\000\000\026(\000\000\021 \000\000\138v\000\000\233\192\000\000\021\252\000\000\243\n\000\000\0282\000\000\139<\000\000\233\192\000\000\021\252\000\000\243\n\000\000\029>\000\000\175\024\000\000\000\000\000\000\000\000\000\000\233\192\000\000\021\252\000\000\175\024\000\000\"\004\000\000\000\000\000\000\000\000\000\000\127n\000\000\021\252\000\000\017\204\000\000\024\002\000\000\021*\000\000\000\000\000\000\017\204\000\000\003$\000\000\025\158\000\000|r\000\000\233\192\000\000\021\252\000\000\243\n\000\000qJ\000\000|r\000\000\140\002\000\000\233\192\000\000\021\252\000\000\243\n\000\000\000\000\000\000\017\204\000\000\011(\000\000\021@\000\000\000\019\000\001\n,\000\000\000\000\000\000\027\012\000\001\r\208\000\000\000\000\000\000\023F\000\000\216\210\000\000\029J\000\000\022\016\000\000\000\000\000\000\000\000\000\000\021\218\000\000\000\000\000\000\017\204\000\000\0040\000\000\021\226\000\000\000\000\000\000#\172\000\000\000\000\000\000\005`\000\000\000\000\000\000\000\000\000\000\030J\000\000\140\200\000\000\233\192\000\000\021\252\000\000\243\n\000\000\031V\000\000\018\216\000\000\025\014\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\222\000\000\000\000\000\000\000\000\000\000\000\000\000\000 b\000\000\141\142\000\000\233\192\000\000\021\252\000\000\243\n\000\000!n\000\000\"z\000\000\142T\000\000\233\192\000\000\021\252\000\000\243\n\000\000#\134\000\000$\146\000\000\000\000\000\000\019\228\000\000\026\026\000\000\143\026\000\000\233\192\000\000\021\252\000\000\243\n\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\143\224\000\000\233\192\000\000\021\252\000\000\243\n\000\000%\158\000\000&\170\000\000\144\166\000\000\233\192\000\000\021\252\000\000\243\n\000\000'\182\000\000(\194\000\000\145l\000\000\233\192\000\000\021\252\000\000\243\n\000\000)\206\000\000*\218\000\000\1462\000\000\233\192\000\000\021\252\000\000\243\n\000\000+\230\000\000,\242\000\000\146\248\000\000\233\192\000\000\021\252\000\000\243\n\000\000-\254\000\000/\n\000\000\147\190\000\000\233\192\000\000\021\252\000\000\243\n\000\0000\022\000\0001\"\000\000\148\132\000\000\233\192\000\000\021\252\000\000\243\n\000\0002.\000\0003:\000\000\149J\000\000\233\192\000\000\021\252\000\000\243\n\000\0004F\000\0005R\000\000\150\016\000\000\233\192\000\000\021\252\000\000\243\n\000\0006^\000\0007j\000\000\150\214\000\000\233\192\000\000\021\252\000\000\243\n\000\0008v\000\0009\130\000\000\151\156\000\000\233\192\000\000\021\252\000\000\243\n\000\000:\142\000\000;\154\000\000\152b\000\000\233\192\000\000\021\252\000\000\243\n\000\000<\166\000\000=\178\000\000\153(\000\000\233\192\000\000\021\252\000\000\243\n\000\000>\190\000\000?\202\000\000\153\238\000\000\233\192\000\000\021\252\000\000\243\n\000\000@\214\000\000A\226\000\000\154\180\000\000\233\192\000\000\021\252\000\000\243\n\000\000B\238\000\000C\250\000\000\155z\000\000\233\192\000\000\021\252\000\000\243\n\000\000E\006\000\000F\018\000\000\156@\000\000\233\192\000\000\021\252\000\000\243\n\000\000G\030\000\000H*\000\000\157\006\000\000\233\192\000\000\021\252\000\000\243\n\000\000I6\000\000JB\000\000\157\204\000\000\233\192\000\000\021\252\000\000\243\n\000\000KN\000\000LZ\000\000\158\146\000\000\233\192\000\000\021\252\000\000\243\n\000\000Mf\000\000Nr\000\000\021\252\000\000\217\250\000\000yh\000\000\000\000\000\000\000\000\000\001\011.\000\000\003\208\000\000\021~\000\000\216\210\000\000\012\022\000\000\000\000\000\000\000\000\000\000\014~\000\000\216\210\000\000\r\"\000\000\000\000\000\000\000\000\000\000\021\200\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\019\000\000\000\000\000\000\021\206\000\000\138v\000\000\000\000\000\000\000\000\000\000\000\000\000\000\030\224\000\000\216\210\000\000\r&\000\000\000\000\000\000\000\000\000\000\"\176\000\000\000\000\000\000\000\000\000\000\246\224\000\000\000\000\000\000#\016\000\000\247\130\000\000\000\000\000\000#\188\000\000\248$\000\000\000\000\000\000$\028\000\000\023\236\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000$\200\000\000\175\024\000\000%(\000\000\002j\000\000\215\148\000\001\011.\000\000\015\138\000\000\216\210\000\000\014.\000\000\000\000\000\000\000\000\000\000\022\018\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\248\206\000\000\248\206\000\000\000\000\000\000\000\000\000\000\000\000\000\000O~\000\000\000\000\000\000\014\204\000\000\000\000\000\000\000\000\000\000\000\000\000\000\012\132\000\000\000\000\000\000\000\000\000\000\011d\000\000\026\238\000\000|r\000\000\n\240\000\000\000\000\000\000\000\000\000\000\216\006\000\000}t\000\000\000\000\000\000|r\000\000\015\188\000\000\000\000\000\000\000\000\000\000|r\000\000\r\144\000\000\000\000\000\000\000\000\000\000\000\000\000\000\017\204\000\000\005<\000\000\027(\000\000|r\000\000\014&\000\000\000\000\000\000\006H\000\000\159X\000\000\233\192\000\000\021\252\000\000\243\n\000\000P\138\000\000Q\150\000\000|r\000\000\015\216\000\000\000\000\000\000\007T\000\000\160\030\000\000\233\192\000\000\021\252\000\000\243\n\000\000R\162\000\000S\174\000\000|r\000\000\016\180\000\000\000\000\000\000\b`\000\000\160\228\000\000\233\192\000\000\021\252\000\000\243\n\000\000T\186\000\000U\198\000\000$\030\000\000\000\000\000\000\014\212\000\000\tl\000\000\161\170\000\000\233\192\000\000\021\252\000\000\243\n\000\000V\210\000\000W\222\000\000\000\000\000\000\016\200\000\000\nx\000\000\162p\000\000\233\192\000\000\021\252\000\000\243\n\000\000X\234\000\000Y\246\000\000\000\000\000\000\018\204\000\000\011\132\000\000\1636\000\000\233\192\000\000\021\252\000\000\243\n\000\000[\002\000\000\\\014\000\000\012p\000\000\028\"\000\000|r\000\000\015\224\000\000\012\144\000\000\163\252\000\000\233\192\000\000\021\252\000\000\243\n\000\000]\026\000\000^&\000\000|r\000\000\017J\000\000\r\156\000\000\164\194\000\000\233\192\000\000\021\252\000\000\243\n\000\000_2\000\000`>\000\000|r\000\000\018\246\000\000\014\168\000\000\165\136\000\000\233\192\000\000\021\252\000\000\243\n\000\000aJ\000\000bV\000\000\015\180\000\000\166N\000\000\233\192\000\000\021\252\000\000\243\n\000\000cb\000\000dn\000\000\016\192\000\000\020\240\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\236\000\000\000\000\000\000|r\000\000\017\240\000\000\000\000\000\000|r\000\000\021*\000\000\000\000\000\000\000\000\000\000\000t\000\000\000\000\000\000\000\000\000\000\000\000\000\000\022\000\000\000\000\000\000\000\022N\000\000\000\000\000\000ez\000\000\000\000\000\000\022\214\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000f\134\000\000\023(\000\000\167\020\000\000\233\192\000\000\021\252\000\000\243\n\000\000g\146\000\000\167\218\000\000\233\192\000\000\021\252\000\000\243\n\000\000h\158\000\000i\170\000\000j\182\000\000\168\160\000\000\233\192\000\000\021\252\000\000\243\n\000\000k\194\000\000l\206\000\000\000\000\000\000%\212\000\000\000\000\000\000\000\000\000\000\007\150\000\000\000\000\000\000\000\000\000\000\175\024\000\000\000\000\000\000\000\000\000\000\249v\000\000\0178\000\000\000\000\000\000\000\000\000\000\133\184\000\000\233\192\000\000\021\252\000\000\243\n\000\000\025\194\000\000\169f\000\000\233\192\000\000\021\252\000\000\243\n\000\000\022\238\000\000\2342\000\000\021\252\000\000 |\000\000\021\252\000\000\175\024\000\000\175\024\000\000&\224\000\000\170,\000\000\233\192\000\000\021\252\000\000\243\n\000\000\0264\000\000\220\188\000\000\025D\000\000\170\242\000\000\233\192\000\000\021\252\000\000\243\n\000\000\027@\000\000\221<\000\000\171\184\000\000\233\192\000\000\021\252\000\000\243\n\000\000\000t\000\000\172~\000\000\233\192\000\000\021\252\000\000\243\n\000\000\028L\000\000\222\n\000\000\216\006\000\000\173D\000\000\233\192\000\000\021\252\000\000\243\n\000\000\029X\000\000\222\138\000\000\000\000\000\000\000\000\000\000\000\000\000\000\012 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\216\000\000\000\000\000\000\000\000\000\000\216\006\000\000\r,\000\000\000\000\000\000\134\134\000\000\233\192\000\000\021\252\000\000\243\n\000\000 ,\000\000\016\024\000\000\000\000\000\000\000\000\000\000\n6\000\000\000\000\000\000\000\000\000\000\216\006\000\000\017$\000\000\000\000\000\000\135^\000\000\000\000\000\000\233\192\000\000\021\252\000\000\243\n\000\000\025\194\000\000\007\\\000\000\000\000\000\000\018V\000\000\000\000\000\000\000\000\000\000\216\006\000\000\007\240\000\000\000\000\000\000\001\190\000\000\n\140\000\000\000\000\000\000\000\000\000\000\024\002\000\000s\140\000\000\011 \000\000\000\000\000\000s\210\000\000\r\214\000\000\018\006\000\000\0252\000\000\000\000\000\000\000\000\000\000\023*\000\000\000\000\000\000\000\000\000\000\002\022\000\000\0282\000\000\182L\000\000\000\000\000\000\027&\000\000\000\000\000\000\011.\000\000\000\000\000\000\000\000\000\000\023\246\000\000\000\000\000\000\000\000\000\000\233\192\000\000\021\252\000\000\243\n\000\000\031\162\000\000\221<\000\000\tp\000\000\023\180\000\000\000\000\000\000\000\000\000\000\011\152\000\000\000\000\000\000\000\000\000\000\233\192\000\000\021\252\000\000\243\n\000\000\025\194\000\000\bh\000\000\000\000\000\000\018z\000\000\000\000\000\000\000\000\000\000\216\006\000\000\b\252\000\000\000\000\000\000\233\192\000\000\021\252\000\000\243\n\000\000 ,\000\000\019<\000\000\000\000\000\000\000\000\000\000\014f\000\000\000\000\000\000\000\000\000\000\216\006\000\000\023\208\000\000\000\000\000\000\000\000\000\000\021\252\000\000\028\n\000\000\015\b\000\000\000\000\000\000\000\000\000\000\022\212\000\000\003\204\000\000\006\240\000\000\004\030\000\000\028\n\000\000\253b\000\000rh\000\000\027Z\000\000\028\n\000\000\253\236\000\000\022\246\000\000\000\000\000\000\000\000\000\000\004\030\000\000\000\000\000\000\024\160\000\000\021\252\000\000\025\166\000\000\000\000\000\000\002\162\000\000\023p\000\000\000\000\000\000\023r\000\000\026 \000\000|\218\000\000\000=\000\000\000\000\000\000\000\000\000\000\023H\000\000\022\222\000\001\011.\000\000\016\150\000\000\216\210\000\000$\182\000\000\0078\000\000\016\254\000\000\021\156\000\000\000\000\000\000%\194\000\000\023\218\000\000\000\000\000\000\007v\000\000\000\000\000\000\000\000\000\000|\218\000\000\223.\000\000\023\244\000\000\1862\000\000|\218\000\000\223\238\000\000\224\174\000\000\000\000\000\000\234\214\000\000\184\184\000\001\014.\000\000\006F\000\000y\148\000\000\017l\000\000|\218\000\000\023\222\000\000|\218\000\000\238\254\000\000\225n\000\000\023\224\000\000|\218\000\000\239\136\000\000\226.\000\000\017X\000\000\023\184\000\000\000\000\000\000\000\000\000\000\000\000\000\000\021\252\000\000\235\004\000\000\000\000\000\000\217\250\000\000\248\206\000\000\000\000\000\000\000\000\000\000\024P\000\000\000\000\000\000\006\226\000\000\024z\000\000\000\000\000\000\000\000\000\000\000\000\000\000\233\192\000\000\021\252\000\000\243\n\000\000m\218\000\000n\230\000\000\000\000\000\000\233\192\000\000\021\252\000\000\243\n\000\000\025\194\000\000\0148\000\000\000\000\000\000\000\000\000\000\rl\000\000\000\000\000\000\000\000\000\000\216\006\000\000\016P\000\000\000\000\000\000\000\000\000\000z\128\000\000\021\252\000\000\028\n\000\000\031|\000\000\000\000\000\000\175\248\000\000\000\000\000\000\b\192\000\000\000\000\000\000\004\\\000\000\000\000\000\000\000\000\000\000\024\180\000\000\000\000\000\000\025\000\000\000\243\n\000\000o\242\000\000\000\000\000\000\233\192\000\000\021\252\000\000\243\n\000\000!\154\000\000\000\000\000\000\000\000\000\000\176\000\000\000\000\000\000\000\t\204\000\000\000\000\000\000\183\222\000\000\000\000\000\000\001\000\000\000\000\000\000\000rh\000\000\n\216\000\000\000\000\000\000\240.\000\000\000\000\000\000\000\000\000\000\186\156\000\000\000\000\000\000\015\b\000\000\000\000\000\000\187$\000\000\000\000\000\000\nl\000\000\000\000\000\000rh\000\000\015\168\000\000\000\000\000\000\248\206\000\000\000\000\000\000\021\252\000\000\028\n\000\000\248\206\000\000\000\000\000\000\023\204\000\000\023\158\000\000\004\020\000\000\006F\000\001\005<\000\000rh\000\001\000\182\000\000\248\144\000\000\000\000\000\000\021\252\000\000\024\172\000\000\006\240\000\000\004\030\000\000\248\206\000\001\b\144\000\000\003\204\000\000\006\240\000\000\004\030\000\000\248\206\000\001\b\144\000\000\000\000\000\000\000\000\000\000\004\030\000\000\248\144\000\000\000\000\000\000{n\000\000t\014\000\000\175\024\000\000\027\\\000\000\000\000\000\000\000\000\000\000{n\000\000t\014\000\000\180B\000\000\000\000\000\000\024\246\000\000\021\156\000\000\002j\000\000\024$\000\001\011.\000\000\018x\000\000\216\210\000\000\250\022\000\000\024N\000\000\024\250\000\001\005\198\000\000\000\000\000\000\248\144\000\000\000\000\000\000\250\160\000\000\024\160\000\000\021\252\000\000\025\166\000\000\254v\000\000#\138\000\000\b\136\000\001\001\026\000\000\n8\000\000\024<\000\000\021\252\000\000\248\144\000\000\000\000\000\000\021\252\000\000\248\144\000\000\000\000\000\000\216\210\000\001\016\178\000\000\026\148\000\000\t\254\000\000\001\000\000\000\005\240\000\001\004\014\000\000\000\000\000\000\001\000\000\000\005\240\000\001\004\014\000\000\000\000\000\000\026@\000\000\023\158\000\000\004\020\000\000\006F\000\001\011V\000\000rh\000\001\006$\000\000\000\000\000\000\021\252\000\000\0258\000\000\023\130\000\000\016h\000\000\000\000\000\001\004\014\000\000\000\000\000\000\006\240\000\000\024\\\000\000rh\000\001\006$\000\001\015F\000\000\003\204\000\000\006\240\000\000\024h\000\000rh\000\001\006$\000\001\015F\000\000\000\000\000\000\000\000\000\000\005*\000\000\000\000\000\000\248\144\000\000\000\000\000\000rh\000\001\b\198\000\000\248\144\000\000\000\000\000\000\005*\000\000\000\000\000\000\024\160\000\000\021\252\000\000\025\166\000\000\251\156\000\000\"Z\000\000!\222\000\000\021\150\000\000\000\172\000\000\000\000\000\000\018\166\000\000\030\194\000\000\000\000\000\000\014\142\000\000\000\000\000\000\030\194\000\000\000\000\000\000\025\020\000\000\024\186\000\000w\220\000\000\021\252\000\000\181\152\000\000\216\210\000\000\018\188\000\000\000\000\000\000\129r\000\000\021\156\000\000\001n\000\000\012\254\000\000\000\000\000\000\rR\000\000\000\000\000\000\025\030\000\000\024\170\000\000\216\210\000\000\135^\000\000\000\000\000\000\021\252\000\000\001\230\000\000\019(\000\000\000\000\000\000\016v\000\000\000\000\000\000\025f\000\000\024\228\000\001\011.\000\000\128\172\000\000\000\000\000\000\021\252\000\000w\220\000\000\025\142\000\000\022\160\000\000\001\000\000\000\000\000\000\000\014r\000\000w\220\000\000\216\210\000\000\015\210\000\000\007b\000\000\000\000\000\000\216\210\000\000\001\162\000\000\017V\000\000\000\000\000\000\000\000\000\000\240\212\000\000\000\000\000\000\000\000\000\000\016\252\000\000w\220\000\000\241^\000\000\135^\000\000\000\000\000\000\021\252\000\000\216\210\000\000\018\196\000\000\216\210\000\000\132\242\000\000\128\172\000\000\000\000\000\000\015^\000\000\000\000\000\000\000\000\000\000\128\172\000\000\000\000\000\000\000\000\000\000\129r\000\000\000\000\000\000\248\206\000\001\tP\000\000\021\150\000\000\000\172\000\000\018\166\000\000\025\152\000\000\025F\000\000w\220\000\000\248\206\000\001\tP\000\000\000\000\000\000\000\000\000\000\021\150\000\000\000\172\000\000\018\166\000\000\025\204\000\000\025f\000\001\016\226\000\000\177\230\000\000|\218\000\000\025\252\000\001\016\226\000\000\216\210\000\000\024J\000\000\026\014\000\001\016\226\000\000|\218\000\000\026\016\000\001\016\226\000\000\242\030\000\000\251`\000\000\000\000\000\001\006\134\000\000\000\000\000\000\000\000\000\000\248\206\000\001\015|\000\000\021\150\000\000\000\172\000\000\018\166\000\000\026&\000\000\025\164\000\001\016\226\000\000\248\206\000\001\015|\000\000\000\000\000\000\000\000\000\000\000\000\000\001\016\178\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\248\144\000\000\000\000\000\000~\236\000\000\021\252\000\000rh\000\001\006$\000\000\000\000\000\001\t\134\000\000\021\252\000\000}\232\000\000\026,\000\000\252R\000\000\255\190\000\000\000\000\000\001\004\014\000\001\t\134\000\000\000\000\000\000\000\000\000\000\000\000\000\001\015\252\000\000\021\252\000\000}\232\000\000\026f\000\000\017\246\000\000\025\230\000\000\255\130\000\001\n,\000\000\000=\000\000\026\162\000\000\000\000\000\000\000\000\000\000\242\132\000\000\251\156\000\000\021\252\000\000\000\000\000\001\001~\000\000\025\166\000\000\000\000\000\000\000\000\000\001\004\014\000\001\015\252\000\000\000\000\000\000\000\000\000\000\000\000\000\000\254\212\000\000\028\208\000\000\025\166\000\000\000=\000\000\026\174\000\000\000\000\000\000\000\000\000\000\000\000\000\000\251\156\000\000\021\252\000\000\000\000\000\000\000=\000\000\026\180\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\014D\000\000\"Z\000\000\021\150\000\000\000\172\000\000\018\166\000\000\026\142\000\000\226\\\000\000vr\000\000}F\000\000\021\252\000\000\1788\000\000\133\252\000\000\021\156\000\000\018\188\000\000\018\024\000\000\000\000\000\000\026\148\000\000\bN\000\000\000\000\000\000\000\000\000\000\026x\000\000\000\000\000\000\000\000\000\000\135^\000\000\000\000\000\000\004\158\000\000\018:\000\000\000\000\000\000\018\026\000\000\000\000\000\000\026\220\000\000\026l\000\000\216\210\000\000\133\184\000\000\026\246\000\000\t\220\000\000\000\000\000\000\000\000\000\000\026\152\000\000\000\000\000\000\000\000\000\000\022\132\000\000\017\176\000\000\019L\000\000\000\000\000\000\027\018\000\000\227\028\000\001\014\156\000\000\003\208\000\000\026\164\000\000\216\210\000\000\019 \000\000\000\000\000\000\000\000\000\000\026\192\000\000\000\000\000\000\000\000\000\000\000\000\000\000\135^\000\000\000\000\000\000\019\178\000\000\019\160\000\000\000\000\000\000\019&\000\000\000\000\000\000\0272\000\000\026\178\000\001\011.\000\000\000\000\000\000\027F\000\000\227\190\000\001\014\230\000\000\003\208\000\000\026\246\000\000\216\210\000\000\019\208\000\000\000\000\000\000\000\000\000\000\027\018\000\000\000\000\000\000\000\000\000\000\000\000\000\000\021\252\000\000\000\000\000\000\135^\000\000\000\000\000\000\022B\000\000\021\252\000\000}F\000\000}F\000\000\213\178\000\000{n\000\000\021\252\000\000\235\004\000\000\217\250\000\000\006\030\000\000\000\000\000\000\027\012\000\000\001\000\000\000\000\000\000\000\019b\000\000}F\000\000\216\210\000\000\019L\000\000\011 \000\000\000\000\000\000\021\252\000\000\226\\\000\000\226\\\000\000}F\000\000\r\216\000\000}F\000\000\000\000\000\000wt\000\000xn\000\000\000\000\000\000\228\022\000\000\000\000\000\000\000\000\000\000\228\160\000\000\000\000\000\000\000\000\000\000\229*\000\000\000\000\000\000\019\150\000\000}F\000\000\229\180\000\000\235\004\000\000\217\250\000\000\006\030\000\000\000\000\000\000\003P\000\000\000\000\000\000\000\000\000\001\016\226\000\000\020\\\000\000\000\000\000\000\000\000\000\000\173D\000\000\027x\000\000\000\000\000\000\135^\000\000\000\000\000\000}F\000\000\173D\000\000\135^\000\000\000\000\000\000\021\252\000\000\216\210\000\000\135^\000\000\000\000\000\000\017t\000\000\000\000\000\000\000\000\000\000\135^\000\000\000\000\000\000\000\000\000\000\133\252\000\000\000\000\000\001\004\030\000\001\016\226\000\000\027\028\000\000}F\000\001\004\222\000\000\226\\\000\000\000\000\000\000\248\206\000\001\n\132\000\000\021\150\000\000\000\172\000\000\018\166\000\000\027~\000\000\226\\\000\000\248\206\000\001\n\132\000\000\000\000\000\000\000\000\000\000\000\000\000\001\0162\000\000\127n\000\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\006\200\000\000\248\144\000\000\000\000\000\000z\128\000\000\021\252\000\000\028\n\000\000\248\206\000\000\000\000\000\001\t\134\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\248\144\000\001\0162\000\000\000\000\000\000\000\000\000\000\000\000\000\001\006\200\000\000\027\188\000\000\000\000\000\000\027\194\000\000\000\000\000\000\248\144\000\001\0162\000\000\000\000\000\000\000\000\000\000\027\212\000\000\000\000\000\000\000\000\000\000\027\218\000\000\031\244\000\000 \n\000\000\025\166\000\000\251\238\000\000#\138\000\000\021\252\000\000\000\000\000\000\248\144\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\252\184\000\000#\138\000\000\021\252\000\000\000\000\000\000\019\226\000\000\252R\000\000\255\190\000\000\000\000\000\001\004\014\000\000\000\000\000\000\028\014\000\000\031\244\000\000 \n\000\000\248\144\000\000\000\000\000\000\020N\000\000\000\000\000\000\000\000\000\000\235\214\000\000\011x\000\000\000\000\000\000\000\000\000\000!\172\000\000\000\000\000\000\216\210\000\000\020\212\000\000\000\000\000\000\133\252\000\000\020\230\000\000\000\000\000\000\000\000\000\000\028d\000\000\243\n\000\000\000\000\000\000p\254\000\000\000\000\000\000\028<\000\000\000\000\000\000\019\186\000\000\216\210\000\000\020\228\000\000\028\018\000\000\216\210\000\000\199&\000\000\000\000\000\000\174p\000\000\200\016\000\000|\004\000\001\011.\000\000\021\146\000\000\011\136\000\000\021\252\000\000\174\236\000\000\000\000\000\000\000\000\000\000\028@\000\000\185H\000\000\000\000\000\000\000\000\000\000\027\206\000\000\000\000\000\000\020\144\000\000\216\210\000\000\025\002\000\000\028(\000\000\216\210\000\000\200\250\000\000\000\000\000\000\174p\000\000\201\228\000\000\028*\000\000\216\210\000\000\202\206\000\000\000\000\000\000\174p\000\000\203\184\000\000\182\246\000\001\007\158\000\000\020\194\000\000\216\210\000\000\026F\000\000\028.\000\000\216\210\000\000\204\162\000\000\000\000\000\000\174p\000\000\205\140\000\000\028:\000\000\216\210\000\000\206v\000\000\000\000\000\000\174p\000\000\207`\000\000\000=\000\000\028h\000\000\000\000\000\000\000\000\000\001\002\b\000\000\000\000\000\000\000\000\000\000\255\130\000\000\000\000\000\001\004\014\000\000\000\000\000\000\028^\000\000\031\244\000\000\"\006\000\000\248\206\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\027:\000\000\252R\000\001\007r\000\000\255\130\000\000\000\000\000\001\004\014\000\000\000\000\000\000\028b\000\000\031\244\000\000\"\006\000\000\248\206\000\000\000\000\000\000\023\234\000\000\000\000\000\000\000\000\000\000\016\020\000\000\000\000\000\000\248\144\000\000\000\000\000\000\028\142\000\000\000\000\000\000\000\000\000\000\027\224\000\000\000\000\000\000\027\250\000\000\000\000\000\000\028\012\000\000\000\000\000\000\000\000\000\000\131L\000\000\028\014\000\000\000\000\000\000\000\000\000\000#\018\000\000\217L\000\000\028\178\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0198\000\000\025\012\000\000\230.\000\000\028\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\028\030\000\000\000\000\000\000#\138\000\000\000\000\000\000\028$\000\000\000\000\000\000\216\210\000\000\000\000\000\000\002\170\000\000\000\000\000\000\000\000\000\000\028*\000\000\000\000\000\000\000\000\000\000\005\240\000\000\000\000\000\000\020\250\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\190\000\000\000\000\000\000\028\n\000\000\000\000\000\000\0060\000\000\000\000\000\000rh\000\000\000\000\000\000\004\230\000\000\000\000\000\000\r\226\000\000\000\000\000\000\0280\000\000\000\000\000\000\175\024\000\000\025D\000\000\000\000\000\000\000\000\000\000\025L\000\000\028B\000\000\000\000\000\000\000\000\000\000\028<\000\000\027d\000\000t\212\000\000\006F\000\001\002\136\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000~\022\000\000\006F\000\001\003\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\nT\000\000\000\000\000\000\000\000\000\000\028\254\000\000\000\000\000\000\181\022\000\000\000\000\000\000\023\020\000\000\029\000\000\000\000\000\000\000\029&\000\000\000\000\000\000u\154\000\000u\154\000\000\180*\000\000\180*\000\000\000\000\000\000\000\000\000\000\179>\000\000\180*\000\000\000\000\000\000\000\000\000\000\000\000\000\000\179>\000\000\180*\000\000\028\130\000\000\000\000\000\000\028\144\000\000\000\000"), (16, "\004\017\004\017\000\006\004\017\001.\004\017\003b\003f\003j\004\017\003n\003\014\004\017\023z\004\017\003\154\003z\004\017\006\"\004\017\004\017\004\017\0079\004\017\004\017\004\017\001\238\003\158\003\162\001n\003~\004\017\0042\0046\014\134\004\017\001v\004\017\004V\003\166\003\130\006*\004Z\005\153\004\017\004\017\004\134\004\138\004\017\004\142\004\154\004\166\004\170\004\178\t~\001j\004\017\004\017\003Z\004q\023~\004\162\n\222\004\017\004\017\004\017\n\226\n\230\n\242\011\006\019\194\007\138\004\017\004\017\004\017\004\017\004\017\004\017\004\017\004\017\004\017\011\130\004\017\007\150\007\154\007\237\004\017\000\242\004\017\004\017\027\130\b\185\011\142\011\166\r\026\007\166\007\170\004\017\r.\004\017\004\017\b\133\004\017\004\017\004\017\004\017\007\237\r\146\019\246\004\017\r\158\004\017\004\017\007i\004\017\004\017\004\017\004\017\004\017\004\017\004\017\007\174\n\250\004\017\004\017\004\017\011\018\005:\r2\t\198\004\017\004\017\004\017\004\017\016I\016I\005\153\016I\016}\016I\001z\005\153\016I\016I\bF\016I\016I\016I\016I\0256\016I\016I\016}\016I\016I\016I\000\242\016I\016I\016I\016I\005\153\016I\019\198\016I\016I\016I\016I\016I\016I\016I\016I\012\250\nB\016I\012\218\016I\007\014\016I\016I\016I\016I\016I\r\014\016I\001\134\016I\027\206\016I\004\174\016I\016I\016I\000\242\001\186\016I\016I\016I\016I\016I\016I\016I\016I\000\242\016I\016I\016I\016I\016I\016I\016I\016I\016I\016I\016I\001\190\016I\016I\016I\016I\016I\b\149\016I\016I\001j\004q\027\214\005\153\016I\016I\016I\016I\n\193\016I\016I\007E\016I\016I\016I\016I\016I\b\149\016I\016I\025:\016I\016I\027\250\016I\016I\016I\016I\016I\016I\016I\016I\016I\016I\016I\016I\016I\016I\015\241\005\153\016I\016I\016I\016I\002\005\002\005\002\005\002\005\028\002\002\005\000\242\n\234\002\005\002\005\002\005\002\005\002\005\002\005\002\005\002\005\002\005\002\005\002\005\002\005\002\005\002\005\002\005\002\005\002\005\002\005\002\005\t\253\002\005\001\150\002\005\002\005\002\005\002\005\002\005\002\005\002\005\002\005\002\005\002\146\002\005\b\149\002\005\022\134\002\005\002\005\002\005\002\005\002\005\002\005\002\005\015\237\002\005\n\238\002\005\n\193\002\005\002\005\002\005\002\170\002\005\002\005\002\005\002\005\002\005\002\005\002\005\002\005\002\005\007f\002\005\002\005\002\005\002\005\002\005\002\005\002\005\002\005\002\005\002\005\002\005\002\005\002\005\002\005\002\005\002\005\002\005\015\241\002\005\002\005\003\"\001\006\002\154\001\194\002\005\002\005\002\005\002\005\002\005\002\005\002\005\002\005\002\005\002\005\002\005\002\005\002\005\022:\0112\002\005\007\238\002\005\002\005\005\178\002\005\002\005\002\005\002\005\002\005\002\005\002\005\002\005\002\005\002\005\002\005\002\005\002\005\002\005\003\174\002\005\002\005\002\005\002\005\002\005\012\177\012\177\005\186\012\177\000\242\012\177\003\178\003\182\012\177\012\177\015\237\012\177\012\177\012\177\012\177\002\182\012\177\012\177\003\186\012\177\012\177\012\177 \186\012\177\012\177\012\177\012\177\004\210\012\177\016\r\012\177\012\177\012\177\012\177\012\177\012\177\012\177\012\177\007\245\005:\012\177$\243\012\177 \190\012\177\012\177\012\177\012\177\012\177\016\r\012\177\004\214\012\177\023b\012\177\002\134\012\177\012\177\012\177\007\245\005\210\012\177\012\177\012\177\012\177\012\177\012\177\012\177\012\177\002\138\012\177\012\177\012\177\012\177\012\177\012\177\012\177\012\177\012\177\012\177\012\177\001\202\012\177\012\177\012\177\012\177\012\177\000\242\012\177\012\177\002\218\005\153\005\153\001\138\012\177\012\177\012\177\012\177\001j\012\177\012\177\004q\012\177\012\177\012\177\012\177\rR\007\137\r\214\012\177\002\226\012\177\012\177\006\254\012\177\012\177\012\177\012\177\012\177\012\177\012\177\012\177\012\177\012\177\012\177\012\177\012\177\012\177\005\153\012\177\012\177\012\177\012\177\012\177\004\189\004\189\012\002\004\189\0126\004\189\005\178 \194\004\189\004\189\nN\004\189\004\189\004\189\004\189\000\242\004\189\004\189\nV\004\189\004\189\004\189\024\226\004\189\004\189\004\189\004\189\nZ\004\189\005\186\004\189\004\189\004\189\004\189\004\189\004\189\004\189\004\189\005\153\014\030\004\189\t\154\004\189\024\230\004\189\004\189\004\189\004\189\004\189\t\198\004\189\000\242\004\189\t6\004\189\tf\004\189\004\189\004\189\031\018\007\137\004\189\004\189\004\189\004\189\004\189\004\189\004\189\004\189\n\142\004\189\004\189\004\189\004\189\004\189\004\189\004\189\004\189\004\189\004\189\004\189\007\002\rB\004\189\004\189\rJ\r\206\006n\004\189\004\189\016v\023\"\t\198\nB\004\189\004\189\004\189\004\189\031\026\004\189\004\189\002\198\004\189\004\189\004\189\004\189\rR\0071\r\214\004\189\023*\004\189\004\189\000\242\004\189\004\189\004\189\004\189\004\189\004\189\004\189\004\189\004\189\004\189\004\189\004\189\004\189\004\189\006V\004\189\004\189\004\189\004\189\004\189\004\173\004\173\nB\004\173\r\146\004\173\b\218\r\158\004\173\004\173\011\182\004\173\004\173\004\173\004\173\t\022\004\173\004\173\r\226\004\173\004\173\004\173\000\242\004\173\004\173\004\173\004\173\002\006\004\173\b\222\004\173\004\173\004\173\004\173\004\173\004\173\004\173\004\173\000\242\r\230\004\173\t\154\004\173\005\n\004\173\004\173\004\173\004\173\004\173\t\198\004\173\005\142\004\173\011\186\004\173\011\242\004\173\004\173\004\173%C\002\202\004\173\004\173\004\173\004\173\004\173\004\173\004\173\004\173\011b\004\173\004\173\004\173\004\173\004\173\004\173\004\173\004\173\004\173\004\173\004\173\002\n\rB\004\173\004\173\rJ\r\206\006Z\004\173\004\173\005\014\027>\002\"\nB\004\173\004\173\004\173\004\173\001\234\004\173\004\173\005&\004\173\004\173\004\173\004\173\rR\005\022\r\214\004\173\027J\004\173\004\173\000\242\004\173\004\173\004\173\004\173\004\173\004\173\004\173\004\173\004\173\004\173\004\173\004\173\004\173\004\173\007\253\004\173\004\173\004\173\004\173\004\173\012\025\012\025\005\n\012\025\t\026\012\025\005\178\001\246\012\025\012\025\005\162\012\025\012\025\012\025\012\025\007\253\012\025\012\025\002:\012\025\012\025\012\025\t\214\012\025\012\025\012\025\012\025\005\153\012\025\005\186\012\025\012\025\012\025\012\025\012\025\012\025\012\025\012\025\n\162\t\222\012\025\t&\012\025\004\"\012\025\012\025\012\025\012\025\012\025\001\154\012\025\001\250\012\025\000\242\012\025\018\026\012\025\012\025\012\025\005\177\005\026\012\025\012\025\012\025\012\025\012\025\012\025\012\025\012\025\000\242\012\025\012\025\012\025\012\025\012\025\012\025\012\025\012\025\012\025\012\025\012\025\006.\012\025\012\025\012\025\012\025\012\025\006\178\012\025\012\025%3\003\210\003\214\005\153\012\025\012\025\012\025\012\025\b\177\012\025\012\025\006>\012\025\012\025\012\025\012\025\012\025\011V\012\025\012\025\005\177\012\025\012\025\0036\012\025\012\025\012\025\012\025\012\025\012\025\012\025\012\025\012\025\012\025\012\025\012\025\012\025\012\025\n\233\005\153\012\025\012\025\012\025\012\025\012)\012)\007\030\012)\000\242\012)\005\153\020\158\012)\012)\005\153\012)\012)\012)\012)\001\234\012)\012)\003\234\012)\012)\012)\t*\012)\012)\012)\012)\021\214\012)\006\001\012)\012)\012)\012)\012)\012)\012)\012)\000\242\t\250\012)\004\145\012)\tz\012)\012)\012)\012)\012)\b\250\012)\000\242\012)\006\001\012)\018B\012)\012)\012)\005\002\023z\012)\012)\012)\012)\012)\012)\012)\012)\0079\012)\012)\012)\012)\012)\012)\012)\012)\012)\012)\012)\020\158\012)\012)\012)\012)\012)\n\233\012)\012)\003j\n\n\n\229\005\146\012)\012)\012)\012)\020\182\012)\012)\021\238\012)\012)\012)\012)\012)\023~\012)\012)\003\238\012)\012)\020f\012)\012)\012)\012)\012)\012)\012)\012)\012)\012)\012)\012)\012)\012)\n\130\t\198\012)\012)\012)\012)\012!\012!\000\242\012!\tn\012!\024b\020\158\012!\012!\004n\012!\012!\012!\012!\n\134\012!\012!\t\202\012!\012!\012!\b\146\012!\012!\012!\012!\022\170\012!\020n\012!\012!\012!\012!\012!\012!\012!\012!\020\182\nB\012!\003\"\012!\b\150\012!\012!\012!\012!\012!\t\198\012!\n\229\012!\n\006\012!\018j\012!\012!\012!\000\242\021n\012!\012!\012!\012!\012!\012!\012!\012!\024\218\012!\012!\012!\012!\012!\012!\012!\012!\012!\012!\012!\020\158\012!\012!\012!\012!\012!\000\242\012!\012!\005\030\030\242\007:\nB\012!\012!\012!\012!\020\182\012!\012!\022\194\012!\012!\012!\012!\012!\r\146\012!\012!\r\158\012!\012!\000\242\012!\012!\012!\012!\012!\012!\012!\012!\012!\012!\012!\012!\012!\012!\n\190\t\198\012!\012!\012!\012!\012\r\012\r\011-\012\r\bf\012\r\005\178\001\234\012\r\012\r\n\018\012\r\012\r\012\r\012\r\n\194\012\r\012\r\000\242\012\r\012\r\012\r\022~\012\r\012\r\012\r\012\r\n:\012\r\005\186\012\r\012\r\012\r\012\r\012\r\012\r\012\r\012\r\020\182\nB\012\r\021r\012\r\003\222\012\r\012\r\012\r\012\r\012\r\t\198\012\r\002\242\012\r\011~\012\r\018\146\012\r\012\r\012\r\000\242\011\r\012\r\012\r\012\r\012\r\012\r\012\r\012\r\012\r\025&\012\r\012\r\012\r\012\r\012\r\012\r\012\r\012\r\012\r\012\r\012\r\002E\012\r\012\r\012\r\012\r\012\r\tF\012\r\012\r\011-\005\190\001\234\nB\012\r\012\r\012\r\012\r\n\162\012\r\012\r\021\166\012\r\012\r\012\r\012\r\012\r\000\n\012\r\012\r\004r\012\r\012\r\000\242\012\r\012\r\012\r\012\r\012\r\012\r\012\r\012\r\012\r\012\r\012\r\012\r\012\r\012\r\n\218\t\198\012\r\012\r\012\r\012\r\012\021\012\021\004\018\012\021\002E\012\021\005\178\003\226\012\021\012\021\021\250\012\021\012\021\012\021\012\021\025n\012\021\012\021\026~\012\021\012\021\012\021\031:\012\021\012\021\012\021\012\021\005\198\012\021\005\186\012\021\012\021\012\021\012\021\012\021\012\021\012\021\012\021\r\146\nB\012\021\r\158\012\021\005\n\012\021\012\021\012\021\012\021\012\021\t\198\012\021\012\002\012\021\012\022\012\021\018\182\012\021\012\021\012\021\000\242\017\198\012\021\012\021\012\021\012\021\012\021\012\021\012\021\012\021\025B\012\021\012\021\012\021\012\021\012\021\012\021\012\021\012\021\012\021\012\021\012\021\017\202\012\021\012\021\012\021\012\021\012\021\011\202\012\021\012\021\021\170\022R\003j\nB\012\021\012\021\012\021\012\021\021\254\012\021\012\021\n\"\012\021\012\021\012\021\012\021\012\021\005\206\012\021\012\021\025r\012\021\012\021\000\242\012\021\012\021\012\021\012\021\012\021\012\021\012\021\012\021\012\021\012\021\012\021\012\021\012\021\012\021\"\154\t\198\012\021\012\021\012\021\012\021\012\017\012\017\004f\012\017\r\138\012\017\r\186\004r\012\017\012\017\022\142\012\017\012\017\012\017\012\017\"\158\012\017\012\017\012\146\012\017\012\017\012\017#\022\012\017\012\017\012\017\012\017\011\017\012\017\bm\012\017\012\017\012\017\012\017\012\017\012\017\012\017\012\017\007J\nB\012\017\012\154\012\017\005\030\012\017\012\017\012\017\012\017\012\017\t\002\012\017\004v\012\017\bm\012\017\018\218\012\017\012\017\012\017\000\242\022V\012\017\012\017\012\017\012\017\012\017\012\017\012\017\012\017\000\242\012\017\012\017\012\017\012\017\012\017\012\017\012\017\012\017\012\017\012\017\012\017\020\158\012\017\012\017\012\017\012\017\012\017\005*\012\017\012\017\017\186\006-\004n\011\017\012\017\012\017\012\017\012\017\022\146\012\017\012\017\007R\012\017\012\017\012\017\012\017\012\017\005\226\012\017\012\017\0062\012\017\012\017\005\178\012\017\012\017\012\017\012\017\012\017\012\017\012\017\012\017\012\017\012\017\012\017\012\017\012\017\012\017\017\174\011\017\012\017\012\017\012\017\012\017\012\029\012\029\005\186\012\029\000\242\012\029\007\002\005\222\012\029\012\029\t\186\012\029\012\029\012\029\012\029\t\154\012\029\012\029\017\178\012\029\012\029\012\029\n\150\012\029\012\029\012\029\012\029\t\154\012\029\b\169\012\029\012\029\012\029\012\029\012\029\012\029\012\029\012\029\020\182\016\158\012\029\b\170\012\029\006v\012\029\012\029\012\029\012\029\012\029\b\169\012\029\000\242\012\029\b\169\012\029\019\006\012\029\012\029\012\029\021Z\012J\012\029\012\029\012\029\012\029\012\029\012\029\012\029\012\029\007\002\012\029\012\029\012\029\012\029\012\029\012\029\012\029\012\029\012\029\012\029\012\029\020\158\012\029\012\029\012\029\012\029\012\029\000\242\012\029\012\029\018\246\001\006\004n\001\194\012\029\012\029\012\029\012\029\027\210\012\029\012\029\027\218\012\029\012\029\012\029\012\029\012\029\007M\012\029\012\029\024\162\012\029\012\029\005\178\012\029\012\029\012\029\012\029\012\029\012\029\012\029\012\029\012\029\012\029\012\029\012\029\012\029\012\029\017\242\007z\012\029\012\029\012\029\012\029\012-\012-\005\186\012-\000\242\012-\000\242\006\186\012-\012-\006:\012-\012-\012-\012-\007I\012-\012-\017\246\012-\012-\012-\006F\012-\012-\012-\012-\006N\012-\b\149\012-\012-\012-\012-\012-\012-\012-\012-\020\182\016\178\012-\016\242\012-\002J\012-\012-\012-\012-\012-\b\149\012-\000\242\012-\b\149\012-\019*\012-\012-\012-\021~\012v\012-\012-\012-\012-\012-\012-\012-\012-\018\018\012-\012-\012-\012-\012-\012-\012-\012-\012-\012-\012-\020\158\012-\012-\012-\012-\012-\001\250\012-\012-\018\022\024\166\001\234\t\202\012-\012-\012-\012-\005\246\012-\012-\022\230\012-\012-\012-\012-\012-\t\209\012-\012- f\012-\012-\005\178\012-\012-\012-\012-\012-\012-\012-\012-\012-\012-\012-\012-\012-\012-\n\006\n\238\012-\012-\012-\012-\012%\012%\005\186\012%\000\242\012%\005\178\n&\012%\012%\027\150\012%\012%\012%\012%\000\242\012%\012%\017\158\012%\012%\012%\r\226\012%\012%\012%\012%\016v\012%\005\186\012%\012%\012%\012%\012%\012%\012%\012%\020\182\017b\012%\017\162\012%\018\142\012%\012%\012%\012%\012%\t\198\012%\001\250\012%\028:\012%\019N\012%\012%\012%\024\150\012\182\012%\012%\012%\012%\012%\012%\012%\012%\025^\012%\012%\012%\012%\012%\012%\012%\012%\012%\012%\012%\nV\012%\012%\012%\012%\012%\016\170\012%\012%\022\234\028\162\012R\nB\012%\012%\012%\012%\n\162\012%\012%\027\154\012%\012%\012%\012%\012%\006z\012%\012%\006\146\012%\012%\000\242\012%\012%\012%\012%\012%\012%\012%\012%\012%\012%\012%\012%\012%\012%\023\n\t\198\012%\012%\012%\012%\012\153\012\153\000\242\012\153\017\226\012\153\005\178\012~\012\153\012\153\006\190\012\153\012\153\012\153\012\153\025z\012\153\012\153\018:\012\153\012\153\012\153\017\198\012\153\012\153\012\153\012\153\017\230\012\153\005\186\012\153\012\153\012\153\012\153\012\153\012\153\012\153\012\153\028F\nB\012\153\018>\012\153\019\002\012\153\012\153\012\153\012\153\012\153\t\198\012\153\000\242\012\153\020\158\012\153\019j\012\153\012\153\012\153\000\242\028\166\012\153\012\153\012\153\012\153\012\153\012\153\012\153\012\153$J\012\153\012\153\012\153\012\153\012\153\012\153\012\153\012\153\012\153\012\153\012\153\020\158\012\153\012\153\012\153\012\153\012\153\017Z\012\153\012\153\026\250\006\214\012\190\nB\012\153\012\153\012\153\012\153\001\234\012\153\012\153\028\006\012\153\012\153\012\153\012\153\012\153\007B\012\153\012\153\bR\012\153\012\153\000\242\012\153\012\153\012\153\012\153\012\153\012\153\012\153\012\153\012\153\012\153\012\153\012\153\012\153\012\153\018b\028N\012\153\012\153\012\153\012\153\004\169\004\169\000\242\004\169\017\158\004\169\005\178\bj\004\169\004\169\020\182\004\169\004\169\004\169\004\169\n\001\004\169\004\169\018f\004\169\004\169\004\169\018\018\004\169\004\169\004\169\004\169\018\178\004\169\005\186\004\169\004\169\004\169\004\169\004\169\004\169\004\169\004\169\020\182\021\154\004\169\b\190\004\169\019\158\004\169\004\169\004\169\004\169\004\169\004\161\004\169\023\162\004\169\020\158\004\169\004\133\004\169\004\169\004\169\024\178\020\130\004\169\004\169\004\169\004\169\004\169\004\169\004\169\004\169\017\226\004\169\004\169\004\169\004\169\004\169\004\169\004\169\004\169\004\169\004\169\004\169\020\134\rB\004\169\004\169\rJ\r\206\023\146\004\169\004\169!\n\t:\019&\000\242\004\169\004\169\004\169\004\169\n\189\004\169\004\169%#\004\169\004\169\004\169\004\169\rR\nV\r\214\004\169\028r\004\169\004\169\005\178\004\169\004\169\004\169\004\169\004\169\004\169\004\169\004\169\004\169\004\169\004\169\004\169\004\169\004\169\004\161\004\169\004\169\004\169\004\169\004\169\002q\002q\005\186\002q\nV\002q\000\242\000\242\003j\002q\020\182\003\014\002q\r\134\002q\005\153\003z\002q\018:\002q\002q\002q\005\153\002q\002q\002q\001\238\007Z\r\190\011E\003~\002q\002q\002q\002q\002q\r\198\002q\005\153\021\182\003\130\019\170\004Z\031\030\002q\002q\002q\002q\002q\022\030\004\154\000\242\001\194\011E\002q\n\189\002q\002q\003Z!\014\023\250\004\162\n\222\002q\002q\002q\n\226\n\230\n\242\021\222\017\254\007\138\002q\002q\002q\002q\002q\002q\002q\002q\002q\030\230\rB\007\150\007\154\rJ\r\206\022\178\002q\002q\0071\0075\021\226\007^\002q\007\166\007\170\002q\031\022\002q\002q\tZ\002q\002q\002q\002q\018\006\016\133\018\130\002q\022\182\002q\002q\005\178\002q\002q\002q\002q\002q\002q\002q\007\174\n\250\002q\002q\002q\011\018\005:\017\174\007\002\002q\002q\002q\002q\012\129\012\129\005\186\012\129\bu\012\129\002\246\027\190\003j\012\129\tb\003\014\012\129\012\129\012\129\017\242\003z\012\129\018\214\012\129\012\129\012\129\t\166\012\129\012\129\012\129\001\238\002a\012\129\005\153\003~\012\129\012\129\012\129\012\129\012\129\012\129\012\129\005\153\019J\003\130\027\138\004Z\031\170\012\129\012\129\012\129\012\129\012\129\004\157\004\154\000\242\001\194\020\158\012\129\000\242\012\129\012\129\003Z\011\226\026:\004\162\n\222\012\129\012\129\012\129\n\226\n\230\n\242\027\254\012\129\007\138\012\129\012\129\012\129\012\129\012\129\012\129\012\129\012\129\012\129 J\012\129\007\150\007\154\012\129\012\129\031Z\012\129\012\129\028\142\t\249\n\005\000\242\012\129\007\166\007\170\012\129\005\n\012\129\012\129\000\242\012\129\012\129\012\129\012\129\012\129\011\238\012\129\012\129\t\245\012\129\012\129\031\158\012\129\012\129\012\129\012\129\012\129\012\129\012\129\007\174\n\250\012\129\012\129\012\129\011\018\005:\004\157\031\162\012\129\012\129\012\129\012\129\012}\012}\031z\012}\031\166\012}\005\178\001\234\003j\012}\020\182\003\014\012}\012}\012} >\003z\012}\016\145\012}\012}\012}$\170\012}\012}\012}\001\238\t\245\012}\005\186\003~\012}\012}\012}\012}\012}\012}\012}\028N\022\218\003\130 \158\004Z\nV\012}\012}\012}\012}\012}\005U\004\154\"^\001\194\"\138\012}\000\242\012}\012}\003Z\012\006 \202\004\162\n\222\012}\012}\012}\n\226\n\230\n\242\nV\012}\007\138\012}\012}\012}\012}\012}\012}\012}\012}\012} \206\012}\007\150\007\154\012}\012}\"\230\012}\012}\031\218\012\n\012\018\000\242\012}\007\166\007\170\012}\012\"\012}\012}\012.\012}\012}\012}\012}\012}\012^\012}\012}\012\158\012}\012}\005\178\012}\012}\012}\012}\012}\012}\012}\007\174\n\250\012}\012}\012}\011\018\005:\005U\"\190\012}\012}\012}\012}\002\205\002\205\005\186\002\205\005\178\002\205\012\166\"\178\003j\002\205\007]\003\014\002\205\r\134\002\205\"\238\003z\002\205\016\005\002\205\002\205\002\205\"\142\002\205\002\205\002\205\001\238\005\186\r\190\018b\003~\002\205\002\205\002\205\002\205\002\205\r\198\002\205\016\005\007]\003\130\007]\004Z\012\174\002\205\002\205\002\205\002\205\002\205\005Q\004\154\000\242\001\194\019\182\002\205\005\n\002\205\002\205\003Z\000\242#B\004\162\n\222\002\205\002\205\002\205\n\226\n\230\n\242\012\230\017\254\007\138\002\205\002\205\002\205\002\205\002\205\002\205\002\205\002\205\002\205\rF\002\205\007\150\007\154#\134\002\205\005\153\002\205\002\205\005\153\005\153\r\142\000\242\002\205\007\166\007\170\002\205\"\194\002\205\002\205\005\153\002\205\002\205\002\205\002\205\005\153%\019\012\026\002\205\005\153\002\205\002\205\005\026\002\205\002\205\002\205\002\205\002\205\002\205\002\205\007\174\n\250\002\205\002\205\002\205\011\018\005:\005Q\005\153\002\205\002\205\002\205\002\205\005\153\005\153\005\153\002j\005\153\005\153\005\153\005\153\005\153\005\153\005\153\005\153\000\242\005\153\000\242\005\153\005\153\000\242\005\153\005\153\005\153\005\153\005\153\005\153\005\153\005\153\005\153\005\153\005\153\005\153\005\153\r\182\005\153\005\153\b!\r\194\005\153\005\153\005\153\r\210\005\153\005\153\005\153\005\153\005\153\016\150\005\153\005\153\005\153\005\153\005\153\005\153\005\153\005\153\005\153\b!\005\153\005\153\005\153\005\153\005\153\005\153\005\153\005\153\005\153\000\242\005\153\005\153\005\153\005\153\005\153\005\153\005\153\005\153\016\190\005\153\005\153\016\214\030\222\005\153\005\153\005\153\005\153\005\153\005\153\005\153\005\153\005\153\001f\005\153\005\153\005\153\005\153\005\153\005\153\005\153\005\153\005\153\005\153\005\153\000\242\005\153\005\153\005\153\001~\003\154\001\142\005\153\001.\003\210\003\214\017n\005\153\019\210\005\153\002E\002E\003\158\003\162\005\153\005\153\005\153\005\153\t\158\001\185\005\153\005\153\005\153\005\153\003\166\000\197\005\153\000\197\000\242\000\197\000\197\000\197\000\197\000\197\000\197\000\197\000\197\000\n\000\197\001\185\000\197\000\197\000\242\000\197\000\197\019\218\022.\000\197\000\197\019\234\000\197\000\197\000\197\000\197\005\177\000\197 \006\000\197\000\197\020\n\015\205\000\197\000\197\000\197\n\174\000\197\000\197\000\197\002E\000\197\0222\000\197\000\197\000\197\000\197\000\197\000\197\000\197\000\197\000\197\015\205\015\205\000\197\000\197\015\205\n\178\000\197\000\197\000\197\031R\000\197\000\197\000\197\000\197\000\197\000\197\000\197\000\197\000\197\004\"\023>\000\197\023f\028.\000\197\004\194\000\197\000\197\000\197\000\197\001\185\000\197\002E\023\134\n\162\0111\000\197\000\197\000\197\000\197\000\197\000\197\000\197\000\197\000\197\000\242\004\153\023\138\000\197\000\242\012\250\001\185\020\158\000\226\002E\002E\025\154\000\197\000\n\001\185\006\229\r\014$>\017.\000\197\000\197\000\197\000\197\022^\002E\000\197\000\197\000\197\000\197\002\177\002\177\002E\002\177\023\178\002\177\015\205\000\n\003j\002\177\023\206\003\014\002\177\n\234\002\177\002E\003z\002\177\022b\002\177\002\177\002\177\r\170\002\177\002\177\002\177\001\238\024\002\024\018\n\182\003~\002\177\002\177\002\177\002\177\002\177\006\229\002\177\002E\001\006\003\130\001\194\004Z\024&\002\177\002\177\002\177\002\177\002\177\0111\004\154\004\153\n\246\026\246\002\177\006\229\002\177\002\177\003Z\n\189\024R\004\162\n\222\002\177\002\177\002\177\n\226\n\230\n\242\020\182\t>\007\138\002\177\002\177\002\177\002\177\002\177\002\177\002\177\002\177\002\177\024^\rB\007\150\007\154\rJ\r\206\002E\002\177\002\177\002E$B\003\210\003\214\002\177\007\166\007\170\002\177\022\246\002\177\002\177\000\242\002\177\002\177\002\177\002\177\rR\025\194\r\214\002\177\024\238\002\177\002\177\000\n\002\177\002\177\002\177\002\177\002\177\002\177\002\177\007\174\n\250\002\177\002\177\002\177\011\018\005:\024\246\002E\002\177\002\177\002\177\002\177\002\217\002\217\0262\002\217\026F\002\217\026J\n&\004r\002\217\002E\002E\002\217\b\186\002\217#J\n\189\002\217\011I\002\217\002\217\002\217\000\n\002\217\002\217\002\217\003j\011\017\003\210\026\242\027\014\002\217\002\217\002\217\002\217\002\217\027&\002\217\002E\003j\002E\002E\011I\027\006\002\217\002\217\002\217\002\217\002\217$\174\0116\001\250\001\194\002E\002\217\027\166\002\217\002\217\027\170\000\242\027\226\020\138\021\130\002\217\002\217\002\217\021\186\021\242\022\002\027\230\004f\b\173\002\217\002\217\002\217\002\217\002\217\002\217\002\217\002\217\002\217\001\006\rB\001\194\023Z\rJ\r\206\003\014\002\217\002\217\011\029\b\173\000\242\020\158\002\217\b\173\028\014\002\217\028\018\002\217\002\217\028*\002\217\002\217\002\217\002\217\rR\020\234\r\214\002\217\rj\002\217\002\217\011\029\002\217\002\217\002\217\002\217\002\217\002\217\002\217\028\214\rV\002\217\002\217\002\217\023^\021\002\028\218%_\002\217\002\217\002\217\002\217\002\213\002\213\000\242\002\213\019\162\002\213\019\174\bz\023j\002\213\030Z\b\030\002\213\028\254\002\213\001\234\001\197\002\213\b\154\002\213\002\213\002\213\b\166\002\213\002\213\002\213\002E\002E\026\206\029\002\029\018\002\213\002\213\002\213\002\213\002\213\001\197\002\213\007\170\029\"\029.\002E\023r#\142\002\213\002\213\002\213\002\213\002\213\030f\020\182\bz\b\137\000\n\002\213\b\030\002\213\002\213\029b\005\002\029f\029\202\b\154\002\213\002\213\002\213\b\166\030\026\004-\002E\012\250\011\029\002\213\002\213\002\213\002\213\002\213\002\213\002\213\002\213\002\213\r\014\rB\004-\002E\rJ\r\206\000\242\002\213\002\213\029\250\030\002\030\018\005n\002\213\000\n\005M\002\213\030b\002\213\002\213\030\130\002\213\002\213\002\213\002\213\rR\001\197\r\214\002\213\030\194\002\213\002\213\030\238\002\213\002\213\002\213\002\213\002\213\002\213\002\213\015\213\023\230\002\213\002\213\002\213\002E\012\250\001\197\005\153\002\213\002\213\002\213\002\213\002\181\002\181\001\197\002\181\r\014\002\181\000\242\015\213\015\213\002\181\001\197\015\213\002\181\030\254\002\181\031&\001\221\002\181\001\234\002\181\002\181\002\181\017\190\002\181\002\181\002\181\031*\t\198\0316\031F\026\n\002\181\002\181\002\181\002\181\002\181\001\221\002\181\017\218\004r\017\234\005M\031b\031r\002\181\002\181\002\181\002\181\002\181\031\134\t\213\018\n\000\242\026\166\002\181\bz\002\181\002\181\031\178\b\030\011\194\031\182$\014\002\181\002\181\002\181\b\154\0182\031\194\018Z\b\166\nB\002\181\002\181\002\181\002\181\002\181\002\181\002\181\002\181\002\181\001\006\rB\001\194\031\210\rJ\r\206\015\213\002\181\002\181\031\230\000\242\000\242 \218\002\181!2!Z\002\181!\226\002\181\002\181!\234\002\181\002\181\002\181\002\181\rR\001\221\r\214\002\181\"\002\002\181\002\181 2\002\181\002\181\002\181\002\181\002\181\002\181\002\181\"\014\003j\002\181\002\181\002\181\0232\012\250\001\221\003\246\002\181\002\181\002\181\002\181\002i\002i\001\221\002i\r\014\002i\001\238\bz\004r\002i\001\221\b\030\002i\"v\002i\001\234\001\213\002i\b\154\002i\002i\002i\b\166\002i\002i\002i\"\202#*\"\222\"\242\004J\002i\002i\002i\002i\002i\001\213\002i\003Z#:#N#f\018\250#\146\002i\002i\002i\002i\002i#\170\0116#\198\022>#\238\002i$*\002i\002i\019\030\005\002\019B\020\138\021\130\002i\002i\002i\021\186\021\242\022\002$Z$f\t\146\002i\002i\002i\002i\002i\002i\002i\002i\002i$n\002i$w$\135$\154\002i\023Z\002i\002i\003\014$\182$\211\005n\002i$\227\0061\002i$\255\002i\002i%S\002i\002i\002i\002i\016\t\001\213\030V\002i%o\002i\002i%z\012\250\002i\002i\002i\002i\002i\002i%\207%\227\002i\002i\r\014\016\t\012\250\001\213\023^\002i\002i\002i\002i\011\001\011\001\001\213\011\001\r\014\011\001\015\209%\235&'\011\001\001\213\023j\011\001\030z\011\001&/\001\205\011\001\000\000\011\001\011\001\011\001\000\000\011\001\011\001\011\001\015\209\015\209\000\000\000\000\015\209\011\001\011\001\011\001\011\001\011\001\001\205\011\001\000\000\000\000\004N\007\170\b\141\003j\011\001\011\001\011\001\011\001\011\001\000\000\003\246\000\000\030\134\000\000\011\001\000\000\011\001\011\001\000\000\000\000\000\000\001\238\b\141\011\001\011\001\011\001\b\141\000\000\000\000\000\000\030\026\000\242\011\001\011\001\011\001\011\001\011\001\011\001\011\001\011\001\011\001\000\000\011\001\000\000\000\000\004J\011\001\000\000\011\001\011\001\000\000\002v\000\000\003Z\011\001\000\000\000\000\011\001\000\000\011\001\011\001\b-\011\001\011\001\011\001\011\001\015\209\001\205\000\000\011\001\000\000\011\001\011\001\000\000\012\250\011\001\011\001\011\001\011\001\011\001\011\001\000\000\b-\011\001\011\001\r\014\t\146\012\250\001\205\000\000\011\001\011\001\011\001\011\001\002\209\002\209\001\205\002\209\r\014\002\209\t\137\000\000\b\141\002\209\001\205\000\000\002\209\000\000\002\209\000\000\000\000\002\209\000\000\002\209\002\209\002\209\000\000\002\209\002\209\002\209\000\000\004\222\000\000\000\000\000\000\002\209\002\209\002\209\002\209\002\209\000\000\002\209\003\174\001\206\000\000\t\137\000\000\000\000\002\209\002\209\002\209\002\209\002\209\000\000\003\178\003\182\012\138\000\000\002\209\t\137\002\209\002\209\000\000\t\137\011v\000\000\003\186\002\209\002\209\002\209\t\137\016\001\004r\000\000\t\137\001\210\002\209\002\209\002\209\002\209\002\209\002\209\002\209\002\209\002\209\000\000\002\209\000\000\001\214\t:\002\209\016\001\002\209\002\209\002b\000\000\000\000\002f\002\209\000\000\000\242\002\209\000\000\002\209\002\209\000\000\002\209\002\209\002\209\002\209\000\000\002r\000\000\002\209\007\242\002\209\002\209\000\000\r\238\002\209\002\209\002\209\002\209\002\209\002\209\004\182\004\186\002\209\002\209\002\209\b\206\000\000\004\198\000\000\002\209\002\209\002\209\002\209\n\241\n\241\002~\n\241\000\000\n\241\rU\000\000\000\000\n\241\000\000\bz\n\241\000\000\n\241\b\030\012\142\n\241\000\000\n\241\n\241\n\241\b\154\n\241\n\241\n\241\b\166\000\000\000\000\000\000\000\000\n\241\n\241\n\241\n\241\n\241\000\000\n\241\b\157\000\000\024\202\rU\000\000\006\005\n\241\n\241\n\241\n\241\n\241\000\000\b\254\003j\002\130\000\000\n\241\rU\n\241\n\241\b\157\rU\016\234\000\000\b\157\n\241\n\241\n\241\rU\006\005\000\000\n\162\rU\b\198\n\241\n\241\n\241\n\241\n\241\n\241\n\241\n\241\n\241\000\000\n\241\000\000\000\242\000\000\n\241\t\245\n\241\n\241\t\245\000\000\b\202\000\000\n\241\004f\000\000\n\241\023Z\n\241\n\241\003\014\n\241\n\241\n\241\n\241\000\000\011\029\031Z\n\241\020\158\n\241\n\241\000\000\012\250\n\241\n\241\n\241\n\241\n\241\n\241\000\000\000\000\n\241\n\241\r\014\b\157\rj\000\000\t\245\n\241\n\241\n\241\n\241\004\r\004\r\000\242\004\r\024\206\004\r\023^\000\000\000\000\004\r\000\000\t\245\004\r\000\000\004\r\000\000\001\177\014.\012\250\004\r\014\130\004\r\023j\004\r\004\r\004\r\000\000\000\000\000\000\r\014\000\000\014\150\014\222\014\246\014\174\015\014\001\177\004\r\000\000\000\000\000\000\t\245\000\000\000\000\004\r\004\r\015&\015>\004\r\000\000\000\000\bz\007\170\000\000\004\r\b\030\015V\004\r\000\000\000\000\000\000\000\000\b\154\004\r\004\r\000\242\b\166\020\182\000\000\000\000\t\245\000\000\004\r\004\r\014F\014\198\015n\015\134\015\182\004\r\004\r\"\022\004\r\000\000\000\000\000\000\004\r\012\250\004\r\015\206\000\000\000\000\000\000\000\000\004\r\000\000\011\029\004\r\r\014\004\r\015\230\000\000\004\r\004\r\004\r\004\r\000\000\001\177\000\000\004\r\000\000\004\r\004\r\000\000\016F\004\r\004\r\016^\015\158\004\r\004\r\003z\000\000\004\r\015\254\004\r\000\000\000\000\001\177\000\000\004\r\004\r\016\022\016.\0031\0031\001\177\0031\007\214\0031\b\145\000\000\000\000\0031\020\190\000\000\0031\000\000\0031\000\000\000\000\0031\007\218\0031\0031\0031\025\018\0031\0031\0031\b\145\000\000\000\000\000\000\b\145\0031\0031\0031\0031\0031\000\000\0031\000\000\000\000\000\000\000\000\007\138\025\022\0031\0031\0031\0031\0031\000\000\000\000\000\000\"\166\000\000\0031\000\000\0031\0031\000\000\000\000\002E\000\000\000\000\0031\0031\0031\007\166\000\000\000\000\000\000\000\000\000\242\0031\0031\0031\0031\0031\0031\0031\0031\0031\000\000\0031\000\000\023Z\000\000\0031\003\014\0031\0031\000\n\000\000\007\174\000\000\0031\000\000\000\242\0031\000\000\0031\0031\000\000\0031\0031\0031\0031\b\145\000\000\002E\0031\000\000\0031\0031\000\000\012\250\0031\0031\0031\0031\0031\0031\002E\002E\0031\0031\r\014\023^\027v\000\000\000\000\0031\0031\0031\0031\003-\003-\012\250\003-\025\026\003-\000\242\025*\023j\003-\000\000\bz\003-\r\014\003-\b\030\"\170\003-\000\n\003-\003-\003-\b\154\003-\003-\003-\b\166\000\000\000\000\000\000\000\000\003-\003-\003-\003-\003-\002E\003-\007\170\000\000\000\000\r*\000\000\000\000\003-\003-\003-\003-\003-\002E\002E\000\000\000\000\000\000\003-\bz\003-\003-\000\000\b\030\000\000\000\000\000\000\003-\003-\003-\b\154\030.\000\000\000\000\b\166\000\000\003-\003-\014F\003-\003-\003-\003-\003-\003-\000\000\003-\000\000\002J\000\000\003-\003\014\003-\003-\000\000\000\000\000\242\000\000\003-\000\000\000\000\003-\000\000\003-\003-\000\000\003-\003-\003-\003-\000\000\000\000\000\000\003-\000\000\003-\003-\000\000\003-\003-\003-\003-\003-\003-\003-\000\000\000\000\003-\003-\003-$\146\016\254\001\250\000\000\003-\003-\003-\003-\003\001\003\001\000\000\003\001\000\000\003\001\000\242\017\006\023j\003\001\003j\017\018\003\001\003\014\003\001\000\000\000\000\003\001\017\030\003\001\003\001\003\001\017*\003\001\003\001\003\001\000\000\003j\000\000\000\000\000\000\003\001\003\001\003\001\003\001\003\001\000\000\003\001\007\170\000\000\000\000\t\129\000\000\000\000\003\001\003\001\003\001\003\001\003\001\000\000\000\000\000\000\026r\000\000\003\001\t\129\003\001\003\001\000\000\b\030\000\000\000\000\000\000\003\001\003\001\003\001\t\129\000\000\023j\r\218\t\129\004f\003\001\003\001\003\001\003\001\003\001\003\001\003\001\003\001\003\001\000\000\003\001\000\000\003j\017\150\003\001\017\166\003\001\003\001\000\000\000\000\t\157\000\000\003\001\000\000\000\000\003\001\007\170\003\001\003\001\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\012\250\003\001\003\001\003\001\003\001\003\001\003\001\000\000\000\000\003\001\003\001\r\014\018\134\t\157\004f\000\000\003\001\003\001\003\001\003\001\002\253\002\253\000\000\002\253\000\000\002\253\000\242\t\157\018\170\002\253\018\206\b\030\002\253\000\000\002\253\000\000\000\000\002\253\t\157\002\253\002\253\002\253\t\157\002\253\002\253\002\253\000\000\000\000\000\000\000\000\000\000\002\253\002\253\002\253\002\253\002\253\000\000\002\253\t\233\000\000\000\000\t\185\t\233\000\000\002\253\002\253\002\253\002\253\002\253\000\000\000\000\000\000\000\000\000\000\002\253\bz\002\253\002\253\000\000\b\030\000\000\000\000\000\000\002\253\002\253\002\253\t\185\000\000\000\000\000\000\t\185\000\000\002\253\002\253\014F\002\253\002\253\002\253\002\253\002\253\002\253\000\000\002\253\t\233\000\000\000\000\002\253\000\000\002\253\002\253\000\000\000\000\t\177\000\000\002\253\000\000\000\000\002\253\000\000\002\253\002\253\000\000\002\253\002\253\002\253\002\253\000\000\t\233\000\000\002\253\000\000\002\253\002\253\000\000\002\253\002\253\002\253\002\253\002\253\002\253\002\253\000\000\000\000\002\253\002\253\002\253\000\000\t\177\000\000\000\000\002\253\002\253\002\253\002\253\003\025\003\025\000\000\003\025\000\000\003\025\000\242\017B\000\000\003\025\000\000\t\177\003\025\006\030\003\025\000\000\000\000\003\025\t\177\003\025\003\025\003\025\t\177\003\025\003\025\003\025\000\000\000\000\000\000\000\000\000\000\003\025\003\025\003\025\003\025\003\025\000\000\003\025\t\229\000\000\000\000\t}\t\229\000\000\003\025\003\025\003\025\003\025\003\025\000\000\000\000\000\000\000\000\000\000\003\025\t}\003\025\003\025\000\000\b\030\000\000\000\000\000\000\003\025\003\025\003\025\t}\000\000\000\000\000\000\t}\000\000\003\025\003\025\003\025\003\025\003\025\003\025\003\025\003\025\003\025\000\000\003\025\t\229\000\000\000\000\003\025\000\000\003\025\003\025\000\000\000\000\000\242\000\000\003\025\000\000\000\000\003\025\000\000\003\025\003\025\000\000\003\025\003\025\003\025\003\025\000\000\t\229\000\000\003\025\000\000\003\025\003\025\000\000\012\250\003\025\003\025\003\025\003\025\003\025\003\025\000\000\000\000\003\025\003\025\r\014\000\000\020Z\000\000\000\000\003\025\003\025\003\025\003\025\003\021\003\021\000\000\003\021\000\000\003\021\000\000\017\006\000\000\003\021\000\000\017\018\003\021\006\030\003\021\000\000\000\000\014.\017\030\003\021\003\021\003\021\017*\003\021\003\021\003\021\000\000\000\000\000\000\000\000\000\000\003\021\003\021\003\021\014\174\003\021\000\000\003\021\000\000\000\000\000\000\000\000\000\000\000\000\003\021\003\021\003\021\003\021\003\021\000\000\000\000\000\000\000\000\000\000\003\021\000\000\003\021\003\021\000\000\000\000\000\000\000\000\000\000\003\021\003\021\003\021\000\000\000\000\000\000\000\000\000\000\000\000\003\021\003\021\014F\014\198\003\021\003\021\003\021\003\021\003\021\000\000\003\021\000\000\000\000\000\000\003\021\000\000\003\021\003\021\000\000\000\000\000\242\000\000\003\021\000\000\000\000\003\021\000\000\003\021\003\021\000\000\003\021\003\021\003\021\003\021\000\000\020\206\000\000\003\021\000\000\003\021\003\021\000\000\003\021\003\021\003\021\003\021\003\021\003\021\003\021\000\000\000\000\003\021\003\021\003\021\000\000\000\000\000\000\000\000\003\021\003\021\003\021\003\021\0039\0039\000\000\0039\000\000\0039\000\000\bz\000\000\0039\000\000\b\030\0039\000\000\0039\000\000\000\000\0039\b\154\0039\0039\0039\b\166\0039\0039\0039\000\000\000\000\000\000\000\000\000\000\0039\0039\0039\0039\0039\000\000\0039\000\000\000\000\000\000\000\000\000\000\000\000\0039\0039\0039\0039\0039\000\000\000\000\000\000\000\000\000\000\0039\000\000\0039\0039\000\000\000\000\000\000\000\000\000\000\0039\0039\0039\000\000\000\000\000\000\000\000\000\000\000\000\0039\0039\0039\0039\0039\0039\0039\0039\0039\000\000\0039\000\000\000\000\000\000\0039\000\000\0039\0039\000\000\000\000\000\000\000\000\0039\000\000\000\000\0039\000\000\0039\0039\000\000\0039\0039\0039\0039\000\000\000\000\000\000\0039\000\000\0039\0039\000\000\012\250\0039\0039\0039\0039\0039\0039\000\000\000\000\0039\0039\r\014\000\000\000\000\000\000\000\000\0039\0039\0039\0039\0035\0035\000\000\0035\000\000\0035\000\000\000\000\000\000\0035\000\000\000\000\0035\000\000\0035\000\000\000\000\0035\000\000\0035\0035\0035\000\000\0035\0035\0035\000\000\000\000\000\000\000\000\000\000\0035\0035\0035\0035\0035\000\000\0035\000\000\000\000\000\000\000\000\000\000\000\000\0035\0035\0035\0035\0035\000\000\000\000\000\000\000\000\000\000\0035\000\000\0035\0035\000\000\000\000\000\000\000\000\000\000\0035\0035\0035\000\000\000\000\000\000\000\000\000\000\000\000\0035\0035\014F\0035\0035\0035\0035\0035\0035\000\000\0035\000\000\000\000\000\000\0035\000\000\0035\0035\000\000\000\000\000\000\000\000\0035\000\000\000\000\0035\000\000\0035\0035\000\000\0035\0035\0035\0035\000\000\000\000\000\000\0035\000\000\0035\0035\000\000\0035\0035\0035\0035\0035\0035\0035\000\000\000\000\0035\0035\0035\000\000\000\000\000\000\000\000\0035\0035\0035\0035\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\002\249\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\002\249\002\249\002\249\002\249\002\249\000\000\002\249\000\000\000\000\000\000\000\000\000\000\000\000\002\249\002\249\002\249\002\249\002\249\000\000\000\000\000\000\000\000\000\000\002\249\000\000\002\249\002\249\000\000\000\000\000\000\000\000\000\000\002\249\002\249\002\249\000\000\000\000\000\000\000\000\000\000\000\000\002\249\002\249\002\249\002\249\002\249\002\249\002\249\002\249\002\249\000\000\002\249\000\000\000\000\000\000\002\249\000\000\002\249\002\249\000\000\000\000\000\000\000\000\002\249\000\000\000\000\002\249\000\000\002\249\002\249\000\000\002\249\002\249\002\249\002\249\000\000\000\000\000\000\002\249\000\000\002\249\002\249\000\000\012\250\002\249\002\249\002\249\002\249\002\249\002\249\000\000\000\000\002\249\002\249\r\014\000\000\000\000\000\000\000\000\002\249\002\249\002\249\002\249\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\002\245\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\002\245\002\245\002\245\002\245\002\245\000\000\002\245\000\000\000\000\000\000\000\000\000\000\000\000\002\245\002\245\002\245\002\245\002\245\000\000\000\000\000\000\000\000\000\000\002\245\000\000\002\245\002\245\000\000\000\000\000\000\000\000\000\000\002\245\002\245\002\245\000\000\000\000\000\000\000\000\000\000\000\000\002\245\002\245\014F\002\245\002\245\002\245\002\245\002\245\002\245\000\000\002\245\000\000\000\000\000\000\002\245\000\000\002\245\002\245\000\000\000\000\000\000\000\000\002\245\000\000\000\000\002\245\000\000\002\245\002\245\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\002\245\002\245\002\245\002\245\002\245\002\245\002\245\000\000\000\000\002\245\002\245\002\245\000\000\000\000\000\000\000\000\002\245\002\245\002\245\002\245\003\017\003\017\000\000\003\017\000\000\003\017\000\000\000\000\000\000\003\017\000\000\000\000\003\017\000\000\003\017\000\000\000\000\003\017\000\000\003\017\003\017\003\017\000\000\003\017\003\017\003\017\000\000\000\000\000\000\000\000\000\000\003\017\003\017\003\017\003\017\003\017\000\000\003\017\000\000\000\000\000\000\000\000\000\000\000\000\003\017\003\017\003\017\003\017\003\017\000\000\000\000\000\000\000\000\000\000\003\017\000\000\003\017\003\017\000\000\000\000\000\000\000\000\000\000\003\017\003\017\003\017\000\000\000\000\000\000\000\000\000\000\000\000\003\017\003\017\003\017\003\017\003\017\003\017\003\017\003\017\003\017\000\000\003\017\000\000\000\000\000\000\003\017\000\000\003\017\003\017\000\000\000\000\000\000\000\000\003\017\000\000\000\000\003\017\000\000\003\017\003\017\000\000\003\017\003\017\003\017\003\017\000\000\000\000\000\000\003\017\000\000\003\017\003\017\000\000\012\250\003\017\003\017\003\017\003\017\003\017\003\017\000\000\000\000\003\017\003\017\r\014\000\000\000\000\000\000\000\000\003\017\003\017\003\017\003\017\003\r\003\r\000\000\003\r\000\000\003\r\000\000\000\000\000\000\003\r\000\000\000\000\003\r\000\000\003\r\000\000\000\000\014.\000\000\003\r\003\r\003\r\000\000\003\r\003\r\003\r\000\000\000\000\000\000\000\000\000\000\003\r\003\r\003\r\014\174\003\r\000\000\003\r\000\000\000\000\000\000\000\000\000\000\000\000\003\r\003\r\003\r\003\r\003\r\000\000\000\000\000\000\000\000\000\000\003\r\000\000\003\r\003\r\000\000\000\000\000\000\000\000\000\000\003\r\003\r\003\r\000\000\000\000\000\000\000\000\000\000\000\000\003\r\003\r\014F\014\198\003\r\003\r\003\r\003\r\003\r\000\000\003\r\000\000\000\000\000\000\003\r\000\000\003\r\003\r\000\000\000\000\000\000\000\000\003\r\000\000\000\000\003\r\000\000\003\r\003\r\000\000\003\r\003\r\003\r\003\r\000\000\000\000\000\000\003\r\000\000\003\r\003\r\000\000\003\r\003\r\003\r\003\r\003\r\003\r\003\r\000\000\000\000\003\r\003\r\003\r\000\000\000\000\000\000\000\000\003\r\003\r\003\r\003\r\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\003\t\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\003\t\003\t\003\t\003\t\003\t\000\000\003\t\000\000\000\000\000\000\000\000\000\000\000\000\003\t\003\t\003\t\003\t\003\t\000\000\000\000\000\000\000\000\000\000\003\t\000\000\003\t\003\t\000\000\000\000\000\000\000\000\000\000\003\t\003\t\003\t\000\000\000\000\000\000\000\000\000\000\000\000\003\t\003\t\003\t\003\t\003\t\003\t\003\t\003\t\003\t\000\000\003\t\000\000\000\000\000\000\003\t\000\000\003\t\003\t\000\000\000\000\000\000\000\000\003\t\000\000\000\000\003\t\000\000\003\t\003\t\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\012\250\003\t\003\t\003\t\003\t\003\t\003\t\000\000\000\000\003\t\003\t\r\014\000\000\000\000\000\000\000\000\003\t\003\t\003\t\003\t\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\014.\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\003\005\003\005\003\005\014\174\003\005\000\000\003\005\000\000\000\000\000\000\000\000\000\000\000\000\003\005\003\005\003\005\003\005\003\005\000\000\000\000\000\000\000\000\000\000\003\005\000\000\003\005\003\005\000\000\000\000\000\000\000\000\000\000\003\005\003\005\003\005\000\000\000\000\000\000\000\000\000\000\000\000\003\005\003\005\014F\014\198\003\005\003\005\003\005\003\005\003\005\000\000\003\005\000\000\000\000\000\000\003\005\000\000\003\005\003\005\000\000\000\000\000\000\000\000\003\005\000\000\000\000\003\005\000\000\003\005\003\005\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\003\005\003\005\003\005\003\005\003\005\003\005\003\005\000\000\000\000\003\005\003\005\003\005\000\000\000\000\000\000\000\000\003\005\003\005\003\005\003\005\003Y\003Y\000\000\003Y\000\000\003Y\000\000\000\000\000\000\003Y\000\000\000\000\003Y\000\000\003Y\000\000\000\000\003Y\000\000\003Y\003Y\003Y\000\000\003Y\003Y\003Y\000\000\000\000\000\000\000\000\000\000\003Y\003Y\003Y\003Y\003Y\000\000\003Y\000\000\000\000\000\000\000\000\000\000\000\000\003Y\003Y\003Y\003Y\003Y\000\000\000\000\000\000\000\000\000\000\003Y\000\000\003Y\003Y\000\000\000\000\000\000\000\000\000\000\003Y\003Y\003Y\000\000\000\000\000\000\000\000\000\000\000\000\003Y\003Y\003Y\003Y\003Y\003Y\003Y\003Y\003Y\000\000\003Y\000\000\000\000\000\000\003Y\000\000\003Y\003Y\000\000\000\000\000\000\000\000\003Y\000\000\000\000\003Y\000\000\003Y\003Y\000\000\003Y\003Y\003Y\003Y\000\000\000\000\000\000\003Y\000\000\003Y\003Y\000\000\012\250\003Y\003Y\003Y\003Y\003Y\003Y\000\000\000\000\003Y\003Y\r\014\000\000\000\000\000\000\000\000\003Y\003Y\003Y\003Y\003U\003U\000\000\003U\000\000\003U\000\000\000\000\000\000\003U\000\000\000\000\003U\000\000\003U\000\000\000\000\014.\000\000\003U\003U\003U\000\000\003U\003U\003U\000\000\000\000\000\000\000\000\000\000\014\150\014\222\014\246\014\174\015\014\000\000\003U\000\000\000\000\000\000\000\000\000\000\000\000\003U\003U\015&\015>\003U\000\000\000\000\000\000\000\000\000\000\003U\000\000\015V\003U\000\000\000\000\000\000\000\000\000\000\003U\003U\000\242\000\000\000\000\000\000\000\000\000\000\000\000\003U\003U\014F\014\198\015n\015\134\015\182\003U\003U\000\000\003U\000\000\000\000\000\000\003U\000\000\003U\015\206\000\000\000\000\000\000\000\000\003U\000\000\000\000\003U\000\000\003U\015\230\000\000\003U\003U\003U\003U\000\000\000\000\000\000\003U\000\000\003U\003U\000\000\003U\003U\003U\003U\015\158\003U\003U\000\000\000\000\003U\015\254\003U\000\000\000\000\000\000\000\000\003U\003U\016\022\016.\003)\003)\000\000\003)\000\000\003)\000\000\000\000\000\000\003)\000\000\000\000\003)\000\000\003)\000\000\000\000\003)\000\000\003)\003)\003)\000\000\003)\003)\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\000\000\003)\003)\003)\003)\003)\000\000\000\000\000\000\000\000\000\000\003)\000\000\003)\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\003)\003)\003)\003)\003)\003)\003)\003)\003)\000\000\003)\000\000\000\000\000\000\003)\000\000\003)\003)\000\000\000\000\000\000\000\000\003)\000\000\000\000\003)\000\000\003)\003)\000\000\003)\003)\003)\003)\000\000\000\000\000\000\003)\000\000\003)\003)\000\000\012\250\003)\003)\003)\003)\003)\003)\000\000\000\000\003)\003)\r\014\000\000\000\000\000\000\000\000\003)\003)\003)\003)\003%\003%\000\000\003%\000\000\003%\000\000\000\000\000\000\003%\000\000\000\000\003%\000\000\003%\000\000\000\000\014.\000\000\003%\003%\003%\000\000\003%\003%\003%\000\000\000\000\000\000\000\000\000\000\003%\003%\003%\014\174\003%\000\000\003%\000\000\000\000\000\000\000\000\000\000\000\000\003%\003%\003%\003%\003%\000\000\000\000\000\000\000\000\000\000\003%\000\000\003%\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\003%\003%\014F\014\198\003%\003%\003%\003%\003%\000\000\003%\000\000\000\000\000\000\003%\000\000\003%\003%\000\000\000\000\000\000\000\000\003%\000\000\000\000\003%\000\000\003%\003%\000\000\003%\003%\003%\003%\000\000\000\000\000\000\003%\000\000\003%\003%\000\000\003%\003%\003%\003%\003%\003%\003%\000\000\000\000\003%\003%\003%\000\000\000\000\000\000\000\000\003%\003%\003%\003%\003!\003!\000\000\003!\000\000\003!\000\000\000\000\000\000\003!\000\000\000\000\003!\000\000\003!\000\000\000\000\003!\000\000\003!\003!\003!\000\000\003!\003!\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\000\000\003!\003!\003!\003!\003!\000\000\000\000\000\000\000\000\000\000\003!\000\000\003!\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\003!\003!\003!\003!\003!\003!\003!\003!\003!\000\000\003!\000\000\000\000\000\000\003!\000\000\003!\003!\000\000\000\000\000\000\000\000\003!\000\000\000\000\003!\000\000\003!\003!\000\000\003!\003!\003!\003!\000\000\000\000\000\000\003!\000\000\003!\003!\000\000\012\250\003!\003!\003!\003!\003!\003!\000\000\000\000\003!\003!\r\014\000\000\000\000\000\000\000\000\003!\003!\003!\003!\003\029\003\029\000\000\003\029\000\000\003\029\000\000\000\000\000\000\003\029\000\000\000\000\003\029\000\000\003\029\000\000\000\000\014.\000\000\003\029\003\029\003\029\000\000\003\029\003\029\003\029\000\000\000\000\000\000\000\000\000\000\003\029\003\029\003\029\014\174\003\029\000\000\003\029\000\000\000\000\000\000\000\000\000\000\000\000\003\029\003\029\003\029\003\029\003\029\000\000\000\000\000\000\000\000\000\000\003\029\000\000\003\029\003\029\000\000\000\000\000\000\000\000\000\000\003\029\003\029\003\029\000\000\000\000\000\000\000\000\000\000\000\000\003\029\003\029\014F\014\198\003\029\003\029\003\029\003\029\003\029\000\000\003\029\000\000\000\000\000\000\003\029\000\000\003\029\003\029\000\000\000\000\000\000\000\000\003\029\000\000\000\000\003\029\000\000\003\029\003\029\000\000\003\029\003\029\003\029\003\029\000\000\000\000\000\000\003\029\000\000\003\029\003\029\000\000\003\029\003\029\003\029\003\029\003\029\003\029\003\029\000\000\000\000\003\029\003\029\003\029\000\000\000\000\000\000\000\000\003\029\003\029\003\029\003\029\003I\003I\000\000\003I\000\000\003I\000\000\000\000\000\000\003I\000\000\000\000\003I\000\000\003I\000\000\000\000\003I\000\000\003I\003I\003I\000\000\003I\003I\003I\000\000\000\000\000\000\000\000\000\000\003I\003I\003I\003I\003I\000\000\003I\000\000\000\000\000\000\000\000\000\000\000\000\003I\003I\003I\003I\003I\000\000\000\000\000\000\000\000\000\000\003I\000\000\003I\003I\000\000\000\000\000\000\000\000\000\000\003I\003I\003I\000\000\000\000\000\000\000\000\000\000\000\000\003I\003I\003I\003I\003I\003I\003I\003I\003I\000\000\003I\000\000\000\000\000\000\003I\000\000\003I\003I\000\000\000\000\000\000\000\000\003I\000\000\000\000\003I\000\000\003I\003I\000\000\003I\003I\003I\003I\000\000\000\000\000\000\003I\000\000\003I\003I\000\000\012\250\003I\003I\003I\003I\003I\003I\000\000\000\000\003I\003I\r\014\000\000\000\000\000\000\000\000\003I\003I\003I\003I\003E\003E\000\000\003E\000\000\003E\000\000\000\000\000\000\003E\000\000\000\000\003E\000\000\003E\000\000\000\000\014.\000\000\003E\003E\003E\000\000\003E\003E\003E\000\000\000\000\000\000\000\000\000\000\014\150\014\222\014\246\014\174\003E\000\000\003E\000\000\000\000\000\000\000\000\000\000\000\000\003E\003E\015&\015>\003E\000\000\000\000\000\000\000\000\000\000\003E\000\000\003E\003E\000\000\000\000\000\000\000\000\000\000\003E\003E\000\242\000\000\000\000\000\000\000\000\000\000\000\000\003E\003E\014F\014\198\015n\015\134\003E\003E\003E\000\000\003E\000\000\000\000\000\000\003E\000\000\003E\003E\000\000\000\000\000\000\000\000\003E\000\000\000\000\003E\000\000\003E\003E\000\000\003E\003E\003E\003E\000\000\000\000\000\000\003E\000\000\003E\003E\000\000\003E\003E\003E\003E\015\158\003E\003E\000\000\000\000\003E\003E\003E\000\000\000\000\000\000\000\000\003E\003E\003E\003E\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\002\241\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\002\241\002\241\002\241\002\241\002\241\000\000\002\241\000\000\000\000\000\000\000\000\000\000\000\000\002\241\002\241\002\241\002\241\002\241\000\000\000\000\000\000\000\000\000\000\002\241\000\000\002\241\002\241\000\000\000\000\000\000\000\000\000\000\002\241\002\241\002\241\000\000\000\000\000\000\000\000\000\000\000\000\002\241\002\241\002\241\002\241\002\241\002\241\002\241\002\241\002\241\000\000\002\241\000\000\000\000\000\000\002\241\000\000\002\241\002\241\000\000\000\000\000\000\000\000\002\241\000\000\000\000\002\241\000\000\002\241\002\241\000\000\002\241\002\241\002\241\002\241\000\000\000\000\000\000\002\241\000\000\002\241\002\241\000\000\012\250\002\241\002\241\002\241\002\241\002\241\002\241\000\000\000\000\002\241\002\241\r\014\000\000\000\000\000\000\000\000\002\241\002\241\002\241\002\241\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\014.\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\002\237\002\237\002\237\014\174\002\237\000\000\002\237\000\000\000\000\000\000\000\000\000\000\000\000\002\237\002\237\002\237\002\237\002\237\000\000\000\000\000\000\000\000\000\000\002\237\000\000\002\237\002\237\000\000\000\000\000\000\000\000\000\000\002\237\002\237\002\237\000\000\000\000\000\000\000\000\000\000\000\000\002\237\002\237\014F\014\198\002\237\002\237\002\237\002\237\002\237\000\000\002\237\000\000\000\000\000\000\002\237\000\000\002\237\002\237\000\000\000\000\000\000\000\000\002\237\000\000\000\000\002\237\000\000\002\237\002\237\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\002\237\002\237\002\237\002\237\002\237\002\237\002\237\000\000\000\000\002\237\002\237\002\237\000\000\000\000\000\000\000\000\002\237\002\237\002\237\002\237\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\002\233\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\002\233\002\233\002\233\002\233\002\233\000\000\002\233\000\000\000\000\000\000\000\000\000\000\000\000\002\233\002\233\002\233\002\233\002\233\000\000\000\000\000\000\000\000\000\000\002\233\000\000\002\233\002\233\000\000\000\000\000\000\000\000\000\000\002\233\002\233\002\233\000\000\000\000\000\000\000\000\000\000\000\000\002\233\002\233\002\233\002\233\002\233\002\233\002\233\002\233\002\233\000\000\002\233\000\000\000\000\000\000\002\233\000\000\002\233\002\233\000\000\000\000\000\000\000\000\002\233\000\000\000\000\002\233\000\000\002\233\002\233\000\000\002\233\002\233\002\233\002\233\000\000\000\000\000\000\002\233\000\000\002\233\002\233\000\000\012\250\002\233\002\233\002\233\002\233\002\233\002\233\000\000\000\000\002\233\002\233\r\014\000\000\000\000\000\000\000\000\002\233\002\233\002\233\002\233\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\014.\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\014\150\014\222\014\246\014\174\002\229\000\000\002\229\000\000\000\000\000\000\000\000\000\000\000\000\002\229\002\229\015&\015>\002\229\000\000\000\000\000\000\000\000\000\000\002\229\000\000\002\229\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\014F\014\198\015n\015\134\002\229\002\229\002\229\000\000\002\229\000\000\000\000\000\000\002\229\000\000\002\229\002\229\000\000\000\000\000\000\000\000\002\229\000\000\000\000\002\229\000\000\002\229\002\229\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\002\229\002\229\002\229\002\229\015\158\002\229\002\229\000\000\000\000\002\229\002\229\002\229\000\000\000\000\000\000\000\000\002\229\002\229\002\229\002\229\003\137\003\137\000\000\003\137\000\000\003\137\000\000\000\000\000\000\003\137\000\000\000\000\003\137\000\000\003\137\000\000\000\000\003\137\000\000\003\137\003\137\003\137\000\000\003\137\003\137\003\137\000\000\000\000\000\000\000\000\000\000\003\137\003\137\003\137\003\137\003\137\000\000\003\137\000\000\000\000\000\000\000\000\000\000\000\000\003\137\003\137\003\137\003\137\003\137\000\000\000\000\000\000\000\000\000\000\003\137\000\000\003\137\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\003\137\003\137\003\137\003\137\003\137\003\137\003\137\003\137\003\137\000\000\003\137\000\000\000\000\000\000\003\137\000\000\003\137\003\137\000\000\000\000\000\000\000\000\003\137\000\000\000\000\003\137\000\000\003\137\003\137\000\000\003\137\003\137\003\137\003\137\000\000\000\000\000\000\003\137\000\000\003\137\003\137\000\000\012\250\003\137\003\137\003\137\003\137\003\137\003\137\000\000\000\000\003\137\003\137\r\014\000\000\000\000\000\000\000\000\003\137\003\137\003\137\003\137\003\133\003\133\000\000\003\133\000\000\003\133\000\000\000\000\000\000\003\133\000\000\000\000\003\133\000\000\003\133\000\000\000\000\014.\000\000\003\133\003\133\003\133\000\000\003\133\003\133\003\133\000\000\000\000\000\000\000\000\000\000\014\150\014\222\014\246\014\174\003\133\000\000\003\133\000\000\000\000\000\000\000\000\000\000\000\000\003\133\003\133\015&\015>\003\133\000\000\000\000\000\000\000\000\000\000\003\133\000\000\003\133\003\133\000\000\000\000\000\000\000\000\000\000\003\133\003\133\003\133\000\000\000\000\000\000\000\000\000\000\000\000\003\133\003\133\014F\014\198\015n\003\133\003\133\003\133\003\133\000\000\003\133\000\000\000\000\000\000\003\133\000\000\003\133\003\133\000\000\000\000\000\000\000\000\003\133\000\000\000\000\003\133\000\000\003\133\003\133\000\000\003\133\003\133\003\133\003\133\000\000\000\000\000\000\003\133\000\000\003\133\003\133\000\000\003\133\003\133\003\133\003\133\015\158\003\133\003\133\000\000\000\000\003\133\003\133\003\133\000\000\000\000\000\000\000\000\003\133\003\133\003\133\003\133\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\002\225\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\002\225\002\225\002\225\002\225\002\225\000\000\002\225\000\000\000\000\000\000\000\000\000\000\000\000\002\225\002\225\002\225\002\225\002\225\000\000\000\000\000\000\000\000\000\000\002\225\000\000\002\225\002\225\000\000\000\000\000\000\000\000\000\000\002\225\002\225\002\225\000\000\000\000\000\000\000\000\000\000\000\000\002\225\002\225\002\225\002\225\002\225\002\225\002\225\002\225\002\225\000\000\002\225\000\000\000\000\000\000\002\225\000\000\002\225\002\225\000\000\000\000\000\000\000\000\002\225\000\000\000\000\002\225\000\000\002\225\002\225\000\000\002\225\002\225\002\225\002\225\000\000\000\000\000\000\002\225\000\000\002\225\002\225\000\000\012\250\002\225\002\225\002\225\002\225\002\225\002\225\000\000\000\000\002\225\002\225\r\014\000\000\000\000\000\000\000\000\002\225\002\225\002\225\002\225\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\014.\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\014\150\014\222\014\246\014\174\002\221\000\000\002\221\000\000\000\000\000\000\000\000\000\000\000\000\002\221\002\221\015&\015>\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\000\242\000\000\000\000\000\000\000\000\000\000\000\000\002\221\002\221\014F\014\198\015n\015\134\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\015\158\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\003Q\003Q\000\000\003Q\000\000\003Q\000\000\000\000\000\000\003Q\000\000\000\000\003Q\000\000\003Q\000\000\000\000\003Q\000\000\003Q\003Q\003Q\000\000\003Q\003Q\003Q\000\000\000\000\000\000\000\000\000\000\003Q\003Q\003Q\003Q\003Q\000\000\003Q\000\000\000\000\000\000\000\000\000\000\000\000\003Q\003Q\003Q\003Q\003Q\000\000\000\000\000\000\000\000\000\000\003Q\000\000\003Q\003Q\000\000\000\000\000\000\000\000\000\000\003Q\003Q\003Q\000\000\000\000\000\000\000\000\000\000\000\000\003Q\003Q\003Q\003Q\003Q\003Q\003Q\003Q\003Q\000\000\003Q\000\000\000\000\000\000\003Q\000\000\003Q\003Q\000\000\000\000\000\000\000\000\003Q\000\000\000\000\003Q\000\000\003Q\003Q\000\000\003Q\003Q\003Q\003Q\000\000\000\000\000\000\003Q\000\000\003Q\003Q\000\000\012\250\003Q\003Q\003Q\003Q\003Q\003Q\000\000\000\000\003Q\003Q\r\014\000\000\000\000\000\000\000\000\003Q\003Q\003Q\003Q\003M\003M\000\000\003M\000\000\003M\000\000\000\000\000\000\003M\000\000\000\000\003M\000\000\003M\000\000\000\000\014.\000\000\003M\003M\003M\000\000\003M\003M\003M\000\000\000\000\000\000\000\000\000\000\014\150\014\222\014\246\014\174\003M\000\000\003M\000\000\000\000\000\000\000\000\000\000\000\000\003M\003M\015&\015>\003M\000\000\000\000\000\000\000\000\000\000\003M\000\000\003M\003M\000\000\000\000\000\000\000\000\000\000\003M\003M\000\242\000\000\000\000\000\000\000\000\000\000\000\000\003M\003M\014F\014\198\015n\015\134\003M\003M\003M\000\000\003M\000\000\000\000\000\000\003M\000\000\003M\003M\000\000\000\000\000\000\000\000\003M\000\000\000\000\003M\000\000\003M\003M\000\000\003M\003M\003M\003M\000\000\000\000\000\000\003M\000\000\003M\003M\000\000\003M\003M\003M\003M\015\158\003M\003M\000\000\000\000\003M\003M\003M\000\000\000\000\000\000\000\000\003M\003M\003M\003M\003A\003A\000\000\003A\000\000\003A\000\000\000\000\000\000\003A\000\000\000\000\003A\000\000\003A\000\000\000\000\003A\000\000\003A\003A\003A\000\000\003A\003A\003A\000\000\000\000\000\000\000\000\000\000\003A\003A\003A\003A\003A\000\000\003A\000\000\000\000\000\000\000\000\000\000\000\000\003A\003A\003A\003A\003A\000\000\000\000\000\000\000\000\000\000\003A\000\000\003A\003A\000\000\000\000\000\000\000\000\000\000\003A\003A\003A\000\000\000\000\000\000\000\000\000\000\000\000\003A\003A\003A\003A\003A\003A\003A\003A\003A\000\000\003A\000\000\000\000\000\000\003A\000\000\003A\003A\000\000\000\000\000\000\000\000\003A\000\000\000\000\003A\000\000\003A\003A\000\000\003A\003A\003A\003A\000\000\000\000\000\000\003A\000\000\003A\003A\000\000\012\250\003A\003A\003A\003A\003A\003A\000\000\000\000\003A\003A\r\014\000\000\000\000\000\000\000\000\003A\003A\003A\003A\003=\003=\000\000\003=\000\000\003=\000\000\000\000\000\000\003=\000\000\000\000\003=\000\000\003=\000\000\000\000\014.\000\000\003=\003=\003=\000\000\003=\003=\003=\000\000\000\000\000\000\000\000\000\000\014\150\014\222\014\246\014\174\003=\000\000\003=\000\000\000\000\000\000\000\000\000\000\000\000\003=\003=\015&\015>\003=\000\000\000\000\000\000\000\000\000\000\003=\000\000\003=\003=\000\000\000\000\000\000\000\000\000\000\003=\003=\000\242\000\000\000\000\000\000\000\000\000\000\000\000\003=\003=\014F\014\198\015n\015\134\003=\003=\003=\000\000\003=\000\000\000\000\000\000\003=\000\000\003=\003=\000\000\000\000\000\000\000\000\003=\000\000\000\000\003=\000\000\003=\003=\000\000\003=\003=\003=\003=\000\000\000\000\000\000\003=\000\000\003=\003=\000\000\003=\003=\003=\003=\015\158\003=\003=\000\000\000\000\003=\003=\003=\000\000\000\000\000\000\000\000\003=\003=\003=\003=\003a\003a\000\000\003a\000\000\003a\000\000\000\000\000\000\003a\000\000\000\000\003a\000\000\003a\000\000\000\000\003a\000\000\003a\003a\003a\000\000\003a\003a\003a\000\000\000\000\000\000\000\000\000\000\003a\003a\003a\003a\003a\000\000\003a\000\000\000\000\000\000\000\000\000\000\000\000\003a\003a\003a\003a\003a\000\000\000\000\000\000\000\000\000\000\003a\000\000\003a\003a\000\000\000\000\000\000\000\000\000\000\003a\003a\003a\000\000\000\000\000\000\000\000\000\000\000\000\003a\003a\003a\003a\003a\003a\003a\003a\003a\000\000\003a\000\000\000\000\000\000\003a\000\000\003a\003a\000\000\000\000\000\000\000\000\003a\000\000\000\000\003a\000\000\003a\003a\000\000\003a\003a\003a\003a\000\000\000\000\000\000\003a\000\000\003a\003a\000\000\012\250\003a\003a\003a\003a\003a\003a\000\000\000\000\003a\003a\r\014\000\000\000\000\000\000\000\000\003a\003a\003a\003a\003]\003]\000\000\003]\000\000\003]\000\000\000\000\000\000\003]\000\000\000\000\003]\000\000\003]\000\000\000\000\014.\000\000\003]\003]\003]\000\000\003]\003]\003]\000\000\000\000\000\000\000\000\000\000\014\150\014\222\014\246\014\174\015\014\000\000\003]\000\000\000\000\000\000\000\000\000\000\000\000\003]\003]\015&\015>\003]\000\000\000\000\000\000\000\000\000\000\003]\000\000\015V\003]\000\000\000\000\000\000\000\000\000\000\003]\003]\000\242\000\000\000\000\000\000\000\000\000\000\000\000\003]\003]\014F\014\198\015n\015\134\015\182\003]\003]\000\000\003]\000\000\000\000\000\000\003]\000\000\003]\015\206\000\000\000\000\000\000\000\000\003]\000\000\000\000\003]\000\000\003]\015\230\000\000\003]\003]\003]\003]\000\000\000\000\000\000\003]\000\000\003]\003]\000\000\003]\003]\003]\003]\015\158\003]\003]\000\000\000\000\003]\015\254\003]\000\000\000\000\000\000\000\000\003]\003]\016\022\016.\003i\003i\000\000\003i\000\000\003i\000\000\000\000\000\000\003i\000\000\000\000\003i\000\000\003i\000\000\000\000\003i\000\000\003i\003i\003i\000\000\003i\003i\003i\000\000\000\000\000\000\000\000\000\000\003i\003i\003i\003i\003i\000\000\003i\000\000\000\000\000\000\000\000\000\000\000\000\003i\003i\003i\003i\003i\000\000\000\000\000\000\000\000\000\000\003i\000\000\003i\003i\000\000\000\000\000\000\000\000\000\000\003i\003i\003i\000\000\000\000\000\000\000\000\000\000\000\000\003i\003i\003i\003i\003i\003i\003i\003i\003i\000\000\003i\000\000\000\000\000\000\003i\000\000\003i\003i\000\000\000\000\000\000\000\000\003i\000\000\000\000\003i\000\000\003i\003i\000\000\003i\003i\003i\003i\000\000\000\000\000\000\003i\000\000\003i\003i\000\000\012\250\003i\003i\003i\003i\003i\003i\000\000\000\000\003i\003i\r\014\000\000\000\000\000\000\000\000\003i\003i\003i\003i\003e\003e\000\000\003e\000\000\003e\000\000\000\000\000\000\003e\000\000\000\000\003e\000\000\003e\000\000\000\000\014.\000\000\003e\003e\003e\000\000\003e\003e\003e\000\000\000\000\000\000\000\000\000\000\014\150\014\222\014\246\014\174\003e\000\000\003e\000\000\000\000\000\000\000\000\000\000\000\000\003e\003e\015&\015>\003e\000\000\000\000\000\000\000\000\000\000\003e\000\000\015V\003e\000\000\000\000\000\000\000\000\000\000\003e\003e\000\242\000\000\000\000\000\000\000\000\000\000\000\000\003e\003e\014F\014\198\015n\015\134\015\182\003e\003e\000\000\003e\000\000\000\000\000\000\003e\000\000\003e\015\206\000\000\000\000\000\000\000\000\003e\000\000\000\000\003e\000\000\003e\015\230\000\000\003e\003e\003e\003e\000\000\000\000\000\000\003e\000\000\003e\003e\000\000\003e\003e\003e\003e\015\158\003e\003e\000\000\000\000\003e\003e\003e\000\000\000\000\000\000\000\000\003e\003e\016\022\016.\003q\003q\000\000\003q\000\000\003q\000\000\000\000\000\000\003q\000\000\000\000\003q\000\000\003q\000\000\000\000\003q\000\000\003q\003q\003q\000\000\003q\003q\003q\000\000\000\000\000\000\000\000\000\000\003q\003q\003q\003q\003q\000\000\003q\000\000\000\000\000\000\000\000\000\000\000\000\003q\003q\003q\003q\003q\000\000\000\000\000\000\000\000\000\000\003q\000\000\003q\003q\000\000\000\000\000\000\000\000\000\000\003q\003q\003q\000\000\000\000\000\000\000\000\000\000\000\000\003q\003q\003q\003q\003q\003q\003q\003q\003q\000\000\003q\000\000\000\000\000\000\003q\000\000\003q\003q\000\000\000\000\000\000\000\000\003q\000\000\000\000\003q\000\000\003q\003q\000\000\003q\003q\003q\003q\000\000\000\000\000\000\003q\000\000\003q\003q\000\000\012\250\003q\003q\003q\003q\003q\003q\000\000\000\000\003q\003q\r\014\000\000\000\000\000\000\000\000\003q\003q\003q\003q\003m\003m\000\000\003m\000\000\003m\000\000\000\000\000\000\003m\000\000\000\000\003m\000\000\003m\000\000\000\000\014.\000\000\003m\003m\003m\000\000\003m\003m\003m\000\000\000\000\000\000\000\000\000\000\014\150\014\222\014\246\014\174\003m\000\000\003m\000\000\000\000\000\000\000\000\000\000\000\000\003m\003m\015&\015>\003m\000\000\000\000\000\000\000\000\000\000\003m\000\000\015V\003m\000\000\000\000\000\000\000\000\000\000\003m\003m\000\242\000\000\000\000\000\000\000\000\000\000\000\000\003m\003m\014F\014\198\015n\015\134\015\182\003m\003m\000\000\003m\000\000\000\000\000\000\003m\000\000\003m\015\206\000\000\000\000\000\000\000\000\003m\000\000\000\000\003m\000\000\003m\015\230\000\000\003m\003m\003m\003m\000\000\000\000\000\000\003m\000\000\003m\003m\000\000\003m\003m\003m\003m\015\158\003m\003m\000\000\000\000\003m\003m\003m\000\000\000\000\000\000\000\000\003m\003m\016\022\016.\n\249\n\249\000\000\n\249\000\000\n\249\000\000\000\000\000\000\n\249\000\000\000\000\n\249\000\000\n\249\000\000\000\000\n\249\000\000\n\249\n\249\n\249\000\000\n\249\n\249\n\249\000\000\000\000\000\000\000\000\000\000\n\249\n\249\n\249\n\249\n\249\000\000\n\249\000\000\000\000\000\000\000\000\000\000\000\000\n\249\n\249\n\249\n\249\n\249\000\000\000\000\000\000\000\000\000\000\n\249\000\000\n\249\n\249\000\000\000\000\000\000\000\000\000\000\n\249\n\249\n\249\000\000\000\000\000\000\000\000\000\000\000\000\n\249\n\249\n\249\n\249\n\249\n\249\n\249\n\249\n\249\000\000\n\249\000\000\000\000\000\000\n\249\000\000\n\249\n\249\000\000\000\000\000\000\000\000\n\249\000\000\000\000\n\249\000\000\n\249\n\249\000\000\n\249\n\249\n\249\n\249\000\000\000\000\000\000\n\249\000\000\n\249\n\249\000\000\012\250\n\249\n\249\n\249\n\249\n\249\n\249\000\000\000\000\n\249\n\249\r\014\000\000\000\000\000\000\000\000\n\249\n\249\n\249\n\249\n\245\n\245\000\000\n\245\000\000\n\245\000\000\000\000\000\000\n\245\000\000\000\000\n\245\000\000\n\245\000\000\000\000\014.\000\000\n\245\n\245\n\245\000\000\n\245\n\245\n\245\000\000\000\000\000\000\000\000\000\000\014\150\014\222\014\246\014\174\015\014\000\000\n\245\000\000\000\000\000\000\000\000\000\000\000\000\n\245\n\245\015&\015>\n\245\000\000\000\000\000\000\000\000\000\000\n\245\000\000\015V\n\245\000\000\000\000\000\000\000\000\000\000\n\245\n\245\000\242\000\000\000\000\000\000\000\000\000\000\000\000\n\245\n\245\014F\014\198\015n\015\134\015\182\n\245\n\245\000\000\n\245\000\000\000\000\000\000\n\245\000\000\n\245\015\206\000\000\000\000\000\000\000\000\n\245\000\000\000\000\n\245\000\000\n\245\015\230\000\000\n\245\n\245\n\245\n\245\000\000\000\000\000\000\n\245\000\000\n\245\n\245\000\000\n\245\n\245\n\245\n\245\015\158\n\245\n\245\000\000\000\000\n\245\015\254\n\245\000\000\000\000\000\000\000\000\n\245\n\245\016\022\016.\003y\003y\000\000\003y\000\000\003y\000\000\000\000\000\000\003y\000\000\000\000\003y\000\000\003y\000\000\000\000\003y\000\000\003y\003y\003y\000\000\003y\003y\003y\000\000\000\000\000\000\000\000\000\000\003y\003y\003y\003y\003y\000\000\003y\000\000\000\000\000\000\000\000\000\000\000\000\003y\003y\003y\003y\003y\000\000\000\000\000\000\000\000\000\000\003y\000\000\003y\003y\000\000\000\000\000\000\000\000\000\000\003y\003y\003y\000\000\000\000\000\000\000\000\000\000\000\000\003y\003y\003y\003y\003y\003y\003y\003y\003y\000\000\003y\000\000\000\000\000\000\003y\000\000\003y\003y\000\000\000\000\000\000\000\000\003y\000\000\000\000\003y\000\000\003y\003y\000\000\003y\003y\003y\003y\000\000\000\000\000\000\003y\000\000\003y\003y\000\000\012\250\003y\003y\003y\003y\003y\003y\000\000\000\000\003y\003y\r\014\000\000\000\000\000\000\000\000\003y\003y\003y\003y\003u\003u\000\000\003u\000\000\003u\000\000\000\000\000\000\003u\000\000\000\000\003u\000\000\003u\000\000\000\000\014.\000\000\003u\003u\003u\000\000\003u\003u\003u\000\000\000\000\000\000\000\000\000\000\014\150\014\222\014\246\014\174\015\014\000\000\003u\000\000\000\000\000\000\000\000\000\000\000\000\003u\003u\015&\015>\003u\000\000\000\000\000\000\000\000\000\000\003u\000\000\015V\003u\000\000\000\000\000\000\000\000\000\000\003u\003u\000\242\000\000\000\000\000\000\000\000\000\000\000\000\003u\003u\014F\014\198\015n\015\134\015\182\003u\003u\000\000\003u\000\000\000\000\000\000\003u\000\000\003u\015\206\000\000\000\000\000\000\000\000\003u\000\000\000\000\003u\000\000\003u\015\230\000\000\003u\003u\003u\003u\000\000\000\000\000\000\003u\000\000\003u\003u\000\000\016F\003u\003u\016^\015\158\003u\003u\000\000\000\000\003u\015\254\003u\000\000\000\000\000\000\000\000\003u\003u\016\022\016.\n\237\n\237\000\000\n\237\000\000\n\237\000\000\000\000\000\000\n\237\000\000\000\000\n\237\000\000\n\237\000\000\000\000\014.\000\000\n\237\n\237\n\237\000\000\n\237\n\237\n\237\000\000\000\000\000\000\000\000\000\000\014\150\014\222\014\246\014\174\015\014\000\000\n\237\000\000\000\000\000\000\000\000\000\000\000\000\n\237\n\237\015&\015>\n\237\000\000\000\000\000\000\000\000\000\000\n\237\000\000\015V\n\237\000\000\000\000\000\000\000\000\000\000\n\237\n\237\000\242\000\000\000\000\000\000\000\000\000\000\000\000\n\237\n\237\014F\014\198\015n\015\134\015\182\n\237\n\237\000\000\n\237\000\000\000\000\000\000\n\237\000\000\n\237\015\206\000\000\000\000\000\000\000\000\n\237\000\000\000\000\n\237\000\000\n\237\015\230\000\000\n\237\n\237\n\237\n\237\000\000\000\000\000\000\n\237\000\000\n\237\n\237\000\000\n\237\n\237\n\237\n\237\015\158\n\237\n\237\000\000\000\000\n\237\015\254\n\237\000\000\000\000\000\000\000\000\n\237\n\237\016\022\016.\003\185\003\185\000\000\003\185\000\000\003\185\000\000\000\000\000\000\003\185\000\000\000\000\003\185\000\000\003\185\000\000\000\000\003\185\000\000\003\185\003\185\003\185\000\000\003\185\003\185\003\185\000\000\000\000\000\000\000\000\000\000\003\185\003\185\003\185\003\185\003\185\000\000\003\185\000\000\000\000\000\000\000\000\000\000\000\000\003\185\003\185\003\185\003\185\003\185\000\000\000\000\000\000\000\000\000\000\003\185\000\000\003\185\003\185\000\000\000\000\000\000\000\000\000\000\003\185\003\185\003\185\000\000\000\000\000\000\000\000\000\000\000\000\003\185\003\185\003\185\003\185\003\185\003\185\003\185\003\185\003\185\000\000\003\185\000\000\000\000\000\000\003\185\000\000\003\185\003\185\000\000\000\000\000\000\000\000\003\185\000\000\000\000\003\185\000\000\003\185\003\185\000\000\003\185\003\185\003\185\003\185\000\000\000\000\000\000\003\185\000\000\003\185\003\185\000\000\012\250\003\185\003\185\003\185\003\185\003\185\003\185\000\000\000\000\003\185\003\185\r\014\000\000\000\000\000\000\000\000\003\185\003\185\003\185\003\185\003\181\003\181\000\000\003\181\000\000\003\181\000\000\000\000\000\000\003\181\000\000\000\000\003\181\000\000\003\181\000\000\000\000\014.\000\000\003\181\003\181\003\181\000\000\003\181\003\181\003\181\000\000\000\000\000\000\000\000\000\000\014\150\014\222\014\246\014\174\015\014\000\000\003\181\000\000\000\000\000\000\000\000\000\000\000\000\003\181\003\181\015&\015>\003\181\000\000\000\000\000\000\000\000\000\000\003\181\000\000\015V\003\181\000\000\000\000\000\000\000\000\000\000\003\181\003\181\000\242\000\000\000\000\000\000\000\000\000\000\000\000\003\181\003\181\014F\014\198\015n\015\134\015\182\003\181\003\181\000\000\003\181\000\000\000\000\000\000\003\181\000\000\003\181\015\206\000\000\000\000\000\000\000\000\003\181\000\000\000\000\003\181\000\000\003\181\015\230\000\000\003\181\003\181\003\181\003\181\000\000\000\000\000\000\003\181\000\000\003\181\003\181\000\000\016F\003\181\003\181\016^\015\158\003\181\003\181\000\000\000\000\003\181\015\254\003\181\000\000\000\000\000\000\000\000\003\181\003\181\016\022\016.\003\217\003\217\000\000\003\217\000\000\003\217\000\000\000\000\000\000\003\217\000\000\000\000\003\217\000\000\003\217\000\000\000\000\003\217\000\000\003\217\003\217\003\217\000\000\003\217\003\217\003\217\000\000\000\000\000\000\000\000\000\000\003\217\003\217\003\217\003\217\003\217\000\000\003\217\000\000\000\000\000\000\000\000\000\000\000\000\003\217\003\217\003\217\003\217\003\217\000\000\000\000\000\000\000\000\000\000\003\217\000\000\003\217\003\217\000\000\000\000\000\000\000\000\000\000\003\217\003\217\003\217\000\000\000\000\000\000\000\000\000\000\000\000\003\217\003\217\003\217\003\217\003\217\003\217\003\217\003\217\003\217\000\000\003\217\000\000\000\000\000\000\003\217\000\000\003\217\003\217\000\000\000\000\000\000\000\000\003\217\000\000\000\000\003\217\000\000\003\217\003\217\000\000\003\217\003\217\003\217\003\217\000\000\000\000\000\000\003\217\000\000\003\217\003\217\000\000\012\250\003\217\003\217\003\217\003\217\003\217\003\217\000\000\000\000\003\217\003\217\r\014\000\000\000\000\000\000\000\000\003\217\003\217\003\217\003\217\003\213\003\213\000\000\003\213\000\000\003\213\000\000\000\000\000\000\003\213\000\000\000\000\003\213\000\000\003\213\000\000\000\000\014.\000\000\003\213\003\213\003\213\000\000\003\213\003\213\003\213\000\000\000\000\000\000\000\000\000\000\014\150\014\222\014\246\014\174\015\014\000\000\003\213\000\000\000\000\000\000\000\000\000\000\000\000\003\213\003\213\015&\015>\003\213\000\000\000\000\000\000\000\000\000\000\003\213\000\000\015V\003\213\000\000\000\000\000\000\000\000\000\000\003\213\003\213\000\242\000\000\000\000\000\000\000\000\000\000\000\000\003\213\003\213\014F\014\198\015n\015\134\015\182\003\213\003\213\000\000\003\213\000\000\000\000\000\000\003\213\000\000\003\213\015\206\000\000\000\000\000\000\000\000\003\213\000\000\000\000\003\213\000\000\003\213\015\230\000\000\003\213\003\213\003\213\003\213\000\000\000\000\000\000\003\213\000\000\003\213\003\213\000\000\016F\003\213\003\213\016^\015\158\003\213\003\213\000\000\000\000\003\213\015\254\003\213\000\000\000\000\000\000\000\000\003\213\003\213\016\022\016.\003\201\003\201\000\000\003\201\000\000\003\201\000\000\000\000\000\000\003\201\000\000\000\000\003\201\000\000\003\201\000\000\000\000\003\201\000\000\003\201\003\201\003\201\000\000\003\201\003\201\003\201\000\000\000\000\000\000\000\000\000\000\003\201\003\201\003\201\003\201\003\201\000\000\003\201\000\000\000\000\000\000\000\000\000\000\000\000\003\201\003\201\003\201\003\201\003\201\000\000\000\000\000\000\000\000\000\000\003\201\000\000\003\201\003\201\000\000\000\000\000\000\000\000\000\000\003\201\003\201\003\201\000\000\000\000\000\000\000\000\000\000\000\000\003\201\003\201\003\201\003\201\003\201\003\201\003\201\003\201\003\201\000\000\003\201\000\000\000\000\000\000\003\201\000\000\003\201\003\201\000\000\000\000\000\000\000\000\003\201\000\000\000\000\003\201\000\000\003\201\003\201\000\000\003\201\003\201\003\201\003\201\000\000\000\000\000\000\003\201\000\000\003\201\003\201\000\000\012\250\003\201\003\201\003\201\003\201\003\201\003\201\000\000\000\000\003\201\003\201\r\014\000\000\000\000\000\000\000\000\003\201\003\201\003\201\003\201\003\197\003\197\000\000\003\197\000\000\003\197\000\000\000\000\000\000\003\197\000\000\000\000\003\197\000\000\003\197\000\000\000\000\014.\000\000\003\197\003\197\003\197\000\000\003\197\003\197\003\197\000\000\000\000\000\000\000\000\000\000\014\150\014\222\014\246\014\174\015\014\000\000\003\197\000\000\000\000\000\000\000\000\000\000\000\000\003\197\003\197\015&\015>\003\197\000\000\000\000\000\000\000\000\000\000\003\197\000\000\015V\003\197\000\000\000\000\000\000\000\000\000\000\003\197\003\197\000\242\000\000\000\000\000\000\000\000\000\000\000\000\003\197\003\197\014F\014\198\015n\015\134\015\182\003\197\003\197\000\000\003\197\000\000\000\000\000\000\003\197\000\000\003\197\015\206\000\000\000\000\000\000\000\000\003\197\000\000\000\000\003\197\000\000\003\197\015\230\000\000\003\197\003\197\003\197\003\197\000\000\000\000\000\000\003\197\000\000\003\197\003\197\000\000\016F\003\197\003\197\016^\015\158\003\197\003\197\000\000\000\000\003\197\015\254\003\197\000\000\000\000\000\000\000\000\003\197\003\197\016\022\016.\003\161\003\161\000\000\003\161\000\000\003\161\000\000\000\000\000\000\003\161\000\000\000\000\003\161\000\000\003\161\000\000\000\000\003\161\000\000\003\161\003\161\003\161\000\000\003\161\003\161\003\161\000\000\000\000\000\000\000\000\000\000\003\161\003\161\003\161\003\161\003\161\000\000\003\161\000\000\000\000\000\000\000\000\000\000\000\000\003\161\003\161\003\161\003\161\003\161\000\000\000\000\000\000\000\000\000\000\003\161\000\000\003\161\003\161\000\000\000\000\000\000\000\000\000\000\003\161\003\161\003\161\000\000\000\000\000\000\000\000\000\000\000\000\003\161\003\161\003\161\003\161\003\161\003\161\003\161\003\161\003\161\000\000\003\161\000\000\000\000\000\000\003\161\000\000\003\161\003\161\000\000\000\000\000\000\000\000\003\161\000\000\000\000\003\161\000\000\003\161\003\161\000\000\003\161\003\161\003\161\003\161\000\000\000\000\000\000\003\161\000\000\003\161\003\161\000\000\012\250\003\161\003\161\003\161\003\161\003\161\003\161\000\000\000\000\003\161\003\161\r\014\000\000\000\000\000\000\000\000\003\161\003\161\003\161\003\161\003\157\003\157\000\000\003\157\000\000\003\157\000\000\000\000\000\000\003\157\000\000\000\000\003\157\000\000\003\157\000\000\000\000\014.\000\000\003\157\003\157\003\157\000\000\003\157\003\157\003\157\000\000\000\000\000\000\000\000\000\000\014\150\014\222\014\246\014\174\015\014\000\000\003\157\000\000\000\000\000\000\000\000\000\000\000\000\003\157\003\157\015&\015>\003\157\000\000\000\000\000\000\000\000\000\000\003\157\000\000\015V\003\157\000\000\000\000\000\000\000\000\000\000\003\157\003\157\000\242\000\000\000\000\000\000\000\000\000\000\000\000\003\157\003\157\014F\014\198\015n\015\134\015\182\003\157\003\157\000\000\003\157\000\000\000\000\000\000\003\157\000\000\003\157\015\206\000\000\000\000\000\000\000\000\003\157\000\000\000\000\003\157\000\000\003\157\015\230\000\000\003\157\003\157\003\157\003\157\000\000\000\000\000\000\003\157\000\000\003\157\003\157\000\000\016F\003\157\003\157\016^\015\158\003\157\003\157\000\000\000\000\003\157\015\254\003\157\000\000\000\000\000\000\000\000\003\157\003\157\016\022\016.\003\177\003\177\000\000\003\177\000\000\003\177\000\000\000\000\000\000\003\177\000\000\000\000\003\177\000\000\003\177\000\000\000\000\003\177\000\000\003\177\003\177\003\177\000\000\003\177\003\177\003\177\000\000\000\000\000\000\000\000\000\000\003\177\003\177\003\177\003\177\003\177\000\000\003\177\000\000\000\000\000\000\000\000\000\000\000\000\003\177\003\177\003\177\003\177\003\177\000\000\000\000\000\000\000\000\000\000\003\177\000\000\003\177\003\177\000\000\000\000\000\000\000\000\000\000\003\177\003\177\003\177\000\000\000\000\000\000\000\000\000\000\000\000\003\177\003\177\003\177\003\177\003\177\003\177\003\177\003\177\003\177\000\000\003\177\000\000\000\000\000\000\003\177\000\000\003\177\003\177\000\000\000\000\000\000\000\000\003\177\000\000\000\000\003\177\000\000\003\177\003\177\000\000\003\177\003\177\003\177\003\177\000\000\000\000\000\000\003\177\000\000\003\177\003\177\000\000\012\250\003\177\003\177\003\177\003\177\003\177\003\177\000\000\000\000\003\177\003\177\r\014\000\000\000\000\000\000\000\000\003\177\003\177\003\177\003\177\003\173\003\173\000\000\003\173\000\000\003\173\000\000\000\000\000\000\003\173\000\000\000\000\003\173\000\000\003\173\000\000\000\000\014.\000\000\003\173\003\173\003\173\000\000\003\173\003\173\003\173\000\000\000\000\000\000\000\000\000\000\014\150\014\222\014\246\014\174\015\014\000\000\003\173\000\000\000\000\000\000\000\000\000\000\000\000\003\173\003\173\015&\015>\003\173\000\000\000\000\000\000\000\000\000\000\003\173\000\000\015V\003\173\000\000\000\000\000\000\000\000\000\000\003\173\003\173\000\242\000\000\000\000\000\000\000\000\000\000\000\000\003\173\003\173\014F\014\198\015n\015\134\015\182\003\173\003\173\000\000\003\173\000\000\000\000\000\000\003\173\000\000\003\173\015\206\000\000\000\000\000\000\000\000\003\173\000\000\000\000\003\173\000\000\003\173\015\230\000\000\003\173\003\173\003\173\003\173\000\000\000\000\000\000\003\173\000\000\003\173\003\173\000\000\016F\003\173\003\173\016^\015\158\003\173\003\173\000\000\000\000\003\173\015\254\003\173\000\000\000\000\000\000\000\000\003\173\003\173\016\022\016.\003\169\003\169\000\000\003\169\000\000\003\169\000\000\000\000\000\000\003\169\000\000\000\000\003\169\000\000\003\169\000\000\000\000\003\169\000\000\003\169\003\169\003\169\000\000\003\169\003\169\003\169\000\000\000\000\000\000\000\000\000\000\003\169\003\169\003\169\003\169\003\169\000\000\003\169\000\000\000\000\000\000\000\000\000\000\000\000\003\169\003\169\003\169\003\169\003\169\000\000\000\000\000\000\000\000\000\000\003\169\000\000\003\169\003\169\000\000\000\000\000\000\000\000\000\000\003\169\003\169\003\169\000\000\000\000\000\000\000\000\000\000\000\000\003\169\003\169\003\169\003\169\003\169\003\169\003\169\003\169\003\169\000\000\003\169\000\000\000\000\000\000\003\169\000\000\003\169\003\169\000\000\000\000\000\000\000\000\003\169\000\000\000\000\003\169\000\000\003\169\003\169\000\000\003\169\003\169\003\169\003\169\000\000\000\000\000\000\003\169\000\000\003\169\003\169\000\000\012\250\003\169\003\169\003\169\003\169\003\169\003\169\000\000\000\000\003\169\003\169\r\014\000\000\000\000\000\000\000\000\003\169\003\169\003\169\003\169\003\165\003\165\000\000\003\165\000\000\003\165\000\000\000\000\000\000\003\165\000\000\000\000\003\165\000\000\003\165\000\000\000\000\014.\000\000\003\165\003\165\003\165\000\000\003\165\003\165\003\165\000\000\000\000\000\000\000\000\000\000\014\150\014\222\014\246\014\174\015\014\000\000\003\165\000\000\000\000\000\000\000\000\000\000\000\000\003\165\003\165\015&\015>\003\165\000\000\000\000\000\000\000\000\000\000\003\165\000\000\015V\003\165\000\000\000\000\000\000\000\000\000\000\003\165\003\165\000\242\000\000\000\000\000\000\000\000\000\000\000\000\003\165\003\165\014F\014\198\015n\015\134\015\182\003\165\003\165\000\000\003\165\000\000\000\000\000\000\003\165\000\000\003\165\015\206\000\000\000\000\000\000\000\000\003\165\000\000\000\000\003\165\000\000\003\165\015\230\000\000\003\165\003\165\003\165\003\165\000\000\000\000\000\000\003\165\000\000\003\165\003\165\000\000\016F\003\165\003\165\016^\015\158\003\165\003\165\000\000\000\000\003\165\015\254\003\165\000\000\000\000\000\000\000\000\003\165\003\165\016\022\016.\003\193\003\193\000\000\003\193\000\000\003\193\000\000\000\000\000\000\003\193\000\000\000\000\003\193\000\000\003\193\000\000\000\000\003\193\000\000\003\193\003\193\003\193\000\000\003\193\003\193\003\193\000\000\000\000\000\000\000\000\000\000\003\193\003\193\003\193\003\193\003\193\000\000\003\193\000\000\000\000\000\000\000\000\000\000\000\000\003\193\003\193\003\193\003\193\003\193\000\000\000\000\000\000\000\000\000\000\003\193\000\000\003\193\003\193\000\000\000\000\000\000\000\000\000\000\003\193\003\193\003\193\000\000\000\000\000\000\000\000\000\000\000\000\003\193\003\193\003\193\003\193\003\193\003\193\003\193\003\193\003\193\000\000\003\193\000\000\000\000\000\000\003\193\000\000\003\193\003\193\000\000\000\000\000\000\000\000\003\193\000\000\000\000\003\193\000\000\003\193\003\193\000\000\003\193\003\193\003\193\003\193\000\000\000\000\000\000\003\193\000\000\003\193\003\193\000\000\012\250\003\193\003\193\003\193\003\193\003\193\003\193\000\000\000\000\003\193\003\193\r\014\000\000\000\000\000\000\000\000\003\193\003\193\003\193\003\193\003\189\003\189\000\000\003\189\000\000\003\189\000\000\000\000\000\000\003\189\000\000\000\000\003\189\000\000\003\189\000\000\000\000\014.\000\000\003\189\003\189\003\189\000\000\003\189\003\189\003\189\000\000\000\000\000\000\000\000\000\000\014\150\014\222\014\246\014\174\015\014\000\000\003\189\000\000\000\000\000\000\000\000\000\000\000\000\003\189\003\189\015&\015>\003\189\000\000\000\000\000\000\000\000\000\000\003\189\000\000\015V\003\189\000\000\000\000\000\000\000\000\000\000\003\189\003\189\000\242\000\000\000\000\000\000\000\000\000\000\000\000\003\189\003\189\014F\014\198\015n\015\134\015\182\003\189\003\189\000\000\003\189\000\000\000\000\000\000\003\189\000\000\003\189\015\206\000\000\000\000\000\000\000\000\003\189\000\000\000\000\003\189\000\000\003\189\015\230\000\000\003\189\003\189\003\189\003\189\000\000\000\000\000\000\003\189\000\000\003\189\003\189\000\000\016F\003\189\003\189\016^\015\158\003\189\003\189\000\000\000\000\003\189\015\254\003\189\000\000\000\000\000\000\000\000\003\189\003\189\016\022\016.\003\225\003\225\000\000\003\225\000\000\003\225\000\000\000\000\000\000\003\225\000\000\000\000\003\225\000\000\003\225\000\000\000\000\003\225\000\000\003\225\003\225\003\225\000\000\003\225\003\225\003\225\000\000\000\000\000\000\000\000\000\000\003\225\003\225\003\225\003\225\003\225\000\000\003\225\000\000\000\000\000\000\000\000\000\000\000\000\003\225\003\225\003\225\003\225\003\225\000\000\000\000\000\000\000\000\000\000\003\225\000\000\003\225\003\225\000\000\000\000\000\000\000\000\000\000\003\225\003\225\003\225\000\000\000\000\000\000\000\000\000\000\000\000\003\225\003\225\003\225\003\225\003\225\003\225\003\225\003\225\003\225\000\000\003\225\000\000\000\000\000\000\003\225\000\000\003\225\003\225\000\000\000\000\000\000\000\000\003\225\000\000\000\000\003\225\000\000\003\225\003\225\000\000\003\225\003\225\003\225\003\225\000\000\000\000\000\000\003\225\000\000\003\225\003\225\000\000\012\250\003\225\003\225\003\225\003\225\003\225\003\225\000\000\000\000\003\225\003\225\r\014\000\000\000\000\000\000\000\000\003\225\003\225\003\225\003\225\003\221\003\221\000\000\003\221\000\000\003\221\000\000\000\000\000\000\003\221\000\000\000\000\003\221\000\000\003\221\000\000\000\000\014.\000\000\003\221\003\221\003\221\000\000\003\221\003\221\003\221\000\000\000\000\000\000\000\000\000\000\014\150\014\222\014\246\014\174\015\014\000\000\003\221\000\000\000\000\000\000\000\000\000\000\000\000\003\221\003\221\015&\015>\003\221\000\000\000\000\000\000\000\000\000\000\003\221\000\000\015V\003\221\000\000\000\000\000\000\000\000\000\000\003\221\003\221\000\242\000\000\000\000\000\000\000\000\000\000\000\000\003\221\003\221\014F\014\198\015n\015\134\015\182\003\221\003\221\000\000\003\221\000\000\000\000\000\000\003\221\000\000\003\221\015\206\000\000\000\000\000\000\000\000\003\221\000\000\000\000\003\221\000\000\003\221\015\230\000\000\003\221\003\221\003\221\003\221\000\000\000\000\000\000\003\221\000\000\003\221\003\221\000\000\016F\003\221\003\221\016^\015\158\003\221\003\221\000\000\000\000\003\221\015\254\003\221\000\000\000\000\000\000\000\000\003\221\003\221\016\022\016.\003\209\003\209\000\000\003\209\000\000\003\209\000\000\000\000\000\000\003\209\000\000\000\000\003\209\000\000\003\209\000\000\000\000\003\209\000\000\003\209\003\209\003\209\000\000\003\209\003\209\003\209\000\000\000\000\000\000\000\000\000\000\003\209\003\209\003\209\003\209\003\209\000\000\003\209\000\000\000\000\000\000\000\000\000\000\000\000\003\209\003\209\003\209\003\209\003\209\000\000\000\000\000\000\000\000\000\000\003\209\000\000\003\209\003\209\000\000\000\000\000\000\000\000\000\000\003\209\003\209\003\209\000\000\000\000\000\000\000\000\000\000\000\000\003\209\003\209\003\209\003\209\003\209\003\209\003\209\003\209\003\209\000\000\003\209\000\000\000\000\000\000\003\209\000\000\003\209\003\209\000\000\000\000\000\000\000\000\003\209\000\000\000\000\003\209\000\000\003\209\003\209\000\000\003\209\003\209\003\209\003\209\000\000\000\000\000\000\003\209\000\000\003\209\003\209\000\000\012\250\003\209\003\209\003\209\003\209\003\209\003\209\000\000\000\000\003\209\003\209\r\014\000\000\000\000\000\000\000\000\003\209\003\209\003\209\003\209\003\205\003\205\000\000\003\205\000\000\003\205\000\000\000\000\000\000\003\205\000\000\000\000\003\205\000\000\003\205\000\000\000\000\014.\000\000\003\205\003\205\003\205\000\000\003\205\003\205\003\205\000\000\000\000\000\000\000\000\000\000\014\150\014\222\014\246\014\174\015\014\000\000\003\205\000\000\000\000\000\000\000\000\000\000\000\000\003\205\003\205\015&\015>\003\205\000\000\000\000\000\000\000\000\000\000\003\205\000\000\015V\003\205\000\000\000\000\000\000\000\000\000\000\003\205\003\205\000\242\000\000\000\000\000\000\000\000\000\000\000\000\003\205\003\205\014F\014\198\015n\015\134\015\182\003\205\003\205\000\000\003\205\000\000\000\000\000\000\003\205\000\000\003\205\015\206\000\000\000\000\000\000\000\000\003\205\000\000\000\000\003\205\000\000\003\205\015\230\000\000\003\205\003\205\003\205\003\205\000\000\000\000\000\000\003\205\000\000\003\205\003\205\000\000\016F\003\205\003\205\016^\015\158\003\205\003\205\000\000\000\000\003\205\015\254\003\205\000\000\000\000\000\000\000\000\003\205\003\205\016\022\016.\003\153\003\153\000\000\003\153\000\000\003\153\000\000\000\000\000\000\003\153\000\000\000\000\003\153\000\000\003\153\000\000\000\000\003\153\000\000\003\153\003\153\003\153\000\000\003\153\003\153\003\153\000\000\000\000\000\000\000\000\000\000\003\153\003\153\003\153\003\153\003\153\000\000\003\153\000\000\000\000\000\000\000\000\000\000\000\000\003\153\003\153\003\153\003\153\003\153\000\000\000\000\000\000\000\000\000\000\003\153\000\000\003\153\003\153\000\000\000\000\000\000\000\000\000\000\003\153\003\153\003\153\000\000\000\000\000\000\000\000\000\000\000\000\003\153\003\153\003\153\003\153\003\153\003\153\003\153\003\153\003\153\000\000\003\153\000\000\000\000\000\000\003\153\000\000\003\153\003\153\000\000\000\000\000\000\000\000\003\153\000\000\000\000\003\153\000\000\003\153\003\153\000\000\003\153\003\153\003\153\003\153\000\000\000\000\000\000\003\153\000\000\003\153\003\153\000\000\012\250\003\153\003\153\003\153\003\153\003\153\003\153\000\000\000\000\003\153\003\153\r\014\000\000\000\000\000\000\000\000\003\153\003\153\003\153\003\153\003\149\003\149\000\000\003\149\000\000\003\149\000\000\000\000\000\000\003\149\000\000\000\000\003\149\000\000\003\149\000\000\000\000\014.\000\000\003\149\003\149\003\149\000\000\003\149\003\149\003\149\000\000\000\000\000\000\000\000\000\000\014\150\014\222\014\246\014\174\015\014\000\000\003\149\000\000\000\000\000\000\000\000\000\000\000\000\003\149\003\149\015&\015>\003\149\000\000\000\000\000\000\000\000\000\000\003\149\000\000\015V\003\149\000\000\000\000\000\000\000\000\000\000\003\149\003\149\000\242\000\000\000\000\000\000\000\000\000\000\000\000\003\149\003\149\014F\014\198\015n\015\134\015\182\003\149\003\149\000\000\003\149\000\000\000\000\000\000\003\149\000\000\003\149\015\206\000\000\000\000\000\000\000\000\003\149\000\000\000\000\003\149\000\000\003\149\015\230\000\000\003\149\003\149\003\149\003\149\000\000\000\000\000\000\003\149\000\000\003\149\003\149\000\000\016F\003\149\003\149\016^\015\158\003\149\003\149\000\000\000\000\003\149\015\254\003\149\000\000\000\000\000\000\000\000\003\149\003\149\016\022\016.\n\253\n\253\000\000\n\253\000\000\n\253\000\000\000\000\000\000\n\253\000\000\000\000\n\253\000\000\n\253\000\000\000\000\014.\000\000\n\253\n\253\n\253\000\000\n\253\n\253\n\253\000\000\000\000\000\000\000\000\000\000\014\150\014\222\014\246\014\174\015\014\000\000\n\253\000\000\000\000\000\000\000\000\000\000\000\000\n\253\n\253\015&\015>\n\253\000\000\000\000\000\000\000\000\000\000\n\253\000\000\015V\n\253\000\000\000\000\000\000\000\000\000\000\n\253\n\253\000\242\000\000\000\000\000\000\000\000\000\000\000\000\n\253\n\253\014F\014\198\015n\015\134\015\182\n\253\n\253\000\000\n\253\000\000\000\000\000\000\n\253\000\000\n\253\015\206\000\000\000\000\000\000\000\000\n\253\000\000\000\000\n\253\000\000\n\253\015\230\000\000\n\253\n\253\n\253\n\253\000\000\000\000\000\000\n\253\000\000\n\253\n\253\000\000\n\253\n\253\n\253\n\253\015\158\n\253\n\253\000\000\000\000\n\253\015\254\n\253\000\000\000\000\000\000\000\000\n\253\n\253\016\022\016.\011U\011U\000\000\011U\000\000\011U\000\000\000\000\000\000\011U\000\000\000\000\011U\000\000\011U\000\000\000\000\011U\000\000\011U\011U\011U\000\000\011U\011U\011U\000\000\000\000\000\000\000\000\000\000\011U\011U\011U\011U\011U\000\000\011U\000\000\000\000\000\000\000\000\000\000\000\000\011U\011U\011U\011U\011U\000\000\000\000\000\000\000\000\000\000\011U\000\000\011U\011U\000\000\000\000\000\000\000\000\000\000\011U\011U\011U\000\000\000\000\000\000\000\000\000\000\000\000\011U\011U\011U\011U\011U\011U\011U\011U\011U\000\000\011U\000\000\000\000\000\000\011U\000\000\011U\011U\000\000\000\000\000\000\000\000\011U\000\000\000\000\011U\000\000\011U\011U\000\000\011U\011U\011U\011U\000\000\000\000\000\000\011U\000\000\011U\011U\000\000\012\250\011U\011U\011U\011U\011U\011U\000\000\000\000\011U\011U\r\014\000\000\000\000\000\000\000\000\011U\011U\011U\011U\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\002\165\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\002\165\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\002\165\002\165\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\020\030\002\165\000\000\000\000\000\000\002\165\000\000\002\165\002\165\000\000\012\250\002\165\002\165\002\165\002\165\002\165\002\165\000\000\000\000\002\165\002\165\r\014\000\000\000\000\000\000\000\000\002\165\002\165\002\165\002\165\002\157\002\157\000\000\002\157\000\000\002\157\000\000\000\000\000\000\002\157\000\000\000\000\002\157\000\000\002\157\000\000\000\000\002\157\000\000\002\157\002\157\002\157\000\000\002\157\002\157\002\157\000\000\000\000\000\000\000\000\000\000\002\157\002\157\002\157\002\157\002\157\000\000\002\157\000\000\000\000\000\000\000\000\000\000\000\000\002\157\002\157\002\157\002\157\002\157\000\000\000\000\000\000\000\000\000\000\002\157\000\000\002\157\002\157\000\000\000\000\000\000\000\000\000\000\002\157\002\157\002\157\000\000\000\000\000\000\000\000\000\000\000\000\002\157\002\157\002\157\002\157\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\012\250\002\157\002\157\002\157\002\157\002\157\002\157\000\000\000\000\002\157\002\157\r\014\000\000\000\000\000\000\000\000\002\157\002\157\002\157\002\157\002\153\002\153\000\000\002\153\000\000\002\153\000\000\000\000\000\000\002\153\000\000\000\000\002\153\000\000\002\153\000\000\000\000\014.\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\014\150\014\222\014\246\014\174\015\014\000\000\002\153\000\000\000\000\000\000\000\000\000\000\000\000\002\153\002\153\015&\015>\002\153\000\000\000\000\000\000\000\000\000\000\002\153\000\000\015V\002\153\000\000\000\000\000\000\000\000\000\000\002\153\002\153\000\242\000\000\000\000\000\000\000\000\000\000\000\000\002\153\002\153\014F\014\198\015n\015\134\015\182\002\153\002\153\000\000\002\153\000\000\000\000\000\000\002\153\000\000\002\153\015\206\000\000\000\000\000\000\000\000\002\153\000\000\000\000\002\153\000\000\002\153\015\230\000\000\002\153\002\153\002\153\002\153\000\000\000\000\000\000\002\153\000\000\002\153\002\153\000\000\016F\002\153\002\153\016^\015\158\002\153\002\153\000\000\000\000\002\153\015\254\002\153\000\000\000\000\000\000\000\000\002\153\002\153\016\022\016.\002\161\002\161\000\000\002\161\000\000\002\161\000\000\000\000\000\000\002\161\000\000\000\000\002\161\000\000\002\161\000\000\000\000\014.\000\000\002\161\002\161\002\161\000\000\002\161\002\161\002\161\000\000\000\000\000\000\000\000\000\000\014\150\014\222\014\246\014\174\015\014\000\000\002\161\000\000\000\000\000\000\000\000\000\000\000\000\002\161\002\161\015&\015>\002\161\000\000\000\000\000\000\000\000\000\000\002\161\000\000\015V\002\161\000\000\000\000\000\000\000\000\000\000\002\161\002\161\000\242\000\000\000\000\000\000\000\000\000\000\000\000\002\161\002\161\014F\014\198\015n\015\134\015\182\002\161\002\161\000\000\002\161\000\000\000\000\000\000\002\161\000\000\002\161\015\206\000\000\000\000\000\000\000\000\002\161\000\000\000\000\002\161\000\000\002\161\015\230\000\000\002\161\002\161\020:\002\161\000\000\000\000\000\000\002\161\000\000\002\161\002\161\000\000\016F\002\161\002\161\016^\015\158\002\161\002\161\000\000\000\000\002\161\015\254\002\161\000\000\000\000\000\000\000\000\002\161\002\161\016\022\016.\002\149\002\149\000\000\002\149\000\000\002\149\000\000\000\000\000\000\002\149\000\000\000\000\002\149\000\000\002\149\000\000\000\000\002\149\000\000\002\149\002\149\002\149\000\000\002\149\002\149\002\149\000\000\000\000\000\000\000\000\000\000\002\149\002\149\002\149\002\149\002\149\000\000\002\149\000\000\000\000\000\000\000\000\000\000\000\000\002\149\002\149\002\149\002\149\002\149\000\000\000\000\000\000\000\000\000\000\002\149\000\000\002\149\002\149\000\000\000\000\000\000\000\000\000\000\002\149\002\149\002\149\000\000\000\000\000\000\000\000\000\000\000\000\002\149\002\149\002\149\002\149\002\149\002\149\002\149\002\149\002\149\000\000\002\149\000\000\000\000\000\000\002\149\000\000\002\149\002\149\000\000\000\000\000\000\000\000\002\149\000\000\000\000\002\149\000\000\002\149\002\149\000\000\002\149\002\149\002\149\002\149\000\000\000\000\000\000\002\149\000\000\002\149\002\149\000\000\012\250\002\149\002\149\002\149\002\149\002\149\002\149\000\000\000\000\002\149\002\149\r\014\000\000\000\000\000\000\000\000\002\149\002\149\002\149\002\149\002\145\002\145\000\000\002\145\000\000\002\145\000\000\000\000\000\000\002\145\000\000\000\000\002\145\000\000\002\145\000\000\000\000\014.\000\000\002\145\002\145\002\145\000\000\002\145\002\145\002\145\000\000\000\000\000\000\000\000\000\000\014\150\014\222\014\246\014\174\015\014\000\000\002\145\000\000\000\000\000\000\000\000\000\000\000\000\002\145\002\145\015&\015>\002\145\000\000\000\000\000\000\000\000\000\000\002\145\000\000\015V\002\145\000\000\000\000\000\000\000\000\000\000\002\145\002\145\000\242\000\000\000\000\000\000\000\000\000\000\000\000\002\145\002\145\014F\014\198\015n\015\134\015\182\002\145\002\145\000\000\002\145\000\000\000\000\000\000\002\145\000\000\002\145\015\206\000\000\000\000\000\000\000\000\002\145\000\000\000\000\002\145\000\000\002\145\015\230\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\016F\002\145\002\145\016^\015\158\002\145\002\145\000\000\000\000\002\145\015\254\002\145\000\000\000\000\000\000\000\000\002\145\002\145\016\022\016.\003\145\003\145\000\000\003\145\000\000\003\145\000\000\000\000\000\000\003\145\000\000\000\000\003\145\000\000\003\145\000\000\000\000\003\145\000\000\003\145\003\145\003\145\000\000\003\145\003\145\003\145\000\000\000\000\000\000\000\000\000\000\003\145\003\145\003\145\003\145\003\145\000\000\003\145\000\000\000\000\000\000\000\000\000\000\000\000\003\145\003\145\003\145\003\145\003\145\000\000\000\000\000\000\000\000\000\000\003\145\000\000\003\145\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\003\145\003\145\003\145\003\145\003\145\003\145\003\145\003\145\003\145\000\000\003\145\000\000\000\000\000\000\003\145\000\000\003\145\003\145\000\000\000\000\000\000\000\000\003\145\000\000\000\000\003\145\000\000\003\145\003\145\000\000\003\145\003\145\003\145\003\145\000\000\000\000\000\000\003\145\000\000\003\145\003\145\000\000\012\250\003\145\003\145\003\145\003\145\003\145\003\145\000\000\000\000\003\145\003\145\r\014\000\000\000\000\000\000\000\000\003\145\003\145\003\145\003\145\003\141\003\141\000\000\003\141\000\000\003\141\000\000\000\000\000\000\003\141\000\000\000\000\003\141\000\000\003\141\000\000\000\000\014.\000\000\003\141\003\141\003\141\000\000\003\141\003\141\003\141\000\000\000\000\000\000\000\000\000\000\014\150\014\222\014\246\014\174\015\014\000\000\003\141\000\000\000\000\000\000\000\000\000\000\000\000\003\141\003\141\015&\015>\003\141\000\000\000\000\000\000\000\000\000\000\003\141\000\000\015V\003\141\000\000\000\000\000\000\000\000\000\000\003\141\003\141\000\242\000\000\000\000\000\000\000\000\000\000\000\000\003\141\003\141\014F\014\198\015n\015\134\015\182\003\141\003\141\000\000\003\141\000\000\000\000\000\000\003\141\000\000\003\141\015\206\000\000\000\000\000\000\000\000\003\141\000\000\000\000\003\141\000\000\003\141\015\230\000\000\003\141\003\141\003\141\003\141\000\000\000\000\000\000\003\141\000\000\003\141\003\141\000\000\016F\003\141\003\141\016^\015\158\003\141\003\141\000\000\000\000\003\141\015\254\003\141\000\000\000\000\000\000\000\000\003\141\003\141\016\022\016.\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\002\133\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\002\133\002\133\002\133\002\133\002\133\000\000\002\133\000\000\000\000\000\000\000\000\000\000\000\000\002\133\002\133\002\133\002\133\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\002\133\000\000\000\000\000\000\000\000\000\000\000\000\002\133\002\133\002\133\002\133\002\133\002\133\002\133\002\133\002\133\000\000\002\133\000\000\000\000\000\000\002\133\000\000\002\133\002\133\000\000\000\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\002\133\002\133\002\133\000\000\000\000\002\133\002\133\r\014\000\000\000\000\000\000\000\000\002\133\002\133\002\133\002\133\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\002\137\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\002\137\002\137\002\137\002\137\002\137\000\000\002\137\011\029\000\000\000\000\000\000\000\000\000\000\002\137\002\137\002\137\002\137\002\137\000\000\000\000\000\000\000\000\000\000\002\137\000\000\002\137\002\137\rj\011\029\000\000\011\029\011\029\002\137\002\137\002\137\000\000\000\000\000\000\000\000\000\000\000\000\002\137\002\137\002\137\002\137\002\137\002\137\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\002\137\002\137\002\137\000\000\000\000\002\137\002\137\r\014\000\000\000\000\br\000\000\002\137\002\137\002\137\002\137\001\n\000\000\000\006\000\000\000\000\000\000\003b\003f\003j\000\000\003n\003\014\000\000\000\000\000\000\bv\003z\001\014\012\250\011\029\000\000\003\"\000\000\000\000\000\000\000\000\001\238\011\029\000\000\r\014\004\158\001\022\011>\011B\001\"\001&\000\000\000\000\004V\000\000\003\130\000\000\004Z\000\000\024\186\n\161\011f\011j\000\000\004\142\004\154\004\166\004\170\011n\t~\002J\001>\000\000\003Z\000\242\000\000\004\162\n\222\000\000\000\000\002N\n\226\n\230\n\242\011\006\000\000\007\138\000\000\001\238\001B\001F\001J\001N\001R\000\000\000\000\011\130\000\000\007\150\007\154\001V\000\000\n\161\000\000\001Z\000\000\003\230\011\142\011\166\r\026\007\166\007\170\t\170\r.\001\250\001^\000\000\000\000\000\000\000\000\003Z\001b\000\000\bz\000\000\000\000\n\161\b\030\b\134\000\000\011\162\000\000\001\158\bf\b\154\000\000\007\174\n\250\b\166\001\162\000\000\020z\005:\r2\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\n\161\000\000\000\000\011:\006\030\000\000\000\000\n\161\001\238\000\000\019\242\000\000\004\158\001\022\011>\011B\001\"\001&\000\000\000\000\004V\000\000\003\130\000\000\004Z\000\000\011F\000\000\011f\011j\000\242\004\142\004\154\004\166\004\170\011n\t~\000\000\001>\000\000\003Z\000\000\000\000\004\162\n\222\000\000\000\000\022\n\n\226\n\230\n\242\011\006\000\000\007\138\000\000\000\000\001B\001F\001J\001N\001R\000\000\000\000\011\130\000\000\007\150\007\154\001V\000\000\000\000\000\000\001Z\000\000\0119\011\142\011\166\r\026\007\166\007\170\bz\r.\b\185\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\0119\000\000\000\000\001\158\b\186\b\185\000\000\007\174\n\250\b\185\001\162\000\000\020z\005:\r2\005\197\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\rB\000\000\004*\rJ\r\206\000\000\005\197\000\000\004.\001\238\000\242\026\002\000\000\003~\000\000\0042\0046\000\000\000\000\000\000\004:\004V\000\000\003\130\rR\004Z\r\214\025\150\000\000\004\134\004\138\000\000\004\142\004\154\004\166\004\170\004\178\t~\000\000\000\000\025\250\003Z\000\000\000\000\004\162\n\222\026\018\000\000\000\000\n\226\n\230\n\242\011\006\b\185\007\138\000\000\000\000\000\000\000\000\bz\0119\000\000\026\026\b\030\011\130\000\000\007\150\007\154\0119\r\146\b\154\000\000\r\158\000\000\b\166\011\142\011\166\r\026\007\166\007\170\026\"\r.\026^\000\000\000\006\005\197\005\197\000\250\003b\003f\003j\003\254\003n\003\014\000\000\000\000\000\000\000\000\003z\000\000\000\000\005\229\026\154\030\174\007\174\n\250\000\000\004.\001\238\011\018\005:\r2\003~\000\000\0042\0046\000\000\000\000\000\000\004:\004V\000\000\003\130\000\000\004Z\000\000\025\150\000\000\004\134\004\138\000\000\004\142\004\154\004\166\004\170\004\178\t~\000\000\000\000\025\250\003Z\000\000\000\000\004\162\n\222\026\018\000\000\000\000\n\226\n\230\n\242\011\006\000\000\007\138\000\000\000\000\000\000\000\000\000\000\000\000\000\000\026\026\000\000\011\130%\130\007\150\007\154\000\000%\162\000\000\000\000\000\000\000\000\000\000\011\142\011\166\r\026\007\166\007\170\026\"\r.\026^\000\000\000\006%\195\022J\000\250\003b\003f\003j\003\254\003n\003\014\000\000\000\000\000\000\000\000\003z\000\000\000\000%\242\000\000\030\174\007\174\n\250\000\000\004.\001\238\011\018\005:\r2\003~\000\000\0042\0046\000\000\000\000\000\000\004:\004V\000\000\003\130\000\000\004Z\000\000\025\150\000\000\004\134\004\138\000\000\004\142\004\154\004\166\004\170\004\178\t~\000\000\000\000\025\250\003Z\000\000\000\000\004\162\n\222\026\018\000\000\000\000\n\226\n\230\n\242\011\006\000\000\007\138\000\000\000\000\000\000\000\000\000\000\000\000\000\000\026\026\000\000\011\130%\130\007\150\007\154\000\000%\162\000\000\000\000\000\000\000\000\000\000\011\142\011\166\r\026\007\166\007\170\026\"\r.\026^\000m\000\000\005\237\000\000\000\000\000\000\000\000\n\157\001\n\000m\000\000\000\000\000\000\000m\001\206\003\146\003j\011\254\000\000\003\014\030\174\007\174\n\250\000\000\003z\001\014\011\018\005:\r2\003\"\000\000\000\000\000\000\000\000\001\238\000\000\000\000\000m\001\018\001\022\001\026\003\194\001\"\001&\000m\000\000\001\210\000\000\000\000\n\157\000\000\000\000\003\198\000\000\0012\bb\000\000\000m\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\n\157\004\190\000\000\004\198\007~\000m\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\000\000\001Z\000\000\br\000\000\000\000\004N\007\166\007\170\003j\000m\007\254\001^\n\157\000\000\002\026\003\246\006\030\001b\000\000\n\157\000\000\n\166\000\000\bv\000m\000\000\001\238\000\000\001\158\bf\000\000\000\000\007\174\000\000\000\000\001\162\000\000\001\166\005:\000\000\000\213\001\170\000\000\001\174\001\178\000\213\000\000\000\000\003j\000\213\004J\003\014\000\000\r\134\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\242\r\190\000\000\003~\000\000\000\000\000\000\000\000\000\000\r\198\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\001\234\004\162\n\222\000\213\000\213\000\213\n\226\n\230\n\242\000\000\017\254\007\138\000\213\000\213\000\000\000\000\bz\000\000\001\238\000\213\b\030\012B\000\213\007\150\007\154\000\000\000\213\b\154\000\000\000\000\000\000\b\166\027\174\000\000\000\000\007\166\007\170\000\213\000\000\000\213\000\000\000\000\000\213\000\213\005\002\000\000\028&\000\000\000\000\000\000\003Z\br\000\213\000\000\000\000\000\000\000\000\000\000\028>\000\213\000\213\007\174\n\250\000\000\000\000\000\237\011\018\005:\000\000\000\213\000\237\000\213\bv\003j\000\237\000\000\003\014\000\000\r\134\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\r\190\000\000\003~\000\000\000\000\000\000\000\000\000\000\r\198\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\242\001\194\000\000\000\237\000\000\000\000\000\237\003Z\000\000\000\000\004\162\n\222\000\237\000\237\000\237\n\226\n\230\n\242\000\000\017\254\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\bz\000\000\000\237\000\237\b\030\012n\000\000\000\000\000\000\000\000\000\000\b\154\000\237\000\000\000\000\b\166\000\000\000\000\000\000\000\237\000\237\007\174\n\250\000\000\000\000\005\017\011\018\005:\000\000\000\237\005\017\000\237\003\146\003j\005\017\000\000\003\014\000\000\t2\000\000\000\000\003z\000\000\000\000\005\017\000\000\000\000\000\000\005\017\000\000\005\017\001\238\000\000\tj\000\000\000i\000\000\000\000\003\150\000\000\000\000\011\178\005\017\000\000\000i\000\000\000\000\000\000\000i\005\017\000\000\000\000\003\170\000\000\n\129\011\250\000\000\001\194\000\000\005\017\000\000\000\000\005\017\003Z\000\000\000\000\004\182\004\186\005\017\005\017\rQ\004\190\000i\004\198\000\000\012b\007\138\n\129\000\000\000i\000\000\000\000\000\000\000\000\005\017\005\017\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\005\017\000\000\005\017\016\130\000\000\005\017\005\017\000\000\000\000\000\000\000\000\000i\000\000\000\000\000\000\000\000\000\000\rQ\000\000\r\146\000\000\rQ\016\138\005\017\007\174\000\000\000\000\000\000\rQ\001\n\005:\000\000\rQ\n\129\005\017\000\000\003\146\003j\bB\000i\003\014\000\000\000\000\001.\0022\003z\001\014\000\000\000\000\000\000\003\"\002E\000\000\000\000\000i\001\238\000\000\000\000\002E\001\018\001\022\001\026\003\194\001\"\001&\000\000\000\000\000\000\000\000\002E\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\002E\000\000\004\190\000\000\004\198\007~\000\000\007\138\002E\000\000\001B\001F\001J\001N\001R\002E\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\011Z\000\000\000\000\002E\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\002E\000\000\000\000\000\000\t\174\000\000\000\000\002E\000\000\001\230\001\234\000\000\000\000\000~\000\000\000\000\000\130\000\134\002E\000\000\000\000\000\000\000\000\000\138\000\142\000\146\000\n\006U\001\238\003\018\000\000\000\000\000\000\000\000\000\000\000\150\000\154\000\158\000\162\006U\000\166\000\170\002E\000\174\000\000\000\000\000\000\000\178\000\182\000\186\002E\000\000\003J\000\190#\006\000\194\000\198\002E\003F\000\000\003Z\004\226\004\238\000\000\000\202\000\000\000\206\000\000\004\250\000\000\000\000\006U\000\210\000\214\011!\000\218\000\006\000\000\000\000\000\000\003b\003f\003j\002E\003n\003\014\000\000\000\000\004\254\000\000\003z#2\000\000\000\000\000\000\011!\000\000\011!\011!\000\000\001\238\006U\000\000\000\000\003~\006U\0042\0046\006U#\030\000\000\000\000\004V\000\000\003\130\000\000\004Z\000\000\t\134\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\001\230\001\234\004\162\n\222\000\000#\n\000\000\n\226\n\230\n\242\011\006\000\000\007\138\000\000\000\000\000\000\000\000\000\000\000\000\001\238\003\018\000\000\011\130\000\000\007\150\007\154\000\000\000\000\000\000\000\000\000\000\000\000\000\000\rZ\011\166\r\026\007\166\007\170\000\000\r.\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\000\000\003j\011!\000\000\000\000\004\250\000\000\023v\007\174\n\250\011!\000\000\000\000\011\018\005:\r2\011\025\000\000\000\006\001\238\000\000\000\000\003b\003f\003j\004\254\003n\003\014\000\000\023\194\000\000\000\000\003z\030\206\000\000\000\000\000\000\011\025\000\000\011\025\011\025\000\000\001\238 \014\000\000\004f\003~ \018\0042\0046\000\000\003Z\000\000\000\000\004V\000\000\003\130\000\000\004Z B\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\000\000\000\000\004\162\n\222\000\000\000\000\016\001\n\226\n\230\n\242\011\006 R\007\138\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\011\130\000\000\007\150\007\154\016\001\015\169\000\000\002b\000\000\015\169\002f\rZ\011\166\r\026\007\166\007\170\000\000\r.\000\000\015\169\000\000\000\000\000\000\000\000\002r\015\169\000\000\002z\000\000\015\245\000\000\000\000\000\000\000\000\011\025\000\000\000\000\015\169\000\000\000\000\007\174\n\250\011\025\000\000\015\169\011\018\005:\r2\011\173\000\000\000\000\011\173\000\000\002~\015\169\011\173\011\173\015\169\000\000\011\173\000\000\011\173\000\000\015\169\011\173\000\000\000\000\000\000\011\173\011\173\000\000\011\173\011\173\000\000\011\173\000\000\011\173\000\000\000\000\015\169\000\000\011\173\015\169\000\000\011\173\000\000\015\169\000\000\000\000\000\000\000\000\000\000\000\000\011\173\000\000\011\173\000\000\015\169\011\173\015\169\011\173\000\000\015\169\002\130\000\000\000\000\011\173\000\000%z\011\173\011\173\000\000\000\000\011\173\011\173\002E\011\173\000\000\011\173\011\173\015\169\000\000\002E\000\000\000\000\002E\000\000\002E\011\173\000\000\011\173\011\173\011\173\002E\011\173\000\000\000\000\000\000\000\000\000\000\000\000\000\n\000\000\011\173\011\173\000\000\000\000\002E\011\173\000\000\011\173\002E\000\000\000\000\000\000\007\210\000\n\002E\000\000\002E\000\000\000\000\011\173\011\173\011\173\002E\011\173\011\173\000\000\011\173\002E\011\173\002E\011\173\002E\011\173\000\000\011\173\002E\002E\002E\000\000\002E\002E\000\000\002E\000\000\002E\002E\000\000\000\000\000\000\000\000\000\000\002E\002E\000\000\000\000\002E\002E\002E\000\000\002E\000\000\002E\002E\000\n\000\000\002E\000\000\002E\000\000\002E\002E\002E\000\000\000\000\000\000\002E\002E\000\000\002E\002E\002E\002E\002E\002E\000\000\000\000\000\000\002E\000\000\000\000\002E\002E\000\000\000\000\002E\002E\002E\002E\002E\002E\002E\000\000\000\000\000\000\000\000\002E\000\000\000\000\000\000\000\000\002E\002E\002E\002E\000\000\002E\000\000\000\000\000\000\000\000\000\000\002E\002E\002E\002E\002E\000\000\002E\b%\000\000\000A\000\000\002E\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\b%\002E\002E\000\000\000\000\000A\002E\002E\002E\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\177\000A\000A\000\000\000\000\005\177\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\177\000\000\000\000\000\000\000\000\000\000\000\000\000A\000A\000A\000A\000A\000\000\000A\b!\000\000\000=\000\000\000\000\000\000\000=\000=\000=\005\177\000=\000=\000\000\000\000\000\000\000\000\000=\000\000\005\177\000\000\000\000\b!\000A\000A\005\177\004\"\000=\000A\000A\000A\000=\000\000\000=\000=\005\177\000\000\000\000\000\000\000=\000\000\000=\000\000\000=\000\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\213\000=\000=\000\000\005\177\027\198\000=\000=\000=\000=\000\000\000=\000\000\005\177\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=\b1\000\000\015q\000\000\000\000\000\000\015q\015q\015q\027\242\015q\015q\000\000\000\000\000\000\000\000\015q\000\000\025\250\000\000\000\000\b1\000=\000=\026\018\000\000\015q\000=\000=\000=\015q\000\000\015q\015q\028\030\000\000\000\000\000\000\015q\000\000\015q\000\000\015q\000\000\000\000\000\000\015q\015q\000\000\015q\015q\015q\015q\015q\015q\000\000\000\000\000\000\015q\000\000\000\000\015q\015q\000\000\005\213\000\000\015q\015q\015q\015q\000\000\015q\000\000\028\130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\015q\000\000\015q\015q\000\000\000\000\000\000\000\000\000\000\000\000\000\000\015q\015q\015q\015q\015q\000\000\015q\b-\000\000\015m\000\000\000\000\000\000\015m\015m\015m\000\000\015m\015m\000\000\000\000\000\000\000\000\015m\000\000\000\000\000\000\000\000\b-\015q\015q\000\000\000\000\015m\015q\015q\015q\015m\000\000\015m\015m\000\000\000\000\000\000\000\000\015m\000\000\015m\000\000\015m\000\000\000\000\000\000\015m\015m\000\000\015m\015m\015m\015m\015m\015m\000\000\000\000\000\000\015m\000\000\000\000\015m\015m\000\000\000\000\000\000\015m\015m\015m\015m\000\000\015m\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\015m\000\000\015m\015m\000\000\000\000\000\000\000\000\000\000\000\000\000\000\015m\015m\015m\015m\015m\000\000\015m\005\185\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\026\158\000\000\000\000\015m\015m\000\000\004.\001\238\015m\015m\015m\003~\000\000\0042\0046\000\000\000\000\000\000\026\162\004V\000\000\003\130\000\000\004Z\000\000\026\202\000\000\004\134\004\138\000\000\004\142\004\154\004\166\004\170\004\178\t~\000\000\000\000\025\250\003Z\000\000\000\000\004\162\n\222\026\018\000\000\000\000\n\226\n\230\n\242\011\006\000\000\007\138\000\000\000\000\000\000\000\000\000\000\000\000\000\000\026\026\000\000\011\130\000\000\007\150\007\154\000\000\000\000\000\000\000\000\000\000\000\000\000\000\024\130\011\166\r\026\007\166\007\170\026\"\r.\027b\000\000\000\000\005\185\005\185\000\000\000\006\000\000\000\000\000\000\003b\003f\003j\000\000\003n\003\014\024\154\000\000\000\000\000\000\003z\027r\007\174\n\250\000\000\000\000\000\000\011\018\005:\r2\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\000\000\000\000\004\162\n\222\000\000\000\000\000\000\n\226\n\230\n\242\011\006\000\000\007\138\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\011\130\000\000\007\150\007\154\000\000\000\000\000\000\000\000\000\000\000\000\000\000\022\198\011\166\r\026\007\166\007\170\000\000\r.\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\021\000\000\000\006\000\000\000\000\002\021\003b\003f\003j\000\000\003n\003\014\000\000\007\174\n\250\022\222\003z\000\000\011\018\005:\r2\000\000\000\000\004\194\000\000\002\021\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\002\021\004\142\004\154\004\166\004\170\004\178\t~\000\000\000\000\002\021\003Z\000\000\000\000\004\162\n\222\002\021\002\021\000\242\n\226\n\230\n\242\011\006\000\000\007\138\002\021\002\021\000\000\000\000\000\000\000\000\000\000\000\000\000\000\011\130\000\000\007\150\007\154\000\000\000\000\000\000\000\000\000\000\000\000\000\000\022\150\011\166\r\026\007\166\007\170\000\000\r.\016U\000\000\000\006\000\000\002\021\016U\003b\003f\003j\000\000\003n\003\014\000\000\002\021\000\000\000\000\003z\000\000\000\000\000\000\000\000\000\000\007\174\n\250\000\000\016U\001\238\011\018\005:\r2\003~\000\000\0042\0046\005\221\000\000\000\000\000\000\004V\030\218\003\130\000\000\004Z\000\000\000\000\000\000\004\134\004\138\016U\004\142\004\154\004\166\004\170\004\178\t~\000\000\000\000\016U\003Z\004.\000\000\004\162\n\222\016U\016U\000\242\n\226\n\230\n\242\011\006\000\000\007\138\016U\016U\000\000\000\000\000\000\000\000\000\000\000\000\000\000\011\130\031N\007\150\007\154\000\000\000\000\000\000\000\000\000\000\000\000\025\250\020\142\011\166\r\026\007\166\007\170\026\018\r.\000\000\000\000\000\000\000\000\016U\000\000\000\006\031\242 \002\000\000\003b\003f\003j\016U\003n\003\014\021f\000\000\000\000\000\000\003z\000\000\007\174\n\250\000\000\000\000\000\000\011\018\005:\r2\001\238\000\000\000\000\000\000\003~\000\000\0042\0046\005\221\000\000\000\000\000\000\004V\000\000\003\130\000\000\004Z \246\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\000\000\000\000\004\162\n\222\000\000\000\000\000\000\n\226\n\230\n\242\011\006\000\000\007\138\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\011\130\000\000\007\150\007\154\000\000\000\000\000\000\000\000\000\000\000\000\000\000\021\134\011\166\r\026\007\166\007\170\000\000\r.\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\005\177\000\000\000\006\000\000\000\000\005\177\003b\003f\003j\000\000\003n\003\014\000\000\007\174\n\250\021\158\003z\000\000\011\018\005:\r2\000\000\000\000\021\190\000\000\005\177\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\005\177\004\142\004\154\004\166\004\170\004\178\t~\000\000\000\000\005\177\003Z\000\000\000\000\004\162\n\222\005\177\004\"\000\242\n\226\n\230\n\242\011\006\000\000\007\138\005\177\005\177\000\000\000\000\000\000\000\000\000\000\000\000\000\000\011\130\000\000\007\150\007\154\000\000\000\000\000\000\000\000\000\000\000\000\000\000\021\194\011\166\r\026\007\166\007\170\000\000\r.\000\000\000\000\000\006\000\000\005\177\000\000\003b\003f\003j\000\000\003n\003\014\000\000\005\177\000\000\000\000\003z\000\000\000\000\000\000\000\000\000\000\007\174\n\250\000\000\000\000\001\238\011\018\005:\r2\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\000\000\000\000\004\162\n\222\000\000\000\000\000\000\n\226\n\230\n\242\011\006\000\000\007\138\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\011\130\000\000\007\150\007\154\000\000\000\000\000\000\000\000\000\000\000\000\000\000\025\002\011\166\r\026\007\166\007\170\000\000\r.\000\000\000\000\000\006\000\000\000\000\000\000\003b\003f\003j\000\000\003n\003\014\000\000\000\000\000\000\000\000\003z\000\000\000\000\000\000\000\000\000\000\007\174\n\250\000\000\000\000\001\238\011\018\005:\r2\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\000\000\000\000\004\162\n\222\000\000\000\000\000\000\n\226\n\230\n\242\011\006\000\000\007\138\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\011\130\000\000\007\150\007\154\000\000\000\000\000\000\000\000\000\000\000\000\000\000\024j\011\166\r\026\007\166\007\170\000\000\r.\000\000\000\000\000\006\000\000\000\000\000\000\003b\003f\003j\000\000\003n\003\014\000\000\000\000\000\000\000\000\003z\000\000\000\000\000\000\000\000\000\000\007\174\n\250\000\000\000\000\001\238\011\018\005:\r2\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\000\000\000\000\004\162\n\222\000\000\000\000\000\000\n\226\n\230\n\242\011\006\000\000\007\138\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\011\130\000\000\007\150\007\154\000\000\000\000\000\000\000\000\000\000\000\000\000\000\022f\011\166\r\026\007\166\007\170\000\000\r.\000\000\000\000\000\006\000\000\000\000\000\000\003b\003f\003j\000\000\003n\003\014\000\000\000\000\000\000\000\000\003z\000\000\000\000\000\000\000\000\000\000\007\174\n\250\000\000\000\000\001\238\011\018\005:\r2\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\000\000\000\000\004\162\n\222\000\000\000\000\000\000\n\226\n\230\n\242\011\006\000\000\007\138\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\011\130\000\000\007\150\007\154\000\000\000\000\000\000\000\000\000\000\000\000\000\000\012\234\011\166\r\026\007\166\007\170\000\000\r.\000\000\000\000\000\006\000\000\000\000\000\000\003b\003f\003j\000\000\003n\003\014\000\000\000\000\000\000\000\000\003z\000\000\000\000\000\000\000\000\000\000\007\174\n\250\000\000\000\000\001\238\011\018\005:\r2\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\000\000\000\000\004\162\n\222\000\000\000\000\000\000\n\226\n\230\n\242\011\006\000\000\007\138\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\011\130\000\000\007\150\007\154\000\000\000\000\000\000\000\000\000\000\000\000\000\000\012\254\011\166\r\026\007\166\007\170\000\000\r.\000\000\000\000\000\006\000\000\000\000\000\000\003b\003f\003j\000\000\003n\003\014\000\000\000\000\000\000\000\000\003z\000\000\000\000\000\000\000\000\000\000\007\174\n\250\000\000\000\000\001\238\011\018\005:\r2\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\000\000\000\000\004\162\n\222\000\000\000\000\000\000\n\226\n\230\n\242\011\006\000\000\007\138\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\011\130\000\000\007\150\007\154\000\000\000\000\000\000\000\000\000\000\000\000\000\000\rr\011\166\r\026\007\166\007\170\000\000\r.\000\000\000\000\000\006\000\000\000\000\000\000\003b\003f\003j\000\000\003n\003\014\000\000\000\000\000\000\000\000\003z\000\000\000\000\000\000\000\000\000\000\007\174\n\250\000\000\000\000\001\238\011\018\005:\r2\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\000\000\000\000\004\162\n\222\000\000\000\000\000\000\n\226\n\230\n\242\011\006\000\000\007\138\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\011\130\000\000\007\150\007\154\000\000\000\000\000\000\000\000\000\000\000\000\000\000\r\242\011\166\r\026\007\166\007\170\000\000\r.\000\000\000\000\000\006\000\000\000\000\000\000\003b\003f\003j\000\000\003n\003\014\000\000\000\000\000\000\000\000\003z\000\000\000\000\000\000\000\000\000\000\007\174\n\250\000\000\000\000\001\238\011\018\005:\r2\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\000\000\000\000\004\162\n\222\000\000\000\000\000\000\n\226\n\230\n\242\011\006\000\000\007\138\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\011\130\000\000\007\150\007\154\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0142\011\166\r\026\007\166\007\170\000\000\r.\000\000\000\000\000\006\000\000\000\000\000\000\003b\003f\003j\000\000\003n\003\014\000\000\000\000\000\000\000\000\003z\000\000\000\000\000\000\000\000\000\000\007\174\n\250\000\000\000\000\001\238\011\018\005:\r2\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\000\000\000\000\004\162\n\222\000\000\000\000\000\000\n\226\n\230\n\242\011\006\000\000\007\138\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\011\130\000\000\007\150\007\154\000\000\000\000\000\000\000\000\000\000\000\000\000\000\014J\011\166\r\026\007\166\007\170\000\000\r.\000\000\000\000\000\006\000\000\000\000\000\000\003b\003f\003j\000\000\003n\003\014\000\000\000\000\000\000\000\000\003z\000\000\000\000\000\000\000\000\000\000\007\174\n\250\000\000\000\000\001\238\011\018\005:\r2\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\000\000\000\000\004\162\n\222\000\000\000\000\000\000\n\226\n\230\n\242\011\006\000\000\007\138\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\011\130\000\000\007\150\007\154\000\000\000\000\000\000\000\000\000\000\000\000\000\000\014n\011\166\r\026\007\166\007\170\000\000\r.\000\000\000\000\000\006\000\000\000\000\000\000\003b\003f\003j\000\000\003n\003\014\000\000\000\000\000\000\000\000\003z\000\000\000\000\000\000\000\000\000\000\007\174\n\250\000\000\000\000\001\238\011\018\005:\r2\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\000\000\000\000\004\162\n\222\000\000\000\000\000\000\n\226\n\230\n\242\011\006\000\000\007\138\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\011\130\000\000\007\150\007\154\000\000\000\000\000\000\000\000\000\000\000\000\000\000\014\154\011\166\r\026\007\166\007\170\000\000\r.\000\000\000\000\000\006\000\000\000\000\000\000\003b\003f\003j\000\000\003n\003\014\000\000\000\000\000\000\000\000\003z\000\000\000\000\000\000\000\000\000\000\007\174\n\250\000\000\000\000\001\238\011\018\005:\r2\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\000\000\000\000\004\162\n\222\000\000\000\000\000\000\n\226\n\230\n\242\011\006\000\000\007\138\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\011\130\000\000\007\150\007\154\000\000\000\000\000\000\000\000\000\000\000\000\000\000\014\178\011\166\r\026\007\166\007\170\000\000\r.\000\000\000\000\000\006\000\000\000\000\000\000\003b\003f\003j\000\000\003n\003\014\000\000\000\000\000\000\000\000\003z\000\000\000\000\000\000\000\000\000\000\007\174\n\250\000\000\000\000\001\238\011\018\005:\r2\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\000\000\000\000\004\162\n\222\000\000\000\000\000\000\n\226\n\230\n\242\011\006\000\000\007\138\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\011\130\000\000\007\150\007\154\000\000\000\000\000\000\000\000\000\000\000\000\000\000\014\202\011\166\r\026\007\166\007\170\000\000\r.\000\000\000\000\000\006\000\000\000\000\000\000\003b\003f\003j\000\000\003n\003\014\000\000\000\000\000\000\000\000\003z\000\000\000\000\000\000\000\000\000\000\007\174\n\250\000\000\000\000\001\238\011\018\005:\r2\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\000\000\000\000\004\162\n\222\000\000\000\000\000\000\n\226\n\230\n\242\011\006\000\000\007\138\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\011\130\000\000\007\150\007\154\000\000\000\000\000\000\000\000\000\000\000\000\000\000\014\226\011\166\r\026\007\166\007\170\000\000\r.\000\000\000\000\000\006\000\000\000\000\000\000\003b\003f\003j\000\000\003n\003\014\000\000\000\000\000\000\000\000\003z\000\000\000\000\000\000\000\000\000\000\007\174\n\250\000\000\000\000\001\238\011\018\005:\r2\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\000\000\000\000\004\162\n\222\000\000\000\000\000\000\n\226\n\230\n\242\011\006\000\000\007\138\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\011\130\000\000\007\150\007\154\000\000\000\000\000\000\000\000\000\000\000\000\000\000\014\250\011\166\r\026\007\166\007\170\000\000\r.\000\000\000\000\000\006\000\000\000\000\000\000\003b\003f\003j\000\000\003n\003\014\000\000\000\000\000\000\000\000\003z\000\000\000\000\000\000\000\000\000\000\007\174\n\250\000\000\000\000\001\238\011\018\005:\r2\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\000\000\000\000\004\162\n\222\000\000\000\000\000\000\n\226\n\230\n\242\011\006\000\000\007\138\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\011\130\000\000\007\150\007\154\000\000\000\000\000\000\000\000\000\000\000\000\000\000\015\018\011\166\r\026\007\166\007\170\000\000\r.\000\000\000\000\000\006\000\000\000\000\000\000\003b\003f\003j\000\000\003n\003\014\000\000\000\000\000\000\000\000\003z\000\000\000\000\000\000\000\000\000\000\007\174\n\250\000\000\000\000\001\238\011\018\005:\r2\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\000\000\000\000\004\162\n\222\000\000\000\000\000\000\n\226\n\230\n\242\011\006\000\000\007\138\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\011\130\000\000\007\150\007\154\000\000\000\000\000\000\000\000\000\000\000\000\000\000\015*\011\166\r\026\007\166\007\170\000\000\r.\000\000\000\000\000\006\000\000\000\000\000\000\003b\003f\003j\000\000\003n\003\014\000\000\000\000\000\000\000\000\003z\000\000\000\000\000\000\000\000\000\000\007\174\n\250\000\000\000\000\001\238\011\018\005:\r2\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\000\000\000\000\004\162\n\222\000\000\000\000\000\000\n\226\n\230\n\242\011\006\000\000\007\138\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\011\130\000\000\007\150\007\154\000\000\000\000\000\000\000\000\000\000\000\000\000\000\015B\011\166\r\026\007\166\007\170\000\000\r.\000\000\000\000\000\006\000\000\000\000\000\000\003b\003f\003j\000\000\003n\003\014\000\000\000\000\000\000\000\000\003z\000\000\000\000\000\000\000\000\000\000\007\174\n\250\000\000\000\000\001\238\011\018\005:\r2\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\000\000\000\000\004\162\n\222\000\000\000\000\000\000\n\226\n\230\n\242\011\006\000\000\007\138\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\011\130\000\000\007\150\007\154\000\000\000\000\000\000\000\000\000\000\000\000\000\000\015Z\011\166\r\026\007\166\007\170\000\000\r.\000\000\000\000\000\006\000\000\000\000\000\000\003b\003f\003j\000\000\003n\003\014\000\000\000\000\000\000\000\000\003z\000\000\000\000\000\000\000\000\000\000\007\174\n\250\000\000\000\000\001\238\011\018\005:\r2\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\000\000\000\000\004\162\n\222\000\000\000\000\000\000\n\226\n\230\n\242\011\006\000\000\007\138\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\011\130\000\000\007\150\007\154\000\000\000\000\000\000\000\000\000\000\000\000\000\000\015r\011\166\r\026\007\166\007\170\000\000\r.\000\000\000\000\000\006\000\000\000\000\000\000\003b\003f\003j\000\000\003n\003\014\000\000\000\000\000\000\000\000\003z\000\000\000\000\000\000\000\000\000\000\007\174\n\250\000\000\000\000\001\238\011\018\005:\r2\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\000\000\000\000\004\162\n\222\000\000\000\000\000\000\n\226\n\230\n\242\011\006\000\000\007\138\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\011\130\000\000\007\150\007\154\000\000\000\000\000\000\000\000\000\000\000\000\000\000\015\138\011\166\r\026\007\166\007\170\000\000\r.\000\000\000\000\000\006\000\000\000\000\000\000\003b\003f\003j\000\000\003n\003\014\000\000\000\000\000\000\000\000\003z\000\000\000\000\000\000\000\000\000\000\007\174\n\250\000\000\000\000\001\238\011\018\005:\r2\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\000\000\000\000\004\162\n\222\000\000\000\000\000\000\n\226\n\230\n\242\011\006\000\000\007\138\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\011\130\000\000\007\150\007\154\000\000\000\000\000\000\000\000\000\000\000\000\000\000\015\162\011\166\r\026\007\166\007\170\000\000\r.\000\000\000\000\000\006\000\000\000\000\000\000\003b\003f\003j\000\000\003n\003\014\000\000\000\000\000\000\000\000\003z\000\000\000\000\000\000\000\000\000\000\007\174\n\250\000\000\000\000\001\238\011\018\005:\r2\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\000\000\000\000\004\162\n\222\000\000\000\000\000\000\n\226\n\230\n\242\011\006\000\000\007\138\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\011\130\000\000\007\150\007\154\000\000\000\000\000\000\000\000\000\000\000\000\000\000\015\186\011\166\r\026\007\166\007\170\000\000\r.\000\000\000\000\000\006\000\000\000\000\000\000\003b\003f\003j\000\000\003n\003\014\000\000\000\000\000\000\000\000\003z\000\000\000\000\000\000\000\000\000\000\007\174\n\250\000\000\000\000\001\238\011\018\005:\r2\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\000\000\000\000\004\162\n\222\000\000\000\000\000\000\n\226\n\230\n\242\011\006\000\000\007\138\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\011\130\000\000\007\150\007\154\000\000\000\000\000\000\000\000\000\000\000\000\000\000\015\210\011\166\r\026\007\166\007\170\000\000\r.\000\000\000\000\000\006\000\000\000\000\000\000\003b\003f\003j\000\000\003n\003\014\000\000\000\000\000\000\000\000\003z\000\000\000\000\000\000\000\000\000\000\007\174\n\250\000\000\000\000\001\238\011\018\005:\r2\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\000\000\000\000\004\162\n\222\000\000\000\000\000\000\n\226\n\230\n\242\011\006\000\000\007\138\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\011\130\000\000\007\150\007\154\000\000\000\000\000\000\000\000\000\000\000\000\000\000\015\234\011\166\r\026\007\166\007\170\000\000\r.\000\000\000\000\000\006\000\000\000\000\000\000\003b\003f\003j\000\000\003n\003\014\000\000\000\000\000\000\000\000\003z\000\000\000\000\000\000\000\000\000\000\007\174\n\250\000\000\000\000\001\238\011\018\005:\r2\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\000\000\000\000\004\162\n\222\000\000\000\000\000\000\n\226\n\230\n\242\011\006\000\000\007\138\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\011\130\000\000\007\150\007\154\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\002\011\166\r\026\007\166\007\170\000\000\r.\000\000\000\000\000\006\000\000\000\000\000\000\003b\003f\003j\000\000\003n\003\014\000\000\000\000\000\000\000\000\003z\000\000\000\000\000\000\000\000\000\000\007\174\n\250\000\000\000\000\001\238\011\018\005:\r2\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\000\000\000\000\004\162\n\222\000\000\000\000\000\000\n\226\n\230\n\242\011\006\000\000\007\138\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\011\130\000\000\007\150\007\154\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\026\011\166\r\026\007\166\007\170\000\000\r.\000\000\000\000\000\006\000\000\000\000\000\000\003b\003f\003j\000\000\003n\003\014\000\000\000\000\000\000\000\000\003z\000\000\000\000\000\000\000\000\000\000\007\174\n\250\000\000\000\000\001\238\011\018\005:\r2\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\000\000\000\000\004\162\n\222\000\000\000\000\000\000\n\226\n\230\n\242\011\006\000\000\007\138\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\011\130\000\000\007\150\007\154\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0162\011\166\r\026\007\166\007\170\000\000\r.\000\000\000\000\000\006\000\000\000\000\000\000\003b\003f\003j\000\000\003n\003\014\000\000\000\000\000\000\000\000\003z\000\000\000\000\000\000\000\000\000\000\007\174\n\250\000\000\000\000\001\238\011\018\005:\r2\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\000\000\000\000\004\162\n\222\000\000\000\000\000\000\n\226\n\230\n\242\011\006\000\000\007\138\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\011\130\000\000\007\150\007\154\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016J\011\166\r\026\007\166\007\170\000\000\r.\000\000\000\000\000\006\000\000\000\000\000\000\003b\003f\003j\000\000\003n\003\014\000\000\000\000\000\000\000\000\003z\000\000\000\000\000\000\000\000\000\000\007\174\n\250\000\000\000\000\001\238\011\018\005:\r2\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\000\000\000\000\004\162\n\222\000\000\000\000\000\000\n\226\n\230\n\242\011\006\000\000\007\138\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\011\130\000\000\007\150\007\154\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016b\011\166\r\026\007\166\007\170\000\000\r.\000\000\000\000\000\006\000\000\000\000\000\000\003b\003f\003j\000\000\003n\003\014\000\000\000\000\000\000\000\000\003z\000\000\000\000\000\000\000\000\000\000\007\174\n\250\000\000\000\000\001\238\011\018\005:\r2\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\000\000\000\000\004\162\n\222\000\000\000\000\000\000\n\226\n\230\n\242\011\006\000\000\007\138\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\011\130\000\000\007\150\007\154\000\000\000\000\000\000\000\000\000\000\000\000\000\000\018\030\011\166\r\026\007\166\007\170\000\000\r.\000\000\000\000\000\006\000\000\000\000\000\000\003b\003f\003j\000\000\003n\003\014\000\000\000\000\000\000\000\000\003z\000\000\000\000\000\000\000\000\000\000\007\174\n\250\000\000\000\000\001\238\011\018\005:\r2\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\000\000\000\000\004\162\n\222\000\000\000\000\000\000\n\226\n\230\n\242\011\006\000\000\007\138\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\011\130\000\000\007\150\007\154\000\000\000\000\000\000\000\000\000\000\000\000\000\000\018F\011\166\r\026\007\166\007\170\000\000\r.\000\000\000\000\000\006\000\000\000\000\000\000\003b\003f\003j\000\000\003n\003\014\000\000\000\000\000\000\000\000\003z\000\000\000\000\000\000\000\000\000\000\007\174\n\250\000\000\000\000\001\238\011\018\005:\r2\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\000\000\000\000\004\162\n\222\000\000\000\000\000\000\n\226\n\230\n\242\011\006\000\000\007\138\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\011\130\000\000\007\150\007\154\000\000\000\000\000\000\000\000\000\000\000\000\000\000\018n\011\166\r\026\007\166\007\170\000\000\r.\000\000\000\000\000\006\000\000\000\000\000\000\003b\003f\003j\000\000\003n\003\014\000\000\000\000\000\000\000\000\003z\000\000\000\000\000\000\000\000\000\000\007\174\n\250\000\000\000\000\001\238\011\018\005:\r2\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\000\000\000\000\004\162\n\222\000\000\000\000\000\000\n\226\n\230\n\242\011\006\000\000\007\138\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\011\130\000\000\007\150\007\154\000\000\000\000\000\000\000\000\000\000\000\000\000\000\018\150\011\166\r\026\007\166\007\170\000\000\r.\000\000\000\000\000\006\000\000\000\000\000\000\003b\003f\003j\000\000\003n\003\014\000\000\000\000\000\000\000\000\003z\000\000\000\000\000\000\000\000\000\000\007\174\n\250\000\000\000\000\001\238\011\018\005:\r2\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\000\000\000\000\004\162\n\222\000\000\000\000\000\000\n\226\n\230\n\242\011\006\000\000\007\138\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\011\130\000\000\007\150\007\154\000\000\000\000\000\000\000\000\000\000\000\000\000\000\018\186\011\166\r\026\007\166\007\170\000\000\r.\000\000\000\000\000\006\000\000\000\000\000\000\003b\003f\003j\000\000\003n\003\014\000\000\000\000\000\000\000\000\003z\000\000\000\000\000\000\000\000\000\000\007\174\n\250\000\000\000\000\001\238\011\018\005:\r2\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\000\000\000\000\004\162\n\222\000\000\000\000\000\000\n\226\n\230\n\242\011\006\000\000\007\138\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\011\130\000\000\007\150\007\154\000\000\000\000\000\000\000\000\000\000\000\000\000\000\018\222\011\166\r\026\007\166\007\170\000\000\r.\000\000\000\000\000\006\000\000\000\000\000\000\003b\003f\003j\000\000\003n\003\014\000\000\000\000\000\000\000\000\003z\000\000\000\000\000\000\000\000\000\000\007\174\n\250\000\000\000\000\001\238\011\018\005:\r2\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\000\000\000\000\004\162\n\222\000\000\000\000\000\000\n\226\n\230\n\242\011\006\000\000\007\138\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\011\130\000\000\007\150\007\154\000\000\000\000\000\000\000\000\000\000\000\000\000\000\019\n\011\166\r\026\007\166\007\170\000\000\r.\000\000\000\000\000\006\000\000\000\000\000\000\003b\003f\003j\000\000\003n\003\014\000\000\000\000\000\000\000\000\003z\000\000\000\000\000\000\000\000\000\000\007\174\n\250\000\000\000\000\001\238\011\018\005:\r2\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\000\000\000\000\004\162\n\222\000\000\000\000\000\000\n\226\n\230\n\242\011\006\000\000\007\138\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\011\130\000\000\007\150\007\154\000\000\000\000\000\000\000\000\000\000\000\000\000\000\019.\011\166\r\026\007\166\007\170\000\000\r.\000\000\000\000\000\006\000\000\000\000\000\000\003b\003f\003j\000\000\003n\003\014\000\000\000\000\000\000\000\000\003z\000\000\000\000\000\000\000\000\000\000\007\174\n\250\000\000\000\000\001\238\011\018\005:\r2\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\000\000\000\000\004\162\n\222\000\000\000\000\000\000\n\226\n\230\n\242\011\006\000\000\007\138\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\011\130\000\000\007\150\007\154\000\000\000\000\000\000\000\000\000\000\000\000\000\000\019R\011\166\r\026\007\166\007\170\000\000\r.\000\000\000\000\000\006\000\000\000\000\000\000\003b\003f\003j\000\000\003n\003\014\000\000\000\000\000\000\000\000\003z\000\000\000\000\000\000\000\000\000\000\007\174\n\250\000\000\000\000\001\238\011\018\005:\r2\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\000\000\000\000\004\162\n\222\000\000\000\000\000\000\n\226\n\230\n\242\011\006\000\000\007\138\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\011\130\000\000\007\150\007\154\000\000\000\000\000\000\000\000\000\000\000\000\000\000\019n\011\166\r\026\007\166\007\170\000\000\r.\000\000\000\000\000\006\000\000\000\000\000\000\003b\003f\003j\000\000\003n\003\014\000\000\000\000\000\000\000\000\003z\000\000\000\000\000\000\000\000\000\000\007\174\n\250\000\000\000\000\001\238\011\018\005:\r2\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\000\000\000\000\004\162\n\222\000\000\000\000\000\000\n\226\n\230\n\242\011\006\000\000\007\138\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\011\130\000\000\007\150\007\154\000\000\000\000\000\000\000\000\000\000\000\000\000\000\020\014\011\166\r\026\007\166\007\170\000\000\r.\000\000\000\000\000\006\000\000\000\000\000\000\003b\003f\003j\000\000\003n\003\014\000\000\000\000\000\000\000\000\003z\000\000\000\000\000\000\000\000\000\000\007\174\n\250\000\000\000\000\001\238\011\018\005:\r2\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\000\000\000\000\004\162\n\222\000\000\000\000\000\000\n\226\n\230\n\242\011\006\000\000\007\138\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\011\130\000\000\007\150\007\154\000\000\000\000\000\000\000\000\000\000\000\000\000\000\020\"\011\166\r\026\007\166\007\170\000\000\r.\000\000\000\000\000\006\000\000\000\000\000\000\003b\003f\003j\000\000\003n\003\014\000\000\000\000\000\000\000\000\003z\000\000\000\000\000\000\000\000\000\000\007\174\n\250\000\000\000\000\001\238\011\018\005:\r2\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\000\000\000\000\004\162\n\222\000\000\000\000\000\000\n\226\n\230\n\242\011\006\000\000\007\138\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\011\130\000\000\007\150\007\154\000\000\000\000\000\000\000\000\000\000\000\000\000\000\020>\011\166\r\026\007\166\007\170\000\000\r.\000\000\000\000\000\006\000\000\000\000\000\000\003b\003f\003j\000\000\003n\003\014\000\000\000\000\000\000\000\000\003z\000\000\000\000\000\000\000\000\000\000\007\174\n\250\000\000\000\000\001\238\011\018\005:\r2\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\000\000\000\000\004\162\n\222\000\000\000\000\000\000\n\226\n\230\n\242\011\006\000\000\007\138\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\011\130\000\000\007\150\007\154\000\000\000\000\000\000\000\000\000\000\000\000\000\000\020\162\011\166\r\026\007\166\007\170\000\000\r.\000\000\000\000\000\006\000\000\000\000\000\000\003b\003f\003j\000\000\003n\003\014\000\000\000\000\000\000\000\000\003z\000\000\000\000\000\000\000\000\000\000\007\174\n\250\000\000\000\000\001\238\011\018\005:\r2\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\000\000\000\000\004\162\n\222\000\000\000\000\000\000\n\226\n\230\n\242\011\006\000\000\007\138\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\011\130\000\000\007\150\007\154\000\000\000\000\000\000\000\000\000\000\000\000\000\000\020\210\011\166\r\026\007\166\007\170\000\000\r.\000\000\000\000\000\006\000\000\000\000\000\000\003b\003f\003j\000\000\003n\003\014\000\000\000\000\000\000\000\000\003z\000\000\000\000\000\000\000\000\000\000\007\174\n\250\000\000\000\000\001\238\011\018\005:\r2\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\000\000\000\000\004\162\n\222\000\000\000\000\000\000\n\226\n\230\n\242\011\006\000\000\007\138\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\011\130\000\000\007\150\007\154\000\000\000\000\000\000\000\000\000\000\000\000\000\000\020\238\011\166\r\026\007\166\007\170\000\000\r.\000\000\000\000\000\006\000\000\000\000\000\000\003b\003f\003j\000\000\003n\003\014\000\000\000\000\000\000\000\000\003z\000\000\000\000\000\000\000\000\000\000\007\174\n\250\000\000\000\000\001\238\011\018\005:\r2\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\000\000\000\000\004\162\n\222\000\000\000\000\000\000\n\226\n\230\n\242\011\006\000\000\007\138\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\011\130\000\000\007\150\007\154\000\000\000\000\000\000\000\000\000\000\000\000\000\000\021\006\011\166\r\026\007\166\007\170\000\000\r.\000\000\000\000\000\006\000\000\000\000\000\000\003b\003f\003j\000\000\003n\003\014\000\000\000\000\000\000\000\000\003z\000\000\000\000\000\000\000\000\000\000\007\174\n\250\000\000\000\000\001\238\011\018\005:\r2\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\000\000\000\000\004\162\n\222\000\000\000\000\000\000\n\226\n\230\n\242\011\006\000\000\007\138\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\011\130\000\000\007\150\007\154\000\000\000\000\000\000\000\000\000\000\000\000\000\000\021\026\011\166\r\026\007\166\007\170\000\000\r.\b}\000\000\000\006\000\000\000\000\b}\003b\003f\003j\000\000\003n\003\014\000\000\000\000\000\000\000\000\003z\000\000\000\000\000\000\000\000\000\000\007\174\n\250\000\000\b}\001\238\011\018\005:\r2\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\b}\004\142\004\154\004\166\004\170\004\178\t~\000\000\000\000\b}\003Z\000\000\000\000\004\162\n\222\b}\b}\000\242\n\226\n\230\n\242\011\006\000\000\007\138\b}\b}\000\000\000\000\000\000\000\000\000\000\000\000\000\000\011\130\000\000\007\150\007\154\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0216\011\166\r\026\007\166\007\170\000\000\r.\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\b}\000\000\000\000\000\189\000\000\000\000\000\000\000\000\000\189\007\174\n\250\000\189\000\189\000\000\011\018\005:\r2 \214\016\001\015\245\000\189\000\000\000\189\000\189\000\189\000\000\000\189\000\189\000\189\000\000\n\133\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\001\000\000\000\189\002b\000\000\000\000\002f\001\230\001\234\000\189\000\189\000\000\000\000\000\189\002n\n\133\000\000\000\189\000\000\000\189\002r\000\000\000\189\002z\000\000\015\245\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\n\133\000\000\000\000\000\000\000\189\000\000\000\189\000\000\000\189\000\000\000\000\ru\000\189\004\254\ru\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\ru\ru\000\000\ru\ru\000\000\001\238\000\000\003J\000\000#\006\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\ru\000\000\003\170\000\000\000\000\003\190\020\198\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\ru\004\190\006%\004\198\007~\000\000\007\138\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ru\000\000\007\142\007\150\007\154#\030\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\ru\000\000\ru\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\024\210\000\000\ru\ru\025\030\000\000\ru\ru\002J\007\174\000\000\ru\002J\ru\000\000\005:\rq\ru\002N\rq\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\rq\rq\000\000\rq\rq\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\rq\003Z\003\170\000\000\n\129\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\rq\004\190\000i\004\198\007~\000\000\007\138\n\129\000\000\000i\t\174\000\000\000\000\000\000\t\174\rq\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\000\000\000\000\007\254\rq\000\000\rq\000\000\000\000\000\000\000\000\000\000\000i\000\000\000\000\000\000\000\000\000\000\rq\rq\000\000\000\000\rq\rq\000\000\007\174\000\000\rq\000\000\rq\000i\005:\000\000\rq\n\129\000i\000\000\000\000\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\n\129\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\000\000\000i\000i\000\000\000\000\000i\000\000\n\129\000\000\000i\000\000\000i\000\000\000\000\000i\000\000\000\000\000\000\000\000\000\000\000i\000i\000i\000\000\000\000\000\000\000\000\000\000\000\000\000i\000i\006\133\016I\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\006\133\000\000\000\000\000i\006\133\000i\000i\000\000\000i\000i\000\000\006U\000\000\000\000\n\129\000\000\006U\000\000\000i\006U\006U\000\000\000i\000\000\006U\000\000\000i\006U\006U\000\000\006U\000i\006U\000\000\006U\000i\006U\000i\006U\006U\006U\000\000\006U\006U\006U\000\000\000\000\000\000\006U\000\000\000\000\000\000\0015\000\000\000\000\006U\006U\0015\000\000\000\000\000\000\000\000\016I\006U\006U\016I\016I\006U\006U\000\000\000\000\006U\000\000\006U\006U\006U\006U\0015\000\000\000\000\006\133\000\000\006U\006U\006U\000\000\016I\000\000\016I\000\000\006U\006U\006U\006U\000\000\000\000\006\133\006U\006U\006\133\0015\006U\003\142\000\000\000\000\006U\000\000\000\000\006U\0015\006U\006U\000\000\006U\006U\0015\006U\000\000\006U\006U\000\000\006U\006U\000\000\0015\0015\000\000\000\000\000\000\000\000\029\n\006U\000\000\006U\000\000\006U\000\000\000\000\003>\006U\000\000\000\000\006U\000\000\006U\000\000\000\000\000\000\006U\000\000\006U\006U\000}\000}\000\000\0015\000\000\000}\000\000\000\000\000}\000}\000\000\000\000\0015\000\000\000\000\016\001\015\245\000}\000\000\000}\000}\000}\000\000\000}\000}\000}\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\001\005\177\000}\002b\000\000\005\177\002f\000\000\000\000\000}\000}\000\000\000\000\000}\004\n\005\177\000\000\000}\000\000\000}\002r\005\177\000}\002z\000\000\015\245\000\000\000\000\000}\000}\000}\000\000\000\000\005\177\000\000\000\000\000\000\000}\000}\000\000\005\177\000\000\000\000\000\000\000}\000}\000\000\005F\000\000\002~\005\177\000}\000\000\005\177\000}\000\000\000\000\000\000\000\000\005\177\004\"\000\000\000}\000\000\000}\000}\000\000\000}\000}\000\000\000\000\000\000\000\000\000\000\000\000\005\177\000\000\000}\005\177\000}\000\000\000}\005\177\000\129\000\129\000}\000\000\000\000\000\129\000\000\000}\000\129\000\129\005\177\000}\005\177\000}\000}\005\177\002\130\000\129\000\000\000\129\000\129\000\129\000\000\000\129\000\129\000\129\000\000\000\000\000\000\000\000\000\000\000\000\000\000\005\177\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%\242\004i\000\129\000\000\000\129\000\000\004.\000\129\004i\000\000\000\000\004i\000\000\000\129\000\129\000\129\000\000\000\000\004:\004i\000\000\000\000\000\129\000\129\000\000\025\150\000\000\004i\000\000\000\129\000\129\000\000\005z\000\000\000\000!v\000\129\004i\025\250\000\129\000\000\000\000\000\000\004i\026\018\004i\000\000\000\129\000\000\000\129\000\129\004i\000\129\000\129\000\000\000\000\000\000\000\000\004i\000\000\026\026\000\000\000\129%\130\000\129\000\000\000\129%\162\000\133\000\133\000\129\000\000\000\000\000\133\000\000\000\129\000\133\000\133\026\"\000\129\026^\000\129\000\129\005\237\026\030\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\030\174\000\000\000\000\000\250\000\133\000\000\000\000\003\254\000\000\000\000\000\000\000\133\000\133\000\000\000\000\000\133\000\000\005\229\000\000\000\133\000\000\000\133\000\000\004.\000\133\000\000\000\000\000\000\000\000\000\000\000\133\000\133\000\133\000\000\000\000\004:\000\000\000\000\000\000\000\133\000\133\000\000\025\150\000\000\000\000\000\000\000\133\000\133\000\000\005\158\000\000\000\000!v\000\133\000\000\025\250\000\133\000\000\000\000\000\000\000\000\026\018\000\000\001=\000\133\000\000\000\133\000\133\001=\000\133\000\133\000\000\000\000\000\000\000\000\000\000\000\000\026\026\000\000\000\133\000\000\000\133\000\000\000\133\000\000\011\005\011\005\000\133\001=\000\000\011\005\000\000\000\133\001\234\011\005\026\"\000\133\026^\000\133\000\133\000\000\000\000\011\005\000\000\011\005\011\005\011\005\000\000\011\005\011\005\011\005\001=\000\000\027\182\000\000\000\000\000\000\000\000\030\174\000\000\001=\000\000\011\005\000\000\000\000\000\000\001=\001\230\001\234\011\005\011\005\000\000\000\000\011\005\000\000\000\000\001=\005\002\000\000\011\005\000\000\000\000\011\005\000\000\000\000\000\000\001\238\003\018\011\005\011\005\011\005\000\000\000\000\006\137\016I\000\000\000\000\011\005\011\005\000\000\000\000\000\000\000\000\000\000\011\005\000\000\001=\011\005\000\000\000\000\006\170\005n\005\002\006\137\011\005\001=\003F\006\137\003Z\004\226\004\238\000\000\011\005\000\000\011\005\011\005\004\250\011\005\011\005\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\011\005\000\000\011\005\000\000\011\005\000\000\015\197\015\197\011\005\004\254\000\000\015\197\000\000\011\005\001\234\015\197\000\000\011\005\000\000\011\005\011\005\000\000\000\000\006\014\000\000\015\197\015\197\015\197\000\000\015\197\015\197\015\197\000\000\000\000\000\000\000\000\000\000\000\000\016I\000\000\000\000\016I\016I\015\197\000\000\000\000\000\000\000\000\001\230\001\234\015\197\015\197\000\000\000\000\015\197\000\000\006\137\000\000\005\002\000\000\015\197\000\000\016I\015\197\016I\000\000\000\000\001\238\003\018\015\197\015\197\015\197\006\137\000\000\000\000\006\137\000\000\000\000\015\197\015\197\000\000\000\000\000\000\000\000\000\000\015\197\000\000\000\000\015\197\000\000\000\000#~\005n\005\002\000\000\015\197\000\000\003F\000\000\003Z\004\226\004\238\000\000\015\197\000\000\015\197\015\197\004\250\015\197\015\197\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\015\197\000\000\015\197\000\000\015\197\000\000\011\t\011\t\015\197\004\254\000\000\011\t\000\000\015\197\001\234\011\t\000\000\015\197\000\000\015\197\015\197\000\000\000\000\011\t\000\000\011\t\011\t\011\t\000\000\011\t\011\t\011\t\000\000\000\000\000\000\000\000\000\000\000\000\000\000\025.\000\000\000\000\000\000\011\t\000\000\000\000\000\000\002J\000\000\000\000\011\t\011\t\000\000\000\000\011\t\000\000\000\000\002N\005\002\000\000\011\t\000\000\000\000\011\t\000\000\001\238\000\000\000\000\000\000\011\t\011\t\011\t\000\000\000\000\000\000\000\000\000\000\000\000\011\t\011\t\000\000\000\000\000\000\003\230\000\000\011\t\000\000\000\000\011\t\t\170\000\000\001\250\005n\000\000\000\000\011\t\000\000\003Z\000\000\000\000\000\000\000\000\000\000\011\t\000\000\011\t\011\t\000\000\011\t\011\t\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\011\t\000\000\011\t\000\000\011\t\015\201\015\201\000\000\011\t\000\000\015\201\000\000\t\174\011\t\015\201\000\000\000\000\011\t\000\000\011\t\011\t\000\000\005^\000\000\015\201\015\201\015\201\000\000\015\201\015\201\015\201\000\000\000\000\000\000\000\000\000\000\000\000\001\230\001\234\000\000\000\000\000\000\015\201\000\000\000\000\000\000\000\000\000\000\000\000\015\201\015\201\000\000\000\000\015\201\000\000\000\000\001\238\001\242\000\000\015\201\000\000\000\000\015\201\000\000\000\000\000\000\000\000\000\000\015\201\015\201\015\201\000\000\000\000\000\000\000\000\000\000\000\000\015\201\015\201\000\000\023\234\000\000\005\002\000\000\015\201\000\000\003F\015\201\003Z\004\226\004\238\015\201\000\000\000\000\015\201\000\000\004\250\000\000\023v\000\000\000\000\000\000\015\201\000\000\015\201\015\201\000\000\015\201\015\201\001\230\001\234\000\000\000\000\000\000\000\000\000\000\004\254\015\201\000\000\015\201\023\194\015\201\004\029\004\029\000\000\015\201\000\000\004\029\001\238\003\018\015\201\004\029\000\000\000\000\015\201\000\000\015\201\015\201\000\000\000\000\000\000\004\029\004\029\004\029\000\000\004\029\004\029\004\029\000\000\000\000\000\000\000\000\003J\000\000#\006\000\000\000\000\000\000\003F\004\029\003Z\004\226\004\238\000\000\000\000\000\000\004\029\005N\004\250\000\000\004\029\000\000\000\000\000\000\000\000\000\000\004\029\000\000\000\000\004\029\000\000\000\000\000\000\000\000\000\000\004\029\004\029\004\029\004\254\000\000\000\000\006)\000\000\000\000\004\029\004\029\000\000\000\000\000\000\000\000\000\000\004\029\000\000\000\000\004\029\000\000\000\000\000\000\004\029#\030\000\000\004\029\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\029\000\000\004\029\004\029\000\000\004\029\004\029\001\230\001\234\000\000\000\000\000\000\000\000\000\000\000\000\004\029\000\000\004\029\000\000\004\029\015\r\015\r\000\000\004\029\000\000\015\r\001\238\003\018\004\029\015\r\000\000\000\000\004\029\000\000\004\029\004\029\000\000\000\000\000\000\015\r\015\r\015\r\000\000\015\r\015\r\015\r\000\000\000\000\000\000\000\000\003J\000\000\005\002\025V\000\000\000\000\003F\015\r\003Z\004\226\004\238\002J\000\000\000\000\015\r\005N\004\250\000\000\015\r\000\000\000\000\002N\000\000\000\000\015\r\000\000\000\000\015\r\000\000\001\238\000\000\000\000\000\000\015\r\015\r\015\r\004\254\000\000\000\000\000\000\023\210\000\000\015\r\015\r\000\000\000\000\000\000\003\230\000\000\015\r\000\000\000\000\015\r\t\170\000\000\001\250\015\r\000\000\000\000\015\r\000\000\003Z\000\000\000\000\000\000\000\000\000\000\015\r\000\000\015\r\015\r\025f\015\r\015\r\000\000\000\000\000\000\000\000\000\000\002J\000\000\000\000\015\r\000\000\015\r\000\000\015\r\015\021\015\021\002N\015\r\000\000\015\021\000\000\t\174\015\r\015\021\001\238\000\000\015\r\000\000\015\r\015\r\000\000\000\000\000\000\015\021\015\021\015\021\000\000\015\021\015\021\015\021\000\000\000\000\003\230\000\000\000\000\000\000\000\000\000\000\t\170\000\000\001\250\015\021\000\000\000\000\000\000\000\000\003Z\000\000\015\021\005N\000\000\000\000\015\021\000\000\000\000\000\000\000\000\000\000\015\021\000\000\000\000\015\021\000\000\000\000\000\000\000\000\000\000\015\021\015\021\015\021\000\000\000\000\000\000\000\000\000\000\000\000\015\021\015\021\000\000\t\174\000\000\000\000\000\000\015\021\000\000\000\000\015\021\000\000\000\000\000\000\015\021\000\000\000\000\015\021\000\000\000\000\000\000\000\000\000\000\000\000\000\000\015\021\000\000\015\021\015\021\000\000\015\021\015\021\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\015\021\000\000\015\021\000\000\015\021\015\025\015\025\000\000\015\021\000\000\015\025\000\000\000\000\015\021\015\025\000\000\000\000\015\021\000\000\015\021\015\021\000\000\000\000\000\000\015\025\015\025\015\025\000\000\015\025\015\025\015\025\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\015\025\000\000\000\000\000\000\000\000\000\000\000\000\015\025\005\246\000\000\000\000\015\025\000\000\000\000\000\000\000\000\000\000\015\025\000\000\000\000\015\025\000\000\000\000\000\000\000\000\000\000\015\025\015\025\015\025\000\000\000\000\000\000\000\000\000\000\000\000\015\025\015\025\000\000\000\000\000\000\000\000\000\000\015\025\000\000\000\000\015\025\000\000\000\000\000\000\015\025\000\000\000\000\015\025\000\000\000\000\000\000\000\000\000\000\000\000\000\000\015\025\000\000\015\025\015\025\000\000\015\025\015\025\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\015\025\000\000\015\025\000\000\015\025\015\029\015\029\000\000\015\025\000\000\015\029\000\000\000\000\015\025\015\029\000\000\000\000\015\025\000\000\015\025\015\025\000\000\000\000\000\000\015\029\015\029\015\029\000\000\015\029\015\029\015\029\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\015\029\000\000\000\000\000\000\000\000\000\000\000\000\015\029\005N\000\000\000\000\015\029\000\000\000\000\000\000\000\000\000\000\015\029\000\000\000\000\015\029\000\000\000\000\000\000\000\000\000\000\015\029\015\029\015\029\000\000\000\000\000\000\000\000\000\000\000\000\015\029\015\029\000\000\000\000\000\000\000\000\000\000\015\029\000\000\000\000\015\029\000\000\000\000\000\000\015\029\000\000\000\000\015\029\000\000\000\000\000\000\000\000\000\000\000\000\000\000\015\029\000\000\015\029\015\029\000\000\015\029\015\029\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\015\029\000\000\015\029\000\000\015\029\015!\015!\000\000\015\029\000\000\015!\000\000\000\000\015\029\015!\000\000\000\000\015\029\000\000\015\029\015\029\000\000\000\000\000\000\015!\015!\015!\000\000\015!\015!\015!\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\015!\000\000\000\000\000\000\000\000\000\000\000\000\015!\005\246\000\000\000\000\015!\000\000\000\000\000\000\000\000\000\000\015!\000\000\000\000\015!\000\000\000\000\000\000\000\000\000\000\015!\015!\015!\000\000\000\000\000\000\000\000\000\000\000\000\015!\015!\000\000\000\000\000\000\000\000\000\000\015!\000\000\000\000\015!\000\000\000\000\000\000\015!\000\000\000\000\015!\000\000\000\000\000\000\000\000\000\000\000\000\000\000\015!\000\000\015!\015!\000\000\015!\015!\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\015!\000\000\015!\000\000\015!\014\197\014\197\000\000\015!\000\000\014\197\000\000\000\000\015!\014\197\000\000\000\000\015!\000\000\015!\015!\000\000\000\000\000\000\014\197\014\197\014\197\000\000\014\197\014\197\014\197\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\014\197\000\000\000\000\000\000\000\000\000\000\000\000\014\197\005N\000\000\000\000\014\197\000\000\000\000\000\000\000\000\000\000\014\197\000\000\000\000\014\197\000\000\000\000\000\000\000\000\000\000\014\197\014\197\014\197\000\000\000\000\000\000\000\000\000\000\000\000\014\197\014\197\000\000\000\000\000\000\000\000\000\000\014\197\000\000\000\000\014\197\000\000\000\000\000\000\014\197\000\000\000\000\014\197\000\000\000\000\000\000\000\000\000\000\000\000\000\000\014\197\000\000\014\197\014\197\000\000\014\197\014\197\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\014\197\000\000\014\197\000\000\014\197\014\201\014\201\000\000\014\197\000\000\014\201\000\000\000\000\014\197\014\201\000\000\000\000\014\197\000\000\014\197\014\197\000\000\000\000\000\000\014\201\014\201\014\201\000\000\014\201\014\201\014\201\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\014\201\000\000\000\000\000\000\000\000\000\000\000\000\014\201\005\246\000\000\000\000\014\201\000\000\000\000\000\000\000\000\000\000\014\201\000\000\000\000\014\201\000\000\000\000\000\000\000\000\000\000\014\201\014\201\014\201\000\000\000\000\000\000\000\000\000\000\000\000\014\201\014\201\000\000\000\000\000\000\000\000\000\000\014\201\000\000\000\000\014\201\000\000\000\000\000\000\014\201\000\000\000\000\014\201\000\000\000\000\000\000\000\000\000\000\000\000\000\000\014\201\000\000\014\201\014\201\000\000\014\201\014\201\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\014\201\000\000\014\201\000\000\014\201\014\205\014\205\000\000\014\201\000\000\014\205\000\000\000\000\014\201\014\205\000\000\000\000\014\201\000\000\014\201\014\201\000\000\000\000\000\000\014\205\014\205\014\205\000\000\014\205\014\205\014\205\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\014\205\000\000\000\000\000\000\000\000\000\000\000\000\014\205\005N\000\000\000\000\014\205\000\000\000\000\000\000\000\000\000\000\014\205\000\000\000\000\014\205\000\000\000\000\000\000\000\000\000\000\014\205\014\205\014\205\000\000\000\000\000\000\000\000\000\000\000\000\014\205\014\205\000\000\000\000\000\000\000\000\000\000\014\205\000\000\000\000\014\205\000\000\000\000\000\000\014\205\000\000\000\000\014\205\000\000\000\000\000\000\000\000\000\000\000\000\000\000\014\205\000\000\014\205\014\205\000\000\014\205\014\205\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\014\205\000\000\014\205\000\000\014\205\014\209\014\209\000\000\014\205\000\000\014\209\000\000\000\000\014\205\014\209\000\000\000\000\014\205\000\000\014\205\014\205\000\000\000\000\000\000\014\209\014\209\014\209\000\000\014\209\014\209\014\209\000\000\000\000\000\000\000\000\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\000\000\014\209\005\246\000\000\000\000\014\209\000\000\000\000\000\000\000\000\000\000\014\209\000\000\000\000\014\209\000\000\000\000\000\000\000\000\000\000\014\209\014\209\014\209\000\000\000\000\000\000\000\000\000\000\000\000\014\209\014\209\000\000\000\000\000\000\000\000\000\000\014\209\000\000\000\000\014\209\000\000\000\000\000\000\014\209\000\000\000\000\014\209\000\000\000\000\000\000\000\000\000\000\000\000\000\000\014\209\000\000\014\209\014\209\000\000\014\209\014\209\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\014\209\000\000\014\209\000\000\014\209\014\213\014\213\000\000\014\209\000\000\014\213\000\000\000\000\014\209\014\213\000\000\000\000\014\209\000\000\014\209\014\209\000\000\000\000\000\000\014\213\014\213\014\213\000\000\014\213\014\213\014\213\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\014\213\000\000\000\000\000\000\000\000\000\000\000\000\014\213\005N\000\000\000\000\014\213\000\000\000\000\000\000\000\000\000\000\014\213\000\000\000\000\014\213\000\000\000\000\000\000\000\000\000\000\014\213\014\213\014\213\000\000\000\000\000\000\000\000\000\000\000\000\014\213\014\213\000\000\000\000\000\000\000\000\000\000\014\213\000\000\000\000\014\213\000\000\000\000\000\000\014\213\000\000\000\000\014\213\000\000\000\000\000\000\000\000\000\000\000\000\000\000\014\213\000\000\014\213\014\213\000\000\014\213\014\213\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\014\213\000\000\014\213\000\000\014\213\014\217\014\217\000\000\014\213\000\000\014\217\000\000\000\000\014\213\014\217\000\000\000\000\014\213\000\000\014\213\014\213\000\000\000\000\000\000\014\217\014\217\014\217\000\000\014\217\014\217\014\217\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\014\217\000\000\000\000\000\000\000\000\000\000\000\000\014\217\005\246\000\000\000\000\014\217\000\000\000\000\000\000\000\000\000\000\014\217\000\000\000\000\014\217\000\000\000\000\000\000\000\000\000\000\014\217\014\217\014\217\000\000\000\000\000\000\000\000\000\000\000\000\014\217\014\217\000\000\000\000\000\000\000\000\000\000\014\217\000\000\000\000\014\217\000\000\000\000\000\000\014\217\000\000\000\000\014\217\000\000\000\000\000\000\000\000\000\000\000\000\000\000\014\217\000\000\014\217\014\217\000\000\014\217\014\217\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\014\217\000\000\014\217\000\000\014\217\014\221\014\221\000\000\014\217\000\000\014\221\000\000\000\000\014\217\014\221\000\000\000\000\014\217\000\000\014\217\014\217\000\000\000\000\000\000\014\221\014\221\014\221\000\000\014\221\014\221\014\221\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\014\221\000\000\000\000\000\000\000\000\000\000\000\000\014\221\005N\000\000\000\000\014\221\000\000\000\000\000\000\000\000\000\000\014\221\000\000\000\000\014\221\000\000\000\000\000\000\000\000\000\000\014\221\014\221\014\221\000\000\000\000\000\000\000\000\000\000\000\000\014\221\014\221\000\000\000\000\000\000\000\000\000\000\014\221\000\000\000\000\014\221\000\000\000\000\000\000\014\221\000\000\000\000\014\221\000\000\000\000\000\000\000\000\000\000\000\000\000\000\014\221\000\000\014\221\014\221\000\000\014\221\014\221\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\014\221\000\000\014\221\000\000\014\221\014\225\014\225\000\000\014\221\000\000\014\225\000\000\000\000\014\221\014\225\000\000\000\000\014\221\000\000\014\221\014\221\000\000\000\000\000\000\014\225\014\225\014\225\000\000\014\225\014\225\014\225\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\014\225\000\000\000\000\000\000\000\000\000\000\000\000\014\225\005\246\000\000\000\000\014\225\000\000\000\000\000\000\000\000\000\000\014\225\000\000\000\000\014\225\000\000\000\000\000\000\000\000\000\000\014\225\014\225\014\225\000\000\000\000\000\000\000\000\000\000\000\000\014\225\014\225\000\000\000\000\000\000\000\000\000\000\014\225\000\000\000\000\014\225\000\000\000\000\000\000\014\225\000\000\000\000\014\225\000\000\000\000\000\000\000\000\000\000\000\000\000\000\014\225\000\000\014\225\014\225\000\000\014\225\014\225\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\014\225\000\000\014\225\000\000\014\225\015\017\015\017\000\000\014\225\000\000\015\017\000\000\000\000\014\225\015\017\000\000\000\000\014\225\000\000\014\225\014\225\000\000\000\000\000\000\015\017\015\017\015\017\000\000\015\017\015\017\015\017\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\015\017\000\000\000\000\000\000\000\000\000\000\000\000\015\017\005\246\000\000\000\000\015\017\000\000\000\000\000\000\000\000\000\000\015\017\000\000\000\000\015\017\000\000\000\000\000\000\000\000\000\000\015\017\015\017\015\017\000\000\000\000\000\000\000\000\000\000\000\000\015\017\015\017\000\000\000\000\000\000\000\000\000\000\015\017\000\000\000\000\015\017\000\000\000\000\000\000\015\017\000\000\000\000\015\017\000\000\000\000\000\000\000\000\000\000\000\000\000\000\015\017\000\000\015\017\015\017\000\000\015\017\015\017\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\015\017\000\000\015\017\000\000\015\017\015\005\015\005\000\000\015\017\000\000\015\005\000\000\000\000\015\017\015\005\000\000\000\000\015\017\000\000\015\017\015\017\000\000\000\000\000\000\015\005\015\005\015\005\000\000\015\005\015\005\015\005\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\015\005\000\000\000\000\000\000\000\000\000\000\000\000\015\005\005N\000\000\000\000\015\005\000\000\000\000\000\000\000\000\000\000\015\005\000\000\000\000\015\005\000\000\000\000\000\000\000\000\000\000\015\005\015\005\015\005\000\000\000\000\000\000\000\000\000\000\000\000\015\005\015\005\000\000\000\000\000\000\000\000\000\000\015\005\000\000\000\000\015\005\000\000\000\000\000\000\015\005\000\000\000\000\015\005\000\000\000\000\000\000\000\000\000\000\000\000\000\000\015\005\000\000\015\005\015\005\000\000\015\005\015\005\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\015\005\000\000\015\005\000\000\015\005\015\t\015\t\000\000\015\005\000\000\015\t\000\000\000\000\015\005\015\t\000\000\000\000\015\005\000\000\015\005\015\005\000\000\000\000\000\000\015\t\015\t\015\t\000\000\015\t\015\t\015\t\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\015\t\000\000\000\000\000\000\000\000\000\000\000\000\015\t\005\246\000\000\000\000\015\t\000\000\000\000\000\000\000\000\000\000\015\t\000\000\000\000\015\t\000\000\000\000\000\000\000\000\000\000\015\t\015\t\015\t\000\000\000\000\000\000\000\000\000\000\000\000\015\t\015\t\000\000\000\000\000\000\000\000\000\000\015\t\000\000\000\000\015\t\000\000\000\000\000\000\015\t\000\000\000\000\015\t\000\000\000\000\000\000\000\000\000\000\000\000\000\000\015\t\000\000\015\t\015\t\000\000\015\t\015\t\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\015\t\000\000\015\t\000\000\015\t\014\229\014\229\000\000\015\t\000\000\014\229\000\000\000\000\015\t\014\229\000\000\000\000\015\t\000\000\015\t\015\t\000\000\000\000\000\000\014\229\014\229\014\229\000\000\014\229\014\229\014\229\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\014\229\000\000\000\000\000\000\000\000\000\000\000\000\014\229\005N\000\000\000\000\014\229\000\000\000\000\000\000\000\000\000\000\014\229\000\000\000\000\014\229\000\000\000\000\000\000\000\000\000\000\014\229\014\229\014\229\000\000\000\000\000\000\000\000\000\000\000\000\014\229\014\229\000\000\000\000\000\000\000\000\000\000\014\229\000\000\000\000\014\229\000\000\000\000\000\000\014\229\000\000\000\000\014\229\000\000\000\000\000\000\000\000\000\000\000\000\000\000\014\229\000\000\014\229\014\229\000\000\014\229\014\229\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\014\229\000\000\014\229\000\000\014\229\014\233\014\233\000\000\014\229\000\000\014\233\000\000\000\000\014\229\014\233\000\000\000\000\014\229\000\000\014\229\014\229\000\000\000\000\000\000\014\233\014\233\014\233\000\000\014\233\014\233\014\233\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\014\233\000\000\000\000\000\000\000\000\000\000\000\000\014\233\005\246\000\000\000\000\014\233\000\000\000\000\000\000\000\000\000\000\014\233\000\000\000\000\014\233\000\000\000\000\000\000\000\000\000\000\014\233\014\233\014\233\000\000\000\000\000\000\000\000\000\000\000\000\014\233\014\233\000\000\000\000\000\000\000\000\000\000\014\233\000\000\000\000\014\233\000\000\000\000\000\000\014\233\000\000\000\000\014\233\000\000\000\000\000\000\000\000\000\000\000\000\000\000\014\233\000\000\014\233\014\233\000\000\014\233\014\233\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\014\233\000\000\014\233\000\000\014\233\014\237\014\237\000\000\014\233\000\000\014\237\000\000\000\000\014\233\014\237\000\000\000\000\014\233\000\000\014\233\014\233\000\000\000\000\000\000\014\237\014\237\014\237\000\000\014\237\014\237\014\237\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\014\237\000\000\000\000\000\000\000\000\000\000\000\000\014\237\005N\000\000\000\000\014\237\000\000\000\000\000\000\000\000\000\000\014\237\000\000\000\000\014\237\000\000\000\000\000\000\000\000\000\000\014\237\014\237\014\237\000\000\000\000\000\000\000\000\000\000\000\000\014\237\014\237\000\000\000\000\000\000\000\000\000\000\014\237\000\000\000\000\014\237\000\000\000\000\000\000\014\237\000\000\000\000\014\237\000\000\000\000\000\000\000\000\000\000\000\000\000\000\014\237\000\000\014\237\014\237\000\000\014\237\014\237\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\014\237\000\000\014\237\000\000\014\237\014\241\014\241\000\000\014\237\000\000\014\241\000\000\000\000\014\237\014\241\000\000\000\000\014\237\000\000\014\237\014\237\000\000\000\000\000\000\014\241\014\241\014\241\000\000\014\241\014\241\014\241\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\014\241\000\000\000\000\000\000\000\000\000\000\000\000\014\241\005\246\000\000\000\000\014\241\000\000\000\000\000\000\000\000\000\000\014\241\000\000\000\000\014\241\000\000\000\000\000\000\000\000\000\000\014\241\014\241\014\241\000\000\000\000\000\000\000\000\000\000\000\000\014\241\014\241\000\000\000\000\000\000\000\000\000\000\014\241\000\000\000\000\014\241\000\000\000\000\000\000\014\241\000\000\000\000\014\241\000\000\000\000\000\000\000\000\000\000\000\000\000\000\014\241\000\000\014\241\014\241\000\000\014\241\014\241\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\014\241\000\000\014\241\000\000\014\241\014\245\014\245\000\000\014\241\000\000\014\245\000\000\000\000\014\241\014\245\000\000\000\000\014\241\000\000\014\241\014\241\000\000\000\000\000\000\014\245\014\245\014\245\000\000\014\245\014\245\014\245\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\014\245\000\000\000\000\000\000\000\000\000\000\000\000\014\245\005N\000\000\000\000\014\245\000\000\000\000\000\000\000\000\000\000\014\245\000\000\000\000\014\245\000\000\000\000\000\000\000\000\000\000\014\245\014\245\014\245\000\000\000\000\000\000\000\000\000\000\000\000\014\245\014\245\000\000\000\000\000\000\000\000\000\000\014\245\000\000\000\000\014\245\000\000\000\000\000\000\014\245\000\000\000\000\014\245\000\000\000\000\000\000\000\000\000\000\000\000\000\000\014\245\000\000\014\245\014\245\000\000\014\245\014\245\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\014\245\000\000\014\245\000\000\014\245\014\249\014\249\000\000\014\245\000\000\014\249\000\000\000\000\014\245\014\249\000\000\000\000\014\245\000\000\014\245\014\245\000\000\000\000\000\000\014\249\014\249\014\249\000\000\014\249\014\249\014\249\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\014\249\000\000\000\000\000\000\000\000\000\000\000\000\014\249\005\246\000\000\000\000\014\249\000\000\000\000\000\000\000\000\000\000\014\249\000\000\000\000\014\249\000\000\000\000\000\000\000\000\000\000\014\249\014\249\014\249\000\000\000\000\000\000\000\000\000\000\000\000\014\249\014\249\000\000\000\000\000\000\000\000\000\000\014\249\000\000\000\000\014\249\000\000\000\000\000\000\014\249\000\000\000\000\014\249\000\000\000\000\000\000\000\000\000\000\000\000\000\000\014\249\000\000\014\249\014\249\000\000\014\249\014\249\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\014\249\000\000\014\249\000\000\014\249\014\253\014\253\000\000\014\249\000\000\014\253\000\000\000\000\014\249\014\253\000\000\000\000\014\249\000\000\014\249\014\249\000\000\000\000\000\000\014\253\014\253\014\253\000\000\014\253\014\253\014\253\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\014\253\000\000\000\000\000\000\000\000\000\000\000\000\014\253\005N\000\000\000\000\014\253\000\000\000\000\000\000\000\000\000\000\014\253\000\000\000\000\014\253\000\000\000\000\000\000\000\000\000\000\014\253\014\253\014\253\000\000\000\000\000\000\000\000\000\000\000\000\014\253\014\253\000\000\000\000\000\000\000\000\000\000\014\253\000\000\000\000\014\253\000\000\000\000\000\000\014\253\000\000\000\000\014\253\000\000\000\000\000\000\000\000\000\000\000\000\000\000\014\253\000\000\014\253\014\253\000\000\014\253\014\253\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\014\253\000\000\014\253\000\000\014\253\015\001\015\001\000\000\014\253\000\000\015\001\000\000\000\000\014\253\015\001\000\000\000\000\014\253\000\000\014\253\014\253\000\000\000\000\000\000\015\001\015\001\015\001\000\000\015\001\015\001\015\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\015\001\000\000\000\000\000\000\000\000\000\000\000\000\015\001\005\246\000\000\000\000\015\001\000\000\000\000\000\000\000\000\000\000\015\001\000\000\000\000\015\001\000\000\000\000\000\000\000\000\000\000\015\001\015\001\015\001\000\000\000\000\000\000\000\000\000\000\000\000\015\001\015\001\000\000\000\000\000\000\000\000\000\000\015\001\000\000\000\000\015\001\000\000\000\000\000\000\015\001\000\000\000\000\015\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\015\001\000\000\015\001\015\001\000\000\015\001\015\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\015\001\000\000\015\001\000\000\015\001\0025\0025\000\000\015\001\000\000\0025\000\000\000\000\015\001\0025\000\000\000\000\015\001\000\000\015\001\015\001\000\000\000\000\000\000\0025\0025\0025\000\000\0025\0025\0025\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0025\000\000\000\000\000\000\000\000\000\000\000\000\0025\0025\000\000\000\000\0025\000\000\000\000\000\000\000\000\000\000\0025\000\000\000\000\0025\000\000\000\000\000\000\000\000\000\000\0025\0025\0025\000\000\000\000\000\000\000\000\000\000\000\000\0025\0025\000\000\000\000\000\000\000\000\000\000\0025\000\000\000\000\0025\000\000\000\000\000\000\0025\000\000\000\000\0025\000\000\000\000\003\146\003j\000\000\000\000\003\014\0025\t2\0025\0025\003z\0025\0025\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\238\0025\tj\0025\000\000\0025\000\000\003\150\000\000\0025\011\178\000\000\000\000\000\000\0025\000\000\000\000\000\000\006\030\000\000\0025\003\170\000\000\000\000\011\250\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\rQ\004\190\000\000\004\198\000\000\012b\007\138\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\005]\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\016\130\000\000\000\000\000\000\000\000\000\000\002E\002E\002E\000\000\000\000\002E\000\000\000\000\rQ\000\000\002E\000\000\rQ\rQ\000\000\007\174\002E\000\000\000\000\rQ\002E\005:\000\000\rQ\005]\000\000\000\000\002E\000\n\000\000\000\000\t\130\002E\000\000\000\000\000\000\000\000\000\000\023\018\000\000\000\000\002E\000\000\000\000\002E\002E\002E\000\000\000\000\000\000\000\000\000\000\002E\000\000\000\000\002E\002E\000\000\000\000\002E\002E\000\000\002E\002E\000\000\002E\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002E\002E\002E\000\000\002E\001\206\007u\007u\000\000\000\000\007u\000\000\000\000\002E\002E\007u\000\000\023N\000\000\000\000\000\000\000\000\000\000\000\000\000\000\007u\007u\000\000\000\000\000\000\000\000\000\000\007u\000\000\000\000\000\000\000\000\001\210\000\000\002E\000\000\000\000\000\000\000\000\000\000\002E\007u\000\000\000\000\007u\001\214\007u\000\000\000\000\000\000\007u\000\000\007u\007u\007u\007u\007u\000\000\000\000\000\000\007u\000\000\007u\007u\000\000\007u\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\007u\007u\007u\000\000\007u\001\206\007y\007y\000\000\000\000\007y\000\000\000\000\007u\007u\007y\000\000\007u\000\000\000\000\000\000\000\000\000\000\000\000\000\000\007y\007y\000\000\000\000\000\000\000\000\000\000\007y\000\000\000\000\000\000\000\000\001\210\000\000\007u\000\000\000\000\000\000\000\000\000\000\007u\007y\000\000\000\000\007y\001\214\007y\000\000\000\000\000\000\007y\000\000\007y\007y\007y\007y\007y\000\000\000\000\000\000\007y\000\000\007y\007y\000\000\007y\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\007y\007y\007y\000\000\007y\001\206\007q\007q\000\000\000\000\007q\000\000\000\000\007y\007y\007q\000\000\007y\000\000\000\000\000\000\000\000\000\000\000\000\000\000\007q\007q\000\000\000\000\000\000\000\000\000\000\007q\000\000\000\000\000\000\000\000\001\210\000\000\007y\000\000\000\000\000\000\000\000\000\000\007y\007q\000\000\000\000\007q\001\214\007q\000\000\000\000\000\000\007q\000\000\007q\007q\007q\007q\007q\000\000\000\000\000\000\007q\000\000\007q\007q\000\000\007q\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\007q\007q\007q\000\000\007q\000\000\006\213\006\213\000\000\000\000\000\000\006\213\000\000\007q\007q\006\213\000\000\007q\000\000\000\000\000\000\000\000\000\000\000\000\000\000\006\213\000\000\006\213\000\000\006\213\000\000\006\213\000\000\000\000\000\000\000\000\000\000\000\000\000\000\007q\000\000\000\000\000\000\006\213\000\000\007q\000\000\000\000\000\000\000\000\006\213\006\213\000\000\000\000\000\000\000\000\006\213\000\000\000\000\000\000\006\213\000\000\000\000\006\213\000\000\000\000\000\000\000\000\000\000\006\213\006\213\006\213\000\000\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\213\006\213\000\000\006\213\000\000\000\000\000\000\006\213\000\000\000\000\000\000\000\000\000\000\003\146\003j\000\000\000\000\003\014\006\213\t2\006\213\006\213\003z\006\213\006\213\000\000\000\000\000\000\000\000\nV\000\000\000\000\001\238\000\000\tj\000\000\000\000\006\213\000\000\003\150\006\213\006\213\011\178\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\t\006\213\003\170\000\000\000\000\011\250\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\012b\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\000\000\000\000\000\000\000\000\000\000\000\000\007\166\007\170\005\153\005\153\005\153\004\t\000\000\005\153\000\000\000\000\000\000\000\000\005\153\000\000\000\000\000\000\000\000\000\000\005\153\000\000\000\000\004\t\005\153\000\000\004\t\000\000\007\174\000\000\000\000\005\153 \022\000\000\005: .\005\153\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\005\153\000\000\000\000\005\153\005\153\005\153\000\000\004]\004]\004]\000\000\005\153\004]\004]\005\153\005\153\004]\004]\000\242\005\153\000\000\005\153\005\153\000\000\005\153\000\000\004]\004]\004]\004]\004]\004]\004]\004]\000\000\005\153\005\153\005\153\000\000\005\153\000\000\000\000\000\000\000\000\004]\004]\000\000\000\000\005\153\005\153\000\000\004]\004]\004]\000\000\000\000\000\000\006]\006a\000\000\000\000\004]\004]\000\000\004]\004]\000\000\000\000\000\000\000\000\004]\004]\004]\004]\005\153\000\000\000\000\000\000\000\000\000\000\005\153\000\000\000\000\000\000\000\000\000\000\004]\004]\000\000\004]\004]\000\000\000\000\004]\004]\000\000\000\000\000\000\001\206\001\230\001\234\000\000\000\000\000\000\004]\004]\004]\004]\004]\004]\004]\004]\006\201\006\201\000\000\006]\006a\006\201\001\238\003\018\000\000\006\201\000\000\004]\004]\004]\000\000\004]\004]\000\000\001\210\006\201\000\000\006\201\000\000\006\201\000\000\006\201\004]\004]\000\000\000\000\003B\001\214\005\002\000\000\000\000\000\000\003F\006\201\003Z\004\226\004\238\000\000\000\000\000\000\006\201\006\201\004\250\000\000\000\000\000\000\n\162\000\000\000\000\000\000\006\201\000\000\000\000\006\201\000\000\000\000\000\000\000\000\000\000\006\201\006\201\000\242\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\006\201\006\201\000\000\006\201\000\000\000\000\000\000\006\201\000\000\000\000\003\146\003j\000\000\000\000\003\014\000\000\t2\000\000\006\201\003z\006\201\006\201\000\000\006\201\006\201\000\000\000\000\000\000\000\000\001\238\000\000\tj\000\000\000\000\000\000\000\000\003\150\006\201\000\000\011\178\006\201\006\201\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\170\000\000\006\201\011\250\000\000\001\194\000\000\000\000\000\000\000\000\011\021\003Z\000\000\020\158\004\182\004\186\000\000\000\000\000\000\004\190\000\000\004\198\019\194\012b\007\138\000\000\000\000\014.\000\000\000\000\017\210\011\021\000\000\011\021\011\021\007\142\007\150\007\154\000\000\007\158\000\000\014\150\014\222\014\246\014\174\015\014\000\000\000\000\007\166\007\170\000\000\000\000\000\000\016\130\000\000\000\000\015&\015>\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\015V\000\000\000\000\r\146\000\000\000\000\017R\000\000\007\174\000\242\000\000\000\000\000\000\000\000\005:\000\000\000\000\000\000\014F\014\198\015n\015\134\015\182\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\015\206\000\000\000\000\000\000\000\000\020\182\000\000\000\000\000\000\000\000\000\000\015\230\000\000\b\138\000\000\000\000\019\198\000\000\000\250\001\206\001\230\001\234\002V\000\000\000\000\016F\011\021\000\000\016^\015\158\000\000\000\000\026\158\000\000\011\021\015\254\005\185\000\000\004.\001\238\003\018\002\002\000\000\016\022\016.\000\000\000\000\000\000\000\000\002\014\026\162\001\210\000\000\000\000\000\000\000\000\000\000\026\202\000\000\000\000\000\000\000\000\000\000\003V\001\214\003:\000\000\000\000\000\000\003F\025\250\003Z\004\226\004\238\001\n\000\000\026\018\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\026\026\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&\026\"\000\000\027b\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\027r\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\011=\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\011=\000\000\000\000\001\238\000\000\000\000\000\000\001\158$\150\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\nQ\nQ\000\000\000\000\000\000\nQ\000\000\007\166\007\170\nQ\000\000\007\254\000\000\000\000\000\000\000\000\000\000\000\000\000\000\nQ\000\000\nQ\000\000\nQ\000\000\nQ\000\000\011=\000\000\000\000\000\000\000\000\000\000\007\174\000\000\011=\000\000\nQ\000\000\005:\000\000\000\000\000\000\000\000\nQ\nQ\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\nQ\000\000\000\000\nQ\000\000\000\000\000\000\000\000\000\000\nQ\nQ\nQ\000\000\000\000\000\000\016\165\016\165\000\000\000\000\000\000\016\165\000\000\000\000\000\000\016\165\nQ\000\000\000\000\nQ\000\000\000\000\000\000\nQ\000\000\016\165\000\000\016\165\000\000\016\165\000\000\016\165\000\000\000\000\nQ\000\000\nQ\nQ\000\000\nQ\nQ\000\000\000\000\016\165\000\000\000\000\000\000\000\000\000\000\nQ\016\165\016\165\000\000\nQ\000\000\000\000\005\n\nQ\000\000\000\000\016\165\000\000\000\000\016\165\000\000\000\000\006\030\000\000\nQ\016\165\016\165\016\165\000\000\000\000\000\000\016\169\016\169\000\000\000\000\000\000\016\169\000\000\000\000\000\000\016\169\016\165\000\000\000\000\016\165\000\000\000\000\000\000\016\165\000\000\016\169\000\000\016\169\000\000\016\169\000\000\016\169\000\000\000\000\016\165\000\000\016\165\016\165\000\000\016\165\016\165\000\000\000\000\016\169\000\000\005\026\000\000\000\000\000\000\000\000\016\169\016\169\000\000\016\165\000\000\000\000\005\n\016\165\000\000\000\000\016\169\000\000\000\000\016\169\000\000\000\000\000\000\000\000\016\165\016\169\016\169\016\169\000\000\000\000\000\000\007!\007!\000\000\000\000\000\000\007!\000\000\000\000\000\000\007!\016\169\000\000\000\000\016\169\000\000\000\000\000\000\016\169\000\000\007!\000\000\007!\000\000\007!\000\000\007!\000\000\000\000\016\169\000\000\016\169\016\169\000\000\016\169\016\169\000\000\000\000\007!\000\000\005\026\000\000\000\000\000\000\000\000\007!\007!\000\000\016\169\000\000\000\000\005\n\016\169\000\000\000\000\007!\000\000\000\000\007!\000\000\000\000\000\000\001\193\016\169\007!\007!\007!\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\014.\000\000\000\000\000\000\007!\000\000\001\193\007!\000\000\000\000\000\000\007!\000\000\000\000\014\150\014\222\014\246\014\174\015\014\000\000\000\000\000\000\007!\000\000\007!\007!\000\000\007!\007!\015&\015>\t]\000\000\005\026\t]\000\000\000\000\000\000\000\000\015V\000\000\007!\000\000\000\000\000\000\007!\000\000\b\153\000\242\000\000\001\217\t]\t]\000\000\t]\t]\007!\014F\014\198\015n\015\134\015\182\000\000\000\000\014.\000\000\000\000\b\153\000\000\000\000\001\217\b\153\015\206\000\000\000\000\000\000\t]\001\193\014\150\014\222\014\246\014\174\015\014\015\230\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\015&\015>\000\000\t]\016F\001\193\000\000\016^\015\158\000\000\015V\000\000\000\000\001\193\015\254\000\000\000\000\000\000\t]\000\242\000\000\001\193\016\022\016.\000\000\000\000\000\000\000\000\014F\014\198\015n\015\134\015\182\000\000\000\000\000\000\000\000\000\000\t]\000\000\t]\000\000\b\153\015\206\000\000\000\000\000\000\000\000\001\217\000\000\000\000\000\000\b\022\t]\015\230\000\000\t]\t]\000\000\000\000\001\209\t]\000\000\t]\000\000\000\000\000\000\t]\016F\001\217\000\000\016^\015\158\000\000\014.\000\000\000\000\001\217\015\254\000\000\001\209\000\000\000\000\000\000\000\000\001\217\016\022\016.\014\150\014\222\014\246\014\174\015\014\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\015&\015>\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\015V\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\242\000\000\001\201\000\000\000\000\000\000\000\000\000\000\000\000\014F\014\198\015n\015\134\015\182\000\000\000\000\014.\000\000\000\000\000\000\000\000\000\000\001\201\000\000\015\206\000\000\000\000\000\000\000\000\001\209\014\150\014\222\014\246\014\174\015\014\015\230\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\015&\015>\000\000\000\000\016F\001\209\000\000\016^\015\158\000\000\015V\000\000\000\000\001\209\015\254\000\000\000\000\000\000\000\000\000\242\000\000\001\209\016\022\016.\000\000\000\000\000\000\000\000\014F\014\198\015n\015\134\015\182\000\000\000\000\000\000\002\029\000\000\000\000\000\000\000\000\002\029\000\000\015\206\001\234\002\029\000\000\000\000\001\201\000\000\000\000\000\000\000\000\n\217\015\230\002\029\000\000\000\000\000\000\002\029\000\000\002\029\000\000\000\000\000\000\000\000\000\000\000\000\016F\001\201\000\000\016^\015\158\002\029\000\000\000\000\000\000\001\201\015\254\000\000\002\029\002\029\000\000\000\000\000\000\001\201\016\022\016.\005\002\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\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\029\002\029\000\000\002\029\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%\002\029\000\000\002\029\000\000\002%\002\029\002\029\001\234\002%\000\000\000\000\000\000\000\000\000\000\000\000\002\029\n\225\000\000\002%\000\000\000\000\000\000\002%\002\029\002%\000\000\000\000\000\000\002\029\000\000\000\000\000\000\000\000\000\000\002\029\000\000\002%\000\000\000\000\000\000\000\000\000\000\000\000\002%\002%\000\000\000\000\000\000\000\000\000\000\000\000\005\002\000\000\002%\000\000\000\000\002%\000\000\000\000\000\000\000\000\000\000\002%\002%\002%\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002%\002%\000\000\002%\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!\002%\000\000\002%\000\000\002!\002%\002%\001\234\002!\000\000\000\000\000\000\000\000\000\000\000\000\002%\n\221\000\000\002!\000\000\000\000\000\000\002!\002%\002!\000\000\000\000\000\000\002%\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\002!\002!\000\000\000\000\000\000\000\000\000\000\000\000\005\002\000\000\002!\000\000\000\000\002!\000\000\000\000\000\000\000\000\000\000\002!\002!\002!\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002!\002!\000\000\002!\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\004A\002!\000\000\002!\000\000\004A\002!\002!\001\234\004A\000\000\000\000\000\000\000\000\000\000\000\000\002!\n\213\000\000\004A\000\000\000\000\000\000\004A\002!\004A\000\000\000\000\000\000\002!\000\000\000\000\000\000\000\000\000\000\002!\000\000\004A\000\000\000\000\000\000\000\000\000\000\000\000\004A\002\025\000\000\000\000\000\000\000\000\000\000\000\000\005\002\000\000\004A\000\000\000\000\004A\000\000\000\000\000\000\000\000\000\000\004A\004A\004A\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004A\004A\000\000\004A\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\004=\004A\000\000\004A\000\000\004=\004A\004A\001\234\004=\000\000\000\000\000\000\000\000\000\000\000\000\004A\n\213\000\000\004=\000\000\000\000\000\000\004=\004A\004=\000\000\000\000\000\000\004A\003\146\003j\000\000\000\000\003\014\004A\t2\004=\000\000\003z\000\000\000\000\000\000\000\000\004=\002\025\000\000\000\000\000\000\001\238\000\000\tj\005\002\000\000\004=\000\000\003\150\004=\000\000\011\178\000\000\000\000\000\000\004=\004=\004=\000\000\000\000 ^\000\000\003\170\000\000\000\000\030\198\000\000\001\194\000\000\000\000\000\000\004=\004=\003Z\004=\000\000\004\182\004\186\005n\000\000\000\000\004\190\000\000\004\198\000\000\012b\007\138\000\000\000\000\004=\000\000\004=\000\000\000\000\004=\004=\000\000\007\142\007\150\007\154\000\000\007\158\000\000\000\000\004=\000\000\000\000\000\000\000\000\000\000\007\166\007\170\004=\000\000\000\000\030\202\000\000\004=\003\146\003j\000\000\000\000\003\014\004=\t2\000\000\000\000\003z\000\000\000\000\000\000\000\000\000\000\000\000!*\000\000\007\174\001\238\000\000\tj\000\000\000\000\005:\000\000\003\150\000\000\000\000\011\178\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\011\250\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\012b\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\016\130\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\178\000\000\031f\000\000\007\174\000\000\000\000\000\000\000\221\000\000\005:\003\170\000\000\000\221\011\250\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\012b\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\016\130\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!\031\198\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\tq\000\000\001!\tq\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!\tq\tq\001!\tq\tq\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!\tq\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\tq\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\tq\000\000\tq\000\225\000\000\000\000\000\229\000\229\000\225\000\000\000\000\000\000\000\225\000\229\tq\tq\000\229\000\000\b\030\tq\000\229\000\000\000\225\tq\000\225\tq\000\225\000\000\000\225\tq\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\249\000\000\000\000\000\000\000\000\001\249\000\000\000\000\000\000\001\249\001^\000\000\000\000\000\000\000\000\000\000\001b\000\000\000\000\001\249\000\000\000\000\000\000\001\249\000\000\001\249\000\000\001\158$\178\000\000\000\000\000\000\000\000\000\000\001\162\000\000\001\166\001\249\000\000\001\249\001\170\000\000\001\174\001\178\001\249\000\000\000\000\000\000\000\000\000\000\006]\000\000\000\000\000\000\001\249\000\000\000\000\001\249\000\000\000\000\000\000\000\000\000\000\001\249\001\249\001\249\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\249\007\246\000\000\001\249\000\000\000\000\000\000\001\249\003\146\003j\000\000\000\000\003\014\000\000\000\000\000\000\000\000\003z\001\249\000\000\001\249\000\000\007\250\001\249\001\249\000\000\000\000\001\238\000\000\006]\000\000\000\000\000\000\001\249\003\150\000\000\000\000\000\000\000\000\000\000\001\249\001\249\000\000\000\000\000\000\000\000\001\249\000\000\003\170\000\000\000\000\003\190\001\249\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\016\161\016\161\000\000\000\000\000\000\016\161\000\000\007\166\007\170\016\161\000\000\007\254\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\161\000\000\016\161\000\000\016\161\000\000\016\161\000\000\t\030\000\000\000\000\b\186\000\000\000\000\007\174\000\000\t\014\000\000\016\161\000\000\005:\000\000\000\000\000\000\000\000\016\161\016\161\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\161\000\000\000\000\016\161\000\000\000\000\000\000\000\000\000\000\016\161\016\161\016\161\000\000\000\000\000\000\016\157\016\157\000\000\000\000\000\000\016\157\000\000\000\000\000\000\016\157\016\161\000\000\000\000\016\161\000\000\000\000\000\000\016\161\000\000\016\157\000\000\016\157\000\000\016\157\000\000\016\157\000\000\000\000\016\161\000\000\016\161\016\161\000\000\016\161\016\161\000\000\000\000\016\157\000\000\000\000\000\000\000\000\000\000\000\000\016\157\016\157\000\000\016\161\000\000\000\000\000\000\016\161\000\000\000\000\016\157\000\000\000\000\016\157\000\000\000\000\006\030\000\000\016\161\016\157\016\157\016\157\000\000\000\000\000\000\nU\nU\000\000\000\000\000\000\nU\000\000\000\000\000\000\nU\016\157\000\000\000\000\016\157\000\000\000\000\000\000\016\157\000\000\nU\000\000\nU\000\000\nU\000\000\nU\000\000\000\000\016\157\000\000\016\157\016\157\000\000\016\157\016\157\000\000\000\000\nU\000\000\000\000\000\000\000\000\000\000\t\242\nU\nU\000\000\016\157\000\000\000\000\000\000\016\157\000\000\000\000\nU\000\000\000\000\nU\000\000\000\000\000\000\000\000\016\157\nU\nU\000\242\000\000\000\000\002E\002E\000\000\000\000\002E\000\000\000\000\000\000\000\000\002E\000\000\nU\000\000\000\000\nU\000\000\000\000\000\000\nU\002E\000\000\000\000\000\000\000\000\000\000\000\000\002E\000\n\000\000\nU\000\000\nU\nU\000\000\nU\nU\000\000\000\000\000\000\000\000\002E\000\000\000\000\002E\nU\002E\000\000\000\000\nU\000\000\000\000\002E\nU\001\181\002E\002E\000\000\000\000\002E\002E\000\000\002E\002E\nU\002E\000\000\000\000\014.\000\000\000\000\000\000\000\000\000\000\001\181\000\000\002E\002E\002E\000\000\002E\000\000\014\150\014\222\014\246\014\174\015\014\000\000\000\000\002E\002E\000\000\000\000\002E\000\000\000\000\000\000\015&\015>\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\015V\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002E\000\242\000\000\000\000\002E\000\000\002E\000\000\000\000\000\000\014F\014\198\015n\015\134\015\182\000\000\000\000\000\000\002\025\000\000\000\000\000\000\000\000\002\025\000\000\015\206\001\234\002\025\000\000\000\000\001\181\000\000\000\000\000\000\000\000\n\213\015\230\002\025\000\000\000\000\000\000\002\025\000\000\002\025\000\000\000\000\000\000\n\017\n\017\n\017\016F\001\181\n\017\016^\015\158\002\025\000\000\n\017\000\000\001\181\015\254\000\000\002\025\024:\000\000\000\000\000\000\n\017\016\022\016.\005\002\000\000\002\025\000\000\n\017\002\025\000\000\000\000\000\000\n\017\000\000\002\025\002\025\002\025\000\000\000\000\000\000\000\000\n\017\000\000\000\000\n\017\n\017\n\017\000\000\000\000\000\000\002\025\002\025\n\017\002\025\000\000\n\017\n\017\005n\000\000\000\000\n\017\000\000\n\017\n\017\000\000\n\017\000\000\000\000\002\025\000\000\002\025\000\000\000\000\002\025\002\025\000\000\n\017\n\017\n\017\000\000\n\017\000\000\000\000\002\025\000\000\000\000\000\000\000\000\000\000\n\017\n\017\002\025\000\000\000\000\000\000\000\000\002\025\000\000\000\000\007\001\007\001\000\000\002\025\000\000\007\001\000\000\000\000\000\000\007\001\000\000\000\000\000\000\000\000\000\000\000\000\n\017\000\000\000\000\007\001\000\000\007\001\n\017\007\001\000\000\007\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\007\001\000\000\000\000\000\000\000\000\000\000\000\000\007\001\007\001\000\000\006\253\t\198\000\000\n\162\000\000\006\253\000\000\007\001\000\000\006\253\007\001\000\000\000\000\000\000\000\000\000\000\007\001\007\001\000\242\006\253\000\000\006\253\000\000\006\253\000\000\006\253\000\000\000\000\000\000\000\000\000\000\000\000\007\001\000\000\000\000\007\001\000\000\006\253\000\000\007\001\000\000\000\000\000\000\000\000\006\253\nB\000\000\000\000\000\000\000\000\007\001\000\000\007\001\007\001\006\253\007\001\007\001\006\253\000\000\000\000\000\000\000\000\000\000\006\253\006\253\000\242\000\000\000\000\000\000\007\001\000\000\000\000\000\000\007\001\000\000\000\000\000\000\000\000\000\000\006\253\000\000\000\000\006\253\000\000\007\001\000\000\006\253\000\000\000\000\016\173\016\173\000\000\000\000\000\000\016\173\000\000\000\000\006\253\016\173\006\253\006\253\000\000\006\253\006\253\000\000\000\000\000\000\000\000\016\173\000\000\016\173\000\000\016\173\000\000\016\173\000\000\006\253\000\000\000\000\000\000\006\253\000\000\000\000\000\000\000\000\000\000\016\173\000\000\000\000\000\000\000\000\006\253\000\000\016\173\016\173\000\000\016\177\016\177\000\000\000\000\000\000\016\177\000\000\016\173\000\000\016\177\016\173\000\000\000\000\000\000\000\000\000\000\016\173\016\173\000\242\016\177\000\000\016\177\000\000\016\177\000\000\016\177\000\000\000\000\000\000\000\000\000\000\000\000\016\173\000\000\000\000\016\173\000\000\016\177\000\000\016\173\000\000\000\000\000\000\000\000\016\177\nB\000\000\000\000\000\000\000\000\016\173\000\000\016\173\016\173\016\177\016\173\016\173\016\177\000\000\000\000\000\000\000\000\000\000\016\177\016\177\000\242\000\000\000\000\000\000\016\173\000\000\000\000\000\000\016\173\000\000\000\000\000\000\000\000\000\000\016\177\000\000\000\000\016\177\000\000\016\173\000\000\016\177\000\000\000\000\007\021\t\198\000\000\000\000\000\000\007\021\000\000\000\000\016\177\007\021\016\177\016\177\000\000\016\177\016\177\000\000\000\000\000\000\000\000\007\021\000\000\007\021\000\000\007\021\000\000\007\021\000\000\016\177\000\000\000\000\000\000\016\177\000\000\000\000\000\000\000\000\000\000\007\021\000\000\000\000\000\000\000\000\016\177\000\000\007\021\nB\000\000\007\025\007\025\000\000\000\000\000\000\007\025\000\000\007\021\000\000\007\025\007\021\000\000\000\000\000\000\000\000\000\000\007\021\007\021\000\242\007\025\000\000\007\025\000\000\007\025\000\000\007\025\000\000\000\000\000\000\000\000\000\000\000\000\007\021\000\000\000\000\007\021\000\000\007\025\000\000\007\021\000\000\000\000\000\000\000\000\007\025\007\025\000\000\000\000\000\000\000\000\007\021\000\000\007\021\007\021\007\025\007\021\007\021\007\025\000\000\000\000\000\000\000\000\000\000\007\025\007\025\007\025\000\000\000\000\000\000\007\021\000\000\000\000\000\000\007\021\000\000\000\000\000\000\000\000\000\000\007\025\000\000\000\000\007\025\000\000\007\021\0049\007\025\000\000\000\000\000\000\0049\000\000\000\000\001\234\0049\000\000\000\000\007\025\000\000\007\025\007\025\000\000\007\025\007\025\0049\000\000\000\000\000\000\0049\000\000\0049\000\000\000\000\000\000\000\000\000\000\007\025\000\000\000\000\000\000\007\025\000\000\0049\000\000\000\000\000\000\000\000\000\000\000\000\0049\000\000\nj\000\000\000\000\000\000\000\000\000\000\005\002\000\000\0049\000\000\000\000\0049\000\000\000\000\000\000\000\000\000\000\0049\0049\0049\000\000\000\000\000\000\0045\000\000\000\000\000\000\000\000\0045\000\000\000\000\001\234\0045\0049\0049\000\000\0049\000\000\000\000\000\000\005n\000\000\0045\000\000\000\000\000\000\0045\000\000\0045\tI\000\000\0049\tI\0049\000\000\000\000\0049\0049\000\000\000\000\0045\000\000\000\000\000\000\000\000\000\000\0049\0045\000\000\tI\tI\000\000\tI\tI\0049\005\002\000\000\0045\000\000\0049\0045\000\000\000\000\000\000\000\000\0049\0045\0045\0045\000\000\000\000\000\000\000\000\000\000\tI\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0045\0045\000\000\0045\025J\000\000\000\000\005n\000\000\000\000\000\000\000\000\tI\000\000\000\000\000\000\000\000\000\000\0045\000\000\0045\014.\000\000\0045\0045\025N\000\000\tI\000\000\000\000\000\000\000\000\000\000\0045\000\000\014\150\014\222\014\246\014\174\015\014\000\000\0045\000\000\000\000\000\000\000\000\0045\tI\000\000\tI\015&\015>\0045\000\000\000\000\000\000\000\000\000\000\000\000\000\000\015V\tI\tI\000\000\000\000\b\030\tI\000\000\000\000\000\242\tI\000\000\tI\000\000\000\000\000\000\tI\000\000\014F\014\198\015n\015\134\015\182\000\000\000\000\000\000\000\000\001u\000\000\000\000\000\000\000\000\001u\015\206\000\000\000\000\001u\000\000\000\000\000\000\000\000\000\000\000\000\000\000\015\230\000\000\001u\000\000\001u\000\000\001u\000\000\001u\000\000\000\000\000\000\000\000\000\000\016F\000\000\025R\016^\015\158\025b\001u\000\000\000\000\000\000\015\254\000\000\000\000\001u\000\000\000\000\000\000\001u\016\022\016.\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\015\233\001\173\000\000\000\000\000\000\000\000\000\000\000\000\001q\015\233\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\015\233\000\000\000\000\000\000\000\000\000\000\002-\015\233\000\000\000\000\000\000\002-\001\173\000\000\023Z\002-\000\000\003\014\001\173\001\173\001\173\000\000\000\000\000\000\000\000\002-\000\000\000\000\000\000\002-\000\000\002-\000\000\000\000\001\173\000\000\000\000\015\233\000\000\000\000\000\000\015\233\000\000\002-\000\000\000\000\000\000\000\000\000\000\000\000\002-\000\000\001\173\000\000\001\173\001\173\023^\001\173\001\173\000\000\002-\000\000\000\000\002-\000\000\000\000\000\000\000\000\000\000\002-\002-\000\000\023j\"\206\000\000\001\173\000\000\000\000\000\000\000\000\003\146\003j\000\000\000\000\003\014\002-\001\173\000\000\002-\003z\000\000\000\000\002-\000\000\000\000\000\000\004\194\000\000\000\000\001\238\000\000\000\000\007\170\002-\000\000\002-\003\150\000\000\002-\002-\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002-\000\000\003\170\000\000\000\000\003\190\000\000\001\194\002-\000\000\000\000\000\000\000\000\003Z\000\000\000\000\004\182\004\186\000\000\002-\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\225\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\225\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\154\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\222\000\000\000\000\000\000\n\226\n\230\n\242\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\250\000\000\000\000\003\170\011\018\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\007\229\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\007\229\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\017\n\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\017\022\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\017\"\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\177\000\000\000\000\000\000\003Z\005\177\000\000\004\182\004\186\005\177\000\000\000\000\004\190\000\000\004\198\007~\000\000\007\138\000\000\005\177\000\000\000\000\000\000\005\177\000\000\005\177\000\000\000\000\007\142\007\150\007\154\005\177\007\158\000\000\000\000\000\000\005\177\005\177\000\000\000\000\005\177\007\166\007\170\000\000\005\177\007\254\000\000\000\000\000\000\000\000\005\177\000\000\000\000\000\000\005\177\000\000\005\177\005\177\000\000\000\000\000\000\000\000\000\000\005\177\004\"\000\000\000\000\007\174\005\177\000\000\000\000\000\000\000\000\005:\000\000\005\177\000\000\000\000\000\000\005\177\000\000\n\162\005\177\000\000\000\000\005\177\005\177\000\000\005\177\000\000\000\000\000\000\000\000\000\000\005\177\004\"\000\242\005\177\000\000\005\177\000\000\000\000\005\177\005\177\005\177\000\000\000\000\000\000\nV\000\000\005\177\005\177\000\000\005\177\000\000\b\t\000\000\005\177\000\000\000\000\005\177\000\000\000\000\003j\000\000\"\022\003\014\000\000\005\177\000\000\005\177\003z\000\000\005\177\005\177\000\000\b\t\000\000\000\000\000\000\000\000\001\238\000\000\005\177\000\000\003~\000\000\000\000\000\000\000\000\000\000\005\177\000\000\000\000\000\000\003\130\030.\004Z\000\000\000\000\000\000\000\000\005\177\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\222\000\000\000\000\000\000\n\226\n\230\n\242\000\000\000\000\007\138\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\t\225\000\000\000\000\007\150\007\154\t\225\000\000\000\000\000\000\t\225\000\000\000\000\000\000\000\000\000\000\007\166\007\170\000\000\000\000\t\225\000\000\000\000\000\000\t\225\000\000\t\225\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\t\225\000\000\000\000\000\000\007\174\n\250\000\000\t\225\000\000\011\018\005:\t\225\000\000\000\000\000\000\000\000\000\000\t\225\000\000\000\000\t\225\000\000\000\000\000\000\000\000\000\000\t\225\t\225\000\242\000\000\000\000\000\000\t\221\000\000\000\000\t\225\t\225\t\221\000\000\000\000\000\000\t\221\t\225\000\000\000\000\t\225\000\000\000\000\000\000\t\225\000\000\t\221\000\000\000\000\000\000\t\221\000\000\t\221\000\000\000\000\t\225\000\000\t\225\t\225\000\000\t\225\t\225\000\000\000\000\t\221\000\000\000\000\000\000\000\000\000\000\t\225\t\221\000\000\000\000\000\000\t\221\000\000\000\000\t\225\000\000\000\000\t\221\000\000\000\000\t\221\000\000\000\000\000\000\000\000\000\000\t\221\t\221\000\242\000\000\000\000\000\000\000\000\000\000\000\000\t\221\t\221\000\000\000\000\000\000\000\000\000\000\t\221\000\000\000\000\t\221\000\000\000\000\000\000\t\221\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001a\t\221\000\000\t\221\t\221\001a\t\221\t\221\000\185\001a\000\000\000\000\000\000\000\000\000\000\000\000\t\221\000\185\000\000\001a\000\000\001a\000\000\001a\t\221\001a\000\000\000\000\000\000\000\000\004-\000\000\000\000\000\000\000\000\004-\000\000\001a\000\000\004-\000\000\000\000\000\000\000\000\001a\000\185\000\000\000\000\000\000\004-\000\000\000\000\000\185\004-\000\000\004-\000\000\001a\000\000\000\000\000\000\000\000\000\000\001a\001a\001a\000\000\004-\000\000\023r\000\000\004-\000\000\000\000\004-\000\000\004-\000\000\000\000\001a\004-\000\000\000\000\000\000\004-\000\000\000\185\004-\000\000\000\000\004-\000\000\000\000\004-\004-\004-\004-\001a\000\000\001a\001a\000\000\001a\001a\000\000\000\000\000\000\000\000\004-\004-\023r\000\000\004-\000\000\000\000\004-\004-\000\000\000\000\000\000\001a\bu\000\000\000\000\000\000\004-\bu\004-\004-\004-\bu\001a\004-\004-\004-\004-\004-\000\000\000\000\000\000\bu\000\000\004-\000\000\bu\000\000\bu\000\000\000\000\023\230\004-\000\000\006U\004-\000\000\004-\000\000\004-\bu\000\000\000\000\004-\000\000\000\000\000\000\bu\000\000\000\000\004-\000\000\004-\"\030\004-\004-\004-\bu\000\000\004-\bu\000\000\000\000\004-\000\000\000\000\bu\bu\000\000\000\000\000\000\000\000\023\230\004-\000\000\000\000\000\000\004-\004-\004-\000\000\000\000\bu\000\000\000\000\bu\000\000\000\000\000\000\bu\000\000\004-\000\000\023r\000\000\000\000\000\000\000\000\004-\000\000\bu\000\000\bu\bu\000\000\bu\bu\000\000\004-\000\000\000\000\004-\000\000\000\000\000\000\bu\000\000\004-\004-\004-\bu\000\000\002\246\bu\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004-\bu\000\000\004-\000\000\000\000\006\173\004-\000\000\000\000\000\000\006\173\000\000\000\000\000\000\006\173\000\000\000\000\004-\000\000\004-\"N\000\000\004-\004-\006\173\000\000\000\000\000\000\006\173\000\000\006\173\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\023\230\004-\000\000\006\173\000\000\000\000\004-\000\000\000\000\000\000\006\173\000\000\000\000\000\000\000\000\000\000\n\162\000\000\000\000\000\000\006\173\000\000\000\000\006\173\000\000\000\000\000\000\000\000\000\000\006\173\006\173\000\242\000\000\000\000\000\000\006\177\000\000\000\000\000\000\000\000\006\177\000\000\000\000\000\000\006\177\006\173\006\173\000\000\006\173\000\000\000\000\000\000\006\173\000\000\006\177\000\000\000\000\000\000\006\177\000\000\006\177\000\000\000\000\006\173\000\000\006\173\000\000\000\000\006\173\006\173\000\000\000\000\006\177\000\000\000\000\000\000\000\000\000\000\000\000\006\177\000\000\000\000\000\000\000\000\000\000\n\162\006\173\000\000\000\000\006\177\000\000\000\000\006\177\000\000\000\000\000\000\000\000\006\173\006\177\006\177\000\242\000\000\000\000\000\000\004-\000\000\000\000\000\000\000\000\004-\000\000\000\000\000\000\004-\006\177\006\177\000\000\006\177\000\000\000\000\000\000\006\177\000\000\004-\000\000\000\000\000\000\004-\000\000\004-\000\000\000\000\006\177\000\000\006\177\000\000\000\000\006\177\006\177\000\000\000\000\004-\000\000\023r\000\000\000\000\000\000\000\000\004-\000\000\000\000\007\153\000\000\000\000\000\000\006\177\007\153\000\000\004-\000\000\007\153\004-\000\000\000\000\000\000\000\000\006\177\004-\004-\004-\007\153\000\000\000\000\000\000\007\153\000\000\007\153\000\000\000\000\000\000\000\000\000\000\000\000\004-\000\000\000\000\004-\000\000\007\153\000\000\004-\000\000\000\000\000\000\000\000\007\153\000\000\000\000\000\000\000\000\000\000\004-\000\000\004-\026n\007\153\004-\004-\007\153\000\000\000\000\000\000\000\000\000\000\007\153\007\153\000\242\000\000\000\000\000\000\000\000\000\000\000\000\023\230\004-\000\000\000\000\000\000\000\000\000\000\007\153\000\000\000\000\007\153\000\000\000\000\000\000\007\153\000\000\000\000\000\000\000\000\000\000\000\000\001\206\001\230\003\n\000\000\007\153\003\014\007\153\030R\000\000\007\153\007\153\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\007\153\001\238\003\018\002\002\003\026\015\225\000\000\000\000\007\153\000\000\015\225\002\014\000\000\001\210\015\225\000\000\000\000\000\000\000\000\007\153\000\000\000\000\000\000\000\000\015\225\003\030\001\214\003:\015\225\000\000\015\225\003F\000\000\003Z\004\226\004\238\000\000\000\000\000\000\000\000\000\000\030\006\015\225\030\n\000\000\000\000\000\000\000\000\000\000\015\225\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\015\225\000\000\004\254\015\225\000\000\000\000\000\000\000\000\000\000\015\225\015\225\000\000\007\170\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\030\022\000\000\015\225\000\000\000\000\015\225\000\000\000\000\000\000\015\225\003\146\003j\000\000\000\000\003\014\000\000\000\000\000\000\030\026\003z\015\225\000\000\015\225\003\006\000\000\015\225\015\225\000\000\000\000\001\238\000\000\000\000\000\000\000\000\000\000\015\225\003\150\000\000\000\000\000\000#\218\000\000\000\000\015\225\000\000\000\000\000\000\b\165\t\198\000\000\003\170\000\000\b\165\012f\015\225\001\194\b\165\000\000\000\000\000\000\000\000\003Z\000\000\000\000\004\182\004\186\b\165\000\000\000\000\004\190\b\165\004\198\b\165\000\000\007\138\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\165\007\142\007\150\007\154\000\000\007\158\000\000\b\165\nB\000\000\000\000\000\000\000\000\002\005\007\166\007\170\000\000\b\165\002\005\000\000\b\165\000\000\002\005\000\000\000\000\000\000\b\165\b\165\000\242\000\000\000\000\000\000\002\005\000\000\000\000\000\000\002\005\000\000\002\005\000\000\007\174\000\000\b\165\000\000\000\000\b\165\005:\000\000\000\000\b\165\002\005\000\000\000\000\000\000\000\000\000\000\000\000\002\005\000\000\000\000\b\165\000\000\b\165\0021\000\000\b\165\b\165\002\005\0021\000\000\002\005\000\000\0021\000\000\000\000\000\000\002\005\002\005\002\005\000\000\000\000\000\000\0021\b\165\000\000\000\000\0021\000\000\0021\000\000\000\000\000\000\002\005\000\000\000\000\002\005\000\000\000\000\000\000\002\005\0021\000\000\000\000\000\000\000\000\000\000\000\000\0021\000\000\000\000\002\005\000\000\002\005\000\000\000\000\002\005\002\005\0021\000\000\000\000\0021\026z\000\000\000\000\000\000\000\000\0021\0021\000\000\000\000\000\000\000\000\007\157\002\005\000\000\000\000\000\000\007\157\002\005\000\000\000\000\007\157\0021\000\000\000\000\0021\000\000\000\000\000\000\0021\000\000\007\157\000\000\000\000\000\000\007\157\000\000\007\157\000\000\000\000\0021\000\000\0021\000\000\000\000\0021\0021\000\000\000\000\007\157\000\000\000\000\000\000\000\000\000\000\0021\007\157\000\000\000\000\000\000\000\000\000\000\000\000\0021\000\000\000\000\007\157\000\000\030.\007\157\000\000\000\000\000\000\000\000\0021\007\157\007\157\000\242\000\000\000\000\000\000\015\153\000\000\000\000\003j\015\153\000\000%\138\000\000\000\000\000\000\007\157%\142\000\000\007\157\015\153\000\000\000\000\007\157\000\000\000\000\015\153\000\000\000\000\000\000\000\000\000\000\000\000\000\000\007\157\000\000\007\157\000\000\015\153\007\157\007\157\000\000\000\000\000\000\000\000\015\153\000\000\000\000\000\000\007\157\000\000\001\006\000\000\001\194\000\000\015\153\000\000\007\157\015\153\000\000\000\000\000\000\000\000\000\000\015\153\000\000\000\000\000\000\007\157\000\000\015}\000\000%\146\003j\015}\000\000%\170\000\000\000\000\000\000\015\153%\174\000\000\015\153\015}\000\000\000\000\015\153\000\000\000\000\015}\000\000\000\000\000\000\000\000\000\000\000\000%\150\015\153\000\000\015\153\000\000\015}\015\153\000\000\000\000\000\000\000\000\000\000\015}\000\000\000\000\000\000\000\000\000\000\001\006\000\000\001\194\000\000\015}\000\000\015\153\015}\000\000\000\000\000\000\000\000\000\000\015}\000\000\000\000\000\000\000\000\000\000\000\000\000\000%\178\000\000\001\206\001\230\003\n\000\000\000\000\003\014\015}\000\000\000\000\015}\000\000\000\000\000\000\015}\000\000\000\000\000\000\000\000\000\000\000\000\001\238\003\018\002\002%\182\015}\000\000\015}\000\000\000\000\015}\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:\015}\000\000\000\000\003F\000\000\003Z\004\226\004\238\000\000\000\000\000\000\005\177\000\000\030\006\000\000#\190\005\177\000\000\000\000\001\021\005\177\000\000\000\000\000\000\001\021\000\000\000\000\000\000\001\021\000\000\005\177\000\000\000\000\004\254\005\177\000\000\005\177\000\000\001\021\000\000\000\000\000\000\001\021\007\170\001\021\000\000\000\000\000\000\005\177\000\000\000\000\000\000\000\000\000\000#\202\005\177\001\021\000\000\000\000\000\000\000\000\005\n\000\000\001\021\000\000\005\177\000\000\000\000\005\177\000\000\000\000\000\000\030\026\001\021\005\177\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\177\000\000\000\000\005\177\000\000\000\000\000\000\005\177\001\021\000\000\000\000\001\021\000\000\000\000\000\000\001\021\000\000\000\000\005\177\tu\005\177\000\000\tu\005\177\005\177\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\tu\tu\005\177\tu\tu\001\025\000\000\000\000\000\000\001\025\001\021\001\025\000\000\005\177\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\021\000\000\001\025\000\000\tu\000\000\000\000\000\000\000\000\001\025\000\000\000\000\b\161\000\000\000\000\000\000\000\000\b\161\000\000\001\025\000\000\b\161\001\025\000\000\000\242\000\000\000\000\000\000\001\025\001\025\000\242\b\161\000\000\000\000\000\000\b\161\000\000\b\161\000\000\tu\000\000\000\000\000\000\000\000\001\025\000\000\000\000\001\025\000\000\b\161\000\000\001\025\000\000\000\000\000\000\000\000\b\161\000\000\000\000\tu\000\000\tu\001\025\000\000\001\025\000\000\b\161\001\025\001\025\b\161\000\000\000\000\000\000\tu\tu\b\161\b\161\b\030\tu\000\000\000\000\007\145\tu\000\000\tu\001\025\007\145\000\000\tu\000\000\007\145\b\161\000\000\000\000\b\161\000\000\001\025\026J\b\161\000\000\007\145\000\000\000\000\000\000\007\145\000\000\007\145\000\000\000\000\b\161\000\000\b\161\025\170\000\000\b\161\b\161\000\000\000\000\007\145\000\000\000\000\000\000\000\000\000\000\000\000\007\145\000\000\000\000\005\177\t\198\000\000\000\000\b\161\005\177\000\000\007\145\000\000\005\177\007\145\000\000\000\000\000\000\000\000\000\000\007\145\007\145\000\000\005\177\000\000\000\000\000\000\005\177\000\000\005\177\000\000\000\000\000\000\000\000\000\000\000\000\007\145\000\000\000\000\007\145\000\000\005\177\000\000\007\145\000\000\000\000\000\000\000\000\005\177\nB\000\000\000\000\000\000\001\153\007\145\000\000\007\145\000\000\001\153\007\145\007\145\005\177\001\153\000\000\000\000\000\000\000\000\005\177\004\"\000\242\000\000\000\000\001\153\000\000\001\153\000\000\001\153\007\145\001\153\000\000\000\000\000\000\000\000\005\177\000\000\000\000\015-\000\000\000\000\000\000\001\153\015-\000\000\000\000\000\000\015-\000\000\001\153\000\000\000\000\000\000\005\177\000\000\005\177\000\000\015-\005\177\005\177\000\000\015-\001\153\015-\000\000\000\000\000\000\000\000\001\153\001\153\000\242\000\000\000\000\000\000\000\000\015-\005\177\000\000\000\000\000\000\000\000\000\000\015-\000\000\001\153\000\000\000\000\005\177\000\000\000\000\000\000\000\000\015-\000\000\000\000\015-\000\000\000\000\000\000\000\000\000\000\015-\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\015-\014\030\000\000\015-\000\000\000\000\015\225\015-\001\153\000\000\000\000\015\225\000\000\000\000\000\000\015\225\000\000\000\000\015-\001\153\015-\000\000\000\000\015-\015-\015\225\000\000\000\000\000\000\015\225\000\000\015\225\000\000\000\000\001\206\002\022\001\234\000\000\000\000\000\000\000\000\015-\000\000\015\225\000\000\000\000\000\000\000\000\000\000\003\"\015\225\000\000\016v\000\000\001\238\003&\002\002\000\000\000\000\000\000\000\000\000\000\000\000\015\225\002\014\000\000\001\210\000\000\000\000\015\225\015\225\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\015\225\003Z\004\226\004\238\000\000\be\be\be\000\000\004\250\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\015\225\000\000\015\225\003\006\004\242\015\225\015\225\be\be\be\000\000\004\254\000\000\000\000\000\000\015\225\000\000\be\000\000\be$\022\000\000\000\000\015\225\000\000\000\000\000\000\000\000\000\000\000\000\000\000\be\be\be\015\225\000\000\000\000\be\000\000\be\be\be\000\000\023b\000\000\000\000\005\137\be\000\000\000\000\000\000\005\137\000\000\000\000\000\000\005\137\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\005\137\000\000\be\000\000\005\137\000\000\005\137\000\000\006\185\t\198\000\000\000\000\000\000\006\185\000\000\000\000\000\000\006\185\005\137\000\000\000\000\000\000\000\000\000\000\000\000\005\137\000\000\006\185\000\000\000\000\000\000\006\185\000\000\006\185\000\000\005\137\000\000\000\000\005\137\000\000\000\000\004\230\000\000\be\005\137\006\185\000\000\000\000\000\000\000\000\000\000\000\000\006\185\nB\000\000\000\000\000\000\000\000\000\000\000\000\005\137\000\000\000\000\005\137\000\000\006\185\000\000\005\137\000\000\000\000\000\000\006\185\006\185\000\242\000\000\000\000\000\000\005\129\005\137\000\000\005\137\000\000\005\129\005\137\005\137\000\000\005\129\006\185\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\005\129\000\000\000\000\000\000\005\129\005\137\005\129\000\000\005\161\006\185\000\000\006\185\000\000\005\161\006\185\006\185\025\210\005\161\005\129\000\000\000\000\000\000\000\000\000\000\000\000\005\129\000\000\005\161\000\000\000\000\000\000\005\161\006\185\005\161\000\000\005\129\000\000\000\000\005\129\000\000\000\000\000\000\000\000\000\000\005\129\005\161\000\000\000\000\000\000\000\000\000\000\000\000\005\161\000\000\000\000\000\000\000\000\000\000\000\000\000\000\005\129\000\000\005\161\005\129\000\000\005\161\000\000\005\129\000\000\000\000\000\000\005\161\000\000\000\000\000\000\000\000\000\000\000\000\005\129\000\000\005\129\000\000\000\000\005\129\005\129\000\000\000\000\005\161\000\000\000\000\005\161\r\150\000\000\000\000\005\161\000\000\000\000\001\206\001\230\001\234\000\000\005\129\000\000\000\000\000\000\005\161\000\000\005\161\000\000\000\000\005\161\005\161\028\198\000\000\004\194\000\000\015\141\001\238\003\018\002\002\015\141\000\000\000\000\000\000\000\000\000\000\000\000\002\014\005\161\001\210\015\141\000\000\000\000\000\000\000\000\005q\015\141\000\000\000\000\029\190\005q\003V\001\214\003:\005q\000\000\000\000\003F\015\141\003Z\004\226\004\238\000\000\000\000\005q\015\141\000\000\004\250\005q\000\000\005q\000\000\000\000\000\000\000\000\015\141\000\000\000\000\015\141\000\000\000\000\000\000\005q\000\000\015\141\000\000\000\000\004\254\000\000\005q\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\005q\015\141\000\000\005q\015\141\000\000\000\000\000\000\015\141\005q\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\015\141\000\000\015\141\000\000\000\000\015\141\005q\000\000\0056\005q\005:%z\r\162\005q\000\000\000\000\000\000\000\000\001\206\001\230\001\234\016\142\000\000\015\141\005q\000\000\005q\000\000\000\000\005q\005q\000\000\b\161\000\000\000\000\000\000\000\000\b\161\001\238\001\242\002\002\b\161\000\000\000\000\000\000\000\000\000\000\005q\002\014\000\000\001\210\b\161\000\000\000\000\000\000\b\161\000\000\b\161!J\000\000\000\000\000\000\002\018\001\214\003:\000\000\000\000\000\000\003F\b\161\003Z\004\226\004\238\000\000\000\000\000\000\b\161\000\000\004\250\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\161\000\000\000\000\000\000\000\000\000\000\b\161\b\161\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\b\161\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\b\161\000\000\b\161\025\170\000\000\b\161\b\161\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\026\222\000\000\000\000\b\161\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\ba\ba\ba\003V\001\214\003:\000\000\000\000\000\000\003F\000\000\003Z\004\226\004\238\te\000\000\000\000\te\000\000\004\250\ba\ba\ba\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ba\000\000\ba\000\000\te\te\000\000\te\te\004\254\000\000\000\000\000\000\000\000\ba\ba\ba\000\000\000\000\000\000\ba\000\000\ba\ba\ba\016\181\016\181\016\181\000\000\te\ba\000\000\000\000\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\181\016\181\016\181\t\218\000\242\ba\000\000\000\000\000\000\000\000\016\181\000\000\016\181\000\000\000\000\000\000\000\000\000\000\000\000\te\000\000\000\000\000\000\000\000\016\181\016\181\016\181\000\000\000\000\000\000\016\181\000\000\016\181\016\181\016\181\000\000\000\000\000\000\000\000\te\016\181\te\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\007\018\000\000\bz\te\000\000\000\000\b\030\te\b\138\016\181\000\000\te\000\000\te\001\206\001\230\001\234\te\000\000\000\000\000\000\000\000\000\000\000\000\000\000\r\162\000\000\000\000\000\000\000\000\000\000\001\206\001\230\001\234\001\238\001\242\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\003\018\002\002\000\000\000\000\000\000\000\000\002\018\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\003V\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\023\238\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\031j\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\031\202\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\005\145\004\254\002\018\001\214\003:\005\145\000\000\000\000\003F\005\145\003Z\004\226\004\238\000\000\000\000\000\000\000\000\000\000\004\250\005\145\000\000\000\000\000\000\005\145\000\000\005\145\000\000\005y\001\206\001\230\001\234\000\000\005y\000\000\000\000\000\000\005y\005\145\004\254\000\000\000\000\000\000\000\000\000\000\005\145\000\000\005y\000\000\001\238\003\018\005y\000\000\005y\000\000\000\000\000\000\000\000\005\145\000\000\000\000\001\210\000\000\000\000\005\145\005y\000\000\000\000\000\000\000\000\000\000\000\000\005y\005\130\001\214\005\002\000\000\000\000\000\000\003F\005\145\003Z\004\226\004\238\000\000\005y\000\000\000\000\000\000\004\250\000\000\005y\005\169\000\000\000\000\000\000\000\000\005\169\005\145\000\000\005\145\005\169\000\000\005\145\005\145\000\000\000\000\005y\000\000\004\254\000\000\005\169\000\000\000\000\000\000\005\169\000\000\005\169\000\000\005\197\000\000\005\145\000\000\000\000\000\250\005y\000\000\005y\003\254\005\169\005y\005y\027\026\000\000\000\000\000\000\005\169\000\000\004*\000\000\000\000\000\000\005\197\000\000\004.\000\000\000\000\000\000\005y\005\169\000\000\000\000\000\000\000\000\000\000\005\169\004:\000\000\000\000\029R\000\000\000\000\000\000\025\150\000\000\000\000\000\000\000\000\000\000\000\000\000\000\005\169\000\000!v\000\000\000\000\025\250\000\000\000\000\000\000\000\000\000\000\026\018\005\185\000\000\000\000\000\000\000\000\000\250\005\169\000\000\005\169\002V\000\000\005\169\005\169\000\000\000\000\026\026\000\000\000\000\000\000\026\158\000\000\000\000\000\000\005\185\000\000\004.\000\000\000\000\000\000\005\169\000\000\001\230\001\234\026\"\000\000\026^\000\000\026\162\005\197\005\197\029\238\000\000\000\000\000\000\026\202\000\000\000\000\000\000\000\000\000\000\001\238\003\018\002\002\000\000\000\000\000\000\030\174\025\250\000\000\000\000\002\014\000\000\000\000\026\018\027\174\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003J\000\000\029\006\000\000\028&\026\026\003F\000\000\003Z\004\226\004\238\000\000\000\000\000\000\000\000\000\000\029\022\000\000\000\000\000\000\000\000\000\000\000\000\026\"\000\000\027b\000\000\000\000\005\185\005\185\000\000\000\000\000\000\000\000\000\000\000\000\004\254\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\027r")) + ((32, "\000\000t\014\000\000\127n\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\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\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\000\000\000{n\000\000\000\000\000\000\000\000\000\000\021\252\000\000{n\000\000t\014\000\000\024\246\000\000\021\156\000\000\002j\000\000\217L\000\000\000\000\000\000\000\000\000\000\000\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\022H\000\000\001\152\000\000\000\157\000\000\000\000\000\000\000\030\000\000\000\170\000\000\000\000\000\000\003\192\000\000\001D\000\000\003p\000\000\000\000\000\000\000F\000\000\002\"\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\001\132\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\216\000\001\011.\000\000\210^\000\000\211\000\000\000\211\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\006F\000\000\000\000\000\000\000\000\000\000\177\020\000\000\005\n\000\000\004\240\000\000\000\000\000\000\000\000\000\001\011\242\000\000vR\000\000\006F\000\000\005\202\000\000\000\000\000\000\000\000\000\000\006F\000\000y\148\000\000\006F\000\000\006B\000\000\174*\000\000~\236\000\000\021\252\000\000rh\000\000\214\030\000\000\021\252\000\000\131L\000\000\127n\000\000\021\252\000\000\174:\000\000\000\000\000\000\021\006\000\000\000\000\000\000\174:\000\000\028\248\000\000\000\000\000\000\030\194\000\000\000\000\000\000\003P\000\000\000\000\000\000\000\000\000\000\002X\000\000\000,\000\000\001\226\000\000\006F\000\000\000\000\000\000\021\252\000\000\000\000\000\000\006F\000\000\000,\000\000\002T\000\000\006F\000\000\000\000\000\000\000\000\000\000\004\208\000\000\000\000\000\000\030\194\000\000\000\000\000\000\000\000\000\000\003\202\000\000\021\150\000\000\000\000\000\000\006F\000\000\021\150\000\000\000\000\000\000\tj\000\000\252R\000\000\006F\000\000\000\000\000\000\000\000\000\000\255\190\000\000\255\130\000\000\230\226\000\000\000\000\000\000\006F\000\000\000\000\000\001\003\142\000\001\007\158\000\000\000\000\000\000\006F\000\000\176D\000\000\006F\000\000\007\000\000\000\000\000\000\000\177\246\000\000\214\200\000\001\007\158\000\000{\226\000\001\012D\000\000\006F\000\000\176D\000\001\007\158\000\000{n\000\000t\014\000\000\000\000\000\000\000\000\000\000\000\000\000\000\127n\000\000\021\252\000\000\000\000\000\000\000\000\000\000\017\204\000\000\127\n\000\000\021\252\000\000\1788\000\000\175\024\000\000\000\000\000\000\000q\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\138\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000vr\000\000\022@\000\000\022\212\000\000\003\204\000\000\006\240\000\000\000\000\000\000\000\000\000\000\t\152\000\000\000\000\000\000rh\000\000\007f\000\000\007\226\000\000\021\252\000\000\028\n\000\000\021\252\000\000t\014\000\000\127n\000\000\021\252\000\000\179\016\000\000\174:\000\000\n\020\000\000\252R\000\000\255\190\000\000\000\000\000\001\004\014\000\000{n\000\000t\014\000\000t\014\000\000\000\000\000\000\000\000\000\000\000\000\000\000z\128\000\000z\128\000\000\021\252\000\000\028\n\000\000\029\132\000\000\021\252\000\000\136$\000\000\000\000\000\000\023\158\000\000\004\020\000\000\011 \000\000\000\000\000\000\007\156\000\000\011\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\127n\000\000\021\252\000\000\000\000\000\000r\n\000\000\243\188\000\000\131L\000\000\000\000\000\000\001\012\000\000\136\234\000\000\175\024\000\000\231\130\000\000\231\130\000\000\243\n\000\000\000\000\000\000\011 \000\000\000\000\000\000\003Z\000\000\000\000\000\000\000\000\000\000\029\146\000\000\216\210\000\001\b\014\000\000\000\000\000\000\216\210\000\001\b\014\000\000\000\000\000\000\216\210\000\000\216\210\000\000\007b\000\000\000\000\000\000\005.\000\000\005\240\000\000\000\000\000\000\005\232\000\000\000\000\000\000\t\004\000\000\000\000\000\000\000\000\000\000\011\202\000\000\000\000\000\000\000\000\000\000\000\000\000\000\216\210\000\000\006F\000\000\000\000\000\000\179\000\000\000\000\000\000\000\185p\000\000\216\210\000\000\186Z\000\000\000\000\000\000\184\134\000\000|\218\000\000\000\000\000\000\000\000\000\000\181\196\000\000\007b\000\000\000\000\000\000\179\236\000\000\000\000\000\001\015r\000\001\007\158\000\000\000\000\000\000\005x\000\000\007b\000\000\007b\000\000\000\000\000\000\180\216\000\000\000\000\000\000\216\210\000\000\174p\000\001\007\158\000\000\002\196\000\000\006F\000\000\000\000\000\000\t\236\000\000\006F\000\000\t\192\000\000\006F\000\000\011$\000\000\000\000\000\000\216\210\000\000\000\000\000\000\012t\000\000\012\000\000\000\216\210\000\000\187D\000\000\000\000\000\000\174p\000\000\188.\000\000\216\210\000\000\189\024\000\000\000\000\000\000\174p\000\000\190\002\000\000\182\176\000\000|\218\000\000\183\156\000\000\000\000\000\000\208J\000\000\000\019\000\000\006F\000\000\000\000\000\000\006\220\000\000\011r\000\000\006F\000\000\r\134\000\000\000\000\000\000\006F\000\000\012\218\000\000\006F\000\000\r\168\000\000\000\000\000\000\005\006\000\000\000\000\000\000\216\210\000\000\007\030\000\000\014\006\000\000\007\226\000\000\004\006\000\000\216\210\000\000\012\188\000\000\015$\000\000\216\210\000\000\190\236\000\000\000\000\000\000\174p\000\000\191\214\000\000\015*\000\000\216\210\000\000\192\192\000\000\000\000\000\000\174p\000\000\193\170\000\000\182\n\000\001\007\158\000\000\006\030\000\000\216\210\000\000\r\128\000\000\015n\000\000\216\210\000\000\194\148\000\000\000\000\000\000\174p\000\000\195~\000\000\016\016\000\000\216\210\000\000\196h\000\000\000\000\000\000\174p\000\000\197R\000\000\174p\000\000\198<\000\000\000\000\000\000\000\000\000\000\003\216\000\000\000\000\000\000\216\210\000\000\000\000\000\000\001\020\000\001\012\150\000\000\000\000\000\000\216\210\000\000\006P\000\000\216\210\000\000r6\000\000\000\000\000\000vB\000\000\000\000\000\000\011\140\000\000\b\234\000\000\000\000\000\000\015\144\000\000\216\210\000\000\011\162\000\000\000\000\000\000\012 \000\000\000\000\000\000\017\212\000\000\000\000\000\000\000\000\000\000\002t\000\000\000\000\000\000\000\000\000\000\000\000\000\000!z\000\000\012\202\000\000\175\024\000\000\127n\000\000\021\252\000\000\175\024\000\000\000\000\000\000\007b\000\000\000\000\000\000\000\000\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\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000~v\000\000!4\000\000\000q\000\000\002\138\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\028\000\000\030\194\000\000\231\130\000\000\000\000\000\000\000\000\000\000\233\192\000\000\021\252\000\000\175\024\000\000\000\000\000\000\000\000\000\000\221\028\000\000\175\024\000\000\228\230\000\000\244X\000\000\000\000\000\000\239\188\000\000\000\000\000\000\175\024\000\000\000\000\000\000\000\000\000\000\176\024\000\000zd\000\000\000\184\000\000\000\184\000\000\000\000\000\000\016f\000\000\175\024\000\000\000\000\000\000\000\000\000\000\000\000\000\000\030\b\000\000\016\164\000\000\000\000\000\000q\254\000\000\000\000\000\000\000\000\000\000\244\250\000\000\000\000\000\001\004\210\000\000\216\210\000\000\000\000\000\000\b\140\000\000\000\000\000\000\000\000\000\000\245\156\000\000\000\000\000\001\012\190\000\000\012\226\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\232\000\000\000\000\000\000\031\228\000\000\000\000\000\000\000\000\000\000\244X\000\000\000\000\000\000\005H\000\000\000\000\000\000\000\000\000\000s\194\000\000\217\250\000\000\000\000\000\000\000\000\000\000\025\156\000\000\007\142\000\000\031\172\000\000\011\190\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\005Z\000\000\000\000\000\000\000\000\000\000\000\000\000\000\006\154\000\000\000\000\000\000\000\000\000\000\208\244\000\000\0046\000\000\030\140\000\000\023\160\000\001\011.\000\000\tB\000\000\216\210\000\000\016\248\000\000\019\016\000\000\017\014\000\000\018l\000\000\000\000\000\000\018\194\000\000\000\000\000\000\000\000\000\000\b\004\000\000\030\140\000\000\017\014\000\000\006\226\000\000\000\000\000\000\209\188\000\000{\206\000\000z\128\000\000\021\252\000\000\028\n\000\000\000\182\000\000\004\030\000\000\022\200\000\000\000\000\000\000\018\022\000\000rh\000\000rh\000\000\000\182\000\000\004\030\000\000\012J\000\000rh\000\000\000\000\000\000\2364\000\000\014D\000\000\174:\000\000\011 \000\000\005\172\000\001\r\004\000\000\000\000\000\000\216\210\000\000\2322\000\000\216\210\000\000\218\170\000\000\232\188\000\000\216\210\000\000\006\218\000\000\216\210\000\000\233F\000\000\000\000\000\000\007\248\000\000\r\226\000\000\b\184\000\000rh\000\000\236\230\000\000\000\000\000\000\nj\000\000\014\166\000\000\214 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000rh\000\000\237D\000\000rh\000\000\237\246\000\000\003|\000\000\005\240\000\000\2194\000\000\n8\000\000\005\240\000\000\219\190\000\000\000\000\000\000\238T\000\000\br\000\000\000\000\000\000\220H\000\000\000\000\000\000\000\000\000\000\bT\000\000\000\000\000\000\000\000\000\000\004\144\000\000\000\000\000\000\012b\000\000\028\n\000\000\000\000\000\000\214\240\000\000w$\000\000\000\000\000\000\023N\000\000\000\000\000\000\000\000\000\000rh\000\000\t`\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\212R\000\000\000\000\000\000\t\204\000\000\000\000\000\000\132\026\000\000\132\242\000\000\001\190\000\000\001\186\000\000\137\176\000\000\024\002\000\000\177\168\000\000\127n\000\000\021\252\000\000t\212\000\000\127n\000\000\021\252\000\000\017\204\000\000\017\204\000\000\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\024\000\000\025\014\000\000s\012\000\000\000\000\000\000\1284\000\000\128\250\000\000z\128\000\000\021\252\000\000\028\n\000\000\0060\000\000{0\000\000\000\000\000\000\005\156\000\000\000\000\000\000\129\192\000\000\130\134\000\000\246>\000\000\029\212\000\000\216\210\000\000\t\014\000\000\000\000\000\000\127n\000\000\021\252\000\000\000\000\000\000\233\192\000\000\021\252\000\000\243\n\000\000\175\024\000\000r\234\000\000\000\000\000\000\127n\000\000\021\252\000\000yh\000\000\005B\000\000\000\000\000\000\217\250\000\000\026\176\000\001\011.\000\000\nN\000\000\216\210\000\000\020\028\000\000\021(\000\000\175\024\000\000\006\226\000\000\019$\000\000\000\000\000\000\006\226\000\000\019\132\000\000\000\000\000\000\000\000\000\000\000\000\000\000vr\000\000\nz\000\000\019\242\000\000\019\172\000\000\006F\000\000\020r\000\000\000\000\000\000\020\218\000\000\006F\000\000\020~\000\000\000\000\000\000\000\000\000\000\020\132\000\000\000\000\000\000\003\208\000\000\000\000\000\000\000\000\000\000w(\000\001\r\174\000\000\0120\000\000\216\210\000\000\0156\000\000\000\000\000\000\175\024\000\000\020\144\000\000\000\000\000\001\000^\000\000vr\000\000xR\000\001\r\174\000\000\r<\000\000\216\210\000\000\015\152\000\000\000\000\000\000\175\024\000\000\030\136\000\000\000\000\000\000\011r\000\000\006F\000\000\000\000\000\000\020\138\000\000\006F\000\000\020\014\000\000\006F\000\000\021\028\000\000\000\000\000\000\014H\000\000\216\210\000\000\016B\000\000\000\000\000\000\000\000\000\000\000\000\000\000\212\252\000\000\000\000\000\000\000\000\000\000\000p\000\000|\218\000\000\026(\000\000\021 \000\000\138v\000\000\233\192\000\000\021\252\000\000\243\n\000\000\0282\000\000\139<\000\000\233\192\000\000\021\252\000\000\243\n\000\000\029>\000\000\175\024\000\000\000\000\000\000\000\000\000\000\233\192\000\000\021\252\000\000\175\024\000\000\"\004\000\000\000\000\000\000\000\000\000\000\127n\000\000\021\252\000\000\017\204\000\000\024\002\000\000\021*\000\000\000\000\000\000\017\204\000\000\003$\000\000\025\158\000\000|r\000\000\233\192\000\000\021\252\000\000\243\n\000\000qJ\000\000|r\000\000\140\002\000\000\233\192\000\000\021\252\000\000\243\n\000\000\000\000\000\000\017\204\000\000\011(\000\000\021@\000\000\000\019\000\001\n,\000\000\000\000\000\000\027\012\000\001\r\208\000\000\000\000\000\000\023F\000\000\216\210\000\000\029J\000\000\022\016\000\000\000\000\000\000\000\000\000\000\021\218\000\000\000\000\000\000\017\204\000\000\0040\000\000\021\226\000\000\000\000\000\000#\172\000\000\000\000\000\000\005`\000\000\000\000\000\000\000\000\000\000\030J\000\000\140\200\000\000\233\192\000\000\021\252\000\000\243\n\000\000\031V\000\000\018\216\000\000\025\014\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\222\000\000\000\000\000\000\000\000\000\000\000\000\000\000 b\000\000\141\142\000\000\233\192\000\000\021\252\000\000\243\n\000\000!n\000\000\"z\000\000\142T\000\000\233\192\000\000\021\252\000\000\243\n\000\000#\134\000\000$\146\000\000\000\000\000\000\019\228\000\000\026\026\000\000\143\026\000\000\233\192\000\000\021\252\000\000\243\n\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\143\224\000\000\233\192\000\000\021\252\000\000\243\n\000\000%\158\000\000&\170\000\000\144\166\000\000\233\192\000\000\021\252\000\000\243\n\000\000'\182\000\000(\194\000\000\145l\000\000\233\192\000\000\021\252\000\000\243\n\000\000)\206\000\000*\218\000\000\1462\000\000\233\192\000\000\021\252\000\000\243\n\000\000+\230\000\000,\242\000\000\146\248\000\000\233\192\000\000\021\252\000\000\243\n\000\000-\254\000\000/\n\000\000\147\190\000\000\233\192\000\000\021\252\000\000\243\n\000\0000\022\000\0001\"\000\000\148\132\000\000\233\192\000\000\021\252\000\000\243\n\000\0002.\000\0003:\000\000\149J\000\000\233\192\000\000\021\252\000\000\243\n\000\0004F\000\0005R\000\000\150\016\000\000\233\192\000\000\021\252\000\000\243\n\000\0006^\000\0007j\000\000\150\214\000\000\233\192\000\000\021\252\000\000\243\n\000\0008v\000\0009\130\000\000\151\156\000\000\233\192\000\000\021\252\000\000\243\n\000\000:\142\000\000;\154\000\000\152b\000\000\233\192\000\000\021\252\000\000\243\n\000\000<\166\000\000=\178\000\000\153(\000\000\233\192\000\000\021\252\000\000\243\n\000\000>\190\000\000?\202\000\000\153\238\000\000\233\192\000\000\021\252\000\000\243\n\000\000@\214\000\000A\226\000\000\154\180\000\000\233\192\000\000\021\252\000\000\243\n\000\000B\238\000\000C\250\000\000\155z\000\000\233\192\000\000\021\252\000\000\243\n\000\000E\006\000\000F\018\000\000\156@\000\000\233\192\000\000\021\252\000\000\243\n\000\000G\030\000\000H*\000\000\157\006\000\000\233\192\000\000\021\252\000\000\243\n\000\000I6\000\000JB\000\000\157\204\000\000\233\192\000\000\021\252\000\000\243\n\000\000KN\000\000LZ\000\000\158\146\000\000\233\192\000\000\021\252\000\000\243\n\000\000Mf\000\000Nr\000\000\021\252\000\000\217\250\000\000yh\000\000\000\000\000\000\000\000\000\001\011.\000\000\003\208\000\000\021~\000\000\216\210\000\000\012\022\000\000\000\000\000\000\000\000\000\000\014~\000\000\216\210\000\000\r\"\000\000\000\000\000\000\000\000\000\000\021\200\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\019\000\000\000\000\000\000\021\206\000\000\138v\000\000\000\000\000\000\000\000\000\000\000\000\000\000\030\224\000\000\216\210\000\000\r&\000\000\000\000\000\000\000\000\000\000\"\176\000\000\000\000\000\000\000\000\000\000\246\224\000\000\000\000\000\000#\016\000\000\247\130\000\000\000\000\000\000#\188\000\000\248$\000\000\000\000\000\000$\028\000\000\023\236\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000$\200\000\000\175\024\000\000%(\000\000\002j\000\000\215\148\000\001\011.\000\000\015\138\000\000\216\210\000\000\014.\000\000\000\000\000\000\000\000\000\000\022\018\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\248\206\000\000\248\206\000\000\000\000\000\000\000\000\000\000\000\000\000\000O~\000\000\000\000\000\000\014\204\000\000\000\000\000\000\000\000\000\000\000\000\000\000\012\132\000\000\000\000\000\000\000\000\000\000\011d\000\000\026\238\000\000|r\000\000\n\240\000\000\000\000\000\000\000\000\000\000\216\006\000\000}t\000\000\000\000\000\000|r\000\000\015\188\000\000\000\000\000\000\000\000\000\000|r\000\000\r\144\000\000\000\000\000\000\000\000\000\000\000\000\000\000\017\204\000\000\005<\000\000\027(\000\000|r\000\000\014&\000\000\000\000\000\000\006H\000\000\159X\000\000\233\192\000\000\021\252\000\000\243\n\000\000P\138\000\000Q\150\000\000|r\000\000\015\216\000\000\000\000\000\000\007T\000\000\160\030\000\000\233\192\000\000\021\252\000\000\243\n\000\000R\162\000\000S\174\000\000|r\000\000\016\180\000\000\000\000\000\000\b`\000\000\160\228\000\000\233\192\000\000\021\252\000\000\243\n\000\000T\186\000\000U\198\000\000$\030\000\000\000\000\000\000\014\212\000\000\tl\000\000\161\170\000\000\233\192\000\000\021\252\000\000\243\n\000\000V\210\000\000W\222\000\000\000\000\000\000\016\200\000\000\nx\000\000\162p\000\000\233\192\000\000\021\252\000\000\243\n\000\000X\234\000\000Y\246\000\000\000\000\000\000\018\204\000\000\011\132\000\000\1636\000\000\233\192\000\000\021\252\000\000\243\n\000\000[\002\000\000\\\014\000\000\012p\000\000\028\"\000\000|r\000\000\015\224\000\000\012\144\000\000\163\252\000\000\233\192\000\000\021\252\000\000\243\n\000\000]\026\000\000^&\000\000|r\000\000\017J\000\000\r\156\000\000\164\194\000\000\233\192\000\000\021\252\000\000\243\n\000\000_2\000\000`>\000\000|r\000\000\018\246\000\000\014\168\000\000\165\136\000\000\233\192\000\000\021\252\000\000\243\n\000\000aJ\000\000bV\000\000\015\180\000\000\166N\000\000\233\192\000\000\021\252\000\000\243\n\000\000cb\000\000dn\000\000\016\192\000\000\020\240\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\236\000\000\000\000\000\000|r\000\000\017\240\000\000\000\000\000\000|r\000\000\021*\000\000\000\000\000\000\000\000\000\000\000t\000\000\000\000\000\000\000\000\000\000\000\000\000\000\022\000\000\000\000\000\000\000\022N\000\000\000\000\000\000ez\000\000\000\000\000\000\022\214\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000f\134\000\000\023(\000\000\167\020\000\000\233\192\000\000\021\252\000\000\243\n\000\000g\146\000\000\167\218\000\000\233\192\000\000\021\252\000\000\243\n\000\000h\158\000\000i\170\000\000j\182\000\000\168\160\000\000\233\192\000\000\021\252\000\000\243\n\000\000k\194\000\000l\206\000\000\000\000\000\000%\212\000\000\000\000\000\000\000\000\000\000\007\150\000\000\000\000\000\000\000\000\000\000\175\024\000\000\000\000\000\000\000\000\000\000\249v\000\000\0178\000\000\000\000\000\000\000\000\000\000\133\184\000\000\233\192\000\000\021\252\000\000\243\n\000\000\025\194\000\000\169f\000\000\233\192\000\000\021\252\000\000\243\n\000\000\022\238\000\000\2342\000\000\021\252\000\000 |\000\000\021\252\000\000\175\024\000\000\175\024\000\000&\224\000\000\170,\000\000\233\192\000\000\021\252\000\000\243\n\000\000\0264\000\000\220\188\000\000\025D\000\000\170\242\000\000\233\192\000\000\021\252\000\000\243\n\000\000\027@\000\000\221<\000\000\171\184\000\000\233\192\000\000\021\252\000\000\243\n\000\000\000t\000\000\172~\000\000\233\192\000\000\021\252\000\000\243\n\000\000\028L\000\000\222\n\000\000\216\006\000\000\173D\000\000\233\192\000\000\021\252\000\000\243\n\000\000\029X\000\000\222\138\000\000\000\000\000\000\000\000\000\000\000\000\000\000\012 \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\216\000\000\000\000\000\000\000\000\000\000\216\006\000\000\r,\000\000\000\000\000\000\134\134\000\000\233\192\000\000\021\252\000\000\243\n\000\000 ,\000\000\016\024\000\000\000\000\000\000\000\000\000\000\n6\000\000\000\000\000\000\000\000\000\000\216\006\000\000\017$\000\000\000\000\000\000\135^\000\000\000\000\000\000\233\192\000\000\021\252\000\000\243\n\000\000\025\194\000\000\007\\\000\000\000\000\000\000\018V\000\000\000\000\000\000\000\000\000\000\216\006\000\000\007\240\000\000\000\000\000\000\001\190\000\000\n\140\000\000\000\000\000\000\000\000\000\000\024\002\000\000s\140\000\000\011 \000\000\000\000\000\000s\210\000\000\r\214\000\000\018\006\000\000\0252\000\000\000\000\000\000\000\000\000\000\023*\000\000\000\000\000\000\000\000\000\000\002\022\000\000\0282\000\000\182L\000\000\000\000\000\000\027&\000\000\000\000\000\000\011.\000\000\000\000\000\000\000\000\000\000\023\246\000\000\000\000\000\000\000\000\000\000\233\192\000\000\021\252\000\000\243\n\000\000\031\162\000\000\221<\000\000\tp\000\000\023\180\000\000\000\000\000\000\000\000\000\000\011\152\000\000\000\000\000\000\000\000\000\000\233\192\000\000\021\252\000\000\243\n\000\000\025\194\000\000\bh\000\000\000\000\000\000\018z\000\000\000\000\000\000\000\000\000\000\216\006\000\000\b\252\000\000\000\000\000\000\233\192\000\000\021\252\000\000\243\n\000\000 ,\000\000\019<\000\000\000\000\000\000\000\000\000\000\014f\000\000\000\000\000\000\000\000\000\000\216\006\000\000\023\208\000\000\000\000\000\000\000\000\000\000\021\252\000\000\028\n\000\000\015\b\000\000\000\000\000\000\000\000\000\000\022\212\000\000\003\204\000\000\006\240\000\000\004\030\000\000\028\n\000\000\253b\000\000rh\000\000\027Z\000\000\028\n\000\000\253\236\000\000\022\246\000\000\000\000\000\000\000\000\000\000\004\030\000\000\000\000\000\000\024\160\000\000\021\252\000\000\025\166\000\000\000\000\000\000\002\162\000\000\023p\000\000\000\000\000\000\023r\000\000\026 \000\000|\218\000\000\000=\000\000\000\000\000\000\000\000\000\000\023H\000\000\022\222\000\001\011.\000\000\016\150\000\000\216\210\000\000$\182\000\000\0078\000\000\016\254\000\000\021\156\000\000\000\000\000\000%\194\000\000\023\218\000\000\000\000\000\000\007v\000\000\000\000\000\000\000\000\000\000|\218\000\000\223.\000\000\023\244\000\000\1862\000\000|\218\000\000\223\238\000\000\224\174\000\000\000\000\000\000\234\214\000\000\184\184\000\001\014.\000\000\006F\000\000y\148\000\000\017l\000\000|\218\000\000\023\222\000\000|\218\000\000\238\254\000\000\225n\000\000\023\224\000\000|\218\000\000\239\136\000\000\226.\000\000\017X\000\000\023\184\000\000\000\000\000\000\000\000\000\000\000\000\000\000\021\252\000\000\235\004\000\000\000\000\000\000\217\250\000\000\248\206\000\000\000\000\000\000\000\000\000\000\024P\000\000\000\000\000\000\006\226\000\000\024z\000\000\000\000\000\000\000\000\000\000\000\000\000\000\233\192\000\000\021\252\000\000\243\n\000\000m\218\000\000n\230\000\000\000\000\000\000\233\192\000\000\021\252\000\000\243\n\000\000\025\194\000\000\0148\000\000\000\000\000\000\000\000\000\000\rl\000\000\000\000\000\000\000\000\000\000\216\006\000\000\016P\000\000\000\000\000\000\000\000\000\000z\128\000\000\021\252\000\000\028\n\000\000\031|\000\000\000\000\000\000\175\248\000\000\000\000\000\000\b\192\000\000\000\000\000\000\004\\\000\000\000\000\000\000\000\000\000\000\024\180\000\000\000\000\000\000\025\000\000\000\243\n\000\000o\242\000\000\000\000\000\000\233\192\000\000\021\252\000\000\243\n\000\000!\154\000\000\000\000\000\000\000\000\000\000\176\000\000\000\000\000\000\000\t\204\000\000\000\000\000\000\183\222\000\000\000\000\000\000\001\000\000\000\000\000\000\000rh\000\000\n\216\000\000\000\000\000\000\240.\000\000\000\000\000\000\000\000\000\000\186\156\000\000\000\000\000\000\015\b\000\000\000\000\000\000\187$\000\000\000\000\000\000\nl\000\000\000\000\000\000rh\000\000\015\168\000\000\000\000\000\000\248\206\000\000\000\000\000\000\021\252\000\000\028\n\000\000\248\206\000\000\000\000\000\000\023\204\000\000\023\158\000\000\004\020\000\000\006F\000\001\005<\000\000rh\000\001\000\182\000\000\248\144\000\000\000\000\000\000\021\252\000\000\024\172\000\000\006\240\000\000\004\030\000\000\248\206\000\001\b\144\000\000\003\204\000\000\006\240\000\000\004\030\000\000\248\206\000\001\b\144\000\000\000\000\000\000\000\000\000\000\004\030\000\000\248\144\000\000\000\000\000\000{n\000\000t\014\000\000\175\024\000\000\027\\\000\000\000\000\000\000\000\000\000\000{n\000\000t\014\000\000\180B\000\000\000\000\000\000\024\246\000\000\021\156\000\000\002j\000\000\024$\000\001\011.\000\000\018x\000\000\216\210\000\000\250\022\000\000\024N\000\000\024\250\000\001\005\198\000\000\000\000\000\000\248\144\000\000\000\000\000\000\250\160\000\000\024\160\000\000\021\252\000\000\025\166\000\000\254v\000\000#\138\000\000\b\136\000\001\001\026\000\000\n8\000\000\024<\000\000\021\252\000\000\248\144\000\000\000\000\000\000\021\252\000\000\248\144\000\000\000\000\000\000\216\210\000\001\016\178\000\000\026\148\000\000\t\254\000\000\001\000\000\000\005\240\000\001\004\014\000\000\000\000\000\000\001\000\000\000\005\240\000\001\004\014\000\000\000\000\000\000\026@\000\000\023\158\000\000\004\020\000\000\006F\000\001\011V\000\000rh\000\001\006$\000\000\000\000\000\000\021\252\000\000\0258\000\000\023\130\000\000\016h\000\000\000\000\000\001\004\014\000\000\000\000\000\000\006\240\000\000\024\\\000\000rh\000\001\006$\000\001\015F\000\000\003\204\000\000\006\240\000\000\024h\000\000rh\000\001\006$\000\001\015F\000\000\000\000\000\000\000\000\000\000\005*\000\000\000\000\000\000\248\144\000\000\000\000\000\000rh\000\001\b\198\000\000\248\144\000\000\000\000\000\000\005*\000\000\000\000\000\000\024\160\000\000\021\252\000\000\025\166\000\000\251\156\000\000\"Z\000\000!\222\000\000\021\150\000\000\000\172\000\000\000\000\000\000\018\166\000\000\030\194\000\000\000\000\000\000\014\142\000\000\000\000\000\000\030\194\000\000\000\000\000\000\025\020\000\000\024\186\000\000w\220\000\000\021\252\000\000\181\152\000\000\216\210\000\000\018\188\000\000\000\000\000\000\129r\000\000\021\156\000\000\001n\000\000\012\254\000\000\000\000\000\000\rR\000\000\000\000\000\000\025\030\000\000\024\170\000\000\216\210\000\000\135^\000\000\000\000\000\000\021\252\000\000\001\230\000\000\019(\000\000\000\000\000\000\016v\000\000\000\000\000\000\025f\000\000\024\228\000\001\011.\000\000\128\172\000\000\000\000\000\000\021\252\000\000w\220\000\000\025\142\000\000\022\160\000\000\001\000\000\000\000\000\000\000\014r\000\000w\220\000\000\216\210\000\000\015\210\000\000\007b\000\000\000\000\000\000\216\210\000\000\001\162\000\000\017V\000\000\000\000\000\000\000\000\000\000\240\212\000\000\000\000\000\000\000\000\000\000\016\252\000\000w\220\000\000\241^\000\000\135^\000\000\000\000\000\000\021\252\000\000\216\210\000\000\018\196\000\000\216\210\000\000\132\242\000\000\128\172\000\000\000\000\000\000\015^\000\000\000\000\000\000\000\000\000\000\128\172\000\000\000\000\000\000\000\000\000\000\129r\000\000\000\000\000\000\248\206\000\001\tP\000\000\021\150\000\000\000\172\000\000\018\166\000\000\025\152\000\000\025F\000\000w\220\000\000\248\206\000\001\tP\000\000\000\000\000\000\000\000\000\000\021\150\000\000\000\172\000\000\018\166\000\000\025\204\000\000\025f\000\001\016\226\000\000\177\230\000\000|\218\000\000\025\252\000\001\016\226\000\000\216\210\000\000\024J\000\000\026\014\000\001\016\226\000\000|\218\000\000\026\016\000\001\016\226\000\000\242\030\000\000\251`\000\000\000\000\000\001\006\134\000\000\000\000\000\000\000\000\000\000\248\206\000\001\015|\000\000\021\150\000\000\000\172\000\000\018\166\000\000\026&\000\000\025\164\000\001\016\226\000\000\248\206\000\001\015|\000\000\000\000\000\000\000\000\000\000\000\000\000\001\016\178\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\248\144\000\000\000\000\000\000~\236\000\000\021\252\000\000rh\000\001\006$\000\000\000\000\000\001\t\134\000\000\021\252\000\000}\232\000\000\026,\000\000\252R\000\000\255\190\000\000\000\000\000\001\004\014\000\001\t\134\000\000\000\000\000\000\000\000\000\000\000\000\000\001\015\252\000\000\021\252\000\000}\232\000\000\026f\000\000\017\246\000\000\025\230\000\000\255\130\000\001\n,\000\000\000=\000\000\026\162\000\000\000\000\000\000\000\000\000\000\242\132\000\000\251\156\000\000\021\252\000\000\000\000\000\001\001~\000\000\025\166\000\000\000\000\000\000\000\000\000\001\004\014\000\001\015\252\000\000\000\000\000\000\000\000\000\000\000\000\000\000\254\212\000\000\028\208\000\000\025\166\000\000\000=\000\000\026\174\000\000\000\000\000\000\000\000\000\000\000\000\000\000\251\156\000\000\021\252\000\000\000\000\000\000\000=\000\000\026\180\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\014D\000\000\"Z\000\000\021\150\000\000\000\172\000\000\018\166\000\000\026\142\000\000\226\\\000\000vr\000\000}F\000\000\021\252\000\000\1788\000\000\133\252\000\000\021\156\000\000\018\188\000\000\018\024\000\000\000\000\000\000\026\148\000\000\bN\000\000\000\000\000\000\000\000\000\000\026x\000\000\000\000\000\000\000\000\000\000\135^\000\000\000\000\000\000\004\158\000\000\018:\000\000\000\000\000\000\018\026\000\000\000\000\000\000\026\220\000\000\026l\000\000\216\210\000\000\133\184\000\000\026\246\000\000\t\220\000\000\000\000\000\000\000\000\000\000\026\152\000\000\000\000\000\000\000\000\000\000\022\132\000\000\017\176\000\000\019L\000\000\000\000\000\000\027\018\000\000\227\028\000\001\014\156\000\000\003\208\000\000\026\164\000\000\216\210\000\000\019 \000\000\000\000\000\000\000\000\000\000\026\192\000\000\000\000\000\000\000\000\000\000\000\000\000\000\135^\000\000\000\000\000\000\019\178\000\000\019\160\000\000\000\000\000\000\019&\000\000\000\000\000\000\0272\000\000\026\178\000\001\011.\000\000\000\000\000\000\027F\000\000\227\190\000\001\014\230\000\000\003\208\000\000\026\246\000\000\216\210\000\000\019\208\000\000\000\000\000\000\000\000\000\000\027\018\000\000\000\000\000\000\000\000\000\000\000\000\000\000\021\252\000\000\000\000\000\000\135^\000\000\000\000\000\000\022B\000\000\021\252\000\000}F\000\000}F\000\000\213\178\000\000{n\000\000\021\252\000\000\235\004\000\000\217\250\000\000\006\030\000\000\000\000\000\000\027\012\000\000\001\000\000\000\000\000\000\000\019b\000\000}F\000\000\216\210\000\000\019L\000\000\011 \000\000\000\000\000\000\021\252\000\000\226\\\000\000\226\\\000\000}F\000\000\r\216\000\000}F\000\000\000\000\000\000wt\000\000xn\000\000\000\000\000\000\228\022\000\000\000\000\000\000\000\000\000\000\228\160\000\000\000\000\000\000\000\000\000\000\229*\000\000\000\000\000\000\019\150\000\000}F\000\000\229\180\000\000\235\004\000\000\217\250\000\000\006\030\000\000\000\000\000\000\003P\000\000\000\000\000\000\000\000\000\001\016\226\000\000\020\\\000\000\000\000\000\000\000\000\000\000\173D\000\000\027x\000\000\000\000\000\000\135^\000\000\000\000\000\000}F\000\000\173D\000\000\135^\000\000\000\000\000\000\021\252\000\000\216\210\000\000\135^\000\000\000\000\000\000\017t\000\000\000\000\000\000\000\000\000\000\135^\000\000\000\000\000\000\000\000\000\000\133\252\000\000\000\000\000\001\004\030\000\001\016\226\000\000\027\028\000\000}F\000\001\004\222\000\000\226\\\000\000\000\000\000\000\248\206\000\001\n\132\000\000\021\150\000\000\000\172\000\000\018\166\000\000\027~\000\000\226\\\000\000\248\206\000\001\n\132\000\000\000\000\000\000\000\000\000\000\000\000\000\001\0162\000\000\127n\000\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\006\200\000\000\248\144\000\000\000\000\000\000z\128\000\000\021\252\000\000\028\n\000\000\248\206\000\000\000\000\000\001\t\134\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\248\144\000\001\0162\000\000\000\000\000\000\000\000\000\000\000\000\000\001\006\200\000\000\027\188\000\000\000\000\000\000\027\194\000\000\000\000\000\000\248\144\000\001\0162\000\000\000\000\000\000\000\000\000\000\027\212\000\000\000\000\000\000\000\000\000\000\027\218\000\000\031\244\000\000 \n\000\000\025\166\000\000\251\238\000\000#\138\000\000\021\252\000\000\000\000\000\000\248\144\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\252\184\000\000#\138\000\000\021\252\000\000\000\000\000\000\019\226\000\000\252R\000\000\255\190\000\000\000\000\000\001\004\014\000\000\000\000\000\000\028\014\000\000\031\244\000\000 \n\000\000\248\144\000\000\000\000\000\000\020N\000\000\000\000\000\000\000\000\000\000\235\214\000\000\011x\000\000\000\000\000\000\000\000\000\000!\172\000\000\000\000\000\000\216\210\000\000\020\212\000\000\000\000\000\000\133\252\000\000\020\230\000\000\000\000\000\000\000\000\000\000\028d\000\000\243\n\000\000\000\000\000\000p\254\000\000\000\000\000\000\028<\000\000\000\000\000\000\019\186\000\000\216\210\000\000\020\228\000\000\028\018\000\000\216\210\000\000\199&\000\000\000\000\000\000\174p\000\000\200\016\000\000|\004\000\001\011.\000\000\021\146\000\000\011\136\000\000\021\252\000\000\174\236\000\000\000\000\000\000\000\000\000\000\028@\000\000\185H\000\000\000\000\000\000\000\000\000\000\027\206\000\000\000\000\000\000\020\144\000\000\216\210\000\000\025\002\000\000\028(\000\000\216\210\000\000\200\250\000\000\000\000\000\000\174p\000\000\201\228\000\000\028*\000\000\216\210\000\000\202\206\000\000\000\000\000\000\174p\000\000\203\184\000\000\182\246\000\001\007\158\000\000\020\194\000\000\216\210\000\000\026F\000\000\028.\000\000\216\210\000\000\204\162\000\000\000\000\000\000\174p\000\000\205\140\000\000\028:\000\000\216\210\000\000\206v\000\000\000\000\000\000\174p\000\000\207`\000\000\000=\000\000\028h\000\000\000\000\000\000\000\000\000\001\002\b\000\000\000\000\000\000\000\000\000\000\255\130\000\000\000\000\000\001\004\014\000\000\000\000\000\000\028^\000\000\031\244\000\000\"\006\000\000\248\206\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\027:\000\000\252R\000\001\007r\000\000\255\130\000\000\000\000\000\001\004\014\000\000\000\000\000\000\028b\000\000\031\244\000\000\"\006\000\000\248\206\000\000\000\000\000\000\023\234\000\000\000\000\000\000\000\000\000\000\016\020\000\000\000\000\000\000\248\144\000\000\000\000\000\000\028\142\000\000\000\000\000\000\000\000\000\000\027\224\000\000\000\000\000\000\027\250\000\000\000\000\000\000\028\012\000\000\000\000\000\000\000\000\000\000\131L\000\000\028\014\000\000\000\000\000\000\000\000\000\000#\018\000\000\217L\000\000\028\178\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0198\000\000\025\012\000\000\230.\000\000\028\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\028\030\000\000\000\000\000\000#\138\000\000\000\000\000\000\028$\000\000\000\000\000\000\216\210\000\000\000\000\000\000\002\170\000\000\000\000\000\000\000\000\000\000\028*\000\000\000\000\000\000\000\000\000\000\005\240\000\000\000\000\000\000\020\250\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\190\000\000\000\000\000\000\028\n\000\000\000\000\000\000\0060\000\000\000\000\000\000rh\000\000\000\000\000\000\004\230\000\000\000\000\000\000\r\226\000\000\000\000\000\000\0280\000\000\000\000\000\000\175\024\000\000\025D\000\000\000\000\000\000\000\000\000\000\025L\000\000\028B\000\000\000\000\000\000\000\000\000\000\028<\000\000\027d\000\000t\212\000\000\006F\000\001\002\136\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000~\022\000\000\006F\000\001\003\b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\nT\000\000\000\000\000\000\000\000\000\000\028\254\000\000\000\000\000\000\181\022\000\000\000\000\000\000\023\020\000\000\029\000\000\000\000\000\000\000\029&\000\000\000\000\000\000u\154\000\000u\154\000\000\180*\000\000\180*\000\000\000\000\000\000\000\000\000\000\179>\000\000\180*\000\000\000\000\000\000\000\000\000\000\000\000\000\000\179>\000\000\180*\000\000\028\130\000\000\000\000\000\000\028\144\000\000\000\000"), (16, "\004\017\004\017\000\006\004\017\001.\004\017\003b\003f\003j\004\017\003n\003\014\004\017\023z\004\017\003\154\003z\004\017\006\"\004\017\004\017\004\017\0079\004\017\004\017\004\017\001\238\003\158\003\162\001n\003~\004\017\0042\0046\014\134\004\017\001v\004\017\004V\003\166\003\130\006*\004Z\005\153\004\017\004\017\004\134\004\138\004\017\004\142\004\154\004\166\004\170\004\178\t~\001j\004\017\004\017\003Z\004q\023~\004\162\n\222\004\017\004\017\004\017\n\226\n\230\n\242\011\006\019\194\007\138\004\017\004\017\004\017\004\017\004\017\004\017\004\017\004\017\004\017\011\130\004\017\007\150\007\154\007\237\004\017\000\242\004\017\004\017\027\130\b\185\011\142\011\166\r\026\007\166\007\170\004\017\r.\004\017\004\017\b\133\004\017\004\017\004\017\004\017\007\237\r\146\019\246\004\017\r\158\004\017\004\017\007i\004\017\004\017\004\017\004\017\004\017\004\017\004\017\007\174\n\250\004\017\004\017\004\017\011\018\005:\r2\t\198\004\017\004\017\004\017\004\017\016I\016I\005\153\016I\016}\016I\001z\005\153\016I\016I\bF\016I\016I\016I\016I\0256\016I\016I\016}\016I\016I\016I\000\242\016I\016I\016I\016I\005\153\016I\019\198\016I\016I\016I\016I\016I\016I\016I\016I\012\250\nB\016I\012\218\016I\007\014\016I\016I\016I\016I\016I\r\014\016I\001\134\016I\027\206\016I\004\174\016I\016I\016I\000\242\001\186\016I\016I\016I\016I\016I\016I\016I\016I\000\242\016I\016I\016I\016I\016I\016I\016I\016I\016I\016I\016I\001\190\016I\016I\016I\016I\016I\b\149\016I\016I\001j\004q\027\214\005\153\016I\016I\016I\016I\n\193\016I\016I\007E\016I\016I\016I\016I\016I\b\149\016I\016I\025:\016I\016I\027\250\016I\016I\016I\016I\016I\016I\016I\016I\016I\016I\016I\016I\016I\016I\015\241\005\153\016I\016I\016I\016I\002\005\002\005\002\005\002\005\028\002\002\005\000\242\n\234\002\005\002\005\002\005\002\005\002\005\002\005\002\005\002\005\002\005\002\005\002\005\002\005\002\005\002\005\002\005\002\005\002\005\002\005\002\005\t\253\002\005\001\150\002\005\002\005\002\005\002\005\002\005\002\005\002\005\002\005\002\005\002\146\002\005\b\149\002\005\022\134\002\005\002\005\002\005\002\005\002\005\002\005\002\005\015\237\002\005\n\238\002\005\n\193\002\005\002\005\002\005\002\170\002\005\002\005\002\005\002\005\002\005\002\005\002\005\002\005\002\005\007f\002\005\002\005\002\005\002\005\002\005\002\005\002\005\002\005\002\005\002\005\002\005\002\005\002\005\002\005\002\005\002\005\002\005\015\241\002\005\002\005\003\"\001\006\002\154\001\194\002\005\002\005\002\005\002\005\002\005\002\005\002\005\002\005\002\005\002\005\002\005\002\005\002\005\022:\0112\002\005\007\238\002\005\002\005\005\178\002\005\002\005\002\005\002\005\002\005\002\005\002\005\002\005\002\005\002\005\002\005\002\005\002\005\002\005\003\174\002\005\002\005\002\005\002\005\002\005\012\177\012\177\005\186\012\177\000\242\012\177\003\178\003\182\012\177\012\177\015\237\012\177\012\177\012\177\012\177\002\182\012\177\012\177\003\186\012\177\012\177\012\177 \186\012\177\012\177\012\177\012\177\004\210\012\177\016\r\012\177\012\177\012\177\012\177\012\177\012\177\012\177\012\177\007\245\005:\012\177$\243\012\177 \190\012\177\012\177\012\177\012\177\012\177\016\r\012\177\004\214\012\177\023b\012\177\002\134\012\177\012\177\012\177\007\245\005\210\012\177\012\177\012\177\012\177\012\177\012\177\012\177\012\177\002\138\012\177\012\177\012\177\012\177\012\177\012\177\012\177\012\177\012\177\012\177\012\177\001\202\012\177\012\177\012\177\012\177\012\177\000\242\012\177\012\177\002\218\005\153\005\153\001\138\012\177\012\177\012\177\012\177\001j\012\177\012\177\004q\012\177\012\177\012\177\012\177\rR\007\137\r\214\012\177\002\226\012\177\012\177\006\254\012\177\012\177\012\177\012\177\012\177\012\177\012\177\012\177\012\177\012\177\012\177\012\177\012\177\012\177\005\153\012\177\012\177\012\177\012\177\012\177\004\201\004\201\012\002\004\201\0126\004\201\005\178 \194\004\201\004\201\nN\004\201\004\201\004\201\004\201\000\242\004\201\004\201\nV\004\201\004\201\004\201\024\226\004\201\004\201\004\201\004\201\nZ\004\201\005\186\004\201\004\201\004\201\004\201\004\201\004\201\004\201\004\201\005\153\014\030\004\201\t\154\004\201\024\230\004\201\004\201\004\201\004\201\004\201\t\198\004\201\000\242\004\201\t6\004\201\tf\004\201\004\201\004\201\031\018\007\137\004\201\004\201\004\201\004\201\004\201\004\201\004\201\004\201\n\142\004\201\004\201\004\201\004\201\004\201\004\201\004\201\004\201\004\201\004\201\004\201\007\002\rB\004\201\004\201\rJ\r\206\006n\004\201\004\201\016v\023\"\t\198\nB\004\201\004\201\004\201\004\201\031\026\004\201\004\201\002\198\004\201\004\201\004\201\004\201\rR\0071\r\214\004\201\023*\004\201\004\201\000\242\004\201\004\201\004\201\004\201\004\201\004\201\004\201\004\201\004\201\004\201\004\201\004\201\004\201\004\201\006V\004\201\004\201\004\201\004\201\004\201\004\185\004\185\nB\004\185\r\146\004\185\b\218\r\158\004\185\004\185\011\182\004\185\004\185\004\185\004\185\t\022\004\185\004\185\r\226\004\185\004\185\004\185\000\242\004\185\004\185\004\185\004\185\002\006\004\185\b\222\004\185\004\185\004\185\004\185\004\185\004\185\004\185\004\185\000\242\r\230\004\185\t\154\004\185\005\n\004\185\004\185\004\185\004\185\004\185\t\198\004\185\005\142\004\185\011\186\004\185\011\242\004\185\004\185\004\185%C\002\202\004\185\004\185\004\185\004\185\004\185\004\185\004\185\004\185\011b\004\185\004\185\004\185\004\185\004\185\004\185\004\185\004\185\004\185\004\185\004\185\002\n\rB\004\185\004\185\rJ\r\206\006Z\004\185\004\185\005\014\027>\002\"\nB\004\185\004\185\004\185\004\185\001\234\004\185\004\185\005&\004\185\004\185\004\185\004\185\rR\005\022\r\214\004\185\027J\004\185\004\185\000\242\004\185\004\185\004\185\004\185\004\185\004\185\004\185\004\185\004\185\004\185\004\185\004\185\004\185\004\185\007\253\004\185\004\185\004\185\004\185\004\185\012\025\012\025\005\n\012\025\t\026\012\025\005\178\001\246\012\025\012\025\005\162\012\025\012\025\012\025\012\025\007\253\012\025\012\025\002:\012\025\012\025\012\025\t\214\012\025\012\025\012\025\012\025\005\153\012\025\005\186\012\025\012\025\012\025\012\025\012\025\012\025\012\025\012\025\n\162\t\222\012\025\t&\012\025\004\"\012\025\012\025\012\025\012\025\012\025\001\154\012\025\001\250\012\025\000\242\012\025\018\026\012\025\012\025\012\025\005\177\005\026\012\025\012\025\012\025\012\025\012\025\012\025\012\025\012\025\000\242\012\025\012\025\012\025\012\025\012\025\012\025\012\025\012\025\012\025\012\025\012\025\006.\012\025\012\025\012\025\012\025\012\025\006\178\012\025\012\025%3\003\210\003\214\005\153\012\025\012\025\012\025\012\025\b\177\012\025\012\025\006>\012\025\012\025\012\025\012\025\012\025\011V\012\025\012\025\005\177\012\025\012\025\0036\012\025\012\025\012\025\012\025\012\025\012\025\012\025\012\025\012\025\012\025\012\025\012\025\012\025\012\025\n\233\005\153\012\025\012\025\012\025\012\025\012)\012)\007\030\012)\000\242\012)\005\153\020\158\012)\012)\005\153\012)\012)\012)\012)\001\234\012)\012)\003\234\012)\012)\012)\t*\012)\012)\012)\012)\021\214\012)\006\001\012)\012)\012)\012)\012)\012)\012)\012)\000\242\t\250\012)\004\157\012)\tz\012)\012)\012)\012)\012)\b\250\012)\000\242\012)\006\001\012)\018B\012)\012)\012)\005\002\023z\012)\012)\012)\012)\012)\012)\012)\012)\0079\012)\012)\012)\012)\012)\012)\012)\012)\012)\012)\012)\020\158\012)\012)\012)\012)\012)\n\233\012)\012)\003j\n\n\n\229\005\146\012)\012)\012)\012)\020\182\012)\012)\021\238\012)\012)\012)\012)\012)\023~\012)\012)\003\238\012)\012)\020f\012)\012)\012)\012)\012)\012)\012)\012)\012)\012)\012)\012)\012)\012)\n\130\t\198\012)\012)\012)\012)\012!\012!\000\242\012!\tn\012!\024b\020\158\012!\012!\004n\012!\012!\012!\012!\n\134\012!\012!\t\202\012!\012!\012!\b\146\012!\012!\012!\012!\022\170\012!\020n\012!\012!\012!\012!\012!\012!\012!\012!\020\182\nB\012!\003\"\012!\b\150\012!\012!\012!\012!\012!\t\198\012!\n\229\012!\n\006\012!\018j\012!\012!\012!\000\242\021n\012!\012!\012!\012!\012!\012!\012!\012!\024\218\012!\012!\012!\012!\012!\012!\012!\012!\012!\012!\012!\020\158\012!\012!\012!\012!\012!\000\242\012!\012!\005\030\030\242\007:\nB\012!\012!\012!\012!\020\182\012!\012!\022\194\012!\012!\012!\012!\012!\r\146\012!\012!\r\158\012!\012!\000\242\012!\012!\012!\012!\012!\012!\012!\012!\012!\012!\012!\012!\012!\012!\n\190\t\198\012!\012!\012!\012!\012\r\012\r\011-\012\r\bf\012\r\005\178\001\234\012\r\012\r\n\018\012\r\012\r\012\r\012\r\n\194\012\r\012\r\000\242\012\r\012\r\012\r\022~\012\r\012\r\012\r\012\r\n:\012\r\005\186\012\r\012\r\012\r\012\r\012\r\012\r\012\r\012\r\020\182\nB\012\r\021r\012\r\003\222\012\r\012\r\012\r\012\r\012\r\t\198\012\r\002\242\012\r\011~\012\r\018\146\012\r\012\r\012\r\000\242\011\r\012\r\012\r\012\r\012\r\012\r\012\r\012\r\012\r\025&\012\r\012\r\012\r\012\r\012\r\012\r\012\r\012\r\012\r\012\r\012\r\002E\012\r\012\r\012\r\012\r\012\r\tF\012\r\012\r\011-\005\190\001\234\nB\012\r\012\r\012\r\012\r\n\162\012\r\012\r\021\166\012\r\012\r\012\r\012\r\012\r\000\n\012\r\012\r\004r\012\r\012\r\000\242\012\r\012\r\012\r\012\r\012\r\012\r\012\r\012\r\012\r\012\r\012\r\012\r\012\r\012\r\n\218\t\198\012\r\012\r\012\r\012\r\012\021\012\021\004\018\012\021\002E\012\021\005\178\003\226\012\021\012\021\021\250\012\021\012\021\012\021\012\021\025n\012\021\012\021\026~\012\021\012\021\012\021\031:\012\021\012\021\012\021\012\021\005\198\012\021\005\186\012\021\012\021\012\021\012\021\012\021\012\021\012\021\012\021\r\146\nB\012\021\r\158\012\021\005\n\012\021\012\021\012\021\012\021\012\021\t\198\012\021\012\002\012\021\012\022\012\021\018\182\012\021\012\021\012\021\000\242\017\198\012\021\012\021\012\021\012\021\012\021\012\021\012\021\012\021\025B\012\021\012\021\012\021\012\021\012\021\012\021\012\021\012\021\012\021\012\021\012\021\017\202\012\021\012\021\012\021\012\021\012\021\011\202\012\021\012\021\021\170\022R\003j\nB\012\021\012\021\012\021\012\021\021\254\012\021\012\021\n\"\012\021\012\021\012\021\012\021\012\021\005\206\012\021\012\021\025r\012\021\012\021\000\242\012\021\012\021\012\021\012\021\012\021\012\021\012\021\012\021\012\021\012\021\012\021\012\021\012\021\012\021\"\154\t\198\012\021\012\021\012\021\012\021\012\017\012\017\004f\012\017\r\138\012\017\r\186\004r\012\017\012\017\022\142\012\017\012\017\012\017\012\017\"\158\012\017\012\017\012\146\012\017\012\017\012\017#\022\012\017\012\017\012\017\012\017\011\017\012\017\bm\012\017\012\017\012\017\012\017\012\017\012\017\012\017\012\017\007J\nB\012\017\012\154\012\017\005\030\012\017\012\017\012\017\012\017\012\017\t\002\012\017\004v\012\017\bm\012\017\018\218\012\017\012\017\012\017\000\242\022V\012\017\012\017\012\017\012\017\012\017\012\017\012\017\012\017\000\242\012\017\012\017\012\017\012\017\012\017\012\017\012\017\012\017\012\017\012\017\012\017\020\158\012\017\012\017\012\017\012\017\012\017\005*\012\017\012\017\017\186\006-\004n\011\017\012\017\012\017\012\017\012\017\022\146\012\017\012\017\007R\012\017\012\017\012\017\012\017\012\017\005\226\012\017\012\017\0062\012\017\012\017\005\178\012\017\012\017\012\017\012\017\012\017\012\017\012\017\012\017\012\017\012\017\012\017\012\017\012\017\012\017\017\174\011\017\012\017\012\017\012\017\012\017\012\029\012\029\005\186\012\029\000\242\012\029\007\002\005\222\012\029\012\029\t\186\012\029\012\029\012\029\012\029\t\154\012\029\012\029\017\178\012\029\012\029\012\029\n\150\012\029\012\029\012\029\012\029\t\154\012\029\b\169\012\029\012\029\012\029\012\029\012\029\012\029\012\029\012\029\020\182\016\158\012\029\b\170\012\029\006v\012\029\012\029\012\029\012\029\012\029\b\169\012\029\000\242\012\029\b\169\012\029\019\006\012\029\012\029\012\029\021Z\012J\012\029\012\029\012\029\012\029\012\029\012\029\012\029\012\029\007\002\012\029\012\029\012\029\012\029\012\029\012\029\012\029\012\029\012\029\012\029\012\029\020\158\012\029\012\029\012\029\012\029\012\029\000\242\012\029\012\029\018\246\001\006\004n\001\194\012\029\012\029\012\029\012\029\027\210\012\029\012\029\027\218\012\029\012\029\012\029\012\029\012\029\007M\012\029\012\029\024\162\012\029\012\029\005\178\012\029\012\029\012\029\012\029\012\029\012\029\012\029\012\029\012\029\012\029\012\029\012\029\012\029\012\029\017\242\007z\012\029\012\029\012\029\012\029\012-\012-\005\186\012-\000\242\012-\000\242\006\186\012-\012-\006:\012-\012-\012-\012-\007I\012-\012-\017\246\012-\012-\012-\006F\012-\012-\012-\012-\006N\012-\b\149\012-\012-\012-\012-\012-\012-\012-\012-\020\182\016\178\012-\016\242\012-\002J\012-\012-\012-\012-\012-\b\149\012-\000\242\012-\b\149\012-\019*\012-\012-\012-\021~\012v\012-\012-\012-\012-\012-\012-\012-\012-\018\018\012-\012-\012-\012-\012-\012-\012-\012-\012-\012-\012-\020\158\012-\012-\012-\012-\012-\001\250\012-\012-\018\022\024\166\001\234\t\202\012-\012-\012-\012-\005\246\012-\012-\022\230\012-\012-\012-\012-\012-\t\209\012-\012- f\012-\012-\005\178\012-\012-\012-\012-\012-\012-\012-\012-\012-\012-\012-\012-\012-\012-\n\006\n\238\012-\012-\012-\012-\012%\012%\005\186\012%\000\242\012%\005\178\n&\012%\012%\027\150\012%\012%\012%\012%\000\242\012%\012%\017\158\012%\012%\012%\r\226\012%\012%\012%\012%\016v\012%\005\186\012%\012%\012%\012%\012%\012%\012%\012%\020\182\017b\012%\017\162\012%\018\142\012%\012%\012%\012%\012%\t\198\012%\001\250\012%\028:\012%\019N\012%\012%\012%\024\150\012\182\012%\012%\012%\012%\012%\012%\012%\012%\025^\012%\012%\012%\012%\012%\012%\012%\012%\012%\012%\012%\nV\012%\012%\012%\012%\012%\016\170\012%\012%\022\234\028\162\012R\nB\012%\012%\012%\012%\n\162\012%\012%\027\154\012%\012%\012%\012%\012%\006z\012%\012%\006\146\012%\012%\000\242\012%\012%\012%\012%\012%\012%\012%\012%\012%\012%\012%\012%\012%\012%\023\n\t\198\012%\012%\012%\012%\012\153\012\153\000\242\012\153\017\226\012\153\005\178\012~\012\153\012\153\006\190\012\153\012\153\012\153\012\153\025z\012\153\012\153\018:\012\153\012\153\012\153\017\198\012\153\012\153\012\153\012\153\017\230\012\153\005\186\012\153\012\153\012\153\012\153\012\153\012\153\012\153\012\153\028F\nB\012\153\018>\012\153\019\002\012\153\012\153\012\153\012\153\012\153\t\198\012\153\000\242\012\153\020\158\012\153\019j\012\153\012\153\012\153\000\242\028\166\012\153\012\153\012\153\012\153\012\153\012\153\012\153\012\153$J\012\153\012\153\012\153\012\153\012\153\012\153\012\153\012\153\012\153\012\153\012\153\020\158\012\153\012\153\012\153\012\153\012\153\017Z\012\153\012\153\026\250\006\214\012\190\nB\012\153\012\153\012\153\012\153\001\234\012\153\012\153\028\006\012\153\012\153\012\153\012\153\012\153\007B\012\153\012\153\bR\012\153\012\153\000\242\012\153\012\153\012\153\012\153\012\153\012\153\012\153\012\153\012\153\012\153\012\153\012\153\012\153\012\153\018b\028N\012\153\012\153\012\153\012\153\004\181\004\181\000\242\004\181\017\158\004\181\005\178\bj\004\181\004\181\020\182\004\181\004\181\004\181\004\181\n\001\004\181\004\181\018f\004\181\004\181\004\181\018\018\004\181\004\181\004\181\004\181\018\178\004\181\005\186\004\181\004\181\004\181\004\181\004\181\004\181\004\181\004\181\020\182\021\154\004\181\b\190\004\181\019\158\004\181\004\181\004\181\004\181\004\181\004\173\004\181\023\162\004\181\020\158\004\181\004\145\004\181\004\181\004\181\024\178\020\130\004\181\004\181\004\181\004\181\004\181\004\181\004\181\004\181\017\226\004\181\004\181\004\181\004\181\004\181\004\181\004\181\004\181\004\181\004\181\004\181\020\134\rB\004\181\004\181\rJ\r\206\023\146\004\181\004\181!\n\t:\019&\000\242\004\181\004\181\004\181\004\181\n\189\004\181\004\181%#\004\181\004\181\004\181\004\181\rR\nV\r\214\004\181\028r\004\181\004\181\005\178\004\181\004\181\004\181\004\181\004\181\004\181\004\181\004\181\004\181\004\181\004\181\004\181\004\181\004\181\004\173\004\181\004\181\004\181\004\181\004\181\002q\002q\005\186\002q\nV\002q\000\242\000\242\003j\002q\020\182\003\014\002q\r\134\002q\005\153\003z\002q\018:\002q\002q\002q\005\153\002q\002q\002q\001\238\007Z\r\190\011E\003~\002q\002q\002q\002q\002q\r\198\002q\005\153\021\182\003\130\019\170\004Z\031\030\002q\002q\002q\002q\002q\022\030\004\154\000\242\001\194\011E\002q\n\189\002q\002q\003Z!\014\023\250\004\162\n\222\002q\002q\002q\n\226\n\230\n\242\021\222\017\254\007\138\002q\002q\002q\002q\002q\002q\002q\002q\002q\030\230\rB\007\150\007\154\rJ\r\206\022\178\002q\002q\0071\0075\021\226\007^\002q\007\166\007\170\002q\031\022\002q\002q\tZ\002q\002q\002q\002q\018\006\016\133\018\130\002q\022\182\002q\002q\005\178\002q\002q\002q\002q\002q\002q\002q\007\174\n\250\002q\002q\002q\011\018\005:\017\174\007\002\002q\002q\002q\002q\012\129\012\129\005\186\012\129\bu\012\129\002\246\027\190\003j\012\129\tb\003\014\012\129\012\129\012\129\017\242\003z\012\129\018\214\012\129\012\129\012\129\t\166\012\129\012\129\012\129\001\238\002a\012\129\005\153\003~\012\129\012\129\012\129\012\129\012\129\012\129\012\129\005\153\019J\003\130\027\138\004Z\031\170\012\129\012\129\012\129\012\129\012\129\004\169\004\154\000\242\001\194\020\158\012\129\000\242\012\129\012\129\003Z\011\226\026:\004\162\n\222\012\129\012\129\012\129\n\226\n\230\n\242\027\254\012\129\007\138\012\129\012\129\012\129\012\129\012\129\012\129\012\129\012\129\012\129 J\012\129\007\150\007\154\012\129\012\129\031Z\012\129\012\129\028\142\t\249\n\005\000\242\012\129\007\166\007\170\012\129\005\n\012\129\012\129\000\242\012\129\012\129\012\129\012\129\012\129\011\238\012\129\012\129\t\245\012\129\012\129\031\158\012\129\012\129\012\129\012\129\012\129\012\129\012\129\007\174\n\250\012\129\012\129\012\129\011\018\005:\004\169\031\162\012\129\012\129\012\129\012\129\012}\012}\031z\012}\031\166\012}\005\178\001\234\003j\012}\020\182\003\014\012}\012}\012} >\003z\012}\016\145\012}\012}\012}$\170\012}\012}\012}\001\238\t\245\012}\005\186\003~\012}\012}\012}\012}\012}\012}\012}\028N\022\218\003\130 \158\004Z\nV\012}\012}\012}\012}\012}\005U\004\154\"^\001\194\"\138\012}\000\242\012}\012}\003Z\012\006 \202\004\162\n\222\012}\012}\012}\n\226\n\230\n\242\nV\012}\007\138\012}\012}\012}\012}\012}\012}\012}\012}\012} \206\012}\007\150\007\154\012}\012}\"\230\012}\012}\031\218\012\n\012\018\000\242\012}\007\166\007\170\012}\012\"\012}\012}\012.\012}\012}\012}\012}\012}\012^\012}\012}\012\158\012}\012}\005\178\012}\012}\012}\012}\012}\012}\012}\007\174\n\250\012}\012}\012}\011\018\005:\005U\"\190\012}\012}\012}\012}\002\205\002\205\005\186\002\205\005\178\002\205\012\166\"\178\003j\002\205\007]\003\014\002\205\r\134\002\205\"\238\003z\002\205\016\005\002\205\002\205\002\205\"\142\002\205\002\205\002\205\001\238\005\186\r\190\018b\003~\002\205\002\205\002\205\002\205\002\205\r\198\002\205\016\005\007]\003\130\007]\004Z\012\174\002\205\002\205\002\205\002\205\002\205\005Q\004\154\000\242\001\194\019\182\002\205\005\n\002\205\002\205\003Z\000\242#B\004\162\n\222\002\205\002\205\002\205\n\226\n\230\n\242\012\230\017\254\007\138\002\205\002\205\002\205\002\205\002\205\002\205\002\205\002\205\002\205\rF\002\205\007\150\007\154#\134\002\205\005\153\002\205\002\205\005\153\005\153\r\142\000\242\002\205\007\166\007\170\002\205\"\194\002\205\002\205\005\153\002\205\002\205\002\205\002\205\005\153%\019\012\026\002\205\005\153\002\205\002\205\005\026\002\205\002\205\002\205\002\205\002\205\002\205\002\205\007\174\n\250\002\205\002\205\002\205\011\018\005:\005Q\005\153\002\205\002\205\002\205\002\205\005\153\005\153\005\153\002j\005\153\005\153\005\153\005\153\005\153\005\153\005\153\005\153\000\242\005\153\000\242\005\153\005\153\000\242\005\153\005\153\005\153\005\153\005\153\005\153\005\153\005\153\005\153\005\153\005\153\005\153\005\153\r\182\005\153\005\153\b!\r\194\005\153\005\153\005\153\r\210\005\153\005\153\005\153\005\153\005\153\016\150\005\153\005\153\005\153\005\153\005\153\005\153\005\153\005\153\005\153\b!\005\153\005\153\005\153\005\153\005\153\005\153\005\153\005\153\005\153\000\242\005\153\005\153\005\153\005\153\005\153\005\153\005\153\005\153\016\190\005\153\005\153\016\214\030\222\005\153\005\153\005\153\005\153\005\153\005\153\005\153\005\153\005\153\001f\005\153\005\153\005\153\005\153\005\153\005\153\005\153\005\153\005\153\005\153\005\153\000\242\005\153\005\153\005\153\001~\003\154\001\142\005\153\001.\003\210\003\214\017n\005\153\019\210\005\153\002E\002E\003\158\003\162\005\153\005\153\005\153\005\153\t\158\001\185\005\153\005\153\005\153\005\153\003\166\000\197\005\153\000\197\000\242\000\197\000\197\000\197\000\197\000\197\000\197\000\197\000\197\000\n\000\197\001\185\000\197\000\197\000\242\000\197\000\197\019\218\022.\000\197\000\197\019\234\000\197\000\197\000\197\000\197\005\177\000\197 \006\000\197\000\197\020\n\015\205\000\197\000\197\000\197\n\174\000\197\000\197\000\197\002E\000\197\0222\000\197\000\197\000\197\000\197\000\197\000\197\000\197\000\197\000\197\015\205\015\205\000\197\000\197\015\205\n\178\000\197\000\197\000\197\031R\000\197\000\197\000\197\000\197\000\197\000\197\000\197\000\197\000\197\004\"\023>\000\197\023f\028.\000\197\004\194\000\197\000\197\000\197\000\197\001\185\000\197\002E\023\134\n\162\0111\000\197\000\197\000\197\000\197\000\197\000\197\000\197\000\197\000\197\000\242\004\165\023\138\000\197\000\242\012\250\001\185\020\158\000\226\002E\002E\025\154\000\197\000\n\001\185\006\229\r\014$>\017.\000\197\000\197\000\197\000\197\022^\002E\000\197\000\197\000\197\000\197\002\177\002\177\002E\002\177\023\178\002\177\015\205\000\n\003j\002\177\023\206\003\014\002\177\n\234\002\177\002E\003z\002\177\022b\002\177\002\177\002\177\r\170\002\177\002\177\002\177\001\238\024\002\024\018\n\182\003~\002\177\002\177\002\177\002\177\002\177\006\229\002\177\002E\001\006\003\130\001\194\004Z\024&\002\177\002\177\002\177\002\177\002\177\0111\004\154\004\165\n\246\026\246\002\177\006\229\002\177\002\177\003Z\n\189\024R\004\162\n\222\002\177\002\177\002\177\n\226\n\230\n\242\020\182\t>\007\138\002\177\002\177\002\177\002\177\002\177\002\177\002\177\002\177\002\177\024^\rB\007\150\007\154\rJ\r\206\002E\002\177\002\177\002E$B\003\210\003\214\002\177\007\166\007\170\002\177\022\246\002\177\002\177\000\242\002\177\002\177\002\177\002\177\rR\025\194\r\214\002\177\024\238\002\177\002\177\000\n\002\177\002\177\002\177\002\177\002\177\002\177\002\177\007\174\n\250\002\177\002\177\002\177\011\018\005:\024\246\002E\002\177\002\177\002\177\002\177\002\217\002\217\0262\002\217\026F\002\217\026J\n&\004r\002\217\002E\002E\002\217\b\186\002\217#J\n\189\002\217\011I\002\217\002\217\002\217\000\n\002\217\002\217\002\217\003j\011\017\003\210\026\242\027\014\002\217\002\217\002\217\002\217\002\217\027&\002\217\002E\003j\002E\002E\011I\027\006\002\217\002\217\002\217\002\217\002\217$\174\0116\001\250\001\194\002E\002\217\027\166\002\217\002\217\027\170\000\242\027\226\020\138\021\130\002\217\002\217\002\217\021\186\021\242\022\002\027\230\004f\b\173\002\217\002\217\002\217\002\217\002\217\002\217\002\217\002\217\002\217\001\006\rB\001\194\023Z\rJ\r\206\003\014\002\217\002\217\011\029\b\173\000\242\020\158\002\217\b\173\028\014\002\217\028\018\002\217\002\217\028*\002\217\002\217\002\217\002\217\rR\020\234\r\214\002\217\rj\002\217\002\217\011\029\002\217\002\217\002\217\002\217\002\217\002\217\002\217\028\214\rV\002\217\002\217\002\217\023^\021\002\028\218%_\002\217\002\217\002\217\002\217\002\213\002\213\000\242\002\213\019\162\002\213\019\174\bz\023j\002\213\030Z\b\030\002\213\028\254\002\213\001\234\001\197\002\213\b\154\002\213\002\213\002\213\b\166\002\213\002\213\002\213\002E\002E\026\206\029\002\029\018\002\213\002\213\002\213\002\213\002\213\001\197\002\213\007\170\029\"\029.\002E\023r#\142\002\213\002\213\002\213\002\213\002\213\030f\020\182\bz\b\137\000\n\002\213\b\030\002\213\002\213\029b\005\002\029f\029\202\b\154\002\213\002\213\002\213\b\166\030\026\004-\002E\012\250\011\029\002\213\002\213\002\213\002\213\002\213\002\213\002\213\002\213\002\213\r\014\rB\004-\002E\rJ\r\206\000\242\002\213\002\213\029\250\030\002\030\018\005n\002\213\000\n\005M\002\213\030b\002\213\002\213\030\130\002\213\002\213\002\213\002\213\rR\001\197\r\214\002\213\030\194\002\213\002\213\030\238\002\213\002\213\002\213\002\213\002\213\002\213\002\213\015\213\023\230\002\213\002\213\002\213\002E\012\250\001\197\005\153\002\213\002\213\002\213\002\213\002\181\002\181\001\197\002\181\r\014\002\181\000\242\015\213\015\213\002\181\001\197\015\213\002\181\030\254\002\181\031&\001\221\002\181\001\234\002\181\002\181\002\181\017\190\002\181\002\181\002\181\031*\t\198\0316\031F\026\n\002\181\002\181\002\181\002\181\002\181\001\221\002\181\017\218\004r\017\234\005M\031b\031r\002\181\002\181\002\181\002\181\002\181\031\134\t\213\018\n\000\242\026\166\002\181\bz\002\181\002\181\031\178\b\030\011\194\031\182$\014\002\181\002\181\002\181\b\154\0182\031\194\018Z\b\166\nB\002\181\002\181\002\181\002\181\002\181\002\181\002\181\002\181\002\181\001\006\rB\001\194\031\210\rJ\r\206\015\213\002\181\002\181\031\230\000\242\000\242 \218\002\181!2!Z\002\181!\226\002\181\002\181!\234\002\181\002\181\002\181\002\181\rR\001\221\r\214\002\181\"\002\002\181\002\181 2\002\181\002\181\002\181\002\181\002\181\002\181\002\181\"\014\003j\002\181\002\181\002\181\0232\012\250\001\221\003\246\002\181\002\181\002\181\002\181\002i\002i\001\221\002i\r\014\002i\001\238\bz\004r\002i\001\221\b\030\002i\"v\002i\001\234\001\213\002i\b\154\002i\002i\002i\b\166\002i\002i\002i\"\202#*\"\222\"\242\004J\002i\002i\002i\002i\002i\001\213\002i\003Z#:#N#f\018\250#\146\002i\002i\002i\002i\002i#\170\0116#\198\022>#\238\002i$*\002i\002i\019\030\005\002\019B\020\138\021\130\002i\002i\002i\021\186\021\242\022\002$Z$f\t\146\002i\002i\002i\002i\002i\002i\002i\002i\002i$n\002i$w$\135$\154\002i\023Z\002i\002i\003\014$\182$\211\005n\002i$\227\0061\002i$\255\002i\002i%S\002i\002i\002i\002i\016\t\001\213\030V\002i%o\002i\002i%z\012\250\002i\002i\002i\002i\002i\002i%\207%\227\002i\002i\r\014\016\t\012\250\001\213\023^\002i\002i\002i\002i\011\001\011\001\001\213\011\001\r\014\011\001\015\209%\235&'\011\001\001\213\023j\011\001\030z\011\001&/\001\205\011\001\000\000\011\001\011\001\011\001\000\000\011\001\011\001\011\001\015\209\015\209\000\000\000\000\015\209\011\001\011\001\011\001\011\001\011\001\001\205\011\001\000\000\000\000\004N\007\170\b\141\003j\011\001\011\001\011\001\011\001\011\001\000\000\003\246\000\000\030\134\000\000\011\001\000\000\011\001\011\001\000\000\000\000\000\000\001\238\b\141\011\001\011\001\011\001\b\141\000\000\000\000\000\000\030\026\000\242\011\001\011\001\011\001\011\001\011\001\011\001\011\001\011\001\011\001\000\000\011\001\000\000\000\000\004J\011\001\000\000\011\001\011\001\000\000\002v\000\000\003Z\011\001\000\000\000\000\011\001\000\000\011\001\011\001\b-\011\001\011\001\011\001\011\001\015\209\001\205\000\000\011\001\000\000\011\001\011\001\000\000\012\250\011\001\011\001\011\001\011\001\011\001\011\001\000\000\b-\011\001\011\001\r\014\t\146\012\250\001\205\000\000\011\001\011\001\011\001\011\001\002\209\002\209\001\205\002\209\r\014\002\209\t\137\000\000\b\141\002\209\001\205\000\000\002\209\000\000\002\209\000\000\000\000\002\209\000\000\002\209\002\209\002\209\000\000\002\209\002\209\002\209\000\000\004\222\000\000\000\000\000\000\002\209\002\209\002\209\002\209\002\209\000\000\002\209\003\174\001\206\000\000\t\137\000\000\000\000\002\209\002\209\002\209\002\209\002\209\000\000\003\178\003\182\012\138\000\000\002\209\t\137\002\209\002\209\000\000\t\137\011v\000\000\003\186\002\209\002\209\002\209\t\137\016\001\004r\000\000\t\137\001\210\002\209\002\209\002\209\002\209\002\209\002\209\002\209\002\209\002\209\000\000\002\209\000\000\001\214\t:\002\209\016\001\002\209\002\209\002b\000\000\000\000\002f\002\209\000\000\000\242\002\209\000\000\002\209\002\209\000\000\002\209\002\209\002\209\002\209\000\000\002r\000\000\002\209\007\242\002\209\002\209\000\000\r\238\002\209\002\209\002\209\002\209\002\209\002\209\004\182\004\186\002\209\002\209\002\209\b\206\000\000\004\198\000\000\002\209\002\209\002\209\002\209\n\241\n\241\002~\n\241\000\000\n\241\rU\000\000\000\000\n\241\000\000\bz\n\241\000\000\n\241\b\030\012\142\n\241\000\000\n\241\n\241\n\241\b\154\n\241\n\241\n\241\b\166\000\000\000\000\000\000\000\000\n\241\n\241\n\241\n\241\n\241\000\000\n\241\b\157\000\000\024\202\rU\000\000\006\005\n\241\n\241\n\241\n\241\n\241\000\000\b\254\003j\002\130\000\000\n\241\rU\n\241\n\241\b\157\rU\016\234\000\000\b\157\n\241\n\241\n\241\rU\006\005\000\000\n\162\rU\b\198\n\241\n\241\n\241\n\241\n\241\n\241\n\241\n\241\n\241\000\000\n\241\000\000\000\242\000\000\n\241\t\245\n\241\n\241\t\245\000\000\b\202\000\000\n\241\004f\000\000\n\241\023Z\n\241\n\241\003\014\n\241\n\241\n\241\n\241\000\000\011\029\031Z\n\241\020\158\n\241\n\241\000\000\012\250\n\241\n\241\n\241\n\241\n\241\n\241\000\000\000\000\n\241\n\241\r\014\b\157\rj\000\000\t\245\n\241\n\241\n\241\n\241\004\r\004\r\000\242\004\r\024\206\004\r\023^\000\000\000\000\004\r\000\000\t\245\004\r\000\000\004\r\000\000\001\177\014.\012\250\004\r\014\130\004\r\023j\004\r\004\r\004\r\000\000\000\000\000\000\r\014\000\000\014\150\014\222\014\246\014\174\015\014\001\177\004\r\000\000\000\000\000\000\t\245\000\000\000\000\004\r\004\r\015&\015>\004\r\000\000\000\000\bz\007\170\000\000\004\r\b\030\015V\004\r\000\000\000\000\000\000\000\000\b\154\004\r\004\r\000\242\b\166\020\182\000\000\000\000\t\245\000\000\004\r\004\r\014F\014\198\015n\015\134\015\182\004\r\004\r\"\022\004\r\000\000\000\000\000\000\004\r\012\250\004\r\015\206\000\000\000\000\000\000\000\000\004\r\000\000\011\029\004\r\r\014\004\r\015\230\000\000\004\r\004\r\004\r\004\r\000\000\001\177\000\000\004\r\000\000\004\r\004\r\000\000\016F\004\r\004\r\016^\015\158\004\r\004\r\003z\000\000\004\r\015\254\004\r\000\000\000\000\001\177\000\000\004\r\004\r\016\022\016.\0031\0031\001\177\0031\007\214\0031\b\145\000\000\000\000\0031\020\190\000\000\0031\000\000\0031\000\000\000\000\0031\007\218\0031\0031\0031\025\018\0031\0031\0031\b\145\000\000\000\000\000\000\b\145\0031\0031\0031\0031\0031\000\000\0031\000\000\000\000\000\000\000\000\007\138\025\022\0031\0031\0031\0031\0031\000\000\000\000\000\000\"\166\000\000\0031\000\000\0031\0031\000\000\000\000\002E\000\000\000\000\0031\0031\0031\007\166\000\000\000\000\000\000\000\000\000\242\0031\0031\0031\0031\0031\0031\0031\0031\0031\000\000\0031\000\000\023Z\000\000\0031\003\014\0031\0031\000\n\000\000\007\174\000\000\0031\000\000\000\242\0031\000\000\0031\0031\000\000\0031\0031\0031\0031\b\145\000\000\002E\0031\000\000\0031\0031\000\000\012\250\0031\0031\0031\0031\0031\0031\002E\002E\0031\0031\r\014\023^\027v\000\000\000\000\0031\0031\0031\0031\003-\003-\012\250\003-\025\026\003-\000\242\025*\023j\003-\000\000\bz\003-\r\014\003-\b\030\"\170\003-\000\n\003-\003-\003-\b\154\003-\003-\003-\b\166\000\000\000\000\000\000\000\000\003-\003-\003-\003-\003-\002E\003-\007\170\000\000\000\000\r*\000\000\000\000\003-\003-\003-\003-\003-\002E\002E\000\000\000\000\000\000\003-\bz\003-\003-\000\000\b\030\000\000\000\000\000\000\003-\003-\003-\b\154\030.\000\000\000\000\b\166\000\000\003-\003-\014F\003-\003-\003-\003-\003-\003-\000\000\003-\000\000\002J\000\000\003-\003\014\003-\003-\000\000\000\000\000\242\000\000\003-\000\000\000\000\003-\000\000\003-\003-\000\000\003-\003-\003-\003-\000\000\000\000\000\000\003-\000\000\003-\003-\000\000\003-\003-\003-\003-\003-\003-\003-\000\000\000\000\003-\003-\003-$\146\016\254\001\250\000\000\003-\003-\003-\003-\003\001\003\001\000\000\003\001\000\000\003\001\000\242\017\006\023j\003\001\003j\017\018\003\001\003\014\003\001\000\000\000\000\003\001\017\030\003\001\003\001\003\001\017*\003\001\003\001\003\001\000\000\003j\000\000\000\000\000\000\003\001\003\001\003\001\003\001\003\001\000\000\003\001\007\170\000\000\000\000\t\129\000\000\000\000\003\001\003\001\003\001\003\001\003\001\000\000\000\000\000\000\026r\000\000\003\001\t\129\003\001\003\001\000\000\b\030\000\000\000\000\000\000\003\001\003\001\003\001\t\129\000\000\023j\r\218\t\129\004f\003\001\003\001\003\001\003\001\003\001\003\001\003\001\003\001\003\001\000\000\003\001\000\000\003j\017\150\003\001\017\166\003\001\003\001\000\000\000\000\t\157\000\000\003\001\000\000\000\000\003\001\007\170\003\001\003\001\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\012\250\003\001\003\001\003\001\003\001\003\001\003\001\000\000\000\000\003\001\003\001\r\014\018\134\t\157\004f\000\000\003\001\003\001\003\001\003\001\002\253\002\253\000\000\002\253\000\000\002\253\000\242\t\157\018\170\002\253\018\206\b\030\002\253\000\000\002\253\000\000\000\000\002\253\t\157\002\253\002\253\002\253\t\157\002\253\002\253\002\253\000\000\000\000\000\000\000\000\000\000\002\253\002\253\002\253\002\253\002\253\000\000\002\253\t\233\000\000\000\000\t\185\t\233\000\000\002\253\002\253\002\253\002\253\002\253\000\000\000\000\000\000\000\000\000\000\002\253\bz\002\253\002\253\000\000\b\030\000\000\000\000\000\000\002\253\002\253\002\253\t\185\000\000\000\000\000\000\t\185\000\000\002\253\002\253\014F\002\253\002\253\002\253\002\253\002\253\002\253\000\000\002\253\t\233\000\000\000\000\002\253\000\000\002\253\002\253\000\000\000\000\t\177\000\000\002\253\000\000\000\000\002\253\000\000\002\253\002\253\000\000\002\253\002\253\002\253\002\253\000\000\t\233\000\000\002\253\000\000\002\253\002\253\000\000\002\253\002\253\002\253\002\253\002\253\002\253\002\253\000\000\000\000\002\253\002\253\002\253\000\000\t\177\000\000\000\000\002\253\002\253\002\253\002\253\003\025\003\025\000\000\003\025\000\000\003\025\000\242\017B\000\000\003\025\000\000\t\177\003\025\006\030\003\025\000\000\000\000\003\025\t\177\003\025\003\025\003\025\t\177\003\025\003\025\003\025\000\000\000\000\000\000\000\000\000\000\003\025\003\025\003\025\003\025\003\025\000\000\003\025\t\229\000\000\000\000\t}\t\229\000\000\003\025\003\025\003\025\003\025\003\025\000\000\000\000\000\000\000\000\000\000\003\025\t}\003\025\003\025\000\000\b\030\000\000\000\000\000\000\003\025\003\025\003\025\t}\000\000\000\000\000\000\t}\000\000\003\025\003\025\003\025\003\025\003\025\003\025\003\025\003\025\003\025\000\000\003\025\t\229\000\000\000\000\003\025\000\000\003\025\003\025\000\000\000\000\000\242\000\000\003\025\000\000\000\000\003\025\000\000\003\025\003\025\000\000\003\025\003\025\003\025\003\025\000\000\t\229\000\000\003\025\000\000\003\025\003\025\000\000\012\250\003\025\003\025\003\025\003\025\003\025\003\025\000\000\000\000\003\025\003\025\r\014\000\000\020Z\000\000\000\000\003\025\003\025\003\025\003\025\003\021\003\021\000\000\003\021\000\000\003\021\000\000\017\006\000\000\003\021\000\000\017\018\003\021\006\030\003\021\000\000\000\000\014.\017\030\003\021\003\021\003\021\017*\003\021\003\021\003\021\000\000\000\000\000\000\000\000\000\000\003\021\003\021\003\021\014\174\003\021\000\000\003\021\000\000\000\000\000\000\000\000\000\000\000\000\003\021\003\021\003\021\003\021\003\021\000\000\000\000\000\000\000\000\000\000\003\021\000\000\003\021\003\021\000\000\000\000\000\000\000\000\000\000\003\021\003\021\003\021\000\000\000\000\000\000\000\000\000\000\000\000\003\021\003\021\014F\014\198\003\021\003\021\003\021\003\021\003\021\000\000\003\021\000\000\000\000\000\000\003\021\000\000\003\021\003\021\000\000\000\000\000\242\000\000\003\021\000\000\000\000\003\021\000\000\003\021\003\021\000\000\003\021\003\021\003\021\003\021\000\000\020\206\000\000\003\021\000\000\003\021\003\021\000\000\003\021\003\021\003\021\003\021\003\021\003\021\003\021\000\000\000\000\003\021\003\021\003\021\000\000\000\000\000\000\000\000\003\021\003\021\003\021\003\021\0039\0039\000\000\0039\000\000\0039\000\000\bz\000\000\0039\000\000\b\030\0039\000\000\0039\000\000\000\000\0039\b\154\0039\0039\0039\b\166\0039\0039\0039\000\000\000\000\000\000\000\000\000\000\0039\0039\0039\0039\0039\000\000\0039\000\000\000\000\000\000\000\000\000\000\000\000\0039\0039\0039\0039\0039\000\000\000\000\000\000\000\000\000\000\0039\000\000\0039\0039\000\000\000\000\000\000\000\000\000\000\0039\0039\0039\000\000\000\000\000\000\000\000\000\000\000\000\0039\0039\0039\0039\0039\0039\0039\0039\0039\000\000\0039\000\000\000\000\000\000\0039\000\000\0039\0039\000\000\000\000\000\000\000\000\0039\000\000\000\000\0039\000\000\0039\0039\000\000\0039\0039\0039\0039\000\000\000\000\000\000\0039\000\000\0039\0039\000\000\012\250\0039\0039\0039\0039\0039\0039\000\000\000\000\0039\0039\r\014\000\000\000\000\000\000\000\000\0039\0039\0039\0039\0035\0035\000\000\0035\000\000\0035\000\000\000\000\000\000\0035\000\000\000\000\0035\000\000\0035\000\000\000\000\0035\000\000\0035\0035\0035\000\000\0035\0035\0035\000\000\000\000\000\000\000\000\000\000\0035\0035\0035\0035\0035\000\000\0035\000\000\000\000\000\000\000\000\000\000\000\000\0035\0035\0035\0035\0035\000\000\000\000\000\000\000\000\000\000\0035\000\000\0035\0035\000\000\000\000\000\000\000\000\000\000\0035\0035\0035\000\000\000\000\000\000\000\000\000\000\000\000\0035\0035\014F\0035\0035\0035\0035\0035\0035\000\000\0035\000\000\000\000\000\000\0035\000\000\0035\0035\000\000\000\000\000\000\000\000\0035\000\000\000\000\0035\000\000\0035\0035\000\000\0035\0035\0035\0035\000\000\000\000\000\000\0035\000\000\0035\0035\000\000\0035\0035\0035\0035\0035\0035\0035\000\000\000\000\0035\0035\0035\000\000\000\000\000\000\000\000\0035\0035\0035\0035\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\002\249\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\002\249\002\249\002\249\002\249\002\249\000\000\002\249\000\000\000\000\000\000\000\000\000\000\000\000\002\249\002\249\002\249\002\249\002\249\000\000\000\000\000\000\000\000\000\000\002\249\000\000\002\249\002\249\000\000\000\000\000\000\000\000\000\000\002\249\002\249\002\249\000\000\000\000\000\000\000\000\000\000\000\000\002\249\002\249\002\249\002\249\002\249\002\249\002\249\002\249\002\249\000\000\002\249\000\000\000\000\000\000\002\249\000\000\002\249\002\249\000\000\000\000\000\000\000\000\002\249\000\000\000\000\002\249\000\000\002\249\002\249\000\000\002\249\002\249\002\249\002\249\000\000\000\000\000\000\002\249\000\000\002\249\002\249\000\000\012\250\002\249\002\249\002\249\002\249\002\249\002\249\000\000\000\000\002\249\002\249\r\014\000\000\000\000\000\000\000\000\002\249\002\249\002\249\002\249\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\002\245\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\002\245\002\245\002\245\002\245\002\245\000\000\002\245\000\000\000\000\000\000\000\000\000\000\000\000\002\245\002\245\002\245\002\245\002\245\000\000\000\000\000\000\000\000\000\000\002\245\000\000\002\245\002\245\000\000\000\000\000\000\000\000\000\000\002\245\002\245\002\245\000\000\000\000\000\000\000\000\000\000\000\000\002\245\002\245\014F\002\245\002\245\002\245\002\245\002\245\002\245\000\000\002\245\000\000\000\000\000\000\002\245\000\000\002\245\002\245\000\000\000\000\000\000\000\000\002\245\000\000\000\000\002\245\000\000\002\245\002\245\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\002\245\002\245\002\245\002\245\002\245\002\245\002\245\000\000\000\000\002\245\002\245\002\245\000\000\000\000\000\000\000\000\002\245\002\245\002\245\002\245\003\017\003\017\000\000\003\017\000\000\003\017\000\000\000\000\000\000\003\017\000\000\000\000\003\017\000\000\003\017\000\000\000\000\003\017\000\000\003\017\003\017\003\017\000\000\003\017\003\017\003\017\000\000\000\000\000\000\000\000\000\000\003\017\003\017\003\017\003\017\003\017\000\000\003\017\000\000\000\000\000\000\000\000\000\000\000\000\003\017\003\017\003\017\003\017\003\017\000\000\000\000\000\000\000\000\000\000\003\017\000\000\003\017\003\017\000\000\000\000\000\000\000\000\000\000\003\017\003\017\003\017\000\000\000\000\000\000\000\000\000\000\000\000\003\017\003\017\003\017\003\017\003\017\003\017\003\017\003\017\003\017\000\000\003\017\000\000\000\000\000\000\003\017\000\000\003\017\003\017\000\000\000\000\000\000\000\000\003\017\000\000\000\000\003\017\000\000\003\017\003\017\000\000\003\017\003\017\003\017\003\017\000\000\000\000\000\000\003\017\000\000\003\017\003\017\000\000\012\250\003\017\003\017\003\017\003\017\003\017\003\017\000\000\000\000\003\017\003\017\r\014\000\000\000\000\000\000\000\000\003\017\003\017\003\017\003\017\003\r\003\r\000\000\003\r\000\000\003\r\000\000\000\000\000\000\003\r\000\000\000\000\003\r\000\000\003\r\000\000\000\000\014.\000\000\003\r\003\r\003\r\000\000\003\r\003\r\003\r\000\000\000\000\000\000\000\000\000\000\003\r\003\r\003\r\014\174\003\r\000\000\003\r\000\000\000\000\000\000\000\000\000\000\000\000\003\r\003\r\003\r\003\r\003\r\000\000\000\000\000\000\000\000\000\000\003\r\000\000\003\r\003\r\000\000\000\000\000\000\000\000\000\000\003\r\003\r\003\r\000\000\000\000\000\000\000\000\000\000\000\000\003\r\003\r\014F\014\198\003\r\003\r\003\r\003\r\003\r\000\000\003\r\000\000\000\000\000\000\003\r\000\000\003\r\003\r\000\000\000\000\000\000\000\000\003\r\000\000\000\000\003\r\000\000\003\r\003\r\000\000\003\r\003\r\003\r\003\r\000\000\000\000\000\000\003\r\000\000\003\r\003\r\000\000\003\r\003\r\003\r\003\r\003\r\003\r\003\r\000\000\000\000\003\r\003\r\003\r\000\000\000\000\000\000\000\000\003\r\003\r\003\r\003\r\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\003\t\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\003\t\003\t\003\t\003\t\003\t\000\000\003\t\000\000\000\000\000\000\000\000\000\000\000\000\003\t\003\t\003\t\003\t\003\t\000\000\000\000\000\000\000\000\000\000\003\t\000\000\003\t\003\t\000\000\000\000\000\000\000\000\000\000\003\t\003\t\003\t\000\000\000\000\000\000\000\000\000\000\000\000\003\t\003\t\003\t\003\t\003\t\003\t\003\t\003\t\003\t\000\000\003\t\000\000\000\000\000\000\003\t\000\000\003\t\003\t\000\000\000\000\000\000\000\000\003\t\000\000\000\000\003\t\000\000\003\t\003\t\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\012\250\003\t\003\t\003\t\003\t\003\t\003\t\000\000\000\000\003\t\003\t\r\014\000\000\000\000\000\000\000\000\003\t\003\t\003\t\003\t\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\014.\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\003\005\003\005\003\005\014\174\003\005\000\000\003\005\000\000\000\000\000\000\000\000\000\000\000\000\003\005\003\005\003\005\003\005\003\005\000\000\000\000\000\000\000\000\000\000\003\005\000\000\003\005\003\005\000\000\000\000\000\000\000\000\000\000\003\005\003\005\003\005\000\000\000\000\000\000\000\000\000\000\000\000\003\005\003\005\014F\014\198\003\005\003\005\003\005\003\005\003\005\000\000\003\005\000\000\000\000\000\000\003\005\000\000\003\005\003\005\000\000\000\000\000\000\000\000\003\005\000\000\000\000\003\005\000\000\003\005\003\005\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\003\005\003\005\003\005\003\005\003\005\003\005\003\005\000\000\000\000\003\005\003\005\003\005\000\000\000\000\000\000\000\000\003\005\003\005\003\005\003\005\003Y\003Y\000\000\003Y\000\000\003Y\000\000\000\000\000\000\003Y\000\000\000\000\003Y\000\000\003Y\000\000\000\000\003Y\000\000\003Y\003Y\003Y\000\000\003Y\003Y\003Y\000\000\000\000\000\000\000\000\000\000\003Y\003Y\003Y\003Y\003Y\000\000\003Y\000\000\000\000\000\000\000\000\000\000\000\000\003Y\003Y\003Y\003Y\003Y\000\000\000\000\000\000\000\000\000\000\003Y\000\000\003Y\003Y\000\000\000\000\000\000\000\000\000\000\003Y\003Y\003Y\000\000\000\000\000\000\000\000\000\000\000\000\003Y\003Y\003Y\003Y\003Y\003Y\003Y\003Y\003Y\000\000\003Y\000\000\000\000\000\000\003Y\000\000\003Y\003Y\000\000\000\000\000\000\000\000\003Y\000\000\000\000\003Y\000\000\003Y\003Y\000\000\003Y\003Y\003Y\003Y\000\000\000\000\000\000\003Y\000\000\003Y\003Y\000\000\012\250\003Y\003Y\003Y\003Y\003Y\003Y\000\000\000\000\003Y\003Y\r\014\000\000\000\000\000\000\000\000\003Y\003Y\003Y\003Y\003U\003U\000\000\003U\000\000\003U\000\000\000\000\000\000\003U\000\000\000\000\003U\000\000\003U\000\000\000\000\014.\000\000\003U\003U\003U\000\000\003U\003U\003U\000\000\000\000\000\000\000\000\000\000\014\150\014\222\014\246\014\174\015\014\000\000\003U\000\000\000\000\000\000\000\000\000\000\000\000\003U\003U\015&\015>\003U\000\000\000\000\000\000\000\000\000\000\003U\000\000\015V\003U\000\000\000\000\000\000\000\000\000\000\003U\003U\000\242\000\000\000\000\000\000\000\000\000\000\000\000\003U\003U\014F\014\198\015n\015\134\015\182\003U\003U\000\000\003U\000\000\000\000\000\000\003U\000\000\003U\015\206\000\000\000\000\000\000\000\000\003U\000\000\000\000\003U\000\000\003U\015\230\000\000\003U\003U\003U\003U\000\000\000\000\000\000\003U\000\000\003U\003U\000\000\003U\003U\003U\003U\015\158\003U\003U\000\000\000\000\003U\015\254\003U\000\000\000\000\000\000\000\000\003U\003U\016\022\016.\003)\003)\000\000\003)\000\000\003)\000\000\000\000\000\000\003)\000\000\000\000\003)\000\000\003)\000\000\000\000\003)\000\000\003)\003)\003)\000\000\003)\003)\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\000\000\003)\003)\003)\003)\003)\000\000\000\000\000\000\000\000\000\000\003)\000\000\003)\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\003)\003)\003)\003)\003)\003)\003)\003)\003)\000\000\003)\000\000\000\000\000\000\003)\000\000\003)\003)\000\000\000\000\000\000\000\000\003)\000\000\000\000\003)\000\000\003)\003)\000\000\003)\003)\003)\003)\000\000\000\000\000\000\003)\000\000\003)\003)\000\000\012\250\003)\003)\003)\003)\003)\003)\000\000\000\000\003)\003)\r\014\000\000\000\000\000\000\000\000\003)\003)\003)\003)\003%\003%\000\000\003%\000\000\003%\000\000\000\000\000\000\003%\000\000\000\000\003%\000\000\003%\000\000\000\000\014.\000\000\003%\003%\003%\000\000\003%\003%\003%\000\000\000\000\000\000\000\000\000\000\003%\003%\003%\014\174\003%\000\000\003%\000\000\000\000\000\000\000\000\000\000\000\000\003%\003%\003%\003%\003%\000\000\000\000\000\000\000\000\000\000\003%\000\000\003%\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\003%\003%\014F\014\198\003%\003%\003%\003%\003%\000\000\003%\000\000\000\000\000\000\003%\000\000\003%\003%\000\000\000\000\000\000\000\000\003%\000\000\000\000\003%\000\000\003%\003%\000\000\003%\003%\003%\003%\000\000\000\000\000\000\003%\000\000\003%\003%\000\000\003%\003%\003%\003%\003%\003%\003%\000\000\000\000\003%\003%\003%\000\000\000\000\000\000\000\000\003%\003%\003%\003%\003!\003!\000\000\003!\000\000\003!\000\000\000\000\000\000\003!\000\000\000\000\003!\000\000\003!\000\000\000\000\003!\000\000\003!\003!\003!\000\000\003!\003!\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\000\000\003!\003!\003!\003!\003!\000\000\000\000\000\000\000\000\000\000\003!\000\000\003!\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\003!\003!\003!\003!\003!\003!\003!\003!\003!\000\000\003!\000\000\000\000\000\000\003!\000\000\003!\003!\000\000\000\000\000\000\000\000\003!\000\000\000\000\003!\000\000\003!\003!\000\000\003!\003!\003!\003!\000\000\000\000\000\000\003!\000\000\003!\003!\000\000\012\250\003!\003!\003!\003!\003!\003!\000\000\000\000\003!\003!\r\014\000\000\000\000\000\000\000\000\003!\003!\003!\003!\003\029\003\029\000\000\003\029\000\000\003\029\000\000\000\000\000\000\003\029\000\000\000\000\003\029\000\000\003\029\000\000\000\000\014.\000\000\003\029\003\029\003\029\000\000\003\029\003\029\003\029\000\000\000\000\000\000\000\000\000\000\003\029\003\029\003\029\014\174\003\029\000\000\003\029\000\000\000\000\000\000\000\000\000\000\000\000\003\029\003\029\003\029\003\029\003\029\000\000\000\000\000\000\000\000\000\000\003\029\000\000\003\029\003\029\000\000\000\000\000\000\000\000\000\000\003\029\003\029\003\029\000\000\000\000\000\000\000\000\000\000\000\000\003\029\003\029\014F\014\198\003\029\003\029\003\029\003\029\003\029\000\000\003\029\000\000\000\000\000\000\003\029\000\000\003\029\003\029\000\000\000\000\000\000\000\000\003\029\000\000\000\000\003\029\000\000\003\029\003\029\000\000\003\029\003\029\003\029\003\029\000\000\000\000\000\000\003\029\000\000\003\029\003\029\000\000\003\029\003\029\003\029\003\029\003\029\003\029\003\029\000\000\000\000\003\029\003\029\003\029\000\000\000\000\000\000\000\000\003\029\003\029\003\029\003\029\003I\003I\000\000\003I\000\000\003I\000\000\000\000\000\000\003I\000\000\000\000\003I\000\000\003I\000\000\000\000\003I\000\000\003I\003I\003I\000\000\003I\003I\003I\000\000\000\000\000\000\000\000\000\000\003I\003I\003I\003I\003I\000\000\003I\000\000\000\000\000\000\000\000\000\000\000\000\003I\003I\003I\003I\003I\000\000\000\000\000\000\000\000\000\000\003I\000\000\003I\003I\000\000\000\000\000\000\000\000\000\000\003I\003I\003I\000\000\000\000\000\000\000\000\000\000\000\000\003I\003I\003I\003I\003I\003I\003I\003I\003I\000\000\003I\000\000\000\000\000\000\003I\000\000\003I\003I\000\000\000\000\000\000\000\000\003I\000\000\000\000\003I\000\000\003I\003I\000\000\003I\003I\003I\003I\000\000\000\000\000\000\003I\000\000\003I\003I\000\000\012\250\003I\003I\003I\003I\003I\003I\000\000\000\000\003I\003I\r\014\000\000\000\000\000\000\000\000\003I\003I\003I\003I\003E\003E\000\000\003E\000\000\003E\000\000\000\000\000\000\003E\000\000\000\000\003E\000\000\003E\000\000\000\000\014.\000\000\003E\003E\003E\000\000\003E\003E\003E\000\000\000\000\000\000\000\000\000\000\014\150\014\222\014\246\014\174\003E\000\000\003E\000\000\000\000\000\000\000\000\000\000\000\000\003E\003E\015&\015>\003E\000\000\000\000\000\000\000\000\000\000\003E\000\000\003E\003E\000\000\000\000\000\000\000\000\000\000\003E\003E\000\242\000\000\000\000\000\000\000\000\000\000\000\000\003E\003E\014F\014\198\015n\015\134\003E\003E\003E\000\000\003E\000\000\000\000\000\000\003E\000\000\003E\003E\000\000\000\000\000\000\000\000\003E\000\000\000\000\003E\000\000\003E\003E\000\000\003E\003E\003E\003E\000\000\000\000\000\000\003E\000\000\003E\003E\000\000\003E\003E\003E\003E\015\158\003E\003E\000\000\000\000\003E\003E\003E\000\000\000\000\000\000\000\000\003E\003E\003E\003E\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\002\241\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\002\241\002\241\002\241\002\241\002\241\000\000\002\241\000\000\000\000\000\000\000\000\000\000\000\000\002\241\002\241\002\241\002\241\002\241\000\000\000\000\000\000\000\000\000\000\002\241\000\000\002\241\002\241\000\000\000\000\000\000\000\000\000\000\002\241\002\241\002\241\000\000\000\000\000\000\000\000\000\000\000\000\002\241\002\241\002\241\002\241\002\241\002\241\002\241\002\241\002\241\000\000\002\241\000\000\000\000\000\000\002\241\000\000\002\241\002\241\000\000\000\000\000\000\000\000\002\241\000\000\000\000\002\241\000\000\002\241\002\241\000\000\002\241\002\241\002\241\002\241\000\000\000\000\000\000\002\241\000\000\002\241\002\241\000\000\012\250\002\241\002\241\002\241\002\241\002\241\002\241\000\000\000\000\002\241\002\241\r\014\000\000\000\000\000\000\000\000\002\241\002\241\002\241\002\241\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\014.\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\002\237\002\237\002\237\014\174\002\237\000\000\002\237\000\000\000\000\000\000\000\000\000\000\000\000\002\237\002\237\002\237\002\237\002\237\000\000\000\000\000\000\000\000\000\000\002\237\000\000\002\237\002\237\000\000\000\000\000\000\000\000\000\000\002\237\002\237\002\237\000\000\000\000\000\000\000\000\000\000\000\000\002\237\002\237\014F\014\198\002\237\002\237\002\237\002\237\002\237\000\000\002\237\000\000\000\000\000\000\002\237\000\000\002\237\002\237\000\000\000\000\000\000\000\000\002\237\000\000\000\000\002\237\000\000\002\237\002\237\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\002\237\002\237\002\237\002\237\002\237\002\237\002\237\000\000\000\000\002\237\002\237\002\237\000\000\000\000\000\000\000\000\002\237\002\237\002\237\002\237\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\002\233\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\002\233\002\233\002\233\002\233\002\233\000\000\002\233\000\000\000\000\000\000\000\000\000\000\000\000\002\233\002\233\002\233\002\233\002\233\000\000\000\000\000\000\000\000\000\000\002\233\000\000\002\233\002\233\000\000\000\000\000\000\000\000\000\000\002\233\002\233\002\233\000\000\000\000\000\000\000\000\000\000\000\000\002\233\002\233\002\233\002\233\002\233\002\233\002\233\002\233\002\233\000\000\002\233\000\000\000\000\000\000\002\233\000\000\002\233\002\233\000\000\000\000\000\000\000\000\002\233\000\000\000\000\002\233\000\000\002\233\002\233\000\000\002\233\002\233\002\233\002\233\000\000\000\000\000\000\002\233\000\000\002\233\002\233\000\000\012\250\002\233\002\233\002\233\002\233\002\233\002\233\000\000\000\000\002\233\002\233\r\014\000\000\000\000\000\000\000\000\002\233\002\233\002\233\002\233\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\014.\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\014\150\014\222\014\246\014\174\002\229\000\000\002\229\000\000\000\000\000\000\000\000\000\000\000\000\002\229\002\229\015&\015>\002\229\000\000\000\000\000\000\000\000\000\000\002\229\000\000\002\229\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\014F\014\198\015n\015\134\002\229\002\229\002\229\000\000\002\229\000\000\000\000\000\000\002\229\000\000\002\229\002\229\000\000\000\000\000\000\000\000\002\229\000\000\000\000\002\229\000\000\002\229\002\229\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\002\229\002\229\002\229\002\229\015\158\002\229\002\229\000\000\000\000\002\229\002\229\002\229\000\000\000\000\000\000\000\000\002\229\002\229\002\229\002\229\003\137\003\137\000\000\003\137\000\000\003\137\000\000\000\000\000\000\003\137\000\000\000\000\003\137\000\000\003\137\000\000\000\000\003\137\000\000\003\137\003\137\003\137\000\000\003\137\003\137\003\137\000\000\000\000\000\000\000\000\000\000\003\137\003\137\003\137\003\137\003\137\000\000\003\137\000\000\000\000\000\000\000\000\000\000\000\000\003\137\003\137\003\137\003\137\003\137\000\000\000\000\000\000\000\000\000\000\003\137\000\000\003\137\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\003\137\003\137\003\137\003\137\003\137\003\137\003\137\003\137\003\137\000\000\003\137\000\000\000\000\000\000\003\137\000\000\003\137\003\137\000\000\000\000\000\000\000\000\003\137\000\000\000\000\003\137\000\000\003\137\003\137\000\000\003\137\003\137\003\137\003\137\000\000\000\000\000\000\003\137\000\000\003\137\003\137\000\000\012\250\003\137\003\137\003\137\003\137\003\137\003\137\000\000\000\000\003\137\003\137\r\014\000\000\000\000\000\000\000\000\003\137\003\137\003\137\003\137\003\133\003\133\000\000\003\133\000\000\003\133\000\000\000\000\000\000\003\133\000\000\000\000\003\133\000\000\003\133\000\000\000\000\014.\000\000\003\133\003\133\003\133\000\000\003\133\003\133\003\133\000\000\000\000\000\000\000\000\000\000\014\150\014\222\014\246\014\174\003\133\000\000\003\133\000\000\000\000\000\000\000\000\000\000\000\000\003\133\003\133\015&\015>\003\133\000\000\000\000\000\000\000\000\000\000\003\133\000\000\003\133\003\133\000\000\000\000\000\000\000\000\000\000\003\133\003\133\003\133\000\000\000\000\000\000\000\000\000\000\000\000\003\133\003\133\014F\014\198\015n\003\133\003\133\003\133\003\133\000\000\003\133\000\000\000\000\000\000\003\133\000\000\003\133\003\133\000\000\000\000\000\000\000\000\003\133\000\000\000\000\003\133\000\000\003\133\003\133\000\000\003\133\003\133\003\133\003\133\000\000\000\000\000\000\003\133\000\000\003\133\003\133\000\000\003\133\003\133\003\133\003\133\015\158\003\133\003\133\000\000\000\000\003\133\003\133\003\133\000\000\000\000\000\000\000\000\003\133\003\133\003\133\003\133\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\002\225\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\002\225\002\225\002\225\002\225\002\225\000\000\002\225\000\000\000\000\000\000\000\000\000\000\000\000\002\225\002\225\002\225\002\225\002\225\000\000\000\000\000\000\000\000\000\000\002\225\000\000\002\225\002\225\000\000\000\000\000\000\000\000\000\000\002\225\002\225\002\225\000\000\000\000\000\000\000\000\000\000\000\000\002\225\002\225\002\225\002\225\002\225\002\225\002\225\002\225\002\225\000\000\002\225\000\000\000\000\000\000\002\225\000\000\002\225\002\225\000\000\000\000\000\000\000\000\002\225\000\000\000\000\002\225\000\000\002\225\002\225\000\000\002\225\002\225\002\225\002\225\000\000\000\000\000\000\002\225\000\000\002\225\002\225\000\000\012\250\002\225\002\225\002\225\002\225\002\225\002\225\000\000\000\000\002\225\002\225\r\014\000\000\000\000\000\000\000\000\002\225\002\225\002\225\002\225\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\014.\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\014\150\014\222\014\246\014\174\002\221\000\000\002\221\000\000\000\000\000\000\000\000\000\000\000\000\002\221\002\221\015&\015>\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\000\242\000\000\000\000\000\000\000\000\000\000\000\000\002\221\002\221\014F\014\198\015n\015\134\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\015\158\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\003Q\003Q\000\000\003Q\000\000\003Q\000\000\000\000\000\000\003Q\000\000\000\000\003Q\000\000\003Q\000\000\000\000\003Q\000\000\003Q\003Q\003Q\000\000\003Q\003Q\003Q\000\000\000\000\000\000\000\000\000\000\003Q\003Q\003Q\003Q\003Q\000\000\003Q\000\000\000\000\000\000\000\000\000\000\000\000\003Q\003Q\003Q\003Q\003Q\000\000\000\000\000\000\000\000\000\000\003Q\000\000\003Q\003Q\000\000\000\000\000\000\000\000\000\000\003Q\003Q\003Q\000\000\000\000\000\000\000\000\000\000\000\000\003Q\003Q\003Q\003Q\003Q\003Q\003Q\003Q\003Q\000\000\003Q\000\000\000\000\000\000\003Q\000\000\003Q\003Q\000\000\000\000\000\000\000\000\003Q\000\000\000\000\003Q\000\000\003Q\003Q\000\000\003Q\003Q\003Q\003Q\000\000\000\000\000\000\003Q\000\000\003Q\003Q\000\000\012\250\003Q\003Q\003Q\003Q\003Q\003Q\000\000\000\000\003Q\003Q\r\014\000\000\000\000\000\000\000\000\003Q\003Q\003Q\003Q\003M\003M\000\000\003M\000\000\003M\000\000\000\000\000\000\003M\000\000\000\000\003M\000\000\003M\000\000\000\000\014.\000\000\003M\003M\003M\000\000\003M\003M\003M\000\000\000\000\000\000\000\000\000\000\014\150\014\222\014\246\014\174\003M\000\000\003M\000\000\000\000\000\000\000\000\000\000\000\000\003M\003M\015&\015>\003M\000\000\000\000\000\000\000\000\000\000\003M\000\000\003M\003M\000\000\000\000\000\000\000\000\000\000\003M\003M\000\242\000\000\000\000\000\000\000\000\000\000\000\000\003M\003M\014F\014\198\015n\015\134\003M\003M\003M\000\000\003M\000\000\000\000\000\000\003M\000\000\003M\003M\000\000\000\000\000\000\000\000\003M\000\000\000\000\003M\000\000\003M\003M\000\000\003M\003M\003M\003M\000\000\000\000\000\000\003M\000\000\003M\003M\000\000\003M\003M\003M\003M\015\158\003M\003M\000\000\000\000\003M\003M\003M\000\000\000\000\000\000\000\000\003M\003M\003M\003M\003A\003A\000\000\003A\000\000\003A\000\000\000\000\000\000\003A\000\000\000\000\003A\000\000\003A\000\000\000\000\003A\000\000\003A\003A\003A\000\000\003A\003A\003A\000\000\000\000\000\000\000\000\000\000\003A\003A\003A\003A\003A\000\000\003A\000\000\000\000\000\000\000\000\000\000\000\000\003A\003A\003A\003A\003A\000\000\000\000\000\000\000\000\000\000\003A\000\000\003A\003A\000\000\000\000\000\000\000\000\000\000\003A\003A\003A\000\000\000\000\000\000\000\000\000\000\000\000\003A\003A\003A\003A\003A\003A\003A\003A\003A\000\000\003A\000\000\000\000\000\000\003A\000\000\003A\003A\000\000\000\000\000\000\000\000\003A\000\000\000\000\003A\000\000\003A\003A\000\000\003A\003A\003A\003A\000\000\000\000\000\000\003A\000\000\003A\003A\000\000\012\250\003A\003A\003A\003A\003A\003A\000\000\000\000\003A\003A\r\014\000\000\000\000\000\000\000\000\003A\003A\003A\003A\003=\003=\000\000\003=\000\000\003=\000\000\000\000\000\000\003=\000\000\000\000\003=\000\000\003=\000\000\000\000\014.\000\000\003=\003=\003=\000\000\003=\003=\003=\000\000\000\000\000\000\000\000\000\000\014\150\014\222\014\246\014\174\003=\000\000\003=\000\000\000\000\000\000\000\000\000\000\000\000\003=\003=\015&\015>\003=\000\000\000\000\000\000\000\000\000\000\003=\000\000\003=\003=\000\000\000\000\000\000\000\000\000\000\003=\003=\000\242\000\000\000\000\000\000\000\000\000\000\000\000\003=\003=\014F\014\198\015n\015\134\003=\003=\003=\000\000\003=\000\000\000\000\000\000\003=\000\000\003=\003=\000\000\000\000\000\000\000\000\003=\000\000\000\000\003=\000\000\003=\003=\000\000\003=\003=\003=\003=\000\000\000\000\000\000\003=\000\000\003=\003=\000\000\003=\003=\003=\003=\015\158\003=\003=\000\000\000\000\003=\003=\003=\000\000\000\000\000\000\000\000\003=\003=\003=\003=\003a\003a\000\000\003a\000\000\003a\000\000\000\000\000\000\003a\000\000\000\000\003a\000\000\003a\000\000\000\000\003a\000\000\003a\003a\003a\000\000\003a\003a\003a\000\000\000\000\000\000\000\000\000\000\003a\003a\003a\003a\003a\000\000\003a\000\000\000\000\000\000\000\000\000\000\000\000\003a\003a\003a\003a\003a\000\000\000\000\000\000\000\000\000\000\003a\000\000\003a\003a\000\000\000\000\000\000\000\000\000\000\003a\003a\003a\000\000\000\000\000\000\000\000\000\000\000\000\003a\003a\003a\003a\003a\003a\003a\003a\003a\000\000\003a\000\000\000\000\000\000\003a\000\000\003a\003a\000\000\000\000\000\000\000\000\003a\000\000\000\000\003a\000\000\003a\003a\000\000\003a\003a\003a\003a\000\000\000\000\000\000\003a\000\000\003a\003a\000\000\012\250\003a\003a\003a\003a\003a\003a\000\000\000\000\003a\003a\r\014\000\000\000\000\000\000\000\000\003a\003a\003a\003a\003]\003]\000\000\003]\000\000\003]\000\000\000\000\000\000\003]\000\000\000\000\003]\000\000\003]\000\000\000\000\014.\000\000\003]\003]\003]\000\000\003]\003]\003]\000\000\000\000\000\000\000\000\000\000\014\150\014\222\014\246\014\174\015\014\000\000\003]\000\000\000\000\000\000\000\000\000\000\000\000\003]\003]\015&\015>\003]\000\000\000\000\000\000\000\000\000\000\003]\000\000\015V\003]\000\000\000\000\000\000\000\000\000\000\003]\003]\000\242\000\000\000\000\000\000\000\000\000\000\000\000\003]\003]\014F\014\198\015n\015\134\015\182\003]\003]\000\000\003]\000\000\000\000\000\000\003]\000\000\003]\015\206\000\000\000\000\000\000\000\000\003]\000\000\000\000\003]\000\000\003]\015\230\000\000\003]\003]\003]\003]\000\000\000\000\000\000\003]\000\000\003]\003]\000\000\003]\003]\003]\003]\015\158\003]\003]\000\000\000\000\003]\015\254\003]\000\000\000\000\000\000\000\000\003]\003]\016\022\016.\003i\003i\000\000\003i\000\000\003i\000\000\000\000\000\000\003i\000\000\000\000\003i\000\000\003i\000\000\000\000\003i\000\000\003i\003i\003i\000\000\003i\003i\003i\000\000\000\000\000\000\000\000\000\000\003i\003i\003i\003i\003i\000\000\003i\000\000\000\000\000\000\000\000\000\000\000\000\003i\003i\003i\003i\003i\000\000\000\000\000\000\000\000\000\000\003i\000\000\003i\003i\000\000\000\000\000\000\000\000\000\000\003i\003i\003i\000\000\000\000\000\000\000\000\000\000\000\000\003i\003i\003i\003i\003i\003i\003i\003i\003i\000\000\003i\000\000\000\000\000\000\003i\000\000\003i\003i\000\000\000\000\000\000\000\000\003i\000\000\000\000\003i\000\000\003i\003i\000\000\003i\003i\003i\003i\000\000\000\000\000\000\003i\000\000\003i\003i\000\000\012\250\003i\003i\003i\003i\003i\003i\000\000\000\000\003i\003i\r\014\000\000\000\000\000\000\000\000\003i\003i\003i\003i\003e\003e\000\000\003e\000\000\003e\000\000\000\000\000\000\003e\000\000\000\000\003e\000\000\003e\000\000\000\000\014.\000\000\003e\003e\003e\000\000\003e\003e\003e\000\000\000\000\000\000\000\000\000\000\014\150\014\222\014\246\014\174\003e\000\000\003e\000\000\000\000\000\000\000\000\000\000\000\000\003e\003e\015&\015>\003e\000\000\000\000\000\000\000\000\000\000\003e\000\000\015V\003e\000\000\000\000\000\000\000\000\000\000\003e\003e\000\242\000\000\000\000\000\000\000\000\000\000\000\000\003e\003e\014F\014\198\015n\015\134\015\182\003e\003e\000\000\003e\000\000\000\000\000\000\003e\000\000\003e\015\206\000\000\000\000\000\000\000\000\003e\000\000\000\000\003e\000\000\003e\015\230\000\000\003e\003e\003e\003e\000\000\000\000\000\000\003e\000\000\003e\003e\000\000\003e\003e\003e\003e\015\158\003e\003e\000\000\000\000\003e\003e\003e\000\000\000\000\000\000\000\000\003e\003e\016\022\016.\003q\003q\000\000\003q\000\000\003q\000\000\000\000\000\000\003q\000\000\000\000\003q\000\000\003q\000\000\000\000\003q\000\000\003q\003q\003q\000\000\003q\003q\003q\000\000\000\000\000\000\000\000\000\000\003q\003q\003q\003q\003q\000\000\003q\000\000\000\000\000\000\000\000\000\000\000\000\003q\003q\003q\003q\003q\000\000\000\000\000\000\000\000\000\000\003q\000\000\003q\003q\000\000\000\000\000\000\000\000\000\000\003q\003q\003q\000\000\000\000\000\000\000\000\000\000\000\000\003q\003q\003q\003q\003q\003q\003q\003q\003q\000\000\003q\000\000\000\000\000\000\003q\000\000\003q\003q\000\000\000\000\000\000\000\000\003q\000\000\000\000\003q\000\000\003q\003q\000\000\003q\003q\003q\003q\000\000\000\000\000\000\003q\000\000\003q\003q\000\000\012\250\003q\003q\003q\003q\003q\003q\000\000\000\000\003q\003q\r\014\000\000\000\000\000\000\000\000\003q\003q\003q\003q\003m\003m\000\000\003m\000\000\003m\000\000\000\000\000\000\003m\000\000\000\000\003m\000\000\003m\000\000\000\000\014.\000\000\003m\003m\003m\000\000\003m\003m\003m\000\000\000\000\000\000\000\000\000\000\014\150\014\222\014\246\014\174\003m\000\000\003m\000\000\000\000\000\000\000\000\000\000\000\000\003m\003m\015&\015>\003m\000\000\000\000\000\000\000\000\000\000\003m\000\000\015V\003m\000\000\000\000\000\000\000\000\000\000\003m\003m\000\242\000\000\000\000\000\000\000\000\000\000\000\000\003m\003m\014F\014\198\015n\015\134\015\182\003m\003m\000\000\003m\000\000\000\000\000\000\003m\000\000\003m\015\206\000\000\000\000\000\000\000\000\003m\000\000\000\000\003m\000\000\003m\015\230\000\000\003m\003m\003m\003m\000\000\000\000\000\000\003m\000\000\003m\003m\000\000\003m\003m\003m\003m\015\158\003m\003m\000\000\000\000\003m\003m\003m\000\000\000\000\000\000\000\000\003m\003m\016\022\016.\n\249\n\249\000\000\n\249\000\000\n\249\000\000\000\000\000\000\n\249\000\000\000\000\n\249\000\000\n\249\000\000\000\000\n\249\000\000\n\249\n\249\n\249\000\000\n\249\n\249\n\249\000\000\000\000\000\000\000\000\000\000\n\249\n\249\n\249\n\249\n\249\000\000\n\249\000\000\000\000\000\000\000\000\000\000\000\000\n\249\n\249\n\249\n\249\n\249\000\000\000\000\000\000\000\000\000\000\n\249\000\000\n\249\n\249\000\000\000\000\000\000\000\000\000\000\n\249\n\249\n\249\000\000\000\000\000\000\000\000\000\000\000\000\n\249\n\249\n\249\n\249\n\249\n\249\n\249\n\249\n\249\000\000\n\249\000\000\000\000\000\000\n\249\000\000\n\249\n\249\000\000\000\000\000\000\000\000\n\249\000\000\000\000\n\249\000\000\n\249\n\249\000\000\n\249\n\249\n\249\n\249\000\000\000\000\000\000\n\249\000\000\n\249\n\249\000\000\012\250\n\249\n\249\n\249\n\249\n\249\n\249\000\000\000\000\n\249\n\249\r\014\000\000\000\000\000\000\000\000\n\249\n\249\n\249\n\249\n\245\n\245\000\000\n\245\000\000\n\245\000\000\000\000\000\000\n\245\000\000\000\000\n\245\000\000\n\245\000\000\000\000\014.\000\000\n\245\n\245\n\245\000\000\n\245\n\245\n\245\000\000\000\000\000\000\000\000\000\000\014\150\014\222\014\246\014\174\015\014\000\000\n\245\000\000\000\000\000\000\000\000\000\000\000\000\n\245\n\245\015&\015>\n\245\000\000\000\000\000\000\000\000\000\000\n\245\000\000\015V\n\245\000\000\000\000\000\000\000\000\000\000\n\245\n\245\000\242\000\000\000\000\000\000\000\000\000\000\000\000\n\245\n\245\014F\014\198\015n\015\134\015\182\n\245\n\245\000\000\n\245\000\000\000\000\000\000\n\245\000\000\n\245\015\206\000\000\000\000\000\000\000\000\n\245\000\000\000\000\n\245\000\000\n\245\015\230\000\000\n\245\n\245\n\245\n\245\000\000\000\000\000\000\n\245\000\000\n\245\n\245\000\000\n\245\n\245\n\245\n\245\015\158\n\245\n\245\000\000\000\000\n\245\015\254\n\245\000\000\000\000\000\000\000\000\n\245\n\245\016\022\016.\003y\003y\000\000\003y\000\000\003y\000\000\000\000\000\000\003y\000\000\000\000\003y\000\000\003y\000\000\000\000\003y\000\000\003y\003y\003y\000\000\003y\003y\003y\000\000\000\000\000\000\000\000\000\000\003y\003y\003y\003y\003y\000\000\003y\000\000\000\000\000\000\000\000\000\000\000\000\003y\003y\003y\003y\003y\000\000\000\000\000\000\000\000\000\000\003y\000\000\003y\003y\000\000\000\000\000\000\000\000\000\000\003y\003y\003y\000\000\000\000\000\000\000\000\000\000\000\000\003y\003y\003y\003y\003y\003y\003y\003y\003y\000\000\003y\000\000\000\000\000\000\003y\000\000\003y\003y\000\000\000\000\000\000\000\000\003y\000\000\000\000\003y\000\000\003y\003y\000\000\003y\003y\003y\003y\000\000\000\000\000\000\003y\000\000\003y\003y\000\000\012\250\003y\003y\003y\003y\003y\003y\000\000\000\000\003y\003y\r\014\000\000\000\000\000\000\000\000\003y\003y\003y\003y\003u\003u\000\000\003u\000\000\003u\000\000\000\000\000\000\003u\000\000\000\000\003u\000\000\003u\000\000\000\000\014.\000\000\003u\003u\003u\000\000\003u\003u\003u\000\000\000\000\000\000\000\000\000\000\014\150\014\222\014\246\014\174\015\014\000\000\003u\000\000\000\000\000\000\000\000\000\000\000\000\003u\003u\015&\015>\003u\000\000\000\000\000\000\000\000\000\000\003u\000\000\015V\003u\000\000\000\000\000\000\000\000\000\000\003u\003u\000\242\000\000\000\000\000\000\000\000\000\000\000\000\003u\003u\014F\014\198\015n\015\134\015\182\003u\003u\000\000\003u\000\000\000\000\000\000\003u\000\000\003u\015\206\000\000\000\000\000\000\000\000\003u\000\000\000\000\003u\000\000\003u\015\230\000\000\003u\003u\003u\003u\000\000\000\000\000\000\003u\000\000\003u\003u\000\000\016F\003u\003u\016^\015\158\003u\003u\000\000\000\000\003u\015\254\003u\000\000\000\000\000\000\000\000\003u\003u\016\022\016.\n\237\n\237\000\000\n\237\000\000\n\237\000\000\000\000\000\000\n\237\000\000\000\000\n\237\000\000\n\237\000\000\000\000\014.\000\000\n\237\n\237\n\237\000\000\n\237\n\237\n\237\000\000\000\000\000\000\000\000\000\000\014\150\014\222\014\246\014\174\015\014\000\000\n\237\000\000\000\000\000\000\000\000\000\000\000\000\n\237\n\237\015&\015>\n\237\000\000\000\000\000\000\000\000\000\000\n\237\000\000\015V\n\237\000\000\000\000\000\000\000\000\000\000\n\237\n\237\000\242\000\000\000\000\000\000\000\000\000\000\000\000\n\237\n\237\014F\014\198\015n\015\134\015\182\n\237\n\237\000\000\n\237\000\000\000\000\000\000\n\237\000\000\n\237\015\206\000\000\000\000\000\000\000\000\n\237\000\000\000\000\n\237\000\000\n\237\015\230\000\000\n\237\n\237\n\237\n\237\000\000\000\000\000\000\n\237\000\000\n\237\n\237\000\000\n\237\n\237\n\237\n\237\015\158\n\237\n\237\000\000\000\000\n\237\015\254\n\237\000\000\000\000\000\000\000\000\n\237\n\237\016\022\016.\003\185\003\185\000\000\003\185\000\000\003\185\000\000\000\000\000\000\003\185\000\000\000\000\003\185\000\000\003\185\000\000\000\000\003\185\000\000\003\185\003\185\003\185\000\000\003\185\003\185\003\185\000\000\000\000\000\000\000\000\000\000\003\185\003\185\003\185\003\185\003\185\000\000\003\185\000\000\000\000\000\000\000\000\000\000\000\000\003\185\003\185\003\185\003\185\003\185\000\000\000\000\000\000\000\000\000\000\003\185\000\000\003\185\003\185\000\000\000\000\000\000\000\000\000\000\003\185\003\185\003\185\000\000\000\000\000\000\000\000\000\000\000\000\003\185\003\185\003\185\003\185\003\185\003\185\003\185\003\185\003\185\000\000\003\185\000\000\000\000\000\000\003\185\000\000\003\185\003\185\000\000\000\000\000\000\000\000\003\185\000\000\000\000\003\185\000\000\003\185\003\185\000\000\003\185\003\185\003\185\003\185\000\000\000\000\000\000\003\185\000\000\003\185\003\185\000\000\012\250\003\185\003\185\003\185\003\185\003\185\003\185\000\000\000\000\003\185\003\185\r\014\000\000\000\000\000\000\000\000\003\185\003\185\003\185\003\185\003\181\003\181\000\000\003\181\000\000\003\181\000\000\000\000\000\000\003\181\000\000\000\000\003\181\000\000\003\181\000\000\000\000\014.\000\000\003\181\003\181\003\181\000\000\003\181\003\181\003\181\000\000\000\000\000\000\000\000\000\000\014\150\014\222\014\246\014\174\015\014\000\000\003\181\000\000\000\000\000\000\000\000\000\000\000\000\003\181\003\181\015&\015>\003\181\000\000\000\000\000\000\000\000\000\000\003\181\000\000\015V\003\181\000\000\000\000\000\000\000\000\000\000\003\181\003\181\000\242\000\000\000\000\000\000\000\000\000\000\000\000\003\181\003\181\014F\014\198\015n\015\134\015\182\003\181\003\181\000\000\003\181\000\000\000\000\000\000\003\181\000\000\003\181\015\206\000\000\000\000\000\000\000\000\003\181\000\000\000\000\003\181\000\000\003\181\015\230\000\000\003\181\003\181\003\181\003\181\000\000\000\000\000\000\003\181\000\000\003\181\003\181\000\000\016F\003\181\003\181\016^\015\158\003\181\003\181\000\000\000\000\003\181\015\254\003\181\000\000\000\000\000\000\000\000\003\181\003\181\016\022\016.\003\217\003\217\000\000\003\217\000\000\003\217\000\000\000\000\000\000\003\217\000\000\000\000\003\217\000\000\003\217\000\000\000\000\003\217\000\000\003\217\003\217\003\217\000\000\003\217\003\217\003\217\000\000\000\000\000\000\000\000\000\000\003\217\003\217\003\217\003\217\003\217\000\000\003\217\000\000\000\000\000\000\000\000\000\000\000\000\003\217\003\217\003\217\003\217\003\217\000\000\000\000\000\000\000\000\000\000\003\217\000\000\003\217\003\217\000\000\000\000\000\000\000\000\000\000\003\217\003\217\003\217\000\000\000\000\000\000\000\000\000\000\000\000\003\217\003\217\003\217\003\217\003\217\003\217\003\217\003\217\003\217\000\000\003\217\000\000\000\000\000\000\003\217\000\000\003\217\003\217\000\000\000\000\000\000\000\000\003\217\000\000\000\000\003\217\000\000\003\217\003\217\000\000\003\217\003\217\003\217\003\217\000\000\000\000\000\000\003\217\000\000\003\217\003\217\000\000\012\250\003\217\003\217\003\217\003\217\003\217\003\217\000\000\000\000\003\217\003\217\r\014\000\000\000\000\000\000\000\000\003\217\003\217\003\217\003\217\003\213\003\213\000\000\003\213\000\000\003\213\000\000\000\000\000\000\003\213\000\000\000\000\003\213\000\000\003\213\000\000\000\000\014.\000\000\003\213\003\213\003\213\000\000\003\213\003\213\003\213\000\000\000\000\000\000\000\000\000\000\014\150\014\222\014\246\014\174\015\014\000\000\003\213\000\000\000\000\000\000\000\000\000\000\000\000\003\213\003\213\015&\015>\003\213\000\000\000\000\000\000\000\000\000\000\003\213\000\000\015V\003\213\000\000\000\000\000\000\000\000\000\000\003\213\003\213\000\242\000\000\000\000\000\000\000\000\000\000\000\000\003\213\003\213\014F\014\198\015n\015\134\015\182\003\213\003\213\000\000\003\213\000\000\000\000\000\000\003\213\000\000\003\213\015\206\000\000\000\000\000\000\000\000\003\213\000\000\000\000\003\213\000\000\003\213\015\230\000\000\003\213\003\213\003\213\003\213\000\000\000\000\000\000\003\213\000\000\003\213\003\213\000\000\016F\003\213\003\213\016^\015\158\003\213\003\213\000\000\000\000\003\213\015\254\003\213\000\000\000\000\000\000\000\000\003\213\003\213\016\022\016.\003\201\003\201\000\000\003\201\000\000\003\201\000\000\000\000\000\000\003\201\000\000\000\000\003\201\000\000\003\201\000\000\000\000\003\201\000\000\003\201\003\201\003\201\000\000\003\201\003\201\003\201\000\000\000\000\000\000\000\000\000\000\003\201\003\201\003\201\003\201\003\201\000\000\003\201\000\000\000\000\000\000\000\000\000\000\000\000\003\201\003\201\003\201\003\201\003\201\000\000\000\000\000\000\000\000\000\000\003\201\000\000\003\201\003\201\000\000\000\000\000\000\000\000\000\000\003\201\003\201\003\201\000\000\000\000\000\000\000\000\000\000\000\000\003\201\003\201\003\201\003\201\003\201\003\201\003\201\003\201\003\201\000\000\003\201\000\000\000\000\000\000\003\201\000\000\003\201\003\201\000\000\000\000\000\000\000\000\003\201\000\000\000\000\003\201\000\000\003\201\003\201\000\000\003\201\003\201\003\201\003\201\000\000\000\000\000\000\003\201\000\000\003\201\003\201\000\000\012\250\003\201\003\201\003\201\003\201\003\201\003\201\000\000\000\000\003\201\003\201\r\014\000\000\000\000\000\000\000\000\003\201\003\201\003\201\003\201\003\197\003\197\000\000\003\197\000\000\003\197\000\000\000\000\000\000\003\197\000\000\000\000\003\197\000\000\003\197\000\000\000\000\014.\000\000\003\197\003\197\003\197\000\000\003\197\003\197\003\197\000\000\000\000\000\000\000\000\000\000\014\150\014\222\014\246\014\174\015\014\000\000\003\197\000\000\000\000\000\000\000\000\000\000\000\000\003\197\003\197\015&\015>\003\197\000\000\000\000\000\000\000\000\000\000\003\197\000\000\015V\003\197\000\000\000\000\000\000\000\000\000\000\003\197\003\197\000\242\000\000\000\000\000\000\000\000\000\000\000\000\003\197\003\197\014F\014\198\015n\015\134\015\182\003\197\003\197\000\000\003\197\000\000\000\000\000\000\003\197\000\000\003\197\015\206\000\000\000\000\000\000\000\000\003\197\000\000\000\000\003\197\000\000\003\197\015\230\000\000\003\197\003\197\003\197\003\197\000\000\000\000\000\000\003\197\000\000\003\197\003\197\000\000\016F\003\197\003\197\016^\015\158\003\197\003\197\000\000\000\000\003\197\015\254\003\197\000\000\000\000\000\000\000\000\003\197\003\197\016\022\016.\003\161\003\161\000\000\003\161\000\000\003\161\000\000\000\000\000\000\003\161\000\000\000\000\003\161\000\000\003\161\000\000\000\000\003\161\000\000\003\161\003\161\003\161\000\000\003\161\003\161\003\161\000\000\000\000\000\000\000\000\000\000\003\161\003\161\003\161\003\161\003\161\000\000\003\161\000\000\000\000\000\000\000\000\000\000\000\000\003\161\003\161\003\161\003\161\003\161\000\000\000\000\000\000\000\000\000\000\003\161\000\000\003\161\003\161\000\000\000\000\000\000\000\000\000\000\003\161\003\161\003\161\000\000\000\000\000\000\000\000\000\000\000\000\003\161\003\161\003\161\003\161\003\161\003\161\003\161\003\161\003\161\000\000\003\161\000\000\000\000\000\000\003\161\000\000\003\161\003\161\000\000\000\000\000\000\000\000\003\161\000\000\000\000\003\161\000\000\003\161\003\161\000\000\003\161\003\161\003\161\003\161\000\000\000\000\000\000\003\161\000\000\003\161\003\161\000\000\012\250\003\161\003\161\003\161\003\161\003\161\003\161\000\000\000\000\003\161\003\161\r\014\000\000\000\000\000\000\000\000\003\161\003\161\003\161\003\161\003\157\003\157\000\000\003\157\000\000\003\157\000\000\000\000\000\000\003\157\000\000\000\000\003\157\000\000\003\157\000\000\000\000\014.\000\000\003\157\003\157\003\157\000\000\003\157\003\157\003\157\000\000\000\000\000\000\000\000\000\000\014\150\014\222\014\246\014\174\015\014\000\000\003\157\000\000\000\000\000\000\000\000\000\000\000\000\003\157\003\157\015&\015>\003\157\000\000\000\000\000\000\000\000\000\000\003\157\000\000\015V\003\157\000\000\000\000\000\000\000\000\000\000\003\157\003\157\000\242\000\000\000\000\000\000\000\000\000\000\000\000\003\157\003\157\014F\014\198\015n\015\134\015\182\003\157\003\157\000\000\003\157\000\000\000\000\000\000\003\157\000\000\003\157\015\206\000\000\000\000\000\000\000\000\003\157\000\000\000\000\003\157\000\000\003\157\015\230\000\000\003\157\003\157\003\157\003\157\000\000\000\000\000\000\003\157\000\000\003\157\003\157\000\000\016F\003\157\003\157\016^\015\158\003\157\003\157\000\000\000\000\003\157\015\254\003\157\000\000\000\000\000\000\000\000\003\157\003\157\016\022\016.\003\177\003\177\000\000\003\177\000\000\003\177\000\000\000\000\000\000\003\177\000\000\000\000\003\177\000\000\003\177\000\000\000\000\003\177\000\000\003\177\003\177\003\177\000\000\003\177\003\177\003\177\000\000\000\000\000\000\000\000\000\000\003\177\003\177\003\177\003\177\003\177\000\000\003\177\000\000\000\000\000\000\000\000\000\000\000\000\003\177\003\177\003\177\003\177\003\177\000\000\000\000\000\000\000\000\000\000\003\177\000\000\003\177\003\177\000\000\000\000\000\000\000\000\000\000\003\177\003\177\003\177\000\000\000\000\000\000\000\000\000\000\000\000\003\177\003\177\003\177\003\177\003\177\003\177\003\177\003\177\003\177\000\000\003\177\000\000\000\000\000\000\003\177\000\000\003\177\003\177\000\000\000\000\000\000\000\000\003\177\000\000\000\000\003\177\000\000\003\177\003\177\000\000\003\177\003\177\003\177\003\177\000\000\000\000\000\000\003\177\000\000\003\177\003\177\000\000\012\250\003\177\003\177\003\177\003\177\003\177\003\177\000\000\000\000\003\177\003\177\r\014\000\000\000\000\000\000\000\000\003\177\003\177\003\177\003\177\003\173\003\173\000\000\003\173\000\000\003\173\000\000\000\000\000\000\003\173\000\000\000\000\003\173\000\000\003\173\000\000\000\000\014.\000\000\003\173\003\173\003\173\000\000\003\173\003\173\003\173\000\000\000\000\000\000\000\000\000\000\014\150\014\222\014\246\014\174\015\014\000\000\003\173\000\000\000\000\000\000\000\000\000\000\000\000\003\173\003\173\015&\015>\003\173\000\000\000\000\000\000\000\000\000\000\003\173\000\000\015V\003\173\000\000\000\000\000\000\000\000\000\000\003\173\003\173\000\242\000\000\000\000\000\000\000\000\000\000\000\000\003\173\003\173\014F\014\198\015n\015\134\015\182\003\173\003\173\000\000\003\173\000\000\000\000\000\000\003\173\000\000\003\173\015\206\000\000\000\000\000\000\000\000\003\173\000\000\000\000\003\173\000\000\003\173\015\230\000\000\003\173\003\173\003\173\003\173\000\000\000\000\000\000\003\173\000\000\003\173\003\173\000\000\016F\003\173\003\173\016^\015\158\003\173\003\173\000\000\000\000\003\173\015\254\003\173\000\000\000\000\000\000\000\000\003\173\003\173\016\022\016.\003\169\003\169\000\000\003\169\000\000\003\169\000\000\000\000\000\000\003\169\000\000\000\000\003\169\000\000\003\169\000\000\000\000\003\169\000\000\003\169\003\169\003\169\000\000\003\169\003\169\003\169\000\000\000\000\000\000\000\000\000\000\003\169\003\169\003\169\003\169\003\169\000\000\003\169\000\000\000\000\000\000\000\000\000\000\000\000\003\169\003\169\003\169\003\169\003\169\000\000\000\000\000\000\000\000\000\000\003\169\000\000\003\169\003\169\000\000\000\000\000\000\000\000\000\000\003\169\003\169\003\169\000\000\000\000\000\000\000\000\000\000\000\000\003\169\003\169\003\169\003\169\003\169\003\169\003\169\003\169\003\169\000\000\003\169\000\000\000\000\000\000\003\169\000\000\003\169\003\169\000\000\000\000\000\000\000\000\003\169\000\000\000\000\003\169\000\000\003\169\003\169\000\000\003\169\003\169\003\169\003\169\000\000\000\000\000\000\003\169\000\000\003\169\003\169\000\000\012\250\003\169\003\169\003\169\003\169\003\169\003\169\000\000\000\000\003\169\003\169\r\014\000\000\000\000\000\000\000\000\003\169\003\169\003\169\003\169\003\165\003\165\000\000\003\165\000\000\003\165\000\000\000\000\000\000\003\165\000\000\000\000\003\165\000\000\003\165\000\000\000\000\014.\000\000\003\165\003\165\003\165\000\000\003\165\003\165\003\165\000\000\000\000\000\000\000\000\000\000\014\150\014\222\014\246\014\174\015\014\000\000\003\165\000\000\000\000\000\000\000\000\000\000\000\000\003\165\003\165\015&\015>\003\165\000\000\000\000\000\000\000\000\000\000\003\165\000\000\015V\003\165\000\000\000\000\000\000\000\000\000\000\003\165\003\165\000\242\000\000\000\000\000\000\000\000\000\000\000\000\003\165\003\165\014F\014\198\015n\015\134\015\182\003\165\003\165\000\000\003\165\000\000\000\000\000\000\003\165\000\000\003\165\015\206\000\000\000\000\000\000\000\000\003\165\000\000\000\000\003\165\000\000\003\165\015\230\000\000\003\165\003\165\003\165\003\165\000\000\000\000\000\000\003\165\000\000\003\165\003\165\000\000\016F\003\165\003\165\016^\015\158\003\165\003\165\000\000\000\000\003\165\015\254\003\165\000\000\000\000\000\000\000\000\003\165\003\165\016\022\016.\003\193\003\193\000\000\003\193\000\000\003\193\000\000\000\000\000\000\003\193\000\000\000\000\003\193\000\000\003\193\000\000\000\000\003\193\000\000\003\193\003\193\003\193\000\000\003\193\003\193\003\193\000\000\000\000\000\000\000\000\000\000\003\193\003\193\003\193\003\193\003\193\000\000\003\193\000\000\000\000\000\000\000\000\000\000\000\000\003\193\003\193\003\193\003\193\003\193\000\000\000\000\000\000\000\000\000\000\003\193\000\000\003\193\003\193\000\000\000\000\000\000\000\000\000\000\003\193\003\193\003\193\000\000\000\000\000\000\000\000\000\000\000\000\003\193\003\193\003\193\003\193\003\193\003\193\003\193\003\193\003\193\000\000\003\193\000\000\000\000\000\000\003\193\000\000\003\193\003\193\000\000\000\000\000\000\000\000\003\193\000\000\000\000\003\193\000\000\003\193\003\193\000\000\003\193\003\193\003\193\003\193\000\000\000\000\000\000\003\193\000\000\003\193\003\193\000\000\012\250\003\193\003\193\003\193\003\193\003\193\003\193\000\000\000\000\003\193\003\193\r\014\000\000\000\000\000\000\000\000\003\193\003\193\003\193\003\193\003\189\003\189\000\000\003\189\000\000\003\189\000\000\000\000\000\000\003\189\000\000\000\000\003\189\000\000\003\189\000\000\000\000\014.\000\000\003\189\003\189\003\189\000\000\003\189\003\189\003\189\000\000\000\000\000\000\000\000\000\000\014\150\014\222\014\246\014\174\015\014\000\000\003\189\000\000\000\000\000\000\000\000\000\000\000\000\003\189\003\189\015&\015>\003\189\000\000\000\000\000\000\000\000\000\000\003\189\000\000\015V\003\189\000\000\000\000\000\000\000\000\000\000\003\189\003\189\000\242\000\000\000\000\000\000\000\000\000\000\000\000\003\189\003\189\014F\014\198\015n\015\134\015\182\003\189\003\189\000\000\003\189\000\000\000\000\000\000\003\189\000\000\003\189\015\206\000\000\000\000\000\000\000\000\003\189\000\000\000\000\003\189\000\000\003\189\015\230\000\000\003\189\003\189\003\189\003\189\000\000\000\000\000\000\003\189\000\000\003\189\003\189\000\000\016F\003\189\003\189\016^\015\158\003\189\003\189\000\000\000\000\003\189\015\254\003\189\000\000\000\000\000\000\000\000\003\189\003\189\016\022\016.\003\225\003\225\000\000\003\225\000\000\003\225\000\000\000\000\000\000\003\225\000\000\000\000\003\225\000\000\003\225\000\000\000\000\003\225\000\000\003\225\003\225\003\225\000\000\003\225\003\225\003\225\000\000\000\000\000\000\000\000\000\000\003\225\003\225\003\225\003\225\003\225\000\000\003\225\000\000\000\000\000\000\000\000\000\000\000\000\003\225\003\225\003\225\003\225\003\225\000\000\000\000\000\000\000\000\000\000\003\225\000\000\003\225\003\225\000\000\000\000\000\000\000\000\000\000\003\225\003\225\003\225\000\000\000\000\000\000\000\000\000\000\000\000\003\225\003\225\003\225\003\225\003\225\003\225\003\225\003\225\003\225\000\000\003\225\000\000\000\000\000\000\003\225\000\000\003\225\003\225\000\000\000\000\000\000\000\000\003\225\000\000\000\000\003\225\000\000\003\225\003\225\000\000\003\225\003\225\003\225\003\225\000\000\000\000\000\000\003\225\000\000\003\225\003\225\000\000\012\250\003\225\003\225\003\225\003\225\003\225\003\225\000\000\000\000\003\225\003\225\r\014\000\000\000\000\000\000\000\000\003\225\003\225\003\225\003\225\003\221\003\221\000\000\003\221\000\000\003\221\000\000\000\000\000\000\003\221\000\000\000\000\003\221\000\000\003\221\000\000\000\000\014.\000\000\003\221\003\221\003\221\000\000\003\221\003\221\003\221\000\000\000\000\000\000\000\000\000\000\014\150\014\222\014\246\014\174\015\014\000\000\003\221\000\000\000\000\000\000\000\000\000\000\000\000\003\221\003\221\015&\015>\003\221\000\000\000\000\000\000\000\000\000\000\003\221\000\000\015V\003\221\000\000\000\000\000\000\000\000\000\000\003\221\003\221\000\242\000\000\000\000\000\000\000\000\000\000\000\000\003\221\003\221\014F\014\198\015n\015\134\015\182\003\221\003\221\000\000\003\221\000\000\000\000\000\000\003\221\000\000\003\221\015\206\000\000\000\000\000\000\000\000\003\221\000\000\000\000\003\221\000\000\003\221\015\230\000\000\003\221\003\221\003\221\003\221\000\000\000\000\000\000\003\221\000\000\003\221\003\221\000\000\016F\003\221\003\221\016^\015\158\003\221\003\221\000\000\000\000\003\221\015\254\003\221\000\000\000\000\000\000\000\000\003\221\003\221\016\022\016.\003\209\003\209\000\000\003\209\000\000\003\209\000\000\000\000\000\000\003\209\000\000\000\000\003\209\000\000\003\209\000\000\000\000\003\209\000\000\003\209\003\209\003\209\000\000\003\209\003\209\003\209\000\000\000\000\000\000\000\000\000\000\003\209\003\209\003\209\003\209\003\209\000\000\003\209\000\000\000\000\000\000\000\000\000\000\000\000\003\209\003\209\003\209\003\209\003\209\000\000\000\000\000\000\000\000\000\000\003\209\000\000\003\209\003\209\000\000\000\000\000\000\000\000\000\000\003\209\003\209\003\209\000\000\000\000\000\000\000\000\000\000\000\000\003\209\003\209\003\209\003\209\003\209\003\209\003\209\003\209\003\209\000\000\003\209\000\000\000\000\000\000\003\209\000\000\003\209\003\209\000\000\000\000\000\000\000\000\003\209\000\000\000\000\003\209\000\000\003\209\003\209\000\000\003\209\003\209\003\209\003\209\000\000\000\000\000\000\003\209\000\000\003\209\003\209\000\000\012\250\003\209\003\209\003\209\003\209\003\209\003\209\000\000\000\000\003\209\003\209\r\014\000\000\000\000\000\000\000\000\003\209\003\209\003\209\003\209\003\205\003\205\000\000\003\205\000\000\003\205\000\000\000\000\000\000\003\205\000\000\000\000\003\205\000\000\003\205\000\000\000\000\014.\000\000\003\205\003\205\003\205\000\000\003\205\003\205\003\205\000\000\000\000\000\000\000\000\000\000\014\150\014\222\014\246\014\174\015\014\000\000\003\205\000\000\000\000\000\000\000\000\000\000\000\000\003\205\003\205\015&\015>\003\205\000\000\000\000\000\000\000\000\000\000\003\205\000\000\015V\003\205\000\000\000\000\000\000\000\000\000\000\003\205\003\205\000\242\000\000\000\000\000\000\000\000\000\000\000\000\003\205\003\205\014F\014\198\015n\015\134\015\182\003\205\003\205\000\000\003\205\000\000\000\000\000\000\003\205\000\000\003\205\015\206\000\000\000\000\000\000\000\000\003\205\000\000\000\000\003\205\000\000\003\205\015\230\000\000\003\205\003\205\003\205\003\205\000\000\000\000\000\000\003\205\000\000\003\205\003\205\000\000\016F\003\205\003\205\016^\015\158\003\205\003\205\000\000\000\000\003\205\015\254\003\205\000\000\000\000\000\000\000\000\003\205\003\205\016\022\016.\003\153\003\153\000\000\003\153\000\000\003\153\000\000\000\000\000\000\003\153\000\000\000\000\003\153\000\000\003\153\000\000\000\000\003\153\000\000\003\153\003\153\003\153\000\000\003\153\003\153\003\153\000\000\000\000\000\000\000\000\000\000\003\153\003\153\003\153\003\153\003\153\000\000\003\153\000\000\000\000\000\000\000\000\000\000\000\000\003\153\003\153\003\153\003\153\003\153\000\000\000\000\000\000\000\000\000\000\003\153\000\000\003\153\003\153\000\000\000\000\000\000\000\000\000\000\003\153\003\153\003\153\000\000\000\000\000\000\000\000\000\000\000\000\003\153\003\153\003\153\003\153\003\153\003\153\003\153\003\153\003\153\000\000\003\153\000\000\000\000\000\000\003\153\000\000\003\153\003\153\000\000\000\000\000\000\000\000\003\153\000\000\000\000\003\153\000\000\003\153\003\153\000\000\003\153\003\153\003\153\003\153\000\000\000\000\000\000\003\153\000\000\003\153\003\153\000\000\012\250\003\153\003\153\003\153\003\153\003\153\003\153\000\000\000\000\003\153\003\153\r\014\000\000\000\000\000\000\000\000\003\153\003\153\003\153\003\153\003\149\003\149\000\000\003\149\000\000\003\149\000\000\000\000\000\000\003\149\000\000\000\000\003\149\000\000\003\149\000\000\000\000\014.\000\000\003\149\003\149\003\149\000\000\003\149\003\149\003\149\000\000\000\000\000\000\000\000\000\000\014\150\014\222\014\246\014\174\015\014\000\000\003\149\000\000\000\000\000\000\000\000\000\000\000\000\003\149\003\149\015&\015>\003\149\000\000\000\000\000\000\000\000\000\000\003\149\000\000\015V\003\149\000\000\000\000\000\000\000\000\000\000\003\149\003\149\000\242\000\000\000\000\000\000\000\000\000\000\000\000\003\149\003\149\014F\014\198\015n\015\134\015\182\003\149\003\149\000\000\003\149\000\000\000\000\000\000\003\149\000\000\003\149\015\206\000\000\000\000\000\000\000\000\003\149\000\000\000\000\003\149\000\000\003\149\015\230\000\000\003\149\003\149\003\149\003\149\000\000\000\000\000\000\003\149\000\000\003\149\003\149\000\000\016F\003\149\003\149\016^\015\158\003\149\003\149\000\000\000\000\003\149\015\254\003\149\000\000\000\000\000\000\000\000\003\149\003\149\016\022\016.\n\253\n\253\000\000\n\253\000\000\n\253\000\000\000\000\000\000\n\253\000\000\000\000\n\253\000\000\n\253\000\000\000\000\014.\000\000\n\253\n\253\n\253\000\000\n\253\n\253\n\253\000\000\000\000\000\000\000\000\000\000\014\150\014\222\014\246\014\174\015\014\000\000\n\253\000\000\000\000\000\000\000\000\000\000\000\000\n\253\n\253\015&\015>\n\253\000\000\000\000\000\000\000\000\000\000\n\253\000\000\015V\n\253\000\000\000\000\000\000\000\000\000\000\n\253\n\253\000\242\000\000\000\000\000\000\000\000\000\000\000\000\n\253\n\253\014F\014\198\015n\015\134\015\182\n\253\n\253\000\000\n\253\000\000\000\000\000\000\n\253\000\000\n\253\015\206\000\000\000\000\000\000\000\000\n\253\000\000\000\000\n\253\000\000\n\253\015\230\000\000\n\253\n\253\n\253\n\253\000\000\000\000\000\000\n\253\000\000\n\253\n\253\000\000\n\253\n\253\n\253\n\253\015\158\n\253\n\253\000\000\000\000\n\253\015\254\n\253\000\000\000\000\000\000\000\000\n\253\n\253\016\022\016.\011U\011U\000\000\011U\000\000\011U\000\000\000\000\000\000\011U\000\000\000\000\011U\000\000\011U\000\000\000\000\011U\000\000\011U\011U\011U\000\000\011U\011U\011U\000\000\000\000\000\000\000\000\000\000\011U\011U\011U\011U\011U\000\000\011U\000\000\000\000\000\000\000\000\000\000\000\000\011U\011U\011U\011U\011U\000\000\000\000\000\000\000\000\000\000\011U\000\000\011U\011U\000\000\000\000\000\000\000\000\000\000\011U\011U\011U\000\000\000\000\000\000\000\000\000\000\000\000\011U\011U\011U\011U\011U\011U\011U\011U\011U\000\000\011U\000\000\000\000\000\000\011U\000\000\011U\011U\000\000\000\000\000\000\000\000\011U\000\000\000\000\011U\000\000\011U\011U\000\000\011U\011U\011U\011U\000\000\000\000\000\000\011U\000\000\011U\011U\000\000\012\250\011U\011U\011U\011U\011U\011U\000\000\000\000\011U\011U\r\014\000\000\000\000\000\000\000\000\011U\011U\011U\011U\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\002\165\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\002\165\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\002\165\002\165\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\020\030\002\165\000\000\000\000\000\000\002\165\000\000\002\165\002\165\000\000\012\250\002\165\002\165\002\165\002\165\002\165\002\165\000\000\000\000\002\165\002\165\r\014\000\000\000\000\000\000\000\000\002\165\002\165\002\165\002\165\002\157\002\157\000\000\002\157\000\000\002\157\000\000\000\000\000\000\002\157\000\000\000\000\002\157\000\000\002\157\000\000\000\000\002\157\000\000\002\157\002\157\002\157\000\000\002\157\002\157\002\157\000\000\000\000\000\000\000\000\000\000\002\157\002\157\002\157\002\157\002\157\000\000\002\157\000\000\000\000\000\000\000\000\000\000\000\000\002\157\002\157\002\157\002\157\002\157\000\000\000\000\000\000\000\000\000\000\002\157\000\000\002\157\002\157\000\000\000\000\000\000\000\000\000\000\002\157\002\157\002\157\000\000\000\000\000\000\000\000\000\000\000\000\002\157\002\157\002\157\002\157\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\012\250\002\157\002\157\002\157\002\157\002\157\002\157\000\000\000\000\002\157\002\157\r\014\000\000\000\000\000\000\000\000\002\157\002\157\002\157\002\157\002\153\002\153\000\000\002\153\000\000\002\153\000\000\000\000\000\000\002\153\000\000\000\000\002\153\000\000\002\153\000\000\000\000\014.\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\014\150\014\222\014\246\014\174\015\014\000\000\002\153\000\000\000\000\000\000\000\000\000\000\000\000\002\153\002\153\015&\015>\002\153\000\000\000\000\000\000\000\000\000\000\002\153\000\000\015V\002\153\000\000\000\000\000\000\000\000\000\000\002\153\002\153\000\242\000\000\000\000\000\000\000\000\000\000\000\000\002\153\002\153\014F\014\198\015n\015\134\015\182\002\153\002\153\000\000\002\153\000\000\000\000\000\000\002\153\000\000\002\153\015\206\000\000\000\000\000\000\000\000\002\153\000\000\000\000\002\153\000\000\002\153\015\230\000\000\002\153\002\153\002\153\002\153\000\000\000\000\000\000\002\153\000\000\002\153\002\153\000\000\016F\002\153\002\153\016^\015\158\002\153\002\153\000\000\000\000\002\153\015\254\002\153\000\000\000\000\000\000\000\000\002\153\002\153\016\022\016.\002\161\002\161\000\000\002\161\000\000\002\161\000\000\000\000\000\000\002\161\000\000\000\000\002\161\000\000\002\161\000\000\000\000\014.\000\000\002\161\002\161\002\161\000\000\002\161\002\161\002\161\000\000\000\000\000\000\000\000\000\000\014\150\014\222\014\246\014\174\015\014\000\000\002\161\000\000\000\000\000\000\000\000\000\000\000\000\002\161\002\161\015&\015>\002\161\000\000\000\000\000\000\000\000\000\000\002\161\000\000\015V\002\161\000\000\000\000\000\000\000\000\000\000\002\161\002\161\000\242\000\000\000\000\000\000\000\000\000\000\000\000\002\161\002\161\014F\014\198\015n\015\134\015\182\002\161\002\161\000\000\002\161\000\000\000\000\000\000\002\161\000\000\002\161\015\206\000\000\000\000\000\000\000\000\002\161\000\000\000\000\002\161\000\000\002\161\015\230\000\000\002\161\002\161\020:\002\161\000\000\000\000\000\000\002\161\000\000\002\161\002\161\000\000\016F\002\161\002\161\016^\015\158\002\161\002\161\000\000\000\000\002\161\015\254\002\161\000\000\000\000\000\000\000\000\002\161\002\161\016\022\016.\002\149\002\149\000\000\002\149\000\000\002\149\000\000\000\000\000\000\002\149\000\000\000\000\002\149\000\000\002\149\000\000\000\000\002\149\000\000\002\149\002\149\002\149\000\000\002\149\002\149\002\149\000\000\000\000\000\000\000\000\000\000\002\149\002\149\002\149\002\149\002\149\000\000\002\149\000\000\000\000\000\000\000\000\000\000\000\000\002\149\002\149\002\149\002\149\002\149\000\000\000\000\000\000\000\000\000\000\002\149\000\000\002\149\002\149\000\000\000\000\000\000\000\000\000\000\002\149\002\149\002\149\000\000\000\000\000\000\000\000\000\000\000\000\002\149\002\149\002\149\002\149\002\149\002\149\002\149\002\149\002\149\000\000\002\149\000\000\000\000\000\000\002\149\000\000\002\149\002\149\000\000\000\000\000\000\000\000\002\149\000\000\000\000\002\149\000\000\002\149\002\149\000\000\002\149\002\149\002\149\002\149\000\000\000\000\000\000\002\149\000\000\002\149\002\149\000\000\012\250\002\149\002\149\002\149\002\149\002\149\002\149\000\000\000\000\002\149\002\149\r\014\000\000\000\000\000\000\000\000\002\149\002\149\002\149\002\149\002\145\002\145\000\000\002\145\000\000\002\145\000\000\000\000\000\000\002\145\000\000\000\000\002\145\000\000\002\145\000\000\000\000\014.\000\000\002\145\002\145\002\145\000\000\002\145\002\145\002\145\000\000\000\000\000\000\000\000\000\000\014\150\014\222\014\246\014\174\015\014\000\000\002\145\000\000\000\000\000\000\000\000\000\000\000\000\002\145\002\145\015&\015>\002\145\000\000\000\000\000\000\000\000\000\000\002\145\000\000\015V\002\145\000\000\000\000\000\000\000\000\000\000\002\145\002\145\000\242\000\000\000\000\000\000\000\000\000\000\000\000\002\145\002\145\014F\014\198\015n\015\134\015\182\002\145\002\145\000\000\002\145\000\000\000\000\000\000\002\145\000\000\002\145\015\206\000\000\000\000\000\000\000\000\002\145\000\000\000\000\002\145\000\000\002\145\015\230\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\016F\002\145\002\145\016^\015\158\002\145\002\145\000\000\000\000\002\145\015\254\002\145\000\000\000\000\000\000\000\000\002\145\002\145\016\022\016.\003\145\003\145\000\000\003\145\000\000\003\145\000\000\000\000\000\000\003\145\000\000\000\000\003\145\000\000\003\145\000\000\000\000\003\145\000\000\003\145\003\145\003\145\000\000\003\145\003\145\003\145\000\000\000\000\000\000\000\000\000\000\003\145\003\145\003\145\003\145\003\145\000\000\003\145\000\000\000\000\000\000\000\000\000\000\000\000\003\145\003\145\003\145\003\145\003\145\000\000\000\000\000\000\000\000\000\000\003\145\000\000\003\145\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\003\145\003\145\003\145\003\145\003\145\003\145\003\145\003\145\003\145\000\000\003\145\000\000\000\000\000\000\003\145\000\000\003\145\003\145\000\000\000\000\000\000\000\000\003\145\000\000\000\000\003\145\000\000\003\145\003\145\000\000\003\145\003\145\003\145\003\145\000\000\000\000\000\000\003\145\000\000\003\145\003\145\000\000\012\250\003\145\003\145\003\145\003\145\003\145\003\145\000\000\000\000\003\145\003\145\r\014\000\000\000\000\000\000\000\000\003\145\003\145\003\145\003\145\003\141\003\141\000\000\003\141\000\000\003\141\000\000\000\000\000\000\003\141\000\000\000\000\003\141\000\000\003\141\000\000\000\000\014.\000\000\003\141\003\141\003\141\000\000\003\141\003\141\003\141\000\000\000\000\000\000\000\000\000\000\014\150\014\222\014\246\014\174\015\014\000\000\003\141\000\000\000\000\000\000\000\000\000\000\000\000\003\141\003\141\015&\015>\003\141\000\000\000\000\000\000\000\000\000\000\003\141\000\000\015V\003\141\000\000\000\000\000\000\000\000\000\000\003\141\003\141\000\242\000\000\000\000\000\000\000\000\000\000\000\000\003\141\003\141\014F\014\198\015n\015\134\015\182\003\141\003\141\000\000\003\141\000\000\000\000\000\000\003\141\000\000\003\141\015\206\000\000\000\000\000\000\000\000\003\141\000\000\000\000\003\141\000\000\003\141\015\230\000\000\003\141\003\141\003\141\003\141\000\000\000\000\000\000\003\141\000\000\003\141\003\141\000\000\016F\003\141\003\141\016^\015\158\003\141\003\141\000\000\000\000\003\141\015\254\003\141\000\000\000\000\000\000\000\000\003\141\003\141\016\022\016.\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\002\133\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\002\133\002\133\002\133\002\133\002\133\000\000\002\133\000\000\000\000\000\000\000\000\000\000\000\000\002\133\002\133\002\133\002\133\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\002\133\000\000\000\000\000\000\000\000\000\000\000\000\002\133\002\133\002\133\002\133\002\133\002\133\002\133\002\133\002\133\000\000\002\133\000\000\000\000\000\000\002\133\000\000\002\133\002\133\000\000\000\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\002\133\002\133\002\133\000\000\000\000\002\133\002\133\r\014\000\000\000\000\000\000\000\000\002\133\002\133\002\133\002\133\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\002\137\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\002\137\002\137\002\137\002\137\002\137\000\000\002\137\011\029\000\000\000\000\000\000\000\000\000\000\002\137\002\137\002\137\002\137\002\137\000\000\000\000\000\000\000\000\000\000\002\137\000\000\002\137\002\137\rj\011\029\000\000\011\029\011\029\002\137\002\137\002\137\000\000\000\000\000\000\000\000\000\000\000\000\002\137\002\137\002\137\002\137\002\137\002\137\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\002\137\002\137\002\137\000\000\000\000\002\137\002\137\r\014\000\000\000\000\br\000\000\002\137\002\137\002\137\002\137\001\n\000\000\000\006\000\000\000\000\000\000\003b\003f\003j\000\000\003n\003\014\000\000\000\000\000\000\bv\003z\001\014\012\250\011\029\000\000\003\"\000\000\000\000\000\000\000\000\001\238\011\029\000\000\r\014\004\158\001\022\011>\011B\001\"\001&\000\000\000\000\004V\000\000\003\130\000\000\004Z\000\000\024\186\n\161\011f\011j\000\000\004\142\004\154\004\166\004\170\011n\t~\002J\001>\000\000\003Z\000\242\000\000\004\162\n\222\000\000\000\000\002N\n\226\n\230\n\242\011\006\000\000\007\138\000\000\001\238\001B\001F\001J\001N\001R\000\000\000\000\011\130\000\000\007\150\007\154\001V\000\000\n\161\000\000\001Z\000\000\003\230\011\142\011\166\r\026\007\166\007\170\t\170\r.\001\250\001^\000\000\000\000\000\000\000\000\003Z\001b\000\000\bz\000\000\000\000\n\161\b\030\b\134\000\000\011\162\000\000\001\158\bf\b\154\000\000\007\174\n\250\b\166\001\162\000\000\020z\005:\r2\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\n\161\000\000\000\000\011:\006\030\000\000\000\000\n\161\001\238\000\000\019\242\000\000\004\158\001\022\011>\011B\001\"\001&\000\000\000\000\004V\000\000\003\130\000\000\004Z\000\000\011F\000\000\011f\011j\000\242\004\142\004\154\004\166\004\170\011n\t~\000\000\001>\000\000\003Z\000\000\000\000\004\162\n\222\000\000\000\000\022\n\n\226\n\230\n\242\011\006\000\000\007\138\000\000\000\000\001B\001F\001J\001N\001R\000\000\000\000\011\130\000\000\007\150\007\154\001V\000\000\000\000\000\000\001Z\000\000\0119\011\142\011\166\r\026\007\166\007\170\bz\r.\b\185\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\0119\000\000\000\000\001\158\b\186\b\185\000\000\007\174\n\250\b\185\001\162\000\000\020z\005:\r2\005\197\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\rB\000\000\004*\rJ\r\206\000\000\005\197\000\000\004.\001\238\000\242\026\002\000\000\003~\000\000\0042\0046\000\000\000\000\000\000\004:\004V\000\000\003\130\rR\004Z\r\214\025\150\000\000\004\134\004\138\000\000\004\142\004\154\004\166\004\170\004\178\t~\000\000\000\000\025\250\003Z\000\000\000\000\004\162\n\222\026\018\000\000\000\000\n\226\n\230\n\242\011\006\b\185\007\138\000\000\000\000\000\000\000\000\bz\0119\000\000\026\026\b\030\011\130\000\000\007\150\007\154\0119\r\146\b\154\000\000\r\158\000\000\b\166\011\142\011\166\r\026\007\166\007\170\026\"\r.\026^\000\000\000\006\005\197\005\197\000\250\003b\003f\003j\003\254\003n\003\014\000\000\000\000\000\000\000\000\003z\000\000\000\000\005\229\026\154\030\174\007\174\n\250\000\000\004.\001\238\011\018\005:\r2\003~\000\000\0042\0046\000\000\000\000\000\000\004:\004V\000\000\003\130\000\000\004Z\000\000\025\150\000\000\004\134\004\138\000\000\004\142\004\154\004\166\004\170\004\178\t~\000\000\000\000\025\250\003Z\000\000\000\000\004\162\n\222\026\018\000\000\000\000\n\226\n\230\n\242\011\006\000\000\007\138\000\000\000\000\000\000\000\000\000\000\000\000\000\000\026\026\000\000\011\130%\130\007\150\007\154\000\000%\162\000\000\000\000\000\000\000\000\000\000\011\142\011\166\r\026\007\166\007\170\026\"\r.\026^\000\000\000\006%\195\022J\000\250\003b\003f\003j\003\254\003n\003\014\000\000\000\000\000\000\000\000\003z\000\000\000\000%\242\000\000\030\174\007\174\n\250\000\000\004.\001\238\011\018\005:\r2\003~\000\000\0042\0046\000\000\000\000\000\000\004:\004V\000\000\003\130\000\000\004Z\000\000\025\150\000\000\004\134\004\138\000\000\004\142\004\154\004\166\004\170\004\178\t~\000\000\000\000\025\250\003Z\000\000\000\000\004\162\n\222\026\018\000\000\000\000\n\226\n\230\n\242\011\006\000\000\007\138\000\000\000\000\000\000\000\000\000\000\000\000\000\000\026\026\000\000\011\130%\130\007\150\007\154\000\000%\162\000\000\000\000\000\000\000\000\000\000\011\142\011\166\r\026\007\166\007\170\026\"\r.\026^\000m\000\000\005\237\000\000\000\000\000\000\000\000\n\157\001\n\000m\000\000\000\000\000\000\000m\001\206\003\146\003j\011\254\000\000\003\014\030\174\007\174\n\250\000\000\003z\001\014\011\018\005:\r2\003\"\000\000\000\000\000\000\000\000\001\238\000\000\000\000\000m\001\018\001\022\001\026\003\194\001\"\001&\000m\000\000\001\210\000\000\000\000\n\157\000\000\000\000\003\198\000\000\0012\bb\000\000\000m\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\n\157\004\190\000\000\004\198\007~\000m\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\000\000\001Z\000\000\br\000\000\000\000\004N\007\166\007\170\003j\000m\007\254\001^\n\157\000\000\002\026\003\246\006\030\001b\000\000\n\157\000\000\n\166\000\000\bv\000m\000\000\001\238\000\000\001\158\bf\000\000\000\000\007\174\000\000\000\000\001\162\000\000\001\166\005:\000\000\000\213\001\170\000\000\001\174\001\178\000\213\000\000\000\000\003j\000\213\004J\003\014\000\000\r\134\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\242\r\190\000\000\003~\000\000\000\000\000\000\000\000\000\000\r\198\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\001\234\004\162\n\222\000\213\000\213\000\213\n\226\n\230\n\242\000\000\017\254\007\138\000\213\000\213\000\000\000\000\bz\000\000\001\238\000\213\b\030\012B\000\213\007\150\007\154\000\000\000\213\b\154\000\000\000\000\000\000\b\166\027\174\000\000\000\000\007\166\007\170\000\213\000\000\000\213\000\000\000\000\000\213\000\213\005\002\000\000\028&\000\000\000\000\000\000\003Z\br\000\213\000\000\000\000\000\000\000\000\000\000\028>\000\213\000\213\007\174\n\250\000\000\000\000\000\237\011\018\005:\000\000\000\213\000\237\000\213\bv\003j\000\237\000\000\003\014\000\000\r\134\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\r\190\000\000\003~\000\000\000\000\000\000\000\000\000\000\r\198\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\242\001\194\000\000\000\237\000\000\000\000\000\237\003Z\000\000\000\000\004\162\n\222\000\237\000\237\000\237\n\226\n\230\n\242\000\000\017\254\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\bz\000\000\000\237\000\237\b\030\012n\000\000\000\000\000\000\000\000\000\000\b\154\000\237\000\000\000\000\b\166\000\000\000\000\000\000\000\237\000\237\007\174\n\250\000\000\000\000\005\017\011\018\005:\000\000\000\237\005\017\000\237\003\146\003j\005\017\000\000\003\014\000\000\t2\000\000\000\000\003z\000\000\000\000\005\017\000\000\000\000\000\000\005\017\000\000\005\017\001\238\000\000\tj\000\000\000i\000\000\000\000\003\150\000\000\000\000\011\178\005\017\000\000\000i\000\000\000\000\000\000\000i\005\017\000\000\000\000\003\170\000\000\n\129\011\250\000\000\001\194\000\000\005\017\000\000\000\000\005\017\003Z\000\000\000\000\004\182\004\186\005\017\005\017\rQ\004\190\000i\004\198\000\000\012b\007\138\n\129\000\000\000i\000\000\000\000\000\000\000\000\005\017\005\017\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\005\017\000\000\005\017\016\130\000\000\005\017\005\017\000\000\000\000\000\000\000\000\000i\000\000\000\000\000\000\000\000\000\000\rQ\000\000\r\146\000\000\rQ\016\138\005\017\007\174\000\000\000\000\000\000\rQ\001\n\005:\000\000\rQ\n\129\005\017\000\000\003\146\003j\bB\000i\003\014\000\000\000\000\001.\0022\003z\001\014\000\000\000\000\000\000\003\"\002E\000\000\000\000\000i\001\238\000\000\000\000\002E\001\018\001\022\001\026\003\194\001\"\001&\000\000\000\000\000\000\000\000\002E\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\002E\000\000\004\190\000\000\004\198\007~\000\000\007\138\002E\000\000\001B\001F\001J\001N\001R\002E\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\011Z\000\000\000\000\002E\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\002E\000\000\000\000\000\000\t\174\000\000\000\000\002E\000\000\001\230\001\234\000\000\000\000\000~\000\000\000\000\000\130\000\134\002E\000\000\000\000\000\000\000\000\000\138\000\142\000\146\000\n\006U\001\238\003\018\000\000\000\000\000\000\000\000\000\000\000\150\000\154\000\158\000\162\006U\000\166\000\170\002E\000\174\000\000\000\000\000\000\000\178\000\182\000\186\002E\000\000\003J\000\190#\006\000\194\000\198\002E\003F\000\000\003Z\004\226\004\238\000\000\000\202\000\000\000\206\000\000\004\250\000\000\000\000\006U\000\210\000\214\011!\000\218\000\006\000\000\000\000\000\000\003b\003f\003j\002E\003n\003\014\000\000\000\000\004\254\000\000\003z#2\000\000\000\000\000\000\011!\000\000\011!\011!\000\000\001\238\006U\000\000\000\000\003~\006U\0042\0046\006U#\030\000\000\000\000\004V\000\000\003\130\000\000\004Z\000\000\t\134\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\001\230\001\234\004\162\n\222\000\000#\n\000\000\n\226\n\230\n\242\011\006\000\000\007\138\000\000\000\000\000\000\000\000\000\000\000\000\001\238\003\018\000\000\011\130\000\000\007\150\007\154\000\000\000\000\000\000\000\000\000\000\000\000\000\000\rZ\011\166\r\026\007\166\007\170\000\000\r.\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\000\000\003j\011!\000\000\000\000\004\250\000\000\023v\007\174\n\250\011!\000\000\000\000\011\018\005:\r2\011\025\000\000\000\006\001\238\000\000\000\000\003b\003f\003j\004\254\003n\003\014\000\000\023\194\000\000\000\000\003z\030\206\000\000\000\000\000\000\011\025\000\000\011\025\011\025\000\000\001\238 \014\000\000\004f\003~ \018\0042\0046\000\000\003Z\000\000\000\000\004V\000\000\003\130\000\000\004Z B\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\000\000\000\000\004\162\n\222\000\000\000\000\016\001\n\226\n\230\n\242\011\006 R\007\138\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\011\130\000\000\007\150\007\154\016\001\015\169\000\000\002b\000\000\015\169\002f\rZ\011\166\r\026\007\166\007\170\000\000\r.\000\000\015\169\000\000\000\000\000\000\000\000\002r\015\169\000\000\002z\000\000\015\245\000\000\000\000\000\000\000\000\011\025\000\000\000\000\015\169\000\000\000\000\007\174\n\250\011\025\000\000\015\169\011\018\005:\r2\011\173\000\000\000\000\011\173\000\000\002~\015\169\011\173\011\173\015\169\000\000\011\173\000\000\011\173\000\000\015\169\011\173\000\000\000\000\000\000\011\173\011\173\000\000\011\173\011\173\000\000\011\173\000\000\011\173\000\000\000\000\015\169\000\000\011\173\015\169\000\000\011\173\000\000\015\169\000\000\000\000\000\000\000\000\000\000\000\000\011\173\000\000\011\173\000\000\015\169\011\173\015\169\011\173\000\000\015\169\002\130\000\000\000\000\011\173\000\000%z\011\173\011\173\000\000\000\000\011\173\011\173\002E\011\173\000\000\011\173\011\173\015\169\000\000\002E\000\000\000\000\002E\000\000\002E\011\173\000\000\011\173\011\173\011\173\002E\011\173\000\000\000\000\000\000\000\000\000\000\000\000\000\n\000\000\011\173\011\173\000\000\000\000\002E\011\173\000\000\011\173\002E\000\000\000\000\000\000\007\210\000\n\002E\000\000\002E\000\000\000\000\011\173\011\173\011\173\002E\011\173\011\173\000\000\011\173\002E\011\173\002E\011\173\002E\011\173\000\000\011\173\002E\002E\002E\000\000\002E\002E\000\000\002E\000\000\002E\002E\000\000\000\000\000\000\000\000\000\000\002E\002E\000\000\000\000\002E\002E\002E\000\000\002E\000\000\002E\002E\000\n\000\000\002E\000\000\002E\000\000\002E\002E\002E\000\000\000\000\000\000\002E\002E\000\000\002E\002E\002E\002E\002E\002E\000\000\000\000\000\000\002E\000\000\000\000\002E\002E\000\000\000\000\002E\002E\002E\002E\002E\002E\002E\000\000\000\000\000\000\000\000\002E\000\000\000\000\000\000\000\000\002E\002E\002E\002E\000\000\002E\000\000\000\000\000\000\000\000\000\000\002E\002E\002E\002E\002E\000\000\002E\b%\000\000\000A\000\000\002E\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\b%\002E\002E\000\000\000\000\000A\002E\002E\002E\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\177\000A\000A\000\000\000\000\005\177\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\177\000\000\000\000\000\000\000\000\000\000\000\000\000A\000A\000A\000A\000A\000\000\000A\b!\000\000\000=\000\000\000\000\000\000\000=\000=\000=\005\177\000=\000=\000\000\000\000\000\000\000\000\000=\000\000\005\177\000\000\000\000\b!\000A\000A\005\177\004\"\000=\000A\000A\000A\000=\000\000\000=\000=\005\177\000\000\000\000\000\000\000=\000\000\000=\000\000\000=\000\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\213\000=\000=\000\000\005\177\027\198\000=\000=\000=\000=\000\000\000=\000\000\005\177\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=\b1\000\000\015q\000\000\000\000\000\000\015q\015q\015q\027\242\015q\015q\000\000\000\000\000\000\000\000\015q\000\000\025\250\000\000\000\000\b1\000=\000=\026\018\000\000\015q\000=\000=\000=\015q\000\000\015q\015q\028\030\000\000\000\000\000\000\015q\000\000\015q\000\000\015q\000\000\000\000\000\000\015q\015q\000\000\015q\015q\015q\015q\015q\015q\000\000\000\000\000\000\015q\000\000\000\000\015q\015q\000\000\005\213\000\000\015q\015q\015q\015q\000\000\015q\000\000\028\130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\015q\000\000\015q\015q\000\000\000\000\000\000\000\000\000\000\000\000\000\000\015q\015q\015q\015q\015q\000\000\015q\b-\000\000\015m\000\000\000\000\000\000\015m\015m\015m\000\000\015m\015m\000\000\000\000\000\000\000\000\015m\000\000\000\000\000\000\000\000\b-\015q\015q\000\000\000\000\015m\015q\015q\015q\015m\000\000\015m\015m\000\000\000\000\000\000\000\000\015m\000\000\015m\000\000\015m\000\000\000\000\000\000\015m\015m\000\000\015m\015m\015m\015m\015m\015m\000\000\000\000\000\000\015m\000\000\000\000\015m\015m\000\000\000\000\000\000\015m\015m\015m\015m\000\000\015m\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\015m\000\000\015m\015m\000\000\000\000\000\000\000\000\000\000\000\000\000\000\015m\015m\015m\015m\015m\000\000\015m\005\185\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\026\158\000\000\000\000\015m\015m\000\000\004.\001\238\015m\015m\015m\003~\000\000\0042\0046\000\000\000\000\000\000\026\162\004V\000\000\003\130\000\000\004Z\000\000\026\202\000\000\004\134\004\138\000\000\004\142\004\154\004\166\004\170\004\178\t~\000\000\000\000\025\250\003Z\000\000\000\000\004\162\n\222\026\018\000\000\000\000\n\226\n\230\n\242\011\006\000\000\007\138\000\000\000\000\000\000\000\000\000\000\000\000\000\000\026\026\000\000\011\130\000\000\007\150\007\154\000\000\000\000\000\000\000\000\000\000\000\000\000\000\024\130\011\166\r\026\007\166\007\170\026\"\r.\027b\000\000\000\000\005\185\005\185\000\000\000\006\000\000\000\000\000\000\003b\003f\003j\000\000\003n\003\014\024\154\000\000\000\000\000\000\003z\027r\007\174\n\250\000\000\000\000\000\000\011\018\005:\r2\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\000\000\000\000\004\162\n\222\000\000\000\000\000\000\n\226\n\230\n\242\011\006\000\000\007\138\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\011\130\000\000\007\150\007\154\000\000\000\000\000\000\000\000\000\000\000\000\000\000\022\198\011\166\r\026\007\166\007\170\000\000\r.\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\021\000\000\000\006\000\000\000\000\002\021\003b\003f\003j\000\000\003n\003\014\000\000\007\174\n\250\022\222\003z\000\000\011\018\005:\r2\000\000\000\000\004\194\000\000\002\021\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\002\021\004\142\004\154\004\166\004\170\004\178\t~\000\000\000\000\002\021\003Z\000\000\000\000\004\162\n\222\002\021\002\021\000\242\n\226\n\230\n\242\011\006\000\000\007\138\002\021\002\021\000\000\000\000\000\000\000\000\000\000\000\000\000\000\011\130\000\000\007\150\007\154\000\000\000\000\000\000\000\000\000\000\000\000\000\000\022\150\011\166\r\026\007\166\007\170\000\000\r.\016U\000\000\000\006\000\000\002\021\016U\003b\003f\003j\000\000\003n\003\014\000\000\002\021\000\000\000\000\003z\000\000\000\000\000\000\000\000\000\000\007\174\n\250\000\000\016U\001\238\011\018\005:\r2\003~\000\000\0042\0046\005\221\000\000\000\000\000\000\004V\030\218\003\130\000\000\004Z\000\000\000\000\000\000\004\134\004\138\016U\004\142\004\154\004\166\004\170\004\178\t~\000\000\000\000\016U\003Z\004.\000\000\004\162\n\222\016U\016U\000\242\n\226\n\230\n\242\011\006\000\000\007\138\016U\016U\000\000\000\000\000\000\000\000\000\000\000\000\000\000\011\130\031N\007\150\007\154\000\000\000\000\000\000\000\000\000\000\000\000\025\250\020\142\011\166\r\026\007\166\007\170\026\018\r.\000\000\000\000\000\000\000\000\016U\000\000\000\006\031\242 \002\000\000\003b\003f\003j\016U\003n\003\014\021f\000\000\000\000\000\000\003z\000\000\007\174\n\250\000\000\000\000\000\000\011\018\005:\r2\001\238\000\000\000\000\000\000\003~\000\000\0042\0046\005\221\000\000\000\000\000\000\004V\000\000\003\130\000\000\004Z \246\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\000\000\000\000\004\162\n\222\000\000\000\000\000\000\n\226\n\230\n\242\011\006\000\000\007\138\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\011\130\000\000\007\150\007\154\000\000\000\000\000\000\000\000\000\000\000\000\000\000\021\134\011\166\r\026\007\166\007\170\000\000\r.\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\005\177\000\000\000\006\000\000\000\000\005\177\003b\003f\003j\000\000\003n\003\014\000\000\007\174\n\250\021\158\003z\000\000\011\018\005:\r2\000\000\000\000\021\190\000\000\005\177\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\005\177\004\142\004\154\004\166\004\170\004\178\t~\000\000\000\000\005\177\003Z\000\000\000\000\004\162\n\222\005\177\004\"\000\242\n\226\n\230\n\242\011\006\000\000\007\138\005\177\005\177\000\000\000\000\000\000\000\000\000\000\000\000\000\000\011\130\000\000\007\150\007\154\000\000\000\000\000\000\000\000\000\000\000\000\000\000\021\194\011\166\r\026\007\166\007\170\000\000\r.\000\000\000\000\000\006\000\000\005\177\000\000\003b\003f\003j\000\000\003n\003\014\000\000\005\177\000\000\000\000\003z\000\000\000\000\000\000\000\000\000\000\007\174\n\250\000\000\000\000\001\238\011\018\005:\r2\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\000\000\000\000\004\162\n\222\000\000\000\000\000\000\n\226\n\230\n\242\011\006\000\000\007\138\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\011\130\000\000\007\150\007\154\000\000\000\000\000\000\000\000\000\000\000\000\000\000\025\002\011\166\r\026\007\166\007\170\000\000\r.\000\000\000\000\000\006\000\000\000\000\000\000\003b\003f\003j\000\000\003n\003\014\000\000\000\000\000\000\000\000\003z\000\000\000\000\000\000\000\000\000\000\007\174\n\250\000\000\000\000\001\238\011\018\005:\r2\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\000\000\000\000\004\162\n\222\000\000\000\000\000\000\n\226\n\230\n\242\011\006\000\000\007\138\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\011\130\000\000\007\150\007\154\000\000\000\000\000\000\000\000\000\000\000\000\000\000\024j\011\166\r\026\007\166\007\170\000\000\r.\000\000\000\000\000\006\000\000\000\000\000\000\003b\003f\003j\000\000\003n\003\014\000\000\000\000\000\000\000\000\003z\000\000\000\000\000\000\000\000\000\000\007\174\n\250\000\000\000\000\001\238\011\018\005:\r2\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\000\000\000\000\004\162\n\222\000\000\000\000\000\000\n\226\n\230\n\242\011\006\000\000\007\138\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\011\130\000\000\007\150\007\154\000\000\000\000\000\000\000\000\000\000\000\000\000\000\022f\011\166\r\026\007\166\007\170\000\000\r.\000\000\000\000\000\006\000\000\000\000\000\000\003b\003f\003j\000\000\003n\003\014\000\000\000\000\000\000\000\000\003z\000\000\000\000\000\000\000\000\000\000\007\174\n\250\000\000\000\000\001\238\011\018\005:\r2\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\000\000\000\000\004\162\n\222\000\000\000\000\000\000\n\226\n\230\n\242\011\006\000\000\007\138\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\011\130\000\000\007\150\007\154\000\000\000\000\000\000\000\000\000\000\000\000\000\000\012\234\011\166\r\026\007\166\007\170\000\000\r.\000\000\000\000\000\006\000\000\000\000\000\000\003b\003f\003j\000\000\003n\003\014\000\000\000\000\000\000\000\000\003z\000\000\000\000\000\000\000\000\000\000\007\174\n\250\000\000\000\000\001\238\011\018\005:\r2\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\000\000\000\000\004\162\n\222\000\000\000\000\000\000\n\226\n\230\n\242\011\006\000\000\007\138\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\011\130\000\000\007\150\007\154\000\000\000\000\000\000\000\000\000\000\000\000\000\000\012\254\011\166\r\026\007\166\007\170\000\000\r.\000\000\000\000\000\006\000\000\000\000\000\000\003b\003f\003j\000\000\003n\003\014\000\000\000\000\000\000\000\000\003z\000\000\000\000\000\000\000\000\000\000\007\174\n\250\000\000\000\000\001\238\011\018\005:\r2\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\000\000\000\000\004\162\n\222\000\000\000\000\000\000\n\226\n\230\n\242\011\006\000\000\007\138\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\011\130\000\000\007\150\007\154\000\000\000\000\000\000\000\000\000\000\000\000\000\000\rr\011\166\r\026\007\166\007\170\000\000\r.\000\000\000\000\000\006\000\000\000\000\000\000\003b\003f\003j\000\000\003n\003\014\000\000\000\000\000\000\000\000\003z\000\000\000\000\000\000\000\000\000\000\007\174\n\250\000\000\000\000\001\238\011\018\005:\r2\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\000\000\000\000\004\162\n\222\000\000\000\000\000\000\n\226\n\230\n\242\011\006\000\000\007\138\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\011\130\000\000\007\150\007\154\000\000\000\000\000\000\000\000\000\000\000\000\000\000\r\242\011\166\r\026\007\166\007\170\000\000\r.\000\000\000\000\000\006\000\000\000\000\000\000\003b\003f\003j\000\000\003n\003\014\000\000\000\000\000\000\000\000\003z\000\000\000\000\000\000\000\000\000\000\007\174\n\250\000\000\000\000\001\238\011\018\005:\r2\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\000\000\000\000\004\162\n\222\000\000\000\000\000\000\n\226\n\230\n\242\011\006\000\000\007\138\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\011\130\000\000\007\150\007\154\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0142\011\166\r\026\007\166\007\170\000\000\r.\000\000\000\000\000\006\000\000\000\000\000\000\003b\003f\003j\000\000\003n\003\014\000\000\000\000\000\000\000\000\003z\000\000\000\000\000\000\000\000\000\000\007\174\n\250\000\000\000\000\001\238\011\018\005:\r2\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\000\000\000\000\004\162\n\222\000\000\000\000\000\000\n\226\n\230\n\242\011\006\000\000\007\138\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\011\130\000\000\007\150\007\154\000\000\000\000\000\000\000\000\000\000\000\000\000\000\014J\011\166\r\026\007\166\007\170\000\000\r.\000\000\000\000\000\006\000\000\000\000\000\000\003b\003f\003j\000\000\003n\003\014\000\000\000\000\000\000\000\000\003z\000\000\000\000\000\000\000\000\000\000\007\174\n\250\000\000\000\000\001\238\011\018\005:\r2\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\000\000\000\000\004\162\n\222\000\000\000\000\000\000\n\226\n\230\n\242\011\006\000\000\007\138\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\011\130\000\000\007\150\007\154\000\000\000\000\000\000\000\000\000\000\000\000\000\000\014n\011\166\r\026\007\166\007\170\000\000\r.\000\000\000\000\000\006\000\000\000\000\000\000\003b\003f\003j\000\000\003n\003\014\000\000\000\000\000\000\000\000\003z\000\000\000\000\000\000\000\000\000\000\007\174\n\250\000\000\000\000\001\238\011\018\005:\r2\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\000\000\000\000\004\162\n\222\000\000\000\000\000\000\n\226\n\230\n\242\011\006\000\000\007\138\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\011\130\000\000\007\150\007\154\000\000\000\000\000\000\000\000\000\000\000\000\000\000\014\154\011\166\r\026\007\166\007\170\000\000\r.\000\000\000\000\000\006\000\000\000\000\000\000\003b\003f\003j\000\000\003n\003\014\000\000\000\000\000\000\000\000\003z\000\000\000\000\000\000\000\000\000\000\007\174\n\250\000\000\000\000\001\238\011\018\005:\r2\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\000\000\000\000\004\162\n\222\000\000\000\000\000\000\n\226\n\230\n\242\011\006\000\000\007\138\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\011\130\000\000\007\150\007\154\000\000\000\000\000\000\000\000\000\000\000\000\000\000\014\178\011\166\r\026\007\166\007\170\000\000\r.\000\000\000\000\000\006\000\000\000\000\000\000\003b\003f\003j\000\000\003n\003\014\000\000\000\000\000\000\000\000\003z\000\000\000\000\000\000\000\000\000\000\007\174\n\250\000\000\000\000\001\238\011\018\005:\r2\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\000\000\000\000\004\162\n\222\000\000\000\000\000\000\n\226\n\230\n\242\011\006\000\000\007\138\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\011\130\000\000\007\150\007\154\000\000\000\000\000\000\000\000\000\000\000\000\000\000\014\202\011\166\r\026\007\166\007\170\000\000\r.\000\000\000\000\000\006\000\000\000\000\000\000\003b\003f\003j\000\000\003n\003\014\000\000\000\000\000\000\000\000\003z\000\000\000\000\000\000\000\000\000\000\007\174\n\250\000\000\000\000\001\238\011\018\005:\r2\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\000\000\000\000\004\162\n\222\000\000\000\000\000\000\n\226\n\230\n\242\011\006\000\000\007\138\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\011\130\000\000\007\150\007\154\000\000\000\000\000\000\000\000\000\000\000\000\000\000\014\226\011\166\r\026\007\166\007\170\000\000\r.\000\000\000\000\000\006\000\000\000\000\000\000\003b\003f\003j\000\000\003n\003\014\000\000\000\000\000\000\000\000\003z\000\000\000\000\000\000\000\000\000\000\007\174\n\250\000\000\000\000\001\238\011\018\005:\r2\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\000\000\000\000\004\162\n\222\000\000\000\000\000\000\n\226\n\230\n\242\011\006\000\000\007\138\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\011\130\000\000\007\150\007\154\000\000\000\000\000\000\000\000\000\000\000\000\000\000\014\250\011\166\r\026\007\166\007\170\000\000\r.\000\000\000\000\000\006\000\000\000\000\000\000\003b\003f\003j\000\000\003n\003\014\000\000\000\000\000\000\000\000\003z\000\000\000\000\000\000\000\000\000\000\007\174\n\250\000\000\000\000\001\238\011\018\005:\r2\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\000\000\000\000\004\162\n\222\000\000\000\000\000\000\n\226\n\230\n\242\011\006\000\000\007\138\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\011\130\000\000\007\150\007\154\000\000\000\000\000\000\000\000\000\000\000\000\000\000\015\018\011\166\r\026\007\166\007\170\000\000\r.\000\000\000\000\000\006\000\000\000\000\000\000\003b\003f\003j\000\000\003n\003\014\000\000\000\000\000\000\000\000\003z\000\000\000\000\000\000\000\000\000\000\007\174\n\250\000\000\000\000\001\238\011\018\005:\r2\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\000\000\000\000\004\162\n\222\000\000\000\000\000\000\n\226\n\230\n\242\011\006\000\000\007\138\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\011\130\000\000\007\150\007\154\000\000\000\000\000\000\000\000\000\000\000\000\000\000\015*\011\166\r\026\007\166\007\170\000\000\r.\000\000\000\000\000\006\000\000\000\000\000\000\003b\003f\003j\000\000\003n\003\014\000\000\000\000\000\000\000\000\003z\000\000\000\000\000\000\000\000\000\000\007\174\n\250\000\000\000\000\001\238\011\018\005:\r2\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\000\000\000\000\004\162\n\222\000\000\000\000\000\000\n\226\n\230\n\242\011\006\000\000\007\138\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\011\130\000\000\007\150\007\154\000\000\000\000\000\000\000\000\000\000\000\000\000\000\015B\011\166\r\026\007\166\007\170\000\000\r.\000\000\000\000\000\006\000\000\000\000\000\000\003b\003f\003j\000\000\003n\003\014\000\000\000\000\000\000\000\000\003z\000\000\000\000\000\000\000\000\000\000\007\174\n\250\000\000\000\000\001\238\011\018\005:\r2\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\000\000\000\000\004\162\n\222\000\000\000\000\000\000\n\226\n\230\n\242\011\006\000\000\007\138\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\011\130\000\000\007\150\007\154\000\000\000\000\000\000\000\000\000\000\000\000\000\000\015Z\011\166\r\026\007\166\007\170\000\000\r.\000\000\000\000\000\006\000\000\000\000\000\000\003b\003f\003j\000\000\003n\003\014\000\000\000\000\000\000\000\000\003z\000\000\000\000\000\000\000\000\000\000\007\174\n\250\000\000\000\000\001\238\011\018\005:\r2\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\000\000\000\000\004\162\n\222\000\000\000\000\000\000\n\226\n\230\n\242\011\006\000\000\007\138\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\011\130\000\000\007\150\007\154\000\000\000\000\000\000\000\000\000\000\000\000\000\000\015r\011\166\r\026\007\166\007\170\000\000\r.\000\000\000\000\000\006\000\000\000\000\000\000\003b\003f\003j\000\000\003n\003\014\000\000\000\000\000\000\000\000\003z\000\000\000\000\000\000\000\000\000\000\007\174\n\250\000\000\000\000\001\238\011\018\005:\r2\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\000\000\000\000\004\162\n\222\000\000\000\000\000\000\n\226\n\230\n\242\011\006\000\000\007\138\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\011\130\000\000\007\150\007\154\000\000\000\000\000\000\000\000\000\000\000\000\000\000\015\138\011\166\r\026\007\166\007\170\000\000\r.\000\000\000\000\000\006\000\000\000\000\000\000\003b\003f\003j\000\000\003n\003\014\000\000\000\000\000\000\000\000\003z\000\000\000\000\000\000\000\000\000\000\007\174\n\250\000\000\000\000\001\238\011\018\005:\r2\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\000\000\000\000\004\162\n\222\000\000\000\000\000\000\n\226\n\230\n\242\011\006\000\000\007\138\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\011\130\000\000\007\150\007\154\000\000\000\000\000\000\000\000\000\000\000\000\000\000\015\162\011\166\r\026\007\166\007\170\000\000\r.\000\000\000\000\000\006\000\000\000\000\000\000\003b\003f\003j\000\000\003n\003\014\000\000\000\000\000\000\000\000\003z\000\000\000\000\000\000\000\000\000\000\007\174\n\250\000\000\000\000\001\238\011\018\005:\r2\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\000\000\000\000\004\162\n\222\000\000\000\000\000\000\n\226\n\230\n\242\011\006\000\000\007\138\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\011\130\000\000\007\150\007\154\000\000\000\000\000\000\000\000\000\000\000\000\000\000\015\186\011\166\r\026\007\166\007\170\000\000\r.\000\000\000\000\000\006\000\000\000\000\000\000\003b\003f\003j\000\000\003n\003\014\000\000\000\000\000\000\000\000\003z\000\000\000\000\000\000\000\000\000\000\007\174\n\250\000\000\000\000\001\238\011\018\005:\r2\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\000\000\000\000\004\162\n\222\000\000\000\000\000\000\n\226\n\230\n\242\011\006\000\000\007\138\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\011\130\000\000\007\150\007\154\000\000\000\000\000\000\000\000\000\000\000\000\000\000\015\210\011\166\r\026\007\166\007\170\000\000\r.\000\000\000\000\000\006\000\000\000\000\000\000\003b\003f\003j\000\000\003n\003\014\000\000\000\000\000\000\000\000\003z\000\000\000\000\000\000\000\000\000\000\007\174\n\250\000\000\000\000\001\238\011\018\005:\r2\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\000\000\000\000\004\162\n\222\000\000\000\000\000\000\n\226\n\230\n\242\011\006\000\000\007\138\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\011\130\000\000\007\150\007\154\000\000\000\000\000\000\000\000\000\000\000\000\000\000\015\234\011\166\r\026\007\166\007\170\000\000\r.\000\000\000\000\000\006\000\000\000\000\000\000\003b\003f\003j\000\000\003n\003\014\000\000\000\000\000\000\000\000\003z\000\000\000\000\000\000\000\000\000\000\007\174\n\250\000\000\000\000\001\238\011\018\005:\r2\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\000\000\000\000\004\162\n\222\000\000\000\000\000\000\n\226\n\230\n\242\011\006\000\000\007\138\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\011\130\000\000\007\150\007\154\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\002\011\166\r\026\007\166\007\170\000\000\r.\000\000\000\000\000\006\000\000\000\000\000\000\003b\003f\003j\000\000\003n\003\014\000\000\000\000\000\000\000\000\003z\000\000\000\000\000\000\000\000\000\000\007\174\n\250\000\000\000\000\001\238\011\018\005:\r2\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\000\000\000\000\004\162\n\222\000\000\000\000\000\000\n\226\n\230\n\242\011\006\000\000\007\138\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\011\130\000\000\007\150\007\154\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\026\011\166\r\026\007\166\007\170\000\000\r.\000\000\000\000\000\006\000\000\000\000\000\000\003b\003f\003j\000\000\003n\003\014\000\000\000\000\000\000\000\000\003z\000\000\000\000\000\000\000\000\000\000\007\174\n\250\000\000\000\000\001\238\011\018\005:\r2\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\000\000\000\000\004\162\n\222\000\000\000\000\000\000\n\226\n\230\n\242\011\006\000\000\007\138\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\011\130\000\000\007\150\007\154\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0162\011\166\r\026\007\166\007\170\000\000\r.\000\000\000\000\000\006\000\000\000\000\000\000\003b\003f\003j\000\000\003n\003\014\000\000\000\000\000\000\000\000\003z\000\000\000\000\000\000\000\000\000\000\007\174\n\250\000\000\000\000\001\238\011\018\005:\r2\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\000\000\000\000\004\162\n\222\000\000\000\000\000\000\n\226\n\230\n\242\011\006\000\000\007\138\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\011\130\000\000\007\150\007\154\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016J\011\166\r\026\007\166\007\170\000\000\r.\000\000\000\000\000\006\000\000\000\000\000\000\003b\003f\003j\000\000\003n\003\014\000\000\000\000\000\000\000\000\003z\000\000\000\000\000\000\000\000\000\000\007\174\n\250\000\000\000\000\001\238\011\018\005:\r2\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\000\000\000\000\004\162\n\222\000\000\000\000\000\000\n\226\n\230\n\242\011\006\000\000\007\138\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\011\130\000\000\007\150\007\154\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016b\011\166\r\026\007\166\007\170\000\000\r.\000\000\000\000\000\006\000\000\000\000\000\000\003b\003f\003j\000\000\003n\003\014\000\000\000\000\000\000\000\000\003z\000\000\000\000\000\000\000\000\000\000\007\174\n\250\000\000\000\000\001\238\011\018\005:\r2\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\000\000\000\000\004\162\n\222\000\000\000\000\000\000\n\226\n\230\n\242\011\006\000\000\007\138\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\011\130\000\000\007\150\007\154\000\000\000\000\000\000\000\000\000\000\000\000\000\000\018\030\011\166\r\026\007\166\007\170\000\000\r.\000\000\000\000\000\006\000\000\000\000\000\000\003b\003f\003j\000\000\003n\003\014\000\000\000\000\000\000\000\000\003z\000\000\000\000\000\000\000\000\000\000\007\174\n\250\000\000\000\000\001\238\011\018\005:\r2\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\000\000\000\000\004\162\n\222\000\000\000\000\000\000\n\226\n\230\n\242\011\006\000\000\007\138\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\011\130\000\000\007\150\007\154\000\000\000\000\000\000\000\000\000\000\000\000\000\000\018F\011\166\r\026\007\166\007\170\000\000\r.\000\000\000\000\000\006\000\000\000\000\000\000\003b\003f\003j\000\000\003n\003\014\000\000\000\000\000\000\000\000\003z\000\000\000\000\000\000\000\000\000\000\007\174\n\250\000\000\000\000\001\238\011\018\005:\r2\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\000\000\000\000\004\162\n\222\000\000\000\000\000\000\n\226\n\230\n\242\011\006\000\000\007\138\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\011\130\000\000\007\150\007\154\000\000\000\000\000\000\000\000\000\000\000\000\000\000\018n\011\166\r\026\007\166\007\170\000\000\r.\000\000\000\000\000\006\000\000\000\000\000\000\003b\003f\003j\000\000\003n\003\014\000\000\000\000\000\000\000\000\003z\000\000\000\000\000\000\000\000\000\000\007\174\n\250\000\000\000\000\001\238\011\018\005:\r2\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\000\000\000\000\004\162\n\222\000\000\000\000\000\000\n\226\n\230\n\242\011\006\000\000\007\138\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\011\130\000\000\007\150\007\154\000\000\000\000\000\000\000\000\000\000\000\000\000\000\018\150\011\166\r\026\007\166\007\170\000\000\r.\000\000\000\000\000\006\000\000\000\000\000\000\003b\003f\003j\000\000\003n\003\014\000\000\000\000\000\000\000\000\003z\000\000\000\000\000\000\000\000\000\000\007\174\n\250\000\000\000\000\001\238\011\018\005:\r2\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\000\000\000\000\004\162\n\222\000\000\000\000\000\000\n\226\n\230\n\242\011\006\000\000\007\138\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\011\130\000\000\007\150\007\154\000\000\000\000\000\000\000\000\000\000\000\000\000\000\018\186\011\166\r\026\007\166\007\170\000\000\r.\000\000\000\000\000\006\000\000\000\000\000\000\003b\003f\003j\000\000\003n\003\014\000\000\000\000\000\000\000\000\003z\000\000\000\000\000\000\000\000\000\000\007\174\n\250\000\000\000\000\001\238\011\018\005:\r2\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\000\000\000\000\004\162\n\222\000\000\000\000\000\000\n\226\n\230\n\242\011\006\000\000\007\138\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\011\130\000\000\007\150\007\154\000\000\000\000\000\000\000\000\000\000\000\000\000\000\018\222\011\166\r\026\007\166\007\170\000\000\r.\000\000\000\000\000\006\000\000\000\000\000\000\003b\003f\003j\000\000\003n\003\014\000\000\000\000\000\000\000\000\003z\000\000\000\000\000\000\000\000\000\000\007\174\n\250\000\000\000\000\001\238\011\018\005:\r2\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\000\000\000\000\004\162\n\222\000\000\000\000\000\000\n\226\n\230\n\242\011\006\000\000\007\138\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\011\130\000\000\007\150\007\154\000\000\000\000\000\000\000\000\000\000\000\000\000\000\019\n\011\166\r\026\007\166\007\170\000\000\r.\000\000\000\000\000\006\000\000\000\000\000\000\003b\003f\003j\000\000\003n\003\014\000\000\000\000\000\000\000\000\003z\000\000\000\000\000\000\000\000\000\000\007\174\n\250\000\000\000\000\001\238\011\018\005:\r2\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\000\000\000\000\004\162\n\222\000\000\000\000\000\000\n\226\n\230\n\242\011\006\000\000\007\138\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\011\130\000\000\007\150\007\154\000\000\000\000\000\000\000\000\000\000\000\000\000\000\019.\011\166\r\026\007\166\007\170\000\000\r.\000\000\000\000\000\006\000\000\000\000\000\000\003b\003f\003j\000\000\003n\003\014\000\000\000\000\000\000\000\000\003z\000\000\000\000\000\000\000\000\000\000\007\174\n\250\000\000\000\000\001\238\011\018\005:\r2\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\000\000\000\000\004\162\n\222\000\000\000\000\000\000\n\226\n\230\n\242\011\006\000\000\007\138\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\011\130\000\000\007\150\007\154\000\000\000\000\000\000\000\000\000\000\000\000\000\000\019R\011\166\r\026\007\166\007\170\000\000\r.\000\000\000\000\000\006\000\000\000\000\000\000\003b\003f\003j\000\000\003n\003\014\000\000\000\000\000\000\000\000\003z\000\000\000\000\000\000\000\000\000\000\007\174\n\250\000\000\000\000\001\238\011\018\005:\r2\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\000\000\000\000\004\162\n\222\000\000\000\000\000\000\n\226\n\230\n\242\011\006\000\000\007\138\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\011\130\000\000\007\150\007\154\000\000\000\000\000\000\000\000\000\000\000\000\000\000\019n\011\166\r\026\007\166\007\170\000\000\r.\000\000\000\000\000\006\000\000\000\000\000\000\003b\003f\003j\000\000\003n\003\014\000\000\000\000\000\000\000\000\003z\000\000\000\000\000\000\000\000\000\000\007\174\n\250\000\000\000\000\001\238\011\018\005:\r2\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\000\000\000\000\004\162\n\222\000\000\000\000\000\000\n\226\n\230\n\242\011\006\000\000\007\138\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\011\130\000\000\007\150\007\154\000\000\000\000\000\000\000\000\000\000\000\000\000\000\020\014\011\166\r\026\007\166\007\170\000\000\r.\000\000\000\000\000\006\000\000\000\000\000\000\003b\003f\003j\000\000\003n\003\014\000\000\000\000\000\000\000\000\003z\000\000\000\000\000\000\000\000\000\000\007\174\n\250\000\000\000\000\001\238\011\018\005:\r2\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\000\000\000\000\004\162\n\222\000\000\000\000\000\000\n\226\n\230\n\242\011\006\000\000\007\138\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\011\130\000\000\007\150\007\154\000\000\000\000\000\000\000\000\000\000\000\000\000\000\020\"\011\166\r\026\007\166\007\170\000\000\r.\000\000\000\000\000\006\000\000\000\000\000\000\003b\003f\003j\000\000\003n\003\014\000\000\000\000\000\000\000\000\003z\000\000\000\000\000\000\000\000\000\000\007\174\n\250\000\000\000\000\001\238\011\018\005:\r2\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\000\000\000\000\004\162\n\222\000\000\000\000\000\000\n\226\n\230\n\242\011\006\000\000\007\138\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\011\130\000\000\007\150\007\154\000\000\000\000\000\000\000\000\000\000\000\000\000\000\020>\011\166\r\026\007\166\007\170\000\000\r.\000\000\000\000\000\006\000\000\000\000\000\000\003b\003f\003j\000\000\003n\003\014\000\000\000\000\000\000\000\000\003z\000\000\000\000\000\000\000\000\000\000\007\174\n\250\000\000\000\000\001\238\011\018\005:\r2\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\000\000\000\000\004\162\n\222\000\000\000\000\000\000\n\226\n\230\n\242\011\006\000\000\007\138\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\011\130\000\000\007\150\007\154\000\000\000\000\000\000\000\000\000\000\000\000\000\000\020\162\011\166\r\026\007\166\007\170\000\000\r.\000\000\000\000\000\006\000\000\000\000\000\000\003b\003f\003j\000\000\003n\003\014\000\000\000\000\000\000\000\000\003z\000\000\000\000\000\000\000\000\000\000\007\174\n\250\000\000\000\000\001\238\011\018\005:\r2\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\000\000\000\000\004\162\n\222\000\000\000\000\000\000\n\226\n\230\n\242\011\006\000\000\007\138\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\011\130\000\000\007\150\007\154\000\000\000\000\000\000\000\000\000\000\000\000\000\000\020\210\011\166\r\026\007\166\007\170\000\000\r.\000\000\000\000\000\006\000\000\000\000\000\000\003b\003f\003j\000\000\003n\003\014\000\000\000\000\000\000\000\000\003z\000\000\000\000\000\000\000\000\000\000\007\174\n\250\000\000\000\000\001\238\011\018\005:\r2\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\000\000\000\000\004\162\n\222\000\000\000\000\000\000\n\226\n\230\n\242\011\006\000\000\007\138\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\011\130\000\000\007\150\007\154\000\000\000\000\000\000\000\000\000\000\000\000\000\000\020\238\011\166\r\026\007\166\007\170\000\000\r.\000\000\000\000\000\006\000\000\000\000\000\000\003b\003f\003j\000\000\003n\003\014\000\000\000\000\000\000\000\000\003z\000\000\000\000\000\000\000\000\000\000\007\174\n\250\000\000\000\000\001\238\011\018\005:\r2\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\000\000\000\000\004\162\n\222\000\000\000\000\000\000\n\226\n\230\n\242\011\006\000\000\007\138\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\011\130\000\000\007\150\007\154\000\000\000\000\000\000\000\000\000\000\000\000\000\000\021\006\011\166\r\026\007\166\007\170\000\000\r.\000\000\000\000\000\006\000\000\000\000\000\000\003b\003f\003j\000\000\003n\003\014\000\000\000\000\000\000\000\000\003z\000\000\000\000\000\000\000\000\000\000\007\174\n\250\000\000\000\000\001\238\011\018\005:\r2\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\000\000\000\000\004\162\n\222\000\000\000\000\000\000\n\226\n\230\n\242\011\006\000\000\007\138\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\011\130\000\000\007\150\007\154\000\000\000\000\000\000\000\000\000\000\000\000\000\000\021\026\011\166\r\026\007\166\007\170\000\000\r.\b}\000\000\000\006\000\000\000\000\b}\003b\003f\003j\000\000\003n\003\014\000\000\000\000\000\000\000\000\003z\000\000\000\000\000\000\000\000\000\000\007\174\n\250\000\000\b}\001\238\011\018\005:\r2\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\b}\004\142\004\154\004\166\004\170\004\178\t~\000\000\000\000\b}\003Z\000\000\000\000\004\162\n\222\b}\b}\000\242\n\226\n\230\n\242\011\006\000\000\007\138\b}\b}\000\000\000\000\000\000\000\000\000\000\000\000\000\000\011\130\000\000\007\150\007\154\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0216\011\166\r\026\007\166\007\170\000\000\r.\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\b}\000\000\000\000\000\189\000\000\000\000\000\000\000\000\000\189\007\174\n\250\000\189\000\189\000\000\011\018\005:\r2 \214\016\001\015\245\000\189\000\000\000\189\000\189\000\189\000\000\000\189\000\189\000\189\000\000\n\133\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\001\000\000\000\189\002b\000\000\000\000\002f\001\230\001\234\000\189\000\189\000\000\000\000\000\189\002n\n\133\000\000\000\189\000\000\000\189\002r\000\000\000\189\002z\000\000\015\245\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\n\133\000\000\000\000\000\000\000\189\000\000\000\189\000\000\000\189\000\000\000\000\ru\000\189\004\254\ru\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\ru\ru\000\000\ru\ru\000\000\001\238\000\000\003J\000\000#\006\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\ru\000\000\003\170\000\000\000\000\003\190\020\198\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\ru\004\190\006%\004\198\007~\000\000\007\138\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ru\000\000\007\142\007\150\007\154#\030\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\ru\000\000\ru\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\024\210\000\000\ru\ru\025\030\000\000\ru\ru\002J\007\174\000\000\ru\002J\ru\000\000\005:\rq\ru\002N\rq\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\rq\rq\000\000\rq\rq\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\rq\003Z\003\170\000\000\n\129\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\rq\004\190\000i\004\198\007~\000\000\007\138\n\129\000\000\000i\t\174\000\000\000\000\000\000\t\174\rq\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\000\000\000\000\007\254\rq\000\000\rq\000\000\000\000\000\000\000\000\000\000\000i\000\000\000\000\000\000\000\000\000\000\rq\rq\000\000\000\000\rq\rq\000\000\007\174\000\000\rq\000\000\rq\000i\005:\000\000\rq\n\129\000i\000\000\000\000\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\n\129\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\000\000\000i\000i\000\000\000\000\000i\000\000\n\129\000\000\000i\000\000\000i\000\000\000\000\000i\000\000\000\000\000\000\000\000\000\000\000i\000i\000i\000\000\000\000\000\000\000\000\000\000\000\000\000i\000i\006\133\016I\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\006\133\000\000\000\000\000i\006\133\000i\000i\000\000\000i\000i\000\000\006U\000\000\000\000\n\129\000\000\006U\000\000\000i\006U\006U\000\000\000i\000\000\006U\000\000\000i\006U\006U\000\000\006U\000i\006U\000\000\006U\000i\006U\000i\006U\006U\006U\000\000\006U\006U\006U\000\000\000\000\000\000\006U\000\000\000\000\000\000\0015\000\000\000\000\006U\006U\0015\000\000\000\000\000\000\000\000\016I\006U\006U\016I\016I\006U\006U\000\000\000\000\006U\000\000\006U\006U\006U\006U\0015\000\000\000\000\006\133\000\000\006U\006U\006U\000\000\016I\000\000\016I\000\000\006U\006U\006U\006U\000\000\000\000\006\133\006U\006U\006\133\0015\006U\003\142\000\000\000\000\006U\000\000\000\000\006U\0015\006U\006U\000\000\006U\006U\0015\006U\000\000\006U\006U\000\000\006U\006U\000\000\0015\0015\000\000\000\000\000\000\000\000\029\n\006U\000\000\006U\000\000\006U\000\000\000\000\003>\006U\000\000\000\000\006U\000\000\006U\000\000\000\000\000\000\006U\000\000\006U\006U\000}\000}\000\000\0015\000\000\000}\000\000\000\000\000}\000}\000\000\000\000\0015\000\000\000\000\016\001\015\245\000}\000\000\000}\000}\000}\000\000\000}\000}\000}\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\001\005\177\000}\002b\000\000\005\177\002f\000\000\000\000\000}\000}\000\000\000\000\000}\004\n\005\177\000\000\000}\000\000\000}\002r\005\177\000}\002z\000\000\015\245\000\000\000\000\000}\000}\000}\000\000\000\000\005\177\000\000\000\000\000\000\000}\000}\000\000\005\177\000\000\000\000\000\000\000}\000}\000\000\005F\000\000\002~\005\177\000}\000\000\005\177\000}\000\000\000\000\000\000\000\000\005\177\004\"\000\000\000}\000\000\000}\000}\000\000\000}\000}\000\000\000\000\000\000\000\000\000\000\000\000\005\177\000\000\000}\005\177\000}\000\000\000}\005\177\000\129\000\129\000}\000\000\000\000\000\129\000\000\000}\000\129\000\129\005\177\000}\005\177\000}\000}\005\177\002\130\000\129\000\000\000\129\000\129\000\129\000\000\000\129\000\129\000\129\000\000\000\000\000\000\000\000\000\000\000\000\000\000\005\177\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%\242\004i\000\129\000\000\000\129\000\000\004.\000\129\004i\000\000\000\000\004i\000\000\000\129\000\129\000\129\000\000\000\000\004:\004i\000\000\000\000\000\129\000\129\000\000\025\150\000\000\004i\000\000\000\129\000\129\000\000\005z\000\000\000\000!v\000\129\004i\025\250\000\129\000\000\000\000\000\000\004i\026\018\004i\000\000\000\129\000\000\000\129\000\129\004i\000\129\000\129\000\000\000\000\000\000\000\000\004i\000\000\026\026\000\000\000\129%\130\000\129\000\000\000\129%\162\000\133\000\133\000\129\000\000\000\000\000\133\000\000\000\129\000\133\000\133\026\"\000\129\026^\000\129\000\129\005\237\026\030\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\030\174\000\000\000\000\000\250\000\133\000\000\000\000\003\254\000\000\000\000\000\000\000\133\000\133\000\000\000\000\000\133\000\000\005\229\000\000\000\133\000\000\000\133\000\000\004.\000\133\000\000\000\000\000\000\000\000\000\000\000\133\000\133\000\133\000\000\000\000\004:\000\000\000\000\000\000\000\133\000\133\000\000\025\150\000\000\000\000\000\000\000\133\000\133\000\000\005\158\000\000\000\000!v\000\133\000\000\025\250\000\133\000\000\000\000\000\000\000\000\026\018\000\000\001=\000\133\000\000\000\133\000\133\001=\000\133\000\133\000\000\000\000\000\000\000\000\000\000\000\000\026\026\000\000\000\133\000\000\000\133\000\000\000\133\000\000\011\005\011\005\000\133\001=\000\000\011\005\000\000\000\133\001\234\011\005\026\"\000\133\026^\000\133\000\133\000\000\000\000\011\005\000\000\011\005\011\005\011\005\000\000\011\005\011\005\011\005\001=\000\000\027\182\000\000\000\000\000\000\000\000\030\174\000\000\001=\000\000\011\005\000\000\000\000\000\000\001=\001\230\001\234\011\005\011\005\000\000\000\000\011\005\000\000\000\000\001=\005\002\000\000\011\005\000\000\000\000\011\005\000\000\000\000\000\000\001\238\003\018\011\005\011\005\011\005\000\000\000\000\006\137\016I\000\000\000\000\011\005\011\005\000\000\000\000\000\000\000\000\000\000\011\005\000\000\001=\011\005\000\000\000\000\006\170\005n\005\002\006\137\011\005\001=\003F\006\137\003Z\004\226\004\238\000\000\011\005\000\000\011\005\011\005\004\250\011\005\011\005\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\011\005\000\000\011\005\000\000\011\005\000\000\015\197\015\197\011\005\004\254\000\000\015\197\000\000\011\005\001\234\015\197\000\000\011\005\000\000\011\005\011\005\000\000\000\000\006\014\000\000\015\197\015\197\015\197\000\000\015\197\015\197\015\197\000\000\000\000\000\000\000\000\000\000\000\000\016I\000\000\000\000\016I\016I\015\197\000\000\000\000\000\000\000\000\001\230\001\234\015\197\015\197\000\000\000\000\015\197\000\000\006\137\000\000\005\002\000\000\015\197\000\000\016I\015\197\016I\000\000\000\000\001\238\003\018\015\197\015\197\015\197\006\137\000\000\000\000\006\137\000\000\000\000\015\197\015\197\000\000\000\000\000\000\000\000\000\000\015\197\000\000\000\000\015\197\000\000\000\000#~\005n\005\002\000\000\015\197\000\000\003F\000\000\003Z\004\226\004\238\000\000\015\197\000\000\015\197\015\197\004\250\015\197\015\197\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\015\197\000\000\015\197\000\000\015\197\000\000\011\t\011\t\015\197\004\254\000\000\011\t\000\000\015\197\001\234\011\t\000\000\015\197\000\000\015\197\015\197\000\000\000\000\011\t\000\000\011\t\011\t\011\t\000\000\011\t\011\t\011\t\000\000\000\000\000\000\000\000\000\000\000\000\000\000\025.\000\000\000\000\000\000\011\t\000\000\000\000\000\000\002J\000\000\000\000\011\t\011\t\000\000\000\000\011\t\000\000\000\000\002N\005\002\000\000\011\t\000\000\000\000\011\t\000\000\001\238\000\000\000\000\000\000\011\t\011\t\011\t\000\000\000\000\000\000\000\000\000\000\000\000\011\t\011\t\000\000\000\000\000\000\003\230\000\000\011\t\000\000\000\000\011\t\t\170\000\000\001\250\005n\000\000\000\000\011\t\000\000\003Z\000\000\000\000\000\000\000\000\000\000\011\t\000\000\011\t\011\t\000\000\011\t\011\t\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\011\t\000\000\011\t\000\000\011\t\015\201\015\201\000\000\011\t\000\000\015\201\000\000\t\174\011\t\015\201\000\000\000\000\011\t\000\000\011\t\011\t\000\000\005^\000\000\015\201\015\201\015\201\000\000\015\201\015\201\015\201\000\000\000\000\000\000\000\000\000\000\000\000\001\230\001\234\000\000\000\000\000\000\015\201\000\000\000\000\000\000\000\000\000\000\000\000\015\201\015\201\000\000\000\000\015\201\000\000\000\000\001\238\001\242\000\000\015\201\000\000\000\000\015\201\000\000\000\000\000\000\000\000\000\000\015\201\015\201\015\201\000\000\000\000\000\000\000\000\000\000\000\000\015\201\015\201\000\000\023\234\000\000\005\002\000\000\015\201\000\000\003F\015\201\003Z\004\226\004\238\015\201\000\000\000\000\015\201\000\000\004\250\000\000\023v\000\000\000\000\000\000\015\201\000\000\015\201\015\201\000\000\015\201\015\201\001\230\001\234\000\000\000\000\000\000\000\000\000\000\004\254\015\201\000\000\015\201\023\194\015\201\004\029\004\029\000\000\015\201\000\000\004\029\001\238\003\018\015\201\004\029\000\000\000\000\015\201\000\000\015\201\015\201\000\000\000\000\000\000\004\029\004\029\004\029\000\000\004\029\004\029\004\029\000\000\000\000\000\000\000\000\003J\000\000#\006\000\000\000\000\000\000\003F\004\029\003Z\004\226\004\238\000\000\000\000\000\000\004\029\005N\004\250\000\000\004\029\000\000\000\000\000\000\000\000\000\000\004\029\000\000\000\000\004\029\000\000\000\000\000\000\000\000\000\000\004\029\004\029\004\029\004\254\000\000\000\000\006)\000\000\000\000\004\029\004\029\000\000\000\000\000\000\000\000\000\000\004\029\000\000\000\000\004\029\000\000\000\000\000\000\004\029#\030\000\000\004\029\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\029\000\000\004\029\004\029\000\000\004\029\004\029\001\230\001\234\000\000\000\000\000\000\000\000\000\000\000\000\004\029\000\000\004\029\000\000\004\029\015\r\015\r\000\000\004\029\000\000\015\r\001\238\003\018\004\029\015\r\000\000\000\000\004\029\000\000\004\029\004\029\000\000\000\000\000\000\015\r\015\r\015\r\000\000\015\r\015\r\015\r\000\000\000\000\000\000\000\000\003J\000\000\005\002\025V\000\000\000\000\003F\015\r\003Z\004\226\004\238\002J\000\000\000\000\015\r\005N\004\250\000\000\015\r\000\000\000\000\002N\000\000\000\000\015\r\000\000\000\000\015\r\000\000\001\238\000\000\000\000\000\000\015\r\015\r\015\r\004\254\000\000\000\000\000\000\023\210\000\000\015\r\015\r\000\000\000\000\000\000\003\230\000\000\015\r\000\000\000\000\015\r\t\170\000\000\001\250\015\r\000\000\000\000\015\r\000\000\003Z\000\000\000\000\000\000\000\000\000\000\015\r\000\000\015\r\015\r\025f\015\r\015\r\000\000\000\000\000\000\000\000\000\000\002J\000\000\000\000\015\r\000\000\015\r\000\000\015\r\015\021\015\021\002N\015\r\000\000\015\021\000\000\t\174\015\r\015\021\001\238\000\000\015\r\000\000\015\r\015\r\000\000\000\000\000\000\015\021\015\021\015\021\000\000\015\021\015\021\015\021\000\000\000\000\003\230\000\000\000\000\000\000\000\000\000\000\t\170\000\000\001\250\015\021\000\000\000\000\000\000\000\000\003Z\000\000\015\021\005N\000\000\000\000\015\021\000\000\000\000\000\000\000\000\000\000\015\021\000\000\000\000\015\021\000\000\000\000\000\000\000\000\000\000\015\021\015\021\015\021\000\000\000\000\000\000\000\000\000\000\000\000\015\021\015\021\000\000\t\174\000\000\000\000\000\000\015\021\000\000\000\000\015\021\000\000\000\000\000\000\015\021\000\000\000\000\015\021\000\000\000\000\000\000\000\000\000\000\000\000\000\000\015\021\000\000\015\021\015\021\000\000\015\021\015\021\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\015\021\000\000\015\021\000\000\015\021\015\025\015\025\000\000\015\021\000\000\015\025\000\000\000\000\015\021\015\025\000\000\000\000\015\021\000\000\015\021\015\021\000\000\000\000\000\000\015\025\015\025\015\025\000\000\015\025\015\025\015\025\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\015\025\000\000\000\000\000\000\000\000\000\000\000\000\015\025\005\246\000\000\000\000\015\025\000\000\000\000\000\000\000\000\000\000\015\025\000\000\000\000\015\025\000\000\000\000\000\000\000\000\000\000\015\025\015\025\015\025\000\000\000\000\000\000\000\000\000\000\000\000\015\025\015\025\000\000\000\000\000\000\000\000\000\000\015\025\000\000\000\000\015\025\000\000\000\000\000\000\015\025\000\000\000\000\015\025\000\000\000\000\000\000\000\000\000\000\000\000\000\000\015\025\000\000\015\025\015\025\000\000\015\025\015\025\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\015\025\000\000\015\025\000\000\015\025\015\029\015\029\000\000\015\025\000\000\015\029\000\000\000\000\015\025\015\029\000\000\000\000\015\025\000\000\015\025\015\025\000\000\000\000\000\000\015\029\015\029\015\029\000\000\015\029\015\029\015\029\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\015\029\000\000\000\000\000\000\000\000\000\000\000\000\015\029\005N\000\000\000\000\015\029\000\000\000\000\000\000\000\000\000\000\015\029\000\000\000\000\015\029\000\000\000\000\000\000\000\000\000\000\015\029\015\029\015\029\000\000\000\000\000\000\000\000\000\000\000\000\015\029\015\029\000\000\000\000\000\000\000\000\000\000\015\029\000\000\000\000\015\029\000\000\000\000\000\000\015\029\000\000\000\000\015\029\000\000\000\000\000\000\000\000\000\000\000\000\000\000\015\029\000\000\015\029\015\029\000\000\015\029\015\029\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\015\029\000\000\015\029\000\000\015\029\015!\015!\000\000\015\029\000\000\015!\000\000\000\000\015\029\015!\000\000\000\000\015\029\000\000\015\029\015\029\000\000\000\000\000\000\015!\015!\015!\000\000\015!\015!\015!\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\015!\000\000\000\000\000\000\000\000\000\000\000\000\015!\005\246\000\000\000\000\015!\000\000\000\000\000\000\000\000\000\000\015!\000\000\000\000\015!\000\000\000\000\000\000\000\000\000\000\015!\015!\015!\000\000\000\000\000\000\000\000\000\000\000\000\015!\015!\000\000\000\000\000\000\000\000\000\000\015!\000\000\000\000\015!\000\000\000\000\000\000\015!\000\000\000\000\015!\000\000\000\000\000\000\000\000\000\000\000\000\000\000\015!\000\000\015!\015!\000\000\015!\015!\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\015!\000\000\015!\000\000\015!\014\197\014\197\000\000\015!\000\000\014\197\000\000\000\000\015!\014\197\000\000\000\000\015!\000\000\015!\015!\000\000\000\000\000\000\014\197\014\197\014\197\000\000\014\197\014\197\014\197\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\014\197\000\000\000\000\000\000\000\000\000\000\000\000\014\197\005N\000\000\000\000\014\197\000\000\000\000\000\000\000\000\000\000\014\197\000\000\000\000\014\197\000\000\000\000\000\000\000\000\000\000\014\197\014\197\014\197\000\000\000\000\000\000\000\000\000\000\000\000\014\197\014\197\000\000\000\000\000\000\000\000\000\000\014\197\000\000\000\000\014\197\000\000\000\000\000\000\014\197\000\000\000\000\014\197\000\000\000\000\000\000\000\000\000\000\000\000\000\000\014\197\000\000\014\197\014\197\000\000\014\197\014\197\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\014\197\000\000\014\197\000\000\014\197\014\201\014\201\000\000\014\197\000\000\014\201\000\000\000\000\014\197\014\201\000\000\000\000\014\197\000\000\014\197\014\197\000\000\000\000\000\000\014\201\014\201\014\201\000\000\014\201\014\201\014\201\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\014\201\000\000\000\000\000\000\000\000\000\000\000\000\014\201\005\246\000\000\000\000\014\201\000\000\000\000\000\000\000\000\000\000\014\201\000\000\000\000\014\201\000\000\000\000\000\000\000\000\000\000\014\201\014\201\014\201\000\000\000\000\000\000\000\000\000\000\000\000\014\201\014\201\000\000\000\000\000\000\000\000\000\000\014\201\000\000\000\000\014\201\000\000\000\000\000\000\014\201\000\000\000\000\014\201\000\000\000\000\000\000\000\000\000\000\000\000\000\000\014\201\000\000\014\201\014\201\000\000\014\201\014\201\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\014\201\000\000\014\201\000\000\014\201\014\205\014\205\000\000\014\201\000\000\014\205\000\000\000\000\014\201\014\205\000\000\000\000\014\201\000\000\014\201\014\201\000\000\000\000\000\000\014\205\014\205\014\205\000\000\014\205\014\205\014\205\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\014\205\000\000\000\000\000\000\000\000\000\000\000\000\014\205\005N\000\000\000\000\014\205\000\000\000\000\000\000\000\000\000\000\014\205\000\000\000\000\014\205\000\000\000\000\000\000\000\000\000\000\014\205\014\205\014\205\000\000\000\000\000\000\000\000\000\000\000\000\014\205\014\205\000\000\000\000\000\000\000\000\000\000\014\205\000\000\000\000\014\205\000\000\000\000\000\000\014\205\000\000\000\000\014\205\000\000\000\000\000\000\000\000\000\000\000\000\000\000\014\205\000\000\014\205\014\205\000\000\014\205\014\205\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\014\205\000\000\014\205\000\000\014\205\014\209\014\209\000\000\014\205\000\000\014\209\000\000\000\000\014\205\014\209\000\000\000\000\014\205\000\000\014\205\014\205\000\000\000\000\000\000\014\209\014\209\014\209\000\000\014\209\014\209\014\209\000\000\000\000\000\000\000\000\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\000\000\014\209\005\246\000\000\000\000\014\209\000\000\000\000\000\000\000\000\000\000\014\209\000\000\000\000\014\209\000\000\000\000\000\000\000\000\000\000\014\209\014\209\014\209\000\000\000\000\000\000\000\000\000\000\000\000\014\209\014\209\000\000\000\000\000\000\000\000\000\000\014\209\000\000\000\000\014\209\000\000\000\000\000\000\014\209\000\000\000\000\014\209\000\000\000\000\000\000\000\000\000\000\000\000\000\000\014\209\000\000\014\209\014\209\000\000\014\209\014\209\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\014\209\000\000\014\209\000\000\014\209\014\213\014\213\000\000\014\209\000\000\014\213\000\000\000\000\014\209\014\213\000\000\000\000\014\209\000\000\014\209\014\209\000\000\000\000\000\000\014\213\014\213\014\213\000\000\014\213\014\213\014\213\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\014\213\000\000\000\000\000\000\000\000\000\000\000\000\014\213\005N\000\000\000\000\014\213\000\000\000\000\000\000\000\000\000\000\014\213\000\000\000\000\014\213\000\000\000\000\000\000\000\000\000\000\014\213\014\213\014\213\000\000\000\000\000\000\000\000\000\000\000\000\014\213\014\213\000\000\000\000\000\000\000\000\000\000\014\213\000\000\000\000\014\213\000\000\000\000\000\000\014\213\000\000\000\000\014\213\000\000\000\000\000\000\000\000\000\000\000\000\000\000\014\213\000\000\014\213\014\213\000\000\014\213\014\213\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\014\213\000\000\014\213\000\000\014\213\014\217\014\217\000\000\014\213\000\000\014\217\000\000\000\000\014\213\014\217\000\000\000\000\014\213\000\000\014\213\014\213\000\000\000\000\000\000\014\217\014\217\014\217\000\000\014\217\014\217\014\217\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\014\217\000\000\000\000\000\000\000\000\000\000\000\000\014\217\005\246\000\000\000\000\014\217\000\000\000\000\000\000\000\000\000\000\014\217\000\000\000\000\014\217\000\000\000\000\000\000\000\000\000\000\014\217\014\217\014\217\000\000\000\000\000\000\000\000\000\000\000\000\014\217\014\217\000\000\000\000\000\000\000\000\000\000\014\217\000\000\000\000\014\217\000\000\000\000\000\000\014\217\000\000\000\000\014\217\000\000\000\000\000\000\000\000\000\000\000\000\000\000\014\217\000\000\014\217\014\217\000\000\014\217\014\217\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\014\217\000\000\014\217\000\000\014\217\014\221\014\221\000\000\014\217\000\000\014\221\000\000\000\000\014\217\014\221\000\000\000\000\014\217\000\000\014\217\014\217\000\000\000\000\000\000\014\221\014\221\014\221\000\000\014\221\014\221\014\221\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\014\221\000\000\000\000\000\000\000\000\000\000\000\000\014\221\005N\000\000\000\000\014\221\000\000\000\000\000\000\000\000\000\000\014\221\000\000\000\000\014\221\000\000\000\000\000\000\000\000\000\000\014\221\014\221\014\221\000\000\000\000\000\000\000\000\000\000\000\000\014\221\014\221\000\000\000\000\000\000\000\000\000\000\014\221\000\000\000\000\014\221\000\000\000\000\000\000\014\221\000\000\000\000\014\221\000\000\000\000\000\000\000\000\000\000\000\000\000\000\014\221\000\000\014\221\014\221\000\000\014\221\014\221\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\014\221\000\000\014\221\000\000\014\221\014\225\014\225\000\000\014\221\000\000\014\225\000\000\000\000\014\221\014\225\000\000\000\000\014\221\000\000\014\221\014\221\000\000\000\000\000\000\014\225\014\225\014\225\000\000\014\225\014\225\014\225\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\014\225\000\000\000\000\000\000\000\000\000\000\000\000\014\225\005\246\000\000\000\000\014\225\000\000\000\000\000\000\000\000\000\000\014\225\000\000\000\000\014\225\000\000\000\000\000\000\000\000\000\000\014\225\014\225\014\225\000\000\000\000\000\000\000\000\000\000\000\000\014\225\014\225\000\000\000\000\000\000\000\000\000\000\014\225\000\000\000\000\014\225\000\000\000\000\000\000\014\225\000\000\000\000\014\225\000\000\000\000\000\000\000\000\000\000\000\000\000\000\014\225\000\000\014\225\014\225\000\000\014\225\014\225\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\014\225\000\000\014\225\000\000\014\225\015\017\015\017\000\000\014\225\000\000\015\017\000\000\000\000\014\225\015\017\000\000\000\000\014\225\000\000\014\225\014\225\000\000\000\000\000\000\015\017\015\017\015\017\000\000\015\017\015\017\015\017\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\015\017\000\000\000\000\000\000\000\000\000\000\000\000\015\017\005\246\000\000\000\000\015\017\000\000\000\000\000\000\000\000\000\000\015\017\000\000\000\000\015\017\000\000\000\000\000\000\000\000\000\000\015\017\015\017\015\017\000\000\000\000\000\000\000\000\000\000\000\000\015\017\015\017\000\000\000\000\000\000\000\000\000\000\015\017\000\000\000\000\015\017\000\000\000\000\000\000\015\017\000\000\000\000\015\017\000\000\000\000\000\000\000\000\000\000\000\000\000\000\015\017\000\000\015\017\015\017\000\000\015\017\015\017\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\015\017\000\000\015\017\000\000\015\017\015\005\015\005\000\000\015\017\000\000\015\005\000\000\000\000\015\017\015\005\000\000\000\000\015\017\000\000\015\017\015\017\000\000\000\000\000\000\015\005\015\005\015\005\000\000\015\005\015\005\015\005\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\015\005\000\000\000\000\000\000\000\000\000\000\000\000\015\005\005N\000\000\000\000\015\005\000\000\000\000\000\000\000\000\000\000\015\005\000\000\000\000\015\005\000\000\000\000\000\000\000\000\000\000\015\005\015\005\015\005\000\000\000\000\000\000\000\000\000\000\000\000\015\005\015\005\000\000\000\000\000\000\000\000\000\000\015\005\000\000\000\000\015\005\000\000\000\000\000\000\015\005\000\000\000\000\015\005\000\000\000\000\000\000\000\000\000\000\000\000\000\000\015\005\000\000\015\005\015\005\000\000\015\005\015\005\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\015\005\000\000\015\005\000\000\015\005\015\t\015\t\000\000\015\005\000\000\015\t\000\000\000\000\015\005\015\t\000\000\000\000\015\005\000\000\015\005\015\005\000\000\000\000\000\000\015\t\015\t\015\t\000\000\015\t\015\t\015\t\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\015\t\000\000\000\000\000\000\000\000\000\000\000\000\015\t\005\246\000\000\000\000\015\t\000\000\000\000\000\000\000\000\000\000\015\t\000\000\000\000\015\t\000\000\000\000\000\000\000\000\000\000\015\t\015\t\015\t\000\000\000\000\000\000\000\000\000\000\000\000\015\t\015\t\000\000\000\000\000\000\000\000\000\000\015\t\000\000\000\000\015\t\000\000\000\000\000\000\015\t\000\000\000\000\015\t\000\000\000\000\000\000\000\000\000\000\000\000\000\000\015\t\000\000\015\t\015\t\000\000\015\t\015\t\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\015\t\000\000\015\t\000\000\015\t\014\229\014\229\000\000\015\t\000\000\014\229\000\000\000\000\015\t\014\229\000\000\000\000\015\t\000\000\015\t\015\t\000\000\000\000\000\000\014\229\014\229\014\229\000\000\014\229\014\229\014\229\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\014\229\000\000\000\000\000\000\000\000\000\000\000\000\014\229\005N\000\000\000\000\014\229\000\000\000\000\000\000\000\000\000\000\014\229\000\000\000\000\014\229\000\000\000\000\000\000\000\000\000\000\014\229\014\229\014\229\000\000\000\000\000\000\000\000\000\000\000\000\014\229\014\229\000\000\000\000\000\000\000\000\000\000\014\229\000\000\000\000\014\229\000\000\000\000\000\000\014\229\000\000\000\000\014\229\000\000\000\000\000\000\000\000\000\000\000\000\000\000\014\229\000\000\014\229\014\229\000\000\014\229\014\229\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\014\229\000\000\014\229\000\000\014\229\014\233\014\233\000\000\014\229\000\000\014\233\000\000\000\000\014\229\014\233\000\000\000\000\014\229\000\000\014\229\014\229\000\000\000\000\000\000\014\233\014\233\014\233\000\000\014\233\014\233\014\233\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\014\233\000\000\000\000\000\000\000\000\000\000\000\000\014\233\005\246\000\000\000\000\014\233\000\000\000\000\000\000\000\000\000\000\014\233\000\000\000\000\014\233\000\000\000\000\000\000\000\000\000\000\014\233\014\233\014\233\000\000\000\000\000\000\000\000\000\000\000\000\014\233\014\233\000\000\000\000\000\000\000\000\000\000\014\233\000\000\000\000\014\233\000\000\000\000\000\000\014\233\000\000\000\000\014\233\000\000\000\000\000\000\000\000\000\000\000\000\000\000\014\233\000\000\014\233\014\233\000\000\014\233\014\233\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\014\233\000\000\014\233\000\000\014\233\014\237\014\237\000\000\014\233\000\000\014\237\000\000\000\000\014\233\014\237\000\000\000\000\014\233\000\000\014\233\014\233\000\000\000\000\000\000\014\237\014\237\014\237\000\000\014\237\014\237\014\237\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\014\237\000\000\000\000\000\000\000\000\000\000\000\000\014\237\005N\000\000\000\000\014\237\000\000\000\000\000\000\000\000\000\000\014\237\000\000\000\000\014\237\000\000\000\000\000\000\000\000\000\000\014\237\014\237\014\237\000\000\000\000\000\000\000\000\000\000\000\000\014\237\014\237\000\000\000\000\000\000\000\000\000\000\014\237\000\000\000\000\014\237\000\000\000\000\000\000\014\237\000\000\000\000\014\237\000\000\000\000\000\000\000\000\000\000\000\000\000\000\014\237\000\000\014\237\014\237\000\000\014\237\014\237\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\014\237\000\000\014\237\000\000\014\237\014\241\014\241\000\000\014\237\000\000\014\241\000\000\000\000\014\237\014\241\000\000\000\000\014\237\000\000\014\237\014\237\000\000\000\000\000\000\014\241\014\241\014\241\000\000\014\241\014\241\014\241\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\014\241\000\000\000\000\000\000\000\000\000\000\000\000\014\241\005\246\000\000\000\000\014\241\000\000\000\000\000\000\000\000\000\000\014\241\000\000\000\000\014\241\000\000\000\000\000\000\000\000\000\000\014\241\014\241\014\241\000\000\000\000\000\000\000\000\000\000\000\000\014\241\014\241\000\000\000\000\000\000\000\000\000\000\014\241\000\000\000\000\014\241\000\000\000\000\000\000\014\241\000\000\000\000\014\241\000\000\000\000\000\000\000\000\000\000\000\000\000\000\014\241\000\000\014\241\014\241\000\000\014\241\014\241\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\014\241\000\000\014\241\000\000\014\241\014\245\014\245\000\000\014\241\000\000\014\245\000\000\000\000\014\241\014\245\000\000\000\000\014\241\000\000\014\241\014\241\000\000\000\000\000\000\014\245\014\245\014\245\000\000\014\245\014\245\014\245\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\014\245\000\000\000\000\000\000\000\000\000\000\000\000\014\245\005N\000\000\000\000\014\245\000\000\000\000\000\000\000\000\000\000\014\245\000\000\000\000\014\245\000\000\000\000\000\000\000\000\000\000\014\245\014\245\014\245\000\000\000\000\000\000\000\000\000\000\000\000\014\245\014\245\000\000\000\000\000\000\000\000\000\000\014\245\000\000\000\000\014\245\000\000\000\000\000\000\014\245\000\000\000\000\014\245\000\000\000\000\000\000\000\000\000\000\000\000\000\000\014\245\000\000\014\245\014\245\000\000\014\245\014\245\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\014\245\000\000\014\245\000\000\014\245\014\249\014\249\000\000\014\245\000\000\014\249\000\000\000\000\014\245\014\249\000\000\000\000\014\245\000\000\014\245\014\245\000\000\000\000\000\000\014\249\014\249\014\249\000\000\014\249\014\249\014\249\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\014\249\000\000\000\000\000\000\000\000\000\000\000\000\014\249\005\246\000\000\000\000\014\249\000\000\000\000\000\000\000\000\000\000\014\249\000\000\000\000\014\249\000\000\000\000\000\000\000\000\000\000\014\249\014\249\014\249\000\000\000\000\000\000\000\000\000\000\000\000\014\249\014\249\000\000\000\000\000\000\000\000\000\000\014\249\000\000\000\000\014\249\000\000\000\000\000\000\014\249\000\000\000\000\014\249\000\000\000\000\000\000\000\000\000\000\000\000\000\000\014\249\000\000\014\249\014\249\000\000\014\249\014\249\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\014\249\000\000\014\249\000\000\014\249\014\253\014\253\000\000\014\249\000\000\014\253\000\000\000\000\014\249\014\253\000\000\000\000\014\249\000\000\014\249\014\249\000\000\000\000\000\000\014\253\014\253\014\253\000\000\014\253\014\253\014\253\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\014\253\000\000\000\000\000\000\000\000\000\000\000\000\014\253\005N\000\000\000\000\014\253\000\000\000\000\000\000\000\000\000\000\014\253\000\000\000\000\014\253\000\000\000\000\000\000\000\000\000\000\014\253\014\253\014\253\000\000\000\000\000\000\000\000\000\000\000\000\014\253\014\253\000\000\000\000\000\000\000\000\000\000\014\253\000\000\000\000\014\253\000\000\000\000\000\000\014\253\000\000\000\000\014\253\000\000\000\000\000\000\000\000\000\000\000\000\000\000\014\253\000\000\014\253\014\253\000\000\014\253\014\253\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\014\253\000\000\014\253\000\000\014\253\015\001\015\001\000\000\014\253\000\000\015\001\000\000\000\000\014\253\015\001\000\000\000\000\014\253\000\000\014\253\014\253\000\000\000\000\000\000\015\001\015\001\015\001\000\000\015\001\015\001\015\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\015\001\000\000\000\000\000\000\000\000\000\000\000\000\015\001\005\246\000\000\000\000\015\001\000\000\000\000\000\000\000\000\000\000\015\001\000\000\000\000\015\001\000\000\000\000\000\000\000\000\000\000\015\001\015\001\015\001\000\000\000\000\000\000\000\000\000\000\000\000\015\001\015\001\000\000\000\000\000\000\000\000\000\000\015\001\000\000\000\000\015\001\000\000\000\000\000\000\015\001\000\000\000\000\015\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\015\001\000\000\015\001\015\001\000\000\015\001\015\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\015\001\000\000\015\001\000\000\015\001\0025\0025\000\000\015\001\000\000\0025\000\000\000\000\015\001\0025\000\000\000\000\015\001\000\000\015\001\015\001\000\000\000\000\000\000\0025\0025\0025\000\000\0025\0025\0025\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0025\000\000\000\000\000\000\000\000\000\000\000\000\0025\0025\000\000\000\000\0025\000\000\000\000\000\000\000\000\000\000\0025\000\000\000\000\0025\000\000\000\000\000\000\000\000\000\000\0025\0025\0025\000\000\000\000\000\000\000\000\000\000\000\000\0025\0025\000\000\000\000\000\000\000\000\000\000\0025\000\000\000\000\0025\000\000\000\000\000\000\0025\000\000\000\000\0025\000\000\000\000\003\146\003j\000\000\000\000\003\014\0025\t2\0025\0025\003z\0025\0025\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\238\0025\tj\0025\000\000\0025\000\000\003\150\000\000\0025\011\178\000\000\000\000\000\000\0025\000\000\000\000\000\000\006\030\000\000\0025\003\170\000\000\000\000\011\250\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\rQ\004\190\000\000\004\198\000\000\012b\007\138\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\005]\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\016\130\000\000\000\000\000\000\000\000\000\000\002E\002E\002E\000\000\000\000\002E\000\000\000\000\rQ\000\000\002E\000\000\rQ\rQ\000\000\007\174\002E\000\000\000\000\rQ\002E\005:\000\000\rQ\005]\000\000\000\000\002E\000\n\000\000\000\000\t\130\002E\000\000\000\000\000\000\000\000\000\000\023\018\000\000\000\000\002E\000\000\000\000\002E\002E\002E\000\000\000\000\000\000\000\000\000\000\002E\000\000\000\000\002E\002E\000\000\000\000\002E\002E\000\000\002E\002E\000\000\002E\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002E\002E\002E\000\000\002E\001\206\007u\007u\000\000\000\000\007u\000\000\000\000\002E\002E\007u\000\000\023N\000\000\000\000\000\000\000\000\000\000\000\000\000\000\007u\007u\000\000\000\000\000\000\000\000\000\000\007u\000\000\000\000\000\000\000\000\001\210\000\000\002E\000\000\000\000\000\000\000\000\000\000\002E\007u\000\000\000\000\007u\001\214\007u\000\000\000\000\000\000\007u\000\000\007u\007u\007u\007u\007u\000\000\000\000\000\000\007u\000\000\007u\007u\000\000\007u\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\007u\007u\007u\000\000\007u\001\206\007y\007y\000\000\000\000\007y\000\000\000\000\007u\007u\007y\000\000\007u\000\000\000\000\000\000\000\000\000\000\000\000\000\000\007y\007y\000\000\000\000\000\000\000\000\000\000\007y\000\000\000\000\000\000\000\000\001\210\000\000\007u\000\000\000\000\000\000\000\000\000\000\007u\007y\000\000\000\000\007y\001\214\007y\000\000\000\000\000\000\007y\000\000\007y\007y\007y\007y\007y\000\000\000\000\000\000\007y\000\000\007y\007y\000\000\007y\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\007y\007y\007y\000\000\007y\001\206\007q\007q\000\000\000\000\007q\000\000\000\000\007y\007y\007q\000\000\007y\000\000\000\000\000\000\000\000\000\000\000\000\000\000\007q\007q\000\000\000\000\000\000\000\000\000\000\007q\000\000\000\000\000\000\000\000\001\210\000\000\007y\000\000\000\000\000\000\000\000\000\000\007y\007q\000\000\000\000\007q\001\214\007q\000\000\000\000\000\000\007q\000\000\007q\007q\007q\007q\007q\000\000\000\000\000\000\007q\000\000\007q\007q\000\000\007q\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\007q\007q\007q\000\000\007q\000\000\006\213\006\213\000\000\000\000\000\000\006\213\000\000\007q\007q\006\213\000\000\007q\000\000\000\000\000\000\000\000\000\000\000\000\000\000\006\213\000\000\006\213\000\000\006\213\000\000\006\213\000\000\000\000\000\000\000\000\000\000\000\000\000\000\007q\000\000\000\000\000\000\006\213\000\000\007q\000\000\000\000\000\000\000\000\006\213\006\213\000\000\000\000\000\000\000\000\006\213\000\000\000\000\000\000\006\213\000\000\000\000\006\213\000\000\000\000\000\000\000\000\000\000\006\213\006\213\006\213\000\000\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\213\006\213\000\000\006\213\000\000\000\000\000\000\006\213\000\000\000\000\000\000\000\000\000\000\003\146\003j\000\000\000\000\003\014\006\213\t2\006\213\006\213\003z\006\213\006\213\000\000\000\000\000\000\000\000\nV\000\000\000\000\001\238\000\000\tj\000\000\000\000\006\213\000\000\003\150\006\213\006\213\011\178\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\t\006\213\003\170\000\000\000\000\011\250\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\012b\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\000\000\000\000\000\000\000\000\000\000\000\000\007\166\007\170\005\153\005\153\005\153\004\t\000\000\005\153\000\000\000\000\000\000\000\000\005\153\000\000\000\000\000\000\000\000\000\000\005\153\000\000\000\000\004\t\005\153\000\000\004\t\000\000\007\174\000\000\000\000\005\153 \022\000\000\005: .\005\153\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\005\153\000\000\000\000\005\153\005\153\005\153\000\000\004]\004]\004]\000\000\005\153\004]\004]\005\153\005\153\004]\004]\000\242\005\153\000\000\005\153\005\153\000\000\005\153\000\000\004]\004]\004]\004]\004]\004]\004]\004]\000\000\005\153\005\153\005\153\000\000\005\153\000\000\000\000\000\000\000\000\004]\004]\000\000\000\000\005\153\005\153\000\000\004]\004]\004]\000\000\000\000\000\000\006]\006a\000\000\000\000\004]\004]\000\000\004]\004]\000\000\000\000\000\000\000\000\004]\004]\004]\004]\005\153\000\000\000\000\000\000\000\000\000\000\005\153\000\000\000\000\000\000\000\000\000\000\004]\004]\000\000\004]\004]\000\000\000\000\004]\004]\000\000\000\000\000\000\001\206\001\230\001\234\000\000\000\000\000\000\004]\004]\004]\004]\004]\004]\004]\004]\006\201\006\201\000\000\006]\006a\006\201\001\238\003\018\000\000\006\201\000\000\004]\004]\004]\000\000\004]\004]\000\000\001\210\006\201\000\000\006\201\000\000\006\201\000\000\006\201\004]\004]\000\000\000\000\003B\001\214\005\002\000\000\000\000\000\000\003F\006\201\003Z\004\226\004\238\000\000\000\000\000\000\006\201\006\201\004\250\000\000\000\000\000\000\n\162\000\000\000\000\000\000\006\201\000\000\000\000\006\201\000\000\000\000\000\000\000\000\000\000\006\201\006\201\000\242\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\006\201\006\201\000\000\006\201\000\000\000\000\000\000\006\201\000\000\000\000\003\146\003j\000\000\000\000\003\014\000\000\t2\000\000\006\201\003z\006\201\006\201\000\000\006\201\006\201\000\000\000\000\000\000\000\000\001\238\000\000\tj\000\000\000\000\000\000\000\000\003\150\006\201\000\000\011\178\006\201\006\201\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\170\000\000\006\201\011\250\000\000\001\194\000\000\000\000\000\000\000\000\011\021\003Z\000\000\020\158\004\182\004\186\000\000\000\000\000\000\004\190\000\000\004\198\019\194\012b\007\138\000\000\000\000\014.\000\000\000\000\017\210\011\021\000\000\011\021\011\021\007\142\007\150\007\154\000\000\007\158\000\000\014\150\014\222\014\246\014\174\015\014\000\000\000\000\007\166\007\170\000\000\000\000\000\000\016\130\000\000\000\000\015&\015>\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\015V\000\000\000\000\r\146\000\000\000\000\017R\000\000\007\174\000\242\000\000\000\000\000\000\000\000\005:\000\000\000\000\000\000\014F\014\198\015n\015\134\015\182\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\015\206\000\000\000\000\000\000\000\000\020\182\000\000\000\000\000\000\000\000\000\000\015\230\000\000\b\138\000\000\000\000\019\198\000\000\000\250\001\206\001\230\001\234\002V\000\000\000\000\016F\011\021\000\000\016^\015\158\000\000\000\000\026\158\000\000\011\021\015\254\005\185\000\000\004.\001\238\003\018\002\002\000\000\016\022\016.\000\000\000\000\000\000\000\000\002\014\026\162\001\210\000\000\000\000\000\000\000\000\000\000\026\202\000\000\000\000\000\000\000\000\000\000\003V\001\214\003:\000\000\000\000\000\000\003F\025\250\003Z\004\226\004\238\001\n\000\000\026\018\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\026\026\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&\026\"\000\000\027b\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\027r\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\011=\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\011=\000\000\000\000\001\238\000\000\000\000\000\000\001\158$\150\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\nQ\nQ\000\000\000\000\000\000\nQ\000\000\007\166\007\170\nQ\000\000\007\254\000\000\000\000\000\000\000\000\000\000\000\000\000\000\nQ\000\000\nQ\000\000\nQ\000\000\nQ\000\000\011=\000\000\000\000\000\000\000\000\000\000\007\174\000\000\011=\000\000\nQ\000\000\005:\000\000\000\000\000\000\000\000\nQ\nQ\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\nQ\000\000\000\000\nQ\000\000\000\000\000\000\000\000\000\000\nQ\nQ\nQ\000\000\000\000\000\000\016\165\016\165\000\000\000\000\000\000\016\165\000\000\000\000\000\000\016\165\nQ\000\000\000\000\nQ\000\000\000\000\000\000\nQ\000\000\016\165\000\000\016\165\000\000\016\165\000\000\016\165\000\000\000\000\nQ\000\000\nQ\nQ\000\000\nQ\nQ\000\000\000\000\016\165\000\000\000\000\000\000\000\000\000\000\nQ\016\165\016\165\000\000\nQ\000\000\000\000\005\n\nQ\000\000\000\000\016\165\000\000\000\000\016\165\000\000\000\000\006\030\000\000\nQ\016\165\016\165\016\165\000\000\000\000\000\000\016\169\016\169\000\000\000\000\000\000\016\169\000\000\000\000\000\000\016\169\016\165\000\000\000\000\016\165\000\000\000\000\000\000\016\165\000\000\016\169\000\000\016\169\000\000\016\169\000\000\016\169\000\000\000\000\016\165\000\000\016\165\016\165\000\000\016\165\016\165\000\000\000\000\016\169\000\000\005\026\000\000\000\000\000\000\000\000\016\169\016\169\000\000\016\165\000\000\000\000\005\n\016\165\000\000\000\000\016\169\000\000\000\000\016\169\000\000\000\000\000\000\000\000\016\165\016\169\016\169\016\169\000\000\000\000\000\000\007!\007!\000\000\000\000\000\000\007!\000\000\000\000\000\000\007!\016\169\000\000\000\000\016\169\000\000\000\000\000\000\016\169\000\000\007!\000\000\007!\000\000\007!\000\000\007!\000\000\000\000\016\169\000\000\016\169\016\169\000\000\016\169\016\169\000\000\000\000\007!\000\000\005\026\000\000\000\000\000\000\000\000\007!\007!\000\000\016\169\000\000\000\000\005\n\016\169\000\000\000\000\007!\000\000\000\000\007!\000\000\000\000\000\000\001\193\016\169\007!\007!\007!\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\014.\000\000\000\000\000\000\007!\000\000\001\193\007!\000\000\000\000\000\000\007!\000\000\000\000\014\150\014\222\014\246\014\174\015\014\000\000\000\000\000\000\007!\000\000\007!\007!\000\000\007!\007!\015&\015>\t]\000\000\005\026\t]\000\000\000\000\000\000\000\000\015V\000\000\007!\000\000\000\000\000\000\007!\000\000\b\153\000\242\000\000\001\217\t]\t]\000\000\t]\t]\007!\014F\014\198\015n\015\134\015\182\000\000\000\000\014.\000\000\000\000\b\153\000\000\000\000\001\217\b\153\015\206\000\000\000\000\000\000\t]\001\193\014\150\014\222\014\246\014\174\015\014\015\230\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\015&\015>\000\000\t]\016F\001\193\000\000\016^\015\158\000\000\015V\000\000\000\000\001\193\015\254\000\000\000\000\000\000\t]\000\242\000\000\001\193\016\022\016.\000\000\000\000\000\000\000\000\014F\014\198\015n\015\134\015\182\000\000\000\000\000\000\000\000\000\000\t]\000\000\t]\000\000\b\153\015\206\000\000\000\000\000\000\000\000\001\217\000\000\000\000\000\000\b\022\t]\015\230\000\000\t]\t]\000\000\000\000\001\209\t]\000\000\t]\000\000\000\000\000\000\t]\016F\001\217\000\000\016^\015\158\000\000\014.\000\000\000\000\001\217\015\254\000\000\001\209\000\000\000\000\000\000\000\000\001\217\016\022\016.\014\150\014\222\014\246\014\174\015\014\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\015&\015>\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\015V\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\242\000\000\001\201\000\000\000\000\000\000\000\000\000\000\000\000\014F\014\198\015n\015\134\015\182\000\000\000\000\014.\000\000\000\000\000\000\000\000\000\000\001\201\000\000\015\206\000\000\000\000\000\000\000\000\001\209\014\150\014\222\014\246\014\174\015\014\015\230\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\015&\015>\000\000\000\000\016F\001\209\000\000\016^\015\158\000\000\015V\000\000\000\000\001\209\015\254\000\000\000\000\000\000\000\000\000\242\000\000\001\209\016\022\016.\000\000\000\000\000\000\000\000\014F\014\198\015n\015\134\015\182\000\000\000\000\000\000\002\029\000\000\000\000\000\000\000\000\002\029\000\000\015\206\001\234\002\029\000\000\000\000\001\201\000\000\000\000\000\000\000\000\n\217\015\230\002\029\000\000\000\000\000\000\002\029\000\000\002\029\000\000\000\000\000\000\000\000\000\000\000\000\016F\001\201\000\000\016^\015\158\002\029\000\000\000\000\000\000\001\201\015\254\000\000\002\029\002\029\000\000\000\000\000\000\001\201\016\022\016.\005\002\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\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\029\002\029\000\000\002\029\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%\002\029\000\000\002\029\000\000\002%\002\029\002\029\001\234\002%\000\000\000\000\000\000\000\000\000\000\000\000\002\029\n\225\000\000\002%\000\000\000\000\000\000\002%\002\029\002%\000\000\000\000\000\000\002\029\000\000\000\000\000\000\000\000\000\000\002\029\000\000\002%\000\000\000\000\000\000\000\000\000\000\000\000\002%\002%\000\000\000\000\000\000\000\000\000\000\000\000\005\002\000\000\002%\000\000\000\000\002%\000\000\000\000\000\000\000\000\000\000\002%\002%\002%\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002%\002%\000\000\002%\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!\002%\000\000\002%\000\000\002!\002%\002%\001\234\002!\000\000\000\000\000\000\000\000\000\000\000\000\002%\n\221\000\000\002!\000\000\000\000\000\000\002!\002%\002!\000\000\000\000\000\000\002%\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\002!\002!\000\000\000\000\000\000\000\000\000\000\000\000\005\002\000\000\002!\000\000\000\000\002!\000\000\000\000\000\000\000\000\000\000\002!\002!\002!\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002!\002!\000\000\002!\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\004A\002!\000\000\002!\000\000\004A\002!\002!\001\234\004A\000\000\000\000\000\000\000\000\000\000\000\000\002!\n\213\000\000\004A\000\000\000\000\000\000\004A\002!\004A\000\000\000\000\000\000\002!\000\000\000\000\000\000\000\000\000\000\002!\000\000\004A\000\000\000\000\000\000\000\000\000\000\000\000\004A\002\025\000\000\000\000\000\000\000\000\000\000\000\000\005\002\000\000\004A\000\000\000\000\004A\000\000\000\000\000\000\000\000\000\000\004A\004A\004A\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004A\004A\000\000\004A\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\004=\004A\000\000\004A\000\000\004=\004A\004A\001\234\004=\000\000\000\000\000\000\000\000\000\000\000\000\004A\n\213\000\000\004=\000\000\000\000\000\000\004=\004A\004=\000\000\000\000\000\000\004A\003\146\003j\000\000\000\000\003\014\004A\t2\004=\000\000\003z\000\000\000\000\000\000\000\000\004=\002\025\000\000\000\000\000\000\001\238\000\000\tj\005\002\000\000\004=\000\000\003\150\004=\000\000\011\178\000\000\000\000\000\000\004=\004=\004=\000\000\000\000 ^\000\000\003\170\000\000\000\000\030\198\000\000\001\194\000\000\000\000\000\000\004=\004=\003Z\004=\000\000\004\182\004\186\005n\000\000\000\000\004\190\000\000\004\198\000\000\012b\007\138\000\000\000\000\004=\000\000\004=\000\000\000\000\004=\004=\000\000\007\142\007\150\007\154\000\000\007\158\000\000\000\000\004=\000\000\000\000\000\000\000\000\000\000\007\166\007\170\004=\000\000\000\000\030\202\000\000\004=\003\146\003j\000\000\000\000\003\014\004=\t2\000\000\000\000\003z\000\000\000\000\000\000\000\000\000\000\000\000!*\000\000\007\174\001\238\000\000\tj\000\000\000\000\005:\000\000\003\150\000\000\000\000\011\178\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\011\250\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\012b\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\016\130\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\178\000\000\031f\000\000\007\174\000\000\000\000\000\000\000\221\000\000\005:\003\170\000\000\000\221\011\250\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\012b\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\016\130\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!\031\198\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\tq\000\000\001!\tq\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!\tq\tq\001!\tq\tq\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!\tq\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\tq\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\tq\000\000\tq\000\225\000\000\000\000\000\229\000\229\000\225\000\000\000\000\000\000\000\225\000\229\tq\tq\000\229\000\000\b\030\tq\000\229\000\000\000\225\tq\000\225\tq\000\225\000\000\000\225\tq\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\249\000\000\000\000\000\000\000\000\001\249\000\000\000\000\000\000\001\249\001^\000\000\000\000\000\000\000\000\000\000\001b\000\000\000\000\001\249\000\000\000\000\000\000\001\249\000\000\001\249\000\000\001\158$\178\000\000\000\000\000\000\000\000\000\000\001\162\000\000\001\166\001\249\000\000\001\249\001\170\000\000\001\174\001\178\001\249\000\000\000\000\000\000\000\000\000\000\006]\000\000\000\000\000\000\001\249\000\000\000\000\001\249\000\000\000\000\000\000\000\000\000\000\001\249\001\249\001\249\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\249\007\246\000\000\001\249\000\000\000\000\000\000\001\249\003\146\003j\000\000\000\000\003\014\000\000\000\000\000\000\000\000\003z\001\249\000\000\001\249\000\000\007\250\001\249\001\249\000\000\000\000\001\238\000\000\006]\000\000\000\000\000\000\001\249\003\150\000\000\000\000\000\000\000\000\000\000\001\249\001\249\000\000\000\000\000\000\000\000\001\249\000\000\003\170\000\000\000\000\003\190\001\249\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\016\161\016\161\000\000\000\000\000\000\016\161\000\000\007\166\007\170\016\161\000\000\007\254\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\161\000\000\016\161\000\000\016\161\000\000\016\161\000\000\t\030\000\000\000\000\b\186\000\000\000\000\007\174\000\000\t\014\000\000\016\161\000\000\005:\000\000\000\000\000\000\000\000\016\161\016\161\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\161\000\000\000\000\016\161\000\000\000\000\000\000\000\000\000\000\016\161\016\161\016\161\000\000\000\000\000\000\016\157\016\157\000\000\000\000\000\000\016\157\000\000\000\000\000\000\016\157\016\161\000\000\000\000\016\161\000\000\000\000\000\000\016\161\000\000\016\157\000\000\016\157\000\000\016\157\000\000\016\157\000\000\000\000\016\161\000\000\016\161\016\161\000\000\016\161\016\161\000\000\000\000\016\157\000\000\000\000\000\000\000\000\000\000\000\000\016\157\016\157\000\000\016\161\000\000\000\000\000\000\016\161\000\000\000\000\016\157\000\000\000\000\016\157\000\000\000\000\006\030\000\000\016\161\016\157\016\157\016\157\000\000\000\000\000\000\nU\nU\000\000\000\000\000\000\nU\000\000\000\000\000\000\nU\016\157\000\000\000\000\016\157\000\000\000\000\000\000\016\157\000\000\nU\000\000\nU\000\000\nU\000\000\nU\000\000\000\000\016\157\000\000\016\157\016\157\000\000\016\157\016\157\000\000\000\000\nU\000\000\000\000\000\000\000\000\000\000\t\242\nU\nU\000\000\016\157\000\000\000\000\000\000\016\157\000\000\000\000\nU\000\000\000\000\nU\000\000\000\000\000\000\000\000\016\157\nU\nU\000\242\000\000\000\000\002E\002E\000\000\000\000\002E\000\000\000\000\000\000\000\000\002E\000\000\nU\000\000\000\000\nU\000\000\000\000\000\000\nU\002E\000\000\000\000\000\000\000\000\000\000\000\000\002E\000\n\000\000\nU\000\000\nU\nU\000\000\nU\nU\000\000\000\000\000\000\000\000\002E\000\000\000\000\002E\nU\002E\000\000\000\000\nU\000\000\000\000\002E\nU\001\181\002E\002E\000\000\000\000\002E\002E\000\000\002E\002E\nU\002E\000\000\000\000\014.\000\000\000\000\000\000\000\000\000\000\001\181\000\000\002E\002E\002E\000\000\002E\000\000\014\150\014\222\014\246\014\174\015\014\000\000\000\000\002E\002E\000\000\000\000\002E\000\000\000\000\000\000\015&\015>\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\015V\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002E\000\242\000\000\000\000\002E\000\000\002E\000\000\000\000\000\000\014F\014\198\015n\015\134\015\182\000\000\000\000\000\000\002\025\000\000\000\000\000\000\000\000\002\025\000\000\015\206\001\234\002\025\000\000\000\000\001\181\000\000\000\000\000\000\000\000\n\213\015\230\002\025\000\000\000\000\000\000\002\025\000\000\002\025\000\000\000\000\000\000\n\017\n\017\n\017\016F\001\181\n\017\016^\015\158\002\025\000\000\n\017\000\000\001\181\015\254\000\000\002\025\024:\000\000\000\000\000\000\n\017\016\022\016.\005\002\000\000\002\025\000\000\n\017\002\025\000\000\000\000\000\000\n\017\000\000\002\025\002\025\002\025\000\000\000\000\000\000\000\000\n\017\000\000\000\000\n\017\n\017\n\017\000\000\000\000\000\000\002\025\002\025\n\017\002\025\000\000\n\017\n\017\005n\000\000\000\000\n\017\000\000\n\017\n\017\000\000\n\017\000\000\000\000\002\025\000\000\002\025\000\000\000\000\002\025\002\025\000\000\n\017\n\017\n\017\000\000\n\017\000\000\000\000\002\025\000\000\000\000\000\000\000\000\000\000\n\017\n\017\002\025\000\000\000\000\000\000\000\000\002\025\000\000\000\000\007\001\007\001\000\000\002\025\000\000\007\001\000\000\000\000\000\000\007\001\000\000\000\000\000\000\000\000\000\000\000\000\n\017\000\000\000\000\007\001\000\000\007\001\n\017\007\001\000\000\007\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\007\001\000\000\000\000\000\000\000\000\000\000\000\000\007\001\007\001\000\000\006\253\t\198\000\000\n\162\000\000\006\253\000\000\007\001\000\000\006\253\007\001\000\000\000\000\000\000\000\000\000\000\007\001\007\001\000\242\006\253\000\000\006\253\000\000\006\253\000\000\006\253\000\000\000\000\000\000\000\000\000\000\000\000\007\001\000\000\000\000\007\001\000\000\006\253\000\000\007\001\000\000\000\000\000\000\000\000\006\253\nB\000\000\000\000\000\000\000\000\007\001\000\000\007\001\007\001\006\253\007\001\007\001\006\253\000\000\000\000\000\000\000\000\000\000\006\253\006\253\000\242\000\000\000\000\000\000\007\001\000\000\000\000\000\000\007\001\000\000\000\000\000\000\000\000\000\000\006\253\000\000\000\000\006\253\000\000\007\001\000\000\006\253\000\000\000\000\016\173\016\173\000\000\000\000\000\000\016\173\000\000\000\000\006\253\016\173\006\253\006\253\000\000\006\253\006\253\000\000\000\000\000\000\000\000\016\173\000\000\016\173\000\000\016\173\000\000\016\173\000\000\006\253\000\000\000\000\000\000\006\253\000\000\000\000\000\000\000\000\000\000\016\173\000\000\000\000\000\000\000\000\006\253\000\000\016\173\016\173\000\000\016\177\016\177\000\000\000\000\000\000\016\177\000\000\016\173\000\000\016\177\016\173\000\000\000\000\000\000\000\000\000\000\016\173\016\173\000\242\016\177\000\000\016\177\000\000\016\177\000\000\016\177\000\000\000\000\000\000\000\000\000\000\000\000\016\173\000\000\000\000\016\173\000\000\016\177\000\000\016\173\000\000\000\000\000\000\000\000\016\177\nB\000\000\000\000\000\000\000\000\016\173\000\000\016\173\016\173\016\177\016\173\016\173\016\177\000\000\000\000\000\000\000\000\000\000\016\177\016\177\000\242\000\000\000\000\000\000\016\173\000\000\000\000\000\000\016\173\000\000\000\000\000\000\000\000\000\000\016\177\000\000\000\000\016\177\000\000\016\173\000\000\016\177\000\000\000\000\007\021\t\198\000\000\000\000\000\000\007\021\000\000\000\000\016\177\007\021\016\177\016\177\000\000\016\177\016\177\000\000\000\000\000\000\000\000\007\021\000\000\007\021\000\000\007\021\000\000\007\021\000\000\016\177\000\000\000\000\000\000\016\177\000\000\000\000\000\000\000\000\000\000\007\021\000\000\000\000\000\000\000\000\016\177\000\000\007\021\nB\000\000\007\025\007\025\000\000\000\000\000\000\007\025\000\000\007\021\000\000\007\025\007\021\000\000\000\000\000\000\000\000\000\000\007\021\007\021\000\242\007\025\000\000\007\025\000\000\007\025\000\000\007\025\000\000\000\000\000\000\000\000\000\000\000\000\007\021\000\000\000\000\007\021\000\000\007\025\000\000\007\021\000\000\000\000\000\000\000\000\007\025\007\025\000\000\000\000\000\000\000\000\007\021\000\000\007\021\007\021\007\025\007\021\007\021\007\025\000\000\000\000\000\000\000\000\000\000\007\025\007\025\007\025\000\000\000\000\000\000\007\021\000\000\000\000\000\000\007\021\000\000\000\000\000\000\000\000\000\000\007\025\000\000\000\000\007\025\000\000\007\021\0049\007\025\000\000\000\000\000\000\0049\000\000\000\000\001\234\0049\000\000\000\000\007\025\000\000\007\025\007\025\000\000\007\025\007\025\0049\000\000\000\000\000\000\0049\000\000\0049\000\000\000\000\000\000\000\000\000\000\007\025\000\000\000\000\000\000\007\025\000\000\0049\000\000\000\000\000\000\000\000\000\000\000\000\0049\000\000\nj\000\000\000\000\000\000\000\000\000\000\005\002\000\000\0049\000\000\000\000\0049\000\000\000\000\000\000\000\000\000\000\0049\0049\0049\000\000\000\000\000\000\0045\000\000\000\000\000\000\000\000\0045\000\000\000\000\001\234\0045\0049\0049\000\000\0049\000\000\000\000\000\000\005n\000\000\0045\000\000\000\000\000\000\0045\000\000\0045\tI\000\000\0049\tI\0049\000\000\000\000\0049\0049\000\000\000\000\0045\000\000\000\000\000\000\000\000\000\000\0049\0045\000\000\tI\tI\000\000\tI\tI\0049\005\002\000\000\0045\000\000\0049\0045\000\000\000\000\000\000\000\000\0049\0045\0045\0045\000\000\000\000\000\000\000\000\000\000\tI\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0045\0045\000\000\0045\025J\000\000\000\000\005n\000\000\000\000\000\000\000\000\tI\000\000\000\000\000\000\000\000\000\000\0045\000\000\0045\014.\000\000\0045\0045\025N\000\000\tI\000\000\000\000\000\000\000\000\000\000\0045\000\000\014\150\014\222\014\246\014\174\015\014\000\000\0045\000\000\000\000\000\000\000\000\0045\tI\000\000\tI\015&\015>\0045\000\000\000\000\000\000\000\000\000\000\000\000\000\000\015V\tI\tI\000\000\000\000\b\030\tI\000\000\000\000\000\242\tI\000\000\tI\000\000\000\000\000\000\tI\000\000\014F\014\198\015n\015\134\015\182\000\000\000\000\000\000\000\000\001u\000\000\000\000\000\000\000\000\001u\015\206\000\000\000\000\001u\000\000\000\000\000\000\000\000\000\000\000\000\000\000\015\230\000\000\001u\000\000\001u\000\000\001u\000\000\001u\000\000\000\000\000\000\000\000\000\000\016F\000\000\025R\016^\015\158\025b\001u\000\000\000\000\000\000\015\254\000\000\000\000\001u\000\000\000\000\000\000\001u\016\022\016.\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\015\233\001\173\000\000\000\000\000\000\000\000\000\000\000\000\001q\015\233\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\015\233\000\000\000\000\000\000\000\000\000\000\002-\015\233\000\000\000\000\000\000\002-\001\173\000\000\023Z\002-\000\000\003\014\001\173\001\173\001\173\000\000\000\000\000\000\000\000\002-\000\000\000\000\000\000\002-\000\000\002-\000\000\000\000\001\173\000\000\000\000\015\233\000\000\000\000\000\000\015\233\000\000\002-\000\000\000\000\000\000\000\000\000\000\000\000\002-\000\000\001\173\000\000\001\173\001\173\023^\001\173\001\173\000\000\002-\000\000\000\000\002-\000\000\000\000\000\000\000\000\000\000\002-\002-\000\000\023j\"\206\000\000\001\173\000\000\000\000\000\000\000\000\003\146\003j\000\000\000\000\003\014\002-\001\173\000\000\002-\003z\000\000\000\000\002-\000\000\000\000\000\000\004\194\000\000\000\000\001\238\000\000\000\000\007\170\002-\000\000\002-\003\150\000\000\002-\002-\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002-\000\000\003\170\000\000\000\000\003\190\000\000\001\194\002-\000\000\000\000\000\000\000\000\003Z\000\000\000\000\004\182\004\186\000\000\002-\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\225\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\225\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\154\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\222\000\000\000\000\000\000\n\226\n\230\n\242\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\250\000\000\000\000\003\170\011\018\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\007\229\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\007\229\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\017\n\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\017\022\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\017\"\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\177\000\000\000\000\000\000\003Z\005\177\000\000\004\182\004\186\005\177\000\000\000\000\004\190\000\000\004\198\007~\000\000\007\138\000\000\005\177\000\000\000\000\000\000\005\177\000\000\005\177\000\000\000\000\007\142\007\150\007\154\005\177\007\158\000\000\000\000\000\000\005\177\005\177\000\000\000\000\005\177\007\166\007\170\000\000\005\177\007\254\000\000\000\000\000\000\000\000\005\177\000\000\000\000\000\000\005\177\000\000\005\177\005\177\000\000\000\000\000\000\000\000\000\000\005\177\004\"\000\000\000\000\007\174\005\177\000\000\000\000\000\000\000\000\005:\000\000\005\177\000\000\000\000\000\000\005\177\000\000\n\162\005\177\000\000\000\000\005\177\005\177\000\000\005\177\000\000\000\000\000\000\000\000\000\000\005\177\004\"\000\242\005\177\000\000\005\177\000\000\000\000\005\177\005\177\005\177\000\000\000\000\000\000\nV\000\000\005\177\005\177\000\000\005\177\000\000\b\t\000\000\005\177\000\000\000\000\005\177\000\000\000\000\003j\000\000\"\022\003\014\000\000\005\177\000\000\005\177\003z\000\000\005\177\005\177\000\000\b\t\000\000\000\000\000\000\000\000\001\238\000\000\005\177\000\000\003~\000\000\000\000\000\000\000\000\000\000\005\177\000\000\000\000\000\000\003\130\030.\004Z\000\000\000\000\000\000\000\000\005\177\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\222\000\000\000\000\000\000\n\226\n\230\n\242\000\000\000\000\007\138\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\t\225\000\000\000\000\007\150\007\154\t\225\000\000\000\000\000\000\t\225\000\000\000\000\000\000\000\000\000\000\007\166\007\170\000\000\000\000\t\225\000\000\000\000\000\000\t\225\000\000\t\225\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\t\225\000\000\000\000\000\000\007\174\n\250\000\000\t\225\000\000\011\018\005:\t\225\000\000\000\000\000\000\000\000\000\000\t\225\000\000\000\000\t\225\000\000\000\000\000\000\000\000\000\000\t\225\t\225\000\242\000\000\000\000\000\000\t\221\000\000\000\000\t\225\t\225\t\221\000\000\000\000\000\000\t\221\t\225\000\000\000\000\t\225\000\000\000\000\000\000\t\225\000\000\t\221\000\000\000\000\000\000\t\221\000\000\t\221\000\000\000\000\t\225\000\000\t\225\t\225\000\000\t\225\t\225\000\000\000\000\t\221\000\000\000\000\000\000\000\000\000\000\t\225\t\221\000\000\000\000\000\000\t\221\000\000\000\000\t\225\000\000\000\000\t\221\000\000\000\000\t\221\000\000\000\000\000\000\000\000\000\000\t\221\t\221\000\242\000\000\000\000\000\000\000\000\000\000\000\000\t\221\t\221\000\000\000\000\000\000\000\000\000\000\t\221\000\000\000\000\t\221\000\000\000\000\000\000\t\221\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001a\t\221\000\000\t\221\t\221\001a\t\221\t\221\000\185\001a\000\000\000\000\000\000\000\000\000\000\000\000\t\221\000\185\000\000\001a\000\000\001a\000\000\001a\t\221\001a\000\000\000\000\000\000\000\000\004-\000\000\000\000\000\000\000\000\004-\000\000\001a\000\000\004-\000\000\000\000\000\000\000\000\001a\000\185\000\000\000\000\000\000\004-\000\000\000\000\000\185\004-\000\000\004-\000\000\001a\000\000\000\000\000\000\000\000\000\000\001a\001a\001a\000\000\004-\000\000\023r\000\000\004-\000\000\000\000\004-\000\000\004-\000\000\000\000\001a\004-\000\000\000\000\000\000\004-\000\000\000\185\004-\000\000\000\000\004-\000\000\000\000\004-\004-\004-\004-\001a\000\000\001a\001a\000\000\001a\001a\000\000\000\000\000\000\000\000\004-\004-\023r\000\000\004-\000\000\000\000\004-\004-\000\000\000\000\000\000\001a\bu\000\000\000\000\000\000\004-\bu\004-\004-\004-\bu\001a\004-\004-\004-\004-\004-\000\000\000\000\000\000\bu\000\000\004-\000\000\bu\000\000\bu\000\000\000\000\023\230\004-\000\000\006U\004-\000\000\004-\000\000\004-\bu\000\000\000\000\004-\000\000\000\000\000\000\bu\000\000\000\000\004-\000\000\004-\"\030\004-\004-\004-\bu\000\000\004-\bu\000\000\000\000\004-\000\000\000\000\bu\bu\000\000\000\000\000\000\000\000\023\230\004-\000\000\000\000\000\000\004-\004-\004-\000\000\000\000\bu\000\000\000\000\bu\000\000\000\000\000\000\bu\000\000\004-\000\000\023r\000\000\000\000\000\000\000\000\004-\000\000\bu\000\000\bu\bu\000\000\bu\bu\000\000\004-\000\000\000\000\004-\000\000\000\000\000\000\bu\000\000\004-\004-\004-\bu\000\000\002\246\bu\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004-\bu\000\000\004-\000\000\000\000\006\173\004-\000\000\000\000\000\000\006\173\000\000\000\000\000\000\006\173\000\000\000\000\004-\000\000\004-\"N\000\000\004-\004-\006\173\000\000\000\000\000\000\006\173\000\000\006\173\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\023\230\004-\000\000\006\173\000\000\000\000\004-\000\000\000\000\000\000\006\173\000\000\000\000\000\000\000\000\000\000\n\162\000\000\000\000\000\000\006\173\000\000\000\000\006\173\000\000\000\000\000\000\000\000\000\000\006\173\006\173\000\242\000\000\000\000\000\000\006\177\000\000\000\000\000\000\000\000\006\177\000\000\000\000\000\000\006\177\006\173\006\173\000\000\006\173\000\000\000\000\000\000\006\173\000\000\006\177\000\000\000\000\000\000\006\177\000\000\006\177\000\000\000\000\006\173\000\000\006\173\000\000\000\000\006\173\006\173\000\000\000\000\006\177\000\000\000\000\000\000\000\000\000\000\000\000\006\177\000\000\000\000\000\000\000\000\000\000\n\162\006\173\000\000\000\000\006\177\000\000\000\000\006\177\000\000\000\000\000\000\000\000\006\173\006\177\006\177\000\242\000\000\000\000\000\000\004-\000\000\000\000\000\000\000\000\004-\000\000\000\000\000\000\004-\006\177\006\177\000\000\006\177\000\000\000\000\000\000\006\177\000\000\004-\000\000\000\000\000\000\004-\000\000\004-\000\000\000\000\006\177\000\000\006\177\000\000\000\000\006\177\006\177\000\000\000\000\004-\000\000\023r\000\000\000\000\000\000\000\000\004-\000\000\000\000\007\153\000\000\000\000\000\000\006\177\007\153\000\000\004-\000\000\007\153\004-\000\000\000\000\000\000\000\000\006\177\004-\004-\004-\007\153\000\000\000\000\000\000\007\153\000\000\007\153\000\000\000\000\000\000\000\000\000\000\000\000\004-\000\000\000\000\004-\000\000\007\153\000\000\004-\000\000\000\000\000\000\000\000\007\153\000\000\000\000\000\000\000\000\000\000\004-\000\000\004-\026n\007\153\004-\004-\007\153\000\000\000\000\000\000\000\000\000\000\007\153\007\153\000\242\000\000\000\000\000\000\000\000\000\000\000\000\023\230\004-\000\000\000\000\000\000\000\000\000\000\007\153\000\000\000\000\007\153\000\000\000\000\000\000\007\153\000\000\000\000\000\000\000\000\000\000\000\000\001\206\001\230\003\n\000\000\007\153\003\014\007\153\030R\000\000\007\153\007\153\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\007\153\001\238\003\018\002\002\003\026\015\225\000\000\000\000\007\153\000\000\015\225\002\014\000\000\001\210\015\225\000\000\000\000\000\000\000\000\007\153\000\000\000\000\000\000\000\000\015\225\003\030\001\214\003:\015\225\000\000\015\225\003F\000\000\003Z\004\226\004\238\000\000\000\000\000\000\000\000\000\000\030\006\015\225\030\n\000\000\000\000\000\000\000\000\000\000\015\225\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\015\225\000\000\004\254\015\225\000\000\000\000\000\000\000\000\000\000\015\225\015\225\000\000\007\170\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\030\022\000\000\015\225\000\000\000\000\015\225\000\000\000\000\000\000\015\225\003\146\003j\000\000\000\000\003\014\000\000\000\000\000\000\030\026\003z\015\225\000\000\015\225\003\006\000\000\015\225\015\225\000\000\000\000\001\238\000\000\000\000\000\000\000\000\000\000\015\225\003\150\000\000\000\000\000\000#\218\000\000\000\000\015\225\000\000\000\000\000\000\b\165\t\198\000\000\003\170\000\000\b\165\012f\015\225\001\194\b\165\000\000\000\000\000\000\000\000\003Z\000\000\000\000\004\182\004\186\b\165\000\000\000\000\004\190\b\165\004\198\b\165\000\000\007\138\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\165\007\142\007\150\007\154\000\000\007\158\000\000\b\165\nB\000\000\000\000\000\000\000\000\002\005\007\166\007\170\000\000\b\165\002\005\000\000\b\165\000\000\002\005\000\000\000\000\000\000\b\165\b\165\000\242\000\000\000\000\000\000\002\005\000\000\000\000\000\000\002\005\000\000\002\005\000\000\007\174\000\000\b\165\000\000\000\000\b\165\005:\000\000\000\000\b\165\002\005\000\000\000\000\000\000\000\000\000\000\000\000\002\005\000\000\000\000\b\165\000\000\b\165\0021\000\000\b\165\b\165\002\005\0021\000\000\002\005\000\000\0021\000\000\000\000\000\000\002\005\002\005\002\005\000\000\000\000\000\000\0021\b\165\000\000\000\000\0021\000\000\0021\000\000\000\000\000\000\002\005\000\000\000\000\002\005\000\000\000\000\000\000\002\005\0021\000\000\000\000\000\000\000\000\000\000\000\000\0021\000\000\000\000\002\005\000\000\002\005\000\000\000\000\002\005\002\005\0021\000\000\000\000\0021\026z\000\000\000\000\000\000\000\000\0021\0021\000\000\000\000\000\000\000\000\007\157\002\005\000\000\000\000\000\000\007\157\002\005\000\000\000\000\007\157\0021\000\000\000\000\0021\000\000\000\000\000\000\0021\000\000\007\157\000\000\000\000\000\000\007\157\000\000\007\157\000\000\000\000\0021\000\000\0021\000\000\000\000\0021\0021\000\000\000\000\007\157\000\000\000\000\000\000\000\000\000\000\0021\007\157\000\000\000\000\000\000\000\000\000\000\000\000\0021\000\000\000\000\007\157\000\000\030.\007\157\000\000\000\000\000\000\000\000\0021\007\157\007\157\000\242\000\000\000\000\000\000\015\153\000\000\000\000\003j\015\153\000\000%\138\000\000\000\000\000\000\007\157%\142\000\000\007\157\015\153\000\000\000\000\007\157\000\000\000\000\015\153\000\000\000\000\000\000\000\000\000\000\000\000\000\000\007\157\000\000\007\157\000\000\015\153\007\157\007\157\000\000\000\000\000\000\000\000\015\153\000\000\000\000\000\000\007\157\000\000\001\006\000\000\001\194\000\000\015\153\000\000\007\157\015\153\000\000\000\000\000\000\000\000\000\000\015\153\000\000\000\000\000\000\007\157\000\000\015}\000\000%\146\003j\015}\000\000%\170\000\000\000\000\000\000\015\153%\174\000\000\015\153\015}\000\000\000\000\015\153\000\000\000\000\015}\000\000\000\000\000\000\000\000\000\000\000\000%\150\015\153\000\000\015\153\000\000\015}\015\153\000\000\000\000\000\000\000\000\000\000\015}\000\000\000\000\000\000\000\000\000\000\001\006\000\000\001\194\000\000\015}\000\000\015\153\015}\000\000\000\000\000\000\000\000\000\000\015}\000\000\000\000\000\000\000\000\000\000\000\000\000\000%\178\000\000\001\206\001\230\003\n\000\000\000\000\003\014\015}\000\000\000\000\015}\000\000\000\000\000\000\015}\000\000\000\000\000\000\000\000\000\000\000\000\001\238\003\018\002\002%\182\015}\000\000\015}\000\000\000\000\015}\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:\015}\000\000\000\000\003F\000\000\003Z\004\226\004\238\000\000\000\000\000\000\005\177\000\000\030\006\000\000#\190\005\177\000\000\000\000\001\021\005\177\000\000\000\000\000\000\001\021\000\000\000\000\000\000\001\021\000\000\005\177\000\000\000\000\004\254\005\177\000\000\005\177\000\000\001\021\000\000\000\000\000\000\001\021\007\170\001\021\000\000\000\000\000\000\005\177\000\000\000\000\000\000\000\000\000\000#\202\005\177\001\021\000\000\000\000\000\000\000\000\005\n\000\000\001\021\000\000\005\177\000\000\000\000\005\177\000\000\000\000\000\000\030\026\001\021\005\177\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\177\000\000\000\000\005\177\000\000\000\000\000\000\005\177\001\021\000\000\000\000\001\021\000\000\000\000\000\000\001\021\000\000\000\000\005\177\tu\005\177\000\000\tu\005\177\005\177\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\tu\tu\005\177\tu\tu\001\025\000\000\000\000\000\000\001\025\001\021\001\025\000\000\005\177\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\021\000\000\001\025\000\000\tu\000\000\000\000\000\000\000\000\001\025\000\000\000\000\b\161\000\000\000\000\000\000\000\000\b\161\000\000\001\025\000\000\b\161\001\025\000\000\000\242\000\000\000\000\000\000\001\025\001\025\000\242\b\161\000\000\000\000\000\000\b\161\000\000\b\161\000\000\tu\000\000\000\000\000\000\000\000\001\025\000\000\000\000\001\025\000\000\b\161\000\000\001\025\000\000\000\000\000\000\000\000\b\161\000\000\000\000\tu\000\000\tu\001\025\000\000\001\025\000\000\b\161\001\025\001\025\b\161\000\000\000\000\000\000\tu\tu\b\161\b\161\b\030\tu\000\000\000\000\007\145\tu\000\000\tu\001\025\007\145\000\000\tu\000\000\007\145\b\161\000\000\000\000\b\161\000\000\001\025\026J\b\161\000\000\007\145\000\000\000\000\000\000\007\145\000\000\007\145\000\000\000\000\b\161\000\000\b\161\025\170\000\000\b\161\b\161\000\000\000\000\007\145\000\000\000\000\000\000\000\000\000\000\000\000\007\145\000\000\000\000\005\177\t\198\000\000\000\000\b\161\005\177\000\000\007\145\000\000\005\177\007\145\000\000\000\000\000\000\000\000\000\000\007\145\007\145\000\000\005\177\000\000\000\000\000\000\005\177\000\000\005\177\000\000\000\000\000\000\000\000\000\000\000\000\007\145\000\000\000\000\007\145\000\000\005\177\000\000\007\145\000\000\000\000\000\000\000\000\005\177\nB\000\000\000\000\000\000\001\153\007\145\000\000\007\145\000\000\001\153\007\145\007\145\005\177\001\153\000\000\000\000\000\000\000\000\005\177\004\"\000\242\000\000\000\000\001\153\000\000\001\153\000\000\001\153\007\145\001\153\000\000\000\000\000\000\000\000\005\177\000\000\000\000\015-\000\000\000\000\000\000\001\153\015-\000\000\000\000\000\000\015-\000\000\001\153\000\000\000\000\000\000\005\177\000\000\005\177\000\000\015-\005\177\005\177\000\000\015-\001\153\015-\000\000\000\000\000\000\000\000\001\153\001\153\000\242\000\000\000\000\000\000\000\000\015-\005\177\000\000\000\000\000\000\000\000\000\000\015-\000\000\001\153\000\000\000\000\005\177\000\000\000\000\000\000\000\000\015-\000\000\000\000\015-\000\000\000\000\000\000\000\000\000\000\015-\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\015-\014\030\000\000\015-\000\000\000\000\015\225\015-\001\153\000\000\000\000\015\225\000\000\000\000\000\000\015\225\000\000\000\000\015-\001\153\015-\000\000\000\000\015-\015-\015\225\000\000\000\000\000\000\015\225\000\000\015\225\000\000\000\000\001\206\002\022\001\234\000\000\000\000\000\000\000\000\015-\000\000\015\225\000\000\000\000\000\000\000\000\000\000\003\"\015\225\000\000\016v\000\000\001\238\003&\002\002\000\000\000\000\000\000\000\000\000\000\000\000\015\225\002\014\000\000\001\210\000\000\000\000\015\225\015\225\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\015\225\003Z\004\226\004\238\000\000\be\be\be\000\000\004\250\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\015\225\000\000\015\225\003\006\004\242\015\225\015\225\be\be\be\000\000\004\254\000\000\000\000\000\000\015\225\000\000\be\000\000\be$\022\000\000\000\000\015\225\000\000\000\000\000\000\000\000\000\000\000\000\000\000\be\be\be\015\225\000\000\000\000\be\000\000\be\be\be\000\000\023b\000\000\000\000\005\137\be\000\000\000\000\000\000\005\137\000\000\000\000\000\000\005\137\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\005\137\000\000\be\000\000\005\137\000\000\005\137\000\000\006\185\t\198\000\000\000\000\000\000\006\185\000\000\000\000\000\000\006\185\005\137\000\000\000\000\000\000\000\000\000\000\000\000\005\137\000\000\006\185\000\000\000\000\000\000\006\185\000\000\006\185\000\000\005\137\000\000\000\000\005\137\000\000\000\000\004\230\000\000\be\005\137\006\185\000\000\000\000\000\000\000\000\000\000\000\000\006\185\nB\000\000\000\000\000\000\000\000\000\000\000\000\005\137\000\000\000\000\005\137\000\000\006\185\000\000\005\137\000\000\000\000\000\000\006\185\006\185\000\242\000\000\000\000\000\000\005\129\005\137\000\000\005\137\000\000\005\129\005\137\005\137\000\000\005\129\006\185\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\005\129\000\000\000\000\000\000\005\129\005\137\005\129\000\000\005\161\006\185\000\000\006\185\000\000\005\161\006\185\006\185\025\210\005\161\005\129\000\000\000\000\000\000\000\000\000\000\000\000\005\129\000\000\005\161\000\000\000\000\000\000\005\161\006\185\005\161\000\000\005\129\000\000\000\000\005\129\000\000\000\000\000\000\000\000\000\000\005\129\005\161\000\000\000\000\000\000\000\000\000\000\000\000\005\161\000\000\000\000\000\000\000\000\000\000\000\000\000\000\005\129\000\000\005\161\005\129\000\000\005\161\000\000\005\129\000\000\000\000\000\000\005\161\000\000\000\000\000\000\000\000\000\000\000\000\005\129\000\000\005\129\000\000\000\000\005\129\005\129\000\000\000\000\005\161\000\000\000\000\005\161\r\150\000\000\000\000\005\161\000\000\000\000\001\206\001\230\001\234\000\000\005\129\000\000\000\000\000\000\005\161\000\000\005\161\000\000\000\000\005\161\005\161\028\198\000\000\004\194\000\000\015\141\001\238\003\018\002\002\015\141\000\000\000\000\000\000\000\000\000\000\000\000\002\014\005\161\001\210\015\141\000\000\000\000\000\000\000\000\005q\015\141\000\000\000\000\029\190\005q\003V\001\214\003:\005q\000\000\000\000\003F\015\141\003Z\004\226\004\238\000\000\000\000\005q\015\141\000\000\004\250\005q\000\000\005q\000\000\000\000\000\000\000\000\015\141\000\000\000\000\015\141\000\000\000\000\000\000\005q\000\000\015\141\000\000\000\000\004\254\000\000\005q\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\005q\015\141\000\000\005q\015\141\000\000\000\000\000\000\015\141\005q\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\015\141\000\000\015\141\000\000\000\000\015\141\005q\000\000\0056\005q\005:%z\r\162\005q\000\000\000\000\000\000\000\000\001\206\001\230\001\234\016\142\000\000\015\141\005q\000\000\005q\000\000\000\000\005q\005q\000\000\b\161\000\000\000\000\000\000\000\000\b\161\001\238\001\242\002\002\b\161\000\000\000\000\000\000\000\000\000\000\005q\002\014\000\000\001\210\b\161\000\000\000\000\000\000\b\161\000\000\b\161!J\000\000\000\000\000\000\002\018\001\214\003:\000\000\000\000\000\000\003F\b\161\003Z\004\226\004\238\000\000\000\000\000\000\b\161\000\000\004\250\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\161\000\000\000\000\000\000\000\000\000\000\b\161\b\161\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\b\161\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\b\161\000\000\b\161\025\170\000\000\b\161\b\161\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\026\222\000\000\000\000\b\161\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\ba\ba\ba\003V\001\214\003:\000\000\000\000\000\000\003F\000\000\003Z\004\226\004\238\te\000\000\000\000\te\000\000\004\250\ba\ba\ba\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ba\000\000\ba\000\000\te\te\000\000\te\te\004\254\000\000\000\000\000\000\000\000\ba\ba\ba\000\000\000\000\000\000\ba\000\000\ba\ba\ba\016\181\016\181\016\181\000\000\te\ba\000\000\000\000\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\181\016\181\016\181\t\218\000\242\ba\000\000\000\000\000\000\000\000\016\181\000\000\016\181\000\000\000\000\000\000\000\000\000\000\000\000\te\000\000\000\000\000\000\000\000\016\181\016\181\016\181\000\000\000\000\000\000\016\181\000\000\016\181\016\181\016\181\000\000\000\000\000\000\000\000\te\016\181\te\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\007\018\000\000\bz\te\000\000\000\000\b\030\te\b\138\016\181\000\000\te\000\000\te\001\206\001\230\001\234\te\000\000\000\000\000\000\000\000\000\000\000\000\000\000\r\162\000\000\000\000\000\000\000\000\000\000\001\206\001\230\001\234\001\238\001\242\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\003\018\002\002\000\000\000\000\000\000\000\000\002\018\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\003V\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\023\238\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\031j\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\031\202\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\005\145\004\254\002\018\001\214\003:\005\145\000\000\000\000\003F\005\145\003Z\004\226\004\238\000\000\000\000\000\000\000\000\000\000\004\250\005\145\000\000\000\000\000\000\005\145\000\000\005\145\000\000\005y\001\206\001\230\001\234\000\000\005y\000\000\000\000\000\000\005y\005\145\004\254\000\000\000\000\000\000\000\000\000\000\005\145\000\000\005y\000\000\001\238\003\018\005y\000\000\005y\000\000\000\000\000\000\000\000\005\145\000\000\000\000\001\210\000\000\000\000\005\145\005y\000\000\000\000\000\000\000\000\000\000\000\000\005y\005\130\001\214\005\002\000\000\000\000\000\000\003F\005\145\003Z\004\226\004\238\000\000\005y\000\000\000\000\000\000\004\250\000\000\005y\005\169\000\000\000\000\000\000\000\000\005\169\005\145\000\000\005\145\005\169\000\000\005\145\005\145\000\000\000\000\005y\000\000\004\254\000\000\005\169\000\000\000\000\000\000\005\169\000\000\005\169\000\000\005\197\000\000\005\145\000\000\000\000\000\250\005y\000\000\005y\003\254\005\169\005y\005y\027\026\000\000\000\000\000\000\005\169\000\000\004*\000\000\000\000\000\000\005\197\000\000\004.\000\000\000\000\000\000\005y\005\169\000\000\000\000\000\000\000\000\000\000\005\169\004:\000\000\000\000\029R\000\000\000\000\000\000\025\150\000\000\000\000\000\000\000\000\000\000\000\000\000\000\005\169\000\000!v\000\000\000\000\025\250\000\000\000\000\000\000\000\000\000\000\026\018\005\185\000\000\000\000\000\000\000\000\000\250\005\169\000\000\005\169\002V\000\000\005\169\005\169\000\000\000\000\026\026\000\000\000\000\000\000\026\158\000\000\000\000\000\000\005\185\000\000\004.\000\000\000\000\000\000\005\169\000\000\001\230\001\234\026\"\000\000\026^\000\000\026\162\005\197\005\197\029\238\000\000\000\000\000\000\026\202\000\000\000\000\000\000\000\000\000\000\001\238\003\018\002\002\000\000\000\000\000\000\030\174\025\250\000\000\000\000\002\014\000\000\000\000\026\018\027\174\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003J\000\000\029\006\000\000\028&\026\026\003F\000\000\003Z\004\226\004\238\000\000\000\000\000\000\000\000\000\000\029\022\000\000\000\000\000\000\000\000\000\000\000\000\026\"\000\000\027b\000\000\000\000\005\185\005\185\000\000\000\000\000\000\000\000\000\000\000\000\004\254\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\027r")) and lhs = - (8, "\014\r\012\011\n\t\b\007\006\005\004\003\002\001\000\247\247\246\246\246\246\245\244\244\243\243\243\243\243\243\243\243\243\243\243\243\243\243\243\243\243\243\243\243\243\243\243\243\243\242\242\241\240\239\239\239\239\239\239\239\239\238\238\238\238\238\238\238\238\237\237\237\236\236\235\234\234\234\233\233\232\232\232\232\232\232\231\231\231\231\231\231\231\231\230\230\230\230\230\230\230\230\229\229\229\229\228\227\226\226\226\225\225\225\224\224\224\224\224\224\223\223\222\222\222\222\221\221\221\220\220\220\220\219\218\218\218\218\218\217\217\216\216\215\215\214\214\213\213\212\211\210\209\209\208\208\207\207\207\207\207\207\207\207\207\207\207\207\207\207\207\207\207\207\207\207\207\207\207\207\207\207\207\207\207\207\207\207\207\207\207\207\207\207\207\207\207\207\207\207\207\207\207\207\207\207\207\207\207\207\207\207\207\207\207\207\207\207\207\207\207\207\207\207\207\207\207\207\207\207\207\207\207\207\207\207\207\207\207\207\207\207\207\207\207\207\207\207\207\207\207\207\207\207\207\206\206\206\205\204\204\204\204\203\203\202\202\201\201\201\201\201\201\200\199\198\198\197\197\196\196\195\194\194\193\193\192\191\191\190\189\188\188\188\187\187\187\186\185\185\185\185\185\185\184\184\184\184\184\184\184\184\184\184\184\184\184\184\184\184\183\182\181\180\180\179\179\179\179\179\179\179\179\179\178\178\177\177\177\176\176\176\175\175\175\175\174\174\173\173\172\172\171\171\170\170\169\169\168\168\167\167\166\166\165\165\164\164\164\163\163\163\163\162\162\161\161\160\160\159\159\159\159\159\158\158\158\158\157\157\157\156\156\156\156\156\156\156\155\155\155\155\155\155\155\154\154\153\153\152\152\152\152\152\152\151\151\150\150\149\149\148\148\147\147\147\146\145\145\145\144\144\143\143\143\143\143\143\143\143\143\142\142\141\141\140\140\140\140\140\140\140\140\140\140\140\140\139\138\137\136\136\135\135\135\134\134\134\134\134\133\132\132\131\130\130\129\129\129\129\129\129\128\128\127\127~~~~~~~~~~~~~~}}||{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{zzyyxxwwvvuuttsssrrqqppoonnmmmmmmmmmmmmmmmmmmlllkjihgfedcba``````````___^^^]]]]]\\\\\\\\\\\\\\\\\\[[ZZZZZYYXXWVUUTTTTTSSRRQQQPPPPPPOOONNMMLLKKJJIIHHHHGGGFFEEDDCCBBAA@@????>>======<<;;::::::99988877766543333333333333333333222222111110000000000////////////////////////////////////////////////////////////////////////////////////..-----------------------,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,++**))))))))))))))))))))))))))))))))))))((''''''''''''''''&&%%$$$$$$$$$$$$$$####\"\"!!!!! \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\247\247\246\246\246\246\245\244\244\243\243\243\243\243\243\243\243\243\243\243\243\243\243\243\243\243\243\243\243\243\243\243\243\243\242\242\241\240\239\239\239\239\239\239\239\239\238\238\238\238\238\238\238\238\237\237\237\236\236\235\234\234\234\233\233\232\232\232\232\232\232\231\231\231\231\231\231\231\231\230\230\230\230\230\230\230\230\229\229\229\229\228\227\226\226\226\225\225\225\224\224\224\224\224\224\223\223\222\222\222\222\221\221\221\220\220\220\220\219\218\218\218\218\218\217\217\216\216\215\215\214\214\213\213\212\211\210\209\209\208\208\207\207\207\207\207\207\207\207\207\207\207\207\207\207\207\207\207\207\207\207\207\207\207\207\207\207\207\207\207\207\207\207\207\207\207\207\207\207\207\207\207\207\207\207\207\207\207\207\207\207\207\207\207\207\207\207\207\207\207\207\207\207\207\207\207\207\207\207\207\207\207\207\207\207\207\207\207\207\207\207\207\207\207\207\207\207\207\207\207\207\207\207\207\207\207\207\207\207\207\206\206\206\205\204\204\204\204\203\203\202\202\201\201\201\201\201\201\200\199\198\198\197\197\196\196\195\194\194\193\193\192\191\191\190\189\188\187\186\185\185\185\184\184\184\183\182\182\182\182\182\182\181\181\181\181\181\181\181\181\181\181\181\181\181\181\181\181\180\180\179\179\179\179\179\179\179\179\179\178\178\177\177\177\176\176\176\175\175\175\175\174\174\173\173\172\172\171\171\170\170\169\169\168\168\167\167\166\166\165\165\164\164\164\163\163\163\163\162\162\161\161\160\160\159\159\159\159\159\158\158\158\158\157\157\157\156\156\156\156\156\156\156\155\155\155\155\155\155\155\154\154\153\153\152\152\152\152\152\152\151\151\150\150\149\149\148\148\147\147\147\146\145\145\145\144\144\143\143\143\143\143\143\143\143\143\142\142\141\141\140\140\140\140\140\140\140\140\140\140\140\140\139\138\137\136\136\135\135\135\134\134\134\134\134\133\132\132\131\130\130\129\129\129\129\129\129\128\128\127\127~~~~~~~~~~~~~~}}||{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{zzyyxxwwvvuuttsssrrqqppoonnmmmmmmmmmmmmmmmmmmlllkjihgfedcba``````````___^^^]]]]]\\\\\\\\\\\\\\\\\\[[ZZZZZYYXXWVUUTTTTTSSRRQQQPPPPPPOOONNMMLLKKJJIIHHHHGGGFFEEDDCCBBAA@@????>>======<<;;::::::99988877766543333333333333333333222222111110000000000////////////////////////////////////////////////////////////////////////////////////..-----------------------,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,++**))))))))))))))))))))))))))))))))))))((''''''''''''''''&&%%$$$$$$$$$$$$$$####\"\"!!!!! \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, "\002\028\001O\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\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\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\152\000\000\000\000\000\130\002\210\000)\000\249\000\218\000\019\000B\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\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\000\000\000\000\000\000\000\000\000\000\016\000\000\000\000\000\000\000T\000\000\000\000\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\156\0018\001\204\001\224\000\000\000\000\000\000\000\000\000\000\000\000\001\132\000\000\000\000\000\000\000\000\000\000\000\000\000\000\bf\000\000\000\004\000\000\000\000\000\000\0026\000\000\001&\000\000\000\000\002n\002\020\000\166\000\000\002^`\184\002\192\002\180\000*\000\000\000\000\000\000\000\158\000\000\000\000\001\228\000\000\000\000\000\000\000\000\000\000\004\026\000\000\003\030\000\000\005R\000\000\0032\005r\000\000\004\234\000\000\000\000\000\000\000\000\000\018\000\000\000\000\000\000\005\184\000\000\003\\\006&\000\000\000x\001\128\002^\000\000\000\000\005D\004t\000\000\000\000\004\\\000\000#`\bf\000\000\004t\000\000\006:\000\000\000\000\000\000\000~%|\0050\bf\004\144\000\000\bf\003X\002\210\n\012\000\000\000\000\004\242\006J\n\194\000\000J\134\005\156\006\144\005\206W\230\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000(\148\000\000\006\024\007\156\006\182\000\000\000\000\000\000\000\000\000\204\000\000\000\000\b&\000\240\b~\005\162\006*\b\248\002\030\002\188\004T\003\198\005D\007\218\000\188\004z\000D\007P\000\000\000\000\000\000\0070\007\156\t\022\003\128\003\228\t\028C\246\011\016\bX\t4\001\238\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\bv\t\184\011(\b\240J\134#\186\011\222\000\000D`\0124D\178E\150E\210\000\000\000a\000\000\000\000\000\000\000\000\n\024h2\nF\000\000 \n\n\134\000\000X\130^\220\001\027\000\000\000\000\001N\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000X\200\t\248\000\000\000\000\000\000\000\000\000#\000\000\000\000\000\000\004\146\000\000\000\000\006\004\000R\000\000\000\000\000\000\007\012`\244\000\000\000\000\006\178\000\196\000\000\000\000\000\000h<\b\018a\160\000\000\n\000\000\000\000\000\n>\000\000\006\190\000\000\000\000h\128\000\000\003\170\000\000\002^\000\000\000\000\r\210\000\000\0044\000\000\000\000\018\b\000\000\006\004\b\166\006\004\000\000\000\000\000\000\nR\000\000\000\000\000\000\006\228\000\000\000\000\n\150\000\000\006\234\000\000\000\000\003\170\000\000h\220\003\170\000\000\003\170\000\000iH\003\170\000\000\r(\000\000\000\000\018\130\000\000\000\000\016x\000\000\000\000\019\140\000\000\023\156a\230\000\000i^\003\170\000\000\023\210\000\000\000\000\024\158\000\000\000\000\028\004\000\000\000\000\025T\000\000\026\166\000\000\000\000\000\000\000\000\000\000^\224\000\000\t\210\011N\000\000i\134\t\226q\250\000\000\000\000\000\000\000\000\003\170\000\000\000\000\000\000X\222\000\000\000\000\000\000\000\000\000\000\000\000\000C\011f\000\000\000\000\000\000\003\170\011\184Y8\011\018\n\0208*\000\000\007z\000\000\000\000\000\000\b\146\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000V\000\000\000\000\000\000\000\000\000\000\000\000\012bY\228\000\000\000\000\011>\n\024Z \000\000\000\000\000\000Z\156\t\240Z\218\000\000\t\240\000\000[\022\t\240\000\000[R(\148\012\012\012F\000\000\000\000d\030\000\000\000\000\000\000\000\000\000\000\000\000\t\240\000\000\000\000[\146\000\000\t\240d\158\000\000\003\170\000\000\000\000[\208\000\000\t\240\005\248\000\000\000\000\t\240\t\240\000\000\000\000\t\240\000\000\000\000E\210\000\000\000\000\000\000\000\000\t\240FL\000\000\000\000\t\240\000\000\003\232\012\168\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000$\024\000\000\004.\000\000dV\000\000j&\003\170\003\170\012b\000\000\000\000\000\000\000\000\000\000\000\000\b\254\012f\r\n\012\166\012B\012L\012Z\n*\004\004\n2\001*\r\n\000\000\000\000\002\164\b\132\nB\006\016\012\162\b\190\000\000\000X\001\192\003\"\003\132\014\030\000\000\000\000r\028\000\000r$\r\164\000\000j^\003\170j\134\003\170\000\000\003\004\002$\000\000\0126\000X\000\000\000\000\r\\\000\000\000\000\000\000\000\000\000\000\017\172\000X\018\248\000X\000\000\007\246\000\000\000\000\b~\000\000\000\000\000\000\014\214\000\000\000\000\000\000\000\000\000X\000\000\000\000\000X\000\000\012\162\004x\000\000\001h\003\228\000\000\001h\000\000\000\000\020\156\000X\000\000\000\000\000\000\000\000\000\000\000\000\001h\012\244%\b% \014\140\014,F\014?\170\000\000\rj\nL\r\004\r|\nNj\184j\240\000\000\000\000\000\000\000\000\000\000\000\000\000\000\t\236\t\000\000\000\000\000\000\000\r\132\nV\005\184\001h\020\216\000\000\000X\000\000\000\000\000\000\0124\000\000k&\003\170\r|\r\134\n^\014<\r\138\nd$\162F\158\t\240\014L\r\148\n\136G8\014\164\000\000%\222\t\240dZ\000\000k*\003\170\003\170C\138\014\136\000\000\000\000\014\154\000\000\000\000\000\000\000\000&2\000i\000\000\000\000\b\024\000\000\000\000\000\000\t.\000\000\000\000\000\000\000\000\000\000\005~\000\000\000\000\t\240d\158\000\000k\178\003\170\000\000F\186\000\000\000\000eB&\234\t\240d\230\000\000k\246\003\170\000\000\\\012\t\240\000\000\014\252\014B\000\000\000\000\014x\000\000\tv\000\000\000\000\000\000l>\003\170\000\000\000\000\000\000_J\000\000\000\000\015\"\011\218\006\004\000\000\014\158\014b\n\146'b\000\000G\194\014\130\n\198'\158\000\000H>\000\000\000\000\014\132\n\212\\H\t\240\015\"\015t\014\136\n\254l\152\000\000\000\000\000\000l\208\000\000\000\000'\218\014\150\0118(\022\000\000(8H\000\014\164\011L)J\000\000\023\b\000\000\000\000\016\022lB\000\000\003\170en\000\000\003\170lT\003\170\000\000\000\000\000\000\000\000\000\000m\b\000\000\000\000\000\000\003\198\015\132\000\000\000\000\000\000\000\000H`\014\178\011P)\188\000\000mN\000\000\000\000\000\000\000\000\000\000\014v\016D\000\000\000\000\001[I\b\014\182\011\\)\254\000\000\001[Ij\014\190\011f*p\000\000\001[\000\000m\128\000\000I\214\014\192\011l*\178\000\000\001[\016\188\004\224\016\204\000\000\000\000J2\014\208\011t+$\000\000\001[J\190\014\212\011z+f\000\000\001[J\232\014\214\011\138+\216\000\000\001[K\000\014\220\011\146,\026\000\000\001[K\206\014\230\011\166,\140\000\000\001[L \014\238\011\170,\206\000\000\001[L\132\015\012\011\196-@\000\000\001[L\156\015b\011\216-\130\000\000\001[L\218\015j\011\244-\244\000\000\001[M\188\015\158\012\006.6\000\000\001[M\230\015\164\012(.\168\000\000\001[N^\015\166\0122.\234\000\000\001[N\132\015\238\012D/\\\000\000\001[N\214\015\244\012R/\158\000\000\001[O\150\015\246\012X0\016\000\000\001[P\002\016\022\012f0R\000\000\001[P:\016(\012l0\196\000\000\001[P\158\016|\012r1\006\000\000\001[P\168\016\130\012t1x\000\000\001[Q\012\016\156\012v1\186\000\000\001[\012\148\017\218\017.\017\142\000\000en\002\248\000\000m\208\003\170\018v\000\000\000\000m\226\003\170\018\216\000\000\000\000\0196\000\000\000\000\006\006\000\000\000\000\019\146\000\000\000\000\000\000\000\000n\014\003\170\020\030\000\000\016n\020~\000\000\\\136\000\000\t\240]\002\000\000\t\240]>\000\000\t\240\nN\000\000\000\000\000\000\000\000\000\000]~\t\240\n\232\021*e\232\000\000n\170\003\170\021F\000\000\000\000\021\196\000\000\000\000\000\000\007P\n\002\000\000\000\000\000\000\001[\021\252\000\000\000\000\000\000\022`\000\000\000\000\000\000\000\000\000\0001\246\000\000\000\000\000\000\001[2 \000\0002\156\000\000\000\000\000\0003\b\000\000\000\000\000\000\000\000n:\000\000\000\0003\164\000\000\000\000\000\000Q\176\016\198\012\1643,\000\000\001[3\200\000\000\000\000\000\000Q\238\017$\012\1704\170\000\000\001[4d\000\000\000\000\000\000RR\017@\012\2284\240\000\000\001[\006\224\022\222\000\000\000\000R\188\017h\012\2485\214\000\000\001[\023B\000\000\000\000R\250\017\132\r\0166\018\000\000\001[\023z\000\000\000\000Sd\017\196\r 6\138\000\000\001[\000\000\000\0006\172\000\000\000\000S\162\017\200\r(7\178\000\000\001[6\250\000\000\000\000S\200\017\226\r08L\000\000\001[7\188\000\000\000\000T\006\018(\rd9.\000\000\001[\000\000Tp\0184\rj9j\000\000\001[\000\000\0266\000\000\000\000\001[\000\000\000\000\000\0009\168\000\000\000\000:\004\000\000\000\000\000\000\0188\000\000\000\000\023\248\000\000\024\\\000\000\000\000\001[\000\000\000\000\024\192\000\000\025\018\000\000\000\000\000\000\000\000\000\000T\174\018H\rn:`\000\000U\024\018L\r\140;\024\000\000\001[\001[U|\018N\r\158;,\000\000\001[\000\000\016n\025v\000\000\000\000\025\210\000\000M>\000\000\000\000j\240\000\000\000\000\000\000;\130\018R\r\170;\208\000\230U\186\018\\\r\178;\228\000\000\001[\000+\000\000\000\131]\186]\248\t\240V$\018f\r\204<8\000\000\001[\t\240Vb\018l\r\220<\242\000\000\001[V\194\018v\r\236=`\018vV\204\018\140\r\238=\166\000\000\001[\001[W0\018\154\r\248>\020\000\000\001[\000\000\000\000\000\000\018\142\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\200\018\142\000\000>\138\018\170\014\012?6\003\230\018\142\000\000\000\000\000\000\000\000\000\000\001\196\018\142\000\000>\250\000\000\018\176\014\018@\b\006\218\018\142\000\000\000\000\000\000\000\000\004\170\018\142\000\000\020\026\000\000\000\000\000\000^b\000\000\000(\000\000\n\184\019\168\000\000\001\168\000\000\000\000\000\000\000\000\000\000\000\000\t\236\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\018\230\014D@L\000\000\001[\000\000\020.\000\000\000\000\000\000\000\000\000\000\018\250\014F@\234\n*\018\142\000\000\000\000\000\000\000\000\005>\018\142\000\000\019\012\014HA(\n\132\018\142\000\000\000\000\000\000\000\000\000\000\006\128\018\142\000\000\000\000\014n\006J\001h\026\136\000\000\019\022\014t\019\172\001\019\006\162\001h\021n\000X\007\174\001h\000\000\026\218\000\000\004r\000\000\019$\014\134\nJ\000\000\000\000\000\000\000\000\000\000\019@\004\168\002t\000\000\000\000\000\000\000\0002v\000\000rd\000\000\014\152\000\000\014\192\000\000\000\000\000\000\000\000\004\186\000\000\000\000\r\180\006\004\000\000\014\224\015\158\006\004\006\004\000\000\006\004\001\\\bf\019N\000\000\000\000\004\226\000\000\017h\006\004\006\004\000\000\018r\006\004\006\004\014\198\000\000\027V\000\000\000\000\014\202\0202\000\000\027\248\n\214\000\000\000\000\000\000\000\000\019\250\000\000\000\000\000\000\000\000\0198\014\210A\158\000\000\001[\000\000\019:\014\226A\224\n\144\018\142\000\000\000\000\000\000\000\000\000\000\b\252\018\142\000\000\000\000\019@\014\244\b\150\001h\000\000\022\190\000\000\000X\000\000\020\174\000\000\000\000\000\000\000\000\000\000BT\000\000\000\000\019N\015\002B\148\000\000\000\000\000\000\024\250\000\000\000X\000\000\029\218\000\000\000X\000\000\030\190\000X\000\000\001[\000\000\000\000!\012\000\000\000X\000\000!T\000\000\000X\000\000\"\246\000X\000\000\002\188\000\000\015\020\t\182\005\006\000\000\019P\019R\015\024\019x\020\030%\210\000X\n\222\000\000\015 \019\232\019\234\005\200\011\174\019\180\0154\019\238\011\014\011\192\019\184\000\000\000\000\011`\012\240\000\000\t\002\003>^\176\t\240\028X\000\000\n\186\000\250\000\000\000\000\019b\015D\012\234\000\000a\020\000\000n\174\003\170\000\000\020\018\020\020\000\000\r\148\000\000\003\170\019h\015F\011\210\019\132\001|\000\000\000\000\000\000\000\000\015T\r\224\000\000\015d\014(\000\000\b^\016\160\019l\019n\015\134\012N\014>\000\000\015\148\012\176\014F\000\000\019p\019r\015\180\019\152\020\030&R\000X\000\000\015\208\020\n\000\000\012\218\000\000\014\148\000\000\020\018\000\000'\136\0020\019\226\015\234\020\"\000\000'\246\002\234\019\238\000\000\000\000\tB\b\158\014\212\000\0001z\000X\015\146\000\000\nB\000\000\019\152\015\238\012f\019\132\019\160\019\166\016\n\0210\000\000\019\182\000@\000\000\000\000\000\000\006.\000\000\000\000\000\000\000\219\016&\019\140o\n\003\170\000\000\000\155\016.\020V\000\000\000\000\000\000\000\000\000\000\000\000oJ\003\170\000\000\0166\020\188\000\000\000\000\000\000\000\000\000\000\000\000b:\016 \000\000\016<\001\n\000\000\016F\016b\011\128\000\000\004\194\n\204\000\000\005~\000\000o\170\003\170\003\170\000\000\000\000\0042\000\000\012\144\000\000\005\018\0042\0042\000\000\016|I\210\003\170o\210\003\170\016\168\000\000\000\000\000\000\000\000\016\174\000\000\000\000\001\128\000\000\004l\020\016\016\128\021B\019\200\000\000\000\000\005N\007\234\020\024\000\000\000\000\016\130\021T\019\238\000\000\000\000\b\172\000\000\028\166\000\000\014R\0062\003\170\000\000\020\006\029\\\000\000\023\132\000\000\000\000\000\000\0042\000\000\000\000\016\202\020<\016\142\021p\019\246\000\000\000\000!f\016\206\020B\000\000\000\000\000\000S6\000\000\000\000\000\000\000\000\000\000\000\000\000\000\016\246\000\000\019\240\016\1941\196\t&\000\000\020P\017\000\003\218\000\000\n|\021`\021\014\017\000\020^\000\000\000\000\000\000\020l\017\028\b\134\000\000\016\146\000\000\027\152^\220\006\026\000\000\000\000\000\000\rP\020(\017 \000\000\020.\rP\000\000\021*\017\206\020\134\000\000\000\000\000\000\003\170\000y\000z\007\134\000\000\000\000\000\000\000\000\020F\0176\000\000\007\216\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\170\0202\017<\021\186\020B\000\000_\148&2\000\249\017@\020\018\007\136\004j\017^\020\216\000\000\000\000\021\182\029>\000\000\000\000\029\144\000\000\017\208\000\000\tJ\000\000\000\000\000\000\000\000\000\000\000\000o\214\003\170\000\000\021\186\029\160\000\000\000\000\030\012\000\000\000\199\017|\021V\000\000\000\000B\208b\204\004N\000\000p$\003\170\030v\000\000\000\000\030\244\000\000\000\000\017\212\000\000\th\000\000\000\000\000\000\000\000\000\000\000\000c\016\000\000\000\000C\012c&\006\234\000\000pl\003\170\031\144\000\000\000\000 \014\000\000\000\000\017~ r\018\006\000\000\017\152\017\158\000\229\006*\017\166\011\238\017\168\021\\!*\018\014\000\000\017\188\017\216\012\216\000\000\t\160e\224\000\000\007\n\000\000\017\2188\158`\002\020\244\020\026\029\186\000\000c\218\0266\000\000\t\220\000\000\000\000\t\220\000\000\000\000\t\220\012\240\000\000\030N\t\220\021b!\158\018(\000\000\t\220\000\000\000\000\"\154\000\000\000\000\000\000\t\220\000\000\000\000\018F\000\000%\168\rD\018b\000\000\018\004fH\018t\000\000\000\000\000\000\000\000\018\132\000\000\000\000\007\194\000\000\t\220#\192\000\000%\208\t\220` \000\000\018\172\020\180\018\018\021\236\020r\000\000`v\018\188\020\192\000\000\000\000\000\000\001f\012B\000\000\000\000\000\000\000\000\000\000\000\000\014v\018\204\000\000\020\140\018Z\n*\b\180\000\000\020\242\000\000\000\000\000\000\000\000\018\222\019 \000\000\000\000\000\000\014v\000\000\000\000\000\000\000\000\019\024\028\174\000\000\000\000\000\000\000\000\000\000\000\000\021\152\006j\rf\020(\007@\018^\000\000\004V\000\000\000\000\000\000\000\000\000\000\000\000\000\000\020F\007Z\018\140\000\000\tp\016\174\022\004\021\174\019$\000\000\000\000\021\162\007\000\t@\000\000\000\000\000\000\000\000\001h\000X\000\000\000\000\t\240\000\000p\218\003\170\000\000\b\222\000\000\000\000\000\000\000\000C\166\000\000\000\000\000\000\000\000\000\000\000\000p\250\003\170\000\000 2\000\000\000\000\031\154\000\000\000\000fp\018\152\000\000\018\154\n\172\000\000\000\000\006\004\011R\000\000\000\000\000\000\000\000\000\000q\"\003\170\000\000=\"\000\000\000\000#\242\000\000\000\000D\180\000\000\000\000$p\000\000$\208c^\000\000q\156\003\170\000\000Hp\000\000\000\000$\240\000\000\000\000Wv\000\000\000\000%\134\000\000\b\006\000\000\000\000\000\000\003\170\000\000\000\000!\206\021\182\019(\000\000\000\000\021\174\0040\006\"\000\000\000\000\000\000\000\000\t\128\016\234\022\004\"\012\021\192\019*\000\000\000\000\021\180\005\250\bb\000\000\000\000\000\000\000\000\000X\000\000\019>\000\000\000\000\000\000\"\130\000\000\"\236\000\000\000\000\000\000\000\000\000\000\006\150\000\000\000\000\000\000\002\220\000B\000\000\000\000\000\000\000\000\000\000\003D\000B\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\156\000\000\000\000\000\000f\176\000\000\003\170\000\000\n\002\000\000\000\000\000\000\000\203\000\000\000\000\000\000\b~\000\000\000\000\000\000\003V\000\000\001h\000\000\000\139\000\000\000X\000\000\007\n\000\000\000\000\000\000W\210\t\240\000\000\000\000\000\029\000\000\000\000\000\000\000\000\t\236\003\244\020\218\000\n\000\000\000\000\000\000\000\000\000\000\000\000\020\220\003\176\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\nx\000\000\019\130\000\000\000\000\000\000\000\000\005\022\006\196f\238g\178\000\000\000\000\019\148g\200\000\000\000\000\000\000\019\216g\250\000\000\000\000\000\000\000\000"), (16, "\b\\\002\198\tC\002\199\002\200\001\239\001B\002\201\005\207\t[\002\200\001\239\001I\001L\001Q\000r\001\239\001U\003\\\b]\bq\007\139\001\027\b_\001V\001\031\001 \003a\tg\002\200\001\239\tO\001\027\b`\br\001\031\001 \000\164\001B\000\176\001\217\003{\005M\001W\001I\001L\tD\000<\005/\000\182\t\003\002\129\001I\b\025\b\\\002\198\007\229\002\199\002\200\001\239\000\182\002\201\006\228\b\025\001\237\005\210\ba\003\152\002p\007\231\bu\tP\003\\\b]\bq\005\132\003\n\b_\002\136\003\011\003\r\003a\002\140\t]\001I\007(\001M\b`\br\b\027\000@\b\251\001\248\001`\001Q\003{\006\229\b\217\001\027\b\027\001\220\001\031\0013\0051\007\023\bb\b\028\000\182\000\188\002\129\0014\b\030\001\187\003\129\007+\bJ\b\028\000\180\007\024\bc\ba\b\030\0070\001W\bu\b5\002\204\002\141\003\131\001\031\001B\004a\t^\007-\003\131\001\031\001I\001Y\0017\007\146\007\147\000\169\007\139\bv\002\142\b\\\002\198\0051\002\199\002\200\001\239\th\002\201\003\131\001\031\007.\000n\007\163\bw\bb\005T\007\156\006\012\003\\\b]\bq\001\027\003\129\b_\001\031\0013\bf\003a\bc\bh\000\169\005_\bm\b`\br\002\204\004a\003\131\001\031\003\138\000\136\003{\003\139\001B\000]\bo\005V\b\223\003\132\001I\001L\001Z\bv\000\138\b\\\003\153\000a\002\024\003\134\005U\001Q\005\133\001B\bp\006\186\001B\ba\bw\001I\001Y\bu\001I\001Y\b]\000\169\002p\t\022\b_\t\018\002\165\bf\001\131\003\155\bh\002\167\002\136\bm\b`\t\024\002\140\000e\001I\005\243\003\138\002p\002\153\003\139\b\166\0008\bo\001B\005\254\003\132\0008\002\136\bb\001I\001L\002\140\003\153\001I\002\024\003\134\003\129\b\130\007\146\007\147\bp\b\165\bc\ba\002\180\005\137\001]\001\031\000\164\002\204\000\176\003\131\001\031\b\128\001Z\000A\007\155\002\141\001B\003\155\007\156\006\012\002\135\000y\001I\001L\bv\002\178\b\\\002\198\002\154\002\199\002\200\001\239\002\142\002\201\002\141\000\182\b\151\002\129\005m\bw\bb\000\169\001\131\000\177\003\\\b]\t\029\000\193\t7\b_\001E\002\142\bf\003a\bc\bh\001I\001B\bm\b`\br\001f\005Y\001I\001Y\003\138\000\142\003{\003\139\002\181\001Q\bo\006\158\001z\003\132\001\031\003\152\005Y\bd\000\138\001{\003\153\007\023\002\024\003\134\000\169\000\181\002\159\006\158\bp\007/\001\031\ba\be\001\027\000x\007\024\001\031\0013\001W\007\031\001Q\bx\004a\001S\000w\bf\002\157\003\155\bh\007y\001b\bm\001I\000\182\001\004\002\129\b\\\002\198\007+\002\199\002\200\001\239\001Z\002\201\bo\000\128\t(\006\004\001\027\001W\bb\001\031\001 \005\133\003\\\b]\bq\007-\003\129\b_\0008\006\142\bp\003a\bc\006\161\002\132\002\024\001`\b`\br\002\204\006\007\003\131\001\031\002\179\002\136\003{\t\020\007.\002\140\t8\001I\002\024\000\182\002t\002\129\001|\bv\000\146\b\\\002\198\004a\002\199\002\200\001\239\000;\002\201\t/\001`\006\198\000:\ba\bw\005\225\001B\b\183\005Y\003\\\b]\bq\001I\001Y\b_\002\178\004a\bf\003a\001j\bh\t\031\003\152\bm\b`\br\002\141\000\149\0008\t)\003\138\002p\003{\003\139\002\163\000\140\bo\001B\001!\003\132\000\191\002\136\bb\001I\001Y\002\140\003\153\001I\002\024\003\134\003\129\to\002\200\001\239\bp\000\192\bc\ba\005\236\005\238\005\240\bz\000\169\002\204\003\n\003\131\001\031\004%\003\r\t*\000\152\006a\001Z\003\155\t1\001I\002\135\000\182\007r\002\129\bv\000\145\b\\\002\198\tK\002\199\002\200\001\239\002\147\002\201\002\141\001\031\002\167\001v\006\204\bw\bb\tr\ts\000\169\003\\\tu\001\131\001Z\003\129\b_\006\151\002\142\bf\003a\bc\bh\004a\002\167\bm\b`\tw\002\204\t2\003\131\001\031\003\138\000\151\003{\003\139\001Q\tL\bo\001\127\002\180\003\132\005f\001\031\001\131\bv\001\128\001\135\003\153\000\168\002\024\003\134\b\131\000\169\007\194\t3\bp\002\179\006`\ba\bw\002\180\000\138\001\027\001\031\001W\001\031\0013\001Q\001\006\000>\001S\000\172\bf\002\167\003\155\bh\t4\001b\bm\002\135\t0\b\254\001Q\0008\tp\003\138\003\131\001\031\003\139\002\167\004a\bo\000\186\001Q\003\132\004n\001W\bb\001\031\0013\006\252\003\153\002u\002\024\003\134\003\129\002\181\002\171\004a\bp\002\180\bc\001\027\001\031\001`\001\031\0013\007\139\002\204\004a\003\131\001\031\001Q\002\182\002C\005\243\002\180\002\181\003\155\001\031\002U\007y\tz\001\129\0008\004\127\000\216\b\\\002\198\005{\002\199\002\200\001\239\t\134\002\201\003\n\001`\002\167\007\220\003\r\bw\001B\0017\t~\005\243\003\\\t\127\001I\001Y\000\166\b_\001Q\b\246\bf\003a\001j\bh\001B\007 \bm\b`\t\135\001\007\001I\001Y\001\134\003\138\002\181\003{\003\139\005\211\002\168\bo\001B\002\180\003\132\b\140\001\031\002X\001I\001Y\005Y\003\153\002\181\002\024\003\134\004a\0071\001B\007\196\bp\t\001\t\002\ba\001I\001Y\005\225\b\\\002\198\001B\002\199\002\200\001\239\005\176\002\201\001I\001Y\001Z\002\178\003\155\000\198\b\141\001B\007\156\006\012\003\\\b]\b\162\001I\001L\b_\000\169\000\203\b\142\003a\007\146\007\147\005\210\001B\001v\b`\br\bb\007\026\001I\001Y\000\213\001\131\003{\001Z\003\129\002\181\007\148\007\164\002,\001\239\bc\007\156\006\012\005\239\005\238\005\240\001B\002\204\001Z\003\131\001\031\001^\001I\001L\0044\000\169\007\026\ba\006e\001Z\t\139\001B\000\175\001\131\005\248\001\n\001\135\001I\001Y\000\182\b\206\006\232\007\023\005Y\001Q\000\138\001B\001S\001[\bw\001\206\003\015\001I\001L\001b\003\r\007\024\003\152\001Z\005\249\007\025\002\167\bf\006\000\t\r\bh\bb\000\221\bm\000\170\001B\002n\001\208\001W\003\129\003\138\001I\001L\003\139\007\017\bc\bo\007\023\007_\003\132\000\173\003\163\002\204\006\003\003\131\001\031\003\153\004a\002\024\003\134\002\213\007\024\001Z\002\180\bp\007\030\001\031\0045\002\179\bv\006s\b\\\002\198\001g\002\199\002\200\001\239\007\023\002\201\007`\t!\007a\005Y\003\155\bw\000\184\b\139\t~\001`\003\\\t\127\007\024\b\202\005\189\b_\0078\003\152\bf\003a\002\167\bh\005\225\001B\bm\b`\t\130\000\169\001j\001I\001Y\003\138\001\195\003{\003\139\007b\007\019\bo\000\226\001Q\003\132\001\027\001\164\000\169\001\031\001 \001B\003\153\005\210\002\024\003\134\002\181\001I\001Y\005\194\bp\b\255\002\180\ba\005u\001\031\000\187\b\\\002\198\002\167\002\199\002\200\001\239\001W\002\201\t\001\t\002\b\025\007c\003\155\007\132\005\238\005\240\000\169\000\222\003\\\b]\b\160\b\174\002\159\b_\000\205\007d\007e\003a\007f\t\000\007\156\006\012\001\229\b`\b|\bb\005\202\000\138\000\243\002\180\001v\003{\001\031\003\129\tS\000\247\b\027\001\001\001B\bc\001Z\007\170\000\227\007G\001I\001Y\002\204\003\n\003\131\001\031\007\244\003\r\002\181\b\028\b\143\b\144\ba\004a\b\030\t\133\004\189\000\169\b.\001\031\0013\001\170\b\145\b\146\007h\t#\001\131\007j\tT\001\135\007o\007{\b\147\006\012\bw\000\169\001s\001\027\002\136\001B\001\031\001 \002\140\007\166\001I\001I\001Y\bf\005Y\000\138\bh\bb\002\181\bm\001Q\001\142\004\218\001\153\001\147\003\129\003\138\007\167\003\152\003\139\006\158\bc\bo\001\031\000\138\003\132\000\169\000\138\002\204\001\b\003\131\001\031\003\153\006\158\002\024\003\134\001\031\007_\002\167\001W\bp\b\143\b\144\002\141\005\225\b\127\004a\004c\001Q\005Y\001B\001S\001Q\b\145\b\146\001S\001I\001Y\001b\003\155\bw\001Z\001b\b\147\006\012\000\182\007~\002\129\007`\007\169\007a\bB\005\206\bf\001\233\002\180\bh\001W\001\031\bm\006b\001W\b\020\001c\001Q\005\225\003\138\001Q\000\244\003\139\007H\001\131\bo\b\185\b\137\003\132\002\024\007\152\005\238\005\240\bI\bE\003\153\007b\002\024\003\134\004a\b\149\005\225\002\024\bp\002\198\002\149\002\199\002\200\001\239\001W\002\201\001I\002\198\bG\002\199\002\200\001\239\0079\002\201\001B\001`\003\\\003\155\bE\001`\001I\001Y\001\017\tG\003\\\003a\007\160\005\238\005\240\007c\002\181\0008\0068\003a\001j\004a\bH\bG\001j\003{\005 \007\201\002\167\007d\007e\000\253\007f\003{\000\169\b\241\005\238\005\240\001B\003\004\007J\007\236\001B\002\178\001I\001Y\006,\002p\001I\001Y\002\160\bH\000\138\tH\002\152\007\170\001\031\002\136\t\014\b\157\001I\002\140\0062\001I\001B\002\180\001Z\t\n\001\031\006\209\001I\001Y\001\031\007\026\001B\000\255\002p\001B\004a\002q\001I\001Y\007h\001I\007M\007j\002\136\000n\007o\007{\002\140\004a\001I\t\000\001v\000n\001\131\003\129\001v\bl\002]\007\166\001\024\000\169\001Z\003\129\002\141\007\171\001Z\007\240\002\204\001\149\003\131\001\031\005\145\001\239\b\175\001%\002\204\007\167\003\131\001\031\002\198\002\142\002\199\002\200\001\239\002\198\002\201\002\199\002\200\001\239\002\181\002\201\001\131\002\141\001\002\001\135\001\131\003\\\001Z\001\135\003\135\007N\003\\\007\205\bE\000\169\003a\006\213\003\135\001\018\002\142\003a\001\021\t?\007n\007\024\006\022\007S\b\182\007P\003{\004M\001\239\bG\001\025\003{\003\138\b\161\001\133\003\139\002\167\001\131\002\179\001B\003\138\003\132\003\b\003\139\b\\\001I\001Y\001B\003\153\003\132\002\024\003\134\004a\001I\001Y\000\138\003\153\bH\002\024\003\134\005Y\005\170\001\027\tu\b8\001\031\001 \b_\b\141\tA\006d\006\215\000\169\002\180\003\152\003\155\001\031\b`\003+\006\128\b\142\001Q\002\198\003\155\002\199\002\200\001\239\000\169\002\201\0044\000\169\000\138\001\222\b\025\002\167\002\135\001&\001Q\003\129\003\\\001S\0008\000\169\003\129\004T\001\239\005\182\001b\003a\001\204\ba\002\204\006%\003\131\001\031\b\178\002\204\001\202\003\131\001\031\001;\002\198\003{\002\199\002\200\001\239\001W\002\201\bk\b\027\004b\002\180\007\017\002\198\001\031\002\199\002\200\001\239\003\\\002\201\002\181\006\216\001\226\003\135\002\002\007t\b\028\003a\003\135\bb\003\\\b\030\001>\002d\006@\b%\001P\002f\004a\003a\001n\003{\004a\bc\001Q\002m\006=\005\134\000\169\003\138\002\193\002\196\003\139\003{\003\138\002\212\001`\003\139\003\132\002\227\005S\000\169\002\230\003\132\tv\003\153\b \002\024\003\134\000\169\003\153\001q\002\024\003\134\003\129\001j\002\011\001B\002\181\006\215\002\236\001\138\be\001I\001Y\003=\b\201\002\204\007y\003\131\001\031\005Y\003\155\001B\000\169\bf\000\169\003\155\bh\001I\001Y\bm\005\220\006\012\002\198\000\169\002\199\002\200\001\239\000\169\002\201\003B\001Q\003\129\bo\001\145\006\018\000\169\003I\003\135\006n\003\\\000\169\000\169\006x\003\129\002\204\000\169\003\131\001\031\003a\000\169\bp\001\198\000\169\0008\005Y\006 \002\204\003O\003\131\001\031\005Y\001Z\003{\003\138\004a\001\237\003\139\001v\002L\001\239\000\169\001\240\003\132\004a\001\219\000\169\003\135\001Z\001B\003\153\007\022\002\024\003\134\006}\001I\001Y\003Y\b\204\003\135\001\241\002\221\b\202\001\243\001\244\001\249\002>\003_\006\134\003\127\005\210\007\014\000\169\003\138\001\031\003\143\003\139\003\155\001\131\000\169\003\149\001\135\003\132\003\158\001\225\003\138\002<\003\169\003\139\003\153\003\175\002\024\003\134\002\198\003\132\002\199\002\200\001\239\003\181\002\201\000\169\003\153\003\187\002\024\003\134\003\129\002\001\005\022\004O\004P\003\\\005\210\003\193\006t\003\199\001Z\003\155\001B\002\204\003a\003\131\001\031\006y\001I\001Y\002\020\006\019\003\205\003\155\000\169\006\140\001\239\002\198\003{\002\199\002\200\001\239\003\211\002\201\000\169\002\198\000\169\002\199\002\200\001\239\b\202\002\201\000\169\002\012\003\\\003\135\003\217\000\169\002p\002\019\000\169\002\134\003\\\003a\000\169\003\223\001\251\000\169\002\136\001\031\005\191\003a\002\140\001Q\001I\000\169\001\160\003{\005\148\000\169\006\173\003\138\003\229\001\161\003\139\003{\001I\003\235\001Z\000\169\003\132\000\169\006\155\006\012\005\025\005\030\003\241\003\153\002B\002\024\003\134\004a\001W\003\247\000\169\002\198\003\253\002\199\002\200\001\239\003\129\002\201\007\028\004\003\000\169\001\031\004\t\002\141\0038\004\015\004\021\004\027\003\\\002\204\003\155\003\131\001\031\b\007\000\169\006\177\002V\003a\002^\002\014\002\142\001I\004\031\000\169\005\021\006\020\002\015\006\r\002\024\001Q\004\138\003{\005\192\004\148\b\015\003\129\006\192\001\031\001`\002c\000\169\003\135\001I\003\129\001Q\000\169\b'\001}\002\204\001\031\003\131\001\031\006\220\006\012\000\169\002i\002\204\001\162\003\131\001\031\b<\000\169\004\158\002\158\000\169\006~\002z\003\138\002|\004a\003\139\000\169\004\168\001W\000\169\001B\003\132\000\169\000\169\000\169\003\135\001I\001Y\003\153\004\177\002\024\003\134\002\198\003\135\002\199\002\200\001\239\004\186\002\201\000\169\002\198\004\197\002\199\002\200\001\239\004\206\002\201\000\169\003\129\003\\\000\169\003\138\004a\001Q\003\139\003\155\007H\003\\\003a\003\138\003\132\002\204\003\139\003\131\001\031\005\002\003a\003\153\003\132\002\024\003\134\004\215\003{\004\250\004\222\003\153\005\006\002\024\003\134\000\169\003{\002\198\001W\002\199\002\200\001\239\001Z\002\201\004a\000\169\001B\005\011\006\150\003\135\003\155\002\139\001I\001Y\003\\\004a\005\018\000\169\003\155\004a\002\156\001B\005&\003a\005\163\000\169\005+\001I\001Y\000\169\007\136\006\012\001\131\000\169\005\159\003\138\002\192\003{\003\139\0057\001Q\b\135\006\012\b \003\132\002\195\006\163\005>\007J\002\211\002\226\003\153\002\229\002\024\003\134\005D\005I\002\235\004a\000\169\003\129\005P\000\169\002\198\000\169\002\199\002\200\001\239\003\129\002\201\002\254\005d\001Z\002\204\005s\003\131\001\031\002\248\003\155\000\169\003\\\002\204\006\166\003\131\001\031\001B\002\251\001Z\000\169\003a\004a\001I\007M\006\174\000\169\003-\004\240\006\178\000\169\005\156\005\168\005\180\005\242\003{\002\198\003\135\002\199\002\200\001\239\003\129\002\201\000\169\002\198\003\135\002\199\002\200\001\239\001\131\002\201\000\169\005\193\003\\\002\204\005\199\003\131\001\031\003&\000\169\000\169\003\\\003a\003\138\005\214\000\169\003\139\001Q\006\193\004\239\003a\003\138\003\132\005\232\003\139\000\169\003{\003x\000\169\003\153\003\132\002\024\003\134\007N\003{\003)\003\135\003\153\001B\002\024\003\134\0039\003<\005\234\001I\001Y\006\t\007\024\006\014\007R\006\210\007P\006\029\000\169\000\169\000\169\003\155\003\129\003A\003H\006#\003N\0047\001\131\003\155\003\139\004\249\004a\003X\0061\002\204\003\132\003\131\001\031\000\169\003^\006C\000\169\003\153\003m\002\024\003\134\003~\004d\003\142\006c\000\169\006i\003\148\003\157\002\198\006p\002\199\002\200\001\239\000\169\002\201\003\168\003\129\003\174\003\180\006v\003\135\003\186\001Z\003\155\003\129\003\\\003\192\006\139\006\154\002\204\003\198\003\131\001\031\000\169\003a\006\162\000\169\002\204\000\169\003\131\001\031\003\137\000\169\006\165\001Q\003\204\003\138\001\166\003{\003\139\000\169\001B\005\247\007_\001\167\003\132\004a\001I\001Y\000\169\006\172\003\135\003\153\006\214\002\024\003\134\000\169\006\176\002\198\003\135\002\199\002\200\001\239\001W\002\201\000\169\002\198\000\169\002\199\002\200\001\239\000\169\002\201\006\182\007`\003\\\007a\003\138\003\210\003\155\003\139\000\169\003\216\003\\\003a\003\138\003\132\006\188\003\139\000\169\000\169\003\165\003a\003\153\003\132\002\024\003\134\000\169\003{\003\164\006\200\003\153\006\219\002\024\003\134\000\169\003{\001Z\003\222\007b\003\129\003\228\003\234\001`\004a\001\237\006\224\004a\001\238\001\239\003\155\001\240\000\169\002\204\007\007\003\131\001\031\004/\003\155\000\169\006\237\004a\001\168\004a\006\243\007\128\0042\005\246\006\254\001\241\0032\007\t\001\243\001\244\001\249\000\169\007\027\007c\003\240\b\153\001B\003\246\003\252\004a\001Q\003\135\001I\001Y\004a\000\169\007\r\007d\007e\002\198\007f\002\199\002\200\001\239\004\002\002\201\003\129\0033\000\169\007\"\000\169\0073\007=\004\b\003\129\t\005\003\\\003\138\007V\002\204\003\139\003\131\001\031\007\168\000\169\003a\003\132\002\204\007'\003\131\001\031\007,\004\"\003\153\007y\002\024\003\134\001\237\000\169\003{\004 \001\239\000\169\001\240\007l\007T\000\169\007\\\007y\000\169\007h\003\135\001Z\007j\000\169\004\014\007o\007{\004\020\003\135\003\155\004:\002\003\001\250\001\243\001\244\001\249\007i\000\169\007\166\001Q\004\026\007w\001\130\004N\007q\001\251\003\138\007y\001\031\003\139\000\169\001\131\000\169\000\169\003\138\003\132\007\167\003\139\007}\000\169\007\138\004\137\003\153\003\132\002\024\003\134\004a\004a\001W\004a\003\153\007\158\002\024\003\134\007\174\001B\007\181\004?\004O\004P\003\129\001I\001Y\0034\002\198\000\169\002\199\002\200\001\239\003\155\002\201\007\185\001Q\002\204\004a\003\131\001\031\003\155\004a\002p\001Q\003\\\002\144\001\163\0043\0049\007\214\007\254\004\147\002\136\003a\004a\002\014\002\140\004S\001I\000\169\004)\002\012\002\023\b:\002\024\004\157\b\003\003{\003\135\004a\b*\b\b\001W\000\169\001\251\000\169\002\198\001\031\002\199\002\200\001\239\b&\002\201\004a\001Z\004\167\000\169\007\144\007\195\000\169\007\230\000\169\004a\003\\\003\138\b\014\b\022\003\139\001B\004\176\004a\002\141\003a\003\132\001I\001Y\000\169\004_\004`\004.\003\153\b\\\002\024\003\134\006\002\b\000\003{\b?\002\142\b\011\004a\000\169\000\169\002\198\bT\002\199\002\200\001\239\004a\002\201\b]\004\185\b-\004\196\b_\000\169\004a\003\155\000\169\003\129\003\\\002\014\000\169\000\169\b`\004a\004\205\b9\002\015\003a\002\024\001B\002\204\000\169\003\131\001\031\0041\001I\001Y\001B\bj\b=\b\138\003{\001Z\001I\001Y\000\169\000\169\002\198\bA\002\199\002\200\001\239\004a\002\201\001Q\ba\bF\001\169\004a\004\214\004a\004a\003\135\b\150\003\\\004\221\003\129\000\169\004\243\b\197\b\199\004a\001\131\003a\000\169\005\005\bR\005\n\005\017\002\204\005%\003\131\001\031\001W\bY\005*\002p\003{\003\138\002\146\0056\003\139\bg\005=\bb\001Z\002\136\003\132\005C\005F\002\140\bs\001I\001Z\003\153\004a\002\024\003\134\bc\005H\000\169\003\135\000\169\003\129\004a\001Q\005O\002\198\007H\002\199\002\200\001\239\005X\002\201\005c\006\006\002\204\005r\003\131\001\031\b}\003\155\bt\001\131\003\\\000\169\b\156\003\138\b\250\t\t\003\139\000\169\000\169\003a\001W\002\141\003\132\be\004a\t\021\004>\005~\005\135\003\153\005\155\002\024\003\134\003{\003\135\003\129\bf\005\161\002\142\bh\005\167\002\198\bm\002\199\002\200\001\239\001B\002\201\002\204\005\179\003\131\001\031\001I\001Y\005\198\bo\003\155\005\200\003\\\tx\003\138\005\213\006\b\003\139\005\253\006\016\006\023\003a\t\131\003\132\007J\006\028\006\"\bp\004A\0060\003\153\006;\002\024\003\134\003\135\003{\006B\006o\006h\006j\006m\006|\006r\006{\006w\006z\006\138\006\149\006\148\006\153\006\164\006\175\006\171\006\187\006\181\006\183\t\136\003\155\006\207\003\129\0047\001B\006\195\003\139\0048\006\206\001Z\001I\007M\003\132\006\201\006\205\002\204\006\218\003\131\001\031\003\153\007<\002\024\003\134\006\223\001\237\006\226\006\233\001\238\001\239\006\241\001\240\006\248\007\003\007;\0074\0075\004[\007:\002\198\001\131\002\199\002\200\001\239\007>\002\201\004^\003\155\003\135\001\241\0032\003\129\001\243\001\244\001\249\007?\003\\\007^\007W\007X\007]\007k\007z\007u\002\204\003a\003\131\001\031\007v\007x\002p\007N\004Z\002\175\003\138\007\165\007\137\003\139\007\141\003{\002\136\0033\007\143\003\132\002\140\007\024\001I\007Q\007\145\007P\003\153\007\157\002\024\003\134\007\173\007\175\003\135\007\176\007\182\007\187\002p\001\131\002\198\002\216\002\199\002\200\001\239\007\191\002\201\007\209\002\136\007\216\b\t\b!\002\140\b+\001I\003\155\b[\003\\\bU\bV\003\138\001\027\bZ\003\139\001\031\001 \003a\002\141\002\198\003\132\002\199\002\200\001\239\004]\002\201\001\250\003\153\bi\002\024\003\134\003{\bn\b\133\b\154\002\142\003\\\b\155\b\159\001\251\003\129\b\249\001\031\b\025\b\253\003a\t\b\t\012\002\141\tb\tj\000\000\004g\002\204\003\155\003\131\001\031\000\000\000\000\003{\000\000\000\000\000\000\000\000\002p\002\142\000\000\005\204\000\000\002\198\000\000\002\199\002\200\001\239\002\136\002\201\000\000\0034\002\140\b\027\001I\000\000\000\000\000\000\000\000\003\135\003\\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003a\b\028\000\000\0043\0049\000\000\b\030\004k\003\129\000\000\b\"\002\014\000\000\000\000\003{\000\000\003\138\000\000\002\023\003\139\002\024\002\204\000\000\003\131\001\031\003\132\000\000\000\000\002\141\000\000\000\000\000\000\003\153\000\000\002\024\003\134\003\129\002\198\000\000\002\199\002\200\001\239\000\000\002\201\000\000\002\142\000\000\000\000\000\000\002\204\000\000\003\131\001\031\003\135\003\\\000\000\000\000\000\000\002\198\003\155\002\199\002\200\001\239\003a\002\201\000\000\000\000\000\000\000\000\000\000\004\163\000\000\000\000\000\000\000\000\000\000\000\000\003{\000\000\003\138\000\000\003\135\003\139\000\000\004\225\000\000\003\129\002\198\003\132\002\199\002\200\001\239\000\000\002\201\000\000\003\153\000\000\002\024\003\134\002\204\000\000\003\131\001\031\000\000\003\\\000\000\000\000\003\138\000\000\000\000\003\139\004\226\000\000\003a\000\000\002\198\003\132\002\199\002\200\001\239\004\172\002\201\003\155\003\153\000\000\002\024\003\134\003{\000\000\000\000\001Q\003\135\003\\\007H\000\000\000\000\000\000\002p\000\000\000\000\0066\003a\001Q\000\000\000\000\001\181\000\000\002\136\004\181\003\129\003\155\002\140\000\000\001I\000\000\003{\000\000\003\138\000\000\001W\003\139\000\000\002\204\000\000\003\131\001\031\003\132\000\000\000\000\001Q\002\203\001W\001\177\003\153\000\000\002\024\003\134\000\000\002\198\001\178\002\199\002\200\001\239\002\204\002\201\003\131\001\031\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\135\003\\\002\141\000\000\001W\003\129\003\155\000\000\000\000\000\000\003a\000\000\000\000\000\000\000\000\007J\000\000\004\244\002\204\002\142\003\131\001\031\000\000\000\000\003{\000\000\003\138\000\000\004\228\003\139\000\000\000\000\000\000\003\129\002\198\003\132\002\199\002\200\001\239\000\000\002\201\000\000\003\153\000\000\002\024\003\134\002\204\000\000\003\131\001\031\003\135\003\\\001B\000\000\001`\000\000\003\132\000\000\001I\007M\003a\000\000\000\000\003\133\001B\002\024\003\134\004\246\000\000\003\155\001I\001Y\000\000\001\179\003{\000\000\003\138\001Q\003\135\003\139\001\180\000\000\000\000\000\000\002\198\003\132\002\199\002\200\001\239\000\000\002\201\001B\003\153\000\000\002\024\003\134\003\129\001I\001Y\000\000\000\000\003\\\000\000\000\000\003\138\000\000\001W\003\139\000\000\002\204\003a\003\131\001\031\003\132\000\000\000\000\000\000\004\252\007N\003\155\003\153\000\000\002\024\003\134\003{\002\198\000\000\002\199\002\200\001\239\001Z\002\201\007\024\000\000\007O\000\000\007P\000\000\000\000\000\000\000\000\003\135\003\\\000\000\000\000\000\000\003\129\003\155\001\131\000\000\000\000\003a\000\000\000\000\000\000\000\000\000\000\001Z\004\255\002\204\001\131\003\131\001\031\000\000\000\000\003{\000\000\003\138\001Q\000\000\003\139\001\186\000\000\000\000\000\000\002\198\003\132\002\199\002\200\001\239\000\000\002\201\000\000\003\153\000\000\002\024\003\134\001\131\000\000\000\000\000\000\003\135\003\\\001B\000\000\000\000\003\129\001W\000\000\001I\001Y\003a\000\000\000\000\000\000\000\000\000\000\000\000\005\024\002\204\003\155\003\131\001\031\000\000\000\000\003{\000\000\003\138\000\000\000\000\003\139\002\198\000\000\002\199\002\200\001\239\003\132\002\201\000\000\002p\000\000\000\000\006I\003\153\000\000\002\024\003\134\003\129\003\\\002\136\000\000\003\135\000\000\002\140\000\000\001I\000\000\003a\000\000\000\000\002\204\000\000\003\131\001\031\005\027\000\000\000\000\000\000\000\000\001Z\003\155\003{\000\000\000\000\000\000\000\000\000\000\003\138\000\000\000\000\003\139\002\198\000\000\002\199\002\200\001\239\003\132\002\201\000\000\000\000\000\000\000\000\003\135\003\153\001B\002\024\003\134\003\129\002\141\001\131\001I\001Y\000\000\000\000\000\000\000\000\000\000\004\225\000\000\000\000\002\204\000\000\003\131\001\031\000\000\002\142\000\000\000\000\003\138\000\000\003\155\003\139\002\198\000\000\002\199\002\200\001\239\003\132\002\201\000\000\000\000\000\000\000\000\000\000\003\153\000\000\002\024\003\134\000\000\003\\\000\000\000\000\003\135\003\129\000\000\000\000\000\000\001Q\003a\000\000\001\188\000\000\000\000\000\000\000\000\005\196\002\204\000\000\003\131\001\031\001Z\003\155\003{\002\198\000\000\002\199\002\200\001\239\003\138\002\201\000\000\003\139\000\000\000\000\000\000\000\000\001W\003\132\000\000\000\000\003\\\000\000\000\000\000\000\003\153\000\000\002\024\003\134\003\135\003a\001\131\000\000\000\000\002\203\000\000\000\000\005\209\000\000\000\000\000\000\000\000\000\000\000\000\003{\000\000\000\000\002\204\000\000\003\131\001\031\000\000\003\155\000\000\000\000\003\138\000\000\000\000\003\139\000\000\000\000\000\000\000\000\000\000\003\132\000\000\002\198\000\000\002\199\002\200\001\239\003\153\002\201\002\024\003\134\003\129\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\\\000\000\000\000\004\227\000\000\002\204\000\000\003\131\001\031\003a\000\000\000\000\000\000\000\000\000\000\003\155\006\011\000\000\000\000\000\000\000\000\001B\000\000\003{\000\000\000\000\001Q\001I\001Y\001S\000\000\003\132\000\000\003\129\000\000\000\000\001b\003\135\003\133\000\000\002\024\003\134\000\000\000\000\000\000\000\000\002\204\000\000\003\131\001\031\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\003\138\001\237\000\000\003\139\004 \001\239\000\000\001\240\000\000\003\132\000\000\000\000\000\000\007\139\000\000\003\135\003\153\001Q\002\024\003\134\001\183\000\000\000\000\000\000\001Z\004:\002\003\001\184\001\243\001\244\001\249\000\000\003\129\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\138\001`\003\155\003\139\002\204\001W\003\131\001\031\002\198\003\132\002\199\002\200\001\239\001\131\002\201\000\000\003\153\007\142\002\024\003\134\001j\000\000\000\000\000\000\000\000\003\\\000\000\000\000\000\000\000\000\000\000\004?\004O\004P\003a\000\000\003\135\000\000\001B\000\000\000\000\006\132\000\000\003\155\001I\001Y\000\000\000\000\003{\000\000\b\\\000\000\000\000\000\000\000\000\001`\000\000\001Q\000\000\000\000\007D\000\000\003\138\000\000\000\000\003\139\000\000\000\000\004S\b]\000\000\003\132\002\012\b_\001\185\000\000\000\000\000\000\003\153\000\000\002\024\003\134\000\000\b`\000\000\001\251\001W\000\000\001\031\000\000\007\146\007\147\001B\000\000\001v\000\000\000\000\000\000\001I\001Y\000\000\000\000\000\000\000\000\001Z\003\155\000\000\007\148\007\164\000\000\000\000\000\000\007\156\006\012\000\000\000\000\ba\000\000\004_\006\017\003\129\000\000\000\000\002\198\000\000\002\199\002\200\001\239\000\000\002\201\000\000\000\000\000\000\002\204\001\131\003\131\001\031\001\135\000\000\000\000\003\\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001Q\003a\000\000\007K\002\014\000\000\000\000\bb\007\190\000\000\001Z\002\015\000\000\002\024\000\000\003{\002\198\003\135\002\199\002\200\001\239\bc\002\201\000\000\002\198\001B\002\199\002\200\001\239\001W\002\201\001I\001Y\003\\\000\000\000\000\000\000\000\000\000\000\000\000\001\131\003\\\003a\003\138\000\000\b~\003\139\000\000\000\000\007\193\003a\000\000\003\132\000\000\000\000\000\000\003{\007\208\000\000\003\153\be\002\024\003\134\000\000\003{\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\bf\000\000\000\000\bh\000\000\002\198\bm\002\199\002\200\001\239\000\000\002\201\000\000\003\155\003\129\000\000\000\000\000\000\001Z\bo\000\000\000\000\003\\\000\000\000\000\000\000\000\000\002\204\000\000\003\131\001\031\003a\000\000\000\000\000\000\000\000\000\000\bp\007\211\000\000\000\000\000\000\000\000\001B\000\000\003{\000\000\000\000\001\131\001I\001Y\000\000\000\000\000\000\000\000\003\129\000\000\000\000\002\198\003\135\002\199\002\200\001\239\003\129\002\201\000\000\000\000\000\000\002\204\000\000\003\131\001\031\000\000\000\000\000\000\003\\\002\204\000\000\003\131\001\031\000\000\000\000\000\000\000\000\003a\003\138\000\000\000\000\003\139\001\027\000\000\007\224\001\031\001 \003\132\000\000\002p\000\000\003{\006M\003\135\003\153\000\000\002\024\003\134\000\000\002\136\000\000\003\135\001Z\002\140\000\000\001I\000\000\000\000\000\000\000\000\003\129\000\000\000\000\b\025\002\198\000\000\002\199\002\200\001\239\003\138\002\201\003\155\003\139\002\204\000\000\003\131\001\031\003\138\003\132\000\000\003\139\003\\\001\131\000\000\000\000\003\153\003\132\002\024\003\134\000\000\003a\000\000\000\000\003\153\000\000\002\024\003\134\007\227\002\141\b\027\000\000\000\000\000\000\000\000\003{\003\135\001\027\000\000\000\000\001\031\001 \000\000\003\155\003\129\000\000\002\142\b\028\000\000\000\000\000\000\003\155\b\030\000\000\000\000\000\000\b\031\002\204\000\000\003\131\001\031\000\000\003\138\000\000\000\000\003\139\000\000\000\000\b\025\000\000\000\000\003\132\000\000\002\198\000\000\002\199\002\200\001\239\003\153\002\201\002\024\003\134\000\000\000\000\002p\000\000\000\000\006P\001Q\003\135\003\\\b\193\000\000\000\000\002\136\000\000\000\000\000\000\002\140\003a\001I\000\000\000\000\000\000\b\027\003\155\007\248\003\129\000\000\000\000\000\000\000\000\000\000\003{\000\000\003\138\000\000\001W\003\139\000\000\002\204\b\028\003\131\001\031\003\132\000\000\b\030\000\000\000\000\000\000\b)\003\153\000\000\002\024\003\134\000\000\002\198\000\000\002\199\002\200\001\239\000\000\002\201\002\141\001Q\000\000\000\000\001S\000\000\000\000\001\189\000\000\003\135\003\\\001b\000\000\000\000\000\000\003\155\000\000\002\142\000\000\003a\000\000\001Q\000\000\000\000\b\190\000\000\007\251\000\000\000\000\001\190\001W\b\191\000\000\003{\000\000\003\138\000\000\001\214\003\139\000\000\000\000\000\000\003\129\002\198\003\132\002\199\002\200\001\239\000\000\002\201\001W\003\153\000\000\002\024\003\134\002\204\000\000\003\131\001\031\000\000\003\\\001B\000\000\000\000\000\000\000\000\000\000\001I\001Y\003a\000\000\000\000\000\000\000\000\000\000\000\000\007\255\000\000\003\155\000\000\001`\000\000\000\000\003{\000\000\000\000\000\000\003\135\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001j\001`\000\000\000\000\001\195\000\000\003\129\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\138\000\000\000\000\003\139\001B\002\204\b\192\003\131\001\031\003\132\001I\001Y\000\000\000\000\001Z\000\000\003\153\000\000\002\024\003\134\000\000\000\000\001\237\000\000\001B\004 \001\239\000\000\001\240\000\000\001I\001Y\000\000\000\000\000\000\000\000\000\000\003\135\000\000\000\000\000\000\000\000\003\129\003\155\001\131\000\000\004:\002\003\000\000\001\243\001\244\001\249\000\000\000\000\000\000\002\204\000\000\003\131\001\031\000\000\001v\000\000\001Q\003\138\000\000\007H\003\139\000\000\000\000\000\000\001Z\000\000\003\132\001\205\000\000\000\000\000\000\000\000\000\000\003\153\001\237\002\024\003\134\004 \001\239\000\000\001\240\003\135\000\000\000\000\001Z\001W\000\000\004?\004O\004P\000\000\000\000\000\000\000\000\001\131\000\000\000\000\001\135\004:\002\003\003\155\001\243\001\244\001\249\000\000\000\000\000\000\003\138\001Q\000\000\003\139\001S\000\000\000\000\001\131\000\000\003\132\002p\001b\000\000\006W\000\000\000\000\003\153\004S\002\024\003\134\002\136\002\012\000\000\000\000\002\140\000\000\001I\000\000\007J\000\000\001W\000\000\001Q\000\000\001\251\001S\000\000\001\031\004?\004O\004P\000\000\001b\003\155\000\000\000\000\002p\000\000\000\000\006[\000\000\007\139\000\000\000\000\000\000\000\000\002\136\000\000\000\000\000\000\002\140\001W\001I\000\000\000\000\001B\000\000\004_\b\n\002\141\000\000\001I\007M\000\000\000\000\004S\000\000\000\000\000\000\002\012\001`\002\198\007\139\002\199\002\200\001\239\002\142\002\201\000\000\000\000\000\000\000\000\001\251\000\000\000\000\001\031\b\248\000\000\003\\\001j\000\000\002\014\000\000\001Q\000\000\002\141\007H\003a\002\015\000\000\002\024\001`\000\000\000\000\t\025\000\000\000\000\001B\000\000\000\000\000\000\003{\002\142\001I\001Y\004_\b,\t\007\000\000\000\000\001j\007N\001W\000\000\002\198\000\000\002\199\002\200\001\239\000\000\002\201\000\000\000\000\000\000\000\000\007\024\000\000\007[\001B\007P\000\000\003\\\000\000\000\000\001I\001Y\000\000\000\000\000\000\002\014\003a\001\131\000\000\000\000\000\000\000\000\002\015\t\027\002\024\007\146\007\147\000\000\000\000\001v\003{\000\000\000\000\000\000\000\000\000\000\000\000\000\000\007J\001Z\000\000\000\000\007\148\007\164\000\000\000\000\000\000\007\156\006\012\003\129\000\000\000\000\000\000\000\000\000\000\000\000\007\146\007\147\001Q\000\000\001v\001S\002\204\000\000\003\131\001\031\000\000\000\000\001b\001\131\001Z\000\000\001\135\007\148\007\164\001B\000\000\000\000\007\156\006\012\000\000\001I\007M\000\000\000\000\000\000\000\000\001W\000\000\000\000\000\000\000\000\000\000\002\198\003\135\002\199\002\200\001\239\000\000\002\201\001\131\000\000\003\129\001\135\000\000\000\000\001Q\000\000\007\139\007H\003\\\002p\000\000\000\000\006^\002\204\000\000\003\131\001\031\003a\003\138\002\136\000\000\003\139\000\000\002\140\000\000\001I\000\000\003\132\006(\001Q\000\000\003{\b\216\001W\003\153\001`\002\024\003\134\001\237\007N\000\000\001\238\001\239\000\000\001\240\003\135\000\000\000\000\000\000\000\000\000\000\000\000\000\000\007\024\001j\b2\000\000\007P\001W\006\026\000\000\003\155\001\241\0032\000\000\001\243\001\244\001\249\002\141\001\131\000\000\003\138\001B\000\000\003\139\000\000\000\000\000\000\001I\001Y\003\132\000\000\000\000\007J\000\000\002\142\000\000\003\153\000\000\002\024\003\134\000\000\001Q\000\000\0033\b\222\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\129\000\000\000\000\000\000\001\237\000\000\000\000\001\238\001\239\000\000\001\240\003\155\000\000\002\204\000\000\003\131\001\031\001B\001W\000\000\000\000\007\146\007\147\001I\007M\001v\000\000\000\000\001\241\002\003\000\000\001\243\001\244\001\249\000\000\001Z\000\000\001Q\b\244\b\245\b\234\000\000\001B\007\156\006\012\003\135\000\000\001\250\001I\001Y\000\000\000\000\000\000\001Q\005\001\002\198\b\233\002\199\002\200\001\239\001\251\002\201\000\000\001\031\000\000\001\131\001W\002\198\001\135\002\199\002\200\001\239\003\\\002\201\006+\000\000\002\004\000\000\002\005\002\232\003\132\003a\001W\007N\003\\\000\000\000\000\003\153\000\000\002\024\003\134\000\000\005\185\003a\000\000\003{\000\000\007\024\0034\bL\000\000\007P\000\000\000\000\005\172\001B\000\000\003{\001Z\000\000\000\000\001I\001Y\001\131\003\155\000\000\002\012\000\000\000\000\0043\0049\000\000\000\000\001Q\000\000\000\000\001S\002\014\001Q\001\251\000\000\b\239\001\031\001b\002\023\000\000\002\024\000\000\001\131\000\000\003F\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001W\001B\001c\000\000\000\000\001W\000\000\001I\001Y\000\000\001\237\000\000\b\208\001\238\001\239\003\129\001\240\001B\000\000\001Z\000\000\000\000\000\000\001I\001Y\000\000\000\000\003\129\002\204\000\000\003\131\001\031\000\000\000\000\001\241\002\003\000\000\001\243\001\244\001\249\002\204\000\000\003\131\001\031\002\014\000\000\000\000\000\000\000\000\001\131\001`\002\015\001\237\002\024\000\000\001\238\001\239\000\000\001\240\000\000\003\135\000\000\000\000\000\000\000\000\000\000\000\000\001Z\000\000\001j\000\000\000\000\003\135\000\000\000\000\000\000\001\241\002\003\000\000\001\243\001\244\001\249\002\004\001Z\002\005\002\240\000\000\001B\000\000\005\188\000\000\000\000\001B\001I\001Y\003\132\000\000\001\131\001I\001Y\000\000\005\175\003\153\000\000\002\024\003\134\000\000\003\132\001\027\000\000\000\000\001\031\001 \001\131\003\153\000\000\002\024\003\134\002\246\000\000\002p\000\000\002\012\006l\002\004\000\000\002\005\003\016\001\027\003\155\002\136\001\031\001 \000\000\002\140\001\251\001I\000\000\001\031\b\025\000\000\003\155\000\000\001v\001\237\000\000\000\000\001\238\001\239\000\000\001\240\000\000\000\000\001Z\000n\000\000\001\149\000\000\001Z\b\025\003\022\000\000\000\000\000\000\002\012\002\250\000\000\000\000\001\241\002\003\000\000\001\243\001\244\001\249\000\000\b\027\000\000\001\251\000\000\002\141\001\031\000\000\000\000\001\131\002p\000\000\001\135\006\185\001\131\000\000\000\000\000\000\b\028\000\000\002\136\b\027\002\142\b\030\002\140\000\000\001I\b;\002\014\000\000\001\237\000\000\000\000\001\238\001\239\002\015\001\240\002\024\b\028\000\000\000\000\000\000\002\004\b\030\002\005\003\027\000\000\bN\000\000\000\000\000\000\000\000\000\000\000\000\001\241\002\003\000\000\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\141\002\014\000\000\000n\000\000\000\000\000\000\000\000\002\015\003!\002\024\003>\000\000\002\012\000\000\001\241\002\003\002\142\001\243\001\244\001\249\002\198\000\000\002\199\002\200\001\239\001\251\002\201\000\000\001\031\000\000\000\000\000\000\002\004\000\000\002\005\002\232\000\000\003\\\000\000\000\000\003C\000\000\000\000\000\000\000\000\000\000\003a\000\000\000\000\000\000\001\237\000\000\000\000\001\238\001\239\000\000\001\240\004\231\000\000\000\000\003{\000\000\002\004\000\000\002\005\002\232\000\000\002\198\000\000\002\199\002\200\001\239\002\012\002\201\001\241\002\003\000\000\001\243\001\244\001\249\000\000\000\000\000\000\000\000\003\\\001\251\000\000\000\000\001\031\000\000\000\000\000\000\002\014\003a\000\000\002p\003F\000\000\006\197\002\015\003Z\002\024\002\012\000\000\004\230\002\136\000\000\003{\000\000\002\140\000\000\001I\000\000\001\237\000\000\001\251\001\238\001\239\001\031\001\240\000\000\000\000\002\004\000\000\002\005\002\232\003F\000\000\000\000\000\000\000\000\000\000\003\129\000\000\000\000\000\000\000\000\001\241\002\003\000\000\001\243\001\244\001\249\000\000\000\000\002\204\000\000\003\131\001\031\000\000\002p\000\000\002\014\006\203\002\141\000\000\000\000\000\000\000\000\002\015\002\136\002\024\002\012\000\000\002\140\000\000\001I\000\000\000\000\000\000\000\000\002\142\000\000\000\000\000\000\001\251\000\000\003\135\001\031\003\129\000\000\000\000\002\014\000\000\000\000\002\004\003F\002\005\002\028\002\015\000\000\002\024\002\204\000\000\003\131\001\031\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\237\000\000\004t\001\238\001\239\002\141\001\240\000\000\003\132\000\000\000\000\000n\000\000\000\000\000\000\003\153\000\000\002\024\003\134\000\000\003\135\002\012\002\142\000\000\001\241\002\003\000\000\001\243\001\244\001\249\000\000\000\000\000\000\000\000\001\251\000\000\000\000\001\031\002\014\000\000\000\000\000\000\003\155\000\000\000\000\002\015\000\000\002\024\000\000\004t\003`\000\000\000\000\000\000\000\000\003\132\000\000\001\237\000\000\000\000\001\238\001\239\003\153\001\240\002\024\003\134\000\000\000\000\000\000\000\000\000\000\000\000\002\004\000\000\002\005\002\232\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\003\155\001\237\000\000\000\000\001\238\001\239\000\000\001\240\000\000\000\000\000\000\000\000\002\014\000\000\000\000\000\000\000\000\000\000\003\128\002\015\000\000\002\024\000\000\002\012\000\000\001\241\002\003\000\000\001\243\001\244\001\249\000\000\000\000\000\000\000\000\000\000\001\251\000\000\000\000\001\031\002\004\000\000\002\005\002\232\000\000\000\000\000\000\003F\000\000\000\000\000\000\003\144\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\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\004\000\000\002\005\002\232\000\000\000\000\000\000\002\012\000\000\001\241\002\003\000\000\001\243\001\244\001\249\000\000\000\000\000\000\001\237\000\000\001\251\001\238\001\239\001\031\001\240\000\000\000\000\000\000\000\000\000\000\002\014\003F\000\000\000\000\000\000\003\150\000\000\002\015\000\000\002\024\002\012\000\000\001\241\002\003\000\000\001\243\001\244\001\249\000\000\000\000\000\000\000\000\000\000\001\251\000\000\000\000\001\031\002\004\000\000\002\005\002\232\000\000\000\000\000\000\003F\000\000\000\000\000\000\003\159\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\000\000\000\000\000\000\000\000\000\000\002\014\000\000\000\000\002\004\000\000\002\005\002\232\002\015\000\000\002\024\002\012\000\000\001\241\002\003\000\000\001\243\001\244\001\249\000\000\000\000\000\000\001\237\000\000\001\251\001\238\001\239\001\031\001\240\000\000\000\000\000\000\000\000\000\000\002\014\003F\000\000\000\000\000\000\003\170\000\000\002\015\000\000\002\024\002\012\000\000\001\241\002\003\000\000\001\243\001\244\001\249\000\000\000\000\000\000\000\000\000\000\001\251\000\000\000\000\001\031\002\004\000\000\002\005\002\232\000\000\000\000\000\000\003F\000\000\000\000\000\000\003\176\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\000\000\000\000\000\000\000\000\000\000\002\014\000\000\000\000\002\004\000\000\002\005\002\232\002\015\000\000\002\024\002\012\000\000\001\241\002\003\000\000\001\243\001\244\001\249\000\000\000\000\000\000\001\237\000\000\001\251\001\238\001\239\001\031\001\240\000\000\000\000\000\000\000\000\000\000\002\014\003F\000\000\000\000\000\000\003\182\000\000\002\015\000\000\002\024\002\012\000\000\001\241\002\003\000\000\001\243\001\244\001\249\000\000\000\000\000\000\000\000\000\000\001\251\000\000\000\000\001\031\002\004\000\000\002\005\002\232\000\000\000\000\000\000\003F\000\000\000\000\000\000\003\188\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\000\000\000\000\000\000\000\000\000\000\002\014\000\000\000\000\002\004\000\000\002\005\002\232\002\015\000\000\002\024\002\012\000\000\001\241\002\003\000\000\001\243\001\244\001\249\000\000\000\000\000\000\001\237\000\000\001\251\001\238\001\239\001\031\001\240\000\000\000\000\000\000\000\000\000\000\002\014\003F\000\000\000\000\000\000\003\194\000\000\002\015\000\000\002\024\002\012\000\000\001\241\002\003\000\000\001\243\001\244\001\249\000\000\000\000\000\000\000\000\000\000\001\251\000\000\000\000\001\031\002\004\000\000\002\005\002\232\000\000\000\000\000\000\003F\000\000\000\000\000\000\003\200\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\000\000\000\000\000\000\000\000\000\000\002\014\000\000\000\000\002\004\000\000\002\005\002\232\002\015\000\000\002\024\002\012\000\000\001\241\002\003\000\000\001\243\001\244\001\249\000\000\000\000\000\000\001\237\000\000\001\251\001\238\001\239\001\031\001\240\000\000\000\000\000\000\000\000\000\000\002\014\003F\000\000\000\000\000\000\003\206\000\000\002\015\000\000\002\024\002\012\000\000\001\241\002\003\000\000\001\243\001\244\001\249\000\000\000\000\000\000\000\000\000\000\001\251\000\000\000\000\001\031\002\004\000\000\002\005\002\232\000\000\000\000\000\000\003F\000\000\000\000\000\000\003\212\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\000\000\000\000\000\000\000\000\000\000\002\014\000\000\000\000\002\004\000\000\002\005\002\232\002\015\000\000\002\024\002\012\000\000\001\241\002\003\000\000\001\243\001\244\001\249\000\000\000\000\000\000\001\237\000\000\001\251\001\238\001\239\001\031\001\240\000\000\000\000\000\000\000\000\000\000\002\014\003F\000\000\000\000\000\000\003\218\000\000\002\015\000\000\002\024\002\012\000\000\001\241\002\003\000\000\001\243\001\244\001\249\000\000\000\000\000\000\000\000\000\000\001\251\000\000\000\000\001\031\002\004\000\000\002\005\002\232\000\000\000\000\000\000\003F\000\000\000\000\000\000\003\224\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\000\000\000\000\000\000\000\000\000\000\002\014\000\000\000\000\002\004\000\000\002\005\002\232\002\015\000\000\002\024\002\012\000\000\001\241\002\003\000\000\001\243\001\244\001\249\000\000\000\000\000\000\001\237\000\000\001\251\001\238\001\239\001\031\001\240\000\000\000\000\000\000\000\000\000\000\002\014\003F\000\000\000\000\000\000\003\230\000\000\002\015\000\000\002\024\002\012\000\000\001\241\002\003\000\000\001\243\001\244\001\249\000\000\000\000\000\000\000\000\000\000\001\251\000\000\000\000\001\031\002\004\000\000\002\005\002\232\000\000\000\000\000\000\003F\000\000\000\000\000\000\003\236\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\000\000\000\000\000\000\000\000\000\000\002\014\000\000\000\000\002\004\000\000\002\005\002\232\002\015\000\000\002\024\002\012\000\000\001\241\002\003\000\000\001\243\001\244\001\249\000\000\000\000\000\000\001\237\000\000\001\251\001\238\001\239\001\031\001\240\000\000\000\000\000\000\000\000\000\000\002\014\003F\000\000\000\000\000\000\003\242\000\000\002\015\000\000\002\024\002\012\000\000\001\241\002\003\000\000\001\243\001\244\001\249\000\000\000\000\000\000\000\000\000\000\001\251\000\000\000\000\001\031\002\004\000\000\002\005\002\232\000\000\000\000\000\000\003F\000\000\000\000\000\000\003\248\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\000\000\000\000\000\000\000\000\000\000\002\014\000\000\000\000\002\004\000\000\002\005\002\232\002\015\000\000\002\024\002\012\000\000\001\241\002\003\000\000\001\243\001\244\001\249\000\000\000\000\000\000\001\237\000\000\001\251\001\238\001\239\001\031\001\240\000\000\000\000\000\000\000\000\000\000\002\014\003F\000\000\000\000\000\000\003\254\000\000\002\015\000\000\002\024\002\012\000\000\001\241\002\003\000\000\001\243\001\244\001\249\000\000\000\000\000\000\000\000\000\000\001\251\000\000\000\000\001\031\002\004\000\000\002\005\002\232\000\000\000\000\000\000\003F\000\000\000\000\000\000\004\004\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\000\000\000\000\000\000\000\000\000\000\002\014\000\000\000\000\002\004\000\000\002\005\002\232\002\015\000\000\002\024\002\012\000\000\001\241\002\003\000\000\001\243\001\244\001\249\000\000\000\000\000\000\001\237\000\000\001\251\001\238\001\239\001\031\001\240\000\000\000\000\000\000\000\000\000\000\002\014\003F\000\000\000\000\000\000\004\n\000\000\002\015\000\000\002\024\002\012\000\000\001\241\002\003\000\000\001\243\001\244\001\249\000\000\000\000\000\000\000\000\000\000\001\251\000\000\000\000\001\031\002\004\000\000\002\005\002\232\000\000\000\000\000\000\003F\000\000\000\000\000\000\004\016\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\000\000\000\000\000\000\000\000\000\000\002\014\000\000\000\000\002\004\000\000\002\005\002\232\002\015\000\000\002\024\002\012\000\000\001\241\002\003\000\000\001\243\001\244\001\249\000\000\000\000\000\000\001\237\000\000\001\251\001\238\001\239\001\031\001\240\000\000\000\000\000\000\000\000\000\000\002\014\003F\000\000\000\000\000\000\004\022\000\000\002\015\000\000\002\024\002\012\000\000\001\241\002\003\000\000\001\243\001\244\001\249\002\198\000\000\002\199\002\200\001\239\001\251\002\201\000\000\001\031\002\004\000\000\002\005\002\232\000\000\000\000\000\000\003F\003\\\000\000\000\000\004\028\002\198\000\000\002\199\002\200\001\239\003a\002\201\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004q\003\\\002\014\003{\000\000\002\004\000\000\002\005\002\232\002\015\003a\002\024\002\012\000\000\000\000\000\000\000\000\002p\000\000\000\000\006\212\004v\000\000\000\000\003{\001\251\000\000\002\136\001\031\000\000\000\000\002\140\000\000\001I\000\000\002\014\003F\001Q\000\000\000\000\001S\000\000\002\015\000\000\002\024\002\012\002\198\001b\002\199\002\200\001\239\000\000\002\201\000\000\002p\000\000\000\000\007m\001\251\000\000\000\000\001\031\000\000\003\\\002\136\000\000\001W\000\000\002\140\003F\001I\000\000\003a\000\000\000\000\003\129\002\141\000\000\005\228\000\000\000\000\000\000\000\000\004x\000\000\000\000\003{\000\000\002\204\000\000\003\131\001\031\002\014\002\142\005\231\000\000\003\129\000\000\000\000\002\015\002\198\002\024\002\199\002\200\001\239\000\000\002\201\000\000\000\000\002\204\000\000\003\131\001\031\002\141\000\000\000\000\001`\003\\\001\237\000\000\003\135\001\238\001\239\000\000\001\240\002\014\003a\000\000\000\000\000\000\002\142\000\000\002\015\000\000\002\024\001j\000\000\004|\000\000\000\000\003{\003\135\001\241\002\003\000\000\001\243\001\244\001\249\000\000\004t\000\000\000\000\000\000\001B\000\000\003\132\000\000\000\000\003\129\001I\001Y\000\000\003\153\000\000\002\024\003\134\000\000\000\000\004\139\000\000\004t\002\204\000\000\003\131\001\031\000\000\003\132\000\000\002\198\000\000\002\199\002\200\001\239\003\153\002\201\002\024\003\134\000\000\000\000\003\155\002\004\000\000\002\005\002\232\000\000\003\\\002\198\000\000\002\199\002\200\001\239\000\000\002\201\003\135\003a\000\000\000\000\000\000\000\000\001v\003\155\000\000\003\129\003\\\000\000\004\132\000\000\000\000\003{\001Z\000\000\000\000\003a\000\000\000\000\002\204\000\000\003\131\001\031\000\000\002\012\000\000\004t\004\142\000\000\000\000\003{\000\000\003\132\000\000\000\000\000\000\000\000\001\251\000\000\003\153\001\031\002\024\003\134\001\131\000\000\000\000\005\235\000\000\003F\000\000\000\000\003\135\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\155\000\000\002\198\000\000\002\199\002\200\001\239\000\000\002\201\000\000\000\000\000\000\000\000\000\000\004t\000\000\000\000\000\000\003\129\003\\\003\132\000\000\000\000\000\000\000\000\000\000\000\000\003\153\003a\002\024\003\134\002\204\000\000\003\131\001\031\000\000\003\129\001\237\002\014\004\152\001\238\001\239\003{\001\240\000\000\002\015\000\000\002\024\000\000\002\204\000\000\003\131\001\031\000\000\003\155\000\000\000\000\000\000\000\000\000\000\000\000\001\241\002\003\003\135\001\243\001\244\001\249\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\003\135\000\000\000\000\000\000\000\000\000\000\004\149\000\000\000\000\000\000\000\000\004t\000\000\000\000\000\000\001\241\002\003\003\132\001\243\001\244\001\249\000\000\000\000\000\000\003\153\000\000\002\024\003\134\002\004\004t\002\005\002\232\000\000\003\129\000\000\003\132\000\000\000\000\000\000\000\000\000\000\004\159\003\153\000\000\002\024\003\134\002\204\000\000\003\131\001\031\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\002\004\000\000\002\005\002\232\000\000\002\012\003\155\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\135\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\003F\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\001\237\004t\000\000\001\238\001\239\000\000\001\240\003\132\000\000\000\000\001\251\000\000\000\000\001\031\003\153\000\000\002\024\003\134\000\000\000\000\000\000\003F\000\000\000\000\001\241\002\003\000\000\001\243\001\244\001\249\001\237\000\000\000\000\001\238\001\239\000\000\001\240\000\000\000\000\000\000\000\000\003\155\002\014\000\000\000\000\000\000\000\000\000\000\000\000\002\015\004\169\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\000\000\000\000\000\000\000\000\000\000\002\004\000\000\002\005\002\232\000\000\002\014\000\000\000\000\004\178\000\000\000\000\000\000\002\015\000\000\002\024\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\000\000\002\004\000\000\002\005\002\232\000\000\002\198\000\000\002\199\002\200\001\239\002\012\002\201\001\241\002\003\000\000\001\243\001\244\001\249\000\000\000\000\000\000\000\000\003\\\001\251\000\000\000\000\001\031\000\000\000\000\000\000\000\000\003a\000\000\000\000\003F\000\000\000\000\000\000\004\187\000\000\002\012\000\000\004\192\000\000\002\198\003{\002\199\002\200\001\239\000\000\002\201\000\000\000\000\001\251\000\000\000\000\001\031\000\000\000\000\000\000\002\004\003\\\002\005\002\232\003F\000\000\000\000\000\000\000\000\000\000\003a\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\201\000\000\000\000\003{\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\015\000\000\002\024\002\012\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\251\000\000\000\000\001\031\003\129\000\000\000\000\002\014\000\000\000\000\000\000\003F\000\000\000\000\002\015\000\000\002\024\002\204\000\000\003\131\001\031\000\000\000\000\001\237\000\000\000\000\001\238\001\239\002\198\001\240\002\199\002\200\001\239\000\000\002\201\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\129\000\000\003\\\000\000\001\241\002\003\003\135\001\243\001\244\001\249\000\000\003a\000\000\002\204\000\000\003\131\001\031\000\000\000\000\000\000\000\000\000\000\004\210\000\000\002\014\003{\000\000\000\000\000\000\000\000\004\198\002\015\000\000\002\024\000\000\004t\000\000\000\000\000\000\000\000\001\237\003\132\000\000\001\238\001\239\003\135\001\240\000\000\003\153\000\000\002\024\003\134\002\004\000\000\002\005\002\232\000\000\001\237\000\000\000\000\001\238\001\239\000\000\001\240\001\241\001\242\000\000\001\243\001\244\001\249\000\000\000\000\000\000\000\000\004t\003\155\000\000\000\000\000\000\000\000\003\132\001\241\002\003\000\000\001\243\001\244\001\249\003\153\000\000\002\024\003\134\000\000\002\012\000\000\000\000\000\000\000\000\003\129\001\237\000\000\000\000\001\238\001\239\000\000\001\240\001\251\000\000\004\207\001\031\000\000\002\204\000\000\003\131\001\031\003\155\000\000\003F\000\000\000\000\000\000\000\000\000\000\001\241\0032\000\000\001\243\001\244\001\249\000\000\002\004\000\000\002\005\002\232\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\135\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\000\000\000\000\000\000\000\000\000\000\000\000\001\251\000\000\000\000\001\031\002\012\001\237\004t\002\014\001\238\001\239\000\000\001\240\003\132\000\000\002\015\000\000\002\024\001\251\000\000\003\153\001\031\002\024\003\134\000\000\000\000\000\000\000\000\000\000\003F\001\241\002\003\000\000\001\243\001\244\001\249\001\237\000\000\000\000\001\238\001\239\000\000\001\240\000\000\000\000\000\000\001\250\003\155\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\216\000\000\000\000\001\251\001\241\002\003\001\031\001\243\001\244\001\249\000\000\002\198\002\014\002\199\002\200\001\239\000\000\002\201\000\000\002\023\000\000\002\024\002\004\000\000\002\005\002\232\000\000\000\000\003\\\002\014\004\223\000\000\000\000\000\000\000\000\000\000\002\015\003a\002\024\000\000\000\000\b\023\000\000\000\000\000\000\000\000\000\000\000\000\004\234\000\000\000\000\003{\002\004\000\000\002\005\002\232\000\000\002\198\000\000\002\199\002\200\001\239\002\012\002\201\000\000\000\000\000\000\000\000\000\000\000\000\002\014\000\000\000\000\000\000\003\\\001\251\000\000\002\023\001\031\002\024\000\000\000\000\000\000\003a\000\000\000\000\003F\000\000\000\000\000\000\000\000\000\000\002\012\b$\004\237\000\000\000\000\003{\000\000\000\000\000\000\000\000\000\000\001\237\000\000\001\251\001\238\001\239\001\031\001\240\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\003\129\000\000\000\000\000\000\001\241\002\003\000\000\001\243\001\244\001\249\000\000\000\000\000\000\002\204\000\000\003\131\001\031\000\000\000\000\002\014\000\000\000\000\000\000\000\000\000\000\000\000\002\015\000\000\002\024\000\000\005\007\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\135\003\129\000\000\000\000\002\014\000\000\000\000\002\004\000\000\002\005\002\232\002\015\000\000\002\024\002\204\000\000\003\131\001\031\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\237\000\000\004t\001\238\001\239\000\000\001\240\000\000\003\132\000\000\001\237\000\000\000\000\001\238\001\239\003\153\001\240\002\024\003\134\003\135\002\012\000\000\000\000\000\000\001\241\002\003\000\000\001\243\001\244\001\249\000\000\000\000\000\000\001\251\001\241\002\003\001\031\001\243\001\244\001\249\000\000\000\000\003\155\000\000\003F\000\000\000\000\000\000\004t\000\000\005\012\000\000\000\000\002\198\003\132\002\199\002\200\001\239\000\000\002\201\005\019\003\153\000\000\002\024\003\134\000\000\000\000\000\000\000\000\000\000\003\\\000\000\002\004\000\000\002\005\002\232\000\000\000\000\000\000\003a\000\000\000\000\002\004\000\000\002\005\002\232\000\000\000\000\003\155\000\000\005[\000\000\001\237\003{\000\000\001\238\001\239\000\000\001\240\000\000\002\014\000\000\001\237\000\000\000\000\001\238\001\239\002\015\001\240\002\024\000\000\000\000\002\012\000\000\000\000\000\000\001\241\002\003\000\000\001\243\001\244\001\249\002\012\000\000\000\000\001\251\001\241\002\003\001\031\001\243\001\244\001\249\000\000\000\000\000\000\001\251\003F\000\000\001\031\000\000\000\000\000\000\005'\000\000\001\237\000\000\003F\001\238\001\239\000\000\001\240\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\002\004\003\129\002\005\002\232\001\241\002\003\000\000\001\243\001\244\001\249\002\004\000\000\002\005\002\232\002\204\000\000\003\131\001\031\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\014\000\000\0058\000\000\000\000\000\000\000\000\002\015\000\000\002\024\002\014\000\000\002\012\000\000\000\000\000\000\000\000\002\015\003\135\002\024\000\000\000\000\002\012\000\000\002\004\001\251\002\005\002\232\001\031\000\000\000\000\000\000\000\000\000\000\000\000\001\251\003F\000\000\001\031\000\000\000\000\000\000\000\000\000\000\000\000\001\237\003F\005^\001\238\001\239\000\000\001\240\000\000\003\132\000\000\000\000\000\000\000\000\000\000\000\000\003\153\000\000\002\024\003\134\002\012\000\000\000\000\000\000\000\000\001\241\002\003\000\000\001\243\001\244\001\249\000\000\000\000\001\251\000\000\001Q\001\031\000\000\b\213\000\000\000\000\000\000\000\000\003\155\003F\b\214\000\000\000\000\002\014\000\000\000\000\005?\000\000\000\000\000\000\002\015\001\237\002\024\002\014\001\238\001\239\000\000\001\240\000\000\001W\002\015\000\000\002\024\000\000\000\000\000\000\000\000\000\000\002\004\000\000\002\005\002\232\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\000\000\001\237\000\000\000\000\001\238\001\239\000\000\001\240\000\000\000\000\002\014\000\000\000\000\000\000\000\000\000\000\005E\002\015\000\000\002\024\000\000\000\000\000\000\002\012\001`\001\241\002\003\000\000\001\243\001\244\001\249\000\000\000\000\000\000\000\000\000\000\001\251\000\000\002\004\001\031\002\005\002\232\000\000\b\215\000\000\000\000\000\000\003F\000\000\000\000\000\000\005J\000\000\000\000\000\000\000\000\001\237\000\000\000\000\001\238\001\239\001B\001\240\000\000\000\000\000\000\000\000\001I\001Y\000\000\000\000\000\000\000\000\002\004\000\000\002\005\002\232\000\000\002\012\000\000\001\241\002\003\000\000\001\243\001\244\001\249\000\000\000\000\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\003F\002\014\000\000\000\000\005Q\000\000\000\000\000\000\002\015\000\000\002\024\002\012\000\000\002\198\000\000\002\199\002\200\001\239\000\000\002\201\000\000\000\000\000\000\000\000\001\251\001Z\002\004\001\031\002\005\002\232\003\\\000\000\000\000\000\000\000\000\003F\000\000\000\000\000\000\003a\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\005i\000\000\000\000\003{\000\000\001\131\002\014\000\000\000\000\000\000\000\000\000\000\000\000\002\015\000\000\002\024\002\012\000\000\000\000\002\198\000\000\002\199\002\200\001\239\000\000\002\201\000\000\000\000\000\000\001\251\000\000\000\000\001\031\000\000\000\000\000\000\003\\\000\000\000\000\000\000\003F\002\014\000\000\000\000\000\000\003a\000\000\000\000\002\015\001\237\002\024\000\000\001\238\001\239\000\000\001\240\005w\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\001\241\002\003\003\129\001\243\001\244\001\249\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\204\000\000\003\131\001\031\000\000\000\000\000\000\000\000\002\014\000\000\000\000\005e\000\000\000\000\000\000\002\015\000\000\002\024\000\000\002\198\000\000\002\199\002\200\001\239\000\000\002\201\000\000\000\000\000\000\000\000\000\000\000\000\003\135\002\004\000\000\002\005\002\232\000\000\000\000\000\000\000\000\000\000\000\000\003\129\000\000\005\130\000\000\000\000\000\000\000\000\000\000\000\000\000\000\005\138\000\000\000\000\002\204\000\000\003\131\001\031\000\000\005l\000\000\000\000\000\000\000\000\001\237\003\132\000\000\001\238\001\239\000\000\001\240\002\012\003\153\000\000\002\024\003\134\000\000\000\000\005\151\000\000\000\000\000\000\000\000\000\000\001\251\000\000\003\135\001\031\001\241\002\003\000\000\001\243\001\244\001\249\000\000\003F\000\000\000\000\001\237\003\155\000\000\001\238\001\239\000\000\001\240\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\005t\005z\000\000\000\000\000\000\000\000\000\000\003\132\001\241\002\003\000\000\001\243\001\244\001\249\003\153\002\203\002\024\003\134\000\000\000\000\000\000\000\000\002\004\000\000\002\005\002\232\000\000\000\000\005\142\000\000\003\131\001\031\0013\000\000\005\157\000\000\000\000\002\014\000\000\000\000\000\000\003\155\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\000\000\002\005\002\232\000\000\000\000\002\012\001\237\000\000\000\000\001\238\001\239\005\133\001\240\000\000\000\000\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\003F\001\241\002\003\000\000\001\243\001\244\001\249\000\000\001\237\003\132\002\012\001\238\001\239\000\000\001\240\000\000\003\133\000\000\002\024\003\134\000\000\000\000\000\000\001\251\000\000\000\000\001\031\005\169\000\000\000\000\000\000\000\000\001\241\002\003\003F\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\000\000\002\004\000\000\002\005\002\232\000\000\000\000\000\000\002\014\000\000\005\181\000\000\000\000\000\000\000\000\002\015\000\000\002\024\000\000\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\002\004\000\000\002\005\002\232\000\000\000\000\000\000\000\000\000\000\002\012\002\014\001\241\002\003\000\000\001\243\001\244\001\249\002\015\000\000\002\024\001\237\000\000\001\251\001\238\001\239\001\031\001\240\000\000\000\000\000\000\000\000\000\000\000\000\003F\000\000\000\000\000\000\006\030\000\000\000\000\002\012\000\000\000\000\000\000\001\241\002\003\000\000\001\243\001\244\001\249\000\000\000\000\000\000\001\251\000\000\000\000\001\031\000\000\000\000\002\004\000\000\002\005\002\232\000\000\003F\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\001\237\000\000\000\000\001\238\001\239\000\000\001\240\000\000\000\000\000\000\000\000\002\014\000\000\000\000\002\004\000\000\002\005\002\232\002\015\000\000\002\024\002\012\000\000\000\000\001\241\002\003\000\000\001\243\001\244\001\249\000\000\000\000\001\237\000\000\001\251\001\238\001\239\001\031\001\240\000\000\000\000\000\000\002\014\000\000\000\000\003F\000\000\000\000\000\000\002\015\006?\002\024\000\000\000\000\002\012\000\000\001\241\002\003\000\000\001\243\001\244\001\249\001\237\000\000\000\000\001\238\001\239\001\251\001\240\000\000\001\031\000\000\002\004\000\000\002\005\002\232\000\000\000\000\003F\000\000\000\000\000\000\006D\007\228\000\000\000\000\001\241\0032\000\000\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\002\004\000\000\002\005\002\232\002\015\000\000\002\024\000\000\002\012\007\252\000\000\000\000\001\241\0032\0033\001\243\001\244\001\249\000\000\000\000\000\000\001\251\000\000\000\000\001\031\000\000\000\000\000\000\000\000\000\000\002\014\000\000\003F\000\000\000\000\000\000\000\000\002\015\000\000\002\024\002\012\000\000\000\000\000\000\0033\000\000\000\000\000\000\000\000\000\000\000\000\001\237\000\000\001\251\001\238\001\239\001\031\001\240\000\000\000\000\000\000\000\000\000\000\000\000\003F\001\237\000\000\000\000\001\238\001\239\001\250\001\240\000\000\000\000\000\000\001\241\002\003\000\000\001\243\001\244\001\249\000\000\000\000\001\251\000\000\000\000\001\031\000\000\002\014\001\241\002\003\000\000\001\243\001\244\001\249\002\015\000\000\002\024\000\000\000\000\001\250\000\000\000\000\000\000\000\000\002\198\000\000\002\199\002\200\001\239\000\000\002\201\000\000\001\251\000\000\b\181\001\031\000\000\000\000\000\000\002\014\0034\003\\\002\004\000\000\002\005\002\240\002\015\000\000\002\024\000\000\003a\000\000\000\000\000\000\000\000\000\000\002\004\000\000\002\005\002\232\000\000\0043\0049\000\000\003{\000\000\000\000\000\000\000\000\002\014\0034\000\000\000\000\000\000\000\000\000\000\002\023\002\198\002\024\002\199\002\200\001\239\002\012\002\201\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0043\0049\000\000\003\\\001\251\002\012\000\000\001\031\002\014\000\000\000\000\000\000\003a\000\000\000\000\002\023\000\000\002\024\001\251\000\000\000\000\001\031\000\000\000\000\000\000\000\000\003{\001\237\000\000\003F\001\238\001\239\000\000\001\240\002\247\000\000\000\000\000\000\001Q\000\000\000\000\b\219\000\000\000\000\000\000\003\129\000\000\000\000\b\220\000\000\000\000\001\241\002\003\000\000\001\243\001\244\001\249\000\000\002\204\000\000\003\131\001\031\002I\000\000\000\000\000\000\000\000\001W\000\000\000\000\000\000\002\014\000\000\000\000\000\000\000\000\000\000\000\000\002\015\000\000\002\024\000\000\000\000\000\000\000\000\002\014\000\000\000\000\000\000\000\000\003\135\000\000\002\015\000\000\002\024\000\000\000\000\000\000\003\129\002\004\000\000\002\005\0029\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\204\000\000\003\131\001\031\000\000\000\000\001`\000\000\006R\000\000\000\000\000\000\000\000\000\000\003\132\000\000\000\000\000\000\000\000\000\000\000\000\003\153\000\000\002\024\003\134\b\221\000\000\000\000\002\012\000\000\001\237\000\000\003\135\001\238\001\239\000\000\001\240\000\000\000\000\000\000\000\000\001\251\000\000\001B\001\031\000\000\000\000\000\000\003\155\001I\001Y\000\000\000\000\000\000\001\241\002\003\000\000\001\243\001\244\001\249\001\237\006\031\000\000\001\238\001\239\002E\001\240\003\132\000\000\000\000\000\000\000\000\000\000\000\000\003\153\000\000\002\024\003\134\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\198\000\000\002\199\002\200\001\239\0026\002\201\000\000\000\000\000\000\000\000\003\155\002\004\000\000\002\005\0029\000\000\003\\\002\014\001Z\000\000\000\000\000\000\000\000\000\000\002\015\003a\002\024\000\000\000\000\000\000\001\237\000\000\000\000\001\238\001\239\000\000\001\240\000\000\000\000\003{\000\000\002\004\000\000\002\005\0029\000\000\000\000\000\000\001\131\000\000\000\000\002\012\000\000\000\000\001\241\002\003\000\000\001\243\001\244\001\249\000\000\000\000\000\000\000\000\001\251\002;\000\000\001\031\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\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\001\241\002\003\001\031\001\243\001\244\001\249\000\000\002\004\000\000\002\005\0029\000\000\000\000\000\000\001\241\002\003\003\129\001\243\001\244\001\249\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\204\000\000\003\131\001\031\000\000\000\000\000\000\002\014\000\000\000\000\000\000\000\000\000\000\000\000\002\015\000\000\002\024\000\000\002\012\002\004\000\000\002\005\002\232\000\000\001\237\000\000\000\000\001\238\001\239\000\000\001\240\001\251\003\135\002\004\001\031\002\005\002\240\002\014\000\000\000\000\000\000\000\000\000\000\000\000\002\015\000\000\002\024\000\000\001\241\0032\000\000\001\243\001\244\001\249\000\000\000\000\000\000\000\000\000\000\002\012\000\000\005\158\000\000\000\000\000\000\000\000\000\000\003\132\000\000\000\000\000\000\000\000\001\251\002\012\003\153\001\031\002\024\003\134\000\000\000\000\0033\000\000\000\000\005\000\000\000\000\000\001\251\000\000\000\000\001\031\000\000\000\000\000\000\002\198\000\000\002\199\002\200\001\239\002\014\002\201\000\000\003\155\000\000\000\000\000\000\002\015\000\000\002\024\000\000\000\000\003\\\000\000\000\000\000\000\000\000\000\000\003\023\000\000\000\000\003a\000\000\000\000\000\000\000\000\002\198\000\000\002\199\002\200\001\239\000\000\002\201\000\000\000\000\003{\000\000\000\000\001\250\000\000\000\000\002\014\000\000\003\\\000\000\000\000\000\000\000\000\002\015\000\000\002\024\001\251\003a\000\000\001\031\002\014\000\000\001\237\000\000\000\000\001\238\001\239\002\015\001\240\002\024\000\000\003{\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\198\000\000\002\199\002\200\001\239\000\000\002\201\001\241\002\003\000\000\001\243\001\244\001\249\000\000\000\000\0034\000\000\003\\\001Q\000\000\000\000\b\230\000\000\000\000\000\000\000\000\003a\000\000\b\231\000\000\000\000\000\000\000\000\003\129\000\000\000\000\0036\0049\000\000\000\000\003{\000\000\000\000\000\000\002\014\000\000\002\204\001W\003\131\001\031\000\000\002\023\000\000\002\024\000\000\002\004\000\000\002\005\002\232\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\000\000\000\000\000\000\000\000\000\000\002\204\003\135\003\131\001\031\000\000\000\000\000\000\002\198\000\000\002\199\002\200\001\239\000\000\002\201\000\000\000\000\000\000\000\000\002\012\000\000\001`\000\000\000\000\000\000\003\\\000\000\000\000\000\000\000\000\000\000\004\248\001\251\003\135\003a\001\031\003\129\003\132\000\000\000\000\b\232\000\000\000\000\003E\003\153\000\000\002\024\003\134\003{\002\204\000\000\003\131\001\031\000\000\000\000\000\000\000\000\002\198\001B\002\199\002\200\001\239\004\229\002\201\001I\001Y\000\000\000\000\003\132\000\000\000\000\003\155\000\000\000\000\003\\\003\153\000\000\002\024\003\134\000\000\000\000\003\135\000\000\003a\000\000\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\002\014\000\000\000\000\003\155\000\000\000\000\000\000\002\015\000\000\002\024\000\000\004e\002\198\000\000\002\199\002\200\001\239\003\132\002\201\000\000\001Q\003\129\000\000\001S\003\153\001Z\002\024\003\134\000\000\003\\\001b\000\000\000\000\000\000\002\204\000\000\003\131\001\031\003a\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001W\000\000\003\155\003{\000\000\000\000\001\131\000\000\000\000\002\198\000\000\002\199\002\200\001\239\000\000\002\201\000\000\003\135\000\000\000\000\000\000\003\129\000\000\000\000\000\000\000\000\003\\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\204\003a\003\131\001\031\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\145\000\000\000\000\003{\001`\002\198\003\132\002\199\002\200\001\239\000\000\002\201\000\000\003\153\000\000\002\024\003\134\000\000\000\000\000\000\003\135\000\000\000\000\001j\000\000\000\000\000\000\000\000\000\000\003\129\000\000\006.\000\000\002\198\000\000\002\199\002\200\001\239\000\000\002\201\003\155\001B\002\204\000\000\003\131\001\031\000\000\001I\001Y\003\151\003\\\000\000\000\000\000\000\002\198\003\132\002\199\002\200\001\239\003a\002\201\000\000\003\153\000\000\002\024\003\134\002\198\000\000\002\199\002\200\001\239\003\\\002\201\003{\003\135\003\129\000\000\000\000\000\000\000\000\003a\000\000\000\000\003\\\000\000\000\000\000\000\000\000\002\204\003\155\003\131\001\031\003a\000\000\003{\000\000\000\000\001v\000\000\000\000\000\000\000\000\000\000\003\160\000\000\000\000\003{\001Z\000\000\003\132\007#\000\000\000\000\007&\000\000\000\000\003\153\002\203\002\024\003\134\003\135\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\204\000\000\003\131\001\031\000\000\000\000\000\000\001\131\000\000\000\000\001\135\000\000\000\000\003\155\000\000\003\129\000\000\000\000\000\000\003\171\000\000\000\000\000\000\000\000\000\000\003\132\000\000\000\000\002\204\000\000\003\131\001\031\003\153\000\000\002\024\003\134\003\129\000\000\000\000\002\198\000\000\002\199\002\200\001\239\000\000\002\201\000\000\000\000\003\129\002\204\000\000\003\131\001\031\000\000\000\000\000\000\003\\\000\000\000\000\003\155\003\135\002\204\000\000\003\131\001\031\003a\000\000\003\132\000\000\000\000\000\000\000\000\000\000\000\000\003\133\000\000\002\024\003\134\000\000\003{\002\198\003\135\002\199\002\200\001\239\000\000\002\201\000\000\000\000\003\177\000\000\000\000\000\000\003\135\000\000\003\132\000\000\003\\\000\000\000\000\000\000\000\000\003\153\000\000\002\024\003\134\003a\000\000\000\000\000\000\003\183\000\000\000\000\000\000\000\000\000\000\003\132\000\000\000\000\000\000\003{\000\000\003\189\003\153\000\000\002\024\003\134\000\000\003\132\003\155\002\198\000\000\002\199\002\200\001\239\003\153\002\201\002\024\003\134\000\000\000\000\000\000\002\198\000\000\002\199\002\200\001\239\003\\\002\201\000\000\003\155\003\129\000\000\000\000\000\000\000\000\003a\000\000\000\000\003\\\000\000\000\000\003\155\000\000\002\204\000\000\003\131\001\031\003a\000\000\003{\000\000\000\000\002\198\000\000\002\199\002\200\001\239\000\000\002\201\000\000\000\000\003{\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\\\000\000\003\129\000\000\000\000\000\000\003\135\000\000\000\000\003a\000\000\000\000\000\000\000\000\000\000\002\204\000\000\003\131\001\031\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\001\237\000\000\003\195\002L\001\239\000\000\001\240\000\000\003\132\000\000\000\000\000\000\000\000\000\000\003\135\003\153\000\000\002\024\003\134\003\129\000\000\000\000\000\000\000\000\001\241\002\221\000\000\001\243\001\244\001\249\000\000\003\129\002\204\000\000\003\131\001\031\000\000\000\000\000\000\000\000\000\000\000\000\003\155\003\201\002\204\000\000\003\131\001\031\000\000\003\132\000\000\000\000\000\000\000\000\000\000\000\000\003\153\000\000\002\024\003\134\000\000\000\000\003\129\002\198\003\135\002\199\002\200\001\239\000\000\002\201\000\000\005\022\004O\004P\000\000\002\204\003\135\003\131\001\031\000\000\003\\\000\000\000\000\003\155\002\198\000\000\002\199\002\200\001\239\003a\002\201\000\000\000\000\003\207\000\000\000\000\000\000\000\000\000\000\003\132\000\000\003\\\000\000\003{\000\000\003\213\003\153\003\135\002\024\003\134\003a\003\132\002\012\000\000\000\000\000\000\000\000\000\000\003\153\000\000\002\024\003\134\000\000\000\000\003{\001\251\000\000\000\000\001\031\000\000\000\000\000\000\000\000\003\155\000\000\000\000\003\219\000\000\000\000\000\000\000\000\000\000\003\132\000\000\002\198\003\155\002\199\002\200\001\239\003\153\002\201\002\024\003\134\000\000\005\029\000\000\000\000\000\000\000\000\000\000\000\000\003\\\000\000\002\198\000\000\002\199\002\200\001\239\000\000\002\201\003a\000\000\000\000\000\000\000\000\003\129\003\155\000\000\000\000\000\000\003\\\000\000\000\000\000\000\003{\000\000\000\000\000\000\002\204\003a\003\131\001\031\002\014\000\000\000\000\000\000\003\129\000\000\000\000\002\015\000\000\002\024\000\000\003{\002\198\000\000\002\199\002\200\001\239\002\204\002\201\003\131\001\031\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\135\003\\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003a\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\135\000\000\000\000\003{\000\000\000\000\000\000\000\000\003\225\000\000\000\000\000\000\000\000\000\000\003\132\003\129\000\000\000\000\000\000\000\000\000\000\003\153\000\000\002\024\003\134\000\000\000\000\000\000\002\204\003\231\003\131\001\031\000\000\000\000\003\129\003\132\000\000\000\000\000\000\000\000\000\000\000\000\003\153\000\000\002\024\003\134\000\000\002\204\003\155\003\131\001\031\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\198\003\135\002\199\002\200\001\239\000\000\002\201\000\000\000\000\000\000\003\155\000\000\000\000\000\000\000\000\000\000\003\129\003\\\000\000\000\000\003\135\000\000\000\000\000\000\000\000\000\000\003a\000\000\000\000\002\204\003\237\003\131\001\031\000\000\000\000\000\000\003\132\000\000\000\000\000\000\003{\000\000\000\000\003\153\000\000\002\024\003\134\000\000\000\000\003\243\000\000\000\000\000\000\000\000\002\198\003\132\002\199\002\200\001\239\000\000\002\201\003\135\003\153\000\000\002\024\003\134\000\000\000\000\000\000\000\000\003\155\003\\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003a\000\000\002\198\000\000\002\199\002\200\001\239\000\000\002\201\003\155\003\249\000\000\000\000\000\000\003{\000\000\003\132\000\000\000\000\003\\\000\000\000\000\000\000\003\153\000\000\002\024\003\134\000\000\003a\000\000\000\000\000\000\003\129\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003{\000\000\000\000\002\204\000\000\003\131\001\031\000\000\003\155\000\000\002\198\000\000\002\199\002\200\001\239\002\198\002\201\002\199\002\200\001\239\000\000\002\201\000\000\000\000\000\000\000\000\000\000\003\\\000\000\000\000\000\000\000\000\003\\\000\000\000\000\003\135\003a\000\000\000\000\000\000\000\000\003a\000\000\000\000\003\129\000\000\000\000\000\000\000\000\000\000\003{\000\000\000\000\000\000\000\000\003{\000\000\002\204\000\000\003\131\001\031\000\000\000\000\000\000\003\255\002\198\000\000\002\199\002\200\001\239\003\132\002\201\003\129\000\000\000\000\000\000\000\000\003\153\000\000\002\024\003\134\000\000\003\\\000\000\000\000\002\204\000\000\003\131\001\031\003\135\000\000\003a\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\155\003{\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\135\004\005\000\000\000\000\000\000\003\129\000\000\003\132\000\000\000\000\003\129\000\000\000\000\000\000\003\153\000\000\002\024\003\134\002\204\000\000\003\131\001\031\000\000\002\204\000\000\003\131\001\031\000\000\000\000\004\011\002\198\000\000\002\199\002\200\001\239\003\132\002\201\000\000\000\000\000\000\000\000\003\155\003\153\000\000\002\024\003\134\000\000\003\\\000\000\000\000\003\135\000\000\000\000\000\000\000\000\003\135\003a\000\000\000\000\000\000\003\129\002\198\000\000\002\199\002\200\001\239\000\000\002\201\000\000\003\155\003{\000\000\000\000\002\204\000\000\003\131\001\031\000\000\003\\\004\017\000\000\000\000\000\000\000\000\004\023\003\132\000\000\003a\000\000\000\000\003\132\000\000\003\153\000\000\002\024\003\134\000\000\003\153\000\000\002\024\003\134\003{\000\000\000\000\000\000\003\135\000\000\000\000\000\000\000\000\000\000\002\198\000\000\002\199\002\200\001\239\000\000\002\201\000\000\003\155\000\000\000\000\000\000\000\000\003\155\000\000\000\000\000\000\003\\\000\000\000\000\000\000\000\000\000\000\004\029\000\000\000\000\003a\000\000\000\000\003\132\000\000\003\129\000\000\000\000\000\000\000\000\003\153\000\000\002\024\003\134\003{\000\000\000\000\000\000\002\204\000\000\003\131\001\031\000\000\000\000\000\000\000\000\000\000\002\198\000\000\002\199\002\200\001\239\000\000\002\201\000\000\000\000\003\129\003\155\000\000\000\000\000\000\000\000\000\000\000\000\003\\\000\000\000\000\000\000\000\000\002\204\003\135\003\131\001\031\003a\000\000\000\000\000\000\000\000\002\198\000\000\002\199\002\200\001\239\000\000\002\201\000\000\000\000\003{\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\\\000\000\000\000\000\000\004\140\000\000\003\135\000\000\000\000\003a\003\132\003\129\007_\000\000\000\000\000\000\000\000\003\153\000\000\002\024\003\134\000\000\000\000\003{\002\204\000\000\003\131\001\031\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\150\002\198\000\000\002\199\002\200\001\239\003\132\002\201\007`\003\155\007a\000\000\000\000\003\153\000\000\002\024\003\134\000\000\003\\\000\000\000\000\003\135\000\000\000\000\000\000\000\000\000\000\003a\000\000\003\129\000\000\000\000\002\198\000\000\002\199\002\200\001\239\000\000\002\201\000\000\003\155\003{\002\204\007b\003\131\001\031\000\000\000\000\000\000\003\\\004\160\002\198\000\000\002\199\002\200\001\239\003\132\002\201\003a\000\000\003\129\000\000\000\000\003\153\000\000\002\024\003\134\000\000\003\\\000\000\000\000\000\000\003{\002\204\003\135\003\131\001\031\003a\000\000\000\000\000\000\007c\002\198\000\000\002\199\002\200\001\239\000\000\002\201\000\000\003\155\003{\000\000\000\000\000\000\007d\007e\000\000\007f\003\\\000\000\000\000\000\000\004\170\000\000\003\135\000\000\000\000\003a\003\132\000\000\000\000\000\000\003\129\000\000\000\000\003\153\000\000\002\024\003\134\000\000\007g\003{\000\000\000\000\000\000\002\204\000\000\003\131\001\031\000\000\000\000\000\000\000\000\004\179\002\198\000\000\002\199\002\200\001\239\003\132\002\201\000\000\003\155\003\129\000\000\000\000\003\153\007h\002\024\003\134\007j\003\\\000\000\007o\007{\000\000\002\204\003\135\003\131\001\031\003a\000\000\003\129\000\000\000\000\002\198\007\166\002\199\002\200\001\239\000\000\002\201\000\000\003\155\003{\002\204\000\000\003\131\001\031\000\000\000\000\000\000\003\\\000\000\007\167\000\000\004\188\000\000\003\135\000\000\000\000\003a\003\132\003\129\000\000\000\000\000\000\000\000\000\000\003\153\000\000\002\024\003\134\000\000\000\000\003{\002\204\003\135\003\131\001\031\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\199\002\198\000\000\002\199\002\200\001\239\003\132\002\201\000\000\003\155\000\000\000\000\000\000\003\153\000\000\002\024\003\134\000\000\003\\\004\208\000\000\003\135\000\000\000\000\000\000\003\132\000\000\003a\000\000\003\129\000\000\000\000\003\153\000\000\002\024\003\134\000\000\000\000\000\000\000\000\003\155\003{\002\204\000\000\003\131\001\031\000\000\000\000\000\000\000\000\004\217\002\198\000\000\002\199\002\200\001\239\003\132\002\201\000\000\003\155\003\129\000\000\000\000\003\153\000\000\002\024\003\134\000\000\003\\\000\000\000\000\000\000\000\000\002\204\003\135\003\131\001\031\003a\000\000\000\000\000\000\000\000\002\198\000\000\002\199\002\200\001\239\000\000\002\201\000\000\003\155\003{\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\\\000\000\000\000\000\000\004\224\000\000\003\135\000\000\000\000\003a\003\132\000\000\000\000\000\000\003\129\000\000\000\000\003\153\000\000\002\024\003\134\000\000\000\000\003{\000\000\000\000\000\000\002\204\000\000\003\131\001\031\000\000\000\000\000\000\000\000\005\014\002\198\000\000\002\199\002\200\001\239\003\132\002\201\000\000\003\155\000\000\000\000\000\000\003\153\000\000\002\024\003\134\000\000\003\\\000\000\000\000\000\000\000\000\000\000\003\135\000\000\000\000\003a\000\000\003\129\000\000\000\000\002\198\000\000\002\199\002\200\001\239\000\000\002\201\000\000\003\155\003{\002\204\000\000\003\131\001\031\000\000\000\000\000\000\003\\\000\000\000\000\000\000\005\r\000\000\000\000\000\000\000\000\003a\003\132\003\129\000\000\000\000\000\000\000\000\000\000\003\153\000\000\002\024\003\134\000\000\000\000\003{\002\204\003\135\003\131\001\031\000\000\000\000\000\000\002\198\000\000\002\199\002\200\001\239\002\198\002\201\002\199\002\200\001\239\000\000\002\201\000\000\003\155\000\000\000\000\000\000\003\\\000\000\000\000\000\000\000\000\003\\\005\020\000\000\003\135\003a\000\000\000\000\003\132\000\000\003a\000\000\003\129\000\000\000\000\003\153\000\000\002\024\003\134\003{\000\000\000\000\000\000\000\000\003{\002\204\000\000\003\131\001\031\000\000\000\000\000\000\000\000\005-\002\198\000\000\002\199\002\200\001\239\003\132\002\201\000\000\003\155\003\129\000\000\000\000\003\153\000\000\002\024\003\134\000\000\003\\\000\000\000\000\000\000\000\000\002\204\003\135\003\131\001\031\003a\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\155\003{\000\000\000\000\000\000\000\000\001Q\000\000\000\000\b\236\000\000\000\000\000\000\0059\000\000\003\135\b\237\000\000\003\129\003\132\000\000\000\000\000\000\003\129\000\000\000\000\003\153\000\000\002\024\003\134\000\000\002\204\000\000\003\131\001\031\001W\002\204\000\000\003\131\001\031\000\000\000\000\001\237\000\000\005@\001\238\001\239\000\000\001\240\000\000\003\132\000\000\001\237\003\155\000\000\001\238\001\239\003\153\001\240\002\024\003\134\000\000\000\000\003\135\000\000\000\000\001\241\002\003\003\135\001\243\001\244\001\249\000\000\003\129\000\000\000\000\001\241\002\003\000\000\001\243\001\244\001\249\000\000\000\000\003\155\001`\002\204\000\000\003\131\001\031\000\000\000\000\005L\000\000\000\000\000\000\000\000\005K\003\132\000\000\000\000\000\000\000\000\003\132\b\238\003\153\000\000\002\024\003\134\000\000\003\153\000\000\002\024\003\134\002\004\000\000\002\005\tW\003\135\tY\000\000\000\000\001B\000\000\002\004\000\000\002\005\b\169\001I\001Y\000\000\000\000\003\155\000\000\000\000\000\000\000\000\003\155\000\000\000\000\001Q\000\000\000\000\001S\000\000\000\000\001\189\005R\000\000\000\000\001b\000\000\000\000\003\132\002\012\000\000\000\000\000\000\000\000\000\000\003\153\000\000\002\024\003\134\002\012\000\000\000\000\001\251\001\190\001W\001\031\000\000\000\000\000\000\000\000\001Q\001\212\001\251\001S\000\000\001\031\001\189\000\000\000\000\000\000\001b\001Q\003\155\001Z\001S\000\000\000\000\001\189\000\000\000\000\000\000\001b\000\000\000\000\000\000\000\000\000\000\000\000\001\190\001W\000\000\000\000\000\000\000\000\000\000\000\000\001\191\000\000\000\000\001\190\001W\000\000\000\000\001\131\001`\000\000\001\237\001\210\000\000\001\238\001\239\000\000\001\240\000\000\000\000\000\000\000\000\000\000\000\000\002\014\000\000\000\000\000\000\001j\000\000\000\000\002\015\001\195\002\024\002\014\001\241\002\003\000\000\001\243\001\244\001\249\002\015\000\000\002\024\001`\000\000\001B\000\000\000\000\000\000\000\000\000\000\001I\001Y\000\000\001`\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001j\000\000\000\000\000\000\001\195\000\000\000\000\000\000\000\000\000\000\000\000\001j\000\000\000\000\000\000\001\195\000\000\000\000\001B\000\000\002\004\000\000\002\005\002=\001I\001Y\000\000\000\000\000\000\001B\000\000\000\000\000\000\000\000\001\237\001I\001Y\001\238\001\239\001v\001\240\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001Z\000\000\000\000\001\205\000\000\000\000\000\000\000\000\000\000\001\241\002\003\002\012\001\243\001\244\001\249\001\237\000\000\000\000\001\238\001\239\000\000\001\240\000\000\000\000\001\251\001v\000\000\001\031\000\000\000\000\001\131\000\000\000\000\001\135\000\000\001Z\001v\000\000\001\205\001\241\002\003\000\000\001\243\001\244\001\249\000\000\001Z\000\000\000\000\001\205\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\004\000\000\002\005\0021\000\000\000\000\000\000\000\000\001\131\000\000\000\000\001\135\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\131\001\237\000\000\001\135\001\238\001\239\000\000\001\240\000\000\000\000\000\000\002\004\000\000\002\005\002.\002\014\000\000\000\000\000\000\000\000\000\000\002\012\002\015\000\000\002\024\001\241\002\003\000\000\001\243\001\244\001\249\000\000\001\237\000\000\001\251\001\238\001\239\001\031\001\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\002\012\000\000\000\000\000\000\000\000\001\241\002\003\000\000\001\243\001\244\001\249\001\237\000\000\001\251\001\238\001\239\001\031\001\240\000\000\000\000\000\000\000\000\002\004\000\000\002\005\002\007\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\001\237\000\000\000\000\001\238\001\239\000\000\001\240\000\000\000\000\002\014\000\000\000\000\002\004\000\000\002\005\002\n\002\015\000\000\002\024\000\000\000\000\002\012\000\000\000\000\001\241\002\003\000\000\001\243\001\244\001\249\000\000\000\000\001\237\000\000\001\251\001\238\001\239\001\031\001\240\002\014\000\000\000\000\002\004\000\000\002\005\002\r\002\015\000\000\002\024\000\000\000\000\000\000\002\012\000\000\000\000\000\000\001\241\002\003\000\000\001\243\001\244\001\249\000\000\001\237\000\000\001\251\001\238\001\239\001\031\001\240\000\000\000\000\002\004\000\000\002\005\002-\000\000\000\000\000\000\000\000\000\000\000\000\002\012\000\000\000\000\000\000\000\000\001\241\002\003\000\000\001\243\001\244\001\249\001\237\000\000\001\251\001\238\001\239\001\031\001\240\000\000\002\014\000\000\000\000\002\004\000\000\002\005\002!\002\015\000\000\002\024\000\000\002\012\000\000\000\000\000\000\000\000\001\241\002\003\000\000\001\243\001\244\001\249\001\237\000\000\001\251\001\238\001\239\001\031\001\240\000\000\000\000\002\014\000\000\000\000\002\004\000\000\002\005\002)\002\015\000\000\002\024\000\000\000\000\002\012\000\000\000\000\001\241\002\003\000\000\001\243\001\244\001\249\000\000\000\000\001\237\000\000\001\251\001\238\001\239\001\031\001\240\002\014\000\000\000\000\002\004\000\000\002\005\003\"\002\015\000\000\002\024\000\000\000\000\000\000\002\012\000\000\000\000\000\000\001\241\002\003\000\000\001\243\001\244\001\249\000\000\000\000\000\000\001\251\000\000\000\000\001\031\002\014\000\000\000\000\002\004\000\000\002\005\003J\002\015\000\000\002\024\000\000\000\000\000\000\002\012\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\251\001\238\001\239\001\031\001\240\000\000\002\014\000\000\000\000\002\004\000\000\002\005\004D\002\015\000\000\002\024\000\000\002\012\000\000\000\000\000\000\000\000\001\241\002\003\000\000\001\243\001\244\001\249\001\237\000\000\001\251\001\238\001\239\001\031\001\240\000\000\000\000\002\014\000\000\000\000\000\000\000\000\000\000\000\000\002\015\000\000\002\024\000\000\000\000\002\012\000\000\000\000\001\241\002\003\000\000\001\243\001\244\001\249\000\000\000\000\001\237\000\000\001\251\001\238\001\239\001\031\001\240\002\014\000\000\000\000\002\004\000\000\002\005\004G\002\015\000\000\002\024\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\001\237\000\000\000\000\001\238\001\239\000\000\001\240\002\014\000\000\000\000\002\004\000\000\002\005\004J\002\015\000\000\002\024\000\000\000\000\000\000\002\012\000\000\000\000\000\000\001\241\002\003\000\000\001\243\001\244\001\249\000\000\001\237\000\000\001\251\001\238\001\239\001\031\001\240\000\000\002\014\000\000\000\000\002\004\000\000\002\005\004R\002\015\000\000\002\024\000\000\002\012\000\000\000\000\000\000\000\000\001\241\002\003\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\000\000\002\004\000\000\002\005\005:\000\000\000\000\000\000\000\000\000\000\000\000\002\012\000\000\002\198\000\000\002\199\002\200\001\239\000\000\002\201\000\000\000\000\000\000\000\000\001\251\000\000\000\000\001\031\000\000\002\014\000\000\000\000\002\004\000\000\002\005\0053\002\015\000\000\002\024\005\130\000\000\002\012\000\000\000\000\000\000\000\000\000\000\005\138\000\000\000\000\000\000\000\000\001\237\000\000\001\251\001\238\001\239\001\031\001\240\002\014\000\000\000\000\000\000\000\000\000\000\000\000\002\015\000\000\002\024\000\000\000\000\000\000\002\012\000\000\005\139\000\000\001\241\002\003\000\000\001\243\001\244\001\249\000\000\000\000\001Q\001\251\001Q\001S\001\031\001S\001\206\002\014\001\189\000\000\001b\000\000\001b\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\000\000\000\000\001\208\001W\001\194\001W\000\000\000\000\000\000\000\000\000\000\002\014\000\000\000\000\002\004\002\203\002\005\006\130\002\015\001\237\002\024\000\000\001\238\001\239\000\000\001\240\000\000\000\000\005\142\000\000\003\131\001\031\0013\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\014\001\241\0032\000\000\001\243\001\244\001\249\002\015\000\000\002\024\000\000\001`\002\012\001`\001\237\000\000\000\000\001\238\001\239\000\000\001\240\000\000\000\000\000\000\000\000\001\251\005\133\000\000\001\031\000\000\001j\000\000\001j\000\000\001\195\000\000\001\195\000\000\001\241\0032\000\000\001\243\001\244\001\249\000\000\000\000\000\000\000\000\001B\000\000\001B\000\000\000\000\003\132\001I\001Y\001I\001Y\000\000\000\000\003\133\000\000\002\024\003\134\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\000\000\000\000\000\000\000\000\000\000\001\237\000\000\000\000\001\238\001\239\001\250\001\240\000\000\002\014\001\241\0032\000\000\001\243\001\244\001\249\002\015\000\000\002\024\001\251\000\000\001v\001\031\001v\000\000\001\241\0032\000\000\001\243\001\244\001\249\001Z\000\000\001Z\001\205\000\000\001\205\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\000\000\000\000\001\251\0034\000\000\001\031\000\000\001\131\000\000\001\131\001\135\000\000\001\135\000\000\001\241\0032\000\000\001\243\001\244\001\249\000\000\000\000\007_\000\000\000\000\0035\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\023\bO\002\024\000\000\000\000\001\250\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\007`\t\015\007a\000\000\001\251\000\000\001\250\001\031\000\000\000\000\001Q\000\000\000\000\001S\000\000\000\000\002\014\000\000\000\000\001\251\001b\000\000\001\031\002\023\000\000\002\024\001Q\000\000\000\000\001S\000\000\000\000\000\000\000\000\000\000\007b\001b\000\000\000\000\001W\bQ\001c\b\023\000\000\000\000\000\000\000\000\000\000\000\000\001\250\000\000\001\155\000\000\000\000\000\000\001W\000\000\bO\000\000\000\000\000\000\000\000\001\251\000\000\000\000\001\031\000\000\006\142\000\000\000\000\000\000\002\014\000\000\007c\000\000\000\000\000\000\000\000\002\023\000\000\002\024\000\000\000\000\000\000\006\145\000\000\002\014\007d\007e\001`\007f\000\000\000\000\002\023\b#\002\024\001Q\000\000\000\000\001S\bO\000\000\000\000\000\000\000\000\001`\001b\000\000\001j\000\000\bP\000\000\000\000\007\170\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001j\001W\001B\001c\000\000\002\014\000\000\001Q\001I\001Y\001S\000\000\002\023\001l\002\024\000\000\007h\001b\001B\007j\000\000\000\000\007o\007{\001I\001Y\000\000\000\000\000\000\bX\000\000\000\000\000\000\000\000\000\000\007\166\001W\000\000\001c\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\172\001Q\000\000\001`\001S\007\167\000\000\000\000\000\000\000\000\001v\001b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001Z\000\000\001j\001\149\000\000\000\000\001v\000\000\000\000\000\000\001W\000\000\000\000\000\000\000\000\000\000\001Z\000\000\001`\006\151\001B\000\000\006\142\000\000\000\000\000\000\001I\001Y\000\000\000\000\001\131\000\000\000\000\001\135\000\000\000\000\000\000\001j\000\000\007\006\000\000\000\000\000\000\000\000\000\000\000\000\001\131\000\000\000\000\001\135\000\000\000\000\000\000\000\000\001Q\001B\000\000\001S\000\000\000\000\001`\001I\001Y\000\000\001b\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\001j\000\000\000\000\000\000\001W\000\000\000\000\001Z\000\000\001Q\001\149\000\000\001S\000\000\000\000\000\000\006\142\000\000\001B\001b\001Q\000\000\000\000\001S\001I\001Y\000\000\000\000\000\000\000\000\001b\000\000\001v\007\225\000\000\000\000\000\000\001\131\001W\000\000\001\135\000\000\001Z\000\000\000\000\001\149\000\000\000\000\001Q\001W\006\142\001S\000\000\000\000\001`\000\000\000\000\000\000\001b\000\000\000\000\006\142\000\000\000\000\000\000\000\000\000\000\007\239\000\000\000\000\000\000\000\000\001\131\001j\001v\001\135\000\000\001W\007\249\001c\000\000\000\000\000\000\000\000\001Z\000\000\000\000\006\151\001`\b\225\000\000\001B\000\000\000\000\000\000\000\000\000\000\001I\001Y\001`\002\198\000\000\002\199\002\200\001\239\000\000\002\201\001j\000\000\000\000\000\000\000\000\000\000\000\000\001\131\000\000\000\000\001\135\001j\000\000\000\000\000\000\000\000\000\000\000\000\001B\004\225\001`\000\000\000\000\000\000\001I\001Y\000\000\001\237\000\000\001B\001\238\001\239\000\000\001\240\000\000\001I\001Y\000\000\000\000\001j\001v\000\000\000\000\000\000\000\000\000\000\b\029\000\000\000\000\000\000\001Z\001\241\002\022\006\151\001\243\001\244\001\249\001B\000\000\000\000\000\000\000\000\000\000\001I\001Y\001Q\000\000\001Q\001S\000\000\001S\000\000\000\000\000\000\001v\001b\000\000\001b\000\000\000\000\001\131\000\000\000\000\001\135\001Z\001v\000\000\006\151\000\000\000\000\000\000\000\000\000\000\000\000\001W\001Z\001W\000\000\006\151\000\000\000\000\001Q\000\000\000\000\001S\002\203\002Q\000\000\002\242\000\000\000\000\001b\000\000\001v\001\131\000\000\000\000\001\135\002\204\000\000\003\131\001\031\000\000\001Z\000\000\001\131\001\149\000\000\001\135\000\000\001W\000\000\000\000\000\000\000\000\000\000\000\000\001Q\000\000\001\250\001S\000\000\003\018\000\000\001`\000\000\001`\001b\000\000\000\000\000\000\000\000\001\251\001\131\000\000\001\031\001\135\004\228\000\000\000\000\000\000\000\000\000\000\001j\000\000\001j\001W\000\000\000\000\000\000\000\000\000\000\000\000\001\237\000\000\000\000\001\238\001\239\003\029\001\240\001`\001B\000\000\001B\000\000\003\132\000\000\001I\001Y\001I\001Y\000\000\003\133\000\000\002\024\003\134\000\000\001\241\0031\001j\001\243\001\244\001\249\000\000\000\000\001Q\000\000\000\000\001S\000\000\000\000\000\000\000\000\000\000\000\000\001b\001`\001B\000\000\002\014\000\000\000\000\000\000\001I\001Y\000\000\002\023\000\000\002\024\000\000\000\000\000\000\000\000\000\000\001W\001j\000\000\001v\000\000\001v\000\000\000\000\000\000\000\000\000\000\000\000\004*\001Z\000\000\001Z\002T\000\000\002\245\001B\000\000\000\000\000\000\000\000\000\000\001I\001Y\000\000\001Q\000\000\000\000\001S\001Q\000\000\000\000\001S\000\000\000\000\001b\001v\000\000\000\000\001b\001\131\000\000\001\131\001\135\000\000\001\135\001Z\001`\001\250\002$\000\000\000\000\000\000\000\000\001W\000\000\000\000\000\000\001W\000\000\b\018\001\251\000\000\000\000\001\031\000\000\001j\000\000\000\000\000\000\004V\000\000\001v\000\000\000\000\000\000\001\131\001Q\000\000\001\135\001S\000\000\001Z\000\000\001B\002$\000\000\001b\000\000\000\000\001I\001Y\000\000\000\000\000\000\000\000\000\000\001Q\000\000\000\000\001S\000\000\000\000\000\000\001`\000\000\001W\001b\001`\000\000\000\000\000\000\001\131\000\000\000\000\001\135\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001j\000\000\000\000\001W\001j\002\014\001Q\000\000\000\000\001S\000\000\000\000\002\023\000\000\002\024\005\228\001b\001v\001B\000\000\000\000\000\000\001B\000\000\001I\001Y\b\\\001Z\001I\001Y\003j\b\196\000\000\001`\000\000\001W\000\000\000\000\000\000\000\000\000\000\000\000\t~\000\000\000\000\t\127\000\000\000\000\000\000\b_\000\000\000\000\001j\001`\000\000\000\000\000\000\001\131\000\000\b`\001\135\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001B\000\000\001j\000\000\001v\000\000\001I\001Y\001v\000\000\t;\000\000\000\000\000\000\001Z\001`\000\000\007\022\001Z\000\000\001B\003j\ba\000\000\000\000\000\000\001I\001Y\000\000\000\000\000\000\000\000\000\000\000\000\001j\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\131\000\000\000\000\001\135\001\131\000\000\000\000\001\135\001B\000\000\b\\\000\000\001v\000\000\001I\001Y\000\000\bb\000\000\000\000\000\000\b\\\001Z\000\000\000\000\007#\t~\000\000\b@\t\127\000\000\bc\001v\b_\000\000\000\000\000\000\t~\000\000\000\000\t\127\000\000\001Z\b`\b_\000\000\b\\\000\000\000\000\000\000\000\000\t\129\001\131\000\000\b`\001\135\000\000\000\000\000\000\000\000\000\000\000\000\t~\000\000\001v\t\127\000\000\000\000\000\000\b_\be\000\000\001\131\000\000\001Z\005\235\ba\t<\000\000\b`\000\000\000\000\000\000\bf\000\000\001Q\bh\ba\001S\bm\001Q\000\000\000\000\001S\000\000\001b\000\000\000\000\000\000\000\000\001b\000\000\bo\000\000\001\131\000\000\000\000\001\135\000\000\000\000\000\000\000\000\ba\000\000\001W\bb\000\000\000\000\000\000\001W\bp\000\000\000\000\000\000\001Q\000\000\bb\001S\000\000\bc\000\000\000\000\000\000\000\000\001b\000\000\000\000\000\000\000\000\000\000\bc\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\t\128\000\000\bb\000\000\001W\000\000\000\000\000\000\000\000\000\000\000\000\t\132\000\000\000\000\000\000\001`\bc\000\000\000\000\be\001`\001Q\000\000\000\000\001S\000\000\000\000\000\000\000\000\000\000\be\001b\bf\000\000\001j\bh\t\137\000\000\bm\001j\000\000\000\000\000\000\bf\000\000\000\000\bh\000\000\000\000\bm\001W\bo\001B\000\000\001`\be\000\000\001B\001I\001Y\000\000\000\000\bo\001I\001Y\000\000\000\000\000\000\bf\bp\000\000\bh\000\000\001j\bm\001Q\000\000\000\000\001S\000\000\bp\000\000\000\000\000\000\000\000\001b\001Q\bo\000\000\001S\000\000\001B\000\000\000\000\000\000\000\000\001b\001I\001Y\000\000\001`\000\000\000\000\000\000\001W\bp\001Q\000\000\001v\001S\000\000\000\000\000\000\001v\000\000\001W\001b\000\000\001Z\001j\000\000\001\221\000\000\001Z\000\000\000\000\001\154\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001W\000\000\001B\000\000\000\000\000\000\000\000\000\000\001I\001Y\001\199\000\000\001v\001\131\000\000\000\000\001\135\000\000\001\131\001`\000\000\001\135\001Z\000\000\000\000\001w\000\000\000\000\000\000\000\000\001`\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\000\000\000\000\000\000\000\000\000\000\001j\001`\001Q\001\131\000\000\001S\001\135\001B\000\000\001v\000\000\000\000\001b\001I\001Y\000\000\000\000\000\000\001B\001Z\001j\000\000\001\152\000\000\001I\001Y\000\000\000\000\000\000\000\000\001Q\001W\000\000\001S\000\000\000\000\000\000\000\000\001B\000\000\001b\000\000\000\000\000\000\001I\001Y\000\000\000\000\000\000\001\131\001Q\000\000\001\135\001S\000\000\000\000\000\000\000\000\000\000\001W\001b\000\000\000\000\001v\000\000\002\198\000\000\002\199\002\200\001\239\000\000\002\201\000\000\001Z\001v\000\000\001\157\000\000\000\000\001W\000\000\001`\000\000\000\000\001Z\000\000\000\000\001\174\000\000\000\000\000\000\005\146\000\000\002\198\001v\002\199\002\200\001\239\000\000\002\201\001j\000\000\000\000\001\131\001Z\000\000\001\135\000\000\000\000\001`\000\000\000\000\000\000\000\000\001\131\000\000\000\000\001\135\001B\002\202\000\000\000\000\000\000\000\000\001I\001Y\000\000\000\000\001j\001`\001Q\000\000\001Q\001S\001\131\001S\000\000\001\203\000\000\000\000\001b\000\000\001b\000\000\000\000\000\000\001B\000\000\001j\000\000\000\000\000\000\001I\001Y\000\000\000\000\000\000\000\000\000\000\001W\000\000\001W\000\000\000\000\000\000\000\000\001B\000\000\000\000\000\000\000\000\000\000\001I\001Y\001v\000\000\000\000\002\203\000\000\000\000\000\000\000\000\000\000\000\000\001Z\000\000\000\000\002S\000\000\000\000\002\204\000\000\003\131\001\031\000\000\000\000\000\000\000\000\000\000\000\000\001Q\000\000\001v\001S\000\000\002\203\000\000\000\000\000\000\001`\001b\001`\001Z\000\000\001\131\002~\000\000\001\135\002\204\000\000\003\131\001\031\001v\000\000\000\000\000\000\000\000\000\000\001j\001W\001j\000\000\001Z\000\000\001Q\002\128\000\000\001S\000\000\000\000\000\000\000\000\001\131\000\000\001b\001\135\001B\000\000\001B\000\000\000\000\000\000\001I\001Y\001I\001Y\000\000\003\132\000\000\000\000\000\000\000\000\001\131\001W\003\133\001\135\002\024\003\134\000\000\000\000\001Q\000\000\001Q\001S\000\000\001S\000\000\000\000\000\000\001`\001b\001Q\001b\000\000\001S\003\132\000\000\000\000\000\000\000\000\000\000\001b\003\133\000\000\002\024\003\134\000\000\000\000\001j\001W\000\000\001W\001v\000\000\001v\002\198\000\000\002\199\002\200\001\239\001W\002\201\001Z\001`\001Z\002\223\001B\002\244\000\000\000\000\000\000\000\000\001I\001Y\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003P\001j\002\198\000\000\002\199\002\200\001\239\000\000\002\201\000\000\000\000\001\131\000\000\001\131\001\135\000\000\001\135\000\000\001`\001B\001`\000\000\000\000\000\000\000\000\001I\001Y\000\000\003T\001`\002\198\000\000\002\199\002\200\001\239\000\000\002\201\001j\000\000\001j\000\000\001v\000\000\000\000\000\000\000\000\000\000\000\000\001j\000\000\000\000\001Z\000\000\000\000\003\020\001B\003s\001B\000\000\000\000\000\000\001I\001Y\001I\001Y\002\198\001B\002\199\002\200\001\239\000\000\002\201\001I\001Y\000\000\001v\000\000\000\000\000\000\000\000\000\000\001\131\000\000\000\000\001\135\001Z\002\203\000\000\003\031\000\000\002\198\003\130\002\199\002\200\001\239\000\000\002\201\000\000\000\000\002\204\000\000\003\131\001\031\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001v\000\000\001v\002\203\001\131\003\154\000\000\001\135\000\000\000\000\001Z\001v\001Z\003/\000\000\003g\002\204\000\000\003\131\001\031\000\000\001Z\000\000\000\000\003l\000\000\000\000\000\000\000\000\001Q\000\000\002\203\001S\000\000\000\000\000\000\000\000\000\000\001Q\001b\001\131\001S\001\131\001\135\002\204\001\135\003\131\001\031\001b\000\000\000\000\001\131\000\000\000\000\001\135\003\132\000\000\000\000\001W\000\000\001Q\000\000\003\133\001S\002\024\003\134\002\203\001W\000\000\000\000\001b\000\000\002\198\000\000\002\199\002\200\001\239\000\000\002\201\002\204\000\000\003\131\001\031\003\132\000\000\000\000\000\000\000\000\000\000\001W\003\133\002\203\002\024\003\134\000\000\000\000\000\000\000\000\004\129\000\000\000\000\000\000\000\000\000\000\002\204\000\000\003\131\001\031\001`\000\000\000\000\003\132\000\000\000\000\000\000\000\000\000\000\001`\003\133\000\000\002\024\003\134\000\000\000\000\000\000\000\000\000\000\001j\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001j\000\000\001Q\001`\001Q\001S\000\000\001S\000\000\001B\003\132\000\000\001b\000\000\001b\001I\001Y\003\133\001B\002\024\003\134\000\000\001j\000\000\001I\001Y\000\000\000\000\000\000\000\000\000\000\001W\000\000\001W\000\000\003\132\000\000\000\000\000\000\000\000\001B\000\000\003\133\000\000\002\024\003\134\001I\001Y\002\203\000\000\001Q\000\000\000\000\001S\000\000\000\000\000\000\000\000\000\000\000\000\001b\002\204\000\000\003\131\001\031\001v\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001v\001Z\000\000\000\000\004'\001W\000\000\001`\001Q\001`\001Z\001S\000\000\004,\000\000\000\000\000\000\000\000\001b\000\000\000\000\000\000\001v\000\000\000\000\000\000\001j\000\000\001j\000\000\000\000\001\131\001Z\000\000\001\135\004<\000\000\001W\000\000\000\000\001\131\000\000\000\000\001\135\001B\000\000\001B\000\000\000\000\000\000\001I\001Y\001I\001Y\003\132\001`\001Q\000\000\000\000\001S\000\000\003\133\001\131\002\024\003\134\001\135\001b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001j\000\000\001Q\000\000\001Q\001S\000\000\001S\000\000\000\000\000\000\001W\001b\001`\001b\000\000\000\000\000\000\001B\000\000\000\000\000\000\000\000\000\000\001I\001Y\001v\000\000\001v\000\000\000\000\001W\001j\001W\000\000\000\000\001Z\000\000\001Z\004X\000\000\006\144\000\000\001Q\000\000\000\000\001S\000\000\000\000\000\000\001B\000\000\000\000\001b\000\000\000\000\001I\001Y\000\000\000\000\000\000\001`\000\000\000\000\000\000\000\000\001\131\000\000\001\131\001\135\000\000\001\135\001W\000\000\001v\000\000\000\000\000\000\000\000\001Q\001j\001`\001S\001`\001Z\000\000\000\000\006\239\000\000\001b\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001B\000\000\001j\000\000\001j\000\000\001I\001Y\001v\000\000\001W\000\000\000\000\000\000\000\000\000\000\001\131\000\000\001Z\001\135\001B\006\251\001B\000\000\001`\000\000\001I\001Y\001I\001Y\000\000\000\000\000\000\000\000\000\000\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\001Q\000\000\000\000\001S\001v\000\000\000\000\000\000\001`\001B\001b\000\000\000\000\001W\001Z\001I\001Y\007\021\000\000\000\000\001Q\000\000\000\000\001S\001v\000\000\001v\001j\000\000\001W\001b\000\000\000\000\000\000\001Z\000\000\001Z\007%\000\000\007\204\000\000\000\000\000\000\000\000\001\131\001B\000\000\001\135\000\000\001W\000\000\001I\001Y\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001`\001\131\001v\001\131\001\135\000\000\001\135\000\000\000\000\000\000\000\000\000\000\001Z\000\000\000\000\007\222\001`\000\000\001Q\001j\000\000\001S\000\000\000\000\000\000\000\000\000\000\000\000\001b\000\000\000\000\000\000\000\000\000\000\000\000\001j\001`\001B\001v\000\000\000\000\000\000\001\131\001I\001Y\001\135\000\000\001W\001Z\000\000\000\000\007\246\000\000\001B\000\000\001j\000\000\000\000\000\000\001I\001Y\000\000\000\000\000\000\000\000\001Q\000\000\000\000\001S\000\000\000\000\000\000\000\000\001B\000\000\001b\000\000\000\000\001\131\001I\001Y\001\135\001Q\000\000\000\000\001S\001Q\000\000\000\000\001S\000\000\000\000\001b\001v\001W\000\000\001b\001`\000\000\000\000\000\000\000\000\000\000\001Z\000\000\000\000\b\172\000\000\000\000\001v\000\000\001W\000\000\000\000\000\000\001W\001j\000\000\001Q\001Z\000\000\001S\b\187\000\000\000\000\000\000\000\000\000\000\001b\001v\000\000\000\000\000\000\001\131\001B\000\000\001\135\000\000\000\000\001Z\001I\001Y\b\210\000\000\001`\000\000\000\000\001W\000\000\001\131\000\000\000\000\001\135\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001`\000\000\001j\000\000\001`\000\000\000\000\000\000\001\131\000\000\000\000\001\135\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001j\001B\000\000\000\000\001j\000\000\000\000\001I\001Y\000\000\001v\000\000\000\000\000\000\000\000\000\000\000\000\001`\001B\000\000\001Z\000\000\001B\b\227\001I\001Y\000\000\000\000\001I\001Y\000\000\000\000\000\000\000\000\000\000\000\000\001j\000\000\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\001\135\001B\000\000\000\000\001v\000\000\000\000\001I\001Y\000\000\000\000\000\000\000\000\000\000\001Z\000\000\000\000\000\000\000\000\000\000\000\000\001v\000\000\000\000\000\000\001v\000\000\000\000\000\000\000\000\000\000\001Z\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\001\201\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001v\000\000\000\000\000\000\001\131\000\000\000\000\002y\001\131\000\000\001Z\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\001\131\000\000\000\000\005\230")) + ((16, "\002\028\001\147\000\188\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\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\000\187\003X\000)\001O\000g\000\030\000\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\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000K\000\000\000\000\000\000\000\000\000\000\0007\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\002\156\000\154\000\228\001\138\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\029\212\000\000\000\011\000\000\000\000\000\000\001\172\000\000\000\016\000\000\000\000\001\156\000\134\000\166\000\000\001\156<\254\002H\002^\000\158\000\000\000\000\000\000\002 \000\000\000\000\000\136\000\000\000\000\000\000\000\000\000\000\003D\000\000\000\230\000\000\003|\000\000\002v\003\202\000\000\001\250\000\000\000\000\000\000\000\000\000|\000\000\000\000\000\000\004T\000\000\003\004\004x\000\000\000x\001T\000\178\000\000\000\000\004z\004t\000\000\000\000\003X\000\000#h\029\212\000\000\003\198\000\000\004\234\000\000\000\000\000\000\000~@X\0050\n\204\004\012\000\000\029\212\003p\002\210\n\012\000\000\000\000\004\210\004\226\n\194\000\000\030\246\004\250\005H\005tZ~\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\020\005R\006\196\000\000\000\000\000\000\000\000\000\204\000\000\000\000\005\200\000\240\006\128\005\162\006>\006\192\002\188\005\194\002\222\002l\004z\bF\000\188\005\142\000D\007P\000\000\000\000\000\000\007\158\007\184\b,\003\128\003\228\b\252D\142\011\016\007\254\t\028\001\r\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\"\tp\011(\b\240\030\246#\162\011\222\000\000E\150\0124F\030FrF\186\000\000\000\197\000\000\000\000\000\000\000\000\t\006a\144\t$\000\000+\168\t<\000\000PD8\134\000R\000\000\000\000\005\190\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000Zz\b\192\000\000\000\000\000\000\000\000\000#\000\000\000\000\000\000\004\146\000\000\000\000\004T\000\196\000\000\000\000\000\000\016xU\250\000\000\000\000\006\004\003\190\000\000\000\000\000\000hh\bZXt\000\000\tX\000\000\000\000\n\000\000\000\006:\000\000\000\000h\218\000\000\007x\000\000\002^\000\000\000\000\r\210\000\000\0044\000\000\000\000\015\030\000\000\004T\b\166\004T\000\000\000\000\000\000\n\014\000\000\000\000\000\000\006j\000\000\000\000\nR\000\000\007\002\000\000\000\000\007x\000\000h\240\007x\000\000\007x\000\000h\250\007x\000\000\r(\000\000\000\000\017\028\000\000\000\000\029\184\000\000\000\000\018*\000\000\019|bj\000\000i|\007x\000\000#\168\000\000\000\000\021p\000\000\000\000*\224\000\000\000\000\021\202\000\000\021\246\000\000\000\000\000\000\000\000\000\000?`\000\000\n\020\011\142\000\000i\246\n2&\164\000\000\000\000\000\000\000\000\007x\000\000\000\000\000\000Z\132\000\000\000\000\000\000\000\000\000\000\000\000\000\143\011\224\000\000\000\000\000\000\007x\012\018[\138\011d\nL\023\190\000\000\006\146\000\000\000\000\000\000\007>\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002j\000\000\000\000\000\000\000\000\000\000\000\000\rr[\154\000\000\000\000\012>\nV\\V\000\000\000\000\000\000\\f\003\246\\\164\000\000\003\246\000\000]\\\003\246\000\000]p)^\012\234\012\244\000\000\000\000dV\000\000\000\000\000\000\000\000\000\000\000\000\003\246\000\000\000\000^\018\000\000\003\246d\144\000\000\007x\000\000\000\000^(\000\000\003\246\000P\000\000\000\000\003\246\003\246\000\000\000\000\003\246\000\000\000\000F\186\000\000\000\000\000\000\000\000\003\246GV\000\000\000\000\003\246\000\000\001\238\r\016\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\000dp\000\000i\254\007x\007x\012\150\000\000\000\000\000\000\000\000\000\000\000\000\000P\012\156\r4\012\166\012n\012z\012\132\n^\004\004\nd\003\214\r \000\000\000\000\002\164\006r\n\136\006\214\012\172\b\190\000\000\000X\001\192\tf\003\232\014\198\000\000\000\000q \000\000q(\014Z\000\000j\b\007xj \007x\000\000\002\240\002$\000\000\0126\000X\000\000\000\000\rv\000\000\000\000\000\000\000\000\000\000\016\128\000X\016\158\000X\000\000\007b\000\000\000\000\007h\000\000\000\000\000\000\014\234\000\000\000\000\000\000\000\000\000X\000\000\000\000\000X\000\000\012\172\004x\000\000\001\154\003\228\000\000\001\154\000\000\000\000\018 \000X\000\000\000\000\000\000\000\000\000\000\000\000\001\154\012\244%P%h\014\154\014,G\188^|\000\000\rj\n\146\r\004\rt\n\1684\220e\160\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004v\t\000\000\000\000\000\000\000\rv\n\186\005\184\001\154\019\030\000\000\000X\000\000\000\000\000\000\0124\000\000j\250\007x\r|\rx\n\212\014<\r|\n\222%\140H8\003\246\014L\r\132\n\254H\"\014|\000\000&&\003\246d\128\000\000k\012\007x\007xHt\014V\000\000\000\000\014`\000\000\000\000\000\000\000\000'\002\000\165\000\000\000\000\007D\000\000\000\000\000\000\b\222\000\000\000\000\000\000\000\000\000\000\003\202\000\000\000\000\003\246d\144\000\000k\"\007x\000\000I.\000\000\000\000e\150'@\003\246e\\\000\000k8\007x\000\000^\244\003\246\000\000\014\202\r\224\000\000\000\000\r\228\000\000\t:\000\000\000\000\000\000k\128\007x\000\000\000\000\000\000a\200\000\000\000\000\014\144\b\234\004T\000\000\014\158\014\030\011P'\182\000\000H\218\014`\011\\'\248\000\000I\230\000\000\000\000\014z\011f_2\003\246\015\"\015t\014\132\011ll\028\000\000\000\000\000\000lN\000\000\000\000(R\014\172\011t(\196\000\000(\160J2\014\178\011z(\220\000\000\026\166\000\000\000\000\016\030l\130\000\000\007xe\156\000\000\007xl\134\007x\000\000\000\000\000\000\000\000\000\000lj\000\000\000\000\000\000\004\014\015\132\000\000\000\000\000\000\000\000J<\014\182\011\138*@\000\000m \000\000\000\000\000\000\000\000\000\000\014\128\016D\000\000\000\000\002\208J\142\014\212\011\146*|\000\000\002\208J\244\014\220\011\166*\148\000\000\002\208\000\000ml\000\000KF\014\230\011\170+6\000\000\002\208\016\188\006F\016\204\000\000\000\000KP\0156\011\196+N\000\000\002\208LX\015b\011\200,D\000\000\002\208L\154\015t\011\216,\\\000\000\002\208L\246\015\164\011\220,\250\000\000\002\208M\000\015\212\011\244-\022\000\000\002\208M\\\015\228\012\006-h\000\000\002\208M\158\015\240\012(.\012\000\000\002\208N\004\015\244\0122.L\000\000\002\208N\166\016\012\012D/\002\000\000\002\208N\244\016\018\012R/\030\000\000\002\208OJ\016(\012f/p\000\000\002\208O\170\016,\012r/\184\000\000\002\208O\180\0162\012t0*\000\000\002\208P\n\016<\012v0\156\000\000\002\208P\192\016L\012\1480\222\000\000\002\208Q^\016Z\012\1641P\000\000\002\208Q\136\016\180\012\1701\146\000\000\002\208Q\214\016\198\012\2282\004\000\000\002\208Q\230\016\212\012\2482F\000\000\002\208RD\016\214\012\2522\184\000\000\002\208\r\016\017\218\017\"\018v\000\000e\156\000i\000\000m\132\007x\018\196\000\000\000\000m\162\007x\018\220\000\000\000\000\019H\000\000\000\000\007P\000\000\000\000\019\128\000\000\000\000\000\000\000\000m\196\007x\019\236\000\000\016\176\020\142\000\000_\172\000\000\003\246_\234\000\000\003\246`(\000\000\003\246\b$\000\000\000\000\000\000\000\000\000\000`d\003\246\b\226\020\242e\234\000\000n\016\007x\0216\000\000\000\000\021\150\000\000\000\000\000\000\t\180\n\138\000\000\000\000\000\000\002\208\021\174\000\000\000\000\000\000\022:\000\000\000\000\000\000\000\000\000\0003(\000\000\000\000\000\000\002\20832\000\0003\154\000\000\000\000\000\00046\000\000\000\000\000\000\000\000n\222\000\000\000\0004\210\000\000\000\000\000\000R\166\016\240\r 5\024\000\000\002\2085:\000\000\000\000\000\000S|\017\n\r(6H\000\000\002\2086\176\000\000\000\000\000\000S\140\017\020\r06\236\000\000\002\208\006&\022\154\000\000\000\000S\222\017\024\rd7\004\000\000\002\208\023\\\000\000\000\000S\238\017\028\rj7\190\000\000\002\208\023\224\000\000\000\000TD\017*\rn8&\000\000\002\208\000\000\000\0007j\000\000\000\000TN\017<\r\1588\220\000\000\002\2089$\000\000\000\000U\138\017h\r\1709\150\000\000\002\2089\222\000\000\000\000U\148\017x\r\178:\186\000\000\002\208\000\000U\234\017z\r\204:\252\000\000\002\208\000\000%\212\000\000\000\000\002\208\000\000\000\000\000\000:\196\000\000\000\000;b\000\000\000\000\000\000\017\150\000\000\000\000\0242\000\000\024B\000\000\000\000\002\208\000\000\000\000\025\002\000\000\025z\000\000\000\000\000\000\000\000\000\000U\244\017\158\r\220;\216\000\000VJ\017\160\r\236\162\000\000\002\208X\172\018*\014t>\226\0186X\196\018F\014\134?\152\000\000\002\208\002\208Yf\018J\014\140?\180\000\000\002\208\000\000\000\000\000\000\0184\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\170\0184\000\000@\002\018\\\014\152@\186\005\238\0184\000\000\000\000\000\000\000\000\000\000\007X\0184\000\000@~\000\000\018^\014\156A\156\b8\0184\000\000\000\000\000\000\000\000\t$\0184\000\000\019\186\000\000\000\000\000\000aJ\000\000\003\138\000\000\011B\019h\000\000\007\b\000\000\000\000\000\000\000\000\000\000\000\000\004v\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\018\170\014\162A\238\000\000\002\208\000\000\019\246\000\000\000\000\000\000\000\000\000\000\018\190\014\192BV\b\176\0184\000\000\000\000\000\000\000\000\t2\0184\000\000\018\204\014\198B\146\t\"\0184\000\000\000\000\000\000\000\000\000\000\t<\0184\000\000\000\000\014\202\006J\001\154\026J\000\000\018\216\014\210\019\130\005\200\006\174\001\154\021b\000X\006\218\001\154\000\000\027 \000\000\t\248\000\000\018\244\014\226\t\166\000\000\000\000\000\000\000\000\000\000\019$\004\168\001H\000\000\000\000\000\000\000\000f\006\000\000q`\000\000\014\228\000\000\014\240\000\000\000\000\000\000\000\000\002z\000\000\000\000\011\218\004T\000\000\r\180\014\224\004T\004T\000\000\004T\001\\\n\204\0192\000\000\000\000\004\226\000\000\017\250\004T\004T\000\000\0182\004T\004T\014\242\000\000\0270\000\000\000\000\015\020\020&\000\000\028<\011\174\000\000\000\000\000\000\000\000\019\240\000\000\000\000\000\000\000\000\019&\015\024B\170\000\000\002\208\000\000\019(\015 Cd\n\144\0184\000\000\000\000\000\000\000\000\000\000\t\136\0184\000\000\000\000\0190\0154\007\212\001\154\000\000\021\240\000\000\000X\000\000\020\166\000\000\000\000\000\000\000\000\000\000C\204\000\000\000\000\019D\015DD@\000\000\000\000\000\000\022\180\000\000\000X\000\000\023\"\000\000\000X\000\000\025\248\000X\000\000\002\208\000\000\000\000\0286\000\000\000X\000\000\031\152\000\000\000X\000\000\031\188\000X\000\000\002\188\000\000\015F\b\212\004V\000\000\019H\019L\015T\019v\020\030\031\198\000X\011\192\000\000\015d\019\238\019\240\n\174\012\240\019\198\015h\020\016\n\180\r\148\019\218\000\000\000\000\011\014\r\224\000\000\007\204\003>aZ\003\246\027\240\000\000\t>\000\250\000\000\000\000\019\148\015~\012t\000\0007\006\000\000nj\007x\000\000\020F\020J\000\000\014(\000\000\007x\019\158\015\134\011`\019\198\000\242\000\000\000\000\000\000\000\000\015\148\014>\000\000\015\182\014F\000\000\b^0\n\019\174\019\176\015\186\011x\014\148\000\000\015\234\012N\014\212\000\000\019\196\019\198\015\238\019\236\020\030 \004\000X\000\000\015\250\020Z\000\000\012f\000\000\015\128\000\000\020\\\000\000!\148\002\182\020(\016\012\020`\000\000!\178\003\170\020,\000\000\000\000\012n\003\004\016&\000\000\"\196\000X\016.\000\000\014l\000\000\019\212\016\026\012\028\019\198\019\218\019\220\0168\021h\000\000\019\238\000-\000\000\000\000\000\000\011\138\000\000\000\000\000\000\000\219\016:\019\192n\198\007x\000\000\001\128\016<\020\142\000\000\000\000\000\000\000\000\000\000\000\000o\n\007x\000\000\016>\020\244\000\000\000\000\000\000\000\000\000\000\000\000B\172\016\168\000\000\016d\001\n\000\000\016j\016r\n\196\000\000\004\194K\016\000\000\005~\000\000o4\007x\007x\000\000\000\000\tR\000\000\n\254\000\000\005\018\tR\tR\000\000\016xf\150\007xo\\\007x\016\246\000\000\000\000\000\000\000\000\017\018\000\000\000\000\001\244\000\000\n6\020H\016\130\021z\020\004\000\000\000\000\005N\nf\020V\000\000\000\000\016\174\021\148\020\026\000\000\000\000\b\172\000\000\025\250\000\000\014R\0062\007x\000\000\024N\026\162\000\000\027Z\000\000\000\000\000\000\tR\000\000\000\000\017<\020f\016\190\021\156\020(\000\000\000\000\028\146\017d\020v\000\000\000\000\000\0009\018\000\000\000\000\000\000\000\000\000\000\000\000\000\000\017f\000\000\020$\016\212#\206\n\188\000\000\020\132\016\216\nH\000\000\b\b\021\148\021:\017h\020\152\000\000\000\000\000\000\020\158\017\006\n\158\000\000\n\138\000\000\028\1428\134\004\214\000\000\000\000\000\000\012f\020Z\017\028\000\000\020^\012f\000\000\021T\017\128\020\170\000\000\000\000\000\000\007x\000y\000z\007D\000\000\000\000\000\000\000\000\020f\017J\000\000\007\206\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\007x\020R\017\128\021\218\020b\000\000\007\220'\002\000\249\017\130\0202\000\249\000\160\017\136\020\250\000\000\000\000\021\208\029\004\000\000\000\000\029\160\000\000\017\206\000\000\001\252\000\000\000\000\000\000\000\000\000\000\000\000o\160\007x\000\000\021\210\030$\000\000\000\000\030<\000\000\000\199\017\144\021n\000\000\000\000D\132b\146\007\252\000\000o\252\007x\030\162\000\000\000\000\031>\000\000\000\000\017\208\000\000\012\160\000\000\000\000\000\000\000\000\000\000\000\000c\\\000\000\000\000D\218cd\bh\000\000p\006\007x\031\218\000\000\000\000 @\000\000\000\000\017\156 X\017\234\000\000\017\168\017\176\000\229\006*\017\184\012\024\017\230\021x!j\018 \000\000\018\n\018\028\012\144\000\000\t\160f\178\000\000\007\180\000\000\018\030\"\254B8\017\242\0206\019d\000\000 \226%\212\000\000\005>\000\000\000\000\005>\000\000\000\000\005>\012\184\000\000\025\028\005>\021|!\128\018<\000\000\005>\000\000\000\000>\158\000\000\000\000\000\000\005>\000\000\000\000\018\142\000\000\026\206\t\220\018\220\000\000\0182f\220\018\224\000\000\000\000\000\000\000\000\018\244\000\000\000\000\006\200\000\000\005>Ap\000\000!\030\005>b\006\000\000\018\254\020\202\018t\022\004\020\140\000\000bP\0194\020\214\000\000\000\000\000\000\001f\012n\000\000\000\000\000\000\000\000\000\000\000\000\014\128\019B\000\000\020\134\018\178\nt\005\006\000\000\020\232\000\000\000\000\000\000\000\000\019\140\t\012\000\000\000\000\000\000\014\128\000\000\000\000\000\000\000\000\019\1424 \000\000\000\000\000\000\000\000\000\000\000\000\021\146\007\002\012|\020Z\005\222\018\188\000\000\b\028\000\000\000\000\000\000\000\000\000\000\000\000\000\000\020f\007\236\018\212\000\000\t\128\015 \021\254\021\168\019\148\000\000\000\000\021\158\b\012\t\018\000\000\000\000\000\000\000\000\001\154\000X\000\000\000\000\003\246\000\000p&\007x\000\000\t\214\000\000\000\000\000\000\000\000E\166\000\000\000\000\000\000\000\000\000\000\000\000p\152\007x\000\000,\168\000\000\000\000!0\000\000\000\000gh\019\n\000\000\019\014\n\172\000\000\000\000\004T\011R\000\000\000\000\000\000\000\000\000\000q\000\007x\000\000F\206\000\000\000\000\"\144\000\000\000\000M\180\000\000\000\000#\138\000\000#\248cn\000\000q\024\007x\000\000\\\184\000\000\000\000$\242\000\000\000\000]\198\000\000\000\000&\146\000\000\007\222\000\000\000\000\000\000\007x\000\000\000\000!\188\021\178\019\152\000\000\000\000\021\166\001\024\005z\000\000\000\000\000\000\000\000\t\212\016(\021\254!\218\021\182\019\178\000\000\000\000\021\170\0040\t\020\000\000\000\000\000\000\000\000\000X\000\000\019\200\000\000\000\000\000\000\"\212\000\000#P\000\000\000\000\000\000\000\000\000\000\006\150\000\000\000\000\000\000\002\220\000\027\000\000\000\000\000\000\000\000\000\000\007\164\000\027\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\156\000\000\000\000\000\000g:\000\000\007x\000\000\n\002\000\000\000\000\000\000\0058\000\000\000\000\000\000\004\238\000\000\000\000\000\000\003V\000\000\001\154\000\000\000\139\000\000\000X\000\000\007\030\000\000\000\000\000\000Y\226\003\246\000\000\000\000\000\029\000\000\000\000\000\000\000\000\004v\003\244\020\206\000\n\000\000\000\000\000\000\000\000\000\000\000\000\020\208\003\176\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\nx\000\000\019\232\000\000\000\000\000\000\000\000\005\022\006\196O\028g\204\000\000\000\000\020\020h`\000\000\000\000\000\000\020 hb\000\000\000\000\000\000\000\000"), (16, "\b\\\002\198\001\217\002\199\002\200\001\239\000\182\002\201\006\228\t[\002\200\001\239\001\027\000<\001Q\001\031\001 \001U\003\\\b]\bq\007\139\001\027\b_\001V\001\031\001 \003a\tg\002\200\001\239\tO\001\027\b`\br\001\031\001 \bB\001B\000r\001\239\003{\006\229\001W\001I\001L\003\n\000@\001\027\003\011\003\r\001\031\0013\b\025\b\\\002\198\007\229\002\199\002\200\001\239\0014\002\201\001\220\b\025\002,\001\239\ba\bE\002p\007\231\bu\tP\003\\\b]\bq\t\024\003\n\b_\002\136\004%\003\r\003a\002\140\t]\001I\0017\bG\b`\br\b\027\000\164\b\251\000\176\001`\001Q\003{\000\164\b\217\000\176\b\027\002U\001!\007\194\0051\007\023\bb\b\028\000\182\t\003\002\129\000n\b\030\001\187\003\129\bH\bJ\b\028\000A\007\024\bc\ba\b\030\0070\001W\bu\b5\002\204\002\141\003\131\001\031\001B\004a\t^\000\177\003\131\001\031\001I\001Y\0008\007\146\007\147\000\169\007\139\bv\002\142\b\\\002\198\000\169\002\199\002\200\001\239\th\002\201\003\131\001\031\002X\000]\007\163\bw\bb\005T\007\156\006\012\003\\\b]\bq\000a\003\129\b_\002]\000\180\bf\003a\bc\bh\000\169\000\181\bm\b`\br\002\204\004a\003\131\001\031\003\138\000\136\003{\003\139\001B\000\169\bo\000\138\b\223\003\132\001I\001L\001Z\bv\000\142\b\\\003\153\000e\002\024\003\134\000\138\001Q\000y\001B\bp\006\186\001B\ba\bw\001I\001Y\bu\001I\001Y\b]\b\254\002p\t\022\b_\t\018\006\022\bf\001\131\003\155\bh\002\167\002\136\bm\b`\0008\002\140\000\146\001I\005\243\003\138\002p\002\153\003\139\b\166\000x\bo\001B\005\254\003\132\007\196\002\136\bb\001I\001L\002\140\003\153\001I\002\024\003\134\003\129\b\130\007\146\007\147\bp\b\165\bc\ba\002\180\006\158\001M\001\031\001\031\002\204\007\201\003\131\001\031\b\128\001Z\000\191\007\155\002\141\001B\003\155\007\156\006\012\002\135\000\192\001I\001L\bv\000\193\b\\\002\198\002\154\002\199\002\200\001\239\002\142\002\201\002\141\005\225\000\182\000\188\002\129\bw\bb\000\168\001\131\000\169\003\\\b]\t\029\000\138\t7\b_\002\178\002\142\bf\003a\bc\bh\000\169\001B\bm\b`\br\001]\000w\001I\001Y\003\138\001\237\003{\003\139\002\181\001Q\bo\000;\001z\003\132\t\001\t\002\006\161\bd\002\024\001{\003\153\007\023\002\024\003\134\005\236\005\238\005\240\006\158\bp\007(\001\031\ba\be\001\248\007y\007\024\007\156\006\012\001W\007\031\001Q\bx\005/\001S\000\128\bf\002\157\003\155\bh\000\149\001b\bm\001I\000\182\b\151\002\129\b\\\002\198\007+\002\199\002\200\001\239\001Z\002\201\bo\007\205\t(\006\004\001\027\001W\bb\001\031\0013\b\131\003\\\b]\bq\007-\003\129\b_\002C\006\142\bp\003a\bc\000\140\002\132\007/\001`\b`\br\002\204\006\007\003\131\001\031\000\145\002\136\003{\t\020\007.\002\140\t8\001I\002\024\001\006\0017\000:\001|\bv\004a\b\\\002\198\004a\002\199\002\200\001\239\007+\002\201\000\175\001`\002\179\000\169\ba\bw\000\138\001B\b\183\005\225\003\\\b]\bq\001I\001Y\b_\002\178\007-\bf\003a\001j\bh\t\031\0051\bm\b`\br\002\141\000\152\0008\t)\003\138\002p\003{\003\139\002\163\005V\bo\001B\007.\003\132\0008\002\136\bb\001I\001Y\002\140\003\153\001I\002\024\003\134\003\129\to\002\200\001\239\bp\007y\bc\ba\005\239\005\238\005\240\bz\000\151\002\204\005\132\003\131\001\031\000\172\006\198\t*\001B\006a\001Z\003\155\t1\001I\001I\001Y\002\147\005U\bv\001\031\b\\\002\198\tK\002\199\002\200\001\239\006\209\002\201\002\141\001\031\002\167\001v\000\169\bw\bb\tr\ts\000\169\003\\\tu\001\131\001Z\003\129\b_\006\151\002\142\bf\003a\bc\bh\004a\002\167\bm\b`\tw\002\204\t2\003\131\001\031\003\138\002\165\003{\003\139\001Q\tL\bo\001\127\002\180\003\132\005M\001\031\001\131\bv\001\128\001\135\003\153\000\186\002\024\003\134\001^\000\166\002\135\t3\bp\002\179\006`\ba\bw\002\180\005\145\001\239\001\031\001W\001\027\003\152\001Q\001\031\0013\001S\001\007\bf\002\167\003\155\bh\t4\001b\bm\003\015\000\170\t\r\001Q\003\r\tp\003\138\003\131\001\031\003\139\002\167\000\198\bo\001B\001Q\003\132\005Y\001W\bb\001I\001L\006\204\003\153\005\133\002\024\003\134\003\129\002\181\002\171\004a\bp\002\180\bc\001\027\001\031\001`\001\031\0013\007\139\002\204\000\173\003\131\001\031\001Q\002\182\000\169\005\243\002\180\002\181\003\155\001\031\002\178\004n\tz\001\129\001\031\0013\000>\b\\\002\198\005_\002\199\002\200\001\239\t\134\002\201\000\203\001`\002\167\000\216\002u\bw\001B\000\169\t~\005\243\003\\\t\127\001I\001Y\002\159\b_\001Q\b\246\bf\003a\001j\bh\001B\004\127\bm\b`\t\135\001f\001I\001Y\002\135\003\138\002\181\003{\003\139\000\213\002\168\bo\001B\002\180\003\132\006e\001\031\000\184\001I\001Y\000\169\003\153\002\181\002\024\003\134\004a\005S\001B\tG\bp\t\001\t\002\ba\001I\001Y\000\187\b\\\002\198\001B\002\199\002\200\001\239\002\011\002\201\001I\001Y\001Z\002\178\003\155\005\225\0008\001B\007\156\006\012\003\\\b]\b\162\001I\001L\b_\000\182\001\004\002\129\003a\007\146\007\147\tC\001B\001v\b`\br\bb\tH\001I\001Y\001\031\001\131\003{\001Z\003\129\002\181\007\148\007\164\004a\b8\bc\007\156\006\012\000\222\000\169\002\179\001B\002\204\001Z\003\131\001\031\001g\001I\001L\007\132\005\238\005\240\ba\bl\001Z\t\139\001B\000\169\001\131\005\248\tD\001\135\001I\001Y\000\205\b\206\001I\007\023\005Y\001Q\000\138\001B\001S\001[\bw\001\206\000\221\001I\001L\001b\005f\007\024\003\152\001Z\005\249\007\025\002\167\bf\006\000\000\227\bh\bb\0008\bm\000\244\001B\000\226\001\208\001W\003\129\003\138\001I\001L\003\139\007\017\bc\bo\007\023\007_\003\132\000\169\b\255\002\204\006\003\003\131\001\031\003\153\001\229\002\024\003\134\002\213\007\024\001Z\002\180\bp\007\030\001\031\001E\002\179\bv\005\207\b\\\002\198\001I\002\199\002\200\001\239\007\023\002\201\007`\t!\007a\006\158\003\155\bw\001\031\t\000\t~\001`\003\\\t\127\007\024\b\202\000\253\b_\0078\b \bf\003a\002\167\bh\000\169\001B\bm\b`\t\130\000\169\001j\001I\001Y\003\138\001\195\003{\003\139\007b\007\019\bo\b\174\004\189\003\132\001\027\001\031\0013\001\031\001 \001B\003\153\005\210\002\024\003\134\002\181\001I\001Y\005\194\bp\002n\002\180\ba\001\n\001\031\005\137\b\\\002\198\001\233\002\199\002\200\001\239\002p\002\201\002\167\002\160\b\025\007c\003\155\0044\004\218\b\137\002\136\002\024\003\\\b]\002\140\b\139\001I\b_\000\169\007d\007e\003a\007f\005Y\002\167\001s\001B\b`\b|\bb\000\243\000\138\001I\001Y\001v\003{\005\202\003\129\000\255\002\180\b\027\t/\001\031\bc\001Z\007\170\000\247\007G\tS\001\142\002\204\001\001\003\131\001\031\005m\000\138\002\181\b\028\005\206\002\141\ba\002\180\b\030\t\133\001\031\001\237\b.\bI\001\238\001\239\001\002\001\240\007h\t#\001\131\007j\002\142\001\135\007o\007{\0008\004a\bw\003\163\001\027\0045\tT\001\031\0013\001\241\0032\007\166\001\243\001\244\001\249\bf\002\136\bE\bh\bb\002\140\bm\001I\005\225\004M\001\239\002\181\003\129\003\138\007\167\000\169\003\139\001B\bc\bo\002\159\bG\003\132\001I\001Y\002\204\005\133\003\131\001\031\003\153\001\147\002\024\003\134\002\181\007_\002\149\000\138\bp\002\152\b\143\b\144\001I\b\127\001Q\001I\001Q\001\153\000\169\001S\bH\002\141\b\145\b\146\b\160\002\167\001b\003\155\bw\007\152\005\238\005\240\b\147\006\012\003\004\006\252\007`\007\169\007a\004a\000\138\bf\005u\001W\bh\001W\001\027\bm\005\225\001\031\001 \001\b\001Q\001\250\003\138\001Q\005\225\003\139\007H\0062\bo\007t\002\180\003\132\003\n\001\031\001\251\007\220\003\r\001\031\003\153\007b\002\024\003\134\006\158\004T\001\239\001\031\bp\002\198\005Y\002\199\002\200\001\239\001W\002\201\001Q\002\198\t0\002\199\002\200\001\239\b\\\002\201\003\152\001`\003\\\003\155\007\160\005\238\005\240\bO\005\170\006b\003\\\003a\b\241\005\238\005\240\007c\001\134\b]\0068\003a\001j\b_\001\017\b\140\003\n\003{\005 \007\244\003\r\007d\007e\b`\007f\003{\001\018\002\181\001B\007y\001B\002\014\007J\b\020\001I\001Y\001I\001Y\002\023\0008\002\024\b\143\b\144\000\182\002t\002\129\b\149\007\170\002\024\001\024\b\141\002\167\006\128\b\145\b\146\bQ\ba\005\182\005{\b\157\004a\004a\b\142\b\147\006\012\005\176\001B\001%\002p\001B\005\189\002q\001I\001Y\007h\001I\007M\007j\002\136\000n\007o\007{\002\140\001\222\001I\006d\001v\000n\002\180\003\129\005Y\001\031\004a\007\166\001Z\bb\001Z\003\129\000\169\007\171\001B\t\n\002\204\001;\003\131\001\031\001I\001Y\006,\bc\002\204\007\167\003\131\001\031\002\198\001>\002\199\002\200\001\239\002\198\002\201\002\199\002\200\001\239\001\131\002\201\001\131\002\141\001P\001\135\001\021\003\\\001Z\bt\003\135\007N\003\\\003\b\b\161\t\014\003a\004a\003\135\000\138\002\142\003a\001\025\t?\be\007\024\005Y\007S\b\182\007P\003{\002\181\000\182\007r\002\129\003{\003\138\bf\001\133\003\139\bh\001\131\001Z\bm\003\138\003\132\007 \003\139\b\\\b\141\t\000\001B\003\153\003\132\002\024\003\134\bo\001I\001Y\003+\003\153\b\142\002\024\003\134\001&\000\138\001\027\tu\b<\001\031\001 \b_\0038\tA\bp\000\182\007~\002\129\000\169\003\155\001n\b`\004a\005Y\005Y\001Q\002\198\003\155\002\199\002\200\001\239\005Y\002\201\001B\000\169\004c\005Y\b\025\003\152\001I\001Y\001Q\003\129\003\\\001S\003\152\004a\003\129\b\175\005\211\003\152\001b\003a\006\134\ba\002\204\006%\003\131\001\031\b\178\002\204\007\026\003\131\001\031\004a\002\198\003{\002\199\002\200\001\239\001W\002\201\001c\b\027\005Y\002\167\000\169\002\198\bE\002\199\002\200\001\239\003\\\002\201\005\220\006\012\001\204\003\135\003\152\004a\b\028\003a\003\135\bb\003\\\b\030\007\128\bG\006@\b%\0071\001\202\0044\003a\001q\003{\005\210\bc\001Q\bk\006=\001\138\002\180\003\138\001\226\001\031\003\139\003{\003\138\002\002\001`\003\139\003\132\002d\0079\bH\002f\003\132\tv\003\153\b \002\024\003\134\000\182\003\153\006\232\002\024\003\134\003\129\001j\006s\001B\004b\006x\002m\001\145\be\001I\001Y\002\193\b\201\002\204\007\014\003\131\001\031\001\031\003\155\001B\000\169\bf\002\196\003\155\bh\001I\001Y\bm\007y\007n\002\198\002\212\002\199\002\200\001\239\000\169\002\201\007\026\001Q\003\129\bo\002\181\005\134\007\028\002\227\003\135\001\031\003\\\000\169\002\230\006}\003\129\002\204\000\169\003\131\001\031\003a\000\169\bp\005\210\000\169\007\026\005\210\006 \002\204\002\236\003\131\001\031\005Y\001Z\003{\003\138\004a\001\237\003\139\001v\002L\001\239\000\169\001\240\003\132\004a\0008\000\169\003\135\001Z\001B\003\153\001\149\002\024\003\134\001\198\001I\001Y\000\169\b\204\003\135\001\241\002\221\b\202\001\243\001\244\001\249\000\169\002\135\006\173\003=\005\210\006\140\001\239\003\138\001I\003B\003\139\003\155\001\131\000\169\003I\001\135\003\132\003O\000\169\003\138\007\236\003Y\003\139\003\153\003_\002\024\003\134\002\198\003\132\002\199\002\200\001\239\003\127\002\201\000\169\003\153\003\143\002\024\003\134\003\129\001\219\005\022\004O\004P\003\\\002>\003\149\006\018\003\158\001Z\003\155\001B\002\204\003a\003\131\001\031\006n\001I\001Y\001\225\006\019\003\169\003\155\003\175\006\155\006\012\002\198\003{\002\199\002\200\001\239\003\181\002\201\003\187\002\198\000\169\002\199\002\200\001\239\b\202\002\201\000\169\002\012\003\\\003\135\003\193\000\169\002p\007\240\000\169\002\134\003\\\003a\000\169\003\199\001\251\000\169\002\136\001\031\005\191\003a\002\140\001Q\001I\000\169\001\160\003{\005\148\000\169\006\177\003\138\003\205\001\161\003\139\003{\001I\003\211\001Z\000\169\003\132\000\169\006\192\006\213\005\025\005\030\003\217\003\153\001I\002\024\003\134\004a\001W\003\223\000\169\002\198\000\169\002\199\002\200\001\239\003\129\002\201\b\015\003\229\000\169\001\031\000\169\002\141\005\242\003\235\003\241\003\247\003\\\002\204\003\155\003\131\001\031\002<\000\169\006\220\006\012\003a\b'\002\014\002\142\001\031\003\253\000\169\005\021\002\001\002\015\002\020\002\024\001Q\004\003\003{\002\019\004\t\b\007\003\129\002B\006\215\001`\002V\000\169\003\135\002^\003\129\001Q\000\169\006\020\001}\002\204\006\r\003\131\001\031\007\136\006\012\000\169\005\192\002\204\001\162\003\131\001\031\002c\000\169\004\015\b\135\006\012\006t\002i\003\138\002\158\004a\003\139\000\169\004\021\001W\004\027\001B\003\132\000\169\000\169\000\169\003\135\001I\001Y\003\153\004\031\002\024\003\134\002\198\003\135\002\199\002\200\001\239\004\138\002\201\000\169\002\198\004\148\002\199\002\200\001\239\004\158\002\201\000\169\003\129\003\\\000\169\003\138\004a\001Q\003\139\003\155\007H\003\\\003a\003\138\003\132\002\204\003\139\003\131\001\031\005\002\003a\003\153\003\132\002\024\003\134\004\168\003{\004\250\004\177\003\153\004\186\002\024\003\134\000\169\003{\002\198\001W\002\199\002\200\001\239\001Z\002\201\004a\000\169\001B\000\169\006y\003\135\003\155\002z\001I\001Y\003\\\004a\004\197\000\169\003\155\004a\002|\001B\004\206\003a\002\139\000\169\004\215\001I\001Y\000\169\002\156\005\163\001\131\000\169\005\159\003\138\002\192\003{\003\139\004\222\001Q\002\195\002\211\002\226\003\132\002\229\006~\005\006\007J\002\235\002\254\003\153\002\248\002\024\003\134\005\011\005\018\002\251\004a\000\169\003\129\005&\000\169\002\198\000\169\002\199\002\200\001\239\003\129\002\201\003-\001Q\001Z\002\204\001\130\003\131\001\031\003&\003\155\003)\003\\\002\204\006\150\003\131\001\031\001B\0039\001Z\000\169\003a\004a\001I\007M\006\163\000\169\006\216\004\240\006\166\000\169\005+\001W\0057\005\247\003{\002\198\003\135\002\199\002\200\001\239\003\129\002\201\000\169\002\198\003\135\002\199\002\200\001\239\001\131\002\201\000\169\005>\003\\\002\204\005D\003\131\001\031\003<\000\169\000\169\003\\\003a\003\138\005I\000\169\003\139\005P\006\174\004\239\003a\003\138\003\132\005d\003\139\005s\003{\003x\005\156\003\153\003\132\002\024\003\134\007N\003{\006\215\003\135\003\153\001B\002\024\003\134\003A\b\153\005\168\001I\001Y\005\180\007\024\005\193\007R\006\178\007P\005\199\000\169\003H\000\169\003\155\003\129\004a\003N\005\214\005\232\0047\001\131\003\155\003\139\004\249\005\234\006\t\001B\002\204\003\132\003\131\001\031\000\169\001I\001Y\000\169\003\153\003X\002\024\003\134\003^\003m\003~\006\014\000\169\006\029\004d\000\169\002\198\006#\002\199\002\200\001\239\000\169\002\201\000\169\003\129\003\142\000\169\0061\003\135\003\148\001Z\003\155\003\129\003\\\003\157\006C\006c\002\204\007y\003\131\001\031\000\169\003a\006i\000\169\002\204\000\169\003\131\001\031\003\137\000\169\006p\001Q\006v\003\138\001\164\003{\003\139\000\169\000\169\005\246\001Z\006\193\003\132\006\139\000\169\000\169\004a\006\154\003\135\003\153\004a\002\024\003\134\003\168\006\162\002\198\003\135\002\199\002\200\001\239\001W\002\201\000\169\002\198\000\169\002\199\002\200\001\239\000\169\002\201\001\131\006\165\003\\\006\172\003\138\003\174\003\155\003\139\000\169\t\005\003\\\003a\003\138\003\132\003\180\003\139\000\169\000\169\003\165\003a\003\153\003\132\002\024\003\134\000\169\003{\003\164\006\176\003\153\006\182\002\024\003\134\000\169\003{\000\169\006\188\001\237\003\129\003\186\001\238\001\239\004a\001\240\001Q\006\200\000\169\001\163\003\155\004/\000\169\002\204\006\219\003\131\001\031\006\210\003\155\000\169\0042\006\214\001\170\001\241\0032\003\192\001\243\001\244\001\249\006\224\006\237\006\243\006\254\003\198\002p\001W\000\169\002\144\000\169\003\204\001B\003\210\007y\004a\002\136\003\135\001I\001Y\002\140\002p\001I\007\t\002\146\003\216\007\027\0033\003\222\004a\007\r\002\136\003\129\007\"\000\169\002\140\000\169\001I\0073\003\228\003\129\003\234\000\169\003\138\003\240\002\204\003\139\003\131\001\031\003\246\004a\000\169\003\132\002\204\007\007\003\131\001\031\003\252\000\169\003\153\007=\002\024\003\134\001\237\004\002\002\141\004 \001\239\007V\001\240\004a\004a\004a\000\169\000\169\000\169\000\169\003\135\001Z\007l\002\141\007q\002\142\001\250\004a\003\135\003\155\004:\002\003\001Q\001\243\001\244\001\249\007'\001B\000\169\001\251\002\142\000\169\001\031\001I\001Y\000\169\003\138\007}\000\169\003\139\007,\001\131\004\b\000\169\003\138\003\132\001Q\003\139\007\138\001\169\001Q\004\014\003\153\003\132\002\024\003\134\004a\004a\004\020\004\026\003\153\007T\002\024\003\134\0034\000\169\004N\004?\004O\004P\004a\007\158\004\137\000\169\002\198\001W\002\199\002\200\001\239\003\155\002\201\007\\\007i\007w\000\169\004\147\000\169\003\155\0043\0049\004\157\003\\\004\167\001Z\004\176\007\144\002\014\004a\007\174\007\181\003a\004\185\007\185\002\023\004S\002\024\007\214\004\"\002\012\000\169\004\196\004a\007\254\002\198\003{\002\199\002\200\001\239\b:\002\201\000\169\001\251\b\003\001\131\001\031\002\198\b*\002\199\002\200\001\239\003\\\002\201\004\205\001\027\007\195\007\230\001\031\001 \001B\003a\004\214\004\221\003\\\000\169\001I\001Y\004)\002p\b\000\b\b\002\175\003a\004a\003{\004_\004`\004\243\002\136\004.\005\005\005\n\002\140\001B\001I\b\025\003{\001B\b&\001I\001Y\000\169\000\169\001I\001Y\000\169\b\011\b\014\b\022\000\169\002\198\005\017\002\199\002\200\001\239\000\169\002\201\003\129\b?\002\014\b-\000\169\004a\005%\004a\000\169\002\015\003\\\002\024\000\169\002\204\b\027\003\131\001\031\004a\001Z\003a\002\141\002\198\004a\002\199\002\200\001\239\0041\002\201\005*\001Q\0056\b\028\001\181\003{\bT\000\169\b\030\002\142\003\\\003\129\b\"\005=\001Z\005C\b9\003\135\001Z\003a\006\002\004a\005F\003\129\002\204\000\169\003\131\001\031\004a\005H\001W\005O\005X\003{\000\169\000\169\002\204\bj\003\131\001\031\005c\005r\b\138\003\138\001\131\000\169\003\139\002\198\006\006\002\199\002\200\001\239\003\132\002\201\b\150\b=\003\135\bA\005~\003\153\002p\002\024\003\134\002\216\003\\\004a\004a\bF\003\135\004a\002\136\004a\bR\003a\002\140\005\135\001I\003\129\000\169\005\155\004>\b\197\003\138\b\199\004a\003\139\003\155\003{\005\161\005\167\002\204\003\132\003\131\001\031\003\138\004a\005\179\003\139\003\153\bY\002\024\003\134\005\198\003\132\001\027\003\129\bg\001\031\001 \000\169\003\153\004a\002\024\003\134\000\169\005\200\005\213\001B\002\204\002\141\003\131\001\031\003\135\001I\001Y\003\155\000\169\006\b\002\198\005\253\002\199\002\200\001\239\004a\002\201\b\025\002\142\003\155\006\016\004a\006\023\006\028\006\"\bs\b}\003\\\0060\b\156\003\138\b\250\003\135\003\139\006;\000\169\003a\000\169\006B\003\132\006o\003\129\006h\004A\t\t\006j\003\153\006m\002\024\003\134\003{\006|\006r\b\027\002\204\t\021\003\131\001\031\0047\006{\001\237\003\139\0048\001\238\001\239\001Z\001\240\003\132\006w\006z\b\028\tx\004[\003\155\003\153\b\030\002\024\003\134\006\138\b\031\006\149\004^\006\148\006\153\001\241\0032\003\135\001\243\001\244\001\249\006\164\006\175\006\171\t\131\002\198\001\131\002\199\002\200\001\239\t\136\002\201\003\155\006\187\006\181\006\183\006\207\006\195\006\206\006\201\006\205\006\218\003\\\003\138\007<\006\223\003\139\0033\006\226\006\233\006\241\003a\003\132\003\129\006\248\007\003\007;\0074\004Z\003\153\0075\002\024\003\134\007:\001Q\003{\002\204\001\180\003\131\001\031\007>\007?\007^\002\198\007W\002\199\002\200\001\239\007X\002\201\007]\007k\007z\007u\007v\002\198\003\155\002\199\002\200\001\239\003\\\002\201\007x\001W\007\165\007\137\007\141\007\143\003\135\003a\007\145\007\157\003\\\001\250\007\173\007\175\004]\007\176\007\182\001Q\007\187\003a\001\186\003{\007\191\007\209\001\251\007\216\004g\001\031\b\t\b!\b+\b[\003\138\003{\bU\003\139\bV\bZ\bi\001Q\bn\003\132\001\188\b\133\b\154\003\129\001W\b\155\003\153\b\159\002\024\003\134\b\249\b\253\t\b\t\012\tb\tj\002\204\0034\003\131\001\031\000\000\002\198\000\000\002\199\002\200\001\239\001W\002\201\000\000\002p\000\000\000\000\005\204\003\155\000\000\000\000\000\000\000\000\003\\\002\136\000\000\0043\0049\002\140\000\000\001I\001B\003a\003\135\002\014\000\000\003\129\001I\001Y\004k\000\000\002\023\000\000\002\024\000\000\000\000\003{\000\000\003\129\002\204\000\000\003\131\001\031\000\000\002\198\000\000\002\199\002\200\001\239\003\138\002\201\002\204\003\139\003\131\001\031\000\000\000\000\000\000\003\132\000\000\000\000\003\\\000\000\002\141\000\000\003\153\001B\002\024\003\134\000\000\003a\003\135\001I\001Y\000\000\002p\000\000\004\163\0066\000\000\002\142\000\000\000\000\003\135\003{\002\136\000\000\001Z\001B\002\140\000\000\001I\003\155\000\000\001I\001Y\000\000\003\138\000\000\000\000\003\139\000\000\000\000\000\000\000\000\000\000\003\132\000\000\003\129\003\138\000\000\000\000\003\139\003\153\000\000\002\024\003\134\001\131\003\132\000\000\000\000\002\204\000\000\003\131\001\031\003\153\000\000\002\024\003\134\000\000\000\000\000\000\001Z\000\000\002\141\000\000\000\000\000\000\000\000\000\000\003\155\002\198\000\000\002\199\002\200\001\239\000\000\002\201\000\000\000\000\000\000\002\142\003\155\003\135\001Z\000\000\003\129\000\000\003\\\000\000\000\000\000\000\001\131\000\000\000\000\000\000\000\000\003a\000\000\002\204\000\000\003\131\001\031\002p\004\172\000\000\006I\000\000\000\000\003\138\000\000\003{\003\139\002\136\001\131\000\000\000\000\002\140\003\132\001I\001\237\000\000\000\000\001\238\001\239\003\153\001\240\002\024\003\134\000\000\000\000\003\135\000\000\000\000\000\000\000\000\000\000\002\198\000\000\002\199\002\200\001\239\000\000\002\201\001\241\001\242\000\000\001\243\001\244\001\249\000\000\000\000\003\155\000\000\003\\\000\000\000\000\003\138\002p\000\000\003\139\006M\002\141\003a\000\000\000\000\003\132\000\000\002\136\000\000\004\181\000\000\002\140\003\153\001I\002\024\003\134\003{\002\198\002\142\002\199\002\200\001\239\003\129\002\201\000\000\002\198\000\000\002\199\002\200\001\239\000\000\002\201\000\000\000\000\003\\\002\204\000\000\003\131\001\031\003\155\000\000\001Q\003\\\003a\007H\000\000\000\000\000\000\000\000\000\000\004\244\003a\000\000\000\000\000\000\000\000\002\141\003{\004\246\000\000\000\000\000\000\000\000\000\000\000\000\003{\000\000\003\135\000\000\000\000\001W\001\250\000\000\002\142\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\003\129\000\000\000\000\000\000\000\000\003\138\000\000\000\000\003\139\000\000\000\000\000\000\000\000\002\204\003\132\003\131\001\031\000\000\000\000\000\000\000\000\003\153\000\000\002\024\003\134\000\000\000\000\000\000\000\000\000\000\000\000\000\000\007J\002\198\000\000\002\199\002\200\001\239\000\000\002\201\000\000\003\129\000\000\000\000\000\000\003\135\000\000\000\000\003\155\003\129\003\\\000\000\000\000\000\000\002\204\000\000\003\131\001\031\000\000\003a\000\000\000\000\002\204\002\014\003\131\001\031\004\252\000\000\000\000\001B\002\023\003\138\002\024\003{\003\139\001I\007M\000\000\000\000\000\000\003\132\000\000\000\000\000\000\000\000\000\000\003\135\003\153\000\000\002\024\003\134\000\000\000\000\002\198\003\135\002\199\002\200\001\239\000\000\002\201\000\000\002\198\000\000\002\199\002\200\001\239\000\000\002\201\000\000\000\000\003\\\000\000\003\138\000\000\003\155\003\139\000\000\000\000\003\\\003a\003\138\003\132\000\000\003\139\000\000\000\000\004\255\003a\003\153\003\132\002\024\003\134\000\000\003{\005\024\007N\003\153\000\000\002\024\003\134\002\198\003{\002\199\002\200\001\239\003\129\002\201\000\000\000\000\007\024\000\000\007Q\000\000\007P\000\000\003\155\000\000\003\\\002\204\000\000\003\131\001\031\000\000\003\155\000\000\001\131\003a\001Q\000\000\000\000\007D\001\027\000\000\005\027\001\031\001 \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\003\135\000\000\000\000\000\000\000\000\000\000\001W\002\198\000\000\002\199\002\200\001\239\b\025\002\201\000\000\003\129\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\129\003\\\000\000\003\138\000\000\002\204\003\139\003\131\001\031\000\000\003a\000\000\003\132\002\204\000\000\003\131\001\031\005\196\000\000\003\153\000\000\002\024\003\134\000\000\003{\b\027\000\000\000\000\000\000\000\000\002\198\000\000\002\199\002\200\001\239\000\000\002\201\003\135\001Q\003\129\000\000\007K\b\028\000\000\000\000\003\135\003\155\b\030\000\000\000\000\000\000\b)\002\204\000\000\003\131\001\031\004\225\000\000\000\000\002p\000\000\000\000\006P\003\138\000\000\000\000\003\139\001W\000\000\002\136\001B\003\138\003\132\002\140\003\139\001I\001I\001Y\000\000\003\153\003\132\002\024\003\134\004\226\003\135\000\000\000\000\003\153\000\000\002\024\003\134\002\198\000\000\002\199\002\200\001\239\003\129\002\201\000\000\002\198\000\000\002\199\002\200\001\239\000\000\002\201\003\155\000\000\003\\\002\204\003\138\003\131\001\031\003\139\003\155\000\000\003\\\003a\002\141\003\132\000\000\000\000\000\000\000\000\005\209\003a\003\153\000\000\002\024\003\134\001Q\003{\006\011\007H\000\000\002\142\001Z\000\000\000\000\003{\000\000\003\135\002\203\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\155\001B\002\204\000\000\003\131\001\031\001W\001I\001Y\000\000\000\000\000\000\000\000\001\131\003\138\000\000\000\000\003\139\000\000\000\000\000\000\000\000\001\027\003\132\000\000\001\031\001 \000\000\000\000\000\000\003\153\000\000\002\024\003\134\000\000\000\000\000\000\000\000\004\228\000\000\000\000\000\000\002\198\000\000\002\199\002\200\001\239\000\000\002\201\000\000\003\129\000\000\000\000\b\025\000\000\000\000\007J\003\155\003\129\003\\\000\000\000\000\000\000\002\204\000\000\003\131\001\031\001Z\003a\003\132\000\000\002\204\000\000\003\131\001\031\006\132\003\133\000\000\002\024\003\134\001\237\000\000\003{\004 \001\239\000\000\001\240\000\000\000\000\b\027\000\000\000\000\000\000\001B\000\000\003\135\000\000\001\131\000\000\001I\007M\000\000\000\000\003\135\004:\002\003\b\028\001\243\001\244\001\249\000\000\b\030\000\000\000\000\000\000\b;\000\000\000\000\000\000\000\000\000\000\003\138\000\000\000\000\003\139\000\000\000\000\000\000\000\000\003\138\003\132\001Q\003\139\001Q\001S\000\000\007H\003\153\003\132\002\024\003\134\001b\000\000\000\000\000\000\003\153\000\000\002\024\003\134\000\000\000\000\004?\004O\004P\003\129\000\000\000\000\000\000\000\000\007N\001W\000\000\001W\000\000\003\155\000\000\000\000\002\204\000\000\003\131\001\031\000\000\003\155\007\024\000\000\007O\000\000\007P\000\000\000\000\002\198\007\139\002\199\002\200\001\239\000\000\002\201\000\000\004S\001\131\000\000\000\000\002\012\002p\000\000\000\000\006W\003\\\000\000\003\135\000\000\000\000\000\000\002\136\000\000\001\251\003a\002\140\001\031\001I\001`\000\000\007J\007\190\000\000\000\000\000\000\000\000\000\000\000\000\003{\000\000\000\000\000\000\000\000\003\138\007\142\000\000\003\139\001j\000\000\000\000\000\000\000\000\003\132\000\000\000\000\000\000\004_\006\017\000\000\003\153\000\000\002\024\003\134\000\000\000\000\001B\000\000\001B\000\000\000\000\002\141\001I\001Y\001I\007M\000\000\002\198\000\000\002\199\002\200\001\239\000\000\002\201\000\000\000\000\000\000\003\155\002\142\000\000\000\000\002\014\000\000\000\000\003\\\000\000\000\000\000\000\002\015\001Q\002\024\000\000\001\166\003a\000\000\000\000\000\000\000\000\000\000\001\167\007\193\003\129\000\000\001Q\000\000\000\000\001S\003{\007\146\007\147\000\000\000\000\001v\001b\002\204\000\000\003\131\001\031\001W\000\000\000\000\000\000\001Z\000\000\007N\007\148\007\164\000\000\000\000\000\000\007\156\006\012\001W\002\198\001c\002\199\002\200\001\239\007\024\002\201\007[\000\000\007P\000\000\b\185\002\198\003\135\002\199\002\200\001\239\003\\\002\201\001\131\000\000\001\131\001\135\000\000\000\000\000\000\003a\000\000\000\000\003\\\000\000\000\000\000\000\007\208\000\000\001`\000\000\000\000\003a\003\138\003{\000\000\003\139\000\000\000\000\007\211\003\129\000\000\003\132\001`\000\000\000\000\003{\000\000\001\168\003\153\000\000\002\024\003\134\002\204\000\000\003\131\001\031\002\198\000\000\002\199\002\200\001\239\001j\002\201\000\000\000\000\001B\000\000\000\000\000\000\000\000\000\000\001I\001Y\003\\\000\000\003\155\000\000\000\000\000\000\001B\000\000\000\000\003a\000\000\003\135\001I\001Y\000\000\000\000\007\224\000\000\000\000\000\000\000\000\000\000\000\000\003{\000\000\002\198\000\000\002\199\002\200\001\239\000\000\002\201\003\129\000\000\000\000\000\000\000\000\003\138\000\000\000\000\003\139\000\000\000\000\000\000\003\129\002\204\003\132\003\131\001\031\000\000\000\000\006.\000\000\003\153\000\000\002\024\003\134\002\204\001Z\003\131\001\031\002\198\001v\002\199\002\200\001\239\000\000\002\201\000\000\000\000\000\000\000\000\001Z\000\000\000\000\001\149\000\000\003\135\003\\\000\000\003\155\000\000\000\000\000\000\000\000\000\000\000\000\003a\001\131\003\135\000\000\000\000\000\000\000\000\007\227\003\129\000\000\000\000\000\000\000\000\000\000\003{\001\131\003\138\000\000\001\135\003\139\000\000\002\204\000\000\003\131\001\031\003\132\000\000\000\000\003\138\000\000\000\000\003\139\003\153\000\000\002\024\003\134\000\000\003\132\000\000\000\000\000\000\000\000\000\000\000\000\003\153\000\000\002\024\003\134\000\000\000\000\002\203\000\000\002\198\003\135\002\199\002\200\001\239\000\000\002\201\003\155\000\000\000\000\000\000\002\204\000\000\003\131\001\031\000\000\000\000\003\\\000\000\003\155\000\000\000\000\000\000\000\000\000\000\000\000\003a\003\138\000\000\000\000\003\139\000\000\000\000\007\248\003\129\000\000\003\132\000\000\000\000\000\000\003{\000\000\000\000\003\153\000\000\002\024\003\134\002\204\000\000\003\131\001\031\002\198\000\000\002\199\002\200\001\239\000\000\002\201\000\000\000\000\000\000\000\000\000\000\002\198\000\000\002\199\002\200\001\239\003\\\002\201\003\155\000\000\000\000\000\000\000\000\000\000\000\000\003a\003\132\003\135\003\\\000\000\000\000\002p\007\251\003\133\006[\002\024\003\134\003a\000\000\003{\000\000\002\136\000\000\000\000\007\255\002\140\000\000\001I\000\000\002p\000\000\003{\006^\003\138\002p\000\000\003\139\006l\000\000\002\136\003\129\000\000\003\132\002\140\002\136\001I\000\000\000\000\002\140\003\153\001I\002\024\003\134\002\204\000\000\003\131\001\031\000\000\000\000\000\000\002\198\000\000\002\199\002\200\001\239\002p\002\201\000\000\006\185\000\000\002\141\000\000\000\000\000\000\000\000\002\136\003\155\000\000\000\000\002\140\000\000\001I\000\000\000\000\000\000\003\135\004\225\002\142\002\141\000\000\000\000\003\129\000\000\002\141\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\129\002\204\002\142\003\131\001\031\000\000\001Q\002\142\003\138\b\193\b\029\003\139\000\000\002\204\000\000\003\131\001\031\003\132\000\000\000\000\000\000\002\141\000\000\000\000\003\153\001\237\002\024\003\134\004 \001\239\000\000\001\240\000\000\003\135\000\000\001W\001\237\000\000\002\142\004 \001\239\000\000\001\240\000\000\000\000\003\135\000\000\000\000\000\000\004:\002\003\003\155\001\243\001\244\001\249\000\000\000\000\000\000\000\000\003\138\004:\002\003\003\139\001\243\001\244\001\249\000\000\000\000\003\132\002\203\000\000\003\138\000\000\000\000\003\139\003\153\001Q\002\024\003\134\001S\003\132\000\000\002\204\000\000\003\131\001\031\001b\003\153\000\000\002\024\003\134\001Q\000\000\000\000\001S\000\000\004?\004O\004P\000\000\000\000\001b\003\155\000\000\000\000\001W\000\000\004?\004O\004P\000\000\000\000\001\027\000\000\003\155\001\031\001 \000\000\004\228\000\000\001W\000\000\001B\000\000\000\000\000\000\007\139\000\000\001I\001Y\000\000\000\000\000\000\004S\000\000\000\000\000\000\002\012\000\000\000\000\000\000\007\139\000\000\b\025\004S\000\000\000\000\000\000\002\012\003\132\001\251\000\000\000\000\001\031\000\000\001`\003\133\000\000\002\024\003\134\000\000\001\251\002p\000\000\001\031\006\197\000\000\000\000\000\000\000\000\001`\b\248\002\136\000\000\001j\000\000\002\140\002p\001I\b\027\006\203\000\000\001Q\004_\b\n\b\216\t\007\002\136\001Z\001j\000\000\002\140\001B\001I\004_\b,\b\028\000\000\001I\001Y\000\000\b\030\000\000\000\000\000\000\bN\002\198\001B\002\199\002\200\001\239\001W\002\201\001I\001Y\000\000\000\000\002\014\001\131\000\000\000\000\002\141\000\000\003\\\002\015\000\000\002\024\001\237\002\014\000\000\001\238\001\239\003a\001\240\000\000\002\015\002\141\002\024\002\142\t\025\000\000\000\000\000\000\000\000\007\146\007\147\003{\000\000\001v\000\000\000\000\001\241\0032\002\142\001\243\001\244\001\249\000\000\001Z\007\146\007\147\007\148\007\164\001v\000\000\000\000\007\156\006\012\002\198\000\000\002\199\002\200\001\239\001Z\002\201\000\000\007\148\007\164\000\000\000\000\000\000\007\156\006\012\000\000\000\000\003\\\000\000\000\000\001\131\000\000\001Q\001\135\000\000\001S\003a\000\000\000\000\000\000\001B\000\000\001b\t\027\000\000\001\131\001I\001Y\001\135\001Q\003{\002\198\b\222\002\199\002\200\001\239\002p\002\201\000\000\006\212\003\129\001W\000\000\000\000\001Q\000\000\002\136\001\177\003\\\000\000\002\140\000\000\001I\002\204\001\178\003\131\001\031\003a\001W\000\000\000\000\001\250\007\139\000\000\000\000\000\000\000\000\000\000\006(\000\000\000\000\003{\000\000\001W\001\251\000\000\000\000\001\031\000\000\000\000\000\000\000\000\000\000\000\000\001Q\003\135\001Z\b\234\000\000\000\000\000\000\001`\000\000\000\000\000\000\002\141\000\000\000\000\000\000\000\000\000\000\000\000\003\129\000\000\000\000\000\000\000\000\000\000\000\000\b\023\001j\003\138\002\142\001W\003\139\002\204\001\131\003\131\001\031\000\000\003\132\000\000\000\000\001`\000\000\000\000\000\000\003\153\001B\002\024\003\134\000\000\000\000\000\000\001I\001Y\000\000\000\000\000\000\000\000\000\000\002\014\001\179\003\129\000\000\001B\000\000\003\135\002\023\000\000\002\024\001I\001Y\000\000\003\155\000\000\002\204\000\000\003\131\001\031\001B\000\000\000\000\000\000\b$\000\000\001I\001Y\000\000\002p\000\000\000\000\007m\003\138\000\000\000\000\003\139\000\000\000\000\002\136\007\146\007\147\003\132\002\140\001v\001I\000\000\000\000\003\135\003\153\000\000\002\024\003\134\000\000\001Z\000\000\000\000\b\244\b\245\000\000\001B\000\000\007\156\006\012\000\000\000\000\001I\001Y\000\000\001Q\000\000\001Z\b\233\000\000\000\000\001\237\003\155\006+\001\238\001\239\000\000\001\240\000\000\003\132\001\131\000\000\001Z\001\135\002\141\000\000\003\153\000\000\002\024\003\134\000\000\000\000\006\026\000\000\001W\001\241\0032\001\131\001\243\001\244\001\249\002\142\002\198\000\000\002\199\002\200\001\239\000\000\002\201\000\000\000\000\000\000\001\131\003\155\002\198\000\000\002\199\002\200\001\239\003\\\002\201\000\000\001Z\000\000\000\000\000\000\000\000\0033\003a\000\000\000\000\003\\\001\237\000\000\000\000\001\238\001\239\000\000\001\240\005\185\003a\000\000\003{\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\005\172\001\131\000\000\003{\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\002\198\000\000\002\199\002\200\001\239\000\000\002\201\000\000\000\000\000\000\000\000\000\000\000\000\001B\005\001\001\250\000\000\000\000\000\000\001I\001Y\000\000\000\000\000\000\000\000\000\000\004\225\000\000\001\251\000\000\000\000\001\031\000\000\000\000\000\000\000\000\002\004\000\000\002\005\002\232\000\000\001\237\000\000\000\000\001\238\001\239\003\129\001\240\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\129\002\204\000\000\003\131\001\031\0034\000\000\001\241\002\003\000\000\001\243\001\244\001\249\002\204\000\000\003\131\001\031\000\000\002\012\000\000\000\000\001Z\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0043\0049\001\251\000\000\003\135\001\031\000\000\000\000\002\014\000\000\000\000\000\000\000\000\003F\000\000\002\023\003\135\002\024\001Q\000\000\000\000\b\239\001\131\000\000\000\000\002\203\002\004\001Q\002\005\002\240\001S\000\000\000\000\005\188\000\000\000\000\000\000\001b\002\204\003\132\003\131\001\031\000\000\000\000\000\000\005\175\003\153\001W\002\024\003\134\000\000\003\132\000\000\000\000\000\000\000\000\001W\000\000\003\153\000\000\002\024\003\134\002\246\000\000\001\237\000\000\002\012\001\238\001\239\002\014\001\240\000\000\000\000\003\155\004\227\000\000\002\015\000\000\002\024\001\251\000\000\000\000\001\031\000\000\000\000\003\155\000\000\000\000\001\241\002\003\000\000\001\243\001\244\001\249\000\000\001\237\000\000\000\000\001\238\001\239\000\000\001\240\000\000\000\000\000\000\003\132\001`\000\000\000\000\002\250\000\000\000\000\003\133\000\000\002\024\003\134\000\000\000\000\000\000\001\241\002\003\000\000\001\243\001\244\001\249\001j\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001B\000\000\002\004\000\000\002\005\003\016\001I\001Y\000\000\001B\000\000\000\000\002\014\000\000\000\000\001I\001Y\000\000\000\000\002\015\001\237\002\024\000\000\001\238\001\239\000\000\001\240\000\000\000\000\000\000\000\000\000\000\000n\002\004\000\000\002\005\003\027\000\000\003\022\000\000\000\000\000\000\002\012\000\000\001\241\002\003\000\000\001\243\001\244\001\249\000\000\000\000\000\000\001\237\000\000\001\251\001\238\001\239\001\031\001\240\000\000\000\000\000\000\000n\000\000\001v\001Z\000\000\000\000\003!\003>\000\000\000\000\002\012\000\000\001Z\000\000\001\241\002\003\000\000\001\243\001\244\001\249\000\000\000\000\000\000\001\251\000\000\000\000\001\031\000\000\000\000\002\004\000\000\002\005\002\232\001\131\000\000\002\198\000\000\002\199\002\200\001\239\003C\002\201\001\131\000\000\000\000\001\201\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\002\014\000\000\003a\002\004\000\000\002\005\002\232\002\015\000\000\002\024\002\012\000\000\000\000\004\231\000\000\002\198\003{\002\199\002\200\001\239\000\000\002\201\000\000\001\251\000\000\000\000\001\031\000\000\000\000\000\000\000\000\002\014\003\\\001\237\003F\000\000\001\238\001\239\002\015\001\240\002\024\003a\000\000\002\012\000\000\001\237\000\000\000\000\001\238\001\239\000\000\001\240\004\230\000\000\000\000\003{\001\251\001\241\002\003\001\031\001\243\001\244\001\249\000\000\000\000\000\000\000\000\003F\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\003Z\000\000\000\000\000\000\000\000\003\129\000\000\002\014\000\000\000\000\000\000\000\000\003`\000\000\002\015\000\000\002\024\000\000\002\204\000\000\003\131\001\031\002\004\000\000\002\005\002\232\000\000\001\237\000\000\000\000\001\238\001\239\000\000\001\240\002\004\000\000\002\005\002\232\000\000\000\000\002\014\000\000\000\000\000\000\003\129\000\000\000\000\002\015\000\000\002\024\003\135\001\241\002\003\000\000\001\243\001\244\001\249\002\204\000\000\003\131\001\031\000\000\002\012\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\012\001\251\000\000\000\000\001\031\004t\000\000\000\000\000\000\000\000\000\000\003\132\003F\001\251\000\000\003\135\001\031\000\000\003\153\000\000\002\024\003\134\000\000\000\000\003F\002\004\000\000\002\005\002\028\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004t\003\155\000\000\000\000\000\000\000\000\003\132\000\000\000\000\000\000\000\000\000n\000\000\003\153\000\000\002\024\003\134\000\000\000\000\000\000\000\000\002\012\001\237\000\000\002\014\001\238\001\239\000\000\001\240\000\000\000\000\002\015\000\000\002\024\001\251\000\000\002\014\001\031\000\000\000\000\003\155\000\000\000\000\002\015\000\000\002\024\001\241\002\003\000\000\001\243\001\244\001\249\001\237\000\000\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\003\128\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\000\000\000\000\001\241\002\003\000\000\001\243\001\244\001\249\002\004\000\000\002\005\002\232\000\000\000\000\000\000\002\014\003\144\000\000\000\000\000\000\000\000\000\000\002\015\000\000\002\024\000\000\001Q\000\000\003\150\001\183\000\000\000\000\000\000\000\000\000\000\000\000\001\184\000\000\002\004\000\000\002\005\002\232\000\000\000\000\000\000\000\000\000\000\000\000\002\012\000\000\002\004\000\000\002\005\002\232\000\000\001W\000\000\000\000\000\000\001\237\000\000\001\251\001\238\001\239\001\031\001\240\000\000\000\000\000\000\000\000\000\000\001\237\003F\000\000\001\238\001\239\000\000\001\240\002\012\000\000\000\000\000\000\000\000\001\241\002\003\000\000\001\243\001\244\001\249\000\000\002\012\001\251\000\000\000\000\001\031\001\241\002\003\000\000\001\243\001\244\001\249\000\000\003F\001\251\000\000\001`\001\031\000\000\000\000\003\159\000\000\000\000\000\000\000\000\003F\000\000\000\000\000\000\000\000\000\000\000\000\003\170\000\000\000\000\001\185\000\000\001Q\000\000\002\014\001S\000\000\002\004\001\189\002\005\002\232\002\015\001b\002\024\000\000\000\000\000\000\000\000\001B\002\004\000\000\002\005\002\232\000\000\001I\001Y\000\000\000\000\000\000\000\000\001\190\001W\000\000\000\000\002\014\000\000\000\000\000\000\001\214\000\000\000\000\002\015\000\000\002\024\000\000\000\000\002\014\002\012\000\000\000\000\000\000\000\000\000\000\002\015\000\000\002\024\000\000\000\000\000\000\002\012\001\251\000\000\000\000\001\031\000\000\000\000\000\000\000\000\000\000\000\000\001\237\003F\001\251\001\238\001\239\001\031\001\240\000\000\000\000\000\000\000\000\001`\001\237\003F\001Z\001\238\001\239\000\000\001\240\000\000\000\000\000\000\000\000\000\000\001\241\002\003\000\000\001\243\001\244\001\249\001j\000\000\000\000\000\000\001\195\000\000\001\241\002\003\000\000\001\243\001\244\001\249\000\000\000\000\001\131\000\000\000\000\000\000\001B\000\000\003\176\000\000\000\000\000\000\001I\001Y\000\000\002\014\000\000\000\000\001Q\000\000\003\182\b\190\002\015\000\000\002\024\000\000\000\000\002\014\b\191\000\000\002\004\000\000\002\005\002\232\002\015\000\000\002\024\000\000\000\000\000\000\000\000\000\000\002\004\000\000\002\005\002\232\000\000\001W\000\000\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\001v\001\237\000\000\000\000\001\238\001\239\000\000\001\240\002\012\000\000\001Z\001\241\002\003\001\205\001\243\001\244\001\249\000\000\000\000\000\000\002\012\001\251\000\000\000\000\001\031\001\241\002\003\000\000\001\243\001\244\001\249\000\000\003F\001\251\000\000\001`\001\031\003\188\000\000\000\000\001\131\000\000\001\237\001\135\003F\001\238\001\239\000\000\001\240\000\000\000\000\003\194\000\000\000\000\b\192\000\000\000\000\000\000\000\000\002\004\000\000\002\005\002\232\000\000\000\000\000\000\001\241\002\003\000\000\001\243\001\244\001\249\001B\002\004\000\000\002\005\002\232\000\000\001I\001Y\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\014\000\000\000\000\000\000\003\200\000\000\000\000\002\015\000\000\002\024\000\000\002\012\002\014\000\000\000\000\000\000\000\000\000\000\000\000\002\015\000\000\002\024\000\000\000\000\001\251\002\012\002\004\001\031\002\005\002\232\000\000\000\000\000\000\000\000\000\000\003F\001\237\000\000\001\251\001\238\001\239\001\031\001\240\000\000\000\000\000\000\000\000\000\000\000\000\003F\001Z\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\012\000\000\001\237\000\000\000\000\001\238\001\239\000\000\001\240\000\000\000\000\000\000\000\000\001\251\001\131\000\000\001\031\000\000\000\000\000\000\003\206\000\000\000\000\000\000\003F\002\014\001\241\002\003\000\000\001\243\001\244\001\249\002\015\000\000\002\024\000\000\000\000\000\000\000\000\002\014\000\000\000\000\002\004\000\000\002\005\002\232\002\015\000\000\002\024\000\000\000\000\000\000\003\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\002\004\000\000\002\005\002\232\000\000\000\000\002\014\000\000\002\012\000\000\000\000\000\000\000\000\002\015\000\000\002\024\000\000\000\000\000\000\001\237\000\000\001\251\001\238\001\239\001\031\001\240\000\000\000\000\000\000\000\000\000\000\000\000\003F\001\237\000\000\000\000\001\238\001\239\000\000\001\240\002\012\000\000\000\000\001\241\002\003\000\000\001\243\001\244\001\249\000\000\000\000\000\000\000\000\001\251\000\000\000\000\001\031\001\241\002\003\000\000\001\243\001\244\001\249\000\000\003F\000\000\000\000\000\000\000\000\003\218\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\003\224\000\000\000\000\000\000\000\000\002\014\000\000\000\000\002\004\000\000\002\005\002\232\002\015\000\000\002\024\001\241\002\003\000\000\001\243\001\244\001\249\000\000\002\004\000\000\002\005\002\232\000\000\001\237\000\000\000\000\001\238\001\239\000\000\001\240\000\000\000\000\000\000\002\014\000\000\000\000\000\000\003\230\000\000\000\000\002\015\000\000\002\024\000\000\002\012\000\000\000\000\001\241\002\003\000\000\001\243\001\244\001\249\000\000\000\000\000\000\000\000\001\251\002\012\002\004\001\031\002\005\002\232\007_\000\000\000\000\000\000\000\000\003F\000\000\000\000\001\251\000\000\003\236\001\031\000\000\000\000\000\000\000\000\000\000\001\237\000\000\003F\001\238\001\239\000\000\001\240\000\000\000\000\000\000\000\000\000\000\000\000\000\000\007`\002\004\007a\002\005\002\232\002\012\000\000\000\000\000\000\000\000\001\241\002\003\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\000\000\000\000\000\000\003F\002\014\000\000\000\000\000\000\000\000\007b\003\242\002\015\000\000\002\024\000\000\002\012\000\000\001\237\002\014\000\000\001\238\001\239\000\000\001\240\000\000\002\015\000\000\002\024\001\251\000\000\000\000\001\031\002\004\000\000\002\005\002\232\000\000\000\000\000\000\003F\000\000\001\241\002\003\000\000\001\243\001\244\001\249\007c\000\000\000\000\001\237\000\000\000\000\001\238\001\239\000\000\001\240\000\000\000\000\002\014\000\000\007d\007e\000\000\007f\000\000\002\015\003\248\002\024\000\000\000\000\000\000\002\012\000\000\001\241\002\003\000\000\001\243\001\244\001\249\000\000\000\000\000\000\000\000\000\000\001\251\000\000\007\168\001\031\002\004\000\000\002\005\002\232\000\000\000\000\002\014\003F\000\000\000\000\000\000\003\254\000\000\002\015\000\000\002\024\000\000\000\000\001\237\000\000\000\000\001\238\001\239\000\000\001\240\007h\000\000\000\000\007j\000\000\000\000\007o\007{\002\004\000\000\002\005\002\232\000\000\000\000\000\000\002\012\000\000\001\241\002\003\007\166\001\243\001\244\001\249\000\000\000\000\000\000\001\237\000\000\001\251\001\238\001\239\001\031\001\240\000\000\000\000\000\000\000\000\007\167\002\014\003F\000\000\000\000\000\000\004\004\000\000\002\015\000\000\002\024\002\012\000\000\001\241\002\003\000\000\001\243\001\244\001\249\000\000\000\000\000\000\000\000\000\000\001\251\000\000\000\000\001\031\002\004\000\000\002\005\002\232\000\000\000\000\000\000\003F\000\000\000\000\000\000\004\n\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\000\000\000\000\000\000\000\000\000\000\002\014\000\000\000\000\002\004\000\000\002\005\002\232\002\015\000\000\002\024\002\012\000\000\001\241\002\003\000\000\001\243\001\244\001\249\000\000\000\000\000\000\001\237\000\000\001\251\001\238\001\239\001\031\001\240\000\000\000\000\000\000\000\000\000\000\002\014\003F\000\000\000\000\000\000\004\016\000\000\002\015\000\000\002\024\002\012\000\000\001\241\002\003\000\000\001\243\001\244\001\249\000\000\000\000\000\000\000\000\000\000\001\251\000\000\000\000\001\031\002\004\000\000\002\005\002\232\000\000\000\000\000\000\003F\000\000\000\000\000\000\004\022\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\000\000\000\000\000\000\000\000\000\000\002\014\000\000\000\000\002\004\000\000\002\005\002\232\002\015\000\000\002\024\002\012\000\000\001\241\002\003\000\000\001\243\001\244\001\249\000\000\000\000\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\002\014\003F\000\000\000\000\000\000\004\028\000\000\002\015\000\000\002\024\002\012\002\198\000\000\002\199\002\200\001\239\002\198\002\201\002\199\002\200\001\239\000\000\002\201\001\251\000\000\000\000\001\031\002\004\003\\\002\005\002\232\000\000\000\000\003\\\003F\000\000\000\000\003a\000\000\000\000\000\000\000\000\003a\000\000\000\000\000\000\000\000\000\000\004q\000\000\000\000\003{\000\000\004v\000\000\000\000\003{\002\014\000\000\000\000\000\000\000\000\000\000\000\000\002\015\000\000\002\024\002\012\002\198\000\000\002\199\002\200\001\239\000\000\002\201\000\000\000\000\000\000\000\000\000\000\001\251\000\000\000\000\001\031\000\000\003\\\000\000\000\000\000\000\000\000\002\014\003F\000\000\000\000\003a\000\000\000\000\002\015\000\000\002\024\000\000\000\000\000\000\000\000\000\000\004x\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\003\129\000\000\000\000\000\000\000\000\003\129\000\000\000\000\000\000\000\000\000\000\b\\\000\000\002\204\000\000\003\131\001\031\000\000\002\204\000\000\003\131\001\031\000\000\002\198\002\014\002\199\002\200\001\239\000\000\002\201\b]\002\015\000\000\002\024\b_\000\000\000\000\000\000\000\000\000\000\003\\\000\000\000\000\000\000\b`\003\135\000\000\000\000\000\000\003a\003\135\000\000\000\000\000\000\000\000\000\000\000\000\003\129\000\000\000\000\004|\000\000\000\000\003{\000\000\000\000\000\000\000\000\000\000\000\000\002\204\000\000\003\131\001\031\004t\000\000\000\000\ba\000\000\004t\003\132\000\000\000\000\000\000\000\000\003\132\000\000\003\153\000\000\002\024\003\134\000\000\003\153\000\000\002\024\003\134\000\000\000\000\000\000\000\000\000\000\002\198\003\135\002\199\002\200\001\239\002\198\002\201\002\199\002\200\001\239\000\000\002\201\000\000\003\155\000\000\bb\000\000\003\\\003\155\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003a\000\000\000\000\bc\004t\005\146\000\000\000\000\003\129\001\237\003\132\004\132\001\238\001\239\003{\001\240\000\000\003\153\000\000\002\024\003\134\002\204\000\000\003\131\001\031\000\000\002\198\b~\002\199\002\200\001\239\000\000\002\201\001\241\002\003\000\000\001\243\001\244\001\249\000\000\000\000\000\000\be\003\\\003\155\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003a\003\135\000\000\bf\000\000\000\000\bh\004\139\000\000\bm\000\000\004\142\000\000\000\000\003{\000\000\000\000\000\000\000\000\000\000\000\000\000\000\bo\000\000\000\000\000\000\000\000\000\000\000\000\002\004\004t\002\005\002\232\000\000\003\129\000\000\003\132\000\000\000\000\002\203\bp\000\000\000\000\003\153\000\000\002\024\003\134\002\204\000\000\003\131\001\031\000\000\002\204\000\000\003\131\001\031\000\000\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\003\155\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\135\000\000\000\000\001\251\000\000\000\000\001\031\003\129\000\000\000\000\000\000\000\000\000\000\000\000\003F\000\000\000\000\000\000\000\000\000\000\002\204\000\000\003\131\001\031\000\000\000\000\000\000\000\000\000\000\004t\001\237\000\000\000\000\001\238\001\239\003\132\001\240\000\000\000\000\000\000\003\132\000\000\003\153\000\000\002\024\003\134\000\000\003\133\000\000\002\024\003\134\000\000\003\135\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\003\155\002\014\000\000\000\000\000\000\000\000\000\000\000\000\002\015\000\000\002\024\004\149\004t\002\198\000\000\002\199\002\200\001\239\003\132\002\201\000\000\000\000\000\000\000\000\000\000\003\153\000\000\002\024\003\134\000\000\003\\\000\000\000\000\002\004\000\000\002\005\002\232\000\000\000\000\003a\000\000\000\000\000\000\001\237\000\000\000\000\001\238\001\239\000\000\001\240\004\152\000\000\003\155\003{\000\000\001\237\000\000\000\000\001\238\001\239\000\000\001\240\000\000\000\000\000\000\000\000\001Q\001\241\002\003\001S\001\243\001\244\001\249\002\012\000\000\000\000\001b\000\000\000\000\001\241\002\003\000\000\001\243\001\244\001\249\000\000\001\251\000\000\000\000\001\031\000\000\000\000\000\000\004\159\000\000\001W\000\000\003F\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\169\002\198\006\142\002\199\002\200\001\239\000\000\002\201\000\000\000\000\002\004\000\000\002\005\002\232\000\000\000\000\000\000\000\000\003\\\006\145\003\129\000\000\002\004\000\000\002\005\002\232\000\000\003a\000\000\000\000\000\000\000\000\000\000\002\204\000\000\003\131\001\031\000\000\004\192\000\000\001`\003{\000\000\001\237\000\000\000\000\001\238\001\239\002\014\001\240\002\012\000\000\000\000\000\000\000\000\002\015\000\000\002\024\000\000\001j\000\000\000\000\002\012\001\251\000\000\003\135\001\031\001\241\002\003\000\000\001\243\001\244\001\249\000\000\003F\001\251\000\000\001B\001\031\000\000\000\000\000\000\000\000\001I\001Y\000\000\003F\000\000\000\000\000\000\000\000\000\000\000\000\004\178\004t\001\237\000\000\000\000\001\238\001\239\003\132\001\240\000\000\000\000\000\000\000\000\000\000\003\153\000\000\002\024\003\134\000\000\000\000\003\129\000\000\002\004\000\000\002\005\002\232\001\241\002\003\000\000\001\243\001\244\001\249\000\000\002\204\000\000\003\131\001\031\002\014\000\000\000\000\001v\003\155\000\000\000\000\002\015\000\000\002\024\000\000\000\000\002\014\001Z\000\000\004\187\006\151\000\000\000\000\002\015\000\000\002\024\000\000\001Q\000\000\002\012\001S\000\000\003\135\001\206\000\000\000\000\000\000\001b\000\000\000\000\000\000\002\004\001\251\002\005\002\232\001\031\000\000\001\131\000\000\000\000\001\135\000\000\000\000\003F\000\000\001\208\001W\000\000\000\000\000\000\001\237\004t\000\000\001\238\001\239\000\000\001\240\003\132\000\000\000\000\000\000\000\000\000\000\000\000\003\153\000\000\002\024\003\134\000\000\000\000\000\000\002\012\000\000\000\000\001\241\002\003\007_\001\243\001\244\001\249\000\000\000\000\000\000\000\000\001\251\000\000\002\198\001\031\002\199\002\200\001\239\003\155\002\201\000\000\000\000\003F\001`\000\000\000\000\002\014\004\198\000\000\000\000\003\\\000\000\000\000\002\015\007`\002\024\007a\000\000\000\000\003a\000\000\000\000\001j\000\000\000\000\000\000\001\195\000\000\000\000\002\004\004\201\002\005\002\232\003{\000\000\000\000\000\000\000\000\000\000\000\000\001B\000\000\000\000\000\000\000\000\000\000\001I\001Y\000\000\007b\001\237\000\000\000\000\001\238\001\239\000\000\001\240\000\000\002\014\000\000\000\000\000\000\000\000\000\000\000\000\002\015\000\000\002\024\000\000\002\012\000\000\000\000\000\000\000\000\001\241\002\003\000\000\001\243\001\244\001\249\000\000\000\000\001\251\000\000\000\000\001\031\002\198\007c\002\199\002\200\001\239\000\000\002\201\003F\000\000\000\000\001v\000\000\000\000\000\000\004\207\007d\007e\003\\\007f\003\129\001Z\000\000\000\000\001\205\000\000\000\000\003a\000\000\000\000\000\000\000\000\000\000\002\204\000\000\003\131\001\031\002\004\004\210\002\005\002\232\003{\007g\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\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\014\003\135\000\000\000\000\000\000\007h\000\000\002\015\007j\002\024\000\000\007o\007{\002\012\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\007\166\000\000\001\251\000\000\000\000\001\031\004t\000\000\000\000\000\000\000\000\000\000\003\132\003F\000\000\000\000\000\000\000\000\007\167\003\153\000\000\002\024\003\134\001\237\000\000\003\129\001\238\001\239\002\198\001\240\002\199\002\200\001\239\000\000\002\201\000\000\000\000\000\000\002\204\000\000\003\131\001\031\000\000\000\000\000\000\003\\\003\155\001\241\002\003\000\000\001\243\001\244\001\249\000\000\003a\000\000\001\237\000\000\000\000\001\238\001\239\000\000\001\240\000\000\000\000\004\234\000\000\000\000\003{\002\014\003\135\000\000\000\000\004\216\000\000\000\000\002\015\000\000\002\024\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\002\004\000\000\002\005\002\232\004t\000\000\000\000\000\000\000\000\000\000\003\132\004\223\002\198\000\000\002\199\002\200\001\239\003\153\002\201\002\024\003\134\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\\\000\000\000\000\000\000\002\004\000\000\002\005\002\232\000\000\003a\000\000\002\012\000\000\000\000\000\000\003\155\003\129\000\000\000\000\000\000\004\237\000\000\000\000\003{\001\251\000\000\000\000\001\031\000\000\002\204\000\000\003\131\001\031\000\000\000\000\003F\000\000\002\198\000\000\002\199\002\200\001\239\001\237\002\201\002\012\001\238\001\239\000\000\001\240\000\000\000\000\000\000\000\000\000\000\003\\\000\000\000\000\001\251\000\000\000\000\001\031\003\135\000\000\003a\000\000\000\000\001\241\002\003\003F\001\243\001\244\001\249\000\000\000\000\005[\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\004t\002\014\005\007\000\000\000\000\003\129\003\132\000\000\002\015\000\000\002\024\000\000\000\000\003\153\000\000\002\024\003\134\000\000\002\204\000\000\003\131\001\031\000\000\000\000\002\004\000\000\002\005\002\232\000\000\000\000\000\000\000\000\000\000\001\237\002\014\000\000\001\238\001\239\000\000\001\240\003\155\002\015\000\000\002\024\000\000\000\000\000\000\000\000\000\000\000\000\003\135\000\000\000\000\000\000\000\000\000\000\000\000\001\241\002\003\003\129\001\243\001\244\001\249\000\000\002\012\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\204\000\000\003\131\001\031\000\000\001\251\000\000\004t\001\031\000\000\000\000\005\012\000\000\003\132\000\000\000\000\003F\000\000\000\000\000\000\003\153\001\237\002\024\003\134\001\238\001\239\007_\001\240\000\000\000\000\000\000\000\000\003\135\002\004\000\000\002\005\002\232\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\241\002\003\003\155\001\243\001\244\001\249\000\000\000\000\000\000\000\000\000\000\000\000\007`\t\015\007a\000\000\005^\000\000\000\000\000\000\000\000\000\000\003\132\000\000\000\000\000\000\005\019\002\014\002\012\003\153\000\000\002\024\003\134\000\000\002\015\000\000\002\024\000\000\000\000\000\000\000\000\001\251\000\000\000\000\001\031\000\000\000\000\007b\002\004\000\000\002\005\002\232\003F\000\000\000\000\001\237\003\155\000\000\001\238\001\239\000\000\001\240\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\000\000\000\000\000\000\001\241\002\003\000\000\001\243\001\244\001\249\007c\000\000\000\000\002\012\000\000\000\000\000\000\000\000\001\241\002\003\000\000\001\243\001\244\001\249\007d\007e\001\251\007f\000\000\001\031\005'\000\000\000\000\002\014\000\000\001\237\000\000\003F\001\238\001\239\002\015\001\240\002\024\000\000\005,\000\000\000\000\000\000\000\000\000\000\007\170\000\000\002\004\000\000\002\005\002\232\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\002\232\000\000\000\000\000\000\000\000\000\000\000\000\000\000\007h\000\000\000\000\007j\000\000\000\000\007o\007{\0058\000\000\000\000\000\000\000\000\000\000\000\000\002\012\002\014\000\000\000\000\007\166\000\000\000\000\000\000\002\015\000\000\002\024\000\000\000\000\001\251\002\012\002\004\001\031\002\005\002\232\000\000\000\000\000\000\007\167\000\000\003F\001\237\000\000\001\251\001\238\001\239\001\031\001\240\000\000\001Q\000\000\000\000\007H\000\000\003F\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\012\000\000\001\237\000\000\000\000\001\238\001\239\001W\001\240\000\000\000\000\000\000\000\000\001\251\000\000\000\000\001\031\000\000\000\000\000\000\005?\000\000\000\000\000\000\003F\002\014\001\241\002\003\000\000\001\243\001\244\001\249\002\015\000\000\002\024\000\000\000\000\000\000\000\000\002\014\000\000\000\000\002\004\000\000\002\005\002\232\002\015\000\000\002\024\000\000\000\000\000\000\005E\000\000\000\000\000\000\000\000\007J\000\000\000\000\000\000\000\000\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\004\001Q\002\005\002\232\001S\000\000\002\014\001\189\002\012\000\000\000\000\001b\000\000\002\015\000\000\002\024\000\000\000\000\000\000\001\237\001B\001\251\001\238\001\239\001\031\001\240\001I\007M\000\000\001\194\001W\000\000\003F\001\237\000\000\000\000\001\238\001\239\000\000\001\240\002\012\000\000\000\000\001\241\002\003\000\000\001\243\001\244\001\249\000\000\000\000\000\000\000\000\001\251\000\000\000\000\001\031\001\241\002\003\000\000\001\243\001\244\001\249\000\000\003F\000\000\000\000\000\000\000\000\005J\000\000\000\000\002\198\000\000\002\199\002\200\001\239\000\000\002\201\000\000\001`\000\000\000\000\005Q\000\000\000\000\007N\000\000\002\014\003\\\000\000\002\004\000\000\002\005\002\232\002\015\000\000\002\024\003a\001j\007\024\000\000\b2\001\195\007P\002\004\000\000\002\005\002\232\005i\000\000\000\000\003{\000\000\000\000\000\000\001\131\001B\000\000\000\000\002\014\000\000\000\000\001I\001Y\001Q\000\000\002\015\001S\002\024\000\000\002\012\000\000\000\000\002\198\001b\002\199\002\200\001\239\000\000\002\201\000\000\000\000\000\000\001\251\002\012\000\000\001\031\000\000\000\000\000\000\003\\\000\000\000\000\001W\003F\001c\000\000\001\251\000\000\003a\001\031\000\000\000\000\001\237\000\000\b\208\001\238\001\239\003F\001\240\005w\000\000\001v\003{\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001Z\003\129\000\000\001\205\000\000\001\241\002\003\000\000\001\243\001\244\001\249\000\000\000\000\000\000\002\204\000\000\003\131\001\031\000\000\000\000\000\000\001`\000\000\000\000\000\000\000\000\000\000\000\000\002\014\000\000\001\131\005e\000\000\001\135\000\000\002\015\000\000\002\024\000\000\000\000\001j\000\000\002\014\000\000\000\000\000\000\003\135\000\000\000\000\002\015\000\000\002\024\000\000\002\004\000\000\002\005\002\232\000\000\001B\000\000\000\000\000\000\000\000\003\129\001I\001Y\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\005l\002\204\000\000\003\131\001\031\000\000\003\132\001Q\000\000\000\000\007H\000\000\000\000\003\153\000\000\002\024\003\134\000\000\002\012\001\237\000\000\000\000\001\238\001\239\000\000\001\240\000\000\000\000\000\000\000\000\000\000\001\251\000\000\003\135\001\031\000\000\001W\000\000\000\000\001v\003\155\000\000\003F\001\241\002\003\000\000\001\243\001\244\001\249\001Z\000\000\000\000\001\149\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\237\000\000\005z\001\238\001\239\000\000\001\240\000\000\003\132\005t\000\000\000\000\000\000\000\000\000\000\003\153\000\000\002\024\003\134\001\131\000\000\000\000\001\135\000\000\001\241\002\003\007J\001\243\001\244\001\249\000\000\002\004\000\000\002\005\002\232\000\000\000\000\001\237\002\014\000\000\001\238\001\239\003\155\001\240\000\000\002\015\000\000\002\024\000\000\000\000\005\157\000\000\001\237\000\000\000\000\001\238\001\239\000\000\001\240\000\000\000\000\001\241\0032\001B\001\243\001\244\001\249\000\000\000\000\001I\007M\002\012\002\004\000\000\002\005\002\232\001\241\002\003\000\000\001\243\001\244\001\249\001\237\000\000\001\251\001\238\001\239\001\031\001\240\000\000\000\000\000\000\000\000\000\000\001\237\003F\000\000\001\238\001\239\000\000\001\240\000\000\005\169\000\000\000\000\001Q\001\241\002\003\001S\001\243\001\244\001\249\002\012\000\000\000\000\001b\000\000\000\000\001\241\002\003\000\000\001\243\001\244\001\249\002\004\001\251\002\005\002\232\001\031\007N\000\000\000\000\005\181\000\000\001W\000\000\003F\000\000\000\000\000\000\000\000\000\000\000\000\007\024\006\030\bL\006\142\007P\000\000\001\250\000\000\002\014\000\000\000\000\002\004\000\000\002\005\002\232\002\015\001\131\002\024\000\000\001\251\007\006\002\012\001\031\002\004\000\000\002\005\002\232\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\000\000\001`\000\000\000\000\001\237\003F\000\000\001\238\001\239\002\014\001\240\002\012\000\000\000\000\b\023\000\000\002\015\000\000\002\024\000\000\001j\000\000\000\000\002\012\001\251\000\000\000\000\001\031\001\241\002\003\000\000\001\243\001\244\001\249\000\000\003F\001\251\000\000\001B\001\031\000\000\000\000\000\000\000\000\001I\001Y\002\014\003F\000\000\000\000\000\000\000\000\000\000\002\023\006$\002\024\001\237\000\000\000\000\001\238\001\239\002\014\001\240\000\000\000\000\000\000\000\000\000\000\002\015\b#\002\024\000\000\000\000\000\000\000\000\000\000\002\004\000\000\002\005\002\232\001\241\002\003\000\000\001\243\001\244\001\249\000\000\000\000\000\000\000\000\000\000\002\014\000\000\000\000\001v\000\000\000\000\000\000\002\015\000\000\002\024\000\000\000\000\002\014\001Z\000\000\006?\006\151\000\000\000\000\002\015\000\000\002\024\000\000\001\237\000\000\002\012\001\238\001\239\000\000\001\240\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\004\001\251\002\005\002\232\001\031\000\000\001\131\000\000\000\000\001\135\001\241\002\003\003F\001\243\001\244\001\249\000\000\000\000\000\000\000\000\001\237\000\000\000\000\001\238\001\239\002\198\001\240\002\199\002\200\001\239\000\000\002\201\000\000\000\000\000\000\000\000\006D\000\000\000\000\000\000\002\012\007\228\003\\\000\000\001\241\0032\000\000\001\243\001\244\001\249\000\000\003a\000\000\001\251\000\000\000\000\001\031\000\000\002\004\000\000\002\005\002\232\000\000\001\237\003F\003{\001\238\001\239\002\014\001\240\000\000\000\000\000\000\000\000\000\000\002\015\0033\002\024\000\000\000\000\000\000\000\000\000\000\000\000\007\252\000\000\000\000\001\241\0032\000\000\001\243\001\244\001\249\000\000\000\000\000\000\000\000\000\000\002\012\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\251\000\000\000\000\001\031\000\000\000\000\000\000\000\000\0033\002\014\000\000\003F\000\000\000\000\000\000\000\000\002\015\000\000\002\024\000\000\000\000\001\250\000\000\000\000\000\000\000\000\003\129\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\251\000\000\000\000\001\031\000\000\002\204\000\000\003\131\001\031\000\000\000\000\000\000\002\198\000\000\002\199\002\200\001\239\000\000\002\201\000\000\001\237\000\000\000\000\001\238\001\239\000\000\001\240\000\000\000\000\003\\\001\250\000\000\000\000\002\014\000\000\0034\000\000\003\135\003a\000\000\002\015\000\000\002\024\001\251\001\241\002\003\001\031\001\243\001\244\001\249\000\000\000\000\003{\000\000\000\000\000\000\000\000\000\000\000\000\0043\0049\000\000\000\000\000\000\000\000\000\000\006R\002\014\000\000\000\000\b\181\000\000\003\132\000\000\002\023\000\000\002\024\000\000\0034\003\153\001\237\002\024\003\134\001\238\001\239\000\000\001\240\000\000\000\000\000\000\000\000\000\000\002\004\000\000\002\005\002\232\000\000\000\000\000\000\000\000\000\000\000\000\0043\0049\001\241\002\003\003\155\001\243\001\244\001\249\002\014\000\000\000\000\000\000\000\000\002I\000\000\002\023\000\000\002\024\000\000\000\000\001\237\000\000\003\129\001\238\001\239\000\000\001\240\000\000\000\000\000\000\002\012\000\000\000\000\000\000\000\000\002\204\000\000\003\131\001\031\000\000\000\000\000\000\000\000\001\251\001\241\002\003\001\031\001\243\001\244\001\249\002\004\000\000\002\005\0029\003F\002E\001\237\000\000\000\000\001\238\001\239\000\000\001\240\000\000\000\000\000\000\000\000\003\135\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001Q\000\000\000\000\b\213\001\241\002\003\000\000\001\243\001\244\001\249\b\214\000\000\000\000\000\000\002\012\0026\002\004\000\000\002\005\0029\006\031\000\000\000\000\000\000\000\000\000\000\003\132\001\251\000\000\001W\001\031\000\000\000\000\003\153\002\014\002\024\003\134\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\002\004\000\000\002\005\0029\002\012\000\000\001\237\000\000\003\155\001\238\001\239\000\000\001\240\000\000\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\001`\000\000\000\000\001\241\002\003\000\000\001\243\001\244\001\249\000\000\000\000\000\000\000\000\002\012\002;\002\014\000\000\000\000\000\000\b\215\000\000\000\000\002\015\000\000\002\024\000\000\001\251\000\000\000\000\001\031\002\198\000\000\002\199\002\200\001\239\000\000\002\201\001B\000\000\000\000\000\000\000\000\000\000\001I\001Y\000\000\000\000\003\\\000\000\000\000\000\000\002\004\000\000\002\005\0029\000\000\003a\002\014\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{\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\000\000\000\000\000\000\002\012\001\237\002\014\000\000\001\238\001\239\000\000\001\240\000\000\002\015\000\000\002\024\001Z\001\251\001\241\0032\001\031\001\243\001\244\001\249\000\000\000\000\000\000\000\000\000\000\001\241\002\003\000\000\001\243\001\244\001\249\001\237\000\000\000\000\001\238\001\239\000\000\001\240\000\000\000\000\000\000\000\000\001\131\000\000\000\000\000\000\0033\000\000\000\000\000\000\000\000\003\129\000\000\000\000\000\000\001\241\002\003\000\000\001\243\001\244\001\249\000\000\000\000\000\000\002\204\000\000\003\131\001\031\000\000\000\000\000\000\000\000\000\000\002\004\000\000\002\005\002\232\000\000\000\000\000\000\002\014\000\000\002\198\000\000\002\199\002\200\001\239\002\015\002\201\002\024\000\000\000\000\000\000\000\000\000\000\000\000\003\135\000\000\000\000\003\\\000\000\000\000\001\250\002\004\000\000\002\005\002\240\000\000\003a\000\000\000\000\000\000\000\000\002\012\000\000\001\251\000\000\000\000\001\031\000\000\000\000\000\000\003{\000\000\001\237\005\158\001\251\001\238\001\239\001\031\001\240\003\132\000\000\000\000\000\000\000\000\000\000\005\000\003\153\000\000\002\024\003\134\000\000\002\012\000\000\000\000\000\000\000\000\001\241\002\003\0034\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\000\000\003\155\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\0036\0049\000\000\000\000\000\000\000\000\000\000\000\000\002\014\000\000\000\000\000\000\002\247\000\000\000\000\002\023\000\000\002\024\000\000\002\014\003\129\000\000\002\004\000\000\002\005\002\240\002\015\000\000\002\024\000\000\000\000\000\000\000\000\002\204\000\000\003\131\001\031\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\014\000\000\000\000\000\000\000\000\000\000\000\000\002\015\000\000\002\024\000\000\000\000\000\000\002\012\000\000\000\000\003\135\001\241\002\003\000\000\001\243\001\244\001\249\000\000\000\000\000\000\001\251\000\000\000\000\001\031\000\000\002\198\000\000\002\199\002\200\001\239\002\198\002\201\002\199\002\200\001\239\000\000\002\201\000\000\000\000\004\248\000\000\000\000\003\\\000\000\000\000\003\132\000\000\003\\\000\000\000\000\003\023\003a\003\153\000\000\002\024\003\134\003a\000\000\000\000\002\004\000\000\002\005\002\232\000\000\000\000\003{\000\000\000\000\000\000\000\000\003{\002\198\000\000\002\199\002\200\001\239\000\000\002\201\000\000\003\155\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\014\003\\\000\000\000\000\000\000\000\000\000\000\002\015\000\000\002\024\003a\000\000\002\012\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003{\001\251\000\000\000\000\001\031\000\000\000\000\000\000\000\000\000\000\000\000\002\198\003E\002\199\002\200\001\239\000\000\002\201\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\129\000\000\003\\\000\000\000\000\003\129\000\000\000\000\000\000\001Q\000\000\003a\001S\002\204\000\000\003\131\001\031\000\000\002\204\001b\003\131\001\031\000\000\000\000\000\000\003{\002\198\000\000\002\199\002\200\001\239\002\198\002\201\002\199\002\200\001\239\000\000\002\201\001W\000\000\000\000\000\000\002\014\003\\\007\017\003\135\003\129\000\000\003\\\002\015\003\135\002\024\003a\000\000\000\000\000\000\000\000\003a\000\000\002\204\000\000\003\131\001\031\000\000\000\000\000\000\003{\000\000\000\000\000\000\000\000\003{\000\000\000\000\004\229\000\000\000\000\000\000\000\000\004e\003\132\000\000\000\000\000\000\000\000\003\132\000\000\003\153\001`\002\024\003\134\003\135\003\153\000\000\002\024\003\134\000\000\003\129\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001j\000\000\000\000\002\204\000\000\003\131\001\031\003\155\000\000\000\000\000\000\000\000\003\155\003\145\000\000\000\000\000\000\000\000\001B\003\132\000\000\000\000\000\000\000\000\001I\001Y\003\153\000\000\002\024\003\134\000\000\003\129\000\000\000\000\000\000\003\135\003\129\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\204\000\000\003\131\001\031\000\000\002\204\000\000\003\131\001\031\003\155\000\000\000\000\002\198\000\000\002\199\002\200\001\239\000\000\002\201\000\000\003\151\000\000\000\000\000\000\000\000\000\000\003\132\000\000\000\000\003\\\001v\000\000\003\135\003\153\000\000\002\024\003\134\003\135\003a\000\000\001Z\000\000\000\000\007\022\000\000\002\198\000\000\002\199\002\200\001\239\000\000\002\201\003{\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\155\003\160\003\\\000\000\000\000\000\000\003\171\003\132\000\000\000\000\001\131\003a\003\132\001\135\003\153\000\000\002\024\003\134\000\000\003\153\000\000\002\024\003\134\000\000\000\000\003{\000\000\000\000\000\000\000\000\000\000\002\198\000\000\002\199\002\200\001\239\002\198\002\201\002\199\002\200\001\239\003\155\002\201\000\000\000\000\000\000\003\155\000\000\003\\\000\000\000\000\000\000\000\000\003\\\000\000\000\000\000\000\003a\000\000\000\000\000\000\000\000\003a\000\000\003\129\000\000\000\000\000\000\000\000\000\000\000\000\003{\000\000\000\000\000\000\000\000\003{\002\204\000\000\003\131\001\031\000\000\002\198\000\000\002\199\002\200\001\239\000\000\002\201\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\129\000\000\003\\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003a\003\135\002\204\000\000\003\131\001\031\000\000\002\198\000\000\002\199\002\200\001\239\000\000\002\201\003{\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\001Q\000\000\003\177\b\219\000\000\003a\003\135\003\129\003\132\000\000\b\220\000\000\003\129\000\000\000\000\003\153\000\000\002\024\003\134\003{\002\204\000\000\003\131\001\031\000\000\002\204\000\000\003\131\001\031\001W\002\198\000\000\002\199\002\200\001\239\003\183\002\201\000\000\000\000\000\000\000\000\003\132\003\155\000\000\000\000\000\000\000\000\003\\\003\153\000\000\002\024\003\134\003\135\000\000\000\000\000\000\003a\003\135\003\129\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003{\002\204\000\000\003\131\001\031\003\155\000\000\000\000\000\000\001`\000\000\003\189\000\000\000\000\000\000\000\000\003\195\003\132\000\000\000\000\000\000\003\129\003\132\000\000\003\153\000\000\002\024\003\134\b\221\003\153\000\000\002\024\003\134\003\135\002\204\000\000\003\131\001\031\000\000\000\000\000\000\002\198\000\000\002\199\002\200\001\239\001B\002\201\000\000\000\000\000\000\003\155\001I\001Y\000\000\000\000\003\155\000\000\003\\\000\000\000\000\000\000\003\201\000\000\000\000\000\000\003\135\003a\003\132\000\000\000\000\000\000\003\129\000\000\000\000\003\153\000\000\002\024\003\134\000\000\002\198\003{\002\199\002\200\001\239\002\204\002\201\003\131\001\031\000\000\000\000\000\000\000\000\000\000\000\000\003\207\000\000\003\\\000\000\b\\\000\000\003\132\003\155\000\000\000\000\000\000\003a\000\000\003\153\000\000\002\024\003\134\001Z\000\000\000\000\t~\000\000\003\135\t\127\000\000\003{\000\000\b_\002\198\000\000\002\199\002\200\001\239\000\000\002\201\000\000\000\000\b`\000\000\000\000\003\155\000\000\000\000\000\000\000\000\003\\\000\000\001\131\000\000\000\000\000\000\003\213\000\000\000\000\003a\000\000\000\000\003\132\003\129\000\000\000\000\000\000\000\000\000\000\003\153\000\000\002\024\003\134\003{\000\000\ba\002\204\000\000\003\131\001\031\000\000\002\198\000\000\002\199\002\200\001\239\002\198\002\201\002\199\002\200\001\239\000\000\002\201\000\000\000\000\000\000\003\155\000\000\003\\\000\000\000\000\000\000\003\129\003\\\000\000\000\000\000\000\003a\003\135\000\000\000\000\000\000\003a\000\000\bb\002\204\000\000\003\131\001\031\000\000\000\000\003{\000\000\000\000\000\000\000\000\003{\000\000\bc\002\198\000\000\002\199\002\200\001\239\000\000\002\201\000\000\003\219\000\000\000\000\000\000\000\000\000\000\003\132\000\000\003\129\003\\\003\135\t\129\000\000\003\153\000\000\002\024\003\134\000\000\003a\000\000\000\000\002\204\000\000\003\131\001\031\000\000\000\000\000\000\000\000\000\000\be\001Q\003{\000\000\001S\000\000\000\000\001\189\000\000\003\225\003\155\001b\000\000\bf\000\000\003\132\bh\000\000\000\000\bm\000\000\000\000\003\153\003\135\002\024\003\134\003\129\000\000\000\000\001\190\001W\003\129\bo\000\000\000\000\000\000\000\000\001\212\000\000\002\204\000\000\003\131\001\031\000\000\002\204\000\000\003\131\001\031\000\000\003\155\bp\000\000\003\231\002\198\000\000\002\199\002\200\001\239\003\132\002\201\000\000\000\000\000\000\000\000\000\000\003\153\000\000\002\024\003\134\000\000\003\\\003\135\000\000\000\000\003\129\000\000\003\135\000\000\000\000\003a\001`\000\000\000\000\000\000\000\000\000\000\000\000\002\204\000\000\003\131\001\031\000\000\003\155\003{\000\000\000\000\000\000\000\000\000\000\001j\003\237\000\000\000\000\001\195\000\000\003\243\003\132\000\000\000\000\000\000\000\000\003\132\000\000\003\153\000\000\002\024\003\134\001B\003\153\003\135\002\024\003\134\000\000\001I\001Y\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\198\000\000\002\199\002\200\001\239\000\000\002\201\000\000\003\155\000\000\000\000\000\000\000\000\003\155\000\000\000\000\003\249\003\\\000\000\000\000\000\000\002\198\003\132\002\199\002\200\001\239\003a\002\201\000\000\003\153\000\000\002\024\003\134\003\129\000\000\000\000\000\000\000\000\003\\\000\000\003{\001v\000\000\000\000\000\000\000\000\002\204\003a\003\131\001\031\000\000\001Z\000\000\000\000\001\205\000\000\003\155\000\000\000\000\000\000\002\198\003{\002\199\002\200\001\239\000\000\002\201\000\000\002\198\000\000\002\199\002\200\001\239\000\000\002\201\000\000\000\000\003\\\003\135\000\000\000\000\001\131\000\000\000\000\001\135\003\\\003a\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003a\000\000\000\000\000\000\000\000\000\000\003{\000\000\000\000\000\000\000\000\000\000\000\000\003\255\003{\000\000\000\000\000\000\003\129\003\132\000\000\002\198\000\000\002\199\002\200\001\239\003\153\002\201\002\024\003\134\000\000\002\204\000\000\003\131\001\031\000\000\000\000\000\000\003\\\003\129\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003a\000\000\000\000\000\000\000\000\002\204\003\155\003\131\001\031\000\000\000\000\000\000\000\000\000\000\003{\000\000\003\135\000\000\000\000\000\000\000\000\000\000\000\000\002\198\000\000\002\199\002\200\001\239\000\000\002\201\000\000\003\129\000\000\000\000\000\000\000\000\000\000\003\135\000\000\003\129\003\\\000\000\000\000\000\000\002\204\004\005\003\131\001\031\000\000\003a\000\000\003\132\002\204\000\000\003\131\001\031\000\000\000\000\003\153\000\000\002\024\003\134\000\000\003{\000\000\000\000\004\011\000\000\000\000\000\000\000\000\000\000\003\132\000\000\000\000\000\000\003\135\000\000\000\000\003\153\000\000\002\024\003\134\000\000\003\135\003\155\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\002\204\000\000\003\131\001\031\000\000\000\000\004\017\003\155\000\000\000\000\000\000\000\000\003\132\000\000\004\023\000\000\000\000\000\000\000\000\003\153\003\132\002\024\003\134\000\000\000\000\000\000\000\000\003\153\000\000\002\024\003\134\002\198\003\135\002\199\002\200\001\239\003\129\002\201\000\000\002\198\000\000\002\199\002\200\001\239\000\000\002\201\003\155\000\000\003\\\002\204\000\000\003\131\001\031\000\000\003\155\000\000\003\\\003a\000\000\000\000\000\000\004\029\000\000\000\000\000\000\003a\000\000\003\132\000\000\000\000\000\000\003{\000\000\000\000\003\153\000\000\002\024\003\134\000\000\003{\002\198\003\135\002\199\002\200\001\239\000\000\002\201\000\000\002\198\000\000\002\199\002\200\001\239\000\000\002\201\000\000\000\000\003\\\000\000\000\000\000\000\003\155\000\000\000\000\000\000\003\\\003a\000\000\000\000\000\000\004\140\000\000\000\000\000\000\003a\000\000\003\132\000\000\000\000\000\000\003{\000\000\000\000\003\153\000\000\002\024\003\134\000\000\003{\000\000\000\000\002\198\000\000\002\199\002\200\001\239\002\198\002\201\002\199\002\200\001\239\000\000\002\201\003\129\000\000\000\000\000\000\000\000\003\\\000\000\003\155\003\129\000\000\003\\\000\000\000\000\002\204\003a\003\131\001\031\000\000\000\000\003a\000\000\002\204\000\000\003\131\001\031\000\000\000\000\000\000\003{\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\135\000\000\000\000\000\000\003\129\000\000\000\000\000\000\003\135\000\000\000\000\000\000\003\129\000\000\000\000\000\000\000\000\002\204\000\000\003\131\001\031\000\000\000\000\000\000\000\000\002\204\000\000\003\131\001\031\004\150\000\000\000\000\000\000\000\000\000\000\003\132\000\000\004\160\000\000\000\000\000\000\000\000\003\153\003\132\002\024\003\134\000\000\000\000\000\000\003\135\003\153\000\000\002\024\003\134\000\000\003\129\000\000\003\135\000\000\000\000\003\129\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\204\003\155\003\131\001\031\000\000\002\204\000\000\003\131\001\031\003\155\004\170\000\000\000\000\000\000\000\000\000\000\003\132\000\000\004\179\000\000\000\000\000\000\000\000\003\153\003\132\002\024\003\134\000\000\000\000\000\000\000\000\003\153\003\135\002\024\003\134\000\000\000\000\003\135\002\198\000\000\002\199\002\200\001\239\002\198\002\201\002\199\002\200\001\239\000\000\002\201\003\155\000\000\000\000\000\000\000\000\003\\\000\000\000\000\003\155\000\000\003\\\004\188\000\000\000\000\003a\000\000\004\199\003\132\000\000\003a\000\000\000\000\003\132\000\000\003\153\000\000\002\024\003\134\003{\003\153\000\000\002\024\003\134\003{\000\000\000\000\002\198\000\000\002\199\002\200\001\239\002\198\002\201\002\199\002\200\001\239\000\000\002\201\000\000\000\000\000\000\003\155\000\000\003\\\001Q\000\000\003\155\001S\003\\\000\000\000\000\000\000\003a\000\000\001b\000\000\000\000\003a\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\001W\002\198\001c\002\199\002\200\001\239\000\000\002\201\000\000\000\000\000\000\000\000\001\155\000\000\000\000\000\000\000\000\003\129\003\\\000\000\000\000\000\000\003\129\000\000\000\000\000\000\000\000\003a\000\000\000\000\002\204\000\000\003\131\001\031\000\000\002\204\000\000\003\131\001\031\000\000\000\000\003{\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\198\001`\002\199\002\200\001\239\000\000\002\201\000\000\000\000\000\000\000\000\000\000\000\000\003\135\000\000\000\000\003\129\003\\\003\135\000\000\001j\003\129\000\000\000\000\000\000\000\000\003a\000\000\000\000\002\204\000\000\003\131\001\031\000\000\002\204\000\000\003\131\001\031\001B\000\000\003{\000\000\004\208\000\000\001I\001Y\001\237\004\217\003\132\002L\001\239\000\000\001\240\003\132\000\000\003\153\000\000\002\024\003\134\000\000\003\153\003\135\002\024\003\134\003\129\000\000\003\135\000\000\000\000\000\000\001\241\002\221\000\000\001\243\001\244\001\249\000\000\002\204\000\000\003\131\001\031\000\000\003\155\000\000\000\000\000\000\000\000\003\155\000\000\000\000\004\224\000\000\000\000\000\000\001v\005\014\003\132\000\000\000\000\000\000\000\000\003\132\000\000\003\153\001Z\002\024\003\134\001\149\003\153\003\135\002\024\003\134\003\129\000\000\000\000\000\000\000\000\005\022\004O\004P\000\000\000\000\000\000\000\000\000\000\002\204\000\000\003\131\001\031\000\000\003\155\000\000\000\000\000\000\001\131\003\155\000\000\001\135\005\r\002\198\000\000\002\199\002\200\001\239\003\132\002\201\000\000\000\000\000\000\000\000\000\000\003\153\000\000\002\024\003\134\000\000\003\\\003\135\002\012\000\000\000\000\000\000\000\000\000\000\000\000\003a\000\000\000\000\000\000\000\000\000\000\001\251\000\000\000\000\001\031\000\000\000\000\000\000\003\155\003{\000\000\000\000\000\000\000\000\000\000\000\000\005\020\002\198\000\000\002\199\002\200\001\239\003\132\002\201\000\000\000\000\000\000\000\000\000\000\003\153\005\029\002\024\003\134\000\000\003\\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003a\000\000\000\000\000\000\000\000\002\198\000\000\002\199\002\200\001\239\000\000\002\201\000\000\003\155\003{\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\\\000\000\000\000\002\014\001Q\000\000\000\000\001S\000\000\003a\002\015\000\000\002\024\000\000\001b\000\000\003\129\000\000\000\000\000\000\000\000\000\000\002\198\003{\002\199\002\200\001\239\000\000\002\201\002\204\000\000\003\131\001\031\001W\002\198\001c\002\199\002\200\001\239\003\\\002\201\000\000\000\000\000\000\000\000\001l\000\000\000\000\003a\000\000\000\000\003\\\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003a\003\135\003{\000\000\003\129\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003{\000\000\000\000\002\204\000\000\003\131\001\031\000\000\000\000\001`\000\000\000\000\000\000\000\000\000\000\000\000\005-\000\000\000\000\000\000\000\000\003\129\003\132\000\000\000\000\000\000\000\000\000\000\001j\003\153\000\000\002\024\003\134\000\000\002\204\003\135\003\131\001\031\000\000\000\000\000\000\002\198\000\000\002\199\002\200\001\239\001B\002\201\000\000\000\000\000\000\000\000\001I\001Y\000\000\000\000\003\155\000\000\003\\\000\000\003\129\000\000\000\000\000\000\0059\000\000\003\135\003a\000\000\000\000\003\132\000\000\003\129\002\204\000\000\003\131\001\031\003\153\000\000\002\024\003\134\003{\000\000\000\000\000\000\002\204\000\000\003\131\001\031\000\000\000\000\000\000\000\000\000\000\000\000\005@\000\000\000\000\000\000\000\000\000\000\003\132\001v\001\237\003\155\003\135\001\238\001\239\003\153\001\240\002\024\003\134\001Z\000\000\000\000\001\149\000\000\003\135\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\000\000\005L\003\155\000\000\000\000\000\000\000\000\003\132\000\000\001\131\000\000\000\000\001\135\005K\003\153\000\000\002\024\003\134\000\000\003\132\003\129\000\000\000\000\000\000\000\000\000\000\003\153\000\000\002\024\003\134\000\000\000\000\000\000\002\204\000\000\003\131\001\031\000\000\000\000\000\000\000\000\003\155\002\004\000\000\002\005\tW\000\000\tY\001\237\000\000\000\000\001\238\001\239\003\155\001\240\000\000\001Q\000\000\000\000\001S\000\000\001Q\001\189\000\000\001S\003\135\001b\001\189\000\000\000\000\000\000\001b\001\241\002\003\000\000\001\243\001\244\001\249\000\000\000\000\000\000\000\000\002\012\000\000\001\190\001W\000\000\000\000\000\000\001\190\001W\000\000\001\191\000\000\005R\001\251\000\000\001\210\001\031\000\000\003\132\000\000\000\000\000\000\000\000\000\000\000\000\003\153\000\000\002\024\003\134\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\004\000\000\002\005\b\169\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\003\155\001`\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\001j\000\000\000\000\000\000\001\195\001j\002\012\000\000\002\014\001\195\000\000\000\000\000\000\000\000\000\000\002\015\000\000\002\024\001B\001\251\000\000\000\000\001\031\001B\001I\001Y\000\000\000\000\001\237\001I\001Y\001\238\001\239\000\000\001\240\000\000\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\000\000\000\000\000\000\001\241\002\003\000\000\001\243\001\244\001\249\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\001v\000\000\000\000\000\000\000\000\001v\000\000\000\000\000\000\000\000\001Z\000\000\002\014\001\205\000\000\001Z\000\000\000\000\001\205\002\015\000\000\002\024\000\000\000\000\000\000\000\000\002\004\000\000\002\005\002=\000\000\000\000\000\000\000\000\002\004\000\000\002\005\0021\000\000\000\000\001\131\000\000\000\000\001\135\000\000\001\131\000\000\000\000\001\135\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\000\000\001\237\000\000\002\012\001\238\001\239\000\000\001\240\000\000\000\000\000\000\002\012\000\000\000\000\000\000\000\000\001\251\001\241\002\003\001\031\001\243\001\244\001\249\000\000\001\251\001\241\002\003\001\031\001\243\001\244\001\249\000\000\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\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001Q\000\000\000\000\b\230\001\241\002\003\000\000\001\243\001\244\001\249\b\231\000\000\000\000\002\004\000\000\002\005\002.\000\000\000\000\000\000\000\000\002\004\000\000\002\005\002\007\000\000\000\000\000\000\000\000\001W\000\000\002\014\000\000\000\000\000\000\000\000\000\000\000\000\002\015\002\014\002\024\000\000\000\000\000\000\000\000\000\000\002\015\000\000\002\024\000\000\000\000\000\000\002\004\002\012\002\005\002\n\000\000\000\000\000\000\000\000\000\000\002\012\000\000\000\000\000\000\000\000\001\251\000\000\000\000\001\031\000\000\000\000\001\237\000\000\001\251\001\238\001\239\001\031\001\240\001`\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\000\000\000\000\001\241\002\003\b\232\001\243\001\244\001\249\000\000\000\000\000\000\001\251\001\241\002\003\001\031\001\243\001\244\001\249\000\000\000\000\000\000\000\000\001B\000\000\000\000\000\000\000\000\000\000\001I\001Y\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\014\000\000\001Q\000\000\000\000\b\236\000\000\002\015\002\014\002\024\000\000\002\004\b\237\002\005\002\r\002\015\000\000\002\024\000\000\000\000\000\000\002\004\000\000\002\005\002-\000\000\000\000\000\000\000\000\000\000\001\237\001W\000\000\001\238\001\239\000\000\001\240\000\000\000\000\002\014\000\000\001\237\000\000\000\000\001\238\001\239\002\015\001\240\002\024\001Z\000\000\002\012\000\000\000\000\001\241\002\003\000\000\001\243\001\244\001\249\000\000\002\012\000\000\000\000\001\251\001\241\002\003\001\031\001\243\001\244\001\249\000\000\000\000\000\000\001\251\000\000\000\000\001\031\000\000\001\131\000\000\001`\000\000\002\198\000\000\002\199\002\200\001\239\000\000\002\201\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\b\238\000\000\002\004\000\000\002\005\002!\000\000\000\000\000\000\005\130\000\000\000\000\000\000\002\004\000\000\002\005\002)\005\138\001B\000\000\000\000\000\000\000\000\000\000\001I\001Y\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\015\000\000\002\024\002\014\002\012\001\237\005\151\000\000\001\238\001\239\002\015\001\240\002\024\000\000\000\000\002\012\000\000\001\251\000\000\000\000\001\031\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\251\001\241\002\003\001\031\001\243\001\244\001\249\000\000\001\237\000\000\000\000\001\238\001\239\000\000\001\240\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\000\000\002\203\000\000\000\000\001\241\002\003\000\000\001\243\001\244\001\249\000\000\000\000\000\000\000\000\005\142\000\000\003\131\001\031\0013\000\000\001\131\002\004\000\000\002\005\003\"\000\000\000\000\000\000\002\014\000\000\000\000\000\000\000\000\000\000\000\000\002\015\000\000\002\024\000\000\002\014\000\000\001\237\000\000\000\000\001\238\001\239\002\015\001\240\002\024\000\000\000\000\005\133\002\004\000\000\002\005\003J\000\000\000\000\000\000\000\000\000\000\002\012\000\000\000\000\000\000\001\241\002\003\000\000\001\243\001\244\001\249\000\000\001\237\000\000\001\251\001\238\001\239\001\031\001\240\000\000\000\000\003\132\000\000\000\000\000\000\000\000\000\000\000\000\003\133\000\000\002\024\003\134\002\012\000\000\000\000\000\000\001\241\002\003\000\000\001\243\001\244\001\249\000\000\001\237\000\000\001\251\001\238\001\239\001\031\001\240\000\000\000\000\000\000\002\004\000\000\002\005\004D\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\001\237\000\000\000\000\001\238\001\239\000\000\001\240\000\000\002\014\000\000\000\000\002\004\000\000\002\005\004G\002\015\000\000\002\024\000\000\000\000\002\012\000\000\000\000\000\000\001\241\002\003\000\000\001\243\001\244\001\249\000\000\001\237\000\000\001\251\001\238\001\239\001\031\001\240\000\000\002\014\000\000\000\000\002\004\000\000\002\005\004J\002\015\000\000\002\024\000\000\000\000\002\012\000\000\000\000\000\000\001\241\002\003\000\000\001\243\001\244\001\249\000\000\001\237\000\000\001\251\001\238\001\239\001\031\001\240\000\000\000\000\000\000\002\004\000\000\002\005\004R\000\000\000\000\000\000\000\000\000\000\000\000\002\012\000\000\000\000\000\000\001\241\002\003\000\000\001\243\001\244\001\249\000\000\000\000\000\000\001\251\000\000\000\000\001\031\000\000\002\014\000\000\000\000\002\004\000\000\002\005\005:\002\015\000\000\002\024\000\000\000\000\002\012\000\000\000\000\002\198\000\000\002\199\002\200\001\239\000\000\002\201\000\000\001\237\000\000\001\251\001\238\001\239\001\031\001\240\000\000\002\014\000\000\000\000\002\004\000\000\002\005\0053\002\015\000\000\002\024\005\130\000\000\002\012\000\000\000\000\000\000\001\241\002\003\005\138\001\243\001\244\001\249\000\000\000\000\000\000\001\251\000\000\000\000\001\031\001Q\000\000\002\014\001S\000\000\000\000\000\000\000\000\000\000\002\015\001b\002\024\000\000\000\000\002\012\000\000\005\139\000\000\001\237\000\000\000\000\001\238\001\239\000\000\001\240\000\000\000\000\001\251\000\000\001W\001\031\000\000\002\014\000\000\000\000\002\004\000\000\002\005\006\130\002\015\000\000\002\024\001\241\0032\000\000\001\243\001\244\001\249\000\000\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\000\000\002\014\000\000\000\000\000\000\002\203\000\000\000\000\002\015\000\000\002\024\001\241\0032\002\012\001\243\001\244\001\249\001`\005\142\000\000\003\131\001\031\0013\000\000\001\237\000\000\001\251\001\238\001\239\001\031\001\240\000\000\002\014\000\000\000\000\000\000\001j\000\000\000\000\002\015\000\000\002\024\000\000\000\000\000\000\000\000\000\000\001Q\001\241\0032\001S\001\243\001\244\001\249\001B\005\133\000\000\001b\000\000\000\000\001I\001Y\000\000\000\000\000\000\000\000\000\000\001Q\001\250\000\000\001S\000\000\000\000\000\000\000\000\000\000\001W\001b\001c\000\000\000\000\001\251\000\000\000\000\001\031\003\132\000\000\000\000\001\172\000\000\000\000\000\000\003\133\002\014\002\024\003\134\001W\000\000\000\000\001\250\002\015\000\000\002\024\000\000\000\000\000\000\000\000\000\000\006\142\000\000\001v\000\000\001\251\000\000\000\000\001\031\0034\000\000\000\000\000\000\001Z\000\000\000\000\001\221\000\000\007\225\001`\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\0035\000\000\000\000\000\000\001j\001`\bO\002\014\001\251\001\131\000\000\001\031\001\135\000\000\002\023\000\000\002\024\000\000\000\000\000\000\000\000\000\000\001B\000\000\001j\000\000\000\000\001Q\001I\001Y\001S\001Q\000\000\000\000\001S\000\000\001Q\001b\002\014\001S\000\000\001b\001B\bO\000\000\002\023\001b\002\024\001I\001Y\000\000\000\000\000\000\000\000\000\000\000\000\001W\000\000\000\000\000\000\001W\000\000\bP\000\000\000\000\001W\000\000\001c\006\142\000\000\000\000\000\000\006\142\000\000\000\000\002\014\000\000\b\225\001v\000\000\000\000\000\000\002\023\000\000\002\024\007\239\000\000\000\000\001Z\007\249\000\000\001\149\000\000\000\000\000\000\000\000\000\000\000\000\001v\bX\000\000\000\000\000\000\000\000\000\000\000\000\001`\000\000\001Z\000\000\001`\006\151\000\000\000\000\000\000\001`\000\000\000\000\001\131\000\000\000\000\001\135\000\000\000\000\000\000\001j\000\000\000\000\000\000\001j\000\000\000\000\000\000\000\000\001j\000\000\000\000\000\000\001\131\000\000\000\000\001\135\001\237\001B\000\000\001\238\001\239\001B\001\240\001I\001Y\000\000\001B\001I\001Y\000\000\000\000\000\000\001I\001Y\000\000\000\000\000\000\000\000\000\000\001Q\001\241\002\022\001S\001\243\001\244\001\249\000\000\001Q\000\000\001b\001S\000\000\000\000\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\001W\000\000\000\000\000\000\000\000\001v\000\000\000\000\001W\001v\000\000\000\000\002Q\000\000\001v\001Z\001W\000\000\006\151\001Z\002\242\000\000\006\151\000\000\001Z\000\000\000\000\001\149\003\018\000\000\000\000\000\000\000\000\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\001\135\001\131\001`\000\000\001\135\000\000\001\131\000\000\000\000\001\135\001`\000\000\001\250\000\000\000\000\000\000\000\000\000\000\001`\000\000\000\000\001j\000\000\000\000\000\000\001\251\000\000\000\000\001\031\001j\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001j\000\000\001B\000\000\001Q\000\000\000\000\001S\001I\001Y\001B\000\000\000\000\000\000\001b\000\000\001I\001Y\001B\000\000\000\000\000\000\000\000\001\237\001I\001Y\001\238\001\239\002\198\001\240\002\199\002\200\001\239\001W\002\201\000\000\001Q\000\000\000\000\001S\000\000\000\000\000\000\000\000\000\000\003\029\001b\001\241\0031\000\000\001\243\001\244\001\249\000\000\002\202\002\014\000\000\000\000\001v\000\000\000\000\000\000\002\023\000\000\002\024\001W\001v\000\000\001Z\000\000\000\000\002T\000\000\000\000\001v\001Q\001Z\004*\001S\002\245\000\000\000\000\000\000\001`\001Z\001b\000\000\002$\000\000\001Q\000\000\000\000\001S\000\000\000\000\000\000\000\000\000\000\001\131\001b\000\000\001\135\001j\000\000\001W\000\000\001\131\000\000\000\000\001\135\000\000\000\000\000\000\000\000\001\131\001`\004V\001\135\001W\000\000\001B\000\000\000\000\000\000\000\000\000\000\001I\001Y\000\000\000\000\005\228\000\000\000\000\000\000\001j\001\250\000\000\000\000\000\000\000\000\002\203\000\000\000\000\000\000\000\000\000\000\005\231\000\000\001\251\000\000\000\000\001\031\001B\002\204\001`\003\131\001\031\000\000\001I\001Y\000\000\001Q\000\000\000\000\001S\000\000\000\000\000\000\001`\000\000\000\000\001b\000\000\001j\000\000\001Q\001v\000\000\001S\000\000\000\000\000\000\000\000\000\000\000\000\001b\001Z\001j\000\000\002$\001W\001B\000\000\000\000\000\000\000\000\001Q\001I\001Y\001S\000\000\000\000\000\000\000\000\001W\001B\001b\000\000\001v\000\000\b\018\001I\001Y\000\000\000\000\002\014\001\131\000\000\001Z\001\135\003\132\003j\002\023\000\000\002\024\001W\000\000\003\133\000\000\002\024\003\134\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001`\000\000\000\000\001Q\000\000\000\000\001S\001v\001\131\000\000\000\000\001\135\000\000\001b\001`\000\000\000\000\001Z\000\000\001j\003j\001v\000\000\000\000\000\000\000\000\001Q\000\000\000\000\001S\000\000\001Z\001W\001j\000\000\001`\001b\001B\000\000\000\000\000\000\000\000\000\000\001I\001Y\000\000\000\000\001\131\000\000\000\000\001\135\001B\000\000\000\000\001j\001W\000\000\001I\001Y\000\000\000\000\001\131\000\000\000\000\005\235\b\\\000\000\005\228\000\000\000\000\000\000\000\000\001B\000\000\000\000\000\000\000\000\t;\001I\001Y\000\000\t~\001`\b\196\t\127\000\000\000\000\000\000\b_\000\000\000\000\000\000\000\000\001v\000\000\000\000\000\000\000\000\b`\000\000\000\000\001j\000\000\001Z\000\000\001`\007#\001v\000\000\007&\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001Z\000\000\001B\007\022\000\000\000\000\000\000\001j\001I\001Y\000\000\001v\000\000\000\000\ba\000\000\001\131\000\000\000\000\001\135\000\000\001Z\b\\\b\\\007#\001B\000\000\b@\000\000\000\000\001\131\001I\001Y\001\135\000\000\000\000\000\000\001Q\t~\t~\001S\t\127\t\127\000\000\000\000\b_\b_\001b\000\000\000\000\000\000\001\131\000\000\bb\001\135\b`\b`\000\000\001v\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001W\bc\001Z\000\000\000\000\t<\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001v\000\000\000\000\000\000\000\000\000\000\t\128\ba\ba\000\000\001Z\000\000\000\000\001Q\000\000\000\000\001S\001\131\000\000\000\000\001\135\000\000\000\000\001b\001Q\be\000\000\001S\000\000\001Q\000\000\000\000\001S\000\000\001b\001`\000\000\000\000\bf\001b\001\131\bh\001W\005\235\bm\000\000\bb\bb\000\000\000\000\000\000\000\000\000\000\001W\001j\000\000\000\000\bo\001W\000\000\bc\bc\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001B\000\000\000\000\bp\000\000\000\000\001I\001Y\t\132\t\137\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001`\000\000\001Q\000\000\000\000\001S\000\000\be\be\000\000\000\000\001`\001b\000\000\000\000\000\000\001`\000\000\000\000\001j\bf\bf\000\000\bh\bh\000\000\bm\bm\000\000\000\000\001j\001W\000\000\000\000\000\000\001j\001v\001B\000\000\bo\bo\000\000\000\000\001I\001Y\000\000\001Z\000\000\001B\001\154\000\000\000\000\000\000\001B\001I\001Y\000\000\bp\bp\001I\001Y\000\000\000\000\001Q\000\000\000\000\001S\001Q\000\000\000\000\001S\000\000\001Q\001b\000\000\001S\001\131\001b\000\000\001\135\000\000\001`\001b\000\000\001Q\000\000\000\000\001S\000\000\000\000\000\000\000\000\001W\001v\001b\000\000\001W\000\000\000\000\000\000\001j\001W\001\199\001Z\001v\000\000\001w\000\000\000\000\001v\000\000\000\000\000\000\001W\001Z\000\000\000\000\001\152\001B\001Z\000\000\000\000\001\157\000\000\001I\001Y\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\131\000\000\000\000\001\135\000\000\000\000\000\000\000\000\000\000\001`\000\000\001\131\000\000\001`\001\135\000\000\001\131\000\000\001`\001\135\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001j\000\000\001`\000\000\001j\000\000\000\000\000\000\000\000\001j\000\000\000\000\000\000\001v\000\000\000\000\000\000\000\000\001B\000\000\000\000\001j\001B\001Z\001I\001Y\001\174\001B\001I\001Y\000\000\000\000\001Q\001I\001Y\001S\000\000\000\000\000\000\001B\000\000\001Q\001b\000\000\001S\001I\001Y\000\000\000\000\000\000\000\000\001b\001Q\001\131\000\000\001S\001\135\000\000\000\000\000\000\000\000\001W\001b\001Q\000\000\000\000\001S\000\000\000\000\000\000\001W\000\000\000\000\001b\001v\000\000\000\000\000\000\001v\000\000\000\000\001W\000\000\001v\001Z\000\000\000\000\000\000\001Z\000\000\000\000\002S\001W\001Z\000\000\001v\002~\000\000\000\000\001Q\000\000\000\000\001S\000\000\000\000\001Z\000\000\000\000\002\128\001b\000\000\001`\000\000\000\000\001\131\000\000\000\000\001\203\001\131\000\000\001`\001\135\000\000\001\131\000\000\000\000\001\135\000\000\001W\000\000\001j\001`\000\000\000\000\000\000\001\131\000\000\000\000\001\135\001j\000\000\000\000\001`\000\000\000\000\000\000\000\000\000\000\001B\000\000\001j\000\000\000\000\000\000\001I\001Y\000\000\001B\000\000\000\000\000\000\001j\000\000\001I\001Y\000\000\000\000\002\198\001B\002\199\002\200\001\239\000\000\002\201\001I\001Y\000\000\000\000\001`\001B\000\000\000\000\000\000\000\000\000\000\001I\001Y\000\000\000\000\000\000\000\000\000\000\002\198\003P\002\199\002\200\001\239\001j\002\201\000\000\000\000\000\000\000\000\000\000\001v\000\000\002\198\000\000\002\199\002\200\001\239\000\000\002\201\001v\001Z\001B\000\000\002\223\003T\000\000\000\000\001I\001Y\001Z\001v\000\000\002\244\000\000\001Q\000\000\001Q\001S\003s\001S\001Z\001v\000\000\003\020\001b\000\000\001b\000\000\000\000\000\000\001\131\001Z\000\000\001\135\003\031\000\000\000\000\000\000\000\000\001\131\000\000\000\000\001\135\001W\000\000\001W\000\000\000\000\000\000\000\000\001\131\000\000\000\000\001\135\000\000\000\000\000\000\001v\000\000\000\000\000\000\001\131\000\000\000\000\001\135\002\203\000\000\001Z\000\000\000\000\003/\000\000\000\000\000\000\000\000\000\000\000\000\000\000\002\204\000\000\003\131\001\031\000\000\002\198\000\000\002\199\002\200\001\239\000\000\002\201\002\203\000\000\000\000\001`\000\000\001`\000\000\001\131\000\000\000\000\001\135\000\000\000\000\002\204\002\203\003\131\001\031\000\000\000\000\003\130\000\000\000\000\001j\000\000\001j\000\000\000\000\002\204\000\000\003\131\001\031\002\198\000\000\002\199\002\200\001\239\000\000\002\201\000\000\000\000\001B\000\000\001B\000\000\000\000\000\000\001I\001Y\001I\001Y\000\000\000\000\000\000\001Q\000\000\003\132\001S\003\154\000\000\000\000\000\000\000\000\003\133\001b\002\024\003\134\000\000\000\000\001Q\000\000\000\000\001S\000\000\000\000\000\000\000\000\000\000\000\000\001b\000\000\003\132\000\000\001W\000\000\000\000\001Q\000\000\003\133\001S\002\024\003\134\000\000\000\000\000\000\003\132\001b\001v\001W\001v\000\000\000\000\003\133\000\000\002\024\003\134\002\203\001Z\000\000\001Z\003g\000\000\003l\000\000\000\000\001W\000\000\000\000\000\000\002\204\000\000\003\131\001\031\000\000\001Q\000\000\000\000\001S\000\000\000\000\000\000\000\000\000\000\001`\001b\000\000\000\000\001\131\000\000\001\131\001\135\000\000\001\135\000\000\002\203\000\000\000\000\000\000\001`\000\000\000\000\000\000\001j\001W\000\000\000\000\000\000\002\204\000\000\003\131\001\031\000\000\000\000\000\000\000\000\001`\000\000\001j\000\000\001Q\001B\000\000\001S\000\000\000\000\000\000\001I\001Y\000\000\001b\000\000\000\000\000\000\000\000\001j\001B\003\132\000\000\000\000\000\000\000\000\001I\001Y\003\133\000\000\002\024\003\134\000\000\001W\000\000\000\000\000\000\001B\001`\000\000\000\000\000\000\000\000\001I\001Y\000\000\000\000\000\000\000\000\000\000\001Q\000\000\002\198\001S\002\199\002\200\001\239\001j\002\201\003\132\001b\001v\000\000\000\000\000\000\000\000\003\133\000\000\002\024\003\134\000\000\001Z\000\000\000\000\004'\001B\001v\000\000\004\129\001W\000\000\001I\001Y\001`\001Q\000\000\001Z\001S\000\000\004,\000\000\000\000\000\000\001v\001b\000\000\000\000\000\000\000\000\000\000\000\000\001\131\001j\001Z\001\135\001Q\004<\000\000\001S\000\000\000\000\000\000\000\000\001W\000\000\001b\001\131\000\000\000\000\001\135\001B\000\000\000\000\000\000\000\000\001Q\001I\001Y\001S\001`\000\000\001v\000\000\001\131\001W\001b\001\135\000\000\000\000\000\000\000\000\001Z\000\000\000\000\004X\000\000\000\000\000\000\001j\000\000\000\000\000\000\000\000\000\000\001W\000\000\000\000\000\000\000\000\001Q\000\000\000\000\001S\001`\002\203\000\000\001B\000\000\000\000\001b\000\000\001\131\001I\001Y\001\135\000\000\001v\002\204\000\000\003\131\001\031\000\000\001j\000\000\001`\000\000\001Z\000\000\001W\006\144\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001B\000\000\000\000\001j\001`\001Q\001I\001Y\001S\000\000\001Q\000\000\000\000\001S\000\000\001b\001\131\000\000\000\000\001\135\001b\001B\001v\001j\000\000\000\000\001Q\001I\001Y\001S\000\000\000\000\001Z\000\000\001W\006\239\001b\000\000\001`\001W\000\000\001B\000\000\000\000\003\132\000\000\000\000\001I\001Y\000\000\000\000\003\133\000\000\002\024\003\134\001W\001v\001j\000\000\000\000\000\000\000\000\001\131\000\000\000\000\001\135\001Z\000\000\000\000\006\251\000\000\000\000\000\000\000\000\000\000\001B\000\000\001v\000\000\000\000\000\000\001I\001Y\001Q\001`\000\000\001S\001Z\000\000\001`\007\021\000\000\000\000\001b\000\000\000\000\001\131\001v\000\000\001\135\000\000\000\000\000\000\001j\000\000\001`\000\000\001Z\001j\000\000\007%\000\000\001W\000\000\000\000\000\000\000\000\001\131\000\000\000\000\001\135\001B\000\000\000\000\001j\000\000\001B\001I\001Y\000\000\000\000\001v\001I\001Y\000\000\001Q\000\000\001\131\001S\000\000\001\135\001Z\001B\000\000\007\204\001b\000\000\001Q\001I\001Y\001S\001Q\000\000\000\000\001S\001Q\000\000\001b\001S\000\000\000\000\001b\001`\000\000\001W\001b\000\000\000\000\000\000\000\000\000\000\001\131\000\000\000\000\001\135\000\000\001W\001v\000\000\000\000\001W\001j\001v\001Q\001W\000\000\001S\001Z\000\000\000\000\007\222\000\000\001Z\001b\000\000\007\246\000\000\000\000\001v\001B\000\000\000\000\000\000\000\000\000\000\001I\001Y\000\000\001Z\000\000\000\000\b\172\001W\000\000\001`\000\000\000\000\001\131\000\000\000\000\001\135\000\000\001\131\000\000\000\000\001\135\001`\000\000\000\000\000\000\001`\000\000\000\000\001j\001`\000\000\000\000\000\000\001\131\000\000\000\000\001\135\000\000\000\000\000\000\001j\000\000\000\000\000\000\001j\000\000\001B\000\000\001j\000\000\001v\000\000\001I\001Y\000\000\000\000\000\000\001`\001B\000\000\001Z\000\000\001B\b\187\001I\001Y\001B\000\000\001I\001Y\000\000\000\000\001I\001Y\000\000\000\000\001j\000\000\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\001\135\001B\000\000\000\000\000\000\000\000\000\000\001I\001Y\001v\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001Z\000\000\001v\b\210\000\000\000\000\001v\000\000\000\000\000\000\001v\000\000\001Z\000\000\000\000\b\227\001Z\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\001\135\000\000\000\000\000\000\000\000\001v\000\000\000\000\000\000\001\131\000\000\000\000\001\135\001\131\000\000\001Z\002y\001\131\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\001\131\000\000\000\000\005\230")) and semantic_action = [| @@ -1937,9 +1937,9 @@ module Tables = struct MenhirLib.EngineTypes.endp = _endpos__7_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = layout; - MenhirLib.EngineTypes.startp = _startpos_layout_; - MenhirLib.EngineTypes.endp = _endpos_layout_; + MenhirLib.EngineTypes.semv = jkind; + MenhirLib.EngineTypes.startp = _startpos_jkind_; + MenhirLib.EngineTypes.endp = _endpos_jkind_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; MenhirLib.EngineTypes.semv = _5; @@ -1980,7 +1980,7 @@ module Tables = struct }; } = _menhir_stack in let _7 : unit = Obj.magic _7 in - let layout : (Jane_asttypes.layout_annotation) = Obj.magic layout in + let jkind : (Jane_asttypes.jkind_annotation) = Obj.magic jkind in let _5 : unit = Obj.magic _5 in let _2_inlined1 : (Asttypes.label) = Obj.magic _2_inlined1 in let _1 : unit = Obj.magic _1 in @@ -2004,7 +2004,7 @@ module Tables = struct # 4079 "parsing/parser.mly" ( Jane_syntax.Layouts.type_of ~loc:(make_loc _sloc) - (Ltyp_alias { aliased_type; name; layout }) ) + (Ltyp_alias { aliased_type; name; jkind }) ) # 2009 "parsing/parser.ml" in { @@ -2023,9 +2023,9 @@ module Tables = struct MenhirLib.EngineTypes.endp = _endpos__7_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = layout; - MenhirLib.EngineTypes.startp = _startpos_layout_; - MenhirLib.EngineTypes.endp = _endpos_layout_; + MenhirLib.EngineTypes.semv = jkind; + MenhirLib.EngineTypes.startp = _startpos_jkind_; + MenhirLib.EngineTypes.endp = _endpos_jkind_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; MenhirLib.EngineTypes.semv = _5; @@ -2060,7 +2060,7 @@ module Tables = struct }; } = _menhir_stack in let _7 : unit = Obj.magic _7 in - let layout : (Jane_asttypes.layout_annotation) = Obj.magic layout in + let jkind : (Jane_asttypes.jkind_annotation) = Obj.magic jkind in let _5 : unit = Obj.magic _5 in let _1 : unit = Obj.magic _1 in let _3 : unit = Obj.magic _3 in @@ -2080,7 +2080,7 @@ module Tables = struct # 4079 "parsing/parser.mly" ( Jane_syntax.Layouts.type_of ~loc:(make_loc _sloc) - (Ltyp_alias { aliased_type; name; layout }) ) + (Ltyp_alias { aliased_type; name; jkind }) ) # 2085 "parsing/parser.ml" in { @@ -3894,9 +3894,9 @@ module Tables = struct MenhirLib.EngineTypes.endp = _endpos__6_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = layout; - MenhirLib.EngineTypes.startp = _startpos_layout_; - MenhirLib.EngineTypes.endp = _endpos_layout_; + MenhirLib.EngineTypes.semv = jkind; + MenhirLib.EngineTypes.startp = _startpos_jkind_; + MenhirLib.EngineTypes.endp = _endpos_jkind_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; MenhirLib.EngineTypes.semv = _4; @@ -3925,7 +3925,7 @@ module Tables = struct }; } = _menhir_stack in let _6 : unit = Obj.magic _6 in - let layout : (Jane_asttypes.layout_annotation) = Obj.magic layout in + let jkind : (Jane_asttypes.jkind_annotation) = Obj.magic jkind in let _4 : unit = Obj.magic _4 in let name : (Asttypes.label) = Obj.magic name in let _2 : unit = Obj.magic _2 in @@ -3939,7 +3939,7 @@ module Tables = struct # 4230 "parsing/parser.mly" ( Jane_syntax.Layouts.type_of ~loc:(make_loc _sloc) @@ - Ltyp_var { name = Some name; layout } ) + Ltyp_var { name = Some name; jkind } ) # 3944 "parsing/parser.ml" in { @@ -3958,9 +3958,9 @@ module Tables = struct MenhirLib.EngineTypes.endp = _endpos__5_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = layout; - MenhirLib.EngineTypes.startp = _startpos_layout_; - MenhirLib.EngineTypes.endp = _endpos_layout_; + MenhirLib.EngineTypes.semv = jkind; + MenhirLib.EngineTypes.startp = _startpos_jkind_; + MenhirLib.EngineTypes.endp = _endpos_jkind_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; MenhirLib.EngineTypes.semv = _3; @@ -3983,7 +3983,7 @@ module Tables = struct }; } = _menhir_stack in let _5 : unit = Obj.magic _5 in - let layout : (Jane_asttypes.layout_annotation) = Obj.magic layout in + let jkind : (Jane_asttypes.jkind_annotation) = Obj.magic jkind in let _3 : unit = Obj.magic _3 in let _2 : unit = Obj.magic _2 in let _1 : unit = Obj.magic _1 in @@ -3996,7 +3996,7 @@ module Tables = struct # 4233 "parsing/parser.mly" ( Jane_syntax.Layouts.type_of ~loc:(make_loc _sloc) @@ - Ltyp_var { name = None; layout } ) + Ltyp_var { name = None; jkind } ) # 4001 "parsing/parser.ml" in { @@ -10543,7 +10543,7 @@ module Tables = struct let _6 : (Parsetree.expression) = Obj.magic _6 in let _5 : unit = Obj.magic _5 in let _1_inlined4 : (Parsetree.attributes) = Obj.magic _1_inlined4 in - let _2_inlined1 : ((Asttypes.label Asttypes.loc * Jane_asttypes.layout_annotation option) list * + let _2_inlined1 : ((Asttypes.label Asttypes.loc * Jane_asttypes.jkind_annotation option) list * Parsetree.constructor_arguments * Parsetree.core_type option) = Obj.magic _2_inlined1 in let _1_inlined3 : (Asttypes.label) = Obj.magic _1_inlined3 in let _1_inlined2 : (Parsetree.attributes) = Obj.magic _1_inlined2 in @@ -10580,12 +10580,12 @@ module Tables = struct let _sloc = (_symbolstartpos, _endpos) in # 3854 "parsing/parser.mly" - ( let vars_layouts, args, res = _2 in + ( let vars_jkinds, args, res = _2 in Jane_syntax.Extension_constructor.extension_constructor_of ~loc:(make_loc _sloc) ~name:_1 ~attrs:_3 - (Jext_layout (Lext_decl (vars_layouts, args, res))) ) + (Jext_layout (Lext_decl (vars_jkinds, args, res))) ) # 10590 "parsing/parser.ml" in @@ -21745,7 +21745,7 @@ module Tables = struct }; } = _menhir_stack in let _4 : unit = Obj.magic _4 in - let ty_params : ((string Asttypes.loc * Jane_asttypes.layout_annotation option) list) = Obj.magic ty_params in + let ty_params : ((string Asttypes.loc * Jane_asttypes.jkind_annotation option) list) = Obj.magic ty_params in let _2 : unit = Obj.magic _2 in let _1 : unit = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in @@ -21765,9 +21765,9 @@ module Tables = struct | _ :: _ :: _ -> ghost_loc _sloc in List.map - (fun (newtype, layout) -> + (fun (newtype, jkind) -> { N_ary.pparam_loc = loc; - pparam_desc = Pparam_newtype (newtype, layout) + pparam_desc = Pparam_newtype (newtype, jkind) }) ty_params ) @@ -21820,7 +21820,7 @@ module Tables = struct }; } = _menhir_stack in let _6 : unit = Obj.magic _6 in - let _5 : (Jane_asttypes.layout_annotation) = Obj.magic _5 in + let _5 : (Jane_asttypes.jkind_annotation) = Obj.magic _5 in let _4 : unit = Obj.magic _4 in let _1_inlined1 : ( # 1084 "parsing/parser.mly" @@ -22256,7 +22256,7 @@ module Tables = struct let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _menhir_stack.MenhirLib.EngineTypes.endp in let _endpos = _startpos in - let _v : ((Asttypes.label Asttypes.loc * Jane_asttypes.layout_annotation option) list * + let _v : ((Asttypes.label Asttypes.loc * Jane_asttypes.jkind_annotation option) list * Parsetree.constructor_arguments * Parsetree.core_type option) = # 3863 "parsing/parser.mly" ( ([],Pcstr_tuple [],None) ) @@ -22289,7 +22289,7 @@ module Tables = struct let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in - let _v : ((Asttypes.label Asttypes.loc * Jane_asttypes.layout_annotation option) list * + let _v : ((Asttypes.label Asttypes.loc * Jane_asttypes.jkind_annotation option) list * Parsetree.constructor_arguments * Parsetree.core_type option) = # 3864 "parsing/parser.mly" ( ([],_2,None) ) @@ -22336,7 +22336,7 @@ module Tables = struct let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in let _endpos = _endpos__4_ in - let _v : ((Asttypes.label Asttypes.loc * Jane_asttypes.layout_annotation option) list * + let _v : ((Asttypes.label Asttypes.loc * Jane_asttypes.jkind_annotation option) list * Parsetree.constructor_arguments * Parsetree.core_type option) = # 3866 "parsing/parser.mly" ( ([],_2,Some _4) ) @@ -22392,12 +22392,12 @@ module Tables = struct let _5 : unit = Obj.magic _5 in let _4 : (Parsetree.constructor_arguments) = Obj.magic _4 in let _3 : unit = Obj.magic _3 in - let xs : ((Asttypes.label Asttypes.loc * Jane_asttypes.layout_annotation option) list) = Obj.magic xs in + let xs : ((Asttypes.label Asttypes.loc * Jane_asttypes.jkind_annotation option) list) = Obj.magic xs in let _1 : unit = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in let _endpos = _endpos__6_ in - let _v : ((Asttypes.label Asttypes.loc * Jane_asttypes.layout_annotation option) list * + let _v : ((Asttypes.label Asttypes.loc * Jane_asttypes.jkind_annotation option) list * Parsetree.constructor_arguments * Parsetree.core_type option) = let _2 = let _1 = let xs = @@ -22449,7 +22449,7 @@ module Tables = struct let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in let _endpos = _endpos__2_ in - let _v : ((Asttypes.label Asttypes.loc * Jane_asttypes.layout_annotation option) list * + let _v : ((Asttypes.label Asttypes.loc * Jane_asttypes.jkind_annotation option) list * Parsetree.constructor_arguments * Parsetree.core_type option) = # 3871 "parsing/parser.mly" ( ([],Pcstr_tuple [],Some _2) ) @@ -22491,12 +22491,12 @@ module Tables = struct } = _menhir_stack in let _4 : (Parsetree.core_type) = Obj.magic _4 in let _3 : unit = Obj.magic _3 in - let xs : ((Asttypes.label Asttypes.loc * Jane_asttypes.layout_annotation option) list) = Obj.magic xs in + let xs : ((Asttypes.label Asttypes.loc * Jane_asttypes.jkind_annotation option) list) = Obj.magic xs in let _1 : unit = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in let _endpos = _endpos__4_ in - let _v : ((Asttypes.label Asttypes.loc * Jane_asttypes.layout_annotation option) list * + let _v : ((Asttypes.label Asttypes.loc * Jane_asttypes.jkind_annotation option) list * Parsetree.constructor_arguments * Parsetree.core_type option) = let _2 = let _1 = let xs = @@ -22556,7 +22556,7 @@ module Tables = struct }; } = _menhir_stack in let _1_inlined2 : (Parsetree.attributes) = Obj.magic _1_inlined2 in - let vars_args_res : ((Asttypes.label Asttypes.loc * Jane_asttypes.layout_annotation option) list * + let vars_args_res : ((Asttypes.label Asttypes.loc * Jane_asttypes.jkind_annotation option) list * Parsetree.constructor_arguments * Parsetree.core_type option) = Obj.magic vars_args_res in let _1_inlined1 : (Asttypes.label) = Obj.magic _1_inlined1 in let _1 : unit = Obj.magic _1 in @@ -22564,7 +22564,7 @@ module Tables = struct let _startpos = _startpos__1_ in let _endpos = _endpos__1_inlined2_ in let _v : (Ast_helper.str * - (Asttypes.label Asttypes.loc * Jane_asttypes.layout_annotation option) list * + (Asttypes.label Asttypes.loc * Jane_asttypes.jkind_annotation option) list * Parsetree.constructor_arguments * Parsetree.core_type option * Parsetree.attributes * Location.t * Docstrings.info) = let attrs = let _1 = _1_inlined2 in @@ -22628,14 +22628,14 @@ module Tables = struct }; } = _menhir_stack in let _1_inlined1 : (Parsetree.attributes) = Obj.magic _1_inlined1 in - let vars_args_res : ((Asttypes.label Asttypes.loc * Jane_asttypes.layout_annotation option) list * + let vars_args_res : ((Asttypes.label Asttypes.loc * Jane_asttypes.jkind_annotation option) list * Parsetree.constructor_arguments * Parsetree.core_type option) = Obj.magic vars_args_res in let _1 : (Asttypes.label) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in let _endpos = _endpos__1_inlined1_ in let _v : (Ast_helper.str * - (Asttypes.label Asttypes.loc * Jane_asttypes.layout_annotation option) list * + (Asttypes.label Asttypes.loc * Jane_asttypes.jkind_annotation option) list * Parsetree.constructor_arguments * Parsetree.core_type option * Parsetree.attributes * Location.t * Docstrings.info) = let attrs = let _1 = _1_inlined1 in @@ -22706,9 +22706,9 @@ module Tables = struct MenhirLib.EngineTypes.endp = _endpos__1_inlined3_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = layout; - MenhirLib.EngineTypes.startp = _startpos_layout_; - MenhirLib.EngineTypes.endp = _endpos_layout_; + MenhirLib.EngineTypes.semv = jkind; + MenhirLib.EngineTypes.startp = _startpos_jkind_; + MenhirLib.EngineTypes.endp = _endpos_jkind_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; MenhirLib.EngineTypes.semv = _1_inlined2; @@ -22749,7 +22749,7 @@ module Tables = struct let xs : ((Parsetree.core_type * Parsetree.core_type * Ast_helper.loc) list) = Obj.magic xs in let _2 : (Parsetree.type_kind * Asttypes.private_flag * Parsetree.core_type option) = Obj.magic _2 in let _1_inlined3 : unit = Obj.magic _1_inlined3 in - let layout : (Parsetree.attribute option) = Obj.magic layout in + let jkind : (Parsetree.attribute option) = Obj.magic jkind in let _1_inlined2 : ( # 1084 "parsing/parser.mly" (string) @@ -22831,7 +22831,7 @@ module Tables = struct let attrs = attrs1 @ attrs2 in let loc = make_loc _sloc in (flag, ext), - Type.mk id ~params ?layout ~cstrs ~kind ~priv ?manifest ~attrs ~loc ~docs + Type.mk id ~params ?jkind ~cstrs ~kind ~priv ?manifest ~attrs ~loc ~docs ) # 22837 "parsing/parser.ml" in @@ -22866,9 +22866,9 @@ module Tables = struct MenhirLib.EngineTypes.endp = _endpos__1_inlined4_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = layout; - MenhirLib.EngineTypes.startp = _startpos_layout_; - MenhirLib.EngineTypes.endp = _endpos_layout_; + MenhirLib.EngineTypes.semv = jkind; + MenhirLib.EngineTypes.startp = _startpos_jkind_; + MenhirLib.EngineTypes.endp = _endpos_jkind_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; MenhirLib.EngineTypes.semv = _1_inlined3; @@ -22915,7 +22915,7 @@ module Tables = struct let xs : ((Parsetree.core_type * Parsetree.core_type * Ast_helper.loc) list) = Obj.magic xs in let _2 : (Parsetree.type_kind * Asttypes.private_flag * Parsetree.core_type option) = Obj.magic _2 in let _1_inlined4 : unit = Obj.magic _1_inlined4 in - let layout : (Parsetree.attribute option) = Obj.magic layout in + let jkind : (Parsetree.attribute option) = Obj.magic jkind in let _1_inlined3 : ( # 1084 "parsing/parser.mly" (string) @@ -23004,7 +23004,7 @@ module Tables = struct let attrs = attrs1 @ attrs2 in let loc = make_loc _sloc in (flag, ext), - Type.mk id ~params ?layout ~cstrs ~kind ~priv ?manifest ~attrs ~loc ~docs + Type.mk id ~params ?jkind ~cstrs ~kind ~priv ?manifest ~attrs ~loc ~docs ) # 23010 "parsing/parser.ml" in @@ -23034,9 +23034,9 @@ module Tables = struct MenhirLib.EngineTypes.endp = _endpos_kind_priv_manifest_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = layout; - MenhirLib.EngineTypes.startp = _startpos_layout_; - MenhirLib.EngineTypes.endp = _endpos_layout_; + MenhirLib.EngineTypes.semv = jkind; + MenhirLib.EngineTypes.startp = _startpos_jkind_; + MenhirLib.EngineTypes.endp = _endpos_jkind_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; MenhirLib.EngineTypes.semv = _1_inlined2; @@ -23075,7 +23075,7 @@ module Tables = struct let _1_inlined3 : (Parsetree.attributes) = Obj.magic _1_inlined3 in let xs : ((Parsetree.core_type * Parsetree.core_type * Ast_helper.loc) list) = Obj.magic xs in let kind_priv_manifest : (Parsetree.type_kind * Asttypes.private_flag * Parsetree.core_type option) = Obj.magic kind_priv_manifest in - let layout : (Parsetree.attribute option) = Obj.magic layout in + let jkind : (Parsetree.attribute option) = Obj.magic jkind in let _1_inlined2 : ( # 1084 "parsing/parser.mly" (string) @@ -23152,7 +23152,7 @@ module Tables = struct let attrs = attrs1 @ attrs2 in let loc = make_loc _sloc in (flag, ext), - Type.mk id ~params ?layout ~cstrs ~kind ~priv ?manifest ~attrs ~loc ~docs + Type.mk id ~params ?jkind ~cstrs ~kind ~priv ?manifest ~attrs ~loc ~docs ) # 23158 "parsing/parser.ml" in @@ -23182,9 +23182,9 @@ module Tables = struct MenhirLib.EngineTypes.endp = _endpos_kind_priv_manifest_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = layout; - MenhirLib.EngineTypes.startp = _startpos_layout_; - MenhirLib.EngineTypes.endp = _endpos_layout_; + MenhirLib.EngineTypes.semv = jkind; + MenhirLib.EngineTypes.startp = _startpos_jkind_; + MenhirLib.EngineTypes.endp = _endpos_jkind_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; MenhirLib.EngineTypes.semv = _1_inlined3; @@ -23229,7 +23229,7 @@ module Tables = struct let _1_inlined4 : (Parsetree.attributes) = Obj.magic _1_inlined4 in let xs : ((Parsetree.core_type * Parsetree.core_type * Ast_helper.loc) list) = Obj.magic xs in let kind_priv_manifest : (Parsetree.type_kind * Asttypes.private_flag * Parsetree.core_type option) = Obj.magic kind_priv_manifest in - let layout : (Parsetree.attribute option) = Obj.magic layout in + let jkind : (Parsetree.attribute option) = Obj.magic jkind in let _1_inlined3 : ( # 1084 "parsing/parser.mly" (string) @@ -23307,7 +23307,7 @@ module Tables = struct let attrs = attrs1 @ attrs2 in let loc = make_loc _sloc in (flag, ext), - Type.mk id ~params ?layout ~cstrs ~kind ~priv ?manifest ~attrs ~loc ~docs + Type.mk id ~params ?jkind ~cstrs ~kind ~priv ?manifest ~attrs ~loc ~docs ) # 23313 "parsing/parser.ml" in @@ -23625,6 +23625,97 @@ module Tables = struct MenhirLib.EngineTypes.endp = _endpos; MenhirLib.EngineTypes.next = _menhir_stack; }); + (fun _menhir_env -> + let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in + let { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + } = _menhir_stack in + let _1 : (Asttypes.label) = Obj.magic _1 in + let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in + let _startpos = _startpos__1_ in + let _endpos = _endpos__1_ in + let _v : (Jane_asttypes.jkind_annotation) = let _endpos = _endpos__1_ in + let _symbolstartpos = _startpos__1_ in + let _sloc = (_symbolstartpos, _endpos) in + +# 3711 "parsing/parser.mly" + ( let loc = make_loc _sloc in + mkloc (check_jkind ~loc _1) loc ) +# 23649 "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 = jkind; + MenhirLib.EngineTypes.startp = _startpos_jkind_; + MenhirLib.EngineTypes.endp = _endpos_jkind_; + 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 jkind : (Asttypes.label Asttypes.loc) = Obj.magic jkind 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_jkind_ in + let _v : (Parsetree.attribute) = +# 3725 "parsing/parser.mly" + ( Attr.mk ~loc:jkind.loc jkind (PStr []) ) +# 23681 "parsing/parser.ml" + in + { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = Obj.repr _v; + MenhirLib.EngineTypes.startp = _startpos; + MenhirLib.EngineTypes.endp = _endpos; + MenhirLib.EngineTypes.next = _menhir_stack; + }); + (fun _menhir_env -> + let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in + let { + MenhirLib.EngineTypes.state = _menhir_s; + MenhirLib.EngineTypes.semv = _1; + MenhirLib.EngineTypes.startp = _startpos__1_; + MenhirLib.EngineTypes.endp = _endpos__1_; + MenhirLib.EngineTypes.next = _menhir_stack; + } = _menhir_stack in + let _1 : (Asttypes.label) = Obj.magic _1 in + let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in + let _startpos = _startpos__1_ in + let _endpos = _endpos__1_ in + let _v : (Asttypes.label Asttypes.loc) = let _endpos = _endpos__1_ in + let _symbolstartpos = _startpos__1_ in + let _sloc = (_symbolstartpos, _endpos) in + +# 3717 "parsing/parser.mly" + ( let loc = make_loc _sloc in + ignore (check_jkind ~loc _1 : const_jkind); + mkloc _1 loc ) +# 23711 "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 { @@ -23664,7 +23755,7 @@ module Tables = struct let _1_inlined1 : ( # 1084 "parsing/parser.mly" (string) -# 23668 "parsing/parser.ml" +# 23759 "parsing/parser.ml" ) = Obj.magic _1_inlined1 in let _1 : (Asttypes.mutable_flag * Jane_asttypes.global_flag) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in @@ -23675,7 +23766,7 @@ module Tables = struct # 4700 "parsing/parser.mly" ( _1 ) -# 23679 "parsing/parser.ml" +# 23770 "parsing/parser.ml" in let _endpos__5_ = _endpos__1_inlined3_ in @@ -23684,7 +23775,7 @@ module Tables = struct # 4037 "parsing/parser.mly" ( _1 ) -# 23688 "parsing/parser.ml" +# 23779 "parsing/parser.ml" in let _2 = @@ -23692,7 +23783,7 @@ module Tables = struct let _1 = # 4330 "parsing/parser.mly" ( _1 ) -# 23696 "parsing/parser.ml" +# 23787 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in @@ -23700,7 +23791,7 @@ module Tables = struct # 1272 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 23704 "parsing/parser.ml" +# 23795 "parsing/parser.ml" in let _startpos__2_ = _startpos__1_inlined1_ in @@ -23718,7 +23809,7 @@ module Tables = struct mkld_global_maybe gbl (Type.field _2 _4 ~mut ~attrs:_5 ~loc:(make_loc _sloc) ~info) (make_loc _loc__1_) ) -# 23722 "parsing/parser.ml" +# 23813 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -23780,7 +23871,7 @@ module Tables = struct let _1_inlined1 : ( # 1084 "parsing/parser.mly" (string) -# 23784 "parsing/parser.ml" +# 23875 "parsing/parser.ml" ) = Obj.magic _1_inlined1 in let _1 : (Asttypes.mutable_flag * Jane_asttypes.global_flag) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in @@ -23791,7 +23882,7 @@ module Tables = struct # 4700 "parsing/parser.mly" ( _1 ) -# 23795 "parsing/parser.ml" +# 23886 "parsing/parser.ml" in let _endpos__7_ = _endpos__1_inlined4_ in @@ -23800,7 +23891,7 @@ module Tables = struct # 4700 "parsing/parser.mly" ( _1 ) -# 23804 "parsing/parser.ml" +# 23895 "parsing/parser.ml" in let _endpos__5_ = _endpos__1_inlined3_ in @@ -23809,7 +23900,7 @@ module Tables = struct # 4037 "parsing/parser.mly" ( _1 ) -# 23813 "parsing/parser.ml" +# 23904 "parsing/parser.ml" in let _2 = @@ -23817,7 +23908,7 @@ module Tables = struct let _1 = # 4330 "parsing/parser.mly" ( _1 ) -# 23821 "parsing/parser.ml" +# 23912 "parsing/parser.ml" in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in @@ -23825,7 +23916,7 @@ module Tables = struct # 1272 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 23829 "parsing/parser.ml" +# 23920 "parsing/parser.ml" in let _startpos__2_ = _startpos__1_inlined1_ in @@ -23847,7 +23938,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_) ) -# 23851 "parsing/parser.ml" +# 23942 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -23872,7 +23963,7 @@ module Tables = struct let _v : (Parsetree.label_declaration list) = # 3890 "parsing/parser.mly" ( [_1] ) -# 23876 "parsing/parser.ml" +# 23967 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -23897,7 +23988,7 @@ module Tables = struct let _v : (Parsetree.label_declaration list) = # 3891 "parsing/parser.mly" ( [_1] ) -# 23901 "parsing/parser.ml" +# 23992 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -23929,7 +24020,7 @@ module Tables = struct let _v : (Parsetree.label_declaration list) = # 3892 "parsing/parser.mly" ( _1 :: _2 ) -# 23933 "parsing/parser.ml" +# 24024 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -23950,7 +24041,7 @@ module Tables = struct let _1 : ( # 1084 "parsing/parser.mly" (string) -# 23954 "parsing/parser.ml" +# 24045 "parsing/parser.ml" ) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in @@ -23963,7 +24054,7 @@ module Tables = struct # 1272 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 23967 "parsing/parser.ml" +# 24058 "parsing/parser.ml" in let _endpos = _endpos__1_ in @@ -23972,13 +24063,13 @@ module Tables = struct # 2710 "parsing/parser.mly" ( (_1.Location.txt, mkpat ~loc:_sloc (Ppat_var _1)) ) -# 23976 "parsing/parser.ml" +# 24067 "parsing/parser.ml" in # 2694 "parsing/parser.mly" ( x ) -# 23982 "parsing/parser.ml" +# 24073 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -24013,7 +24104,7 @@ module Tables = struct let _1 : ( # 1084 "parsing/parser.mly" (string) -# 24017 "parsing/parser.ml" +# 24108 "parsing/parser.ml" ) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in @@ -24026,7 +24117,7 @@ module Tables = struct # 1272 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 24030 "parsing/parser.ml" +# 24121 "parsing/parser.ml" in let _endpos = _endpos__1_ in @@ -24035,7 +24126,7 @@ module Tables = struct # 2710 "parsing/parser.mly" ( (_1.Location.txt, mkpat ~loc:_sloc (Ppat_var _1)) ) -# 24039 "parsing/parser.ml" +# 24130 "parsing/parser.ml" in let _startpos_x_ = _startpos__1_ in @@ -24047,7 +24138,7 @@ module Tables = struct ( let lab, pat = x in lab, mkpat ~loc:_sloc (Ppat_constraint (pat, cty)) ) -# 24051 "parsing/parser.ml" +# 24142 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -24091,12 +24182,12 @@ module Tables = struct } = _menhir_stack in let inner_type : (Parsetree.core_type) = Obj.magic inner_type in let _2_inlined1 : unit = Obj.magic _2_inlined1 in - let xs : ((Asttypes.label Asttypes.loc * Jane_asttypes.layout_annotation option) list) = Obj.magic xs in + let xs : ((Asttypes.label Asttypes.loc * Jane_asttypes.jkind_annotation option) list) = Obj.magic xs in let _2 : unit = Obj.magic _2 in let _1 : ( # 1084 "parsing/parser.mly" (string) -# 24100 "parsing/parser.ml" +# 24191 "parsing/parser.ml" ) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in @@ -24108,24 +24199,24 @@ module Tables = struct let xs = # 253 "" ( List.rev xs ) -# 24112 "parsing/parser.ml" +# 24203 "parsing/parser.ml" in # 1377 "parsing/parser.mly" ( xs ) -# 24117 "parsing/parser.ml" +# 24208 "parsing/parser.ml" in # 4017 "parsing/parser.mly" ( _1 ) -# 24123 "parsing/parser.ml" +# 24214 "parsing/parser.ml" in # 2703 "parsing/parser.mly" ( Jane_syntax.Layouts.Ltyp_poly { bound_vars; inner_type } ) -# 24129 "parsing/parser.ml" +# 24220 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_inner_type_, _startpos_xs_) in @@ -24135,7 +24226,7 @@ module Tables = struct # 1336 "parsing/parser.mly" ( Jane_syntax.Layouts.type_of ~loc:(make_loc _sloc) _1 ) -# 24139 "parsing/parser.ml" +# 24230 "parsing/parser.ml" in let _endpos_cty_ = _endpos_inner_type_ in @@ -24147,7 +24238,7 @@ module Tables = struct # 1272 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 24151 "parsing/parser.ml" +# 24242 "parsing/parser.ml" in let _endpos = _endpos__1_ in @@ -24156,7 +24247,7 @@ module Tables = struct # 2710 "parsing/parser.mly" ( (_1.Location.txt, mkpat ~loc:_sloc (Ppat_var _1)) ) -# 24160 "parsing/parser.ml" +# 24251 "parsing/parser.ml" in let _startpos_x_ = _startpos__1_ in @@ -24168,7 +24259,7 @@ module Tables = struct ( let lab, pat = x in lab, mkpat ~loc:_sloc (Ppat_constraint (pat, cty)) ) -# 24172 "parsing/parser.ml" +# 24263 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -24193,7 +24284,7 @@ module Tables = struct let _v : (Longident.t) = # 4451 "parsing/parser.mly" ( _1 ) -# 24197 "parsing/parser.ml" +# 24288 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -24218,7 +24309,7 @@ module Tables = struct let _v : (Asttypes.arg_label * Parsetree.expression) = # 3079 "parsing/parser.mly" ( (Nolabel, _1) ) -# 24222 "parsing/parser.ml" +# 24313 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -24246,7 +24337,7 @@ module Tables = struct let _1 : ( # 1070 "parsing/parser.mly" (string) -# 24250 "parsing/parser.ml" +# 24341 "parsing/parser.ml" ) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in @@ -24254,7 +24345,7 @@ module Tables = struct let _v : (Asttypes.arg_label * Parsetree.expression) = # 3081 "parsing/parser.mly" ( (Labelled _1, _2) ) -# 24258 "parsing/parser.ml" +# 24349 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -24281,7 +24372,7 @@ module Tables = struct let label : ( # 1084 "parsing/parser.mly" (string) -# 24285 "parsing/parser.ml" +# 24376 "parsing/parser.ml" ) = Obj.magic label in let _1 : unit = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in @@ -24292,7 +24383,7 @@ module Tables = struct # 3083 "parsing/parser.mly" ( let loc = _loc_label_ in (Labelled label, mkexpvar ~loc label) ) -# 24296 "parsing/parser.ml" +# 24387 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -24339,7 +24430,7 @@ module Tables = struct let label : ( # 1084 "parsing/parser.mly" (string) -# 24343 "parsing/parser.ml" +# 24434 "parsing/parser.ml" ) = Obj.magic label in let _2 : unit = Obj.magic _2 in let _1 : unit = Obj.magic _1 in @@ -24352,7 +24443,7 @@ module Tables = struct # 3086 "parsing/parser.mly" ( (Labelled label, mkexp_constraint ~loc:(_startpos__2_, _endpos) (mkexpvar ~loc:_loc_label_ label) ty) ) -# 24356 "parsing/parser.ml" +# 24447 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -24379,7 +24470,7 @@ module Tables = struct let label : ( # 1084 "parsing/parser.mly" (string) -# 24383 "parsing/parser.ml" +# 24474 "parsing/parser.ml" ) = Obj.magic label in let _1 : unit = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in @@ -24390,7 +24481,7 @@ module Tables = struct # 3089 "parsing/parser.mly" ( let loc = _loc_label_ in (Optional label, mkexpvar ~loc label) ) -# 24394 "parsing/parser.ml" +# 24485 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -24418,7 +24509,7 @@ module Tables = struct let _1 : ( # 1103 "parsing/parser.mly" (string) -# 24422 "parsing/parser.ml" +# 24513 "parsing/parser.ml" ) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in @@ -24426,7 +24517,7 @@ module Tables = struct let _v : (Asttypes.arg_label * Parsetree.expression) = # 3092 "parsing/parser.mly" ( (Optional _1, _2) ) -# 24430 "parsing/parser.ml" +# 24521 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -24481,25 +24572,25 @@ module Tables = struct # 2690 "parsing/parser.mly" ( _1 ) -# 24485 "parsing/parser.ml" +# 24576 "parsing/parser.ml" in let _3 = let flags = # 1345 "parsing/parser.mly" ( [] ) -# 24492 "parsing/parser.ml" +# 24583 "parsing/parser.ml" in # 4139 "parsing/parser.mly" ( flags ) -# 24497 "parsing/parser.ml" +# 24588 "parsing/parser.ml" in # 2653 "parsing/parser.mly" ( (Optional (fst _4), _5, mkpat_with_modes _3 (snd _4) ) ) -# 24503 "parsing/parser.ml" +# 24594 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -24561,25 +24652,25 @@ module Tables = struct # 2690 "parsing/parser.mly" ( _1 ) -# 24565 "parsing/parser.ml" +# 24656 "parsing/parser.ml" in let _3 = let flags = # 1347 "parsing/parser.mly" ( x ) -# 24572 "parsing/parser.ml" +# 24663 "parsing/parser.ml" in # 4139 "parsing/parser.mly" ( flags ) -# 24577 "parsing/parser.ml" +# 24668 "parsing/parser.ml" in # 2653 "parsing/parser.mly" ( (Optional (fst _4), _5, mkpat_with_modes _3 (snd _4) ) ) -# 24583 "parsing/parser.ml" +# 24674 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -24606,7 +24697,7 @@ module Tables = struct let _1_inlined1 : ( # 1084 "parsing/parser.mly" (string) -# 24610 "parsing/parser.ml" +# 24701 "parsing/parser.ml" ) = Obj.magic _1_inlined1 in let _1 : unit = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in @@ -24621,7 +24712,7 @@ module Tables = struct # 1272 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 24625 "parsing/parser.ml" +# 24716 "parsing/parser.ml" in let _endpos = _endpos__1_ in @@ -24630,13 +24721,13 @@ module Tables = struct # 2710 "parsing/parser.mly" ( (_1.Location.txt, mkpat ~loc:_sloc (Ppat_var _1)) ) -# 24634 "parsing/parser.ml" +# 24725 "parsing/parser.ml" in # 2655 "parsing/parser.mly" ( (Optional (fst _2), None, snd _2) ) -# 24640 "parsing/parser.ml" +# 24731 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -24685,7 +24776,7 @@ module Tables = struct let _1 : ( # 1103 "parsing/parser.mly" (string) -# 24689 "parsing/parser.ml" +# 24780 "parsing/parser.ml" ) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in @@ -24695,25 +24786,25 @@ module Tables = struct # 2690 "parsing/parser.mly" ( _1 ) -# 24699 "parsing/parser.ml" +# 24790 "parsing/parser.ml" in let _3 = let flags = # 1345 "parsing/parser.mly" ( [] ) -# 24706 "parsing/parser.ml" +# 24797 "parsing/parser.ml" in # 4139 "parsing/parser.mly" ( flags ) -# 24711 "parsing/parser.ml" +# 24802 "parsing/parser.ml" in # 2657 "parsing/parser.mly" ( (Optional _1, _5, mkpat_with_modes _3 _4) ) -# 24717 "parsing/parser.ml" +# 24808 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -24769,7 +24860,7 @@ module Tables = struct let _1 : ( # 1103 "parsing/parser.mly" (string) -# 24773 "parsing/parser.ml" +# 24864 "parsing/parser.ml" ) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in @@ -24779,25 +24870,25 @@ module Tables = struct # 2690 "parsing/parser.mly" ( _1 ) -# 24783 "parsing/parser.ml" +# 24874 "parsing/parser.ml" in let _3 = let flags = # 1347 "parsing/parser.mly" ( x ) -# 24790 "parsing/parser.ml" +# 24881 "parsing/parser.ml" in # 4139 "parsing/parser.mly" ( flags ) -# 24795 "parsing/parser.ml" +# 24886 "parsing/parser.ml" in # 2657 "parsing/parser.mly" ( (Optional _1, _5, mkpat_with_modes _3 _4) ) -# 24801 "parsing/parser.ml" +# 24892 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -24825,7 +24916,7 @@ module Tables = struct let _1 : ( # 1103 "parsing/parser.mly" (string) -# 24829 "parsing/parser.ml" +# 24920 "parsing/parser.ml" ) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in @@ -24833,7 +24924,7 @@ module Tables = struct let _v : (Asttypes.arg_label * Parsetree.expression option * Parsetree.pattern) = # 2659 "parsing/parser.mly" ( (Optional _1, None, _2) ) -# 24837 "parsing/parser.ml" +# 24928 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -24880,19 +24971,19 @@ module Tables = struct let flags = # 1345 "parsing/parser.mly" ( [] ) -# 24884 "parsing/parser.ml" +# 24975 "parsing/parser.ml" in # 4139 "parsing/parser.mly" ( flags ) -# 24889 "parsing/parser.ml" +# 24980 "parsing/parser.ml" in # 2661 "parsing/parser.mly" ( (Labelled (fst _4), None, mkpat_with_modes _3 (snd _4) ) ) -# 24896 "parsing/parser.ml" +# 24987 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -24946,19 +25037,19 @@ module Tables = struct let flags = # 1347 "parsing/parser.mly" ( x ) -# 24950 "parsing/parser.ml" +# 25041 "parsing/parser.ml" in # 4139 "parsing/parser.mly" ( flags ) -# 24955 "parsing/parser.ml" +# 25046 "parsing/parser.ml" in # 2661 "parsing/parser.mly" ( (Labelled (fst _4), None, mkpat_with_modes _3 (snd _4) ) ) -# 24962 "parsing/parser.ml" +# 25053 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -24985,7 +25076,7 @@ module Tables = struct let _1_inlined1 : ( # 1084 "parsing/parser.mly" (string) -# 24989 "parsing/parser.ml" +# 25080 "parsing/parser.ml" ) = Obj.magic _1_inlined1 in let _1 : unit = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in @@ -25000,7 +25091,7 @@ module Tables = struct # 1272 "parsing/parser.mly" ( mkrhs _1 _sloc ) -# 25004 "parsing/parser.ml" +# 25095 "parsing/parser.ml" in let _endpos = _endpos__1_ in @@ -25009,13 +25100,13 @@ module Tables = struct # 2710 "parsing/parser.mly" ( (_1.Location.txt, mkpat ~loc:_sloc (Ppat_var _1)) ) -# 25013 "parsing/parser.ml" +# 25104 "parsing/parser.ml" in # 2664 "parsing/parser.mly" ( (Labelled (fst _2), None, snd _2) ) -# 25019 "parsing/parser.ml" +# 25110 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -25043,7 +25134,7 @@ module Tables = struct let _1 : ( # 1070 "parsing/parser.mly" (string) -# 25047 "parsing/parser.ml" +# 25138 "parsing/parser.ml" ) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in @@ -25051,7 +25142,7 @@ module Tables = struct let _v : (Asttypes.arg_label * Parsetree.expression option * Parsetree.pattern) = # 2666 "parsing/parser.mly" ( (Labelled _1, None, _2) ) -# 25055 "parsing/parser.ml" +# 25146 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -25100,7 +25191,7 @@ module Tables = struct let _1 : ( # 1070 "parsing/parser.mly" (string) -# 25104 "parsing/parser.ml" +# 25195 "parsing/parser.ml" ) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in @@ -25108,7 +25199,7 @@ module Tables = struct let _v : (Asttypes.arg_label * Parsetree.expression option * Parsetree.pattern) = # 2668 "parsing/parser.mly" ( (Labelled _1, None, mkpat_with_modes _3 _4 ) ) -# 25112 "parsing/parser.ml" +# 25203 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -25133,7 +25224,7 @@ module Tables = struct let _v : (Asttypes.arg_label * Parsetree.expression option * Parsetree.pattern) = # 2670 "parsing/parser.mly" ( (Nolabel, None, _1) ) -# 25137 "parsing/parser.ml" +# 25228 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -25179,7 +25270,7 @@ module Tables = struct let _v : (Asttypes.arg_label * Parsetree.expression option * Parsetree.pattern) = # 2672 "parsing/parser.mly" ( (Nolabel, None, mkpat_with_modes _2 _3 ) ) -# 25183 "parsing/parser.ml" +# 25274 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -25242,14 +25333,14 @@ module Tables = struct let _4 : unit = Obj.magic _4 in let inner_type : (Parsetree.core_type) = Obj.magic inner_type in let _2_inlined2 : unit = Obj.magic _2_inlined2 in - let xs : ((Asttypes.label Asttypes.loc * Jane_asttypes.layout_annotation option) list) = Obj.magic xs in + let xs : ((Asttypes.label Asttypes.loc * Jane_asttypes.jkind_annotation option) list) = Obj.magic xs in let _2_inlined1 : unit = Obj.magic _2_inlined1 in let pat : (Parsetree.pattern) = Obj.magic pat in let _2 : unit = Obj.magic _2 in let _1 : ( # 1070 "parsing/parser.mly" (string) -# 25253 "parsing/parser.ml" +# 25344 "parsing/parser.ml" ) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in @@ -25264,24 +25355,24 @@ module Tables = struct let xs = # 253 "" ( List.rev xs ) -# 25268 "parsing/parser.ml" +# 25359 "parsing/parser.ml" in # 1377 "parsing/parser.mly" ( xs ) -# 25273 "parsing/parser.ml" +# 25364 "parsing/parser.ml" in # 4017 "parsing/parser.mly" ( _1 ) -# 25279 "parsing/parser.ml" +# 25370 "parsing/parser.ml" in # 2728 "parsing/parser.mly" ( Jane_syntax.Layouts.Ltyp_poly { bound_vars; inner_type } ) -# 25285 "parsing/parser.ml" +# 25376 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_inner_type_, _startpos_xs_) in @@ -25291,13 +25382,13 @@ module Tables = struct # 1336 "parsing/parser.mly" ( Jane_syntax.Layouts.type_of ~loc:(make_loc _sloc) _1 ) -# 25295 "parsing/parser.ml" +# 25386 "parsing/parser.ml" in # 2729 "parsing/parser.mly" ( Ppat_constraint(pat, cty) ) -# 25301 "parsing/parser.ml" +# 25392 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_inner_type_, _startpos_pat_) in @@ -25307,19 +25398,19 @@ module Tables = struct # 1307 "parsing/parser.mly" ( mkpat ~loc:_sloc _1 ) -# 25311 "parsing/parser.ml" +# 25402 "parsing/parser.ml" in # 2730 "parsing/parser.mly" ( _1 ) -# 25317 "parsing/parser.ml" +# 25408 "parsing/parser.ml" in # 2674 "parsing/parser.mly" ( (Labelled _1, None, _3) ) -# 25323 "parsing/parser.ml" +# 25414 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -25388,7 +25479,7 @@ module Tables = struct let _5 : unit = Obj.magic _5 in let inner_type : (Parsetree.core_type) = Obj.magic inner_type in let _2_inlined2 : unit = Obj.magic _2_inlined2 in - let xs : ((Asttypes.label Asttypes.loc * Jane_asttypes.layout_annotation option) list) = Obj.magic xs in + let xs : ((Asttypes.label Asttypes.loc * Jane_asttypes.jkind_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 : ((mode_annotation * (Lexing.position * Lexing.position)) list) = Obj.magic _3 in @@ -25396,7 +25487,7 @@ module Tables = struct let _1 : ( # 1070 "parsing/parser.mly" (string) -# 25400 "parsing/parser.ml" +# 25491 "parsing/parser.ml" ) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in @@ -25411,24 +25502,24 @@ module Tables = struct let xs = # 253 "" ( List.rev xs ) -# 25415 "parsing/parser.ml" +# 25506 "parsing/parser.ml" in # 1377 "parsing/parser.mly" ( xs ) -# 25420 "parsing/parser.ml" +# 25511 "parsing/parser.ml" in # 4017 "parsing/parser.mly" ( _1 ) -# 25426 "parsing/parser.ml" +# 25517 "parsing/parser.ml" in # 2728 "parsing/parser.mly" ( Jane_syntax.Layouts.Ltyp_poly { bound_vars; inner_type } ) -# 25432 "parsing/parser.ml" +# 25523 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_inner_type_, _startpos_xs_) in @@ -25438,13 +25529,13 @@ module Tables = struct # 1336 "parsing/parser.mly" ( Jane_syntax.Layouts.type_of ~loc:(make_loc _sloc) _1 ) -# 25442 "parsing/parser.ml" +# 25533 "parsing/parser.ml" in # 2729 "parsing/parser.mly" ( Ppat_constraint(pat, cty) ) -# 25448 "parsing/parser.ml" +# 25539 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_inner_type_, _startpos_pat_) in @@ -25454,19 +25545,19 @@ module Tables = struct # 1307 "parsing/parser.mly" ( mkpat ~loc:_sloc _1 ) -# 25458 "parsing/parser.ml" +# 25549 "parsing/parser.ml" in # 2730 "parsing/parser.mly" ( _1 ) -# 25464 "parsing/parser.ml" +# 25555 "parsing/parser.ml" in # 2676 "parsing/parser.mly" ( (Labelled _1, None, mkpat_with_modes _3 _4) ) -# 25470 "parsing/parser.ml" +# 25561 "parsing/parser.ml" in { MenhirLib.EngineTypes.state = _menhir_s; @@ -25523,7 +25614,7 @@ module Tables = struct let _3 : unit = Obj.magic _3 in let inner_type : (Parsetree.core_type) = Obj.magic inner_type in let _2_inlined1 : unit = Obj.magic _2_inlined1 in - let xs : ((Asttypes.label Asttypes.loc * Jane_asttypes.layout_annotation option) list) = Obj.magic xs in + let xs : ((Asttypes.label Asttypes.loc * Jane_asttypes.jkind_annotation option) list) = Obj.magic xs in let _2 : unit = Obj.magic _2 in let pat : (Parsetree.pattern) = Obj.magic pat in let _1 : unit = Obj.magic _1 in @@ -25540,24 +25631,24 @@ module Tables = struct let xs = # 253 "" ( List.rev xs ) -# 25544 "parsing/parser.ml" +# 25635 "parsing/parser.ml" in # 1377 "parsing/parser.mly" ( xs ) -# 25549 "parsing/parser.ml" +# 25640 "parsing/parser.ml" in # 4017 "parsing/parser.mly" ( _1 ) -# 25555 "parsing/parser.ml" +# 25646 "parsing/parser.ml" in # 2728 "parsing/parser.mly" ( Jane_syntax.Layouts.Ltyp_poly { bound_vars; inner_type } ) -# 25561 "parsing/parser.ml" +# 25652 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_inner_type_, _startpos_xs_) in @@ -25567,13 +25658,13 @@ module Tables = struct # 1336 "parsing/parser.mly" ( Jane_syntax.Layouts.type_of ~loc:(make_loc _sloc) _1 ) -# 25571 "parsing/parser.ml" +# 25662 "parsing/parser.ml" in # 2729 "parsing/parser.mly" ( Ppat_constraint(pat, cty) ) -# 25577 "parsing/parser.ml" +# 25668 "parsing/parser.ml" in let (_endpos__1_, _startpos__1_) = (_endpos_inner_type_, _startpos_pat_) in @@ -25583,109 +25674,18 @@ module Tables = struct # 1307 "parsing/parser.mly" ( mkpat ~loc:_sloc _1 ) -# 25587 "parsing/parser.ml" +# 25678 "parsing/parser.ml" in # 2730 "parsing/parser.mly" ( _1 ) -# 25593 "parsing/parser.ml" +# 25684 "parsing/parser.ml" in # 2678 "parsing/parser.mly" ( (Nolabel, None, _2) ) -# 25599 "parsing/parser.ml" - in - { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = Obj.repr _v; - MenhirLib.EngineTypes.startp = _startpos; - MenhirLib.EngineTypes.endp = _endpos; - MenhirLib.EngineTypes.next = _menhir_stack; - }); - (fun _menhir_env -> - let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in - let { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; - MenhirLib.EngineTypes.next = _menhir_stack; - } = _menhir_stack in - let _1 : (Asttypes.label) = Obj.magic _1 in - let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in - let _startpos = _startpos__1_ in - let _endpos = _endpos__1_ in - let _v : (Jane_asttypes.layout_annotation) = let _endpos = _endpos__1_ in - let _symbolstartpos = _startpos__1_ in - let _sloc = (_symbolstartpos, _endpos) in - -# 3711 "parsing/parser.mly" - ( let loc = make_loc _sloc in - mkloc (check_layout ~loc _1) loc ) -# 25628 "parsing/parser.ml" - in - { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = Obj.repr _v; - MenhirLib.EngineTypes.startp = _startpos; - MenhirLib.EngineTypes.endp = _endpos; - MenhirLib.EngineTypes.next = _menhir_stack; - }); - (fun _menhir_env -> - let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in - let { - MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = layout; - MenhirLib.EngineTypes.startp = _startpos_layout_; - MenhirLib.EngineTypes.endp = _endpos_layout_; - MenhirLib.EngineTypes.next = { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; - MenhirLib.EngineTypes.next = _menhir_stack; - }; - } = _menhir_stack in - let layout : (Asttypes.label Asttypes.loc) = Obj.magic layout in - let _1 : unit = Obj.magic _1 in - let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in - let _startpos = _startpos__1_ in - let _endpos = _endpos_layout_ in - let _v : (Parsetree.attribute) = -# 3725 "parsing/parser.mly" - ( Attr.mk ~loc:layout.loc layout (PStr []) ) -# 25660 "parsing/parser.ml" - in - { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = Obj.repr _v; - MenhirLib.EngineTypes.startp = _startpos; - MenhirLib.EngineTypes.endp = _endpos; - MenhirLib.EngineTypes.next = _menhir_stack; - }); - (fun _menhir_env -> - let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in - let { - MenhirLib.EngineTypes.state = _menhir_s; - MenhirLib.EngineTypes.semv = _1; - MenhirLib.EngineTypes.startp = _startpos__1_; - MenhirLib.EngineTypes.endp = _endpos__1_; - MenhirLib.EngineTypes.next = _menhir_stack; - } = _menhir_stack in - let _1 : (Asttypes.label) = Obj.magic _1 in - let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in - let _startpos = _startpos__1_ in - let _endpos = _endpos__1_ in - let _v : (Asttypes.label Asttypes.loc) = let _endpos = _endpos__1_ in - let _symbolstartpos = _startpos__1_ in - let _sloc = (_symbolstartpos, _endpos) in - -# 3717 "parsing/parser.mly" - ( let loc = make_loc _sloc in - ignore (check_layout ~loc _1 : const_layout); - mkloc _1 loc ) # 25690 "parsing/parser.ml" in { @@ -26039,7 +26039,7 @@ module Tables = struct let _5 : unit = Obj.magic _5 in let _3_inlined1 : (Parsetree.core_type) = Obj.magic _3_inlined1 in let _2 : unit = Obj.magic _2 in - let xs : ((Asttypes.label Asttypes.loc * Jane_asttypes.layout_annotation option) list) = Obj.magic xs in + let xs : ((Asttypes.label Asttypes.loc * Jane_asttypes.jkind_annotation option) list) = Obj.magic xs in let _3 : unit = Obj.magic _3 in let _1 : (Asttypes.label) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in @@ -26184,7 +26184,7 @@ module Tables = struct let _5 : unit = Obj.magic _5 in let _3_inlined1 : (Parsetree.core_type) = Obj.magic _3_inlined1 in let _2 : unit = Obj.magic _2 in - let xs : ((Asttypes.label Asttypes.loc * Jane_asttypes.layout_annotation option) list) = Obj.magic xs in + let xs : ((Asttypes.label Asttypes.loc * Jane_asttypes.jkind_annotation option) list) = Obj.magic xs in let _3 : unit = Obj.magic _3 in let _1 : (Asttypes.label) = Obj.magic _1 in let x : ((mode_annotation * (Lexing.position * Lexing.position)) list) = Obj.magic x in @@ -26330,7 +26330,7 @@ module Tables = struct let _7 : unit = Obj.magic _7 in let _6 : (Parsetree.core_type) = Obj.magic _6 in let _5 : unit = Obj.magic _5 in - let _4 : ((string Asttypes.loc * Jane_asttypes.layout_annotation option) list) = Obj.magic _4 in + let _4 : ((string Asttypes.loc * Jane_asttypes.jkind_annotation option) list) = Obj.magic _4 in let _3 : unit = Obj.magic _3 in let _2 : unit = Obj.magic _2 in let _1 : (Asttypes.label) = Obj.magic _1 in @@ -26977,7 +26977,7 @@ module Tables = struct } = _menhir_stack in let inner_type : (Parsetree.core_type) = Obj.magic inner_type in let _2_inlined1 : unit = Obj.magic _2_inlined1 in - let xs : ((Asttypes.label Asttypes.loc * Jane_asttypes.layout_annotation option) list) = Obj.magic xs in + let xs : ((Asttypes.label Asttypes.loc * Jane_asttypes.jkind_annotation option) list) = Obj.magic xs in let _2 : unit = Obj.magic _2 in let pat : (Parsetree.pattern) = Obj.magic pat in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in @@ -28092,9 +28092,9 @@ module Tables = struct MenhirLib.EngineTypes.endp = _endpos_kind_priv_manifest_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = layout; - MenhirLib.EngineTypes.startp = _startpos_layout_; - MenhirLib.EngineTypes.endp = _endpos_layout_; + MenhirLib.EngineTypes.semv = jkind; + MenhirLib.EngineTypes.startp = _startpos_jkind_; + MenhirLib.EngineTypes.endp = _endpos_jkind_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; MenhirLib.EngineTypes.semv = _1_inlined2; @@ -28129,7 +28129,7 @@ module Tables = struct let _1_inlined3 : (Parsetree.attributes) = Obj.magic _1_inlined3 in let xs_inlined1 : ((Parsetree.core_type * Parsetree.core_type * Ast_helper.loc) list) = Obj.magic xs_inlined1 in let kind_priv_manifest : (Parsetree.type_kind * Asttypes.private_flag * Parsetree.core_type option) = Obj.magic kind_priv_manifest in - let layout : (Parsetree.attribute option) = Obj.magic layout in + let jkind : (Parsetree.attribute option) = Obj.magic jkind in let _1_inlined2 : ( # 1084 "parsing/parser.mly" (string) @@ -28201,7 +28201,7 @@ module Tables = struct let attrs = attrs1 @ attrs2 in let loc = make_loc _sloc in let text = symbol_text _symbolstartpos in - Type.mk id ~params ?layout ~cstrs ~kind ~priv ?manifest ~attrs ~loc ~docs ~text + Type.mk id ~params ?jkind ~cstrs ~kind ~priv ?manifest ~attrs ~loc ~docs ~text ) # 28207 "parsing/parser.ml" @@ -28265,9 +28265,9 @@ module Tables = struct MenhirLib.EngineTypes.endp = _endpos__1_inlined3_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = layout; - MenhirLib.EngineTypes.startp = _startpos_layout_; - MenhirLib.EngineTypes.endp = _endpos_layout_; + MenhirLib.EngineTypes.semv = jkind; + MenhirLib.EngineTypes.startp = _startpos_jkind_; + MenhirLib.EngineTypes.endp = _endpos_jkind_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; MenhirLib.EngineTypes.semv = _1_inlined2; @@ -28304,7 +28304,7 @@ module Tables = struct let xs_inlined1 : ((Parsetree.core_type * Parsetree.core_type * Ast_helper.loc) list) = Obj.magic xs_inlined1 in let _2 : (Parsetree.type_kind * Asttypes.private_flag * Parsetree.core_type option) = Obj.magic _2 in let _1_inlined3 : unit = Obj.magic _1_inlined3 in - let layout : (Parsetree.attribute option) = Obj.magic layout in + let jkind : (Parsetree.attribute option) = Obj.magic jkind in let _1_inlined2 : ( # 1084 "parsing/parser.mly" (string) @@ -28381,7 +28381,7 @@ module Tables = struct let attrs = attrs1 @ attrs2 in let loc = make_loc _sloc in let text = symbol_text _symbolstartpos in - Type.mk id ~params ?layout ~cstrs ~kind ~priv ?manifest ~attrs ~loc ~docs ~text + Type.mk id ~params ?jkind ~cstrs ~kind ~priv ?manifest ~attrs ~loc ~docs ~text ) # 28387 "parsing/parser.ml" @@ -30817,7 +30817,7 @@ module Tables = struct let _10 : unit = Obj.magic _10 in let _9 : (Parsetree.core_type) = Obj.magic _9 in let _8 : unit = Obj.magic _8 in - let _7 : ((string Asttypes.loc * Jane_asttypes.layout_annotation option) list) = Obj.magic _7 in + let _7 : ((string Asttypes.loc * Jane_asttypes.jkind_annotation option) list) = Obj.magic _7 in let _6 : unit = Obj.magic _6 in let _5 : unit = Obj.magic _5 in let _1_inlined1 : ( @@ -30967,7 +30967,7 @@ module Tables = struct let _10 : unit = Obj.magic _10 in let _9 : (Parsetree.core_type) = Obj.magic _9 in let _8 : unit = Obj.magic _8 in - let _7 : ((string Asttypes.loc * Jane_asttypes.layout_annotation option) list) = Obj.magic _7 in + let _7 : ((string Asttypes.loc * Jane_asttypes.jkind_annotation option) list) = Obj.magic _7 in let _6 : unit = Obj.magic _6 in let _5 : unit = Obj.magic _5 in let _1_inlined2 : ( @@ -33966,7 +33966,7 @@ module Tables = struct let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in - let _v : (string Asttypes.loc * Jane_asttypes.layout_annotation option) = let _1 = + let _v : (string Asttypes.loc * Jane_asttypes.jkind_annotation option) = let _1 = let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in let _sloc = (_symbolstartpos, _endpos) in @@ -33997,9 +33997,9 @@ module Tables = struct MenhirLib.EngineTypes.endp = _endpos__5_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = layout; - MenhirLib.EngineTypes.startp = _startpos_layout_; - MenhirLib.EngineTypes.endp = _endpos_layout_; + MenhirLib.EngineTypes.semv = jkind; + MenhirLib.EngineTypes.startp = _startpos_jkind_; + MenhirLib.EngineTypes.endp = _endpos_jkind_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; MenhirLib.EngineTypes.semv = _3; @@ -34022,7 +34022,7 @@ module Tables = struct }; } = _menhir_stack in let _5 : unit = Obj.magic _5 in - let layout : (Jane_asttypes.layout_annotation) = Obj.magic layout in + let jkind : (Jane_asttypes.jkind_annotation) = Obj.magic jkind in let _3 : unit = Obj.magic _3 in let _1_inlined1 : ( # 1084 "parsing/parser.mly" @@ -34033,7 +34033,7 @@ module Tables = struct let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in let _endpos = _endpos__5_ in - let _v : (string Asttypes.loc * Jane_asttypes.layout_annotation option) = let name = + let _v : (string Asttypes.loc * Jane_asttypes.jkind_annotation option) = let name = let (_endpos__1_, _startpos__1_, _1) = (_endpos__1_inlined1_, _startpos__1_inlined1_, _1_inlined1) in let _endpos = _endpos__1_ in let _symbolstartpos = _startpos__1_ in @@ -34046,7 +34046,7 @@ module Tables = struct in # 3356 "parsing/parser.mly" - ( name, Some layout ) + ( name, Some jkind ) # 34051 "parsing/parser.ml" in { @@ -34065,11 +34065,11 @@ module Tables = struct MenhirLib.EngineTypes.endp = _endpos__1_; MenhirLib.EngineTypes.next = _menhir_stack; } = _menhir_stack in - let _1 : ((string Asttypes.loc * Jane_asttypes.layout_annotation option) list) = Obj.magic _1 in + let _1 : ((string Asttypes.loc * Jane_asttypes.jkind_annotation option) list) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in let _endpos = _endpos__1_ in - let _v : ((string Asttypes.loc * Jane_asttypes.layout_annotation option) list) = + let _v : ((string Asttypes.loc * Jane_asttypes.jkind_annotation option) list) = # 3351 "parsing/parser.mly" ( _1 ) # 34076 "parsing/parser.ml" @@ -34406,11 +34406,11 @@ module Tables = struct MenhirLib.EngineTypes.endp = _endpos_x_; MenhirLib.EngineTypes.next = _menhir_stack; } = _menhir_stack in - let x : (string Asttypes.loc * Jane_asttypes.layout_annotation option) = Obj.magic x in + let x : (string Asttypes.loc * Jane_asttypes.jkind_annotation option) = Obj.magic x in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos_x_ in let _endpos = _endpos_x_ in - let _v : ((string Asttypes.loc * Jane_asttypes.layout_annotation option) list) = + let _v : ((string Asttypes.loc * Jane_asttypes.jkind_annotation option) list) = # 221 "" ( [ x ] ) # 34417 "parsing/parser.ml" @@ -34437,12 +34437,12 @@ module Tables = struct MenhirLib.EngineTypes.next = _menhir_stack; }; } = _menhir_stack in - let xs : ((string Asttypes.loc * Jane_asttypes.layout_annotation option) list) = Obj.magic xs in - let x : (string Asttypes.loc * Jane_asttypes.layout_annotation option) = Obj.magic x in + let xs : ((string Asttypes.loc * Jane_asttypes.jkind_annotation option) list) = Obj.magic xs in + let x : (string Asttypes.loc * Jane_asttypes.jkind_annotation option) = Obj.magic x in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos_x_ in let _endpos = _endpos_xs_ in - let _v : ((string Asttypes.loc * Jane_asttypes.layout_annotation option) list) = + let _v : ((string Asttypes.loc * Jane_asttypes.jkind_annotation option) list) = # 223 "" ( x :: xs ) # 34449 "parsing/parser.ml" @@ -39680,9 +39680,9 @@ module Tables = struct let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in let { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = layout; - MenhirLib.EngineTypes.startp = _startpos_layout_; - MenhirLib.EngineTypes.endp = _endpos_layout_; + MenhirLib.EngineTypes.semv = jkind; + MenhirLib.EngineTypes.startp = _startpos_jkind_; + MenhirLib.EngineTypes.endp = _endpos_jkind_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; MenhirLib.EngineTypes.semv = _3; @@ -39715,7 +39715,7 @@ module Tables = struct }; }; } = _menhir_stack in - let layout : (Jane_asttypes.layout_annotation) = Obj.magic layout in + let jkind : (Jane_asttypes.jkind_annotation) = Obj.magic jkind in let _3 : unit = Obj.magic _3 in let _1_inlined2 : (Parsetree.attributes) = Obj.magic _1_inlined2 in let _2 : (Asttypes.label) = Obj.magic _2 in @@ -39723,7 +39723,7 @@ module Tables = struct let _1 : (Asttypes.variance * Asttypes.injectivity) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in - let _endpos = _endpos_layout_ in + let _endpos = _endpos_jkind_ in let _v : (Parsetree.core_type * (Asttypes.variance * Asttypes.injectivity)) = let _2 = let (_startpos__1_, _1_inlined1) = (_startpos__1_inlined1_, _1_inlined2) in let attrs = @@ -39740,13 +39740,13 @@ module Tables = struct # 39741 "parsing/parser.ml" in let _startpos_name_ = _startpos__1_ in - let _endpos = _endpos_layout_ in + let _endpos = _endpos_jkind_ in let _symbolstartpos = _startpos_name_ in let _sloc = (_symbolstartpos, _endpos) in # 3733 "parsing/parser.mly" ( Jane_syntax.Core_type.core_type_of ~loc:(make_loc _sloc) ~attrs - (Jtyp_layout (Ltyp_var { name; layout })) ) + (Jtyp_layout (Ltyp_var { name; jkind })) ) # 39751 "parsing/parser.ml" in @@ -39766,9 +39766,9 @@ module Tables = struct let _menhir_stack = _menhir_env.MenhirLib.EngineTypes.stack in let { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = layout; - MenhirLib.EngineTypes.startp = _startpos_layout_; - MenhirLib.EngineTypes.endp = _endpos_layout_; + MenhirLib.EngineTypes.semv = jkind; + MenhirLib.EngineTypes.startp = _startpos_jkind_; + MenhirLib.EngineTypes.endp = _endpos_jkind_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; MenhirLib.EngineTypes.semv = _3; @@ -39795,14 +39795,14 @@ module Tables = struct }; }; } = _menhir_stack in - let layout : (Jane_asttypes.layout_annotation) = Obj.magic layout in + let jkind : (Jane_asttypes.jkind_annotation) = Obj.magic jkind in let _3 : unit = Obj.magic _3 in let _1_inlined2 : (Parsetree.attributes) = Obj.magic _1_inlined2 in let _1_inlined1 : unit = Obj.magic _1_inlined1 in let _1 : (Asttypes.variance * Asttypes.injectivity) = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in - let _endpos = _endpos_layout_ in + let _endpos = _endpos_jkind_ in let _v : (Parsetree.core_type * (Asttypes.variance * Asttypes.injectivity)) = let _2 = let (_startpos__1_, _1_inlined1) = (_startpos__1_inlined1_, _1_inlined2) in let attrs = @@ -39819,13 +39819,13 @@ module Tables = struct # 39820 "parsing/parser.ml" in let _startpos_name_ = _startpos__1_ in - let _endpos = _endpos_layout_ in + let _endpos = _endpos_jkind_ in let _symbolstartpos = _startpos_name_ in let _sloc = (_symbolstartpos, _endpos) in # 3733 "parsing/parser.mly" ( Jane_syntax.Core_type.core_type_of ~loc:(make_loc _sloc) ~attrs - (Jtyp_layout (Ltyp_var { name; layout })) ) + (Jtyp_layout (Ltyp_var { name; jkind })) ) # 39830 "parsing/parser.ml" in @@ -42088,7 +42088,7 @@ module Tables = struct } = _menhir_stack in let _3 : (Parsetree.core_type) = Obj.magic _3 in let _2 : unit = Obj.magic _2 in - let xs : ((Asttypes.label Asttypes.loc * Jane_asttypes.layout_annotation option) list) = Obj.magic xs in + let xs : ((Asttypes.label Asttypes.loc * Jane_asttypes.jkind_annotation option) list) = Obj.magic xs in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos_xs_ in let _endpos = _endpos__3_ in @@ -42189,7 +42189,7 @@ module Tables = struct } = _menhir_stack in let _1 : (Parsetree.core_type) = Obj.magic _1 in let _2 : unit = Obj.magic _2 in - let xs : ((Asttypes.label Asttypes.loc * Jane_asttypes.layout_annotation option) list) = Obj.magic xs in + let xs : ((Asttypes.label Asttypes.loc * Jane_asttypes.jkind_annotation option) list) = Obj.magic xs in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos_xs_ in let _endpos = _endpos__1_ in @@ -42728,7 +42728,7 @@ module Tables = struct MenhirLib.EngineTypes.next = _menhir_stack; } = _menhir_stack in let d : (Ast_helper.str * - (Asttypes.label Asttypes.loc * Jane_asttypes.layout_annotation option) list * + (Asttypes.label Asttypes.loc * Jane_asttypes.jkind_annotation option) list * Parsetree.constructor_arguments * Parsetree.core_type option * Parsetree.attributes * Location.t * Docstrings.info) = Obj.magic d in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in @@ -42737,9 +42737,9 @@ module Tables = struct let _v : (Parsetree.constructor_declaration list) = let x = # 3811 "parsing/parser.mly" ( - let cid, vars_layouts, args, res, attrs, loc, info = d in + let cid, vars_jkinds, args, res, attrs, loc, info = d in Jane_syntax.Layouts.constructor_declaration_of - cid ~vars_layouts ~args ~res ~attrs ~loc ~info + cid ~vars_jkinds ~args ~res ~attrs ~loc ~info ) # 42745 "parsing/parser.ml" in @@ -42765,7 +42765,7 @@ module Tables = struct MenhirLib.EngineTypes.next = _menhir_stack; } = _menhir_stack in let d : (Ast_helper.str * - (Asttypes.label Asttypes.loc * Jane_asttypes.layout_annotation option) list * + (Asttypes.label Asttypes.loc * Jane_asttypes.jkind_annotation option) list * Parsetree.constructor_arguments * Parsetree.core_type option * Parsetree.attributes * Location.t * Docstrings.info) = Obj.magic d in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in @@ -42774,9 +42774,9 @@ module Tables = struct let _v : (Parsetree.constructor_declaration list) = let x = # 3811 "parsing/parser.mly" ( - let cid, vars_layouts, args, res, attrs, loc, info = d in + let cid, vars_jkinds, args, res, attrs, loc, info = d in Jane_syntax.Layouts.constructor_declaration_of - cid ~vars_layouts ~args ~res ~attrs ~loc ~info + cid ~vars_jkinds ~args ~res ~attrs ~loc ~info ) # 42782 "parsing/parser.ml" in @@ -42808,7 +42808,7 @@ module Tables = struct }; } = _menhir_stack in let d : (Ast_helper.str * - (Asttypes.label Asttypes.loc * Jane_asttypes.layout_annotation option) list * + (Asttypes.label Asttypes.loc * Jane_asttypes.jkind_annotation option) list * Parsetree.constructor_arguments * Parsetree.core_type option * Parsetree.attributes * Location.t * Docstrings.info) = Obj.magic d in let xs : (Parsetree.constructor_declaration list) = Obj.magic xs in @@ -42818,9 +42818,9 @@ module Tables = struct let _v : (Parsetree.constructor_declaration list) = let x = # 3811 "parsing/parser.mly" ( - let cid, vars_layouts, args, res, attrs, loc, info = d in + let cid, vars_jkinds, args, res, attrs, loc, info = d in Jane_syntax.Layouts.constructor_declaration_of - cid ~vars_layouts ~args ~res ~attrs ~loc ~info + cid ~vars_jkinds ~args ~res ~attrs ~loc ~info ) # 42826 "parsing/parser.ml" in @@ -42846,7 +42846,7 @@ module Tables = struct MenhirLib.EngineTypes.next = _menhir_stack; } = _menhir_stack in let d : (Ast_helper.str * - (Asttypes.label Asttypes.loc * Jane_asttypes.layout_annotation option) list * + (Asttypes.label Asttypes.loc * Jane_asttypes.jkind_annotation option) list * Parsetree.constructor_arguments * Parsetree.core_type option * Parsetree.attributes * Location.t * Docstrings.info) = Obj.magic d in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in @@ -42856,10 +42856,10 @@ module Tables = struct let _1 = # 3950 "parsing/parser.mly" ( - let name, vars_layouts, args, res, attrs, loc, info = d in + let name, vars_jkinds, args, res, attrs, loc, info = d in Jane_syntax.Extension_constructor.extension_constructor_of ~loc ~attrs ~info ~name - (Jext_layout (Lext_decl(vars_layouts, args, res))) + (Jext_layout (Lext_decl(vars_jkinds, args, res))) ) # 42865 "parsing/parser.ml" in @@ -42921,7 +42921,7 @@ module Tables = struct MenhirLib.EngineTypes.next = _menhir_stack; } = _menhir_stack in let d : (Ast_helper.str * - (Asttypes.label Asttypes.loc * Jane_asttypes.layout_annotation option) list * + (Asttypes.label Asttypes.loc * Jane_asttypes.jkind_annotation option) list * Parsetree.constructor_arguments * Parsetree.core_type option * Parsetree.attributes * Location.t * Docstrings.info) = Obj.magic d in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in @@ -42931,10 +42931,10 @@ module Tables = struct let _1 = # 3950 "parsing/parser.mly" ( - let name, vars_layouts, args, res, attrs, loc, info = d in + let name, vars_jkinds, args, res, attrs, loc, info = d in Jane_syntax.Extension_constructor.extension_constructor_of ~loc ~attrs ~info ~name - (Jext_layout (Lext_decl(vars_layouts, args, res))) + (Jext_layout (Lext_decl(vars_jkinds, args, res))) ) # 42940 "parsing/parser.ml" in @@ -43002,7 +43002,7 @@ module Tables = struct }; } = _menhir_stack in let d : (Ast_helper.str * - (Asttypes.label Asttypes.loc * Jane_asttypes.layout_annotation option) list * + (Asttypes.label Asttypes.loc * Jane_asttypes.jkind_annotation option) list * Parsetree.constructor_arguments * Parsetree.core_type option * Parsetree.attributes * Location.t * Docstrings.info) = Obj.magic d in let xs : (Parsetree.extension_constructor list) = Obj.magic xs in @@ -43013,10 +43013,10 @@ module Tables = struct let _1 = # 3950 "parsing/parser.mly" ( - let name, vars_layouts, args, res, attrs, loc, info = d in + let name, vars_jkinds, args, res, attrs, loc, info = d in Jane_syntax.Extension_constructor.extension_constructor_of ~loc ~attrs ~info ~name - (Jext_layout (Lext_decl(vars_layouts, args, res))) + (Jext_layout (Lext_decl(vars_jkinds, args, res))) ) # 43022 "parsing/parser.ml" in @@ -43085,7 +43085,7 @@ module Tables = struct MenhirLib.EngineTypes.next = _menhir_stack; } = _menhir_stack in let d : (Ast_helper.str * - (Asttypes.label Asttypes.loc * Jane_asttypes.layout_annotation option) list * + (Asttypes.label Asttypes.loc * Jane_asttypes.jkind_annotation option) list * Parsetree.constructor_arguments * Parsetree.core_type option * Parsetree.attributes * Location.t * Docstrings.info) = Obj.magic d in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in @@ -43094,10 +43094,10 @@ module Tables = struct let _v : (Parsetree.extension_constructor list) = let x = # 3950 "parsing/parser.mly" ( - let name, vars_layouts, args, res, attrs, loc, info = d in + let name, vars_jkinds, args, res, attrs, loc, info = d in Jane_syntax.Extension_constructor.extension_constructor_of ~loc ~attrs ~info ~name - (Jext_layout (Lext_decl(vars_layouts, args, res))) + (Jext_layout (Lext_decl(vars_jkinds, args, res))) ) # 43103 "parsing/parser.ml" in @@ -43123,7 +43123,7 @@ module Tables = struct MenhirLib.EngineTypes.next = _menhir_stack; } = _menhir_stack in let d : (Ast_helper.str * - (Asttypes.label Asttypes.loc * Jane_asttypes.layout_annotation option) list * + (Asttypes.label Asttypes.loc * Jane_asttypes.jkind_annotation option) list * Parsetree.constructor_arguments * Parsetree.core_type option * Parsetree.attributes * Location.t * Docstrings.info) = Obj.magic d in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in @@ -43132,10 +43132,10 @@ module Tables = struct let _v : (Parsetree.extension_constructor list) = let x = # 3950 "parsing/parser.mly" ( - let name, vars_layouts, args, res, attrs, loc, info = d in + let name, vars_jkinds, args, res, attrs, loc, info = d in Jane_syntax.Extension_constructor.extension_constructor_of ~loc ~attrs ~info ~name - (Jext_layout (Lext_decl(vars_layouts, args, res))) + (Jext_layout (Lext_decl(vars_jkinds, args, res))) ) # 43141 "parsing/parser.ml" in @@ -43167,7 +43167,7 @@ module Tables = struct }; } = _menhir_stack in let d : (Ast_helper.str * - (Asttypes.label Asttypes.loc * Jane_asttypes.layout_annotation option) list * + (Asttypes.label Asttypes.loc * Jane_asttypes.jkind_annotation option) list * Parsetree.constructor_arguments * Parsetree.core_type option * Parsetree.attributes * Location.t * Docstrings.info) = Obj.magic d in let xs : (Parsetree.extension_constructor list) = Obj.magic xs in @@ -43177,10 +43177,10 @@ module Tables = struct let _v : (Parsetree.extension_constructor list) = let x = # 3950 "parsing/parser.mly" ( - let name, vars_layouts, args, res, attrs, loc, info = d in + let name, vars_jkinds, args, res, attrs, loc, info = d in Jane_syntax.Extension_constructor.extension_constructor_of ~loc ~attrs ~info ~name - (Jext_layout (Lext_decl(vars_layouts, args, res))) + (Jext_layout (Lext_decl(vars_jkinds, args, res))) ) # 43186 "parsing/parser.ml" in @@ -43590,7 +43590,7 @@ module Tables = struct let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in let _endpos = _endpos__1_inlined1_ in - let _v : ((Asttypes.label Asttypes.loc * Jane_asttypes.layout_annotation option) list) = let x = + let _v : ((Asttypes.label Asttypes.loc * Jane_asttypes.jkind_annotation option) list) = let x = let _2 = let (_endpos__1_, _startpos__1_, _1) = (_endpos__1_inlined1_, _startpos__1_inlined1_, _1_inlined1) in let _endpos = _endpos__1_ in @@ -43629,9 +43629,9 @@ module Tables = struct MenhirLib.EngineTypes.endp = _endpos__6_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = layout; - MenhirLib.EngineTypes.startp = _startpos_layout_; - MenhirLib.EngineTypes.endp = _endpos_layout_; + MenhirLib.EngineTypes.semv = jkind; + MenhirLib.EngineTypes.startp = _startpos_jkind_; + MenhirLib.EngineTypes.endp = _endpos_jkind_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; MenhirLib.EngineTypes.semv = _4; @@ -43660,7 +43660,7 @@ module Tables = struct }; } = _menhir_stack in let _6 : unit = Obj.magic _6 in - let layout : (Jane_asttypes.layout_annotation) = Obj.magic layout in + let jkind : (Jane_asttypes.jkind_annotation) = Obj.magic jkind in let _4 : unit = Obj.magic _4 in let _1_inlined1 : (Asttypes.label) = Obj.magic _1_inlined1 in let _2 : unit = Obj.magic _2 in @@ -43668,7 +43668,7 @@ module Tables = struct let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in let _endpos = _endpos__6_ in - let _v : ((Asttypes.label Asttypes.loc * Jane_asttypes.layout_annotation option) list) = let x = + let _v : ((Asttypes.label Asttypes.loc * Jane_asttypes.jkind_annotation option) list) = let x = let tyvar = let (_endpos__1_, _startpos__1_, _1) = (_endpos__1_inlined1_, _startpos__1_inlined1_, _1_inlined1) in let _endpos = _endpos__1_ in @@ -43682,7 +43682,7 @@ module Tables = struct in # 4012 "parsing/parser.mly" - ( (tyvar, Some layout) ) + ( (tyvar, Some jkind) ) # 43687 "parsing/parser.ml" in @@ -43721,11 +43721,11 @@ module Tables = struct } = _menhir_stack in let _1_inlined1 : (Asttypes.label) = Obj.magic _1_inlined1 in let _1 : unit = Obj.magic _1 in - let xs : ((Asttypes.label Asttypes.loc * Jane_asttypes.layout_annotation option) list) = Obj.magic xs in + let xs : ((Asttypes.label Asttypes.loc * Jane_asttypes.jkind_annotation option) list) = Obj.magic xs in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos_xs_ in let _endpos = _endpos__1_inlined1_ in - let _v : ((Asttypes.label Asttypes.loc * Jane_asttypes.layout_annotation option) list) = let x = + let _v : ((Asttypes.label Asttypes.loc * Jane_asttypes.jkind_annotation option) list) = let x = let _2 = let (_endpos__1_, _startpos__1_, _1) = (_endpos__1_inlined1_, _startpos__1_inlined1_, _1_inlined1) in let _endpos = _endpos__1_ in @@ -43764,9 +43764,9 @@ module Tables = struct MenhirLib.EngineTypes.endp = _endpos__6_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; - MenhirLib.EngineTypes.semv = layout; - MenhirLib.EngineTypes.startp = _startpos_layout_; - MenhirLib.EngineTypes.endp = _endpos_layout_; + MenhirLib.EngineTypes.semv = jkind; + MenhirLib.EngineTypes.startp = _startpos_jkind_; + MenhirLib.EngineTypes.endp = _endpos_jkind_; MenhirLib.EngineTypes.next = { MenhirLib.EngineTypes.state = _; MenhirLib.EngineTypes.semv = _4; @@ -43801,16 +43801,16 @@ module Tables = struct }; } = _menhir_stack in let _6 : unit = Obj.magic _6 in - let layout : (Jane_asttypes.layout_annotation) = Obj.magic layout in + let jkind : (Jane_asttypes.jkind_annotation) = Obj.magic jkind in let _4 : unit = Obj.magic _4 in let _1_inlined1 : (Asttypes.label) = Obj.magic _1_inlined1 in let _2 : unit = Obj.magic _2 in let _1 : unit = Obj.magic _1 in - let xs : ((Asttypes.label Asttypes.loc * Jane_asttypes.layout_annotation option) list) = Obj.magic xs in + let xs : ((Asttypes.label Asttypes.loc * Jane_asttypes.jkind_annotation option) list) = Obj.magic xs in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos_xs_ in let _endpos = _endpos__6_ in - let _v : ((Asttypes.label Asttypes.loc * Jane_asttypes.layout_annotation option) list) = let x = + let _v : ((Asttypes.label Asttypes.loc * Jane_asttypes.jkind_annotation option) list) = let x = let tyvar = let (_endpos__1_, _startpos__1_, _1) = (_endpos__1_inlined1_, _startpos__1_inlined1_, _1_inlined1) in let _endpos = _endpos__1_ in @@ -43824,7 +43824,7 @@ module Tables = struct in # 4012 "parsing/parser.mly" - ( (tyvar, Some layout) ) + ( (tyvar, Some jkind) ) # 43829 "parsing/parser.ml" in @@ -46843,7 +46843,7 @@ module Tables = struct } = _menhir_stack in let _1_inlined4 : (Parsetree.attributes) = Obj.magic _1_inlined4 in let _1_inlined3 : (Parsetree.attributes) = Obj.magic _1_inlined3 in - let vars_args_res : ((Asttypes.label Asttypes.loc * Jane_asttypes.layout_annotation option) list * + let vars_args_res : ((Asttypes.label Asttypes.loc * Jane_asttypes.jkind_annotation option) list * Parsetree.constructor_arguments * Parsetree.core_type option) = Obj.magic vars_args_res in let _1_inlined2 : (Asttypes.label) = Obj.magic _1_inlined2 in let _1_inlined1 : (Parsetree.attributes) = Obj.magic _1_inlined1 in @@ -46895,13 +46895,13 @@ module Tables = struct let _sloc = (_symbolstartpos, _endpos) in # 3842 "parsing/parser.mly" - ( let vars_layouts, args, res = vars_args_res in + ( let vars_jkinds, args, res = vars_args_res in let loc = make_loc (_startpos, _endpos_attrs2_) in let docs = symbol_docs _sloc in let ext_ctor = Jane_syntax.Extension_constructor.extension_constructor_of ~loc ~name:id ~attrs:(attrs1 @ attrs2) ~docs - (Jext_layout (Lext_decl (vars_layouts, args, res))) + (Jext_layout (Lext_decl (vars_jkinds, args, res))) in Te.mk_exception ~attrs ext_ctor, ext ) # 46908 "parsing/parser.ml" @@ -60444,7 +60444,7 @@ module Tables = struct 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 * Jane_asttypes.layout_annotation option) list) = Obj.magic xs in + let xs : ((Asttypes.label Asttypes.loc * Jane_asttypes.jkind_annotation option) list) = Obj.magic xs in let _1 : unit = Obj.magic _1 in let label : (string) = Obj.magic label in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in @@ -60705,7 +60705,7 @@ module Tables = struct 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 * Jane_asttypes.layout_annotation option) list) = Obj.magic xs in + let xs : ((Asttypes.label Asttypes.loc * Jane_asttypes.jkind_annotation option) list) = Obj.magic xs in let _1 : unit = Obj.magic _1 in let x : ((mode_annotation * (Lexing.position * Lexing.position)) list) = Obj.magic x in let label : (string) = Obj.magic label in @@ -60974,7 +60974,7 @@ module Tables = struct 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 * Jane_asttypes.layout_annotation option) list) = Obj.magic xs in + let xs : ((Asttypes.label Asttypes.loc * Jane_asttypes.jkind_annotation option) list) = Obj.magic xs in let _1 : unit = Obj.magic _1 in let _2 : unit = Obj.magic _2 in let label : ( @@ -61257,7 +61257,7 @@ module Tables = struct 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 * Jane_asttypes.layout_annotation option) list) = Obj.magic xs in + let xs : ((Asttypes.label Asttypes.loc * Jane_asttypes.jkind_annotation option) list) = Obj.magic xs in let _1 : unit = Obj.magic _1 in let x : ((mode_annotation * (Lexing.position * Lexing.position)) list) = Obj.magic x in let _2 : unit = Obj.magic _2 in @@ -61530,7 +61530,7 @@ module Tables = struct 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 * Jane_asttypes.layout_annotation option) list) = Obj.magic xs in + let xs : ((Asttypes.label Asttypes.loc * Jane_asttypes.jkind_annotation option) list) = Obj.magic xs in let _1 : unit = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in @@ -61777,7 +61777,7 @@ module Tables = struct 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 * Jane_asttypes.layout_annotation option) list) = Obj.magic xs in + let xs : ((Asttypes.label Asttypes.loc * Jane_asttypes.jkind_annotation option) list) = Obj.magic xs in let _1 : unit = Obj.magic _1 in let x : ((mode_annotation * (Lexing.position * Lexing.position)) list) = Obj.magic x in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in @@ -62032,7 +62032,7 @@ module Tables = struct 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 * Jane_asttypes.layout_annotation option) list) = Obj.magic xs in + let xs : ((Asttypes.label Asttypes.loc * Jane_asttypes.jkind_annotation option) list) = Obj.magic xs in let _1 : unit = Obj.magic _1 in let label : (string) = Obj.magic label in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in @@ -62215,7 +62215,7 @@ module Tables = struct 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 * Jane_asttypes.layout_annotation option) list) = Obj.magic xs in + let xs : ((Asttypes.label Asttypes.loc * Jane_asttypes.jkind_annotation option) list) = Obj.magic xs in let _1 : unit = Obj.magic _1 in let label : (string) = Obj.magic label in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in @@ -62622,7 +62622,7 @@ module Tables = struct 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 * Jane_asttypes.layout_annotation option) list) = Obj.magic xs in + let xs : ((Asttypes.label Asttypes.loc * Jane_asttypes.jkind_annotation option) list) = Obj.magic xs in let _1 : unit = Obj.magic _1 in let x : ((mode_annotation * (Lexing.position * Lexing.position)) list) = Obj.magic x in let label : (string) = Obj.magic label in @@ -62812,7 +62812,7 @@ module Tables = struct 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 * Jane_asttypes.layout_annotation option) list) = Obj.magic xs in + let xs : ((Asttypes.label Asttypes.loc * Jane_asttypes.jkind_annotation option) list) = Obj.magic xs in let _1 : unit = Obj.magic _1 in let x : ((mode_annotation * (Lexing.position * Lexing.position)) list) = Obj.magic x in let label : (string) = Obj.magic label in @@ -63236,7 +63236,7 @@ module Tables = struct 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 * Jane_asttypes.layout_annotation option) list) = Obj.magic xs in + let xs : ((Asttypes.label Asttypes.loc * Jane_asttypes.jkind_annotation option) list) = Obj.magic xs in let _1 : unit = Obj.magic _1 in let _2 : unit = Obj.magic _2 in let label : ( @@ -63430,7 +63430,7 @@ module Tables = struct 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 * Jane_asttypes.layout_annotation option) list) = Obj.magic xs in + let xs : ((Asttypes.label Asttypes.loc * Jane_asttypes.jkind_annotation option) list) = Obj.magic xs in let _1 : unit = Obj.magic _1 in let _2 : unit = Obj.magic _2 in let label : ( @@ -63870,7 +63870,7 @@ module Tables = struct 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 * Jane_asttypes.layout_annotation option) list) = Obj.magic xs in + let xs : ((Asttypes.label Asttypes.loc * Jane_asttypes.jkind_annotation option) list) = Obj.magic xs in let _1 : unit = Obj.magic _1 in let x : ((mode_annotation * (Lexing.position * Lexing.position)) list) = Obj.magic x in let _2 : unit = Obj.magic _2 in @@ -64071,7 +64071,7 @@ module Tables = struct 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 * Jane_asttypes.layout_annotation option) list) = Obj.magic xs in + let xs : ((Asttypes.label Asttypes.loc * Jane_asttypes.jkind_annotation option) list) = Obj.magic xs in let _1 : unit = Obj.magic _1 in let x : ((mode_annotation * (Lexing.position * Lexing.position)) list) = Obj.magic x in let _2 : unit = Obj.magic _2 in @@ -64510,7 +64510,7 @@ module Tables = struct 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 * Jane_asttypes.layout_annotation option) list) = Obj.magic xs in + let xs : ((Asttypes.label Asttypes.loc * Jane_asttypes.jkind_annotation option) list) = Obj.magic xs in let _1 : unit = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in @@ -64686,7 +64686,7 @@ module Tables = struct 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 * Jane_asttypes.layout_annotation option) list) = Obj.magic xs in + let xs : ((Asttypes.label Asttypes.loc * Jane_asttypes.jkind_annotation option) list) = Obj.magic xs in let _1 : unit = Obj.magic _1 in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in let _startpos = _startpos__1_ in @@ -65072,7 +65072,7 @@ module Tables = struct 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 * Jane_asttypes.layout_annotation option) list) = Obj.magic xs in + let xs : ((Asttypes.label Asttypes.loc * Jane_asttypes.jkind_annotation option) list) = Obj.magic xs in let _1 : unit = Obj.magic _1 in let x : ((mode_annotation * (Lexing.position * Lexing.position)) list) = Obj.magic x in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in @@ -65255,7 +65255,7 @@ module Tables = struct 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 * Jane_asttypes.layout_annotation option) list) = Obj.magic xs in + let xs : ((Asttypes.label Asttypes.loc * Jane_asttypes.jkind_annotation option) list) = Obj.magic xs in let _1 : unit = Obj.magic _1 in let x : ((mode_annotation * (Lexing.position * Lexing.position)) list) = Obj.magic x in let _endpos__0_ = _menhir_stack.MenhirLib.EngineTypes.endp in diff --git a/ocaml/boot/ocamlc b/ocaml/boot/ocamlc index a1ca58835bb..a1e00553e38 100755 Binary files a/ocaml/boot/ocamlc and b/ocaml/boot/ocamlc differ diff --git a/ocaml/boot/ocamllex b/ocaml/boot/ocamllex index ba4dd62a955..8b3aa5f3d6b 100755 Binary files a/ocaml/boot/ocamllex and b/ocaml/boot/ocamllex differ diff --git a/ocaml/debugger/.depend b/ocaml/debugger/.depend index 5bcb8ac4592..5598dac36bc 100644 --- a/ocaml/debugger/.depend +++ b/ocaml/debugger/.depend @@ -284,6 +284,7 @@ loadprinter.cmo : \ ../utils/misc.cmi \ ../parsing/longident.cmi \ ../utils/load_path.cmi \ + ../typing/jkind.cmi \ ../typing/ident.cmi \ ../typing/env.cmi \ ../otherlibs/dynlink/dynlink.cmi \ @@ -300,6 +301,7 @@ loadprinter.cmx : \ ../utils/misc.cmx \ ../parsing/longident.cmx \ ../utils/load_path.cmx \ + ../typing/jkind.cmx \ ../typing/ident.cmx \ ../typing/env.cmx \ ../otherlibs/dynlink/dynlink.cmx \ diff --git a/ocaml/debugger/loadprinter.ml b/ocaml/debugger/loadprinter.ml index f382bd65c84..92f310127a1 100644 --- a/ocaml/debugger/loadprinter.ml +++ b/ocaml/debugger/loadprinter.ml @@ -18,7 +18,6 @@ open Misc open Longident open Types -open Layouts (* Error report *) @@ -112,7 +111,7 @@ let match_printer_type desc typename = raise (Error(Unbound_identifier(Ldot(Lident "Topdirs", typename)))) in Ctype.begin_def(); - let ty_arg = Ctype.newvar Layout.(value ~why:Debug_printer_argument) in + let ty_arg = Ctype.newvar Jkind.(value ~why:Debug_printer_argument) in Ctype.unify (Lazy.force Env.initial_safe_string) (Ctype.newconstr printer_type [ty_arg]) (Ctype.instance desc.val_type); diff --git a/ocaml/lambda/matching.ml b/ocaml/lambda/matching.ml index a0ceec053e7..da4c078cc42 100644 --- a/ocaml/lambda/matching.ml +++ b/ocaml/lambda/matching.ml @@ -90,7 +90,6 @@ open Misc open Asttypes open Types -open Layouts open Typedtree open Lambda open Parmatch @@ -100,8 +99,8 @@ open Printpat module Scoped_location = Debuginfo.Scoped_location type error = - Non_value_layout of Layout.Violation.t - | Illegal_record_field of Layout.const + Non_value_layout of Jkind.Violation.t + | Illegal_record_field of Jkind.const exception Error of Location.t * error @@ -109,16 +108,16 @@ let dbg = false (* CR layouts v5: When we're ready to allow non-values, these can be deleted or changed to check for void. *) -let layout_must_be_value loc layout = - match Layout.(sub layout (value ~why:V1_safety_check)) with +let jkind_layout_must_be_value loc jkind = + match Jkind.(sub jkind (value ~why:V1_safety_check)) with | Ok _ -> () | Error e -> raise (Error (loc, Non_value_layout e)) (* CR layouts v5: This function is only used for sanity checking the typechecker. When we allow arbitrary layouts in structures, it will have outlived its usefulness and should be deleted. *) -let check_record_field_layout lbl = - match Layout.(get_default_value lbl.lbl_layout), lbl.lbl_repres with +let check_record_field_jkind lbl = + match Jkind.(get_default_value lbl.lbl_jkind), lbl.lbl_repres with | (Value | Immediate | Immediate64), _ -> () | Float64, Record_ufloat -> () | Float64, (Record_boxed _ | Record_inlined _ @@ -223,7 +222,7 @@ module Half_simple : sig type nonrec clause = pattern Non_empty_row.t clause val of_clause : - arg:lambda -> arg_sort:Layouts.sort -> General.clause -> clause + arg:lambda -> arg_sort:Jkind.sort -> General.clause -> clause end = struct include Patterns.Half_simple @@ -292,7 +291,7 @@ module Simple : sig val explode_or_pat : arg:lambda -> - arg_sort:Layouts.sort -> + arg_sort:Jkind.sort -> Half_simple.pattern -> mk_action:(vars:Ident.t list -> lambda) -> patbound_action_vars:Ident.t list -> @@ -955,7 +954,7 @@ end type 'row pattern_matching = { mutable cases : 'row list; - args : (lambda * let_kind * Layouts.sort * layout) list; + args : (lambda * let_kind * Jkind.sort * layout) list; (** args are not just Ident.t in at least the following cases: - when matching the arguments of a constructor, direct field projections are used (make_field_args) @@ -1695,7 +1694,7 @@ let make_line_matching get_expr_args head def = function } type 'a division = { - args : (lambda * let_kind * Layouts.sort * layout) list; + args : (lambda * let_kind * Jkind.sort * layout) list; cells : ('a * cell) list } @@ -1782,9 +1781,9 @@ let get_key_constr = function let get_pat_args_constr p rem = match p with - | { pat_desc = Tpat_construct (_, {cstr_arg_layouts}, args, _) } -> + | { pat_desc = Tpat_construct (_, {cstr_arg_jkinds}, args, _) } -> List.iteri - (fun i arg -> layout_must_be_value arg.pat_loc cstr_arg_layouts.(i)) + (fun i arg -> jkind_layout_must_be_value arg.pat_loc cstr_arg_jkinds.(i)) args; (* CR layouts v5: This sanity check will have to go (or be replaced with a void-specific check) when we have other non-value sorts *) @@ -1800,15 +1799,15 @@ let get_expr_args_constr ~scopes head (arg, _mut, sort, layout) rem = let loc = head_loc ~scopes head in (* CR layouts v5: This sanity check should be removed or changed to specifically check for void when we add other non-value sorts. *) - Array.iter (fun layout -> layout_must_be_value head.pat_loc layout) - cstr.cstr_arg_layouts; + Array.iter (fun jkind -> jkind_layout_must_be_value head.pat_loc jkind) + cstr.cstr_arg_jkinds; let make_field_accesses binding_kind first_pos last_pos argl = let rec make_args pos = if pos > last_pos then argl else (Lprim (Pfield (pos, Reads_agree), [ arg ], loc), binding_kind, - Sort.for_constructor_arg, layout_field) + Jkind.Sort.for_constructor_arg, layout_field) :: make_args (pos + 1) in make_args first_pos @@ -1841,7 +1840,7 @@ let get_expr_args_variant_nonconst ~scopes head (arg, _mut, _sort, _layout) rem = let loc = head_loc ~scopes head in let field_prim = nonconstant_variant_field 1 in - (Lprim (field_prim, [ arg ], loc), Alias, Sort.for_constructor_arg, + (Lprim (field_prim, [ arg ], loc), Alias, Jkind.Sort.for_constructor_arg, layout_field) :: rem @@ -2054,7 +2053,7 @@ let inline_lazy_force arg pos loc = let get_expr_args_lazy ~scopes head (arg, _mut, _sort, _layout) rem = let loc = head_loc ~scopes head in - (inline_lazy_force arg Rc_normal loc, Strict, Sort.for_lazy_body, + (inline_lazy_force arg Rc_normal loc, Strict, Jkind.Sort.for_lazy_body, layout_lazy_contents) :: rem let divide_lazy ~scopes head ctx pm = @@ -2079,7 +2078,7 @@ let get_expr_args_tuple ~scopes head (arg, _mut, _sort, _layout) rem = rem else (Lprim (Pfield (pos, Reads_agree), [ arg ], loc), Alias, - Sort.for_tuple_element, layout_field) + Jkind.Sort.for_tuple_element, layout_field) :: make_args (pos + 1) in make_args 0 @@ -2098,7 +2097,7 @@ let record_matching_line num_fields lbl_pat_list = List.iter (fun (_, lbl, pat) -> (* CR layouts v5: This void sanity check can be removed when we add proper void support (or whenever we remove `lbl_pos_void`) *) - check_record_field_layout lbl; + check_record_field_jkind lbl; patv.(lbl.lbl_pos) <- pat) lbl_pat_list; Array.to_list patv @@ -2125,8 +2124,8 @@ let get_expr_args_record ~scopes head (arg, _mut, sort, layout) rem = rem else let lbl = all_labels.(pos) in - check_record_field_layout lbl; - let lbl_sort = Layout.sort_of_layout lbl.lbl_layout in + check_record_field_jkind lbl; + let lbl_sort = Jkind.sort_of_jkind lbl.lbl_jkind in let lbl_layout = Typeopt.layout_of_sort lbl.lbl_loc lbl_sort in let sem = match lbl.lbl_mut with @@ -2208,7 +2207,7 @@ let get_expr_args_array ~scopes kind head (arg, _mut, _sort, _layout) rem = (match am with | Mutable -> StrictOpt | Immutable -> Alias), - Sort.for_array_get_result, + Jkind.Sort.for_array_get_result, layout_field) :: make_args (pos + 1) in @@ -3665,7 +3664,7 @@ let for_trywith ~scopes ~return_layout loc param pat_act_list = It is important to *not* include location information in the reraise (hence the [_noloc]) to avoid seeing this silent reraise in exception backtraces. *) - compile_matching ~scopes ~arg_sort:Sort.for_predef_value + compile_matching ~scopes ~arg_sort:Jkind.Sort.for_predef_value ~arg_layout:layout_block ~return_layout loc ~failer:(Reraise_noloc param) None param pat_act_list Partial @@ -3780,11 +3779,11 @@ let assign_pat ~scopes body_layout opt nraise catch_ids loc pat pat_sort lam = match (pat.pat_desc, lam) with | Tpat_tuple patl, Lprim (Pmakeblock _, lams, _) -> opt := true; - List.fold_left2 (collect Sort.for_tuple_element) acc patl lams + List.fold_left2 (collect Jkind.Sort.for_tuple_element) acc patl lams | Tpat_tuple patl, Lconst (Const_block (_, scl)) -> opt := true; let collect_const acc pat sc = - collect Sort.for_tuple_element acc pat (Lconst sc) + collect Jkind.Sort.for_tuple_element acc pat (Lconst sc) in List.fold_left2 collect_const acc patl scl | _ -> @@ -3852,7 +3851,7 @@ let for_tupled_function ~scopes ~return_layout loc paraml pats_act_list partial let partial = check_partial_list pats_act_list partial in (* The arguments of a tupled function are always values since they must be fields *) let args = - List.map (fun id -> (Lvar id, Strict, Sort.for_tuple_element, layout_field)) + List.map (fun id -> (Lvar id, Strict, Jkind.Sort.for_tuple_element, layout_field)) paraml in let handler = @@ -3953,12 +3952,12 @@ let do_for_multiple_match ~scopes ~return_layout loc paraml mode pat_act_list pa let sloc = Scoped_location.of_location ~scopes loc in Lprim (Pmakeblock (0, Immutable, None, mode), param_lambda, sloc) in - let arg_sort = Sort.for_tuple in + let arg_sort = Jkind.Sort.for_tuple in let handler = let partial = check_partial pat_act_list partial in let rows = map_on_rows (fun p -> (p, [])) pat_act_list in toplevel_handler ~scopes ~return_layout loc ~failer:Raise_match_failure - partial [ (arg, Strict, Sort.for_tuple, layout_block) ] rows in + partial [ (arg, Strict, Jkind.Sort.for_tuple, layout_block) ] rows in handler (fun partial pm1 -> let pm1_half = { pm1 with @@ -4022,12 +4021,12 @@ let report_error ppf = function fprintf ppf "Non-value detected in translation:@ Please report this error to \ the Jane Street compilers team.@ %a" - (Layout.Violation.report_with_name ~name:"This expression") err + (Jkind.Violation.report_with_name ~name:"This expression") err | Illegal_record_field c -> fprintf ppf "Sort %s detected where value was expected in a record field:@ Please \ report this error to the Jane Street compilers team." - (Layout.string_of_const c) + (Jkind.string_of_const c) let () = Location.register_error_of_exn diff --git a/ocaml/lambda/transl_array_comprehension.ml b/ocaml/lambda/transl_array_comprehension.ml index 01d8a2b6800..661759dcac4 100644 --- a/ocaml/lambda/transl_array_comprehension.ml +++ b/ocaml/lambda/transl_array_comprehension.ml @@ -1,4 +1,3 @@ -open Jkind open Lambda open Typedtree open Asttypes @@ -451,7 +450,7 @@ let iterator ~transl_exp ~scopes ~loc | Texp_comp_range { ident; pattern = _; start; stop; direction } -> let bound name value = Let_binding.make (Immutable Strict) (Pvalue Pintval) - name (transl_exp ~scopes Sort.for_predef_value value) + name (transl_exp ~scopes Jkind.Sort.for_predef_value value) in let start = bound "start" start in let stop = bound "stop" stop in @@ -468,7 +467,7 @@ let iterator ~transl_exp ~scopes ~loc | Texp_comp_in { pattern; sequence = iter_arr_exp } -> let iter_arr = Let_binding.make (Immutable Strict) (Pvalue Pgenval) - "iter_arr" (transl_exp ~scopes Sort.for_predef_value iter_arr_exp) + "iter_arr" (transl_exp ~scopes Jkind.Sort.for_predef_value iter_arr_exp) in let iter_arr_kind = Typeopt.array_kind iter_arr_exp in let iter_len = @@ -490,7 +489,7 @@ let iterator ~transl_exp ~scopes ~loc ; for_body = Matching.for_let ~scopes - ~arg_sort:Sort.for_array_element + ~arg_sort:Jkind.Sort.for_array_element ~return_layout:(Pvalue Pintval) pattern.pat_loc (Lprim(Parrayrefu @@ -546,7 +545,7 @@ let clause ~transl_exp ~scopes ~loc = function (Iterator_bindings.all_let_bindings var_bindings) (make_clause body) | Texp_comp_when cond -> - fun body -> Lifthenelse(transl_exp ~scopes Sort.for_predef_value cond, + fun body -> Lifthenelse(transl_exp ~scopes Jkind.Sort.for_predef_value cond, body, lambda_unit, (Pvalue Pintval) (* [unit] is immediate *)) @@ -829,7 +828,7 @@ let comprehension ~index (* CR layouts v4: Ensure that the [transl_exp] here can cope with non-values. *) - ~body:(transl_exp ~scopes Sort.for_array_element comp_body)), + ~body:(transl_exp ~scopes Jkind.Sort.for_array_element comp_body)), (* If it was dynamically grown, cut it down to size *) match array_sizing with | Fixed_size -> array.var diff --git a/ocaml/lambda/transl_list_comprehension.ml b/ocaml/lambda/transl_list_comprehension.ml index b62e90238de..d497c4ccf79 100644 --- a/ocaml/lambda/transl_list_comprehension.ml +++ b/ocaml/lambda/transl_list_comprehension.ml @@ -1,4 +1,3 @@ -open Jkind open Lambda open Typedtree open Asttypes @@ -173,7 +172,7 @@ let iterator ~transl_exp ~scopes = function let transl_bound var bound = Let_binding.make (Immutable Strict) (Pvalue Pintval) - var (transl_exp ~scopes Sort.for_predef_value bound) + var (transl_exp ~scopes Jkind.Sort.for_predef_value bound) in let start = transl_bound "start" start in let stop = transl_bound "stop" stop in @@ -188,7 +187,7 @@ let iterator ~transl_exp ~scopes = function | Texp_comp_in { pattern; sequence } -> let iter_list = Let_binding.make (Immutable Strict) (Pvalue Pgenval) - "iter_list" (transl_exp ~scopes Sort.for_predef_value sequence) + "iter_list" (transl_exp ~scopes Jkind.Sort.for_predef_value sequence) in (* Create a fresh variable to use as the function argument *) let element = Ident.create_local "element" in @@ -197,11 +196,11 @@ let iterator ~transl_exp ~scopes = function ; element ; element_kind = Typeopt.layout pattern.pat_env pattern.pat_loc - Sort.for_list_element pattern.pat_type + Jkind.Sort.for_list_element pattern.pat_type ; add_bindings = (* CR layouts: to change when we allow non-values in sequences *) Matching.for_let - ~scopes ~arg_sort:Sort.for_list_element + ~scopes ~arg_sort:Jkind.Sort.for_list_element ~return_layout:(Pvalue Pgenval) pattern.pat_loc (Lvar element) pattern } @@ -298,7 +297,7 @@ let rec translate_clauses in Let_binding.let_all arg_lets bindings | Texp_comp_when cond -> - Lifthenelse(transl_exp ~scopes Sort.for_predef_value cond, + Lifthenelse(transl_exp ~scopes Jkind.Sort.for_predef_value cond, body ~accumulator, accumulator, (Pvalue Pgenval) (* [list]s have the standard representation *)) @@ -313,7 +312,7 @@ let comprehension ~transl_exp ~scopes ~loc { comp_body; comp_clauses } = rev_list_snoc_local ~loc ~init:accumulator - ~last:(transl_exp ~scopes Sort.for_list_element comp_body)) + ~last:(transl_exp ~scopes Jkind.Sort.for_list_element comp_body)) ~accumulator:rev_list_nil comp_clauses in diff --git a/ocaml/lambda/translclass.ml b/ocaml/lambda/translclass.ml index 7ab71f804a5..37090b73b89 100644 --- a/ocaml/lambda/translclass.ml +++ b/ocaml/lambda/translclass.ml @@ -15,7 +15,6 @@ open Asttypes open Types -open Layouts open Typedtree open Lambda open Translobj @@ -103,7 +102,7 @@ let transl_meth_list lst = let set_inst_var ~scopes obj id expr = Lprim(Psetfield_computed (Typeopt.maybe_pointer expr, Assignment modify_heap), - [Lvar obj; Lvar id; transl_exp ~scopes Sort.for_instance_var expr], + [Lvar obj; Lvar id; transl_exp ~scopes Jkind.Sort.for_instance_var expr], Loc_unknown) let transl_val tbl create name = @@ -210,7 +209,7 @@ let rec build_object_init ~scopes cl_table obj params inh_init obj_init cl = (inh_init, let build params rem = let param = name_pattern "param" pat in - let arg_sort = Sort.for_class_arg in + let arg_sort = Jkind.Sort.for_class_arg in let arg_layout = Typeopt.layout pat.pat_env pat.pat_loc arg_sort pat.pat_type in @@ -363,7 +362,7 @@ let rec build_class_init ~scopes cla cstr super inh_init cl_init msubst top cl = | Tcf_method (name, _, Tcfk_concrete (_, exp)) -> let scopes = enter_method_definition ~scopes name.txt in let met_code = - msubst true (transl_scoped_exp ~scopes Sort.for_method exp) + msubst true (transl_scoped_exp ~scopes Jkind.Sort.for_method exp) in let met_code = if !Clflags.native_code && List.length met_code = 1 then @@ -380,7 +379,7 @@ let rec build_class_init ~scopes cla cstr super inh_init cl_init msubst top cl = Lsequence(mkappl (oo_prim "add_initializer", Lvar cla :: msubst false (transl_exp ~scopes - Sort.for_initializer exp), + Jkind.Sort.for_initializer exp), layout_unit), cl_init), methods, values) @@ -498,7 +497,7 @@ let rec transl_class_rebind ~scopes obj_init cl vf = transl_class_rebind ~scopes obj_init cl vf in let build params rem = let param = name_pattern "param" pat in - let arg_sort = Sort.for_class_arg in + let arg_sort = Jkind.Sort.for_class_arg in let arg_layout = Typeopt.layout pat.pat_env pat.pat_loc arg_sort pat.pat_type in diff --git a/ocaml/lambda/translcore.ml b/ocaml/lambda/translcore.ml index 7525042cd7f..7bc783d459a 100644 --- a/ocaml/lambda/translcore.ml +++ b/ocaml/lambda/translcore.ml @@ -20,7 +20,6 @@ open Misc open Asttypes open Primitive open Types -open Layouts open Typedtree open Typeopt open Lambda @@ -31,7 +30,7 @@ type error = Free_super_var | Unreachable_reached | Bad_probe_layout of Ident.t - | Illegal_record_field of Sort.const + | Illegal_record_field of Jkind.Sort.const | Void_sort of type_expr exception Error of Location.t * error @@ -49,7 +48,7 @@ let use_dup_for_constant_mutable_arrays_bigger_than = 4 appropriately. *) let sort_must_not_be_void loc ty sort = - if Sort.is_void_defaulting sort then raise (Error (loc, Void_sort ty)) + if Jkind.Sort.is_void_defaulting sort then raise (Error (loc, Void_sort ty)) let layout_exp sort e = layout e.exp_env e.exp_loc sort e.exp_type @@ -66,7 +65,7 @@ let record_field_kind l = typechecker. When we allow arbitrary layouts in structures, it will have outlived its usefulness and should be deleted. *) let check_record_field_sort loc sort repres = - match Sort.get_default_value sort, repres with + match Jkind.Sort.get_default_value sort, repres with | Value, _ -> () | Float64, Record_ufloat -> () | Float64, (Record_boxed _ | Record_inlined _ @@ -412,7 +411,7 @@ and transl_exp0 ~in_new_scope ~scopes sort e = | _, [] -> failwith "Translcore cut_args" | ((_, arg_repr) :: prim_repr), ((_, Arg (x, _)) :: oargs) -> let arg_exps, extra_args = cut_args prim_repr oargs in - let arg_sort = Sort.of_const (sort_of_native_repr arg_repr) in + let arg_sort = Jkind.Sort.of_const (sort_of_native_repr arg_repr) in (x, arg_sort) :: arg_exps, extra_args | _, ((_, Omitted _) :: _) -> assert false in @@ -449,7 +448,7 @@ and transl_exp0 ~in_new_scope ~scopes sort e = 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) + ~position ~mode (transl_exp ~scopes Jkind.Sort.for_function funct) oargs (of_location ~scopes e.exp_loc)) | Texp_match(arg, arg_sort, pat_expr_list, partial) -> transl_match ~scopes ~arg_sort ~return_sort:sort e arg pat_expr_list @@ -464,7 +463,7 @@ and transl_exp0 ~in_new_scope ~scopes sort e = | Texp_tuple (el, alloc_mode) -> let ll, shape = transl_list_with_shape ~scopes - (List.map (fun a -> (a, Sort.for_tuple_element)) el) + (List.map (fun a -> (a, Jkind.Sort.for_tuple_element)) el) in begin try Lconst(Const_block(0, List.map extract_constant ll)) @@ -477,7 +476,7 @@ and transl_exp0 ~in_new_scope ~scopes sort e = | Texp_construct(_, cstr, args, alloc_mode) -> let ll, shape = transl_list_with_shape ~scopes - (List.map (fun a -> (a, Sort.for_constructor_arg)) args) + (List.map (fun a -> (a, Jkind.Sort.for_constructor_arg)) args) in if cstr.cstr_inlined <> None then begin match ll with | [x] -> x @@ -485,7 +484,7 @@ and transl_exp0 ~in_new_scope ~scopes sort e = end else begin match cstr.cstr_tag, cstr.cstr_repr with | Ordinary {runtime_tag}, _ when cstr.cstr_constant -> (* CR layouts v5: This could have void args, but for now we've ruled - that out with the layout check in transl_list_with_shape *) + that out with the jkind check in transl_list_with_shape *) Lconst(const_int runtime_tag) | Ordinary _, Variant_unboxed -> (match ll with [v] -> v | _ -> assert false) @@ -504,7 +503,7 @@ and transl_exp0 ~in_new_scope ~scopes sort e = if cstr.cstr_constant then (* CR layouts v5: This could have void args, but for now we've ruled - that out with the layout check in transl_list_with_shape. *) + that out with the jkind check in transl_list_with_shape. *) lam else Lprim(Pmakeblock(0, Immutable, Some (Pgenval :: shape), @@ -520,7 +519,7 @@ and transl_exp0 ~in_new_scope ~scopes sort e = begin match arg with None -> Lconst(const_int tag) | Some (arg, alloc_mode) -> - let lam = transl_exp ~scopes Sort.for_poly_variant arg in + let lam = transl_exp ~scopes Jkind.Sort.for_poly_variant arg in try Lconst(Const_block(0, [const_int tag; extract_constant lam])) @@ -535,13 +534,13 @@ and transl_exp0 ~in_new_scope ~scopes sort e = (Option.map transl_alloc_mode alloc_mode) fields representation extended_expression | Texp_field(arg, id, lbl, _, alloc_mode) -> - let targ = transl_exp ~scopes Sort.for_record arg in + let targ = transl_exp ~scopes Jkind.Sort.for_record arg in let sem = match lbl.lbl_mut with | Immutable -> Reads_agree | Mutable -> Reads_vary in - let lbl_sort = Layout.sort_of_layout lbl.lbl_layout in + let lbl_sort = Jkind.sort_of_jkind lbl.lbl_jkind in check_record_field_sort id.loc lbl_sort lbl.lbl_repres; begin match lbl.lbl_repres with Record_boxed _ | Record_inlined (_, Variant_boxed _) -> @@ -561,10 +560,10 @@ and transl_exp0 ~in_new_scope ~scopes sort e = end | Texp_setfield(arg, arg_mode, id, lbl, newval) -> (* CR layouts v2.5: When we allow `any` in record fields and check - representability on construction, [sort_of_layout] will be unsafe here. + representability on construction, [sort_of_jkind] will be unsafe here. Probably we should add a sort to `Texp_setfield` in the typed tree, then. *) - let lbl_sort = Layout.sort_of_layout lbl.lbl_layout in + let lbl_sort = Jkind.sort_of_jkind lbl.lbl_jkind in check_record_field_sort id.loc lbl_sort lbl.lbl_repres; let mode = Assignment (transl_modify_mode arg_mode) @@ -581,7 +580,7 @@ and transl_exp0 ~in_new_scope ~scopes sort e = | Record_inlined (_, Variant_extensible) -> Psetfield (lbl.lbl_pos + 1, maybe_pointer newval, mode) in - Lprim(access, [transl_exp ~scopes Sort.for_record arg; + Lprim(access, [transl_exp ~scopes Jkind.Sort.for_record arg; transl_exp ~scopes lbl_sort newval], of_location ~scopes e.exp_loc) | Texp_array (amut, expr_list, alloc_mode) -> @@ -589,7 +588,7 @@ and transl_exp0 ~in_new_scope ~scopes sort e = let kind = array_kind e in let ll = transl_list ~scopes - (List.map (fun e -> (e, Sort.for_array_element)) expr_list) + (List.map (fun e -> (e, Jkind.Sort.for_array_element)) expr_list) in let loc = of_location ~scopes e.exp_loc in let makearray mutability = @@ -665,12 +664,12 @@ and transl_exp0 ~in_new_scope ~scopes sort e = Transl_array_comprehension.comprehension ~transl_exp ~scopes ~loc ~array_kind comp | Texp_ifthenelse(cond, ifso, Some ifnot) -> - Lifthenelse(transl_exp ~scopes Sort.for_predef_value cond, + Lifthenelse(transl_exp ~scopes Jkind.Sort.for_predef_value cond, event_before ~scopes ifso (transl_exp ~scopes sort ifso), event_before ~scopes ifnot (transl_exp ~scopes sort ifnot), layout_exp sort e) | Texp_ifthenelse(cond, ifso, None) -> - Lifthenelse(transl_exp ~scopes Sort.for_predef_value cond, + Lifthenelse(transl_exp ~scopes Jkind.Sort.for_predef_value cond, event_before ~scopes ifso (transl_exp ~scopes sort ifso), lambda_unit, Lambda.layout_unit) @@ -680,7 +679,7 @@ and transl_exp0 ~in_new_scope ~scopes sort e = event_before ~scopes expr2 (transl_exp ~scopes sort expr2)) | Texp_while {wh_body; wh_body_sort; wh_cond} -> sort_must_not_be_void wh_body.exp_loc wh_body.exp_type wh_body_sort; - let cond = transl_exp ~scopes Sort.for_predef_value wh_cond in + let cond = transl_exp ~scopes Jkind.Sort.for_predef_value wh_cond in let body = transl_exp ~scopes wh_body_sort wh_body in Lwhile { wh_cond = maybe_region_layout layout_int cond; @@ -692,8 +691,8 @@ and transl_exp0 ~in_new_scope ~scopes sort e = let body = transl_exp ~scopes for_body_sort for_body in Lfor { for_id; - for_from = transl_exp ~scopes Sort.for_predef_value for_from; - for_to = transl_exp ~scopes Sort.for_predef_value for_to; + for_from = transl_exp ~scopes Jkind.Sort.for_predef_value for_from; + for_to = transl_exp ~scopes Jkind.Sort.for_predef_value for_to; for_dir; for_body = event_before ~scopes for_body (maybe_region_layout layout_unit body); @@ -706,10 +705,10 @@ and transl_exp0 ~in_new_scope ~scopes sort e = let layout = layout_exp sort e in match met with | Tmeth_val id -> - let obj = transl_exp ~scopes Sort.for_object expr in + let obj = transl_exp ~scopes Jkind.Sort.for_object expr in Lsend (Self, Lvar id, obj, [], pos, mode, loc, layout) | Tmeth_name nm -> - let obj = transl_exp ~scopes Sort.for_object expr in + let obj = transl_exp ~scopes Jkind.Sort.for_object expr in let (tag, cache) = Translobj.meth obj nm in let kind = if cache = [] then Public else Cached in Lsend (kind, tag, obj, cache, pos, mode, loc, layout) @@ -803,7 +802,7 @@ and transl_exp0 ~in_new_scope ~scopes sort e = then lambda_unit else begin Lifthenelse - (transl_exp ~scopes Sort.for_predef_value cond, + (transl_exp ~scopes Jkind.Sort.for_predef_value cond, lambda_unit, assert_failed ~scopes e, Lambda.layout_unit) @@ -816,14 +815,14 @@ and transl_exp0 ~in_new_scope ~scopes sort e = | `Constant_or_function -> (* A constant expr (of type <> float if [Config.flat_float_array] is true) gets compiled as itself. *) - transl_exp ~scopes Sort.for_lazy_body e + transl_exp ~scopes Jkind.Sort.for_lazy_body e | `Float_that_cannot_be_shortcut -> (* We don't need to wrap with Popaque: this forward block will never be shortcutted since it points to a float and Config.flat_float_array is true. *) Lprim(Pmakeblock(Obj.forward_tag, Immutable, None, alloc_heap), - [transl_exp ~scopes Sort.for_lazy_body e], + [transl_exp ~scopes Jkind.Sort.for_lazy_body e], of_location ~scopes e.exp_loc) | `Identifier `Forward_value -> (* CR-someday mshinwell: Consider adding a new primitive @@ -835,14 +834,14 @@ and transl_exp0 ~in_new_scope ~scopes sort e = Lprim (Popaque Lambda.layout_lazy, [Lprim(Pmakeblock(Obj.forward_tag, Immutable, None, alloc_heap), - [transl_exp ~scopes Sort.for_lazy_body e], + [transl_exp ~scopes Jkind.Sort.for_lazy_body e], of_location ~scopes e.exp_loc)], of_location ~scopes e.exp_loc) | `Identifier `Other -> - transl_exp ~scopes Sort.for_lazy_body e + transl_exp ~scopes Jkind.Sort.for_lazy_body e | `Other -> (* other cases compile to a lazy block holding a function. The - typechecker enforces that e has layout value. *) + typechecker enforces that e has jkind value. *) let scopes = enter_lazy ~scopes in let fn = lfunction ~kind:(Curried {nlocal=0}) ~params:[{ name = Ident.create_local "param"; @@ -856,7 +855,7 @@ and transl_exp0 ~in_new_scope ~scopes sort e = ~region:true ~body:(maybe_region_layout Lambda.layout_lazy_contents - (transl_exp ~scopes Sort.for_lazy_body e)) + (transl_exp ~scopes Jkind.Sort.for_lazy_body e)) in Lprim(Pmakeblock(Config.lazy_tag, Mutable, None, alloc_heap), [fn], of_location ~scopes e.exp_loc) @@ -905,7 +904,7 @@ and transl_exp0 ~in_new_scope ~scopes sort e = end | Texp_probe {name; handler=exp; enabled_at_init} -> if !Clflags.native_code && !Clflags.probes then begin - let lam = transl_exp ~scopes Sort.for_probe_body exp in + let lam = transl_exp ~scopes Jkind.Sort.for_probe_body exp in let map = Ident.Set.fold (fun v acc -> Ident.Map.add v (Ident.rename v) acc) (free_variables lam) @@ -915,21 +914,21 @@ and transl_exp0 ~in_new_scope ~scopes sort e = List.iter (fun id -> (* CR layouts: The probe hack. - The lambda translation wants to know the layouts of all function + The lambda translation wants to know the jkinds of all function parameters. Here we're building a function whose arguments are all the free variables in a probe handler. At the moment, we just check that they are all values. - It's really hacky to be doing this kind of layout check this late. + It's really hacky to be doing this kind of jkind check this late. The middle-end folks have plans to eliminate the need for it by reworking the way probes are compiled. For that reason, I haven't bothered to give a particularly good error or handle the Not_found case from env. - (We could probably calculate the layouts of these variables here + (We could probably calculate the jkinds of these variables here rather than requiring them all to be value, but that would be even more hacky.) *) - (* CR layouts v2.5: if we get close to releasing other layout somebody + (* CR layouts v2.5: if we get close to releasing other jkind somebody actually might put in a probe, check with the middle-end team about the status of fixing this. *) let path = Path.Pident id in @@ -938,9 +937,9 @@ and transl_exp0 ~in_new_scope ~scopes sort e = with | {val_type; _} -> begin match - Ctype.check_type_layout + Ctype.check_type_jkind e.exp_env (Ctype.correct_levels val_type) - (Layout.value ~why:Probe) + (Jkind.value ~why:Probe) with | Ok _ -> () | Error _ -> raise (Error (e.exp_loc, Bad_probe_layout id)) @@ -1046,7 +1045,7 @@ and transl_guard ~scopes guard rhs_sort rhs = | None -> expr | Some cond -> event_before ~scopes cond - (Lifthenelse(transl_exp ~scopes Sort.for_predef_value cond, + (Lifthenelse(transl_exp ~scopes Jkind.Sort.for_predef_value cond, expr, staticfail, layout)) and transl_case ~scopes rhs_sort {c_lhs; c_guard; c_rhs} = @@ -1461,7 +1460,7 @@ and transl_let ~scopes ~return_layout ?(add_regions=false) ?(in_structure=false) and transl_setinstvar ~scopes loc self var expr = Lprim(Psetfield_computed (maybe_pointer expr, Assignment modify_heap), - [self; var; transl_exp ~scopes Sort.for_instance_var expr], loc) + [self; var; transl_exp ~scopes Jkind.Sort.for_instance_var expr], loc) (* CR layouts v5: Invariant - this is only called on values. Relax that. *) and transl_record ~scopes loc env mode fields repres opt_init_expr = @@ -1486,7 +1485,7 @@ and transl_record ~scopes loc env mode fields repres opt_init_expr = representability on construction, [sort_of_layout] will be unsafe here. Probably we should add sorts to record construction in the typed tree, then. *) - let lbl_sort = Layout.sort_of_layout lbl.lbl_layout in + let lbl_sort = Jkind.sort_of_jkind lbl.lbl_jkind in match definition with | Kept (typ, _) -> let field_kind = @@ -1569,7 +1568,7 @@ and transl_record ~scopes loc env mode fields repres opt_init_expr = begin match opt_init_expr with None -> lam | Some init_expr -> Llet(Strict, Lambda.layout_block, init_id, - transl_exp ~scopes Sort.for_record init_expr, lam) + transl_exp ~scopes Jkind.Sort.for_record init_expr, lam) end end else begin (* Take a shallow copy of the init record, then mutate the fields @@ -1577,7 +1576,7 @@ and transl_record ~scopes loc env mode fields repres opt_init_expr = let copy_id = Ident.create_local "newrecord" in let update_field cont (lbl, definition) = (* CR layouts v5: allow more unboxed types here. *) - let lbl_sort = Layout.sort_of_layout lbl.lbl_layout in + let lbl_sort = Jkind.sort_of_jkind lbl.lbl_jkind in check_record_field_sort lbl.lbl_loc lbl_sort lbl.lbl_repres; match definition with | Kept (_type, _uu) -> cont @@ -1609,7 +1608,7 @@ and transl_record ~scopes loc env mode fields repres opt_init_expr = assert (is_heap_mode (Option.get mode)); (* Pduprecord must be Alloc_heap and not unboxed *) Llet(Strict, Lambda.layout_block, copy_id, Lprim(Pduprecord (repres, size), - [transl_exp ~scopes Sort.for_record init_expr], + [transl_exp ~scopes Jkind.Sort.for_record init_expr], of_location ~scopes loc), Array.fold_left update_field (Lvar copy_id) fields) end @@ -1701,11 +1700,11 @@ and transl_match ~scopes ~arg_sort ~return_sort e arg pat_expr_list partial = | {exp_desc = Texp_tuple (argl, alloc_mode)}, [] -> assert (static_handlers = []); let mode = transl_alloc_mode alloc_mode in - let argl = List.map (fun a -> (a, Sort.for_tuple_element)) argl in + let argl = List.map (fun a -> (a, Jkind.Sort.for_tuple_element)) argl in Matching.for_multiple_match ~scopes ~return_layout e.exp_loc (transl_list_with_layout ~scopes argl) mode val_cases partial | {exp_desc = Texp_tuple (argl, alloc_mode)}, _ :: _ -> - let argl = List.map (fun a -> (a, Sort.for_tuple_element)) argl in + let argl = List.map (fun a -> (a, Jkind.Sort.for_tuple_element)) argl in let val_ids, lvars = List.map (fun (arg,s) -> @@ -1850,13 +1849,13 @@ let report_error ppf = function | Unreachable_reached -> fprintf ppf "Unreachable expression was reached" | Bad_probe_layout id -> - fprintf ppf "Variables in probe handlers must have layout value, \ + fprintf ppf "Variables in probe handlers must have jkind value, \ but %s in this handler does not." (Ident.name id) | Illegal_record_field c -> fprintf ppf "Sort %a detected where value was expected in a record field:@ Please \ report this error to the Jane Street compilers team." - Sort.format (Sort.of_const c) + Jkind.Sort.format (Jkind.Sort.of_const c) | Void_sort ty -> fprintf ppf "Void detected in translation for type %a:@ Please report this error \ diff --git a/ocaml/lambda/translmod.ml b/ocaml/lambda/translmod.ml index 6fd678d79c3..8d82e4706d0 100644 --- a/ocaml/lambda/translmod.ml +++ b/ocaml/lambda/translmod.ml @@ -19,7 +19,6 @@ open Misc open Asttypes open Types -open Layouts open Typedtree open Lambda open Translobj @@ -39,7 +38,7 @@ type unsafe_info = type error = Circular_dependency of (Ident.t * unsafe_info) list | Conflicting_inline_attributes -| Non_value_layout of type_expr * Layout.Violation.t +| Non_value_jkind of type_expr * Jkind.Violation.t exception Error of Location.t * error @@ -55,14 +54,14 @@ exception Error of Location.t * error When this sanity check is removed, consider whether it must be replaced with some defaulting. *) let sort_must_not_be_void loc ty sort = - if Sort.is_void_defaulting sort then + if Jkind.Sort.is_void_defaulting sort then let violation = - Layout.(Violation.of_ - (Not_a_sublayout - (Layout.of_sort ~why:V1_safety_check sort, + Jkind.(Violation.of_ + (Not_a_subjkind + (Jkind.of_sort ~why:V1_safety_check sort, value ~why:V1_safety_check))) in - raise (Error (loc, Non_value_layout (ty, violation))) + raise (Error (loc, Non_value_jkind (ty, violation))) let cons_opt x_opt xs = match x_opt with @@ -632,7 +631,7 @@ and transl_module ~scopes cc rootpath mexp = transl_module ~scopes (compose_coercions cc ccarg) rootpath arg | Tmod_unpack(arg, _) -> apply_coercion loc Strict cc - (Translcore.transl_exp ~scopes Sort.for_module arg) + (Translcore.transl_exp ~scopes Jkind.Sort.for_module arg) and transl_struct ~scopes loc fields cc rootpath {str_final_env; str_items; _} = transl_structure ~scopes loc fields cc rootpath str_final_env str_items @@ -1894,11 +1893,11 @@ let report_error loc = function print_cycle cycle chapter section | Conflicting_inline_attributes -> Location.errorf "@[Conflicting 'inline' attributes@]" - | Non_value_layout (ty, err) -> + | Non_value_jkind (ty, err) -> Location.errorf "Non-value detected in [translmod]:@ Please report this error to \ the Jane Street compilers team.@ %a" - (Layout.Violation.report_with_offender + (Jkind.Violation.report_with_offender ~offender:(fun ppf -> Printtyp.type_expr ppf ty)) err let () = diff --git a/ocaml/lambda/translmod.mli b/ocaml/lambda/translmod.mli index f30cea664cd..abd6c069d17 100644 --- a/ocaml/lambda/translmod.mli +++ b/ocaml/lambda/translmod.mli @@ -53,7 +53,7 @@ type unsafe_info = type error = Circular_dependency of (Ident.t * unsafe_info) list | Conflicting_inline_attributes -| Non_value_layout of Types.type_expr * Jkind.Layout.Violation.t +| Non_value_jkind of Types.type_expr * Jkind.Violation.t exception Error of Location.t * error diff --git a/ocaml/lambda/translprim.ml b/ocaml/lambda/translprim.ml index 16dab8e2288..fde6d8414a1 100644 --- a/ocaml/lambda/translprim.ml +++ b/ocaml/lambda/translprim.ml @@ -18,7 +18,6 @@ open Asttypes open Primitive open Types -open Layouts open Typedtree open Typeopt open Lambda @@ -577,7 +576,7 @@ let specialize_primitive env loc ty ~has_constant_constructor prim = let shape = List.map (fun typ -> Lambda.must_be_value (Typeopt.layout env (to_location loc) - Sort.for_block_element typ)) + Jkind.Sort.for_block_element typ)) fields in let useful = List.exists (fun knd -> knd <> Pgenval) shape in @@ -895,7 +894,7 @@ let transl_primitive loc p env ty ~poly_mode path = match repr_args, repr_res with | [], (_, res_repr) -> let res_sort = sort_of_native_repr res_repr in - [], Typeopt.layout env (to_location loc) (Sort.of_const res_sort) ty + [], Typeopt.layout env (to_location loc) (Jkind.Sort.of_const res_sort) ty | (((_, arg_repr) as arg) :: repr_args), _ -> match Typeopt.is_function_type env ty with | None -> @@ -904,7 +903,7 @@ let transl_primitive loc p env ty ~poly_mode path = | Some (arg_ty, ret_ty) -> let arg_sort = sort_of_native_repr arg_repr in let arg_layout = - Typeopt.layout env (to_location loc) (Sort.of_const arg_sort) arg_ty + Typeopt.layout env (to_location loc) (Jkind.Sort.of_const arg_sort) arg_ty in let arg_mode = to_locality arg in let params, return = make_params ret_ty repr_args repr_res in diff --git a/ocaml/ocamldoc/.depend b/ocaml/ocamldoc/.depend index d4aa2e7bd70..a9859c210fc 100644 --- a/ocaml/ocamldoc/.depend +++ b/ocaml/ocamldoc/.depend @@ -665,6 +665,7 @@ odoc_sig.cmo : \ odoc_class.cmo \ ../parsing/longident.cmi \ ../parsing/location.cmi \ + ../typing/jkind.cmi \ ../parsing/jane_syntax.cmi \ ../typing/ident.cmi \ ../typing/ctype.cmi \ @@ -690,6 +691,7 @@ odoc_sig.cmx : \ odoc_class.cmx \ ../parsing/longident.cmx \ ../parsing/location.cmx \ + ../typing/jkind.cmx \ ../parsing/jane_syntax.cmx \ ../typing/ident.cmx \ ../typing/ctype.cmx \ diff --git a/ocaml/ocamldoc/odoc_sig.ml b/ocaml/ocamldoc/odoc_sig.ml index 7d56f1e0f0e..d65adf87388 100644 --- a/ocaml/ocamldoc/odoc_sig.ml +++ b/ocaml/ocamldoc/odoc_sig.ml @@ -17,7 +17,6 @@ open Asttypes open Types -open Layouts open Odoc_parameter open Odoc_value open Odoc_type @@ -417,7 +416,7 @@ module Analyser = { Typedtree.ld_id; ld_mutable; ld_type; ld_loc; ld_attributes } = get_field env comments @@ {Types.ld_id; ld_mutable; ld_global = Unrestricted; - ld_layout=Layout.any ~why:Dummy_layout (* ignored *); + ld_jkind=Jkind.any ~why:Dummy_jkind (* ignored *); ld_type=ld_type.Typedtree.ctyp_type; ld_loc; ld_attributes; ld_uid=Types.Uid.internal_not_actually_unique} in let open Typedtree in diff --git a/ocaml/parsing/ast_helper.ml b/ocaml/parsing/ast_helper.ml index 1968d9ac197..9ba7817ed00 100644 --- a/ocaml/parsing/ast_helper.ml +++ b/ocaml/parsing/ast_helper.ml @@ -108,7 +108,7 @@ module Typ = struct Ptyp_object (List.map loop_object_field lst, o) | Ptyp_class (longident, lst) -> Ptyp_class (longident, List.map loop lst) - (* A Ptyp_alias might be a layout annotation (that is, it might have + (* A Ptyp_alias might be a jkind annotation (that is, it might have attributes which mean it should be interpreted as a [Jane_syntax.Layouts.Ltyp_alias]), but the code here still has the correct behavior. *) @@ -521,13 +521,13 @@ module Type = struct let mk ?(loc = !default_loc) ?(attrs = []) ?(docs = empty_docs) ?(text = []) ?(params = []) - ?layout + ?jkind ?(cstrs = []) ?(kind = Ptype_abstract) ?(priv = Public) ?manifest name = - let layout_attrs = Option.to_list layout in + let jkind_attrs = Option.to_list jkind in { ptype_name = name; ptype_params = params; @@ -536,7 +536,7 @@ module Type = struct ptype_private = priv; ptype_manifest = manifest; ptype_attributes = - layout_attrs @ add_text_attrs text (add_docs_attrs docs attrs); + jkind_attrs @ add_text_attrs text (add_docs_attrs docs attrs); ptype_loc = loc; } diff --git a/ocaml/parsing/ast_helper.mli b/ocaml/parsing/ast_helper.mli index 084d0be8bd5..d078c58cf08 100644 --- a/ocaml/parsing/ast_helper.mli +++ b/ocaml/parsing/ast_helper.mli @@ -218,7 +218,7 @@ module Type: sig val mk: ?loc:loc -> ?attrs:attrs -> ?docs:docs -> ?text:text -> ?params:(core_type * (variance * injectivity)) list -> - ?layout:attribute -> + ?jkind:attribute -> ?cstrs:(core_type * core_type * loc) list -> ?kind:type_kind -> ?priv:private_flag -> ?manifest:core_type -> str -> type_declaration diff --git a/ocaml/parsing/ast_iterator.ml b/ocaml/parsing/ast_iterator.ml index 58eabe529d4..4ab19f2ca73 100644 --- a/ocaml/parsing/ast_iterator.ml +++ b/ocaml/parsing/ast_iterator.ml @@ -46,8 +46,8 @@ type iterator = { extension_constructor: iterator -> extension_constructor -> unit; include_declaration: iterator -> include_declaration -> unit; include_description: iterator -> include_description -> unit; + jkind_annotation:iterator -> Jane_asttypes.const_jkind -> unit; label_declaration: iterator -> label_declaration -> unit; - layout_annotation:iterator -> Jane_asttypes.const_layout -> unit; location: iterator -> Location.t -> unit; module_binding: iterator -> module_binding -> unit; module_declaration: iterator -> module_declaration -> unit; @@ -120,22 +120,22 @@ module T = struct | Otag (_, t) -> sub.typ sub t | Oinherit t -> sub.typ sub t - let layout_annotation sub = - iter_loc_txt sub sub.layout_annotation + let jkind_annotation sub = + iter_loc_txt sub sub.jkind_annotation - let bound_var sub (_, layout) = match layout with + let bound_var sub (_, jkind) = match jkind with | None -> () - | Some annot -> layout_annotation sub annot + | Some annot -> jkind_annotation sub annot let iter_jst_layout sub : Jane_syntax.Layouts.core_type -> _ = function - | Ltyp_var { name = _; layout } -> - iter_loc_txt sub sub.layout_annotation layout + | Ltyp_var { name = _; jkind } -> + iter_loc_txt sub sub.jkind_annotation jkind | Ltyp_poly { bound_vars; inner_type } -> List.iter (bound_var sub) bound_vars; sub.typ sub inner_type - | Ltyp_alias { aliased_type; name = _; layout } -> + | Ltyp_alias { aliased_type; name = _; jkind } -> sub.typ sub aliased_type; - iter_loc_txt sub sub.layout_annotation layout + iter_loc_txt sub sub.jkind_annotation jkind let iter_jst sub : Jane_syntax.Core_type.t -> _ = function | Jtyp_layout typ -> iter_jst_layout sub typ @@ -468,8 +468,8 @@ module E = struct let iter_layout_exp sub : L.expression -> _ = function | Lexp_constant _ -> iter_constant - | Lexp_newtype (_str, layout, inner_expr) -> - iter_loc_txt sub sub.layout_annotation layout; + | Lexp_newtype (_str, jkind, inner_expr) -> + iter_loc_txt sub sub.jkind_annotation jkind; sub.expr sub inner_expr let iter_function_param sub : N_ary.function_param -> _ = @@ -479,9 +479,9 @@ module E = struct | Pparam_val (_label, def, pat) -> iter_opt (sub.expr sub) def; sub.pat sub pat - | Pparam_newtype (newtype, layout) -> + | Pparam_newtype (newtype, jkind) -> iter_loc sub newtype; - iter_opt (iter_loc_txt sub sub.layout_annotation) layout + iter_opt (iter_loc_txt sub sub.jkind_annotation) jkind let iter_function_constraint sub : N_ary.function_constraint -> _ = (* Enable warning 9 to ensure that the record pattern doesn't miss any @@ -846,8 +846,8 @@ let default_iterator = | None -> List.iter (iter_loc this) pcd_vars; pcd_attributes - | Some (vars_layouts, attrs) -> - List.iter (T.bound_var this) vars_layouts; + | Some (vars_jkinds, attrs) -> + List.iter (T.bound_var this) vars_jkinds; attrs in T.iter_constructor_arguments this pcd_args; @@ -889,5 +889,5 @@ let default_iterator = | PPat (x, g) -> this.pat this x; iter_opt (this.expr this) g ); - layout_annotation = (fun _this _l -> ()); + jkind_annotation = (fun _this _l -> ()); } diff --git a/ocaml/parsing/ast_iterator.mli b/ocaml/parsing/ast_iterator.mli index 3564ca462df..df2df9d6ba1 100644 --- a/ocaml/parsing/ast_iterator.mli +++ b/ocaml/parsing/ast_iterator.mli @@ -49,8 +49,8 @@ type iterator = { extension_constructor: iterator -> extension_constructor -> unit; include_declaration: iterator -> include_declaration -> unit; include_description: iterator -> include_description -> unit; + jkind_annotation: iterator -> Jane_asttypes.const_jkind -> unit; label_declaration: iterator -> label_declaration -> unit; - layout_annotation: iterator -> Jane_asttypes.const_layout -> unit; location: iterator -> Location.t -> unit; module_binding: iterator -> module_binding -> unit; module_declaration: iterator -> module_declaration -> unit; diff --git a/ocaml/parsing/ast_mapper.ml b/ocaml/parsing/ast_mapper.ml index 278c9d70a2e..5add86eed17 100644 --- a/ocaml/parsing/ast_mapper.ml +++ b/ocaml/parsing/ast_mapper.ml @@ -51,9 +51,9 @@ type mapper = { -> extension_constructor; include_declaration: mapper -> include_declaration -> include_declaration; include_description: mapper -> include_description -> include_description; + jkind_annotation: + mapper -> Jane_asttypes.const_jkind -> Jane_asttypes.const_jkind; label_declaration: mapper -> label_declaration -> label_declaration; - layout_annotation: - mapper -> Jane_asttypes.const_layout -> Jane_asttypes.const_layout; location: mapper -> Location.t -> Location.t; module_binding: mapper -> module_binding -> module_binding; module_declaration: mapper -> module_declaration -> module_declaration; @@ -147,29 +147,29 @@ module T = struct in Of.mk ~loc ~attrs desc - let var_layout sub (name, layout_opt) = + let var_jkind sub (name, jkind_opt) = let name = map_loc sub name in - let layout_opt = - map_opt (map_loc_txt sub sub.layout_annotation) layout_opt + let jkind_opt = + map_opt (map_loc_txt sub sub.jkind_annotation) jkind_opt in - (name, layout_opt) + (name, jkind_opt) - let map_bound_vars sub bound_vars = List.map (var_layout sub) bound_vars + let map_bound_vars sub bound_vars = List.map (var_jkind sub) bound_vars let map_jst_layouts sub : Jane_syntax.Layouts.core_type -> Jane_syntax.Layouts.core_type = function - | Ltyp_var { name; layout } -> - let layout = map_loc_txt sub sub.layout_annotation layout in - Ltyp_var { name; layout } + | Ltyp_var { name; jkind } -> + let jkind = map_loc_txt sub sub.jkind_annotation jkind in + Ltyp_var { name; jkind } | Ltyp_poly { bound_vars; inner_type } -> let bound_vars = map_bound_vars sub bound_vars in let inner_type = sub.typ sub inner_type in Ltyp_poly { bound_vars; inner_type } - | Ltyp_alias { aliased_type; name; layout } -> + | Ltyp_alias { aliased_type; name; jkind } -> let aliased_type = sub.typ sub aliased_type in - let layout = map_loc_txt sub sub.layout_annotation layout in - Ltyp_alias { aliased_type; name; layout } + let jkind = map_loc_txt sub sub.jkind_annotation jkind in + Ltyp_alias { aliased_type; name; jkind } let map_jst sub : Jane_syntax.Core_type.t -> Jane_syntax.Core_type.t = function @@ -556,11 +556,11 @@ module E = struct let map_layout_exp sub : L.expression -> L.expression = function | Lexp_constant x -> Lexp_constant (map_unboxed_constant_exp sub x) - | Lexp_newtype (str, layout, inner_expr) -> + | Lexp_newtype (str, jkind, inner_expr) -> let str = map_loc sub str in - let layout = map_loc_txt sub sub.layout_annotation layout in + let jkind = map_loc_txt sub sub.jkind_annotation jkind in let inner_expr = sub.expr sub inner_expr in - Lexp_newtype (str, layout, inner_expr) + Lexp_newtype (str, jkind, inner_expr) let map_function_param sub : N_ary.function_param -> N_ary.function_param = fun { pparam_loc = loc; pparam_desc = desc } -> @@ -569,10 +569,10 @@ module E = struct match desc with | Pparam_val (label, def, pat) -> Pparam_val (label, Option.map (sub.expr sub) def, sub.pat sub pat) - | Pparam_newtype (newtype, layout) -> + | Pparam_newtype (newtype, jkind) -> Pparam_newtype ( map_loc sub newtype - , map_opt (map_loc_txt sub sub.layout_annotation) layout + , map_opt (map_loc_txt sub sub.jkind_annotation) jkind ) in { pparam_loc = loc; pparam_desc = desc } @@ -974,11 +974,11 @@ let default_mapper = let vars = List.map (map_loc this) pcd_vars in let attrs = this.attributes this pcd_attributes in Type.constructor name ~vars ~args ?res ~loc ~attrs - | Some (vars_layouts, attributes) -> - let vars_layouts = List.map (T.var_layout this) vars_layouts in + | Some (vars_jkinds, attributes) -> + let vars_jkinds = List.map (T.var_jkind this) vars_jkinds in let attrs = this.attributes this attributes in Jane_syntax.Layouts.constructor_declaration_of - name ~vars_layouts ~args ~res ~loc ~attrs + name ~vars_jkinds ~args ~res ~loc ~attrs ~info:Docstrings.empty_info ); @@ -1023,7 +1023,7 @@ let default_mapper = | PPat (x, g) -> PPat (this.pat this x, map_opt (this.expr this) g) ); - layout_annotation = (fun _this l -> l); + jkind_annotation = (fun _this l -> l); expr_jane_syntax = E.map_jst; extension_constructor_jane_syntax = T.map_extension_constructor_jst; diff --git a/ocaml/parsing/ast_mapper.mli b/ocaml/parsing/ast_mapper.mli index 275a5266616..25965b63792 100644 --- a/ocaml/parsing/ast_mapper.mli +++ b/ocaml/parsing/ast_mapper.mli @@ -89,9 +89,9 @@ type mapper = { thus the thing being included might be a functor and not a plain module type *) + jkind_annotation: + mapper -> Jane_asttypes.const_jkind -> Jane_asttypes.const_jkind; label_declaration: mapper -> label_declaration -> label_declaration; - layout_annotation: - mapper -> Jane_asttypes.const_layout -> Jane_asttypes.const_layout; location: mapper -> Location.t -> Location.t; module_binding: mapper -> module_binding -> module_binding; module_declaration: mapper -> module_declaration -> module_declaration; diff --git a/ocaml/parsing/builtin_attributes.ml b/ocaml/parsing/builtin_attributes.ml index ab83ef48dc4..9253828a900 100644 --- a/ocaml/parsing/builtin_attributes.ml +++ b/ocaml/parsing/builtin_attributes.ml @@ -449,8 +449,8 @@ let warn_on_literal_pattern attrs = let explicit_arity attrs = has_attribute ["ocaml.explicit_arity"; "explicit_arity"] attrs -let layout ~legacy_immediate attrs = - let layout = +let jkind ~legacy_immediate attrs = + let jkind = List.find_map (fun a -> match a.attr_name.txt with @@ -463,7 +463,7 @@ let layout ~legacy_immediate attrs = | _ -> None ) attrs in - match layout with + match jkind with | None -> Ok None | Some (a, l) -> mark_used a.attr_name; diff --git a/ocaml/parsing/builtin_attributes.mli b/ocaml/parsing/builtin_attributes.mli index 3d82ac9f9b1..c013606bd06 100644 --- a/ocaml/parsing/builtin_attributes.mli +++ b/ocaml/parsing/builtin_attributes.mli @@ -30,7 +30,7 @@ - ocaml.afl_inst_ratio - ocaml.flambda_o3 - ocaml.flambda_oclassic - - layout attributes: + - jkind attributes: - ocaml.any - ocaml.value - ocaml.void @@ -175,16 +175,16 @@ 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. We always +(* [jkind] gets the jkind in the attributes if one is present. We always allow the [value] annotation, even if the layouts extensions are disabled. If [~legacy_immediate] is true, we allow [immediate] and [immediate64] attributes even if the layouts extensions are disabled - this is used to support the original immediacy attributes, which are now implemented in terms - of layouts. + of jkinds. - The return value is [Error ] if a layout attribute is present but + The return value is [Error ] if a jkind attribute is present but not allowed by the current set of extensions. Otherwise it is [Ok None] if - there is no layout annotation and [Ok (Some layout)] if there is one. + there is no jkind annotation and [Ok (Some jkind)] if there is one. - If no layout extensions are on and [~legacy_immediate] is false, this will always return [Ok None], [Ok (Some Value)], or [Error ...]. @@ -194,7 +194,7 @@ val has_once : Parsetree.attributes -> (bool, unit) result - If the [Layouts_beta] extension is on, this behaves like the previous case regardless of the value of [~legacy_immediate], except that it allows [float64] and [any]. - - If the [Layouts_alpha] extension is on, this can return any layout and + - If the [Layouts_alpha] extension is on, this can return any jkind and never errors. Currently, the [Layouts] extension is ignored - it's no different than @@ -202,10 +202,10 @@ val has_once : Parsetree.attributes -> (bool, unit) result This is not the only place the layouts extension level is checked. If you're changing what's allowed in a given level, you may also need to make changes - in the parser, Layouts.get_required_layouts_level, and Typeopt. + in the parser, Jkind.get_required_layouts_level, and Typeopt. *) (* CR layouts: we should eventually be able to delete ~legacy_immediate (after we turn on layouts by default). *) -val layout : legacy_immediate:bool -> Parsetree.attributes -> - (Jane_asttypes.layout_annotation option, - Jane_asttypes.layout_annotation) result +val jkind : legacy_immediate:bool -> Parsetree.attributes -> + (Jane_asttypes.jkind_annotation option, + Jane_asttypes.jkind_annotation) result diff --git a/ocaml/parsing/depend.ml b/ocaml/parsing/depend.ml index 577833e57e3..de7d47aea0c 100644 --- a/ocaml/parsing/depend.ml +++ b/ocaml/parsing/depend.ml @@ -96,13 +96,13 @@ let handle_extension ext = | _ -> () -(* CR layouts: Remember to add this when layouts can have module +(* CR layouts: Remember to add this when jkinds can have module prefixes. *) -let add_layout _bv (_layout : layout_annotation) = () +let add_jkind _bv (_jkind : jkind_annotation) = () -let add_vars_layouts bv vars_layouts = - let add_one (_, layout) = Option.iter (add_layout bv) layout in - List.iter add_one vars_layouts +let add_vars_jkinds bv vars_jkinds = + let add_one (_, jkind) = Option.iter (add_jkind bv) jkind in + List.iter add_one vars_jkinds let rec add_type bv ty = match Jane_syntax.Core_type.of_ast ty with @@ -135,14 +135,14 @@ and add_type_jst bv : Jane_syntax.Core_type.t -> _ = function | Jtyp_layout typ -> add_type_jst_layouts bv typ and add_type_jst_layouts bv : Jane_syntax.Layouts.core_type -> _ = function - | Ltyp_var { name = _; layout } -> - add_layout bv layout + | Ltyp_var { name = _; jkind } -> + add_jkind bv jkind | Ltyp_poly { bound_vars; inner_type } -> - add_vars_layouts bv bound_vars; + add_vars_jkinds bv bound_vars; add_type bv inner_type - | Ltyp_alias { aliased_type; name = _; layout } -> + | Ltyp_alias { aliased_type; name = _; jkind } -> add_type bv aliased_type; - add_layout bv layout + add_jkind bv jkind and add_package_type bv (lid, l) = add bv lid; @@ -176,8 +176,8 @@ let add_type_declaration bv td = let add_extension_constructor_jst bv : Jane_syntax.Extension_constructor.t -> _ = function - | Jext_layout (Lext_decl (vars_layouts, args, res)) -> - add_vars_layouts bv vars_layouts; + | Jext_layout (Lext_decl (vars_jkinds, args, res)) -> + add_vars_jkinds bv vars_jkinds; add_constructor_arguments bv args; Option.iter (add_type bv) res @@ -365,8 +365,8 @@ and add_immutable_array_expr bv : Jane_syntax.Immutable_arrays.expression -> _ = and add_layout_expr bv : Jane_syntax.Layouts.expression -> _ = function | Lexp_constant _ -> add_constant - | Lexp_newtype (_, layout, inner_expr) -> - add_layout bv layout; + | Lexp_newtype (_, jkind, inner_expr) -> + add_jkind bv jkind; add_expr bv inner_expr and add_n_ary_function bv : Jane_syntax.N_ary_functions.expression -> _ = diff --git a/ocaml/parsing/jane_asttypes.mli b/ocaml/parsing/jane_asttypes.mli index e897903ea21..db1a7dc1845 100644 --- a/ocaml/parsing/jane_asttypes.mli +++ b/ocaml/parsing/jane_asttypes.mli @@ -31,9 +31,9 @@ type global_flag = | Global | Nothing -(* constant layouts are parsed as layout annotations, and also used - in the type checker as already-inferred (i.e. non-variable) layouts *) -type const_layout = +(* constant jkinds are parsed as jkind annotations, and also used + in the type checker as already-inferred (i.e. non-variable) jkinds *) +type const_jkind = | Any | Value | Void @@ -41,4 +41,4 @@ type const_layout = | Immediate | Float64 -type layout_annotation = const_layout loc +type jkind_annotation = const_jkind loc diff --git a/ocaml/parsing/jane_syntax.ml b/ocaml/parsing/jane_syntax.ml index 59beaa91b61..843c79794b7 100644 --- a/ocaml/parsing/jane_syntax.ml +++ b/ocaml/parsing/jane_syntax.ml @@ -319,8 +319,8 @@ module Make_payload_protocol_of_stringable (Stringable : Stringable) : end end -module Stringable_const_layout = struct - type t = const_layout +module Stringable_const_jkind = struct + type t = const_jkind let indefinite_article_and_name = "a", "layout" @@ -332,7 +332,7 @@ module Stringable_const_layout = struct | Immediate -> "immediate" | Float64 -> "float64" - (* CR layouts v1.5: revise when moving layout recognition away from parser *) + (* CR layouts v1.5: revise when moving jkind recognition away from parser *) let of_string = function | "any" -> Some Any | "value" -> Some Value @@ -343,17 +343,17 @@ module Stringable_const_layout = struct | _ -> None end -module Layouts_pprint = struct - let const_layout fmt cl = - Format.pp_print_string fmt (Stringable_const_layout.to_string cl) +module Jkinds_pprint = struct + let const_jkind fmt cl = + Format.pp_print_string fmt (Stringable_const_jkind.to_string cl) - let layout_annotation fmt ann = const_layout fmt ann.txt + let jkind_annotation fmt ann = const_jkind fmt ann.txt end -(** Layout annotations' encoding as attribute payload, used in both n-ary - functions and layouts. *) -module Layout_annotation : sig - include Payload_protocol with type t := const_layout +(** Jkind annotations' encoding as attribute payload, used in both n-ary + functions and jkinds. *) +module Jkind_annotation : sig + include Payload_protocol with type t := const_jkind module Decode : sig include module type of Decode @@ -362,10 +362,10 @@ module Layout_annotation : sig loc:Location.t -> string Location.loc list -> payload -> - (string Location.loc * layout_annotation option) list + (string Location.loc * jkind_annotation option) list end end = struct - module Protocol = Make_payload_protocol_of_stringable (Stringable_const_layout) + module Protocol = Make_payload_protocol_of_stringable (Stringable_const_jkind) (*******************************************************) (* Conversions with a payload *) @@ -377,10 +377,10 @@ end = struct module Desugaring_error = struct type error = - | Wrong_number_of_layouts of int * layout_annotation option list + | Wrong_number_of_jkinds of int * jkind_annotation option list let report_error ~loc = function - | Wrong_number_of_layouts (n, layouts) -> + | Wrong_number_of_jkinds (n, jkinds) -> Location.errorf ~loc "Wrong number of layouts in an layout attribute;@;\ expecting %i but got this list:@;\ @@ -389,8 +389,8 @@ end = struct (Format.pp_print_list (Format.pp_print_option ~none:(fun ppf () -> Format.fprintf ppf "None") - Layouts_pprint.layout_annotation)) - layouts + Jkinds_pprint.jkind_annotation)) + jkinds exception Error of Location.t * error @@ -403,13 +403,13 @@ end = struct end let bound_vars_from_vars_and_payload ~loc var_names payload = - let layouts = option_list_from_payload ~loc payload in - try List.combine var_names layouts + let jkinds = option_list_from_payload ~loc payload in + try List.combine var_names jkinds with (* seems silly to check the length in advance when [combine] does *) | Invalid_argument _ -> Desugaring_error.raise ~loc - (Wrong_number_of_layouts (List.length var_names, layouts)) + (Wrong_number_of_jkinds (List.length var_names, jkinds)) end end @@ -695,7 +695,7 @@ module N_ary_functions = struct type function_param_desc = | Pparam_val of arg_label * expression option * pattern - | Pparam_newtype of string loc * layout_annotation option + | Pparam_newtype of string loc * jkind_annotation option type function_param = { pparam_desc : function_param_desc; @@ -732,7 +732,7 @@ module N_ary_functions = struct | Top_level | Fun_then of after_fun | Mode_constraint of mode_annotation loc list - | Layout_annotation of const_layout loc + | Jkind_annotation of const_jkind loc (* We return an [of_suffix_result] from [of_suffix] rather than having [of_suffix] interpret the payload for two reasons: @@ -758,9 +758,9 @@ module N_ary_functions = struct | Mode_constraint mode_annotation -> let payload = Mode_annotation.Encode.list_as_payload mode_annotation in ["mode_constraint"], Some payload - | Layout_annotation layout_annotation -> - let payload = Layout_annotation.Encode.as_payload layout_annotation in - ["layout_annotation"], Some payload + | Jkind_annotation jkind_annotation -> + let payload = Jkind_annotation.Encode.as_payload jkind_annotation in + ["jkind_annotation"], Some payload let of_suffix suffix = match suffix with @@ -782,15 +782,15 @@ module N_ary_functions = struct ()) mode_annotations; Mode_constraint mode_annotations) - | ["layout_annotation"] -> + | ["jkind_annotation"] -> Payload (fun payload ~loc -> assert_extension_enabled ~loc Layouts (Stable : Language_extension.maturity); - let layout_annotation = - Layout_annotation.Decode.from_payload payload ~loc + let jkind_annotation = + Jkind_annotation.Decode.from_payload payload ~loc in - Layout_annotation layout_annotation) + Jkind_annotation jkind_annotation) | _ -> Unknown_suffix let format ppf t = @@ -804,7 +804,7 @@ module N_ary_functions = struct | Expected_constraint_or_coerce | Expected_function_cases of Attribute_node.t | Expected_fun_or_newtype of Attribute_node.t - | Expected_newtype_with_layout_annotation of layout_annotation + | Expected_newtype_with_jkind_annotation of jkind_annotation | Parameterless_function let report_error ~loc = function @@ -824,9 +824,9 @@ module N_ary_functions = struct Location.errorf ~loc "Only Pexp_fun or Pexp_newtype may carry the attribute %a." Attribute_node.format attribute - | Expected_newtype_with_layout_annotation annotation -> + | Expected_newtype_with_jkind_annotation annotation -> Location.errorf ~loc "Only Pexp_newtype may carry the attribute %a." - Attribute_node.format (Attribute_node.Layout_annotation annotation) + Attribute_node.format (Attribute_node.Jkind_annotation annotation) | Parameterless_function -> Location.errorf ~loc "The expression is a Jane Syntax encoding of a function with no \ @@ -884,7 +884,7 @@ module N_ary_functions = struct fun_then(body) ::= | 'fun' pattern '->' body (* Pexp_fun *) | 'fun' '(' 'type' ident ')' '->' body (* Pexp_newtype *) - |{% '_builtin.layout_annotation' | + |{% '_builtin.jkind_annotation' | 'fun' '(' 'type' ident ')' '->' body %} (* Pexp_newtype *) pexp_function ::= @@ -939,8 +939,8 @@ module N_ary_functions = struct | Some constraint_ -> constraint_ | None -> Desugaring_error.raise expr Expected_constraint_or_coerce - let check_param pexp_desc (pexp_loc : Location.t) ~layout = - match pexp_desc, layout with + let check_param pexp_desc (pexp_loc : Location.t) ~jkind = + match pexp_desc, jkind with | Pexp_fun (lbl, def, pat, body), None -> let pparam_loc : Location.t = { loc_ghost = true; @@ -950,7 +950,7 @@ module N_ary_functions = struct in let pparam_desc = Pparam_val (lbl, def, pat) in Some ({ pparam_desc; pparam_loc }, body) - | Pexp_newtype (newtype, body), layout -> + | Pexp_newtype (newtype, body), jkind -> (* This imperfectly estimates where a newtype parameter ends: it uses the end of the type name rather than the closing paren. The closing paren location is not tracked anywhere in the parsetree. We don't @@ -962,15 +962,15 @@ module N_ary_functions = struct loc_end = newtype.loc.loc_end } in - let pparam_desc = Pparam_newtype (newtype, layout) in + let pparam_desc = Pparam_newtype (newtype, jkind) in Some ({ pparam_desc; pparam_loc }, body) | _, None -> None - | _, Some layout -> + | _, Some jkind -> Desugaring_error.raise_with_loc pexp_loc - (Expected_newtype_with_layout_annotation layout) + (Expected_newtype_with_jkind_annotation jkind) - let require_param pexp_desc pexp_loc ~arity_attribute ~layout = - match check_param pexp_desc pexp_loc ~layout with + let require_param pexp_desc pexp_loc ~arity_attribute ~jkind = + match check_param pexp_desc pexp_loc ~jkind with | Some x -> x | None -> Desugaring_error.raise_with_loc pexp_loc @@ -990,24 +990,24 @@ module N_ary_functions = struct The returned attributes are the remaining unconsumed attributes on the Pexp_fun or Pexp_newtype node. - The [layout] parameter gives the layout at which to interpret the type + The [jkind] parameter gives the jkind at which to interpret the type introduced by [expr = Pexp_newtype _]. It is only supplied in a recursive call to [extract_next_fun_param] in the event that it sees a - [Layout_annotation] attribute. + [Jkind_annotation] attribute. *) - let rec extract_next_fun_param expr ~layout : + let rec extract_next_fun_param expr ~jkind : (function_param * attributes) option * continue_or_stop = match expand_n_ary_expr expr with | None -> ( - match check_param expr.pexp_desc expr.pexp_loc ~layout with + match check_param expr.pexp_desc expr.pexp_loc ~jkind with | Some (param, body) -> Some (param, expr.pexp_attributes), Continue body | None -> None, Stop (None, Pfunction_body expr)) | Some (Top_level, _) -> None, Stop (None, Pfunction_body expr) - | Some (Layout_annotation next_layout, unconsumed_attributes) -> + | Some (Jkind_annotation next_jkind, unconsumed_attributes) -> extract_next_fun_param { expr with pexp_attributes = unconsumed_attributes } - ~layout:(Some next_layout) + ~jkind:(Some next_jkind) | Some (Mode_constraint _, _unconsumed_attributes) -> (* We need not pass through any unconsumed attributes, as [Mode_constraint _] isn't the outermost Jane Syntax node: @@ -1017,7 +1017,7 @@ module N_ary_functions = struct None, Stop (Some function_constraint, Pfunction_body body) | Some ((Fun_then after_fun as arity_attribute), unconsumed_attributes) -> let param, body = - require_param expr.pexp_desc expr.pexp_loc ~arity_attribute ~layout + require_param expr.pexp_desc expr.pexp_loc ~arity_attribute ~jkind in let continue_or_stop = match after_fun with @@ -1039,7 +1039,7 @@ module N_ary_functions = struct in let rec loop expr ~rev_params = let next_param, continue_or_stop = - extract_next_fun_param expr ~layout:None + extract_next_fun_param expr ~jkind:None in let rev_params = match next_param with @@ -1057,7 +1057,7 @@ module N_ary_functions = struct | Pexp_newtype _ | Pexp_fun _ -> () | _ -> Misc.fatal_error "called on something that isn't a newtype or fun"); let unconsumed_attributes = - match extract_next_fun_param expr ~layout:None with + match extract_next_fun_param expr ~jkind:None with | Some (_, attributes), _ -> attributes | None, _ -> Desugaring_error.raise expr Parameterless_function in @@ -1116,11 +1116,11 @@ module N_ary_functions = struct | Pparam_val (label, default, pat) -> Ast_helper.Exp.fun_ label default pat body ~loc [@alert "-prefer_jane_syntax"] - | Pparam_newtype (newtype, layout) -> ( - match layout with + | Pparam_newtype (newtype, jkind) -> ( + match jkind with | None -> Ast_helper.Exp.newtype newtype body ~loc - | Some layout -> - n_ary_function_expr (Layout_annotation layout) + | Some jkind -> + n_ary_function_expr (Jkind_annotation jkind) (Ast_helper.Exp.newtype newtype body ~loc)) in match after_fun_attribute with @@ -1248,35 +1248,35 @@ module Layouts = struct type nonrec expression = | Lexp_constant of constant - | Lexp_newtype of string loc * layout_annotation * expression + | Lexp_newtype of string loc * jkind_annotation * expression type nonrec pattern = Lpat_constant of constant type nonrec core_type = | Ltyp_var of { name : string option; - layout : layout_annotation + jkind : jkind_annotation } | Ltyp_poly of - { bound_vars : (string loc * layout_annotation option) list; + { bound_vars : (string loc * jkind_annotation option) list; inner_type : core_type } | Ltyp_alias of { aliased_type : core_type; name : string option; - layout : layout_annotation + jkind : jkind_annotation } type nonrec extension_constructor = | Lext_decl of - (string Location.loc * layout_annotation option) list + (string Location.loc * jkind_annotation option) list * constructor_arguments * Parsetree.core_type option (*******************************************************) (* Pretty-printing *) - module Pprint = Layouts_pprint + module Pprint = Jkinds_pprint (*******************************************************) (* Errors *) @@ -1328,8 +1328,8 @@ module Layouts = struct let raise ~loc err = raise (Error (loc, err)) end - module Encode = Layout_annotation.Encode - module Decode = Layout_annotation.Decode + module Encode = Jkind_annotation.Encode + module Decode = Jkind_annotation.Decode (*******************************************************) (* Constants *) @@ -1356,8 +1356,8 @@ module Layouts = struct let constant = constant_of c in Ast_of.wrap_jane_syntax ["unboxed"] @@ Ast_helper.Exp.constant constant - | Lexp_newtype (name, layout, inner_expr) -> - let payload = Encode.as_payload layout in + | Lexp_newtype (name, jkind, inner_expr) -> + let payload = Encode.as_payload jkind in Ast_of.wrap_jane_syntax ["newtype"] ~payload @@ Ast_helper.Exp.newtype name inner_expr) @@ -1376,10 +1376,10 @@ module Layouts = struct | Pexp_constant const -> Lexp_constant (of_constant ~loc const) | _ -> Desugaring_error.raise ~loc (Unexpected_wrapped_expr expr)) | ["newtype"] -> ( - let layout = Decode.from_payload ~loc payload in + let jkind = Decode.from_payload ~loc payload in match expr.pexp_desc with | Pexp_newtype (name, inner_expr) -> - Lexp_newtype (name, layout, inner_expr) + Lexp_newtype (name, jkind, inner_expr) | _ -> Desugaring_error.raise ~loc (Unexpected_wrapped_expr expr)) | _ -> Desugaring_error.raise ~loc (Unexpected_attribute names) in @@ -1418,24 +1418,24 @@ module Layouts = struct (* See Note [Wrapping with make_entire_jane_syntax] *) Core_type.make_entire_jane_syntax ~loc feature (fun () -> match typ with - | Ltyp_var { name; layout } -> ( - let payload = Encode.as_payload layout in + | Ltyp_var { name; jkind } -> ( + let payload = Encode.as_payload jkind in Type_of.wrap_jane_syntax ["var"] ~payload @@ match name with | None -> Ast_helper.Typ.any ~loc () | Some name -> Ast_helper.Typ.var ~loc name) | Ltyp_poly { bound_vars; inner_type } -> - let var_names, layouts = List.split bound_vars in + let var_names, jkinds = List.split bound_vars in (* Pass the loc because we don't want a ghost location here *) let tpoly = Ast_helper.Typ.poly ~loc var_names inner_type in - if List.for_all Option.is_none layouts + if List.for_all Option.is_none jkinds then raise (No_wrap_necessary tpoly) else - let payload = Encode.option_list_as_payload layouts in + let payload = Encode.option_list_as_payload jkinds in Type_of.wrap_jane_syntax ["poly"] ~payload tpoly - | Ltyp_alias { aliased_type; name; layout } -> - let payload = Encode.as_payload layout in + | Ltyp_alias { aliased_type; name; jkind } -> + let payload = Encode.as_payload jkind in let has_name, inner_typ = match name with | None -> "anon", aliased_type @@ -1455,10 +1455,10 @@ module Layouts = struct let lty = match names with | ["var"] -> ( - let layout = Decode.from_payload ~loc payload in + let jkind = Decode.from_payload ~loc payload in match typ.ptyp_desc with - | Ptyp_any -> Ltyp_var { name = None; layout } - | Ptyp_var name -> Ltyp_var { name = Some name; layout } + | Ptyp_any -> Ltyp_var { name = None; jkind } + | Ptyp_var name -> Ltyp_var { name = Some name; jkind } | _ -> Desugaring_error.raise ~loc (Unexpected_wrapped_type typ)) | ["poly"] -> ( match typ.ptyp_desc with @@ -1469,17 +1469,17 @@ module Layouts = struct Ltyp_poly { bound_vars; inner_type } | _ -> Desugaring_error.raise ~loc (Unexpected_wrapped_type typ)) | ["alias"; "anon"] -> - let layout = Decode.from_payload ~loc payload in + let jkind = Decode.from_payload ~loc payload in Ltyp_alias { aliased_type = { typ with ptyp_attributes = attributes }; name = None; - layout + jkind } | ["alias"; "named"] -> ( - let layout = Decode.from_payload ~loc payload in + let jkind = Decode.from_payload ~loc payload in match typ.ptyp_desc with | Ptyp_alias (inner_typ, name) -> - Ltyp_alias { aliased_type = inner_typ; name = Some name; layout } + Ltyp_alias { aliased_type = inner_typ; name = Some name; jkind } | _ -> Desugaring_error.raise ~loc (Unexpected_wrapped_type typ)) | _ -> Desugaring_error.raise ~loc (Unexpected_attribute names) in @@ -1499,16 +1499,16 @@ module Layouts = struct Extension_constructor.make_entire_jane_syntax ~loc feature (fun () -> match ext with | Lext_decl (bound_vars, args, res) -> - let vars, layouts = List.split bound_vars in + let vars, jkinds = List.split bound_vars in let ext_ctor = (* Pass ~loc here, because the constructor declaration is not a ghost *) Ast_helper.Te.decl ~loc ~vars ~args ?info ?docs ?res name in - if List.for_all Option.is_none layouts + if List.for_all Option.is_none jkinds then raise (No_wrap_necessary ext_ctor) else - let payload = Encode.option_list_as_payload layouts in + let payload = Encode.option_list_as_payload jkinds in Ext_ctor_of.wrap_jane_syntax ["ext"] ~payload ext_ctor) with No_wrap_necessary ext_ctor -> ext_ctor @@ -1535,21 +1535,21 @@ module Layouts = struct lext, attributes (*********************************************************) - (* Constructing a [constructor_declaration] with layouts *) + (* Constructing a [constructor_declaration] with jkinds *) module Ctor_decl_of = Ast_of (Constructor_declaration) (Ext) - let constructor_declaration_of ~loc ~attrs ~info ~vars_layouts ~args ~res name + let constructor_declaration_of ~loc ~attrs ~info ~vars_jkinds ~args ~res name = - let vars, layouts = List.split vars_layouts in + let vars, jkinds = List.split vars_jkinds in let ctor_decl = Ast_helper.Type.constructor ~loc ~info ~vars ~args ?res name in let ctor_decl = - if List.for_all Option.is_none layouts + if List.for_all Option.is_none jkinds then ctor_decl else - let payload = Encode.option_list_as_payload layouts in + let payload = Encode.option_list_as_payload jkinds in Constructor_declaration.make_entire_jane_syntax ~loc feature (fun () -> Ctor_decl_of.wrap_jane_syntax ["vars"] ~payload ctor_decl) in @@ -1567,14 +1567,14 @@ module Layouts = struct let names, payload, attributes = Of_ast.unwrap_jane_syntax_attributes_exn ~loc ctor_decl.pcd_attributes in - let vars_layouts = + let vars_jkinds = match names with | ["vars"] -> Decode.bound_vars_from_vars_and_payload ~loc ctor_decl.pcd_vars payload | _ -> Desugaring_error.raise ~loc (Unexpected_attribute names) in - Some (vars_layouts, attributes) + Some (vars_jkinds, attributes) | _ -> None let of_constructor_declaration = diff --git a/ocaml/parsing/jane_syntax.mli b/ocaml/parsing/jane_syntax.mli index 21a72c7174d..90d78106e04 100644 --- a/ocaml/parsing/jane_syntax.mli +++ b/ocaml/parsing/jane_syntax.mli @@ -135,12 +135,12 @@ module N_ary_functions : sig {{!Asttypes.arg_label.Optional}[Optional]} is allowed. *) | Pparam_newtype of - string Asttypes.loc * Jane_asttypes.layout_annotation option - (** [Pparam_newtype (x, layout)] represents the parameter [(type x)]. + string Asttypes.loc * Jane_asttypes.jkind_annotation option + (** [Pparam_newtype (x, jkind)] represents the parameter [(type x)]. [x] carries the location of the identifier, whereas [pparam_loc] is the location of the [(type x)] as a whole. - [layout] is the same as [Lexp_newtype]'s layout. + [jkind] is the same as [Lexp_newtype]'s jkind. Multiple parameters [(type a b c)] are represented as multiple [Pparam_newtype] nodes, let's say: @@ -222,7 +222,7 @@ module Strengthen : sig val mty_of : loc:Location.t -> module_type -> Parsetree.module_type end -(** The ASTs for layouts and other unboxed-types features *) +(** The ASTs for jkinds and other unboxed-types features *) module Layouts : sig type constant = | Float of string * char option @@ -236,7 +236,7 @@ module Layouts : sig (* This is represented as an attribute wrapping a [Pexp_newtype] node. *) | Lexp_newtype of string Location.loc - * Jane_asttypes.layout_annotation + * Jane_asttypes.jkind_annotation * Parsetree.expression type nonrec pattern = @@ -250,45 +250,45 @@ module Layouts : sig a [Ptyp_var] node. *) | Ltyp_var of { name : string option; - layout : Jane_asttypes.layout_annotation + jkind : Jane_asttypes.jkind_annotation } (* [('a : immediate) 'b 'c ('d : value). 'a -> 'b -> 'c -> 'd] *) (* This is represented by an attribute wrapping a [Ptyp_poly] node. *) (* This is used instead of [Ptyp_poly] only where there is at least one - actual layout annotation. If there is a polytype with no layout + actual jkind annotation. If there is a polytype with no jkind annotations at all, [Ptyp_poly] is used instead. This saves space in the parsed representation and guarantees that we don't accidentally try to require the layouts extension. *) | Ltyp_poly of { bound_vars : - (string Location.loc * Jane_asttypes.layout_annotation option) list; + (string Location.loc * Jane_asttypes.jkind_annotation option) list; inner_type : Parsetree.core_type } (* [ty as ('a : immediate)] *) (* This is represented by an attribute wrapping either a [Ptyp_alias] node - or, in the [ty as (_ : layout)] case, the annotated type itself, with no + or, in the [ty as (_ : jkind)] case, the annotated type itself, with no intervening [type_desc]. *) | Ltyp_alias of { aliased_type : Parsetree.core_type; name : string option; - layout : Jane_asttypes.layout_annotation + jkind : Jane_asttypes.jkind_annotation } type nonrec extension_constructor = (* [ 'a ('b : immediate) ('c : float64). 'a * 'b * 'c -> exception ] *) (* This is represented as an attribute on a [Pext_decl] node. *) - (* Like [Ltyp_poly], this is used only when there is at least one layout + (* Like [Ltyp_poly], this is used only when there is at least one jkind annotation. Otherwise, we will have a [Pext_decl]. *) | Lext_decl of - (string Location.loc * Jane_asttypes.layout_annotation option) list + (string Location.loc * Jane_asttypes.jkind_annotation option) list * Parsetree.constructor_arguments * Parsetree.core_type option module Pprint : sig - val const_layout : Format.formatter -> Jane_asttypes.const_layout -> unit + val const_jkind : Format.formatter -> Jane_asttypes.const_jkind -> unit - val layout_annotation : - Format.formatter -> Jane_asttypes.layout_annotation -> unit + val jkind_annotation : + Format.formatter -> Jane_asttypes.jkind_annotation -> unit end val expr_of : loc:Location.t -> expression -> Parsetree.expression @@ -311,20 +311,20 @@ module Layouts : sig loc:Location.t -> attrs:Parsetree.attributes -> info:Docstrings.info -> - vars_layouts: - (string Location.loc * Jane_asttypes.layout_annotation option) list -> + vars_jkinds: + (string Location.loc * Jane_asttypes.jkind_annotation option) list -> args:Parsetree.constructor_arguments -> res:Parsetree.core_type option -> string Location.loc -> Parsetree.constructor_declaration - (** Extract the layouts from a [constructor_declaration]; returns leftover + (** Extract the jkinds from a [constructor_declaration]; returns leftover attributes along with the annotated variables. Unlike other pieces of jane-syntax, users of this function will still have to process the remaining pieces of the original [constructor_declaration]. *) val of_constructor_declaration : Parsetree.constructor_declaration -> - ((string Location.loc * Jane_asttypes.layout_annotation option) list + ((string Location.loc * Jane_asttypes.jkind_annotation option) list * Parsetree.attributes) option end diff --git a/ocaml/parsing/parser.mly b/ocaml/parsing/parser.mly index abd543b9604..b248c6cab14 100644 --- a/ocaml/parsing/parser.mly +++ b/ocaml/parsing/parser.mly @@ -619,12 +619,12 @@ let pat_of_label lbl = Pat.mk ~loc:lbl.loc (Ppat_var (loc_last lbl)) let mk_newtypes ~loc newtypes exp = - let mk_one (name, layout) exp = - match layout with + let mk_one (name, jkind) exp = + match jkind with | None -> mkexp ~loc (Pexp_newtype (name, exp)) - | Some layout -> + | Some jkind -> Jane_syntax.Layouts.expr_of ~loc:(make_loc loc) - (Lexp_newtype (name, layout, exp)) + (Lexp_newtype (name, jkind, exp)) in List.fold_right mk_one newtypes exp @@ -817,7 +817,7 @@ let all_params_as_newtypes = in let as_newtype { pparam_desc; _ } = match pparam_desc with - | Pparam_newtype (x, layout) -> Some (x, layout) + | Pparam_newtype (x, jkind) -> Some (x, jkind) | Pparam_val _ -> None in fun params -> @@ -909,7 +909,7 @@ let mk_directive ~loc name arg = pdir_loc = make_loc loc; } -let check_layout ~loc id : const_layout = +let check_jkind ~loc id : const_jkind = match id with | "any" -> Any | "value" -> Value @@ -3270,13 +3270,13 @@ fun_param_as_list: | _ :: _ :: _ -> ghost_loc $sloc in List.map - (fun (newtype, layout) -> + (fun (newtype, jkind) -> { N_ary.pparam_loc = loc; - pparam_desc = Pparam_newtype (newtype, layout) + pparam_desc = Pparam_newtype (newtype, jkind) }) ty_params } - | LPAREN TYPE mkrhs(LIDENT) COLON layout_annotation RPAREN + | LPAREN TYPE mkrhs(LIDENT) COLON jkind_annotation RPAREN { [ { N_ary.pparam_loc = make_loc $sloc; pparam_desc = Pparam_newtype ($3, Some $5) } @@ -3346,14 +3346,14 @@ type_constraint: (* the thing between the [type] and the [.] in [let : type <>. 'a -> 'a = ...] *) -newtypes: (* : (string with_loc * layout_annotation option) list *) +newtypes: (* : (string with_loc * jkind_annotation option) list *) newtype+ { $1 } -newtype: (* : string with_loc * layout_annotation option *) +newtype: (* : string with_loc * jkind_annotation option *) mkrhs(LIDENT) { $1, None } - | LPAREN name=mkrhs(LIDENT) COLON layout=layout_annotation RPAREN - { name, Some layout } + | LPAREN name=mkrhs(LIDENT) COLON jkind=jkind_annotation RPAREN + { name, Some jkind } /* Patterns */ @@ -3626,7 +3626,7 @@ generic_type_declaration(flag, kind): flag = flag params = type_parameters id = mkrhs(LIDENT) - layout = layout_attr? + jkind = jkind_attr? kind_priv_manifest = kind cstrs = constraints attrs2 = post_item_attributes @@ -3636,7 +3636,7 @@ generic_type_declaration(flag, kind): let attrs = attrs1 @ attrs2 in let loc = make_loc $sloc in (flag, ext), - Type.mk id ~params ?layout ~cstrs ~kind ~priv ?manifest ~attrs ~loc ~docs + Type.mk id ~params ?jkind ~cstrs ~kind ~priv ?manifest ~attrs ~loc ~docs } ; %inline generic_and_type_declaration(kind): @@ -3644,7 +3644,7 @@ generic_type_declaration(flag, kind): attrs1 = attributes params = type_parameters id = mkrhs(LIDENT) - layout = layout_attr? + jkind = jkind_attr? kind_priv_manifest = kind cstrs = constraints attrs2 = post_item_attributes @@ -3654,7 +3654,7 @@ generic_type_declaration(flag, kind): let attrs = attrs1 @ attrs2 in let loc = make_loc $sloc in let text = symbol_text $symbolstartpos in - Type.mk id ~params ?layout ~cstrs ~kind ~priv ?manifest ~attrs ~loc ~docs ~text + Type.mk id ~params ?jkind ~cstrs ~kind ~priv ?manifest ~attrs ~loc ~docs ~text } ; %inline constraints: @@ -3707,36 +3707,36 @@ type_parameters: { ps } ; -layout_annotation: (* : layout_annotation *) +jkind_annotation: (* : jkind_annotation *) ident { let loc = make_loc $sloc in - mkloc (check_layout ~loc $1) loc } + mkloc (check_jkind ~loc $1) loc } ; -layout_string: (* : string with_loc *) - (* the [check_layout] just ensures this is the name of a layout *) +jkind_string: (* : string with_loc *) + (* the [check_jkind] just ensures this is the name of a jkind *) ident { let loc = make_loc $sloc in - ignore (check_layout ~loc $1 : const_layout); + ignore (check_jkind ~loc $1 : const_jkind); mkloc $1 loc } ; -layout_attr: +jkind_attr: COLON - layout=layout_string - { Attr.mk ~loc:layout.loc layout (PStr []) } + jkind=jkind_string + { Attr.mk ~loc:jkind.loc jkind (PStr []) } ; -%inline type_param_with_layout: +%inline type_param_with_jkind: name=tyvar_name_or_underscore attrs=attributes COLON - layout=layout_annotation + jkind=jkind_annotation { Jane_syntax.Core_type.core_type_of ~loc:(make_loc $sloc) ~attrs - (Jtyp_layout (Ltyp_var { name; layout })) } + (Jtyp_layout (Ltyp_var { name; jkind })) } ; parenthesized_type_parameter: type_parameter { $1 } - | type_variance type_param_with_layout + | type_variance type_param_with_jkind { $2, $1 } ; @@ -3809,9 +3809,9 @@ generic_constructor_declaration(opening): %inline constructor_declaration(opening): d = generic_constructor_declaration(opening) { - let cid, vars_layouts, args, res, attrs, loc, info = d in + let cid, vars_jkinds, args, res, attrs, loc, info = d in Jane_syntax.Layouts.constructor_declaration_of - cid ~vars_layouts ~args ~res ~attrs ~loc ~info + cid ~vars_jkinds ~args ~res ~attrs ~loc ~info } ; str_exception_declaration: @@ -3839,24 +3839,24 @@ sig_exception_declaration: vars_args_res = generalized_constructor_arguments attrs2 = attributes attrs = post_item_attributes - { let vars_layouts, args, res = vars_args_res in + { let vars_jkinds, args, res = vars_args_res in let loc = make_loc ($startpos, $endpos(attrs2)) in let docs = symbol_docs $sloc in let ext_ctor = Jane_syntax.Extension_constructor.extension_constructor_of ~loc ~name:id ~attrs:(attrs1 @ attrs2) ~docs - (Jext_layout (Lext_decl (vars_layouts, args, res))) + (Jext_layout (Lext_decl (vars_jkinds, args, res))) in Te.mk_exception ~attrs ext_ctor, ext } ; %inline let_exception_declaration: mkrhs(constr_ident) generalized_constructor_arguments attributes - { let vars_layouts, args, res = $2 in + { let vars_jkinds, args, res = $2 in Jane_syntax.Extension_constructor.extension_constructor_of ~loc:(make_loc $sloc) ~name:$1 ~attrs:$3 - (Jext_layout (Lext_decl (vars_layouts, args, res))) } + (Jext_layout (Lext_decl (vars_jkinds, args, res))) } ; generalized_constructor_arguments: @@ -3948,10 +3948,10 @@ label_declaration_semi: %inline extension_constructor_declaration(opening): d = generic_constructor_declaration(opening) { - let name, vars_layouts, args, res, attrs, loc, info = d in + let name, vars_jkinds, args, res, attrs, loc, info = d in Jane_syntax.Extension_constructor.extension_constructor_of ~loc ~attrs ~info ~name - (Jext_layout (Lext_decl(vars_layouts, args, res))) + (Jext_layout (Lext_decl(vars_jkinds, args, res))) } ; extension_constructor_rebind(opening): @@ -4005,14 +4005,14 @@ with_type_binder: /* Polymorphic types */ -%inline typevar: (* : string with_loc * layout_annotation option *) +%inline typevar: (* : string with_loc * jkind_annotation option *) QUOTE mkrhs(ident) { ($2, None) } - | LPAREN QUOTE tyvar=mkrhs(ident) COLON layout=layout_annotation RPAREN - { (tyvar, Some layout) } + | LPAREN QUOTE tyvar=mkrhs(ident) COLON jkind=jkind_annotation RPAREN + { (tyvar, Some jkind) } ; %inline typevar_list: - (* : (string with_loc * layout_annotation option) list *) + (* : (string with_loc * jkind_annotation option) list *) nonempty_llist(typevar) { $1 } ; @@ -4074,10 +4074,10 @@ alias_type: LPAREN name = tyvar_name_or_underscore COLON - layout = layout_annotation + jkind = jkind_annotation RPAREN { Jane_syntax.Layouts.type_of ~loc:(make_loc $sloc) - (Ltyp_alias { aliased_type; name; layout }) } + (Ltyp_alias { aliased_type; name; jkind }) } ; (* Function types include: @@ -4226,12 +4226,12 @@ atomic_type: { Ptyp_extension $1 } ) { $1 } /* end mktyp group */ - | LPAREN QUOTE name=ident COLON layout=layout_annotation RPAREN + | LPAREN QUOTE name=ident COLON jkind=jkind_annotation RPAREN { Jane_syntax.Layouts.type_of ~loc:(make_loc $sloc) @@ - Ltyp_var { name = Some name; layout } } - | LPAREN UNDERSCORE COLON layout=layout_annotation RPAREN + Ltyp_var { name = Some name; jkind } } + | LPAREN UNDERSCORE COLON jkind=jkind_annotation RPAREN { Jane_syntax.Layouts.type_of ~loc:(make_loc $sloc) @@ - Ltyp_var { name = None; layout } } + Ltyp_var { name = None; jkind } } (* This is the syntax of the actual type parameters in an application of diff --git a/ocaml/parsing/pprintast.ml b/ocaml/parsing/pprintast.ml index e91108d4fe3..141ec8462e4 100644 --- a/ocaml/parsing/pprintast.ml +++ b/ocaml/parsing/pprintast.ml @@ -290,17 +290,17 @@ let iter_loc f ctxt {txt; loc = _} = f ctxt txt let constant_string f s = pp f "%S" s let tyvar = Printast.tyvar -let layout_annotation = Jane_syntax.Layouts.Pprint.layout_annotation +let jkind_annotation = Jane_syntax.Layouts.Pprint.jkind_annotation -let tyvar_layout_loc ~print_quote f (str,layout) = +let tyvar_jkind_loc ~print_quote f (str,jkind) = let pptv = if print_quote then tyvar else fun ppf s -> Format.fprintf ppf "%s" s in - match layout with + match jkind with | None -> pptv f str.txt - | Some lay -> Format.fprintf f "(%a : %a)" pptv str.txt layout_annotation lay + | Some lay -> Format.fprintf f "(%a : %a)" pptv str.txt jkind_annotation lay let tyvar_loc f str = tyvar f str.txt let string_quot f x = pp f "`%s" x @@ -446,19 +446,19 @@ and core_type_jane_syntax ctxt attrs f (x : Jane_syntax.Core_type.t) = (attributes ctxt) filtered_attrs end else match x with - | Jtyp_layout (Ltyp_alias { aliased_type; name; layout }) -> + | Jtyp_layout (Ltyp_alias { aliased_type; name; jkind }) -> pp f "@[<2>%a@;as@;(%a :@ %a)@]" (core_type1 ctxt) aliased_type tyvar_option name - layout_annotation layout + jkind_annotation jkind | _ -> pp f "@[<2>%a@]" (core_type1_jane_syntax ctxt attrs) x and core_type1_jane_syntax ctxt attrs f (x : Jane_syntax.Core_type.t) = if has_non_curry_attr attrs then core_type_jane_syntax ctxt attrs f x else match x with - | Jtyp_layout (Ltyp_var { name; layout }) -> - pp f "(%a@;:@;%a)" tyvar_option name layout_annotation layout + | Jtyp_layout (Ltyp_var { name; jkind }) -> + pp f "(%a@;:@;%a)" tyvar_option name jkind_annotation jkind | _ -> paren true (core_type_jane_syntax ctxt attrs) f x and tyvar_option f = function @@ -1428,7 +1428,7 @@ and pp_print_pexp_function ctxt sep f x = | Some (Jexp_layout (Lexp_newtype (str, lay, e)), []) -> pp f "@[(type@ %s :@ %a)@]@ %a" str.txt - layout_annotation lay + jkind_annotation lay (pp_print_pexp_function ctxt sep) e | Some (jst, attrs) -> pp f "%s@;%a" sep (jane_syntax_expr ctxt attrs ~parens:false) jst @@ -1459,7 +1459,7 @@ and binding ctxt f {pvb_pat=p; pvb_expr=x; _} = | _ -> None in let rec gadt_exp tyvars e = match e with - (* no need to handle layout annotations here; the extracted variables + (* no need to handle jkind annotations here; the extracted variables don't get printed -- they're just used to decide how to print *) | {pexp_desc=Pexp_newtype (tyvar, e); pexp_attributes=[]} -> gadt_exp (tyvar :: tyvars) e @@ -1768,13 +1768,13 @@ and type_declaration ctxt f x = in let constructor_declaration f pcd = pp f "|@;"; - let vars_layouts, attrs = + let vars_jkinds, attrs = match Jane_syntax.Layouts.of_constructor_declaration pcd with | None -> List.map (fun v -> v, None) pcd.pcd_vars, pcd.pcd_attributes | Some stuff -> stuff in constructor_declaration ctxt f - (pcd.pcd_name.txt, vars_layouts, pcd.pcd_args, pcd.pcd_res, attrs) + (pcd.pcd_name.txt, vars_jkinds, pcd.pcd_args, pcd.pcd_res, attrs) in let repr f = let intro f = @@ -1817,7 +1817,7 @@ and type_extension ctxt f x = x.ptyext_constructors (item_attributes ctxt) x.ptyext_attributes -and constructor_declaration ctxt f (name, vars_layouts, args, res, attrs) = +and constructor_declaration ctxt f (name, vars_jkinds, args, res, attrs) = let name = match name with | "::" -> "(::)" @@ -1825,7 +1825,7 @@ and constructor_declaration ctxt f (name, vars_layouts, args, res, attrs) = let pp_vars f vls = match vls with | [] -> () - | _ -> pp f "%a@;.@;" (list (tyvar_layout_loc ~print_quote:true) ~sep:"@;") + | _ -> pp f "%a@;.@;" (list (tyvar_jkind_loc ~print_quote:true) ~sep:"@;") vls in match res with @@ -1840,7 +1840,7 @@ and constructor_declaration ctxt f (name, vars_layouts, args, res, attrs) = (attributes ctxt) attrs | Some r -> pp f "%s:@;%a%a@;%a" name - pp_vars vars_layouts + pp_vars vars_jkinds (fun f -> function | Pcstr_tuple [] -> core_type1 ctxt f r | Pcstr_tuple l -> pp f "%a@;->@;%a" @@ -1980,10 +1980,10 @@ and layout_expr ctxt f (x : Jane_syntax.Layouts.expression) ~parens = | Lexp_newtype _ when parens || ctxt.pipe || ctxt.semi -> paren true (layout_expr reset_ctxt ~parens:false) f x | Lexp_constant x -> unboxed_constant ctxt f x - | Lexp_newtype (lid, layout, inner_expr) -> + | Lexp_newtype (lid, jkind, inner_expr) -> pp f "@[<2>fun@;(type@;%s :@;%a)@;%a@]" lid.txt - layout_annotation layout + jkind_annotation jkind (pp_print_pexp_function ctxt "->") inner_expr and unboxed_constant _ctxt f (x : Jane_syntax.Layouts.constant) @@ -2000,7 +2000,7 @@ and function_param ctxt f | Pparam_val (a, b, c) -> label_exp ctxt f (a, b, c) | Pparam_newtype (ty, None) -> pp f "(type %s)" ty.txt | Pparam_newtype (ty, Some annot) -> - pp f "(type %s : %a)" ty.txt layout_annotation annot + pp f "(type %s : %a)" ty.txt jkind_annotation annot and function_body ctxt f (x : Jane_syntax.N_ary_functions.function_body) = match x with diff --git a/ocaml/stdlib/Makefile b/ocaml/stdlib/Makefile index d03d32df193..40728ae3ee8 100644 --- a/ocaml/stdlib/Makefile +++ b/ocaml/stdlib/Makefile @@ -221,7 +221,7 @@ stdlib.cmx: stdlib.ml # special cases to add the extension flag when compiling float_u -# CR jkind: eventually these can be just [-extension layouts] +# CR layouts: eventually these can be just [-extension layouts] stdlib__Float_u.cmi: $(CAMLC) $(COMPFLAGS) -extension layouts_alpha \ -o $@ -c $(filter %.mli, $^) diff --git a/ocaml/testsuite/tests/typing-layouts/basics.ml b/ocaml/testsuite/tests/typing-layouts/basics.ml index 94566fa56bb..541608e260c 100644 --- a/ocaml/testsuite/tests/typing-layouts/basics.ml +++ b/ocaml/testsuite/tests/typing-layouts/basics.ml @@ -81,7 +81,7 @@ Error: Layout immediate is more experimental than allowed by -extension layouts. (* Test 6: explicitly polymorphic types *) (* CR layouts: These tests can come back from [layouts_beta.ml] when we allow parameter - layout annotations by default. *) + jkind annotations by default. *) (*****************************************) (* Test 7: the layout check in unify_var *) @@ -105,7 +105,7 @@ Error: Layout immediate is more experimental than allowed by -extension layouts. sort enabled by default. *) (*************************************************) -(* Test 10: layouts are checked by "more general" *) +(* Test 10: jkinds are checked by "more general" *) (* CR layouts: These tests moved to [basics_beta.ml] because they use annotated type parameters. Bring them back here when we allow this by default. *) @@ -251,7 +251,6 @@ Line 1, characters 14-18: Error: Layout void is used here, but the appropriate layouts extension is not enabled |}];; - (* CR layouts v5: Once we allow non-value top-level module definitions, add tests showing that things get defaulted to value. *) diff --git a/ocaml/testsuite/tests/typing-layouts/basics_alpha.ml b/ocaml/testsuite/tests/typing-layouts/basics_alpha.ml index c38b4acbdab..f89a6bd40c6 100644 --- a/ocaml/testsuite/tests/typing-layouts/basics_alpha.ml +++ b/ocaml/testsuite/tests/typing-layouts/basics_alpha.ml @@ -289,7 +289,7 @@ Line 3, characters 0-15: Error: s5 has layout value, which is not a sublayout of immediate. |}] -(* CR layouts v2.9: improve error, which will require layout histories *) +(* CR layouts v2.9: improve error, which will require jkind histories *) type ('a : any) t4 = 'a and s4 = string t4;; @@ -417,11 +417,11 @@ Error: This method has type 'b -> unit which is less general than |}];; (* CR layouts v1.5: add more tests here once you can annotate these types with - layouts. + jkinds. *) (*****************************************) -(* Test 7: the layout check in unify_var *) +(* Test 7: the jkind check in unify_var *) type ('a : immediate) t7 = Foo7 of 'a @@ -619,7 +619,7 @@ Error: This expression has type t_void but an expression was expected of type |}];; (*************************************************) -(* Test 10: layouts are checked by "more general" *) +(* Test 10: jkinds are checked by "more general" *) (* This hits the first linktype in moregen (no expansion required to see it's a var) *) @@ -708,7 +708,7 @@ end;; Line 5, characters 4-7: 5 | t.v # baz11 ^^^ -Error: Methods must have layout value. +Error: Method types must have layout value. This expression has layout void, which does not overlap with value. |}] @@ -774,7 +774,7 @@ Error: The type constraints are not consistent. |}];; (*******************************************************************) -(* Test 12: class parameters and bound vars must have layout value *) +(* Test 12: class parameters and bound vars must have jkind value *) (* Hits `Pcl_let` *) module M12_1 = struct @@ -1042,8 +1042,8 @@ Error: |}];; (****************************************************) -(* Test 15: Type aliases need not have layout value *) -(* (In [transl_type_aux], this hits the layout given to the type variable in the +(* Test 15: Type aliases need not have jkind value *) +(* (In [transl_type_aux], this hits the jkind given to the type variable in the Not_found case of the Ptyp_alias case. *) type ('a : void) t15 type ('a, 'b) foo15 = ('a as 'b) t15 -> 'b t15;; @@ -1063,8 +1063,8 @@ type t_16 = T_16 : 'a t_void_16 -> t_16 [@@unboxed] |}];; (**************************************************************************) -(* Test 17: incremental layout checking of @@unboxed types - see comment on - [constrain_type_layout]. *) +(* Test 17: incremental jkind checking of @@unboxed types - see comment on + [constrain_type_jkind]. *) type 'a t17 = 'a list type s17 = { lbl : s17 t17 } [@@unboxed];; @@ -1076,7 +1076,7 @@ type s17 = { lbl : s17 t17; } [@@unboxed] (*****************************************) (* Test 18: expansion in [check_univars] *) -(* This test isn't really layouts-specific, but it checks that the layout checks +(* This test isn't really jkinds-specific, but it checks that the jkind checks we've added in [Typecore.check_univars] don't choke when expansion is needed to see a variable *) type 'a t18 = 'a @@ -1176,7 +1176,7 @@ end = struct type t_imm : immediate end (* these are abstract, so the only trouble with unifying them in a GADT - match is around their layouts *) + match is around their jkinds *) let f (x : (M.t_void, M.t_imm) eq) = match x with @@ -1194,7 +1194,7 @@ Error: This pattern matches values of type (M.t_void, M.t_void) eq M.t_void has layout void, which does not overlap with immediate. |}] (* CR layouts v2.9: error message is OK, but it could probably be better. - But a similar case without layouts is already pretty bad, so try + But a similar case without jkinds is already pretty bad, so try that before spending too much time here. *) (*****************************************************) diff --git a/ocaml/testsuite/tests/typing-layouts/basics_beta.ml b/ocaml/testsuite/tests/typing-layouts/basics_beta.ml index ad1b4d9d58a..2e537e82326 100644 --- a/ocaml/testsuite/tests/typing-layouts/basics_beta.ml +++ b/ocaml/testsuite/tests/typing-layouts/basics_beta.ml @@ -349,10 +349,10 @@ Error: This method has type 'b -> unit which is less general than |}];; (* CR layouts v1.5: add more tests here once you can annotate these types with - layouts. *) + jkinds. *) -(*****************************************) -(* Test 7: the layout check in unify_var *) +(****************************************) +(* Test 7: the jkind check in unify_var *) type ('a : immediate) t7 = Foo7 of 'a @@ -513,7 +513,7 @@ Error: Tuple element types must have layout value. |}];; (*************************************************) -(* Test 10: layouts are checked by "more general" *) +(* Test 10: jkinds are checked by "more general" *) (* This hits the first linktype in moregen (no expansion required to see it's a var) *) @@ -618,7 +618,7 @@ end;; Line 5, characters 4-5: 5 | x # baz11 ^ -Error: Methods must have layout value. +Error: Method types must have layout value. This expression has layout float64, which does not overlap with value. |}] @@ -685,7 +685,7 @@ Error: The type constraints are not consistent. |}];; (*******************************************************************) -(* Test 12: class parameters and bound vars must have layout value *) +(* Test 12: class parameters and bound vars must have jkind value *) (* CR layouts v5: Bring the void versions back here. *) @@ -962,7 +962,7 @@ Error: |}];; (****************************************************) -(* Test 15: Type aliases need not have layout value *) +(* Test 15: Type aliases need not have jkind value *) (* CR layouts v5: Bring back void version from basics_alpha. *) @@ -989,8 +989,8 @@ Error: Layout void is used here, but the appropriate layouts extension is not en |}];; (**************************************************************************) -(* Test 17: incremental layout checking of @@unboxed types - see comment on - [constrain_type_layout]. *) +(* Test 17: incremental jkind checking of @@unboxed types - see comment on + [constrain_type_jkind]. *) type 'a t17 = 'a list type s17 = { lbl : s17 t17 } [@@unboxed];; @@ -1002,7 +1002,7 @@ type s17 = { lbl : s17 t17; } [@@unboxed] (*****************************************) (* Test 18: expansion in [check_univars] *) -(* This test isn't really layouts-specific, but it checks that the layout checks +(* This test isn't really jkinds-specific, but it checks that the jkind checks we've added in [Typecore.check_univars] don't choke when expansion is needed to see a variable *) type 'a t18 = 'a diff --git a/ocaml/testsuite/tests/typing-layouts/datatypes.ml b/ocaml/testsuite/tests/typing-layouts/datatypes.ml index 76cf4b8effd..2e3885f7a5c 100644 --- a/ocaml/testsuite/tests/typing-layouts/datatypes.ml +++ b/ocaml/testsuite/tests/typing-layouts/datatypes.ml @@ -3,7 +3,7 @@ flags = "-extension layouts" *) -(* Tests for layouts in algebraic datatypes *) +(* Tests for jkinds in algebraic datatypes *) (* CR layouts v5: add mixed block restriction tests. *) @@ -33,7 +33,7 @@ Error: Layout void is used here, but the appropriate layouts extension is not en (***************************************************) (* Test 1: constructor arguments may have any sort *) -(* CR layouts: Needs non-value layout - moved to [datatypes_alpha.ml] *) +(* CR layouts: Needs non-value jkind - moved to [datatypes_alpha.ml] *) (************************************) (* Test 2: but not the "any" layout *) @@ -60,10 +60,10 @@ Error: Layout void is used here, but the appropriate layouts extension is not en [datatypes_alpha.ml] *) (**************************************************************************) -(* Test 6: fields in all-float records get layout value. may change in the +(* Test 6: fields in all-float records get jkind value. may change in the future, but record fields must at least be representable. *) -(* CR layouts: Needs layout annotations on type parameters. Moved to +(* CR layouts: Needs jkind annotations on type parameters. Moved to [datatypes_beta.ml]. Bring back when that isn't behind an extension flag. *) type t6 = { fld6 : float } diff --git a/ocaml/testsuite/tests/typing-layouts/datatypes_alpha.ml b/ocaml/testsuite/tests/typing-layouts/datatypes_alpha.ml index 1f3bc62ac9c..c586d6ff69e 100644 --- a/ocaml/testsuite/tests/typing-layouts/datatypes_alpha.ml +++ b/ocaml/testsuite/tests/typing-layouts/datatypes_alpha.ml @@ -3,7 +3,7 @@ * expect *) -(* Tests for layouts in algebraic datatypes *) +(* Tests for jkinds in algebraic datatypes *) (* CR layouts v5: add mixed block restriction tests. *) @@ -264,7 +264,7 @@ Error: Record element types must have a representable layout. |}];; (**************************************************************************) -(* Test 6: fields in all-float records get layout value. may change in the +(* Test 6: fields in all-float records get jkind value. may change in the future, but record fields must at least be representable. *) type t6 = { fld6 : float } type ('a : immediate) s6 = S6 of 'a diff --git a/ocaml/testsuite/tests/typing-layouts/datatypes_beta.ml b/ocaml/testsuite/tests/typing-layouts/datatypes_beta.ml index 48a6a18bcd8..1279c028424 100644 --- a/ocaml/testsuite/tests/typing-layouts/datatypes_beta.ml +++ b/ocaml/testsuite/tests/typing-layouts/datatypes_beta.ml @@ -3,7 +3,7 @@ * expect *) -(* Tests for layouts in algebraic datatypes *) +(* Tests for jkinds in algebraic datatypes *) (* CR layouts v5: add mixed block restriction tests. *) @@ -255,7 +255,7 @@ Error: Record element types must have a representable layout. |}];; (**************************************************************************) -(* Test 6: fields in all-float records get layout value. may change in the +(* Test 6: fields in all-float records get jkind value. may change in the future, but record fields must at least be representable. *) type t6 = { fld6 : float } type ('a : immediate) s6 = S6 of 'a diff --git a/ocaml/testsuite/tests/typing-layouts/modules.ml b/ocaml/testsuite/tests/typing-layouts/modules.ml index 9fd3426b7f3..a41bfb0428c 100644 --- a/ocaml/testsuite/tests/typing-layouts/modules.ml +++ b/ocaml/testsuite/tests/typing-layouts/modules.ml @@ -29,10 +29,10 @@ Error: Layout void is used here, but the appropriate layouts extension is not en |}];; (*********************************************************) -(* Test 1: Simple with type constraints respect layouts. *) +(* Test 1: Simple with type constraints respect jkinds. *) (* CR layouts: parts of this test moved to [modules_alpha.ml] because they - need a non-value layout. Bring back here when we have one enabled by + need a non-value jkind. Bring back here when we have one enabled by default. *) module type S1 = sig type ('a : void) t @@ -79,7 +79,7 @@ Error: Layout immediate is more experimental than allowed by -extension layouts. |}];; (******************************************************************) -(* Test 3: Recursive modules, with and without layout annotations *) +(* Test 3: Recursive modules, with and without jkind annotations *) module rec Foo3 : sig val create : Bar3.t -> unit end = struct @@ -97,7 +97,7 @@ and Bar3 : sig type t end |}];; (* CR layouts: parts of this test moved to [modules_alpha.ml] because they - need a non-value layout. Bring back here when we have one enabled by + need a non-value jkind. Bring back here when we have one enabled by default. *) module rec Foo3 : sig val create : Bar3.t -> unit @@ -154,18 +154,18 @@ and Bar3 : sig type t : immediate end (* CR layouts: more bits moved to [modules_alpha.ml] from down here. *) (*************************************************************************) -(* Test 4: Nondep typedecl layout approximation in the Nondep_cannot_erase +(* Test 4: Nondep typedecl jkind approximation in the Nondep_cannot_erase case. *) (* CR layouts: This test moved to [modules_beta.ml] and [modules_alpha.ml]. Parts of it can come back when we have the ability to annotate type parameter - layouts without extension flags, and other parts need a non-value layout. *) + jkinds without extension flags, and other parts need a non-value jkind. *) (************************************) (* Test 5: Destructive substitution *) (* CR layouts: The first part of this test has been moved to [modules_beta.ml]. - It can come back when we have the ability to annotate layout parameters + It can come back when we have the ability to annotate jkind parameters without extensions. *) module type S3_2 = sig @@ -184,9 +184,9 @@ Error: Type string has layout value, which is not a sublayout of immediate. (*****************************************) (* Test 6: With constraints on packages. *) -(* CR layouts: The first part of this test needs a non-value layout and has +(* CR layouts: The first part of this test needs a non-value jkind and has been moved to modules_alpha.ml. Bring it back once we have a non-value - layout enabled by default. *) + jkind enabled by default. *) module type S6_1 = sig type t : void end @@ -237,7 +237,7 @@ Error: In this `with' constraint, the new definition of t |}];; (* CR layouts: this is broken because of the package with-type hack. It was - already broken before layouts, but it would be nice to fix. See the comment + already broken before jkinds, but it would be nice to fix. See the comment on See the comments in the [Ptyp_package] case of [Typetexp.transl_type_aux]. *) module type S6_6'' = sig diff --git a/ocaml/testsuite/tests/typing-layouts/modules_alpha.ml b/ocaml/testsuite/tests/typing-layouts/modules_alpha.ml index 7325686413e..591f725577c 100644 --- a/ocaml/testsuite/tests/typing-layouts/modules_alpha.ml +++ b/ocaml/testsuite/tests/typing-layouts/modules_alpha.ml @@ -10,7 +10,7 @@ type t_imm64 : immediate64 type t_void : void;; (*********************************************************) -(* Test 1: Simple with type constraints respect layouts. *) +(* Test 1: Simple with type constraints respect jkinds. *) module type S1 = sig type ('a : void) t type s @@ -66,7 +66,7 @@ module M1_2' : S1_2' (* CR layouts - annoyingly, the immediate annotation on 'a is required. We can probably relax this so you don't have to label the parameter explcitly - and the layout is determined from the signature. But we anticipate it'll + and the jkind is determined from the signature. But we anticipate it'll require non-trivial refactoring of eqtype, so we've put it off for now. *) module M1_2'': S1_2' = struct type 'a t = 'a list @@ -131,7 +131,7 @@ Error: This expression has type string but an expression was expected of type |}] (******************************************************************) -(* Test 3: Recursive modules, with and without layout annotations *) +(* Test 3: Recursive modules, with and without jkind annotations *) module rec Foo3 : sig val create : Bar3.t -> unit end = struct @@ -222,7 +222,7 @@ Error: This type ('a : void) should be an instance of type ('b : value) (* One downside of the current approach - this could be allowed, but isn't. You need to annotate types declared in recursive modules if they need to have - layouts other than value, even if it's obvious from the manifest *) + jkinds other than value, even if it's obvious from the manifest *) type t3 : void module rec Foo3 : sig @@ -269,7 +269,7 @@ and Bar3 : sig type ('a : void) t type s = Foo3.t t end |}];; (*************************************************************************) -(* Test 4: Nondep typedecl layout approximation in the Nondep_cannot_erase +(* Test 4: Nondep typedecl jkind approximation in the Nondep_cannot_erase case. *) module F4(X : sig type t end) = struct type s = Foo of X.t diff --git a/ocaml/testsuite/tests/typing-layouts/modules_beta.ml b/ocaml/testsuite/tests/typing-layouts/modules_beta.ml index a169788d12d..6cd24bdfb3e 100644 --- a/ocaml/testsuite/tests/typing-layouts/modules_beta.ml +++ b/ocaml/testsuite/tests/typing-layouts/modules_beta.ml @@ -25,7 +25,7 @@ Error: Layout void is used here, but the appropriate layouts extension is not en |}];; (*********************************************************) -(* Test 1: Simple with type constraints respect layouts. *) +(* Test 1: Simple with type constraints respect jkinds. *) (* CR layouts v5: parts of this test moved to [modules_alpha.ml] because they need void. Bring back here when we have it. *) @@ -93,7 +93,7 @@ module M1_2' : S1_2' (* CR layouts - annoyingly, the immediate annotation on 'a is required. We can probably relax this so you don't have to label the parameter explcitly - and the layout is determined from the signature. But we anticipate it'll + and the jkind is determined from the signature. But we anticipate it'll require non-trivial refactoring of eqtype, so we've put it off for now. *) module M1_2'': S1_2' = struct type 'a t = 'a list @@ -180,7 +180,7 @@ Error: This expression has type string but an expression was expected of type |}] (******************************************************************) -(* Test 3: Recursive modules, with and without layout annotations *) +(* Test 3: Recursive modules, with and without jkind annotations *) (* CR layouts v5: Some parts of this test need void. *) @@ -333,7 +333,7 @@ and Bar3 : sig type ('a : float64) t type s = Foo3f.t t end |}];; (*************************************************************************) -(* Test 4: Nondep typedecl layout approximation in the Nondep_cannot_erase +(* Test 4: Nondep typedecl jkind approximation in the Nondep_cannot_erase case. *) (* CR layouts v5: Bring back the void part of this test. *) diff --git a/ocaml/testsuite/tests/typing-layouts/or_null.ml b/ocaml/testsuite/tests/typing-layouts/or_null.ml index 4df5d5b67af..8fad5954fdf 100644 --- a/ocaml/testsuite/tests/typing-layouts/or_null.ml +++ b/ocaml/testsuite/tests/typing-layouts/or_null.ml @@ -78,10 +78,10 @@ type ('a : immediate) t = 'a or_null [%%expect {| success -success (inferring an immediate layout for [t] and non_null_immediate for ['a]) +success (inferring an immediate jkind for [t] and non_null_immediate for ['a]) |}] -(* more layout checking *) +(* more jkind checking *) type t : non_null_value = string or_null [%%expect {| diff --git a/ocaml/testsuite/tests/typing-layouts/void_alpha.ml b/ocaml/testsuite/tests/typing-layouts/void_alpha.ml index c9c9a3f1cb7..ce8ef4f7236 100644 --- a/ocaml/testsuite/tests/typing-layouts/void_alpha.ml +++ b/ocaml/testsuite/tests/typing-layouts/void_alpha.ml @@ -973,8 +973,8 @@ Error: Non-value detected in [value_kind]. -(* CR layouts v5: When we allow voidat the module level, we'll want - test cases, including cases where the term has an indeterminate +(* CR layouts v5: When we allow void at the module level, we'll want + test cases, including cases where the term has an unrepresentable layout, and the signature a) mentions the term and specifies its layout, b) mentions the term and doesn't specify its layout, and c) doesn't mention the term. Do we want to allow "empty" modules? diff --git a/ocaml/tools/.depend b/ocaml/tools/.depend index c281c6a3841..33a7e8d3cd9 100644 --- a/ocaml/tools/.depend +++ b/ocaml/tools/.depend @@ -33,11 +33,13 @@ cvt_emit.cmx : debug_printers.cmo : \ ../typing/printtyp.cmi \ ../typing/path.cmi \ + ../typing/jkind.cmi \ ../typing/ident.cmi \ ../typing/ctype.cmi debug_printers.cmx : \ ../typing/printtyp.cmx \ ../typing/path.cmx \ + ../typing/jkind.cmx \ ../typing/ident.cmx \ ../typing/ctype.cmx dumpobj.cmo : \ diff --git a/ocaml/tools/debug_printers.ml b/ocaml/tools/debug_printers.ml index 4586802f17f..2865cfa7bfa 100644 --- a/ocaml/tools/debug_printers.ml +++ b/ocaml/tools/debug_printers.ml @@ -3,6 +3,6 @@ let row_field = Printtyp.raw_field let ident = Ident.print_with_scope let path = Path.print let ctype_global_state = Ctype.print_global_state -let sort = Layouts.Sort.Debug_printers.t -let sort_var = Layouts.Sort.Debug_printers.var -let layout = Layouts.Layout.Debug_printers.t +let sort = Jkind.Sort.Debug_printers.t +let sort_var = Jkind.Sort.Debug_printers.var +let jkind = Jkind.Debug_printers.t diff --git a/ocaml/toplevel/genprintval.ml b/ocaml/toplevel/genprintval.ml index fd8ce886969..14e4f313f52 100644 --- a/ocaml/toplevel/genprintval.ml +++ b/ocaml/toplevel/genprintval.ml @@ -20,7 +20,6 @@ open Format open Longident open Path open Types -open Layouts open Outcometree module Out_name = Printtyp.Out_name @@ -382,7 +381,7 @@ module Make(O : OBJ)(EVP : EVALPATH with type valu = O.t) = struct 1) Whether the value is a block or immediate (because tags are only unique within a category). 2) The `constructor_description`s, because the declarations - don't record the layout information needed to determine + don't record the jkind information needed to determine which constructors are immediate due to void arguments. *) let cstrs = @@ -394,7 +393,7 @@ module Make(O : OBJ)(EVP : EVALPATH with type valu = O.t) = struct then false, O.tag obj else true, O.obj obj in - let {cstr_uid;cstr_arg_layouts} = + let {cstr_uid;cstr_arg_jkinds} = Datarepr.find_constr_by_tag ~constant tag cstrs in let {cd_id;cd_args;cd_res} = @@ -427,7 +426,7 @@ module Make(O : OBJ)(EVP : EVALPATH with type valu = O.t) = struct List.mapi (fun i ty_arg -> (ty_arg, - Layout.is_void_defaulting cstr_arg_layouts.(i)) + Jkind.is_void_defaulting cstr_arg_jkinds.(i)) ) ty_args in tree_of_constr_with_args (tree_of_constr env path) @@ -506,12 +505,12 @@ module Make(O : OBJ)(EVP : EVALPATH with type valu = O.t) = struct lbl_list pos obj unboxed = let rec tree_of_fields first pos = function | [] -> [] - | {ld_id; ld_type; ld_layout} :: remainder -> + | {ld_id; ld_type; ld_jkind} :: remainder -> let ty_arg = instantiate_type env type_params ty_list ld_type in let name = Ident.name ld_id in (* PR#5722: print full module path only for first record field *) - let is_void = Layout.is_void_defaulting ld_layout in + let is_void = Jkind.is_void_defaulting ld_jkind in let lid = if first then tree_of_label env path (Out_name.create name) else Oide_ident (Out_name.create name) @@ -534,8 +533,8 @@ module Make(O : OBJ)(EVP : EVALPATH with type valu = O.t) = struct in Oval_record (tree_of_fields (pos = 0) pos lbl_list) - (* CR layouts v4: When we allow other layouts in tuples, this should be - generalized to take a list or array of layouts, rather than just + (* CR layouts v4: When we allow other jkinds in tuples, this should be + generalized to take a list or array of jkinds, rather than just pairing each type with a bool indicating whether it is void *) and tree_of_val_list start depth obj ty_list = let rec tree_list i = function @@ -616,7 +615,7 @@ module Make(O : OBJ)(EVP : EVALPATH with type valu = O.t) = struct in let args = instantiate_types env type_params ty_list cstr.cstr_args in let args = List.mapi (fun i arg -> - (arg, Layout.is_void_defaulting cstr.cstr_arg_layouts.(i))) + (arg, Jkind.is_void_defaulting cstr.cstr_arg_jkinds.(i))) args in tree_of_constr_with_args diff --git a/ocaml/toplevel/topdirs.ml b/ocaml/toplevel/topdirs.ml index 18da5f9b7c2..8e771c2c254 100644 --- a/ocaml/toplevel/topdirs.ml +++ b/ocaml/toplevel/topdirs.ml @@ -19,7 +19,6 @@ open Format open Misc open Longident open Types -open Layouts open Toploop let error_fmt () = @@ -233,7 +232,7 @@ let printer_type ppf typename = let match_simple_printer_type desc printer_type = Ctype.begin_def(); - let ty_arg = Ctype.newvar (Layout.value ~why:Debug_printer_argument) in + let ty_arg = Ctype.newvar (Jkind.value ~why:Debug_printer_argument) in begin try Ctype.unify !toplevel_env (Ctype.newconstr printer_type [ty_arg]) @@ -249,7 +248,7 @@ let match_generic_printer_type desc path args printer_type = Ctype.begin_def(); let args = List.map (fun _ -> Ctype.newvar - (Layout.value ~why:Debug_printer_argument)) + (Jkind.value ~why:Debug_printer_argument)) args in let ty_target = Ctype.newty (Tconstr (path, args, ref Mnil)) in let ty_args = @@ -492,7 +491,7 @@ let () = { ext_type_path = path; ext_type_params = type_decl.type_params; ext_args = Cstr_tuple desc.cstr_args; - ext_arg_layouts = desc.cstr_arg_layouts; + ext_arg_jkinds = desc.cstr_arg_jkinds; ext_constant = desc.cstr_constant; ext_ret_type = ret_type; ext_private = Asttypes.Public; @@ -525,7 +524,7 @@ let () = { ext_type_path = Predef.path_exn; ext_type_params = []; ext_args = Cstr_tuple desc.cstr_args; - ext_arg_layouts = desc.cstr_arg_layouts; + ext_arg_jkinds = desc.cstr_arg_jkinds; ext_constant = desc.cstr_constant; ext_ret_type = ret_type; ext_private = Asttypes.Public; diff --git a/ocaml/typing/btype.ml b/ocaml/typing/btype.ml index 5fd865a45c6..734dc49b41d 100644 --- a/ocaml/typing/btype.ml +++ b/ocaml/typing/btype.ml @@ -109,9 +109,9 @@ let pivot_level = 2 * lowest_level - 1 (**** Some type creators ****) let newgenty desc = newty2 ~level:generic_level desc -let newgenvar ?name layout = newgenty (Tvar { name; layout }) -let newgenstub ~scope layout = - newty3 ~level:generic_level ~scope (Tvar { name=None; layout }) +let newgenvar ?name jkind = newgenty (Tvar { name; jkind }) +let newgenstub ~scope jkind = + newty3 ~level:generic_level ~scope (Tvar { name=None; jkind }) (* let newmarkedvar level = @@ -446,8 +446,8 @@ let copy_row f fixed row keep more = let copy_commu c = if is_commu_ok c then commu_ok else commu_var () let rec copy_type_desc ?(keep_names=false) f = function - Tvar { layout; _ } as tv -> - if keep_names then tv else Tvar { name=None; layout } + Tvar { jkind; _ } as tv -> + if keep_names then tv else Tvar { name=None; jkind } | Tarrow (p, ty1, ty2, c)-> Tarrow (p, f ty1, f ty2, copy_commu c) | Ttuple l -> Ttuple (List.map f l) | Tconstr (p, l, _) -> Tconstr (p, List.map f l, ref Mnil) diff --git a/ocaml/typing/btype.mli b/ocaml/typing/btype.mli index b5cb8d09e85..b08fe2ce1a5 100644 --- a/ocaml/typing/btype.mli +++ b/ocaml/typing/btype.mli @@ -17,7 +17,6 @@ open Asttypes open Types -open Layouts (**** Sets, maps and hashtables of types ****) @@ -60,9 +59,9 @@ val generic_level: int val newgenty: type_desc -> type_expr (* Create a generic type *) -val newgenvar: ?name:string -> layout -> type_expr +val newgenvar: ?name:string -> Jkind.t -> type_expr (* Return a fresh generic variable *) -val newgenstub: scope:int -> layout -> type_expr +val newgenstub: scope:int -> Jkind.t -> type_expr (* Return a fresh generic node, to be instantiated by [Transient_expr.set_stub_desc] *) diff --git a/ocaml/typing/ctype.ml b/ocaml/typing/ctype.ml index d6118cfca2b..e2c780c36bb 100644 --- a/ocaml/typing/ctype.ml +++ b/ocaml/typing/ctype.ml @@ -18,7 +18,6 @@ open Misc open Asttypes open Types -open Layouts open Btype open Errortrace @@ -237,13 +236,13 @@ let proper_abbrevs path tl abbrev = let newty desc = newty2 ~level:!current_level desc let new_scoped_ty scope desc = newty3 ~level:!current_level ~scope desc -let newvar ?name layout = - newty2 ~level:!current_level (Tvar { name; layout }) -let newvar2 ?name level layout = newty2 ~level (Tvar { name; layout }) -let new_global_var ?name layout = - newty2 ~level:!global_level (Tvar { name; layout }) -let newstub ~scope layout = - newty3 ~level:!current_level ~scope (Tvar { name = None; layout }) +let newvar ?name jkind = + newty2 ~level:!current_level (Tvar { name; jkind }) +let newvar2 ?name level jkind = newty2 ~level (Tvar { name; jkind }) +let new_global_var ?name jkind = + newty2 ~level:!global_level (Tvar { name; jkind }) +let newstub ~scope jkind = + newty3 ~level:!current_level ~scope (Tvar { name = None; jkind }) let newobj fields = newty (Tobject (fields, ref None)) @@ -332,38 +331,38 @@ let without_generating_equations f = let new_umode = Pattern { r with equations_generation = Forbidden } in Misc.protect_refs [ Misc.R (umode, new_umode) ] f -(* Unification generally must check that the layouts of the two types being - unified agree. However, sometimes we need to delay or skip these layout - checks, and this is tracked by the [layout_unification_mode] in [lmode]. +(* Unification generally must check that the jkinds of the two types being + unified agree. However, sometimes we need to delay or skip these jkind + checks, and this is tracked by the [jkind_unification_mode] in [lmode]. - [Perform_checks] is the usual case where we just do the checks. - [Delay_checks] is for when we want to delay checks to be performed later. Unification sometimes occurs before the checking for circular / - ill-founded types. Layout checking does things that blow up on those + ill-founded types. Jkind checking does things that blow up on those types. So we save the checks that would be done and do them after the circularity checking. - [Skip_checks] is for when we want to skip the checks entirely. Sometimes - unification is reached through apply/subst in contexts that make layout + unification is reached through apply/subst in contexts that make jkind checking unnecessary. For now, we're only using this in the more specific case that apply is reached through [Subst.ctype_apply_env_empty], because the empty environment also makes it impossible for us to perform the relevant checks. *) -type layout_unification_mode = +type jkind_unification_mode = | Perform_checks - | Delay_checks of (type_expr * layout) list ref + | Delay_checks of (type_expr * Jkind.t) list ref | Skip_checks let lmode = ref Perform_checks -let delay_layout_checks_in f = +let delay_jkind_checks_in f = let r = ref [] in Misc.protect_refs [Misc.R (lmode, Delay_checks r)] f; !r -let skip_layout_checks_in f = +let skip_jkind_checks_in f = Misc.protect_refs [Misc.R (lmode, Skip_checks)] f (*** Checks for type definitions ***) @@ -509,14 +508,14 @@ let rec filter_row_fields erase = function (* Ensure all mode variables are fully determined *) -let remove_mode_and_layout_variables ty = +let remove_mode_and_jkind_variables ty = let visited = ref TypeSet.empty in let rec go ty = if TypeSet.mem ty !visited then () else begin visited := TypeSet.add ty !visited; match get_desc ty with - | Tvar { layout } -> Layout.default_to_value layout - | Tunivar { layout } -> Layout.default_to_value layout + | Tvar { jkind } -> Jkind.default_to_value jkind + | Tunivar { jkind } -> Jkind.default_to_value jkind | Tarrow ((_,marg,mret),targ,tret,_) -> let _ = Mode.Alloc.constrain_legacy marg in let _ = Mode.Alloc.constrain_legacy mret in @@ -604,7 +603,7 @@ let free_non_row_variables_of_list tyl = tl let closed_type ty = - remove_mode_and_layout_variables ty; + remove_mode_and_jkind_variables ty; match free_vars [ty] with [] -> () | (v, real) :: _ -> raise (Non_closed (v, real)) @@ -620,7 +619,7 @@ let closed_parameterized_type params ty = let closed_type_decl decl = try List.iter mark_type decl.type_params; - List.iter remove_mode_and_layout_variables decl.type_params; + List.iter remove_mode_and_jkind_variables decl.type_params; begin match decl.type_kind with Type_abstract _ -> () @@ -630,15 +629,15 @@ let closed_type_decl decl = match cd_res with | Some res_ty -> (* gadts cannot have free type variables, but they might - have undefaulted layout variables; these lines default + have undefaulted sort variables; these lines default them. Test case: typing-layouts-gadt-sort-var/test.ml *) begin match cd_args with | Cstr_tuple l -> List.iter (fun (ty, _) -> - remove_mode_and_layout_variables ty) l + remove_mode_and_jkind_variables ty) l | Cstr_record l -> List.iter (fun l -> - remove_mode_and_layout_variables l.ld_type) l + remove_mode_and_jkind_variables l.ld_type) l end; - remove_mode_and_layout_variables res_ty + remove_mode_and_jkind_variables res_ty | None -> List.iter closed_type (tys_of_constr_args cd_args) ) v @@ -662,10 +661,10 @@ let closed_extension_constructor ext = begin match ext.ext_ret_type with | Some res_ty -> (* gadts cannot have free type variables, but they might - have undefaulted layout variables; these lines default + have undefaulted sort variables; these lines default them. Test case: typing-layouts-gadt-sort-var/test_extensible.ml *) - iter_type_expr_cstr_args remove_mode_and_layout_variables ext.ext_args; - remove_mode_and_layout_variables res_ty + iter_type_expr_cstr_args remove_mode_and_jkind_variables ext.ext_args; + remove_mode_and_jkind_variables res_ty | None -> iter_type_expr_cstr_args closed_type ext.ext_args end; @@ -1168,12 +1167,12 @@ let rec copy ?partial ?keep_names scope ty = else generic_level in if forget <> generic_level then - (* Using layout "any" is ok here: We're forgetting the type because it + (* Using jkind "any" is ok here: We're forgetting the type because it will be unified with the original later. *) newty2 ~level:forget - (Tvar { name = None; layout = Layout.any ~why:Dummy_layout }) + (Tvar { name = None; jkind = Jkind.any ~why:Dummy_jkind }) else - let t = newstub ~scope:(get_scope ty) (Layout.any ~why:Dummy_layout) in + let t = newstub ~scope:(get_scope ty) (Jkind.any ~why:Dummy_jkind) in For_copy.redirect_desc scope ty (Tsubst (t, None)); let desc' = match desc with @@ -1238,7 +1237,7 @@ let rec copy ?partial ?keep_names scope ty = if not (eq_type more more') then more' (* we've already made a copy *) else - newvar (Layout.value ~why:Row_variable) + newvar (Jkind.value ~why:Row_variable) in let not_reither (_, f) = match row_field_repr f with @@ -1303,7 +1302,7 @@ let get_new_abstract_name s = if index = 0 && s <> "" && s.[String.length s - 1] <> '$' then s else Printf.sprintf "%s%d" s index -let new_local_type ?(loc = Location.none) ?manifest_and_scope layout = +let new_local_type ?(loc = Location.none) ?manifest_and_scope jkind = let manifest, expansion_scope = match manifest_and_scope with None -> None, Btype.lowest_level @@ -1313,7 +1312,7 @@ let new_local_type ?(loc = Location.none) ?manifest_and_scope layout = type_params = []; type_arity = 0; type_kind = Type_abstract Abstract_def; - type_layout = layout; + type_jkind = jkind; type_private = Public; type_manifest = manifest; type_variance = []; @@ -1339,13 +1338,13 @@ let instance_constructor ?in_pattern cstr = let process existential = (* CR layouts v1.5: Add test case that hits this once we have syntax for it *) - let layout = + let jkind = match get_desc existential with - | Tvar { layout } -> layout - | Tvariant _ -> Layout.value ~why:Row_variable (* Existential row variable *) + | Tvar { jkind } -> jkind + | Tvariant _ -> Jkind.value ~why:Row_variable (* Existential row variable *) | _ -> assert false in - let decl = new_local_type layout in + let decl = new_local_type jkind in let name = existential_name cstr existential in let (id, new_env) = Env.enter_type (get_new_abstract_name name) decl !env @@ -1379,7 +1378,7 @@ let instance_parameterized_type_2 sch_args sch_lst sch = (ty_args, ty_lst, ty) ) -(* [map_kind f kind] maps [f] over all the types in [kind]. [f] must preserve layouts *) +(* [map_kind f kind] maps [f] over all the types in [kind]. [f] must preserve jkinds *) let map_kind f = function | (Type_abstract _ | Type_open) as k -> k | Type_variant (cl, rep) -> @@ -1462,8 +1461,8 @@ let rec copy_sep ~cleanup_scope ~fixed ~free ~bound ~may_share let univars = free ty in if is_Tvar ty || may_share && TypeSet.is_empty univars then if get_level ty <> generic_level then ty else - (* layout not consulted during copy_sep, so Any is safe *) - let t = newstub ~scope:(get_scope ty) (Layout.any ~why:Dummy_layout) in + (* jkind not consulted during copy_sep, so Any is safe *) + let t = newstub ~scope:(get_scope ty) (Jkind.any ~why:Dummy_jkind) in delayed_copy := lazy (Transient_expr.set_stub_desc t (Tlink (copy cleanup_scope ty))) :: !delayed_copy; @@ -1474,7 +1473,7 @@ let rec copy_sep ~cleanup_scope ~fixed ~free ~bound ~may_share if dl <> [] && conflicts univars dl then raise Not_found; t with Not_found -> begin - let t = newstub ~scope:(get_scope ty) (Layout.any ~why:Dummy_layout) in + let t = newstub ~scope:(get_scope ty) (Jkind.any ~why:Dummy_jkind) in let desc = get_desc ty in let visited = match desc with @@ -1520,8 +1519,8 @@ let instance_poly' cleanup_scope ~keep_names fixed univars sch = (* In order to compute univars below, [sch] should not contain [Tsubst] *) let copy_var ty = match get_desc ty with - Tunivar { name; layout } -> - if keep_names then newty (Tvar { name; layout }) else newvar layout + Tunivar { name; jkind } -> + if keep_names then newty (Tvar { name; jkind }) else newvar jkind | _ -> assert false in let vars = List.map copy_var univars in @@ -1604,7 +1603,7 @@ let subst env level priv abbrev oty params args body = if List.length params <> List.length args then raise Cannot_subst; let old_level = !current_level in current_level := level; - let body0 = newvar (Layout.any ~why:Dummy_layout) in (* Stub *) + let body0 = newvar (Jkind.any ~why:Dummy_jkind) in (* Stub *) let undo_abbrev = match oty with | None -> fun () -> () (* No abbreviation added *) @@ -1633,7 +1632,7 @@ let subst env level priv abbrev oty params args body = undo_abbrev (); raise Cannot_subst -(* CR layouts: Can we actually just always ignore layouts in apply/subst? +(* CR layouts: Can we actually just always ignore jkinds in apply/subst? It seems like almost, but there may be cases where it would forget information. We thought the below would be one such case, but it actually @@ -1645,7 +1644,7 @@ let subst env level priv abbrev oty params args body = type ('a : immediate) u = Imm of 'a - (* Trying to get unification to drop layout information and get this thing to + (* Trying to get unification to drop jkind information and get this thing to accept values *) let foo (x : 'a) = ignore (Imm x); @@ -1669,7 +1668,7 @@ let apply env params body args = let () = Subst.ctype_apply_env_empty := fun params body args -> - skip_layout_checks_in (fun () -> apply Env.empty params body args) + skip_jkind_checks_in (fun () -> apply Env.empty params body args) (****************************) (* Abbreviation expansion *) @@ -1931,17 +1930,17 @@ let get_unboxed_type_approximation env ty = match get_unboxed_type_representation env ty with | Ok ty | Error ty -> ty -(* When computing a layout, we distinguish two cases because some callers might - want to update the layout. - - Layout: We compute layout, and the type wasn't a variable. - - Var: The type was a var, we return the layout and the type_expr it was in, +(* When computing a jkind, we distinguish two cases because some callers might + want to update the jkind. + - Jkind: We compute the jkind, and the type wasn't a variable. + - Var: The type was a var, we return the jkind and the type_expr it was in, in case the caller wants to update it. *) -type layout_result = - | Layout of layout - | TyVar of layout * type_expr +type jkind_result = + | Jkind of Jkind.t + | TyVar of Jkind.t * type_expr -let layout_of_result = function - | Layout l -> l +let jkind_of_result = function + | Jkind l -> l | TyVar (l,_) -> l let tvariant_not_immediate row = @@ -1963,132 +1962,132 @@ let tvariant_not_immediate row = in some edge cases (when [get_unboxed_type_representation] ran out of fuel, or when the type is a Tconstr that is missing from the Env due to a missing cmi). *) -let rec estimate_type_layout env ty = - let open Layout in +let rec estimate_type_jkind env ty = + let open Jkind in match get_desc ty with | Tconstr(p, _, _) -> begin try - Layout (Env.find_type p env).type_layout + Jkind (Env.find_type p env).type_jkind with - Not_found -> Layout (any ~why:(Missing_cmi p)) + Not_found -> Jkind (any ~why:(Missing_cmi p)) end | Tvariant row -> if tvariant_not_immediate row - then Layout (value ~why:Polymorphic_variant) - else Layout (immediate ~why:Immediate_polymorphic_variant) - | Tvar { layout } -> TyVar (layout, ty) - | Tarrow _ -> Layout (value ~why:Arrow) - | Ttuple _ -> Layout (value ~why:Tuple) - | Tobject _ -> Layout (value ~why:Object) - | Tfield _ -> Layout (value ~why:Tfield) - | Tnil -> Layout (value ~why:Tnil) + then Jkind (value ~why:Polymorphic_variant) + else Jkind (immediate ~why:Immediate_polymorphic_variant) + | Tvar { jkind } -> TyVar (jkind, ty) + | Tarrow _ -> Jkind (value ~why:Arrow) + | Ttuple _ -> Jkind (value ~why:Tuple) + | Tobject _ -> Jkind (value ~why:Object) + | Tfield _ -> Jkind (value ~why:Tfield) + | Tnil -> Jkind (value ~why:Tnil) | (Tlink _ | Tsubst _) -> assert false - | Tunivar { layout } -> Layout layout - | Tpoly (ty, _) -> estimate_type_layout env ty - | Tpackage _ -> Layout (value ~why:First_class_module) + | Tunivar { jkind } -> Jkind jkind + | Tpoly (ty, _) -> estimate_type_jkind env ty + | Tpackage _ -> Jkind (value ~why:First_class_module) (* The ~fixed argument controls what effects this may have on `ty`. If false, - then we will update the layout of type variables to make the check true, if + then we will update the jkind of type variables to make the check true, if possible. If true, we won't (but will still instantiate sort variables). The "fuel" argument here is used because we're duplicating the loop of - `get_unboxed_type_representation`, but performing layout checking at each + `get_unboxed_type_representation`, but performing jkind checking at each step. This allows to check examples like: type 'a t = 'a list type s = { lbl : s t } [@@unboxed] - Here, we want to see [s t] has layout value, and this only requires expanding + Here, we want to see [s t] has jkind value, and this only requires expanding once to see [t] is list and [s] is irrelvant. But calling [get_unboxed_type_representation] itself would otherwise get into a nasty - loop trying to also expand [s], and then performing layout checking to ensure + loop trying to also expand [s], and then performing jkind checking to ensure it's a valid argument to [t]. (We believe there are still loops like this that can occur, though, and may need a more principled solution later). - Precondition: [layout] is not [any]. This common case is short-circuited + Precondition: [jkind] is not [any]. This common case is short-circuited before calling this function. (Though the current implementation is still correct on [any].) *) -let rec constrain_type_layout ~fixed env ty layout fuel = +let rec constrain_type_jkind ~fixed env ty jkind fuel = let constrain_unboxed ty = - match estimate_type_layout env ty with - | Layout ty_layout -> Layout.sub ty_layout layout - | TyVar (ty_layout, ty) -> - if fixed then Layout.sub ty_layout layout + match estimate_type_jkind env ty with + | Jkind ty_jkind -> Jkind.sub ty_jkind jkind + | TyVar (ty_jkind, ty) -> + if fixed then Jkind.sub ty_jkind jkind else - let layout_inter = - Layout.intersection ~reason:Tyvar_refinement_intersection - ty_layout layout + let jkind_inter = + Jkind.intersection ~reason:Tyvar_refinement_intersection + ty_jkind jkind in - Result.map (set_var_layout ty) layout_inter + Result.map (set_var_jkind ty) jkind_inter in (* This is an optimization to avoid unboxing if we can tell the constraint is satisfied from the type_kind *) match get_desc ty with | Tconstr(p, _args, _abbrev) -> begin - let layout_bound = - try (Env.find_type p env).type_layout - with Not_found -> Layout.any ~why:(Missing_cmi p) + let jkind_bound = + try (Env.find_type p env).type_jkind + with Not_found -> Jkind.any ~why:(Missing_cmi p) in - match Layout.sub layout_bound layout with + match Jkind.sub jkind_bound jkind with | Ok () as ok -> ok | Error _ as err when fuel < 0 -> err | Error violation -> begin match unbox_once env ty with | Not_unboxed ty -> constrain_unboxed ty | Unboxed ty -> - constrain_type_layout ~fixed env ty layout (fuel - 1) + constrain_type_jkind ~fixed env ty jkind (fuel - 1) | Missing missing_cmi_for -> - Error (Layout.Violation.record_missing_cmi ~missing_cmi_for violation) + Error (Jkind.Violation.record_missing_cmi ~missing_cmi_for violation) end end - | Tpoly (ty, _) -> constrain_type_layout ~fixed env ty layout fuel + | Tpoly (ty, _) -> constrain_type_jkind ~fixed env ty jkind fuel | _ -> constrain_unboxed ty -let constrain_type_layout ~fixed env ty layout fuel = +let constrain_type_jkind ~fixed env ty jkind fuel = (* An optimization to avoid doing any work if we're checking against any. *) - if Layout.is_any layout then Ok () - else constrain_type_layout ~fixed env ty layout fuel + if Jkind.is_any jkind then Ok () + else constrain_type_jkind ~fixed env ty jkind fuel -let check_type_layout env ty layout = - constrain_type_layout ~fixed:true env ty layout 100 +let check_type_jkind env ty jkind = + constrain_type_jkind ~fixed:true env ty jkind 100 -let constrain_type_layout env ty layout = - constrain_type_layout ~fixed:false env ty layout 100 +let constrain_type_jkind env ty jkind = + constrain_type_jkind ~fixed:false env ty jkind 100 let () = - Env.constrain_type_layout := constrain_type_layout + Env.constrain_type_jkind := constrain_type_jkind -let check_decl_layout env decl layout = - match Layout.sub decl.type_layout layout with +let check_decl_jkind env decl jkind = + match Jkind.sub decl.type_jkind jkind with | Ok () as ok -> ok | Error _ as err -> match decl.type_manifest with | None -> err - | Some ty -> check_type_layout env ty layout + | Some ty -> check_type_jkind env ty jkind -let constrain_type_layout_exn env texn ty layout = - match constrain_type_layout env ty layout with +let constrain_type_jkind_exn env texn ty jkind = + match constrain_type_jkind env ty jkind with | Ok _ -> () - | Error err -> raise_for texn (Bad_layout (ty,err)) + | Error err -> raise_for texn (Bad_jkind (ty,err)) -let estimate_type_layout env typ = - layout_of_result (estimate_type_layout env typ) +let estimate_type_jkind env typ = + jkind_of_result (estimate_type_jkind env typ) -let type_layout env ty = - estimate_type_layout env (get_unboxed_type_approximation env ty) +let type_jkind env ty = + estimate_type_jkind env (get_unboxed_type_approximation env ty) let type_sort ~why env ty = - let sort = Sort.new_var () in + let sort = Jkind.Sort.new_var () in match - constrain_type_layout env ty (Layout.of_sort sort ~why) + constrain_type_jkind env ty (Jkind.of_sort sort ~why) with | Ok _ -> Ok sort | Error _ as e -> e -(* Note: Because [estimate_type_layout] actually returns an upper bound, this +(* Note: Because [estimate_type_jkind] actually returns an upper bound, this function computes an inaccurate intersection in some cases. This is OK because of where it is used, which is related to gadt equations. @@ -2098,20 +2097,20 @@ let type_sort ~why env ty = in some cases where its not (this will happen when pattern matching on a "false" GADT pattern), but not to say the intersection is empty if it isn't. *) -let rec intersect_type_layout ~reason env ty1 layout2 = +let rec intersect_type_jkind ~reason env ty1 jkind2 = match get_desc ty1 with - | Tpoly (ty, _) -> intersect_type_layout ~reason env ty layout2 + | Tpoly (ty, _) -> intersect_type_jkind ~reason env ty jkind2 | _ -> - (* [intersect_type_layout] is called rarely, so we don't bother with trying - to avoid this call as in [constrain_type_layout] *) + (* [intersect_type_jkind] is called rarely, so we don't bother with trying + to avoid this call as in [constrain_type_jkind] *) let ty1 = get_unboxed_type_approximation env ty1 in - Layout.intersection ~reason (estimate_type_layout env ty1) layout2 + Jkind.intersection ~reason (estimate_type_jkind env ty1) jkind2 -(* See comment on [layout_unification_mode] *) -let unification_layout_check env ty layout = +(* See comment on [jkind_unification_mode] *) +let unification_jkind_check env ty jkind = match !lmode with - | Perform_checks -> constrain_type_layout_exn env Unify ty layout - | Delay_checks r -> r := (ty,layout) :: !r + | Perform_checks -> constrain_type_jkind_exn env Unify ty jkind + | Delay_checks r -> r := (ty,jkind) :: !r | Skip_checks -> () let is_principal ty = @@ -2119,8 +2118,8 @@ let is_principal ty = let is_immediate64 env ty = let perform_check () = - Result.is_ok (check_type_layout env ty - (Layout.immediate64 ~why:Local_mode_cross_check)) + Result.is_ok (check_type_jkind env ty + (Jkind.immediate64 ~why:Local_mode_cross_check)) in if !Clflags.principal || Env.has_local_constraints env then (* We snapshot to keep this pure; see the mode crossing test that mentions @@ -2472,8 +2471,8 @@ let univar_pairs = ref [] let polyfy env ty vars = let subst_univar scope ty = match get_desc ty with - | Tvar { name; layout } when get_level ty = generic_level -> - let t = newty (Tunivar { name; layout }) in + | Tvar { name; jkind } when get_level ty = generic_level -> + let t = newty (Tunivar { name; jkind }) in For_copy.redirect_desc scope ty (Tsubst (t, None)); Some t | _ -> None @@ -2588,9 +2587,9 @@ let get_gadt_equations_level () = They need to be removed using this function *) let reify env t = let fresh_constr_scope = get_gadt_equations_level () in - let create_fresh_constr lev name layout = + let create_fresh_constr lev name jkind = let name = match name with Some s -> "$'"^s | _ -> "$" in - let decl = new_local_type layout in + let decl = new_local_type jkind in let (id, new_env) = Env.enter_type (get_new_abstract_name name) decl !env ~scope:fresh_constr_scope in @@ -2604,9 +2603,9 @@ let reify env t = if TypeSet.mem ty !visited then () else begin visited := TypeSet.add ty !visited; match get_desc ty with - Tvar { name; layout } -> + Tvar { name; jkind } -> let level = get_level ty in - let path, t = create_fresh_constr level name layout in + let path, t = create_fresh_constr level name jkind in link_type ty t; if level < fresh_constr_scope then raise_for Unify (Escape (escape (Constructor path))) @@ -2615,9 +2614,9 @@ let reify env t = if is_fixed r then iterator (row_more r) else let m = row_more r in match get_desc m with - Tvar { name; layout } -> + Tvar { name; jkind } -> let level = get_level m in - let path, t = create_fresh_constr level name layout in + let path, t = create_fresh_constr level name jkind in let row = let fixed = Some (Reified path) in create_row ~fields:[] ~more:t ~fixed @@ -2650,12 +2649,12 @@ let non_aliasable p decl = (* This checks whether a gadt equation can be added for a type. - The `for_layout_eqn` parameter indicates whether this is an equation that - just modifies a layout, or a normal gadt equation (see add_layout_equation). + The `for_jkind_eqn` parameter indicates whether this is an equation that + just modifies a jkind, or a normal gadt equation (see add_jkind_equation). - In the layout case, we don't check that the type is not non_aliasable. The + In the jkind case, we don't check that the type is not non_aliasable. The non_aliasable check serves two purposes for gadt equations, neither of which - is needed in the layout case: + is needed in the jkind case: 1) It restricts gadt equations for abstract types defined in the current module. This is actually unnecessary even for normal gadt equations and may @@ -2663,23 +2662,23 @@ let non_aliasable p decl = 2) It restricts gadt equations on pervasives, which a hacky implementation of the fact that every type in the initial environment is incompatible with - every other type. But its fine to refine the layout of these types (and we - want to in some cases, like giving int32 the layout immediate64 on + every other type. But its fine to refine the jkind of these types (and we + want to in some cases, like giving int32 the jkind immediate64 on appropriate platforms). CR layouts: the non_aliasable check could really be combined with the - type_kind_is_abstract check, and both could be guarded by ~for_layout_eqn, allowing - the refinement of layouts of data types. Write some tests cases and make + type_kind_is_abstract check, and both could be guarded by ~for_jkind_eqn, allowing + the refinement of jkinds of data types. Write some tests cases and make that change. *) -let is_instantiable env ~for_layout_eqn p = +let is_instantiable env ~for_jkind_eqn p = try let decl = Env.find_type p env in type_kind_is_abstract decl && decl.type_private = Public && decl.type_arity = 0 && decl.type_manifest = None && - (for_layout_eqn || not (non_aliasable p decl)) + (for_jkind_eqn || not (non_aliasable p decl)) with Not_found -> false @@ -2720,7 +2719,7 @@ let rec mcomp type_pairs env t1 t2 = | (Tvar _, _) | (_, Tvar _) -> () - (* CR layouts: This could be made more precise based on layouts *) + (* CR layouts: This could be made more precise based on jkinds *) | (Tconstr (p1, [], _), Tconstr (p2, [], _)) when Path.same p1 p2 -> () | _ -> @@ -2945,32 +2944,32 @@ let find_lowest_level ty = let find_expansion_scope env path = (Env.find_type path env).type_expansion_scope -let layout_of_abstract_type_declaration env p = +let jkind_of_abstract_type_declaration env p = try (* CR layouts: This lookup duplicates work already done in is_instantiable, which guards the case of unify3 that reaches this function. Would be nice to eliminate the duplication, but is seems tricky to do so without complicating unify3. *) - (Env.find_type p env).type_layout + (Env.find_type p env).type_jkind with Not_found -> assert false -let add_layout_equation ~reason env destination layout1 = - (* Here we check whether the source and destination layouts intersect. If +let add_jkind_equation ~reason env destination jkind1 = + (* Here we check whether the source and destination jkinds intersect. If they don't, we can give a type error. If they do, and destination is abstract, we can improve type checking by assigning destination that - layout. *) - match intersect_type_layout ~reason !env destination layout1 with - | Error err -> raise_for Unify (Bad_layout (destination,err)) - | Ok layout -> begin + jkind. *) + match intersect_type_jkind ~reason !env destination jkind1 with + | Error err -> raise_for Unify (Bad_jkind (destination,err)) + | Ok jkind -> begin match get_desc destination with - | Tconstr (p, _, _) when is_instantiable ~for_layout_eqn:true !env p -> + | Tconstr (p, _, _) when is_instantiable ~for_jkind_eqn:true !env p -> begin try let decl = Env.find_type p !env in - if not (Layout.equal layout decl.type_layout) + if not (Jkind.equal jkind decl.type_jkind) then - let refined_decl = { decl with type_layout = layout } in + let refined_decl = { decl with type_jkind = jkind } in env := Env.add_local_type p refined_decl !env with Not_found -> () @@ -2988,13 +2987,13 @@ let add_gadt_equation env source destination = let expansion_scope = Int.max (Path.scope source) (get_gadt_equations_level ()) in - (* Recording the actual layout here is required, not just for efficiency. - When we check the layout later, we may not be able to see the local + (* Recording the actual jkind here is required, not just for efficiency. + When we check the jkind later, we may not be able to see the local equation because of its scope. *) - let layout = layout_of_abstract_type_declaration !env source in - add_layout_equation ~reason:(Gadt_equation source) env destination layout; + let jkind = jkind_of_abstract_type_declaration !env source in + add_jkind_equation ~reason:(Gadt_equation source) env destination jkind; let decl = - new_local_type ~manifest_and_scope:(destination, expansion_scope) layout + new_local_type ~manifest_and_scope:(destination, expansion_scope) jkind in env := Env.add_local_type source decl !env; cleanup_abbrev () @@ -3101,8 +3100,8 @@ let unify_eq t1 t2 = && TypePairs.mem unify_eq_set (order_type_pair t1 t2)) let unify1_var env t1 t2 = - let layout = match get_desc t1 with - | Tvar { layout } -> layout + let jkind = match get_desc t1 with + | Tvar { jkind } -> jkind | _ -> assert false in occur_for Unify env t1 t2; @@ -3115,18 +3114,18 @@ let unify1_var env t1 t2 = with Escape e -> raise_for Unify (Escape e) end; - unification_layout_check env t2 layout; + unification_jkind_check env t2 jkind; link_type t1 t2; true | exception Unify_trace _ when in_pattern_mode () -> false (* Called from unify3 *) -let unify3_var env layout1 t1' t2 t2' = +let unify3_var env jkind1 t1' t2 t2' = occur_for Unify !env t1' t2; match occur_univar_for Unify !env t2 with | () -> begin - unification_layout_check !env t2' layout1; + unification_jkind_check !env t2' jkind1; link_type t1' t2 end | exception Unify_trace _ when in_pattern_mode () -> @@ -3176,7 +3175,7 @@ let rec unify (env:Env.t ref) t1 t2 = if unify1_var !env t1 t2 then () else unify2 env t1 t2 | (_, Tvar _) -> if unify1_var !env t2 t1 then () else unify2 env t1 t2 - | (Tunivar { layout = l1 }, Tunivar { layout = l2 }) -> + | (Tunivar { jkind = l1 }, Tunivar { jkind = l2 }) -> unify_univar_for Unify t1 t2 !univar_pairs; update_level_for Unify !env (get_level t1) t2; update_scope_for Unify (get_scope t1) t2; @@ -3190,8 +3189,8 @@ let rec unify (env:Env.t ref) t1 t2 = Which should probably fail, even though it would be sound to accept. *) - if not (Layout.equal l1 l2) then - raise_for Unify (Unequal_var_layouts (t1, l1, t2, l2)); + if not (Jkind.equal l1 l2) then + raise_for Unify (Unequal_var_jkinds (t1, l1, t2, l2)); link_type t1 t2 | (Tconstr (p1, [], a1), Tconstr (p2, [], a2)) when Path.same p1 p2 (* && actual_mode !env = Old *) @@ -3262,7 +3261,7 @@ and unify3 env t1 t1' t2 t2' = (not (eq_type t2 t2')) && (deep_occur t1' t2) in begin match (d1, d2) with (* handle vars and univars specially *) - (Tunivar { layout = l1 }, Tunivar { layout = l2 }) -> + (Tunivar { jkind = l1 }, Tunivar { jkind = l2 }) -> unify_univar_for Unify t1' t2' !univar_pairs; (* CR layouts v1.5: make a test case for this once we have annotations on univars @@ -3273,13 +3272,13 @@ and unify3 env t1 t1' t2 t2' = let f (x : < foo : ('a : void) . 'a foo bar >) : < foo : 'a . 'a foo bar > = x *) - if not (Layout.equal l1 l2) then - raise_for Unify (Unequal_var_layouts (t1, l1, t2, l2)); + if not (Jkind.equal l1 l2) then + raise_for Unify (Unequal_var_jkinds (t1, l1, t2, l2)); link_type t1' t2' - | (Tvar { layout }, _) -> - unify3_var env layout t1' t2 t2' - | (_, Tvar { layout }) -> - unify3_var env layout t2' t1 t1' + | (Tvar { jkind }, _) -> + unify3_var env jkind t1' t2 t2' + | (_, Tvar { jkind }) -> + unify3_var env jkind t2' t1 t1' | (Tfield _, Tfield _) -> (* special case for GADTs *) unify_fields env t1' t2' | _ -> @@ -3337,8 +3336,8 @@ and unify3 env t1 t1' t2 t2' = inj (List.combine tl1 tl2) | (Tconstr (path,[],_), Tconstr (path',[],_)) - when is_instantiable !env ~for_layout_eqn:false path - && is_instantiable !env ~for_layout_eqn:false path' + when is_instantiable !env ~for_jkind_eqn:false path + && is_instantiable !env ~for_jkind_eqn:false path' && can_generate_equations () -> let source, destination = if Path.scope path > Path.scope path' @@ -3348,13 +3347,13 @@ and unify3 env t1 t1' t2 t2' = record_equation t1' t2'; add_gadt_equation env source destination | (Tconstr (path,[],_), _) - when is_instantiable !env ~for_layout_eqn:false path + when is_instantiable !env ~for_jkind_eqn:false path && can_generate_equations () -> reify env t2'; record_equation t1' t2'; add_gadt_equation env path t2' | (_, Tconstr (path,[],_)) - when is_instantiable !env ~for_layout_eqn:false path + when is_instantiable !env ~for_jkind_eqn:false path && can_generate_equations () -> reify env t1'; record_equation t1' t2'; @@ -3452,7 +3451,7 @@ and unify_list env tl1 tl2 = and make_rowvar level use1 rest1 use2 rest2 = let set_name ty name = match get_desc ty with - Tvar { name = None; layout } -> set_type_desc ty (Tvar { name; layout }) + Tvar { name = None; jkind } -> set_type_desc ty (Tvar { name; jkind }) | _ -> () in let name = @@ -3467,7 +3466,7 @@ and make_rowvar level use1 rest1 use2 rest2 = in if use1 then rest1 else if use2 then rest2 - else newty2 ~level (Tvar { name; layout = Layout.value ~why:Row_variable }) + else newty2 ~level (Tvar { name; jkind = Jkind.value ~why:Row_variable }) and unify_fields env ty1 ty2 = (* Optimization *) let (fields1, rest1) = flatten_fields ty1 @@ -3530,7 +3529,7 @@ and unify_row env row1 row2 = | None, Some _ -> rm2 | None, None -> newty2 ~level:(Int.min (get_level rm1) (get_level rm2)) - (Tvar { name = None; layout = Layout.value ~why:Row_variable }) + (Tvar { name = None; jkind = Jkind.value ~why:Row_variable }) in let fixed = merge_fixed_explanation fixed1 fixed2 and closed = row1_closed || row2_closed in @@ -3736,14 +3735,14 @@ let unify_var ~from_subst env t1 t2 = match get_desc t1, get_desc t2 with Tvar _, Tconstr _ when deep_occur t1 t2 -> unify (ref env) t1 t2 - | Tvar { layout }, _ -> + | Tvar { jkind }, _ -> let reset_tracing = check_trace_gadt_instances env in begin try occur_for Unify env t1 t2; update_level_for Unify env (get_level t1) t2; update_scope_for Unify (get_scope t1) t2; if not from_subst then begin - unification_layout_check env t2 layout + unification_jkind_check env t2 jkind end; link_type t1 t2; reset_trace_gadt_instances reset_tracing; @@ -3756,7 +3755,7 @@ let unify_var ~from_subst env t1 t2 = | _ -> unify (ref env) t1 t2 -(* CR layouts: comment here explaining why it's safe to skip layout checks in +(* CR layouts: comment here explaining why it's safe to skip jkind checks in this case when called from subst. *) let _ = unify_var' := unify_var ~from_subst:true let unify_var = unify_var ~from_subst:false @@ -3768,8 +3767,8 @@ let unify_pairs env ty1 ty2 pairs = let unify env ty1 ty2 = unify_pairs (ref env) ty1 ty2 [] -let unify_delaying_layout_checks env ty1 ty2 = - delay_layout_checks_in (fun () -> +let unify_delaying_jkind_checks env ty1 ty2 = + delay_jkind_checks_in (fun () -> unify_pairs (ref env) ty1 ty2 []) (**** Special cases of unification ****) @@ -3795,17 +3794,17 @@ type filter_arrow_failure = ; expected_type : type_expr } | Not_a_function - | Layout_error of type_expr * Layout.Violation.t + | Jkind_error of type_expr * Jkind.Violation.t exception Filter_arrow_failed of filter_arrow_failure type filtered_arrow = { ty_arg : type_expr; arg_mode : Mode.Alloc.t; - arg_sort : sort; + arg_sort : Jkind.sort; ty_ret : type_expr; ret_mode : Mode.Alloc.t; - ret_sort : sort + ret_sort : Jkind.sort } let filter_arrow env t l ~force_tpoly = @@ -3818,10 +3817,10 @@ let filter_arrow env t l ~force_tpoly = allow both to be any. Separately, the relevant checks on function arguments should happen when functions are constructed, not their types. *) - let arg_sort = Sort.new_var () in - let l_arg = Layout.of_sort ~why:Function_argument arg_sort in - let ret_sort = Sort.new_var () in - let l_res = Layout.of_sort ~why:Function_result ret_sort in + let arg_sort = Jkind.Sort.new_var () in + let l_arg = Jkind.of_sort ~why:Function_argument arg_sort in + let ret_sort = Jkind.Sort.new_var () in + let l_res = Jkind.of_sort ~why:Function_result ret_sort in let ty_arg = if not force_tpoly then begin assert (not (is_optional l)); @@ -3830,10 +3829,10 @@ let filter_arrow env t l ~force_tpoly = let t1 = if is_optional l then newty2 ~level - (* CR layouts v5: Change the Layout.value when option can + (* CR layouts v5: Change the Jkind.value when option can hold non-values. *) (Tconstr(Predef.path_option, - [newvar2 level (Layout.value ~why:Type_argument)], + [newvar2 level (Jkind.value ~why:Type_argument)], ref Mnil)) else newvar2 level l_arg @@ -3860,16 +3859,16 @@ let filter_arrow env t l ~force_tpoly = (Diff { got = t'; expected = t } :: trace)))) in match get_desc t with - Tvar { layout } -> + Tvar { jkind } -> let t', arrow_desc = function_type (get_level t) in - begin match constrain_type_layout env t' layout with + begin match constrain_type_jkind env t' jkind with | Ok _ -> () | Error err -> raise (Filter_arrow_failed (Unification_error (expand_to_unification_error env - [Bad_layout (t',err)]))) + [Bad_jkind (t',err)]))) end; link_type t t'; arrow_desc @@ -3880,12 +3879,12 @@ let filter_arrow env t l ~force_tpoly = arrows to functions, this function doesn't need to return a sort and these calls to [type_sort] can move. We could eliminate them entirely by storing sorts on [TArrow], but that seems incompatible - with the future plan to shift the layout requirements from the types + with the future plan to shift the jkind requirements from the types to the terms. *) let type_sort ~why ty = match type_sort ~why env ty with | Ok sort -> sort - | Error err -> raise (Filter_arrow_failed (Layout_error (ty, err))) + | Error err -> raise (Filter_arrow_failed (Jkind_error (ty, err))) in let arg_sort = type_sort ~why:Function_argument ty_arg in let ret_sort = type_sort ~why:Function_result ty_ret in @@ -3918,15 +3917,15 @@ type filter_method_failure = | Unification_error of unification_error | Not_a_method | Not_an_object of type_expr - | Not_a_value of Layout.Violation.t + | Not_a_value of Jkind.Violation.t exception Filter_method_failed of filter_method_failure (* Used by [filter_method]. *) let rec filter_method_field env name ty = let method_type ~level = - let ty1 = newvar2 level (Layout.value ~why:Object_field) in - let ty2 = newvar2 level (Layout.value ~why:Row_variable) in + let ty1 = newvar2 level (Jkind.value ~why:Object_field) in + let ty2 = newvar2 level (Jkind.value ~why:Row_variable) in let ty' = newty2 ~level (Tfield (name, field_public, ty1, ty2)) in ty', ty1 in @@ -3959,7 +3958,7 @@ let rec filter_method_field env name ty = (* Unify [ty] and [< name : 'a; .. >]. Return ['a]. *) let filter_method env name ty = let object_type ~level ~scope = - let ty1 = newvar2 level (Layout.value ~why:Row_variable) in + let ty1 = newvar2 level (Jkind.value ~why:Row_variable) in let ty' = newty3 ~level ~scope (Tobject (ty1, ref None)) in let ty_meth = filter_method_field env name ty1 in (ty', ty_meth) @@ -3982,7 +3981,7 @@ let filter_method env name ty = let scope = get_scope ty in let ty', ty_meth = object_type ~level ~scope in begin match - constrain_type_layout env ty (Layout.value ~why:Object) + constrain_type_jkind env ty (Jkind.value ~why:Object) with | Ok _ -> () | Error err -> raise (Filter_method_failed (Not_a_value err)) @@ -4001,8 +4000,8 @@ let rec filter_method_row env name priv ty = match get_desc ty with | Tvar _ -> let level = get_level ty in - let field = newvar2 level (Layout.value ~why:Object_field) in - let row = newvar2 level (Layout.value ~why:Row_variable) in + let field = newvar2 level (Jkind.value ~why:Object_field) in + let row = newvar2 level (Jkind.value ~why:Row_variable) in let kind, priv = match priv with | Private -> @@ -4038,7 +4037,7 @@ let rec filter_method_row env name priv ty = | Private -> let level = get_level ty in let kind = field_absent in - Mprivate kind, newvar2 level (Layout.value ~why:Object_field), ty + Mprivate kind, newvar2 level (Jkind.value ~why:Object_field), ty end | _ -> raise Filter_method_row_failed @@ -4046,7 +4045,7 @@ let rec filter_method_row env name priv ty = (* Operations on class signatures *) let new_class_signature () = - let row = newvar (Layout.value ~why:Row_variable) in + let row = newvar (Jkind.value ~why:Row_variable) in let self = newobj row in { csig_self = self; csig_self_row = row; @@ -4281,7 +4280,7 @@ let generalize_class_signature_spine env sign = (* But keep levels correct on the type of self *) Meths.iter (fun _ (_, _, ty) -> - unify_var env (newvar (Layout.value ~why:Object)) ty) + unify_var env (newvar (Jkind.value ~why:Object)) ty) meths; sign.csig_meths <- new_meths @@ -4372,11 +4371,11 @@ let rec moregen inst_nongen variance type_pairs env t1 t2 = try match (get_desc t1, get_desc t2) with - (Tvar { layout }, _) when may_instantiate inst_nongen t1 -> + (Tvar { jkind }, _) when may_instantiate inst_nongen t1 -> moregen_occur env (get_level t1) t2; update_scope_for Moregen (get_scope t1) t2; occur_for Moregen env t1 t2; - constrain_type_layout_exn env Moregen t2 layout; + constrain_type_jkind_exn env Moregen t2 jkind; link_type t1 t2 | (Tconstr (p1, [], _), Tconstr (p2, [], _)) when Path.same p1 p2 -> () @@ -4389,10 +4388,10 @@ let rec moregen inst_nongen variance type_pairs env t1 t2 = if not (TypePairs.mem pairs (t1', t2')) then begin TypePairs.add pairs (t1', t2'); match (get_desc t1', get_desc t2') with - (Tvar { layout }, _) when may_instantiate inst_nongen t1' -> + (Tvar { jkind }, _) when may_instantiate inst_nongen t1' -> moregen_occur env (get_level t1') t2; update_scope_for Moregen (get_scope t1') t2; - constrain_type_layout_exn env Moregen t2 layout; + constrain_type_jkind_exn env Moregen t2 jkind; link_type t1' t2 | (Tarrow ((l1,a1,r1), t1, u1, _), Tarrow ((l2,a2,r2), t2, u2, _)) when @@ -4667,7 +4666,7 @@ let all_distinct_vars env vars = type matches_result = | Unification_failure of Errortrace.unification_error - | Layout_mismatch of { original_layout : layout; inferred_layout : layout + | Jkind_mismatch of { original_jkind : jkind; inferred_jkind : jkind ; ty : type_expr } | All_good @@ -4678,8 +4677,8 @@ type matches_result = let rec rigidify_rec vars ty = if try_mark_node ty then begin match get_desc ty with - | Tvar { layout } -> - vars := TypeMap.add ty layout !vars + | Tvar { jkind } -> + vars := TypeMap.add ty jkind !vars | Tvariant row -> let Row {more; name; closed} = row_repr row in if is_Tvar more && not (has_fixed_explanation row) then begin @@ -4698,7 +4697,7 @@ let rec rigidify_rec vars ty = end (* remember free variables in a type so we can make sure they aren't unified; - should be paired with a call to [all_distinct_vars_with_original__layouts] + should be paired with a call to [all_distinct_vars_with_original__jkinds] later. *) let rigidify ty = let vars = ref TypeMap.empty in @@ -4712,40 +4711,40 @@ let rigidify ty = module No_trace = struct type matches_result_ = | Unification_failure - | Layout_mismatch of { original_layout : layout; inferred_layout : layout - ; ty : type_expr } + | Jkind_mismatch of { original_jkind : jkind; inferred_jkind : jkind + ; ty : type_expr } | All_good end -let all_distinct_vars_with_original_layouts env vars_layouts = +let all_distinct_vars_with_original_jkinds env vars_jkinds = let open No_trace in let tys = ref TypeSet.empty in - let folder acc (ty, original_layout) = + let folder acc (ty, original_jkind) = match acc with - | Unification_failure | Layout_mismatch _ -> acc + | Unification_failure | Jkind_mismatch _ -> acc | All_good -> let open No_trace in let ty = expand_head env ty in if TypeSet.mem ty !tys then Unification_failure else begin tys := TypeSet.add ty !tys; match get_desc ty with - | Tvar { layout = inferred_layout } -> - if Layout.equate inferred_layout original_layout + | Tvar { jkind = inferred_jkind } -> + if Jkind.equate inferred_jkind original_jkind then All_good - else Layout_mismatch { original_layout; inferred_layout; ty } + else Jkind_mismatch { original_jkind; inferred_jkind; ty } | _ -> Unification_failure end in - List.fold_left folder All_good vars_layouts + List.fold_left folder All_good vars_jkinds let matches ~expand_error_trace env ty ty' = let snap = snapshot () in - let vars_layouts = rigidify ty in + let vars_jkinds = rigidify ty in cleanup_abbrev (); match unify env ty ty' with | () -> let result = - match all_distinct_vars_with_original_layouts env vars_layouts with + match all_distinct_vars_with_original_jkinds env vars_jkinds with | Unification_failure -> let diff = if expand_error_trace @@ -4753,8 +4752,8 @@ let matches ~expand_error_trace env ty ty' = else unexpanded_diff ~got:ty ~expected:ty' in Unification_failure (unification_error ~trace:[diff]) - | Layout_mismatch { original_layout; inferred_layout; ty } -> - Layout_mismatch { original_layout; inferred_layout; ty } + | Jkind_mismatch { original_jkind; inferred_jkind; ty } -> + Jkind_mismatch { original_jkind; inferred_jkind; ty } | All_good -> All_good in backtrack snap; @@ -4783,8 +4782,8 @@ let eqtype_subst type_pairs subst t1 l1 t2 l2 = !subst then () else begin - if not (Layout.equal l1 l2) - then raise_for Equality (Unequal_var_layouts (t1, l1, t2, l2)); + if not (Jkind.equal l1 l2) + then raise_for Equality (Unequal_var_jkinds (t1, l1, t2, l2)); subst := (t1, t2) :: !subst; TypePairs.add type_pairs (t1, t2) end @@ -4794,7 +4793,7 @@ let rec eqtype rename type_pairs subst env t1 t2 = try match (get_desc t1, get_desc t2) with - (Tvar { layout = l1 }, Tvar { layout = l2 }) when rename -> + (Tvar { jkind = l1 }, Tvar { jkind = l2 }) when rename -> eqtype_subst type_pairs subst t1 l1 t2 l2 | (Tconstr (p1, [], _), Tconstr (p2, [], _)) when Path.same p1 p2 -> () @@ -4806,7 +4805,7 @@ let rec eqtype rename type_pairs subst env t1 t2 = if not (TypePairs.mem type_pairs (t1', t2')) then begin TypePairs.add type_pairs (t1', t2'); match (get_desc t1', get_desc t2') with - (Tvar { layout = l1 }, Tvar { layout = l2 }) when rename -> + (Tvar { jkind = l1 }, Tvar { jkind = l2 }) when rename -> eqtype_subst type_pairs subst t1' l1 t2' l2 | (Tarrow ((l1,a1,r1), t1, u1, _), Tarrow ((l2,a2,r2), t2, u2, _)) when @@ -5414,9 +5413,9 @@ let rec build_subtype env (visited : transient_expr list) if deep_occur_list ty tl1 then raise Not_found; set_type_desc ty (Tvar { name = None; - layout = Layout.value + jkind = Jkind.value ~why:(Unknown "build subtype 1")}); - let t'' = newvar (Layout.value ~why:(Unknown "build subtype 2")) + let t'' = newvar (Jkind.value ~why:(Unknown "build subtype 2")) in let loops = (get_id ty, t'') :: loops in (* May discard [visited] as level is going down *) @@ -5456,7 +5455,7 @@ let rec build_subtype env (visited : transient_expr list) else build_subtype env visited loops (not posi) level t else if co then build_subtype env visited loops posi level t - else (newvar (Layout.value + else (newvar (Jkind.value ~why:(Unknown "build_subtype 3")), Changed)) decl.type_variance tl @@ -5495,7 +5494,7 @@ let rec build_subtype env (visited : transient_expr list) let c = collect fields in let row = create_row ~fields:(List.map fst fields) - ~more:(newvar (Layout.value ~why:Row_variable)) + ~more:(newvar (Jkind.value ~why:Row_variable)) ~closed:posi ~fixed:None ~name:(if c > Unchanged then None else row_name row) in @@ -5517,7 +5516,7 @@ let rec build_subtype env (visited : transient_expr list) else (t, Unchanged) | Tnil -> if posi then - let v = newvar (Layout.value ~why:Tnil) in + let v = newvar (Jkind.value ~why:Tnil) in (v, Changed) else begin warn := true; @@ -5726,7 +5725,7 @@ and subtype_fields env trace ty1 ty2 cstrs = let cstrs = if miss2 = [] then cstrs else (trace, rest1, build_fields (get_level ty2) miss2 - (newvar (Layout.value ~why:Object_field)), + (newvar (Jkind.value ~why:Object_field)), !univar_pairs) :: cstrs in List.fold_left @@ -5836,7 +5835,7 @@ let rec unalias_object ty = | Tunivar _ -> ty | Tconstr _ -> - newvar2 level (Layout.any ~why:Dummy_layout) + newvar2 level (Jkind.any ~why:Dummy_jkind) | _ -> assert false @@ -5894,7 +5893,7 @@ let rec nongen_schema_rec env ty = (* Return whether all variables of type [ty] are generic. *) let nongen_schema env ty = - remove_mode_and_layout_variables ty; + remove_mode_and_jkind_variables ty; visited := TypeSet.empty; try nongen_schema_rec env ty; @@ -6025,7 +6024,7 @@ let rec nondep_type_rec ?(expand_private=false) env ids ty = | _ -> try TypeHash.find nondep_hash ty with Not_found -> let ty' = newgenstub ~scope:(get_scope ty) - (Layout.any ~why:Dummy_layout) in + (Jkind.any ~why:Dummy_jkind) in TypeHash.add nondep_hash ty ty'; match match get_desc ty with @@ -6135,7 +6134,7 @@ let nondep_type_decl env mid is_covariant decl = { type_params = params; type_arity = decl.type_arity; type_kind = tk; - type_layout = decl.type_layout; + type_jkind = decl.type_jkind; type_manifest = tm; type_private = priv; type_variance = decl.type_variance; @@ -6178,7 +6177,7 @@ let nondep_extension_constructor env ids ext = { ext_type_path = type_path; ext_type_params = type_params; ext_args = args; - ext_arg_layouts = ext.ext_arg_layouts; + ext_arg_jkinds = ext.ext_arg_jkinds; ext_constant = ext.ext_constant; ext_ret_type = ret_type; ext_private = ext.ext_private; diff --git a/ocaml/typing/ctype.mli b/ocaml/typing/ctype.mli index 0a9099a06d0..f7acdda97d8 100644 --- a/ocaml/typing/ctype.mli +++ b/ocaml/typing/ctype.mli @@ -17,7 +17,6 @@ open Asttypes open Types -open Layouts exception Unify of Errortrace.unification_error exception Equality of Errortrace.equality_error @@ -55,10 +54,10 @@ val create_scope : unit -> int val newty: type_desc -> type_expr val new_scoped_ty: int -> type_desc -> type_expr -val newvar: ?name:string -> layout -> type_expr -val newvar2: ?name:string -> int -> layout -> type_expr +val newvar: ?name:string -> Jkind.t -> type_expr +val newvar2: ?name:string -> int -> Jkind.t -> type_expr (* Return a fresh variable *) -val new_global_var: ?name:string -> layout -> type_expr +val new_global_var: ?name:string -> Jkind.t -> type_expr (* Return a fresh variable, bound at toplevel (as type variables ['a] in type constraints). *) val newobj: type_expr -> type_expr @@ -150,7 +149,7 @@ val instance_list: type_expr list -> type_expr list (* Take an instance of a list of type schemes *) val new_local_type: ?loc:Location.t -> ?manifest_and_scope:(type_expr * int) -> - layout -> type_declaration + Jkind.t -> type_declaration val existential_name: constructor_description -> type_expr -> string val instance_constructor: ?in_pattern:Env.t ref * int -> @@ -236,20 +235,20 @@ val unify_gadt: val unify_var: Env.t -> type_expr -> type_expr -> unit (* Same as [unify], but allow free univars when first type is a variable. *) -val unify_delaying_layout_checks : - Env.t -> type_expr -> type_expr -> (type_expr * layout) list - (* Same as [unify], but don't check layout compatibility. Instead, +val unify_delaying_jkind_checks : + Env.t -> type_expr -> type_expr -> (type_expr * Jkind.t) list + (* Same as [unify], but don't check jkind compatibility. Instead, return the checks that would have been performed. For use in - typedecl before well-foundedness checks have made layout checking + typedecl before well-foundedness checks have made jkind checking safe. *) type filtered_arrow = { ty_arg : type_expr; arg_mode : Mode.Alloc.t; - arg_sort : sort; + arg_sort : Jkind.sort; ty_ret : type_expr; ret_mode : Mode.Alloc.t; - ret_sort : sort + ret_sort : Jkind.sort } val filter_arrow: Env.t -> type_expr -> arg_label -> force_tpoly:bool -> @@ -283,8 +282,8 @@ val all_distinct_vars: Env.t -> type_expr list -> bool type matches_result = | Unification_failure of Errortrace.unification_error - | Layout_mismatch of { original_layout : layout; inferred_layout : layout - ; ty : type_expr } + | Jkind_mismatch of { original_jkind : jkind; inferred_jkind : jkind + ; ty : type_expr } | All_good val matches: expand_error_trace:bool -> Env.t -> type_expr -> type_expr -> matches_result @@ -306,7 +305,7 @@ type filter_arrow_failure = ; expected_type : type_expr } | Not_a_function - | Layout_error of type_expr * Layout.Violation.t + | Jkind_error of type_expr * Jkind.Violation.t exception Filter_arrow_failed of filter_arrow_failure @@ -317,7 +316,7 @@ type filter_method_failure = | Unification_error of Errortrace.unification_error | Not_a_method | Not_an_object of type_expr - | Not_a_value of Layout.Violation.t + | Not_a_value of Jkind.Violation.t exception Filter_method_failed of filter_method_failure @@ -431,8 +430,8 @@ val nondep_cltype_declaration: val is_contractive: Env.t -> Path.t -> bool val normalize_type: type_expr -> unit -val remove_mode_and_layout_variables: type_expr -> unit - (* Ensure mode and layout variables are fully determined *) +val remove_mode_and_jkind_variables: type_expr -> unit + (* Ensure mode and jkind variables are fully determined *) val nongen_schema: Env.t -> type_expr -> bool (* Check whether the given type scheme contains no non-generic @@ -493,32 +492,32 @@ val get_unboxed_type_approximation : Env.t -> type_expr -> type_expr void. *) val tvariant_not_immediate : row_desc -> bool -(* Cheap upper bound on layout. Will not expand unboxed types - call - [type_layout] if that's needed. *) -val estimate_type_layout : Env.t -> type_expr -> layout +(* Cheap upper bound on jkind. Will not expand unboxed types - call + [type_jkind] if that's needed. *) +val estimate_type_jkind : Env.t -> type_expr -> jkind -(* Get the layout of a type, expanding it and looking through [[@@unboxed]] +(* Get the jkind of a type, expanding it and looking through [[@@unboxed]] types. *) -val type_layout : Env.t -> type_expr -> layout +val type_jkind : Env.t -> type_expr -> jkind (* Find a type's sort (constraining it to be an arbitrary sort variable, if needed) *) val type_sort : - why:Layouts.Layout.concrete_layout_reason -> - Env.t -> type_expr -> (sort, Layout.Violation.t) result + why:Jkind.concrete_jkind_reason -> + Env.t -> type_expr -> (Jkind.sort, Jkind.Violation.t) result -(* Layout checking. [constrain_type_layout] will update the layout of type - variables to make the check true, if possible. [check_decl_layout] and - [check_type_layout] won't, but will still instantiate sort variables. +(* Jkind checking. [constrain_type_jkind] will update the jkind of type + variables to make the check true, if possible. [check_decl_jkind] and + [check_type_jkind] won't, but will still instantiate sort variables. *) (* CR layouts: When we improve errors, it may be convenient to change these to raise on error, like unify. *) -val check_decl_layout : - Env.t -> type_declaration -> layout -> (unit, Layout.Violation.t) result -val check_type_layout : - Env.t -> type_expr -> layout -> (unit, Layout.Violation.t) result -val constrain_type_layout : - Env.t -> type_expr -> layout -> (unit, Layout.Violation.t) result +val check_decl_jkind : + Env.t -> type_declaration -> Jkind.t -> (unit, Jkind.Violation.t) result +val check_type_jkind : + Env.t -> type_expr -> Jkind.t -> (unit, Jkind.Violation.t) result +val constrain_type_jkind : + Env.t -> type_expr -> Jkind.t -> (unit, Jkind.Violation.t) result (* False if running in principal mode and the type is not principal. True otherwise. *) diff --git a/ocaml/typing/datarepr.ml b/ocaml/typing/datarepr.ml index d337930207d..5cac49ce01c 100644 --- a/ocaml/typing/datarepr.ml +++ b/ocaml/typing/datarepr.ml @@ -18,7 +18,6 @@ open Asttypes open Types -open Layouts open Btype (* Simplified version of Ctype.free_vars *) @@ -66,16 +65,16 @@ let constructor_args ~current_unit priv cd_args cd_res path rep = let arg_vars_set = free_vars ~param:true (newgenty (Ttuple tyl)) in let type_params = TypeSet.elements arg_vars_set in let arity = List.length type_params in - let is_void_label lbl = Layout.is_void_defaulting lbl.ld_layout in - let layout = - Layout.for_boxed_record ~all_void:(List.for_all is_void_label lbls) + let is_void_label lbl = Jkind.is_void_defaulting lbl.ld_jkind in + let jkind = + Jkind.for_boxed_record ~all_void:(List.for_all is_void_label lbls) in let tdecl = { type_params; type_arity = arity; type_kind = Type_record (lbls, rep); - type_layout = layout; + type_jkind = jkind; type_private = priv; type_manifest = None; type_variance = Variance.unknown_signature ~injective:true ~arity; @@ -94,21 +93,21 @@ let constructor_args ~current_unit priv cd_args cd_res path rep = let constructor_descrs ~current_unit ty_path decl cstrs rep = let ty_res = newgenconstr ty_path decl.type_params in - let cstr_arg_layouts : layout array array = + let cstr_arg_jkinds : Jkind.t array array = match rep with | Variant_extensible -> assert false - | Variant_boxed layouts -> layouts - | Variant_unboxed -> [| [| decl.type_layout |] |] + | Variant_boxed jkinds -> jkinds + | Variant_unboxed -> [| [| decl.type_jkind |] |] in - let all_void layouts = Array.for_all Layout.is_void_defaulting layouts in + let all_void jkinds = Array.for_all Jkind.is_void_defaulting jkinds in let num_consts = ref 0 and num_nonconsts = ref 0 in let cstr_constant = Array.map - (fun layouts -> - let all_void = all_void layouts in + (fun jkinds -> + let all_void = all_void jkinds in if all_void then incr num_consts else incr num_nonconsts; all_void) - cstr_arg_layouts + cstr_arg_jkinds in let describe_constructor (src_index, const_tag, nonconst_tag, acc) {cd_id; cd_args; cd_res; cd_loc; cd_attributes; cd_uid} = @@ -118,7 +117,7 @@ let constructor_descrs ~current_unit ty_path decl cstrs rep = | Some ty_res' -> ty_res' | None -> ty_res in - let cstr_arg_layouts = cstr_arg_layouts.(src_index) in + let cstr_arg_jkinds = cstr_arg_jkinds.(src_index) in let cstr_constant = cstr_constant.(src_index) in let runtime_tag, const_tag, nonconst_tag = if cstr_constant @@ -137,7 +136,7 @@ let constructor_descrs ~current_unit ty_path decl cstrs rep = cstr_res; cstr_existentials; cstr_args; - cstr_arg_layouts; + cstr_arg_jkinds; cstr_arity = List.length cstr_args; cstr_tag; cstr_repr = rep; @@ -162,7 +161,7 @@ let extension_descr ~current_unit path_ext ext = Some type_ret -> type_ret | None -> newgenconstr ext.ext_type_path ext.ext_type_params in - let cstr_tag = Extension (path_ext, ext.ext_arg_layouts) in + let cstr_tag = Extension (path_ext, ext.ext_arg_jkinds) in let existentials, cstr_args, cstr_inlined = constructor_args ~current_unit ext.ext_private ext.ext_args ext.ext_ret_type path_ext (Record_inlined (cstr_tag, Variant_extensible)) @@ -171,7 +170,7 @@ let extension_descr ~current_unit path_ext ext = cstr_res = ty_res; cstr_existentials = existentials; cstr_args; - cstr_arg_layouts = ext.ext_arg_layouts; + cstr_arg_jkinds = ext.ext_arg_jkinds; cstr_arity = List.length cstr_args; cstr_tag; cstr_repr = Variant_extensible; @@ -193,7 +192,7 @@ let none = let dummy_label = { lbl_name = ""; lbl_res = none; lbl_arg = none; lbl_mut = Immutable; lbl_global = Unrestricted; - lbl_layout = Layout.any ~why:Dummy_layout; + lbl_jkind = Jkind.any ~why:Dummy_jkind; lbl_num = -1; lbl_pos = -1; lbl_all = [||]; lbl_repres = Record_unboxed; lbl_private = Public; @@ -207,14 +206,14 @@ let label_descrs ty_res lbls repres priv = let rec describe_labels num pos = function [] -> [] | l :: rest -> - let is_void = Layout.is_void_defaulting l.ld_layout in + let is_void = Jkind.is_void_defaulting l.ld_jkind in let lbl = { lbl_name = Ident.name l.ld_id; lbl_res = ty_res; lbl_arg = l.ld_type; lbl_mut = l.ld_mutable; lbl_global = l.ld_global; - lbl_layout = l.ld_layout; + lbl_jkind = l.ld_jkind; lbl_pos = if is_void then lbl_pos_void else pos; lbl_num = num; lbl_all = all_labels; diff --git a/ocaml/typing/env.ml b/ocaml/typing/env.ml index 432d6d68558..0bee01b665e 100644 --- a/ocaml/typing/env.ml +++ b/ocaml/typing/env.ml @@ -21,7 +21,6 @@ open Asttypes open Longident open Path open Types -open Layouts open Local_store @@ -721,7 +720,7 @@ type lookup_error = | 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 + | Non_value_used_in_object of Longident.t * type_expr * Jkind.Violation.t type error = | Missing_module of Location.t * Path.t * Path.t @@ -737,7 +736,7 @@ let lookup_error loc env err = let same_constr = ref (fun _ _ _ -> assert false) -let constrain_type_layout = ref (fun _ _ _ -> assert false) +let constrain_type_jkind = ref (fun _ _ _ -> assert false) let check_well_formed_module = ref (fun _ -> assert false) @@ -3453,8 +3452,8 @@ let lookup_value ?(use=true) ~loc lid env = in let vd = Subst.Lazy.force_value_description desc in if must_box then begin - match !constrain_type_layout env vd.val_type - (Layout.(value ~why:Captured_in_object)) + match !constrain_type_jkind env vd.val_type + (Jkind.(value ~why:Captured_in_object)) with | Ok () -> () | Result.Error err -> @@ -3975,7 +3974,7 @@ let report_lookup_error _loc env ppf = function fprintf ppf "@[%a must have a type of layout value because it is \ captured by an object.@ %a@]" !print_longident lid - (Layout.Violation.report_with_offender + (Jkind.Violation.report_with_offender ~offender:(fun ppf -> !print_type_expr ppf typ)) err let report_error ppf = function diff --git a/ocaml/typing/env.mli b/ocaml/typing/env.mli index 01445e89dea..a5565265e2f 100644 --- a/ocaml/typing/env.mli +++ b/ocaml/typing/env.mli @@ -17,7 +17,6 @@ open Types open Misc -open Layouts val register_uid : Uid.t -> loc:Location.t -> attributes:Parsetree.attribute list -> unit @@ -231,7 +230,7 @@ type lookup_error = | 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 + | Non_value_used_in_object of Longident.t * type_expr * Jkind.Violation.t val lookup_error: Location.t -> t -> lookup_error -> 'a @@ -543,8 +542,8 @@ val scrape_alias: (* Forward declaration to break mutual recursion with Ctype. *) val same_constr: (t -> type_expr -> type_expr -> bool) ref (* Forward declaration to break mutual recursion with Ctype. *) -val constrain_type_layout: - (t -> type_expr -> layout -> (unit, Layout.Violation.t) result) ref +val constrain_type_jkind: + (t -> type_expr -> jkind -> (unit, Jkind.Violation.t) result) ref (* Forward declaration to break mutual recursion with Printtyp. *) val print_longident: (Format.formatter -> Longident.t -> unit) ref (* Forward declaration to break mutual recursion with Printtyp. *) diff --git a/ocaml/typing/errortrace.ml b/ocaml/typing/errortrace.ml index 236072fb888..5e80890e852 100644 --- a/ocaml/typing/errortrace.ml +++ b/ocaml/typing/errortrace.ml @@ -16,7 +16,6 @@ (**************************************************************************) open Types -open Layouts open Format type position = First | Second @@ -109,10 +108,10 @@ type ('a, 'variety) elt = (* Could move [Incompatible_fields] into [obj] *) (* Unification & Moregen; included in Equality for simplicity *) | Rec_occur : type_expr * type_expr -> ('a, _) elt - | Bad_layout : type_expr * Layout.Violation.t -> ('a, _) elt - | Bad_layout_sort : type_expr * Layout.Violation.t -> ('a, _) elt - | Unequal_var_layouts : - type_expr * layout * type_expr * layout -> ('a, _) elt + | Bad_jkind : type_expr * Jkind.Violation.t -> ('a, _) elt + | Bad_jkind_sort : type_expr * Jkind.Violation.t -> ('a, _) elt + | Unequal_var_jkinds : + type_expr * Jkind.t * type_expr * Jkind.t -> ('a, _) elt type ('a, 'variety) t = ('a, 'variety) elt list @@ -126,9 +125,9 @@ let map_elt (type variety) f : ('a, variety) elt -> ('b, variety) elt = function | Escape {kind = (Univ _ | Self | Constructor _ | Module_type _ | Constraint); _} | Variant _ | Obj _ | Incompatible_fields _ | Rec_occur (_, _) as x -> x - | Bad_layout _ as x -> x - | Bad_layout_sort _ as x -> x - | Unequal_var_layouts _ as x -> x + | Bad_jkind _ as x -> x + | Bad_jkind_sort _ as x -> x + | Unequal_var_jkinds _ as x -> x let map f t = List.map (map_elt f) t diff --git a/ocaml/typing/errortrace.mli b/ocaml/typing/errortrace.mli index 0f0825c73c1..b4f7657fe8b 100644 --- a/ocaml/typing/errortrace.mli +++ b/ocaml/typing/errortrace.mli @@ -16,7 +16,6 @@ (**************************************************************************) open Types -open Layouts type position = First | Second @@ -94,10 +93,10 @@ type ('a, 'variety) elt = | Incompatible_fields : { name:string; diff: type_expr diff } -> ('a, _) elt (* Unification & Moregen; included in Equality for simplicity *) | Rec_occur : type_expr * type_expr -> ('a, _) elt - | Bad_layout : type_expr * Layout.Violation.t -> ('a, _) elt - | Bad_layout_sort : type_expr * Layout.Violation.t -> ('a, _) elt - | Unequal_var_layouts : - type_expr * layout * type_expr * layout -> ('a, _) elt + | Bad_jkind : type_expr * Jkind.Violation.t -> ('a, _) elt + | Bad_jkind_sort : type_expr * Jkind.Violation.t -> ('a, _) elt + | Unequal_var_jkinds : + type_expr * Jkind.t * type_expr * Jkind.t -> ('a, _) elt type ('a, 'variety) t = ('a, 'variety) elt list diff --git a/ocaml/typing/includecore.ml b/ocaml/typing/includecore.ml index cff251eb73a..1e32a76e56b 100644 --- a/ocaml/typing/includecore.ml +++ b/ocaml/typing/includecore.ml @@ -18,7 +18,6 @@ open Asttypes open Path open Types -open Layouts open Typedtree type position = Errortrace.position = First | Second @@ -232,7 +231,7 @@ type type_mismatch = | Variant_mismatch of variant_change list | Unboxed_representation of position * attributes | Extensible_representation of position - | Layout of Layout.Violation.t + | Jkind of Jkind.Violation.t let report_locality_mismatch first second ppf err = let {order} = err in @@ -494,8 +493,8 @@ let report_type_mismatch first second decl env ppf err = pr "Their internal representations differ:@ %s %s %s." (choose ord first second) decl "is extensible" - | Layout v -> - Layout.Violation.report_with_name ~name:first ppf v + | Jkind v -> + Jkind.Violation.report_with_name ~name:first ppf v let compare_global_flags flag0 flag1 = match flag0, flag1 with @@ -1009,14 +1008,14 @@ let type_declarations ?(equality = false) ~loc env ~mark name if err <> None then err else let err = match (decl1.type_kind, decl2.type_kind) with (_, Type_abstract _) -> - (* Note that [decl2.type_layout] is an upper bound. + (* Note that [decl2.type_jkind] is an upper bound. If it isn't tight, [decl2] must have a manifest, which we're already checking for equality above. Similarly, [decl1]'s kind may conservatively approximate its - layout, but [check_decl_layout] will expand its manifest. *) - (match Ctype.check_decl_layout env decl1 decl2.type_layout with + jkind, but [check_decl_jkind] will expand its manifest. *) + (match Ctype.check_decl_jkind env decl1 decl2.type_jkind with | Ok _ -> None - | Error v -> Some (Layout v)) + | Error v -> Some (Jkind v)) | (Type_variant (cstrs1, rep1), Type_variant (cstrs2, rep2)) -> if mark then begin let mark usage cstrs = diff --git a/ocaml/typing/includecore.mli b/ocaml/typing/includecore.mli index a50e423721b..016f2caf4f0 100644 --- a/ocaml/typing/includecore.mli +++ b/ocaml/typing/includecore.mli @@ -17,7 +17,6 @@ open Typedtree open Types -open Layouts type position = Errortrace.position = First | Second @@ -105,7 +104,7 @@ type type_mismatch = | Variant_mismatch of variant_change list | Unboxed_representation of position * attributes | Extensible_representation of position - | Layout of Layout.Violation.t + | Jkind of Jkind.Violation.t val value_descriptions: loc:Location.t -> Env.t -> string -> diff --git a/ocaml/typing/jkind.ml b/ocaml/typing/jkind.ml index 72e3a2b8107..fc789e1713e 100644 --- a/ocaml/typing/jkind.ml +++ b/ocaml/typing/jkind.ml @@ -17,7 +17,7 @@ type sub_result = | Sub | Not_sub -(* Layouts *) +(* Jkinds *) module Sort = struct type const = @@ -45,6 +45,7 @@ module Sort = struct let void = Const Void let value = Const Value + let float64 = Const Float64 let some_value = Some value @@ -67,7 +68,7 @@ module Sort = struct if result != s then r := Some result; (* path compression *) result end - end + end (* This is constant-time if [var] was just returned from a previous call to [get]. That's because [var] will always be [None] in that case. @@ -151,7 +152,7 @@ module Sort = struct | Const c1 -> swap_equate_result (equate_sort_const s2 c1) | Var v1 -> equate_var v1 s2 - (* Don't expose whether or not mutation happened; we just need that for [Layout] *) + (* Don't expose whether or not mutation happened; we just need that for [Jkind] *) let equate s1 s2 = match equate_tracking_mutation s1 s2 with | Unequal -> false | Equal_mutated_first | Equal_mutated_second | Equal_no_mutation -> true @@ -200,6 +201,7 @@ module Sort = struct | Value -> "Value" | Float64 -> "Float64") + and opt_t ppf = function | Some s -> fprintf ppf "Some %a" t s | None -> fprintf ppf "None" @@ -230,1062 +232,1060 @@ end type sort = Sort.t -module Layout = struct - (*** reasons for layouts **) - type concrete_layout_reason = - | Match - | Constructor_declaration of int - | Label_declaration of Ident.t - | Unannotated_type_parameter - | Record_projection - | Record_assignment - | Let_binding - | Function_argument - | Function_result - | Structure_item_expression - | V1_safety_check - | External_argument - | External_result - | Statement - - type value_creation_reason = - | Class_let_binding - | Tuple_element - | Probe - | Package_hack - | Object - | Instance_variable - | Object_field - | Class_field - | Boxed_record - | Boxed_variant - | Extensible_variant - | Primitive of Ident.t - | Type_argument - | Tuple - | Row_variable - | Polymorphic_variant - | Arrow - | Tfield - | Tnil - | First_class_module - | Separability_check - | Univar - | Polymorphic_variant_field - | Default_type_layout - | Float_record_field - | Existential_type_variable - | Array_element - | Lazy_expression - | Class_argument - | Structure_element - | Debug_printer_argument - | V1_safety_check - | Captured_in_object - | Unknown of string - - type immediate_creation_reason = - | Empty_record - | Enumeration - | Primitive of Ident.t - | Immediate_polymorphic_variant - | Gc_ignorable_check - | Value_kind - - type immediate64_creation_reason = - | Local_mode_cross_check - | Gc_ignorable_check - | Separability_check - - type void_creation_reason = - | V1_safety_check - - type any_creation_reason = - | Missing_cmi of Path.t - | Wildcard - | Unification_var - | Initial_typedecl_env - | Dummy_layout - | Type_expression_call - - type float64_creation_reason = - | Primitive of Ident.t - - type annotation_context = - | Type_declaration of Path.t - | Type_parameter of Path.t * string option - | With_constraint of string - | Newtype_declaration of string - | Constructor_type_parameter of Path.t * string - | Univar of string - | Type_variable of string - | Type_wildcard of Location.t - - type creation_reason = - | Annotated of annotation_context * Location.t - | Value_creation of value_creation_reason - | Immediate_creation of immediate_creation_reason - | Immediate64_creation of immediate64_creation_reason - | Void_creation of void_creation_reason - | Any_creation of any_creation_reason - | Float64_creation of float64_creation_reason - | Concrete_creation of concrete_layout_reason - | Imported - - type interact_reason = - | Gadt_equation of Path.t - | Tyvar_refinement_intersection - (* CR layouts: this needs to carry a type_expr, but that's loopy *) - | Sublayout - - (*** actual layout types ***) - - type internal = - | Any - | Sort of sort - | Immediate64 - (** We know for sure that values of types of this layout are always immediate - on 64-bit platforms. For other platforms, we know nothing about immediacy. - *) - | Immediate - - (* A history of conditions placed on a layout. - - INVARIANT: at most one sort variable appears in this history. - This is a natural consequence of producing this history by comparing - layouts. +(*** reasons for jkinds **) +type concrete_jkind_reason = + | Match + | Constructor_declaration of int + | Label_declaration of Ident.t + | Unannotated_type_parameter + | Record_projection + | Record_assignment + | Let_binding + | Function_argument + | Function_result + | Structure_item_expression + | V1_safety_check + | External_argument + | External_result + | Statement + +type value_creation_reason = + | Class_let_binding + | Tuple_element + | Probe + | Package_hack + | Object + | Instance_variable + | Object_field + | Class_field + | Boxed_record + | Boxed_variant + | Extensible_variant + | Primitive of Ident.t + | Type_argument + | Tuple + | Row_variable + | Polymorphic_variant + | Arrow + | Tfield + | Tnil + | First_class_module + | Separability_check + | Univar + | Polymorphic_variant_field + | Default_type_jkind + | Float_record_field + | Existential_type_variable + | Array_element + | Lazy_expression + | Class_argument + | Structure_element + | Debug_printer_argument + | V1_safety_check + | Captured_in_object + | Unknown of string + +type immediate_creation_reason = + | Empty_record + | Enumeration + | Primitive of Ident.t + | Immediate_polymorphic_variant + | Gc_ignorable_check + | Value_kind + +type immediate64_creation_reason = + | Local_mode_cross_check + | Gc_ignorable_check + | Separability_check + +type void_creation_reason = + | V1_safety_check + +type any_creation_reason = + | Missing_cmi of Path.t + | Wildcard + | Unification_var + | Initial_typedecl_env + | Dummy_jkind + | Type_expression_call + +type float64_creation_reason = + | Primitive of Ident.t + +type annotation_context = + | Type_declaration of Path.t + | Type_parameter of Path.t * string option + | With_constraint of string + | Newtype_declaration of string + | Constructor_type_parameter of Path.t * string + | Univar of string + | Type_variable of string + | Type_wildcard of Location.t + + +type creation_reason = + | Annotated of annotation_context * Location.t + | Value_creation of value_creation_reason + | Immediate_creation of immediate_creation_reason + | Immediate64_creation of immediate64_creation_reason + | Void_creation of void_creation_reason + | Any_creation of any_creation_reason + | Float64_creation of float64_creation_reason + | Concrete_creation of concrete_jkind_reason + | Imported + +type interact_reason = + | Gadt_equation of Path.t + | Tyvar_refinement_intersection + (* CR layouts: this needs to carry a type_expr, but that's loopy *) + | Subjkind + +(*** actual jkind types ***) + +type internal = + | Any + | Sort of sort + | Immediate64 + (** We know for sure that values of types of this jkind are always immediate + on 64-bit platforms. For other platforms, we know nothing about immediacy. *) - type history = - | Interact of { reason : interact_reason - ; lhs_layout : internal - ; lhs_history : history - ; rhs_layout : internal - ; rhs_history : history - } - | Creation of creation_reason - - type t = - { layout : internal - ; history : history } - - let fresh_layout layout ~why = { layout; history = Creation why } - - (******************************) - (* constants *) - - let any_dummy_layout = - { layout = Any; history = Creation (Any_creation Dummy_layout) } - let value_v1_safety_check = - { layout = Sort Sort.value; - history = Creation (Value_creation V1_safety_check) } - - let any ~why = match why with - | Dummy_layout -> any_dummy_layout (* share this one common case *) - | _ -> fresh_layout Any ~why:(Any_creation why) - let void ~why = - fresh_layout (Sort Sort.void) ~why:(Void_creation why) - let value ~(why : value_creation_reason) = match why with - | V1_safety_check -> value_v1_safety_check - | _ -> fresh_layout (Sort Sort.value) ~why:(Value_creation why) - let immediate64 ~why = - fresh_layout Immediate64 ~why:(Immediate64_creation why) - let immediate ~why = - fresh_layout Immediate ~why:(Immediate_creation why) - let float64 ~why = - fresh_layout (Sort Sort.float64) ~why:(Float64_creation why) - - type const = Jane_asttypes.const_layout = - | Any - | Value - | Void - | Immediate64 - | Immediate - | Float64 - - let string_of_const : const -> _ = function - | Any -> "any" - | Value -> "value" - | Void -> "void" - | Immediate64 -> "immediate64" - | Immediate -> "immediate" - | Float64 -> "float64" - - let equal_const (c1 : const) (c2 : const) = match c1, c2 with - | Any, Any -> true - | Immediate64, Immediate64 -> true - | Immediate, Immediate -> true - | Void, Void -> true - | Value, Value -> true - | Float64, Float64 -> true - | (Any | Immediate64 | Immediate | Void | Value | Float64), _ -> false - - let sub_const (c1 : const) (c2 : const) = match c1, c2 with - | Any, Any -> Equal - | _, Any -> Sub - | c1, c2 when equal_const c1 c2 -> Equal - | (Immediate | Immediate64), Value -> Sub - | Immediate, Immediate64 -> Sub - | (Any | Void | Value | Immediate64 | Immediate | Float64), _ -> Not_sub - - (******************************) - (*** user errors ***) - type error = - | Insufficient_level of annotation_context * Jane_asttypes.const_layout - - exception User_error of Location.t * error - - let raise ~loc err = raise (User_error(loc, err)) - - (*** extension requirements ***) - let get_required_layouts_level - (context : annotation_context) (layout : const) : - Language_extension.maturity = - match context, layout with - | _, Value -> Stable - | _, (Immediate | Immediate64 | Any | Float64) -> Beta - | _, Void -> Alpha - - (******************************) - (* construction *) - - let of_new_sort_var ~why = - fresh_layout (Sort (Sort.new_var ())) ~why:(Concrete_creation why) - - let of_sort ~why s = - fresh_layout (Sort s) ~why:(Concrete_creation why) - - let of_const ~why : const -> t = function - | Any -> fresh_layout Any ~why - | Immediate -> fresh_layout Immediate ~why - | Immediate64 -> fresh_layout Immediate64 ~why - | Value -> fresh_layout (Sort Sort.value) ~why - | Void -> fresh_layout (Sort Sort.void) ~why - | Float64 -> fresh_layout (Sort Sort.float64) ~why - - (* CR layouts v1.5: remove legacy_immediate *) - let of_annotation ?(legacy_immediate=false) ~context Location.{ loc; txt = const } = - begin match const with - | Immediate | Immediate64 | Value when legacy_immediate -> () - | _ -> - let required_layouts_level = get_required_layouts_level context const in - if not (Language_extension.is_at_least Layouts required_layouts_level) - then raise ~loc (Insufficient_level (context, const)) - end; - of_const ~why:(Annotated (context, loc)) const - - let of_annotation_option ?legacy_immediate ~context = - Option.map (of_annotation ?legacy_immediate ~context) - - let of_annotation_option_default ?legacy_immediate ~default ~context = - Option.fold ~none:default ~some:(of_annotation ?legacy_immediate ~context) - - let of_attributes ~legacy_immediate ~context attrs = - Builtin_attributes.layout ~legacy_immediate attrs |> - Result.map (of_annotation_option ~legacy_immediate ~context) - - let of_attributes_default ~legacy_immediate ~context ~default attrs = - Builtin_attributes.layout ~legacy_immediate attrs |> - Result.map (of_annotation_option_default ~legacy_immediate ~default ~context) - - let for_boxed_record ~all_void = - if all_void then immediate ~why:Empty_record else value ~why:Boxed_record - - let for_boxed_variant ~all_voids = - if all_voids then immediate ~why:Enumeration else value ~why:Boxed_variant - - (******************************) - (* elimination and defaulting *) - - type desc = - | Const of const - | Var of Sort.var - - let format_desc ppf = let open Format in function - | Const c -> fprintf ppf "%s" (string_of_const c) - | Var v -> fprintf ppf "%s" (Sort.var_name v) - - (* considers sort variables < Any, but otherwise just checks for equality. - Never does mutation. - Pre-condition: no filled-in sort variables. *) - let sub_desc d1 d2 = match d1, d2 with - | Const c1, Const c2 -> sub_const c1 c2 - | Var _, Const Any -> Sub - | Var v1, Var v2 -> if v1 == v2 then Equal else Not_sub - | Const _, Var _ | Var _, Const _ -> Not_sub - - let get_internal (lay : internal) : desc = match lay with - | Any -> Const Any - | Immediate -> Const Immediate - | Immediate64 -> Const Immediate64 - | Sort s -> begin match Sort.get s with - (* NB: this match isn't as silly as it looks: those are - different constructors on the left than on the right *) - | Const Void -> Const Void - | Const Value -> Const Value - | Const Float64 -> Const Float64 - | Var v -> Var v - end - - let get_default_value (t : t) : const = match t.layout with - | Any -> Any - | Immediate -> Immediate - | Immediate64 -> Immediate64 - | Sort s -> begin match Sort.get_default_value s with - (* As above, this turns Sort.consts to Layout.consts *) - | Value -> Value - | Void -> Void - | Float64 -> Float64 - end - - let default_to_value t = ignore (get_default_value t) - - let get t = get_internal t.layout - - (* CR layouts: this function is suspect; it seems likely to reisenberg - that refactoring could get rid of it *) - let sort_of_layout l = - match get l with - | Const Void -> Sort.void - | Const (Value | Immediate | Immediate64) -> Sort.value - | Const Float64 -> Sort.float64 - | Const Any -> Misc.fatal_error "Layout.sort_of_layout" - | Var v -> Sort.of_var v - - (*********************************) - (* pretty printing *) - - let to_string lay = match get lay with - | Const c -> string_of_const c - | Var v -> Sort.var_name v - - let format ppf t = Format.fprintf ppf "%s" (to_string t) - - (***********************************) - (* layout histories *) + | Immediate + +(* A history of conditions placed on a jkind. + + INVARIANT: at most one sort variable appears in this history. + This is a natural consequence of producing this history by comparing + jkinds. +*) +type history = + | Interact of { reason : interact_reason + ; lhs_jkind : internal + ; lhs_history : history + ; rhs_jkind : internal + ; rhs_history : history + } + | Creation of creation_reason + +type t = + { jkind : internal + ; history : history } + +let fresh_jkind jkind ~why = { jkind; history = Creation why } + +(******************************) +(* constants *) + +let any_dummy_jkind = + { jkind = Any; history = Creation (Any_creation Dummy_jkind) } +let value_v1_safety_check = + { jkind = Sort Sort.value; + history = Creation (Value_creation V1_safety_check) } + +let any ~why = match why with + | Dummy_jkind -> any_dummy_jkind (* share this one common case *) + | _ -> fresh_jkind Any ~why:(Any_creation why) +let void ~why = + fresh_jkind (Sort Sort.void) ~why:(Void_creation why) +let value ~(why : value_creation_reason) = match why with + | V1_safety_check -> value_v1_safety_check + | _ -> fresh_jkind (Sort Sort.value) ~why:(Value_creation why) +let immediate64 ~why = + fresh_jkind Immediate64 ~why:(Immediate64_creation why) +let immediate ~why = + fresh_jkind Immediate ~why:(Immediate_creation why) +let float64 ~why = + fresh_jkind (Sort Sort.float64) ~why:(Float64_creation why) + +type const = Jane_asttypes.const_jkind = + | Any + | Value + | Void + | Immediate64 + | Immediate + | Float64 + +let string_of_const : const -> _ = function + | Any -> "any" + | Value -> "value" + | Void -> "void" + | Immediate64 -> "immediate64" + | Immediate -> "immediate" + | Float64 -> "float64" + +let equal_const (c1 : const) (c2 : const) = match c1, c2 with + | Any, Any -> true + | Immediate64, Immediate64 -> true + | Immediate, Immediate -> true + | Void, Void -> true + | Value, Value -> true + | Float64, Float64 -> true + | (Any | Immediate64 | Immediate | Void | Value | Float64), _ -> false + +let sub_const (c1 : const) (c2 : const) = match c1, c2 with + | Any, Any -> Equal + | _, Any -> Sub + | c1, c2 when equal_const c1 c2 -> Equal + | (Immediate | Immediate64), Value -> Sub + | Immediate, Immediate64 -> Sub + | (Any | Void | Value | Immediate64 | Immediate | Float64), _ -> Not_sub + +(******************************) +(*** user errors ***) +type error = + | Insufficient_level of annotation_context * Jane_asttypes.const_jkind + +exception User_error of Location.t * error + +let raise ~loc err = raise (User_error(loc, err)) + +(*** extension requirements ***) +let get_required_layouts_level + (context : annotation_context) (jkind : const) : + Language_extension.maturity = + match context, jkind with + | _, Value -> Stable + | _, (Immediate | Immediate64 | Any | Float64) -> Beta + | _, Void -> Alpha + +(******************************) +(* construction *) + +let of_new_sort_var ~why = + fresh_jkind (Sort (Sort.new_var ())) ~why:(Concrete_creation why) + +let of_sort ~why s = + fresh_jkind (Sort s) ~why:(Concrete_creation why) + +let of_const ~why : const -> t = function + | Any -> fresh_jkind Any ~why + | Immediate -> fresh_jkind Immediate ~why + | Immediate64 -> fresh_jkind Immediate64 ~why + | Value -> fresh_jkind (Sort Sort.value) ~why + | Void -> fresh_jkind (Sort Sort.void) ~why + | Float64 -> fresh_jkind (Sort Sort.float64) ~why + +(* CR layouts v1.5: remove legacy_immediate *) +let of_annotation ?(legacy_immediate=false) ~context Location.{ loc; txt = const } = + begin match const with + | Immediate | Immediate64 | Value when legacy_immediate -> () + | _ -> + let required_layouts_level = get_required_layouts_level context const in + if not (Language_extension.is_at_least Layouts required_layouts_level) + then raise ~loc (Insufficient_level (context, const)) + end; + of_const ~why:(Annotated (context, loc)) const + +let of_annotation_option ?legacy_immediate ~context = + Option.map (of_annotation ?legacy_immediate ~context) + +let of_annotation_option_default ?legacy_immediate ~default ~context = + Option.fold ~none:default ~some:(of_annotation ?legacy_immediate ~context) + +let of_attributes ~legacy_immediate ~context attrs = + Builtin_attributes.jkind ~legacy_immediate attrs |> + Result.map (of_annotation_option ~legacy_immediate ~context) + +let of_attributes_default ~legacy_immediate ~context ~default attrs = + Builtin_attributes.jkind ~legacy_immediate attrs |> + Result.map (of_annotation_option_default ~legacy_immediate ~default ~context) + +let for_boxed_record ~all_void = + if all_void then immediate ~why:Empty_record else value ~why:Boxed_record + +let for_boxed_variant ~all_voids = + if all_voids then immediate ~why:Enumeration else value ~why:Boxed_variant + +(******************************) +(* elimination and defaulting *) + +type desc = + | Const of const + | Var of Sort.var + +let format_desc ppf = let open Format in function + | Const c -> fprintf ppf "%s" (string_of_const c) + | Var v -> fprintf ppf "%s" (Sort.var_name v) + +(* considers sort variables < Any, but otherwise just checks for equality. + Never does mutation. + Pre-condition: no filled-in sort variables. *) +let sub_desc d1 d2 = match d1, d2 with + | Const c1, Const c2 -> sub_const c1 c2 + | Var _, Const Any -> Sub + | Var v1, Var v2 -> if v1 == v2 then Equal else Not_sub + | Const _, Var _ | Var _, Const _ -> Not_sub + +let get_internal (lay : internal) : desc = match lay with + | Any -> Const Any + | Immediate -> Const Immediate + | Immediate64 -> Const Immediate64 + | Sort s -> begin match Sort.get s with + (* NB: this match isn't as silly as it looks: those are + different constructors on the left than on the right *) + | Const Void -> Const Void + | Const Value -> Const Value + | Const Float64 -> Const Float64 + | Var v -> Var v + end - let printtyp_path = ref (fun _ _ -> assert false) - let set_printtyp_path f = printtyp_path := f +let get_default_value (t : t) : const = match t.jkind with + | Any -> Any + | Immediate -> Immediate + | Immediate64 -> Immediate64 + | Sort s -> begin match Sort.get_default_value s with + (* As above, this turns Sort.consts to Jkind.consts *) + | Value -> Value + | Void -> Void + | Float64 -> Float64 + end - module Report_missing_cmi : sig - (* used both in format_history and in Violation.report_general *) - val report_missing_cmi : Format.formatter -> Path.t option -> unit - end = struct - open Format +let default_to_value t = ignore (get_default_value t) + +let get t = get_internal t.jkind + +(* CR layouts: this function is suspect; it seems likely to reisenberg + that refactoring could get rid of it *) +let sort_of_jkind l = + match get l with + | Const Void -> Sort.void + | Const (Value | Immediate | Immediate64) -> Sort.value + | Const Float64 -> Sort.float64 + | Const Any -> Misc.fatal_error "Jkind.sort_of_jkind" + | Var v -> Sort.of_var v + +(*********************************) +(* pretty printing *) + +let to_string lay = match get lay with + | Const c -> string_of_const c + | Var v -> Sort.var_name v + +let format ppf t = Format.fprintf ppf "%s" (to_string t) + +(***********************************) +(* jkind histories *) + +let printtyp_path = ref (fun _ _ -> assert false) +let set_printtyp_path f = printtyp_path := f + +module Report_missing_cmi : sig + (* used both in format_history and in Violation.report_general *) + val report_missing_cmi : Format.formatter -> Path.t option -> unit +end = struct + open Format + + (* CR layouts: Remove this horrible (but useful) heuristic once we have + transitive dependencies in jenga. *) + let missing_cmi_hint ppf type_path = + let root_module_name p = p |> Path.head |> Ident.name in + let delete_trailing_double_underscore s = + if Misc.Stdlib.String.ends_with ~suffix:"__" s + then String.sub s 0 (String.length s - 2) + else s + in + (* A heuristic for guessing at a plausible library name for an identifier + with a missing .cmi file; definitely less likely to be right outside of + Jane Street. *) + let guess_library_name : Path.t -> string option = function + | Pdot _ as p -> Some begin + match root_module_name p with + | "Location" | "Longident" -> "ocamlcommon" + | mn -> mn + |> String.lowercase_ascii + |> delete_trailing_double_underscore + end + | Pident _ | Papply _ -> + None + in + Option.iter + (fprintf ppf "@,Hint: Adding \"%s\" to your dependencies might help.") + (guess_library_name type_path) + + let report_missing_cmi ppf = function + | Some p -> + fprintf ppf "@,No .cmi file found containing %a." !printtyp_path p; + missing_cmi_hint ppf p + | None -> () +end - (* CR layouts: Remove this horrible (but useful) heuristic once we have - transitive dependencies in jenga. *) - let missing_cmi_hint ppf type_path = - let root_module_name p = p |> Path.head |> Ident.name in - let delete_trailing_double_underscore s = - if Misc.Stdlib.String.ends_with ~suffix:"__" s - then String.sub s 0 (String.length s - 2) - else s - in - (* A heuristic for guessing at a plausible library name for an identifier - with a missing .cmi file; definitely less likely to be right outside of - Jane Street. *) - let guess_library_name : Path.t -> string option = function - | Pdot _ as p -> Some begin - match root_module_name p with - | "Location" | "Longident" -> "ocamlcommon" - | mn -> mn - |> String.lowercase_ascii - |> delete_trailing_double_underscore +include Report_missing_cmi + +(* CR layouts: should this be configurable? In the meantime, you + may want to change these to experiment / debug. *) + +(* should we print histories at all? *) +let display_histories = false + +(* should we print histories in a way users can understand? + The alternative is to print out all the data, which may be useful + during debugging. *) +let flattened_histories = true + +(* This module is just to keep all the helper functions more locally + scoped. *) +module Format_history : sig + val format_history : + intro:(Format.formatter -> unit) -> Format.formatter -> t -> unit +end = struct + (* CR layouts: all the output in this section is subject to change; + actually look closely at error messages once this is activated *) + + open Format + + let format_concrete_jkind_reason ppf : concrete_jkind_reason -> unit = + function + | Match -> + fprintf ppf "matched on" + | Constructor_declaration idx -> + fprintf ppf "used as constructor field %d" idx + | Label_declaration lbl -> + fprintf ppf "used in the declaration of the record field \"%a\"" + Ident.print lbl + | Unannotated_type_parameter -> + fprintf ppf "appears as an unannotated type parameter" + | Record_projection -> + fprintf ppf "used as the record in a projection" + | Record_assignment -> + fprintf ppf "used as the record in an assignment" + | Let_binding -> + fprintf ppf "bound by a `let`" + | Function_argument -> + fprintf ppf "used as a function argument" + | Function_result -> + fprintf ppf "used as a function result" + | Structure_item_expression -> + fprintf ppf "used in an expression in a structure" + | V1_safety_check -> + fprintf ppf "part of the v1 safety check" + | External_argument -> + fprintf ppf "used as an argument in an external declaration" + | External_result -> + fprintf ppf "used as the result of an external declaration" + | Statement -> + fprintf ppf "used as a statement" + + let format_annotation_context ppf : annotation_context -> unit = function + | Type_declaration p -> + fprintf ppf "the declaration of the type %a" + !printtyp_path p + | Type_parameter (path, var) -> + let var_string = match var with None -> "_" | Some v -> "'" ^ v in + fprintf ppf "@[%s@ in the declaration of the type@ %a@]" + var_string + !printtyp_path path + | With_constraint s -> + fprintf ppf "the `with` constraint for %s" s + | Newtype_declaration name -> + fprintf ppf "the abstract type declaration for %s" + name + | Constructor_type_parameter (cstr, name) -> + fprintf ppf "@[%s@ in the declaration of constructor@ %a@]" + name + !printtyp_path cstr + | Univar name -> + fprintf ppf "the universal variable %s" + name + | Type_variable name -> + fprintf ppf "the type variable %s" name + | Type_wildcard loc -> + fprintf ppf "the wildcard _ at %a" Location.print_loc loc + + let format_any_creation_reason ppf : any_creation_reason -> unit = function + | Missing_cmi p -> + fprintf ppf "a missing .cmi file for %a" !printtyp_path p + | Wildcard -> + fprintf ppf "a _ in a type" + | Unification_var -> + fprintf ppf "a fresh unification variable" + | Initial_typedecl_env -> + fprintf ppf "a dummy layout used in checking mutually recursive datatypes" + | Dummy_jkind -> + fprintf ppf "@[a dummy layout that should have been overwritten;@ \ + Please notify the Jane Street compilers group if you see this output." + (* CR layouts: Improve output or remove this constructor ^^ *) + | Type_expression_call -> + fprintf ppf "a call to [type_expression] via the ocaml API" + + let format_immediate_creation_reason ppf : immediate_creation_reason -> _ = + function + | Empty_record -> + fprintf ppf "a record containing all void elements" + | Enumeration -> + fprintf ppf "an enumeration variant (all constructors are constant)" + | Primitive id -> + fprintf ppf "it equals the primitive immediate type %s" (Ident.name id) + | Immediate_polymorphic_variant -> + fprintf ppf "an immediate polymorphic variant" + | Gc_ignorable_check -> + fprintf ppf "the check to see whether a value can be ignored by GC" + | Value_kind -> + fprintf ppf + "the check to see whether a polymorphic variant is immediate" + + let format_immediate64_creation_reason ppf = function + | Local_mode_cross_check -> + fprintf ppf "the check for whether a local value can safely escape" + | Gc_ignorable_check -> + fprintf ppf "the check to see whether a value can be ignored by GC" + | Separability_check -> + fprintf ppf "the check that a type is definitely not `float`" + + let format_value_creation_reason ppf : value_creation_reason -> _ = function + | Class_let_binding -> fprintf ppf "let-bound in a class expression" + | Tuple_element -> fprintf ppf "a tuple element" + | Probe -> fprintf ppf "a probe" + | Package_hack -> fprintf ppf "used as an element in a first-class module" + | Object -> fprintf ppf "an object" + | Instance_variable -> fprintf ppf "an instance variable" + | Object_field -> fprintf ppf "an object field" + | Class_field -> fprintf ppf "an class field" + | Boxed_record -> fprintf ppf "a boxed record" + | Boxed_variant -> fprintf ppf "a boxed variant" + | Extensible_variant -> fprintf ppf "an extensible variant" + | Primitive id -> + fprintf ppf "it equals the primitive value type %s" (Ident.name id) + | Type_argument -> fprintf ppf "a type argument defaulted to have layout value" + | Tuple -> fprintf ppf "a tuple type" + | Row_variable -> fprintf ppf "a row variable" + | Polymorphic_variant -> fprintf ppf "a polymorphic variant" + | Arrow -> fprintf ppf "a function type" + | Tfield -> fprintf ppf "an internal Tfield type (you shouldn't see this)" + | Tnil -> fprintf ppf "an internal Tnil type (you shouldn't see this)" + | First_class_module -> fprintf ppf "a first-class module type" + | Separability_check -> + fprintf ppf "the check that a type is definitely not `float`" + | Univar -> fprintf ppf "an unannotated universal variable" + | Polymorphic_variant_field -> fprintf ppf "a field of a polymorphic variant" + | Default_type_jkind -> + fprintf ppf "the default layout for an abstract type" + | Float_record_field -> + fprintf ppf "a field of a float record" + | Existential_type_variable -> + fprintf ppf "an unannotated existential type variable" + | Array_element -> + fprintf ppf "an array element" + | Lazy_expression -> + fprintf ppf "a lazy expression" + | Class_argument -> + fprintf ppf "a term-level argument to a class constructor" + | Structure_element -> + fprintf ppf "stored in a module structure" + | Debug_printer_argument -> + fprintf ppf "used as the argument to a debugger printer function" + | V1_safety_check -> + fprintf ppf "to be value for the V1 safety check" + | Captured_in_object -> fprintf ppf "captured in an object" + | Unknown s -> fprintf ppf "unknown @[(please alert the Jane Street@;\ + compilers team with this message: %s)@]" s + + + let format_void_creation_reason ppf : void_creation_reason -> _ = function + | V1_safety_check -> fprintf ppf "check to make sure there are no voids" + (* CR layouts: remove this when we remove its uses *) + + let format_float64_creation_reason ppf : float64_creation_reason -> _ = function + | Primitive id -> + fprintf ppf "it equals the primitive value type %s" (Ident.name id) + + let format_creation_reason ppf : creation_reason -> unit = function + | Annotated (ctx, _) -> + fprintf ppf "of the annotation on %a" format_annotation_context ctx + | Any_creation any -> + format_any_creation_reason ppf any + | Immediate_creation immediate -> + format_immediate_creation_reason ppf immediate + | Immediate64_creation immediate64 -> + format_immediate64_creation_reason ppf immediate64 + | Void_creation void -> + format_void_creation_reason ppf void + | Value_creation value -> + format_value_creation_reason ppf value + | Float64_creation float -> + format_float64_creation_reason ppf float + | Concrete_creation concrete -> + format_concrete_jkind_reason ppf concrete + | Imported -> + fprintf ppf "imported from another compilation unit" + + let format_interact_reason ppf = function + | Gadt_equation name -> + fprintf ppf "a GADT match on the constructor %a" !printtyp_path name + | Tyvar_refinement_intersection -> + fprintf ppf "updating a type variable" + | Subjkind -> + fprintf ppf "sublayout check" + + (* a flattened_history describes the history of a jkind L. That + jkind has been constrained to be a subjkind of jkinds L1..Ln. + Each element in a flattened_history includes a jkind desc Li and the + set of circumstances that gave rise to a constraint of that jkind. + Any jkinds Lk such that an Li < Lk doesn't contribute to the choice + of L and is thus omitted from a flattened_history. + + INVARIANT: the creation_reasons within a list all are reasons for + the jkind they are paired with. + INVARIANT: L is a subjkind of all the Li in a flattened_history. + INVARIANT: If Li and Lj are stored in different entries in a + flattened_history, then not (Li <= Lj) and not (Lj <= Li). + This implies that no two elements in a flattened_history have the + same jkind in them. + INVARIANT: no list in this structure is empty + + Both levels of list are unordered. + + Because a flattened_history stores [desc]s, it should be discarded + promptly after use. + + This type could be more efficient in several ways, but there is + little incentive to do so. *) + type flattened_row = desc * creation_reason list + type flattened_history = flattened_row list + + (* first arg is the jkind L whose history we are flattening *) + let flatten_history : internal -> history -> flattened_history = + let add jkind reason = + let jkind_desc = get_internal jkind in + let rec go acc = function + | ((key, value) as row) :: rest -> + begin match sub_desc jkind_desc key with + | Sub -> go acc rest + | Equal -> (key, reason :: value) :: acc @ rest + | Not_sub -> go (row :: acc) rest end - | Pident _ | Papply _ -> - None + | [] -> (jkind_desc, [reason]) :: acc in - Option.iter - (fprintf ppf "@,Hint: Adding \"%s\" to your dependencies might help.") - (guess_library_name type_path) - - let report_missing_cmi ppf = function - | Some p -> - fprintf ppf "@,No .cmi file found containing %a." !printtyp_path p; - missing_cmi_hint ppf p - | None -> () - end - - include Report_missing_cmi - - (* CR layouts: should this be configurable? In the meantime, you - may want to change these to experiment / debug. *) - - (* should we print histories at all? *) - let display_histories = false - - (* should we print histories in a way users can understand? - The alternative is to print out all the data, which may be useful - during debugging. *) - let flattened_histories = true - - (* This module is just to keep all the helper functions more locally - scoped. *) - module Format_history : sig - val format_history : - intro:(Format.formatter -> unit) -> Format.formatter -> t -> unit - end = struct - (* CR layouts: all the output in this section is subject to change; - actually look closely at error messages once this is activated *) - - open Format + go [] + in + let rec history acc internal = function + | Interact { reason = _ + ; lhs_jkind + ; lhs_history + ; rhs_jkind + ; rhs_history } -> + let fh1 = history acc lhs_jkind lhs_history in + let fh2 = history fh1 rhs_jkind rhs_history in + fh2 + | Creation reason -> + add internal reason acc + in + fun internal hist -> + history [] internal hist - let format_concrete_layout_reason ppf : concrete_layout_reason -> unit = - function - | Match -> - fprintf ppf "matched on" - | Constructor_declaration idx -> - fprintf ppf "used as constructor field %d" idx - | Label_declaration lbl -> - fprintf ppf "used in the declaration of the record field \"%a\"" - Ident.print lbl - | Unannotated_type_parameter -> - fprintf ppf "appears as an unannotated type parameter" - | Record_projection -> - fprintf ppf "used as the record in a projection" - | Record_assignment -> - fprintf ppf "used as the record in an assignment" - | Let_binding -> - fprintf ppf "bound by a `let`" - | Function_argument -> - fprintf ppf "used as a function argument" - | Function_result -> - fprintf ppf "used as a function result" - | Structure_item_expression -> - fprintf ppf "used in an expression in a structure" - | V1_safety_check -> - fprintf ppf "part of the v1 safety check" - | External_argument -> - fprintf ppf "used as an argument in an external declaration" - | External_result -> - fprintf ppf "used as the result of an external declaration" - | Statement -> - fprintf ppf "used as a statement" - - let format_annotation_context ppf : annotation_context -> unit = function - | Type_declaration p -> - fprintf ppf "the declaration of the type %a" - !printtyp_path p - | Type_parameter (path, var) -> - let var_string = match var with None -> "_" | Some v -> "'" ^ v in - fprintf ppf "@[%s@ in the declaration of the type@ %a@]" - var_string - !printtyp_path path - | With_constraint s -> - fprintf ppf "the `with` constraint for %s" s - | Newtype_declaration name -> - fprintf ppf "the abstract type declaration for %s" - name - | Constructor_type_parameter (cstr, name) -> - fprintf ppf "@[%s@ in the declaration of constructor@ %a@]" - name - !printtyp_path cstr - | Univar name -> - fprintf ppf "the universal variable %s" - name - | Type_variable name -> - fprintf ppf "the type variable %s" name - | Type_wildcard loc -> - fprintf ppf "the wildcard _ at %a" Location.print_loc loc - - let format_any_creation_reason ppf : any_creation_reason -> unit = function - | Missing_cmi p -> - fprintf ppf "a missing .cmi file for %a" !printtyp_path p - | Wildcard -> - fprintf ppf "a _ in a type" - | Unification_var -> - fprintf ppf "a fresh unification variable" - | Initial_typedecl_env -> - fprintf ppf "a dummy layout used in checking mutually recursive datatypes" - | Dummy_layout -> - fprintf ppf "@[a dummy layout that should have been overwritten;@ \ - Please notify the Jane Street compilers group if you see this output." - (* CR layouts: Improve output or remove this constructor ^^ *) - | Type_expression_call -> - fprintf ppf "a call to [type_expression] via the ocaml API" - - let format_immediate_creation_reason ppf : immediate_creation_reason -> _ = - function - | Empty_record -> - fprintf ppf "a record containing all void elements" - | Enumeration -> - fprintf ppf "an enumeration variant (all constructors are constant)" - | Primitive id -> - fprintf ppf "it equals the primitive immediate type %s" (Ident.name id) - | Immediate_polymorphic_variant -> - fprintf ppf "an immediate polymorphic variant" - | Gc_ignorable_check -> - fprintf ppf "the check to see whether a value can be ignored by GC" - | Value_kind -> - fprintf ppf - "the check to see whether a polymorphic variant is immediate" - - let format_immediate64_creation_reason ppf = function - | Local_mode_cross_check -> - fprintf ppf "the check for whether a local value can safely escape" - | Gc_ignorable_check -> - fprintf ppf "the check to see whether a value can be ignored by GC" - | Separability_check -> - fprintf ppf "the check that a type is definitely not `float`" - - let format_value_creation_reason ppf : value_creation_reason -> _ = function - | Class_let_binding -> fprintf ppf "let-bound in a class expression" - | Tuple_element -> fprintf ppf "a tuple element" - | Probe -> fprintf ppf "a probe" - | Package_hack -> fprintf ppf "used as an element in a first-class module" - | Object -> fprintf ppf "an object" - | Instance_variable -> fprintf ppf "an instance variable" - | Object_field -> fprintf ppf "an object field" - | Class_field -> fprintf ppf "an class field" - | Boxed_record -> fprintf ppf "a boxed record" - | Boxed_variant -> fprintf ppf "a boxed variant" - | Extensible_variant -> fprintf ppf "an extensible variant" - | Primitive id -> - fprintf ppf "it equals the primitive value type %s" (Ident.name id) - | Type_argument -> fprintf ppf "a type argument defaulted to have layout value" - | Tuple -> fprintf ppf "a tuple type" - | Row_variable -> fprintf ppf "a row variable" - | Polymorphic_variant -> fprintf ppf "a polymorphic variant" - | Arrow -> fprintf ppf "a function type" - | Tfield -> fprintf ppf "an internal Tfield type (you shouldn't see this)" - | Tnil -> fprintf ppf "an internal Tnil type (you shouldn't see this)" - | First_class_module -> fprintf ppf "a first-class module type" - | Separability_check -> - fprintf ppf "the check that a type is definitely not `float`" - | Univar -> fprintf ppf "an unannotated universal variable" - | Polymorphic_variant_field -> fprintf ppf "a field of a polymorphic variant" - | Default_type_layout -> - fprintf ppf "the default layout for an abstract type" - | Float_record_field -> - fprintf ppf "a field of a float record" - | Existential_type_variable -> - fprintf ppf "an unannotated existential type variable" - | Array_element -> - fprintf ppf "an array element" - | Lazy_expression -> - fprintf ppf "a lazy expression" - | Class_argument -> - fprintf ppf "a term-level argument to a class constructor" - | Structure_element -> - fprintf ppf "stored in a module structure" - | Debug_printer_argument -> - fprintf ppf "used as the argument to a debugger printer function" - | V1_safety_check -> - fprintf ppf "to be value for the V1 safety check" - | Captured_in_object -> fprintf ppf "captured in an object" - | Unknown s -> fprintf ppf "unknown @[(please alert the Jane Street@;\ - compilers team with this message: %s)@]" s - - - let format_void_creation_reason ppf : void_creation_reason -> _ = function - | V1_safety_check -> fprintf ppf "check to make sure there are no voids" - (* CR layouts: remove this when we remove its uses *) - - let format_float64_creation_reason ppf : float64_creation_reason -> _ = function - | Primitive id -> - fprintf ppf "it equals the primitive value type %s" (Ident.name id) - - let format_creation_reason ppf : creation_reason -> unit = function - | Annotated (ctx, _) -> - fprintf ppf "of the annotation on %a" format_annotation_context ctx - | Any_creation any -> - format_any_creation_reason ppf any - | Immediate_creation immediate -> - format_immediate_creation_reason ppf immediate - | Immediate64_creation immediate64 -> - format_immediate64_creation_reason ppf immediate64 - | Void_creation void -> - format_void_creation_reason ppf void - | Value_creation value -> - format_value_creation_reason ppf value - | Float64_creation float -> - format_float64_creation_reason ppf float - | Concrete_creation concrete -> - format_concrete_layout_reason ppf concrete - | Imported -> - fprintf ppf "imported from another compilation unit" - - let format_interact_reason ppf = function - | Gadt_equation name -> - fprintf ppf "a GADT match on the constructor %a" !printtyp_path name - | Tyvar_refinement_intersection -> - fprintf ppf "updating a type variable" - | Sublayout -> - fprintf ppf "sublayout check" - - (* a flattened_history describes the history of a layout L. That - layout has been constrained to be a sublayout of layouts L1..Ln. - Each element in a flattened_history includes a layout desc Li and the - set of circumstances that gave rise to a constraint of that layout. - Any layouts Lk such that an Li < Lk doesn't contribute to the choice - of L and is thus omitted from a flattened_history. - - INVARIANT: the creation_reasons within a list all are reasons for - the layout they are paired with. - INVARIANT: L is a sublayout of all the Li in a flattened_history. - INVARIANT: If Li and Lj are stored in different entries in a - flattened_history, then not (Li <= Lj) and not (Lj <= Li). - This implies that no two elements in a flattened_history have the - same layout in them. - INVARIANT: no list in this structure is empty - - Both levels of list are unordered. - - Because a flattened_history stores [desc]s, it should be discarded - promptly after use. - - This type could be more efficient in several ways, but there is - little incentive to do so. *) - type flattened_row = desc * creation_reason list - type flattened_history = flattened_row list - - (* first arg is the layout L whose history we are flattening *) - let flatten_history : internal -> history -> flattened_history = - let add layout reason = - let layout_desc = get_internal layout in - let rec go acc = function - | ((key, value) as row) :: rest -> - begin match sub_desc layout_desc key with - | Sub -> go acc rest - | Equal -> (key, reason :: value) :: acc @ rest - | Not_sub -> go (row :: acc) rest - end - | [] -> (layout_desc, [reason]) :: acc - in - go [] - in - let rec history acc internal = function - | Interact { reason = _ - ; lhs_layout - ; lhs_history - ; rhs_layout - ; rhs_history } -> - let fh1 = history acc lhs_layout lhs_history in - let fh2 = history fh1 rhs_layout rhs_history in - fh2 - | Creation reason -> - add internal reason acc - in - fun internal hist -> - history [] internal hist - - let format_flattened_row ppf (lay, reasons) = - fprintf ppf "%a, because" format_desc lay; - match reasons with - | [reason] -> fprintf ppf "@ %a." format_creation_reason reason - | _ -> - fprintf ppf " all of the following:@ @[ %a@]" - (pp_print_list format_creation_reason) reasons - - let format_flattened_history ~intro ppf t = - let fh = flatten_history t.layout t.history in - fprintf ppf "@[%t " intro; - begin match fh with - | [row] -> format_flattened_row ppf row - | _ -> fprintf ppf "a sublayout of all of the following:@ @[ %a@]" - (pp_print_list format_flattened_row) fh - end; - fprintf ppf "@]@;" - - (* this isn't really formatted for user consumption *) - let format_history_tree ~intro ppf t = - let rec in_order ppf = function - | Interact { reason; lhs_history; rhs_history } -> - fprintf ppf "@[ %a@]@;%a@ @[ %a@]" - in_order lhs_history - format_interact_reason reason - in_order rhs_history - | Creation c -> - format_creation_reason ppf c - in - fprintf ppf "@;%t has this layout history:@;@[ %a@]" - intro - in_order t.history - - let format_history ~intro ppf t = - if display_histories then begin - if flattened_histories - then format_flattened_history ~intro ppf t - else format_history_tree ~intro ppf t - end - end + let format_flattened_row ppf (lay, reasons) = + fprintf ppf "%a, because" format_desc lay; + match reasons with + | [reason] -> fprintf ppf "@ %a." format_creation_reason reason + | _ -> + fprintf ppf " all of the following:@ @[ %a@]" + (pp_print_list format_creation_reason) reasons + + let format_flattened_history ~intro ppf t = + let fh = flatten_history t.jkind t.history in + fprintf ppf "@[%t " intro; + begin match fh with + | [row] -> format_flattened_row ppf row + | _ -> fprintf ppf "a sublayout of all of the following:@ @[ %a@]" + (pp_print_list format_flattened_row) fh + end; + fprintf ppf "@]@;" + + (* this isn't really formatted for user consumption *) + let format_history_tree ~intro ppf t = + let rec in_order ppf = function + | Interact { reason; lhs_history; rhs_history } -> + fprintf ppf "@[ %a@]@;%a@ @[ %a@]" + in_order lhs_history + format_interact_reason reason + in_order rhs_history + | Creation c -> + format_creation_reason ppf c + in + fprintf ppf "@;%t has this layout history:@;@[ %a@]" + intro + in_order t.history + + let format_history ~intro ppf t = + if display_histories then begin + if flattened_histories + then format_flattened_history ~intro ppf t + else format_history_tree ~intro ppf t + end +end - include Format_history +include Format_history - (******************************) - (* errors *) +(******************************) +(* errors *) - module Violation = struct - open Format +module Violation = struct + open Format - type violation = - | Not_a_sublayout of t * t - | No_intersection of t * t + type violation = + | Not_a_subjkind of t * t + | No_intersection of t * t - type nonrec t = { violation : violation - ; missing_cmi : Path.t option } - (* [missing_cmi]: is this error a result of a missing cmi file? - This is stored separately from the [violation] because it's - used to change the behavior of [value_kind], and we don't - want that function to inspect something that is purely about - the choice of error message. (Though the [Path.t] payload *is* - indeed just about the payload.) *) + type nonrec t = { violation : violation + ; missing_cmi : Path.t option } + (* [missing_cmi]: is this error a result of a missing cmi file? + This is stored separately from the [violation] because it's + used to change the behavior of [value_kind], and we don't + want that function to inspect something that is purely about + the choice of error message. (Though the [Path.t] payload *is* + indeed just about the payload.) *) - let of_ violation = { violation; missing_cmi = None } + let of_ violation = { violation; missing_cmi = None } - let record_missing_cmi ~missing_cmi_for t = { t with missing_cmi = Some missing_cmi_for } + let record_missing_cmi ~missing_cmi_for t = { t with missing_cmi = Some missing_cmi_for } - let is_missing_cmi { missing_cmi } = Option.is_some missing_cmi + let is_missing_cmi { missing_cmi } = Option.is_some missing_cmi - let report_general preamble pp_former former ppf t = - let sublayout_format verb l2 = match get l2 with - | Var _ -> dprintf "%s representable" verb - | Const _ -> dprintf "%s a sublayout of %a" verb format l2 - in - let l1, l2, fmt_l1, fmt_l2, missing_cmi_option = match t with - | { violation = Not_a_sublayout(l1, l2); missing_cmi } -> - begin match missing_cmi with - | None -> - l1, l2, - dprintf "layout %a" format l1, - sublayout_format "is not" l2, None - | Some p -> - l1, l2, - dprintf "an unknown layout", - sublayout_format "might not be" l2, Some p - end - | { violation = No_intersection(l1, l2); missing_cmi } -> - assert (Option.is_none missing_cmi); + let report_general preamble pp_former former ppf t = + let subjkind_format verb l2 = match get l2 with + | Var _ -> dprintf "%s representable" verb + | Const _ -> dprintf "%s a sublayout of %a" verb format l2 + in + let l1, l2, fmt_l1, fmt_l2, missing_cmi_option = match t with + | { violation = Not_a_subjkind(l1, l2); missing_cmi } -> + begin match missing_cmi with + | None -> l1, l2, dprintf "layout %a" format l1, - dprintf "does not overlap with %a" format l2, None + subjkind_format "is not" l2, None + | Some p -> + l1, l2, + dprintf "an unknown layout", + subjkind_format "might not be" l2, Some p + end + | { violation = No_intersection(l1, l2); missing_cmi } -> + assert (Option.is_none missing_cmi); + l1, l2, + dprintf "layout %a" format l1, + dprintf "does not overlap with %a" format l2, None + in + if display_histories then begin + let connective = match t.violation with + | Not_a_subjkind _ -> "be a sublayout of" + | No_intersection _ -> "overlap with" in - if display_histories then begin - let connective = match t.violation with - | Not_a_sublayout _ -> "be a sublayout of" - | No_intersection _ -> "overlap with" - in - fprintf ppf "%a%a" - (format_history ~intro:(dprintf "The layout of %a is" pp_former former)) l1 - (format_history ~intro:(dprintf "But the layout of %a must %s" pp_former former connective)) l2; - end else begin - fprintf ppf "@[%s%a has %t,@ which %t.@]" - preamble - pp_former former - fmt_l1 - fmt_l2 - end; - report_missing_cmi ppf missing_cmi_option - - let pp_t ppf x = fprintf ppf "%t" x - - let report_with_offender ~offender = - report_general "" pp_t offender - - let report_with_offender_sort ~offender = - report_general "A representable layout was expected, but " pp_t offender - - let report_with_name ~name = - report_general "" pp_print_string name - end + fprintf ppf "%a%a" + (format_history ~intro:(dprintf "The layout of %a is" pp_former former)) l1 + (format_history ~intro:(dprintf "But the layout of %a must %s" pp_former former connective)) l2; + end else begin + fprintf ppf "@[%s%a has %t,@ which %t.@]" + preamble + pp_former former + fmt_l1 + fmt_l2 + end; + report_missing_cmi ppf missing_cmi_option - (******************************) - (* relations *) - - let equate_or_equal ~allow_mutation (l1 : t) (l2 : t) = - match l1.layout, l2.layout with - | Any, Any -> true - | Immediate64, Immediate64 -> true - | Immediate, Immediate -> true - | Sort s1, Sort s2 -> begin - match Sort.equate_tracking_mutation s1 s2 with - | (Equal_mutated_first | Equal_mutated_second) - when not allow_mutation -> - Misc.fatal_errorf - "Layouts.Layout.equal: Performed unexpected mutation" - | Unequal -> false - | Equal_no_mutation | Equal_mutated_first | Equal_mutated_second -> true - end - | (Any | Immediate64 | Immediate | Sort _), _ -> false - - (* CR layouts v2.8: Switch this back to ~allow_mutation:false *) - let equal = equate_or_equal ~allow_mutation:true - - let equate = equate_or_equal ~allow_mutation:true - - let combine_histories reason lhs rhs = - Interact { reason; lhs_layout = lhs.layout; lhs_history = lhs.history; - rhs_layout = rhs.layout; rhs_history = rhs.history } - - let intersection ~reason l1 l2 = - match l1.layout, l2.layout with - (* only update the history when something interesting happens; e.g. - finding the intersection between a sublayout and its superlayout - is not interesting *) - | _, Any -> Ok l1 - | Any, _ -> Ok l2 - | (Immediate, Immediate) | (Immediate64, Immediate64) -> - Ok { l1 with history = combine_histories reason l1 l2 } - | Immediate, Immediate64 -> Ok l1 - | Immediate64, Immediate -> Ok l2 - | (Immediate | Immediate64), Sort s -> - if Sort.equate s Sort.value - then Ok l1 - else Error (Violation.of_ (No_intersection (l1, l2))) - | Sort s, (Immediate | Immediate64) -> - if Sort.equate s Sort.value - then Ok l2 - else Error (Violation.of_ (No_intersection (l1, l2))) - | Sort s1, Sort s2 -> - if Sort.equate s1 s2 - then Ok { l1 with history = combine_histories reason l1 l2 } - else Error (Violation.of_ (No_intersection (l1, l2))) - - (* this is hammered on; it must be fast! *) - let check_sub sub super : sub_result = - match sub.layout, super.layout with - (* don't use [get], because that allocates *) - | Any, Any -> Equal - | _, Any -> Sub - | Immediate, Immediate -> Equal - | Immediate64, Immediate64 -> Equal - | Immediate, Immediate64 -> Sub - | Immediate64, Immediate -> Not_sub - | (Immediate | Immediate64), Sort s -> - if Sort.equate s Sort.value then Sub else Not_sub - | Sort s1, Sort s2 -> - if Sort.equate s1 s2 then Equal else Not_sub - | Any, _ -> Not_sub - | Sort _, (Immediate | Immediate64) -> Not_sub - - let sub sub super = match check_sub sub super with - | Sub | Equal -> Ok () - | Not_sub -> Error (Violation.of_ (Not_a_sublayout (sub, super))) - - let sub_with_history sub super = match check_sub sub super with - | Sub | Equal -> - Ok { sub with history = combine_histories Sublayout sub super } - | Not_sub -> Error (Violation.of_ (Not_a_sublayout (sub, super))) - - let is_void_defaulting = function - | { layout = Sort s } -> Sort.is_void_defaulting s - | _ -> false - - let is_any = function - | { layout = Any } -> true - | _ -> false - - (*********************************) - (* debugging *) + let pp_t ppf x = fprintf ppf "%t" x - module Debug_printers = struct - open Format + let report_with_offender ~offender = + report_general "" pp_t offender - let internal ppf : internal -> unit = function - | Any -> fprintf ppf "Any" - | Sort s -> fprintf ppf "Sort %a" Sort.Debug_printers.t s - | Immediate64 -> fprintf ppf "Immediate64" - | Immediate -> fprintf ppf "Immediate" - - let concrete_layout_reason ppf : concrete_layout_reason -> unit = function - | Match -> - fprintf ppf "Match" - | Constructor_declaration idx -> - fprintf ppf "Constructor_declaration %d" idx - | Label_declaration lbl -> - fprintf ppf "Label_declaration %a" Ident.print lbl - | Unannotated_type_parameter -> - fprintf ppf "Unannotated_type_parameter" - | Record_projection -> - fprintf ppf "Record_projection" - | Record_assignment -> - fprintf ppf "Record_assignment" - | Let_binding -> - fprintf ppf "Let_binding" - | Function_argument -> - fprintf ppf "Function_argument" - | Function_result -> - fprintf ppf "Function_result" - | Structure_item_expression -> - fprintf ppf "Structure_item_expression" - | V1_safety_check -> - fprintf ppf "V1_safety_check" - | External_argument -> - fprintf ppf "External_argument" - | External_result -> - fprintf ppf "External_result" - | Statement -> - fprintf ppf "Statement" - - let annotation_context ppf : annotation_context -> unit = function - | Type_declaration p -> - fprintf ppf "Type_declaration %a" Path.print p - | Type_parameter (p, var) -> - fprintf ppf "Type_parameter (%a, %a)" - Path.print p - (Misc.Stdlib.Option.print Misc.Stdlib.String.print) var - | With_constraint s -> - fprintf ppf "With_constraint %S" s - | Newtype_declaration name -> - fprintf ppf "Newtype_declaration %s" name - | Constructor_type_parameter (cstr, name) -> - fprintf ppf "Constructor_type_parameter (%a, %S)" Path.print cstr name - | Univar name -> - fprintf ppf "Univar %S" name - | Type_variable name -> - fprintf ppf "Type_variable %S" name - | Type_wildcard loc -> - fprintf ppf "Type_wildcard (%a)" Location.print_loc loc - - let any_creation_reason ppf : any_creation_reason -> unit = function - | Missing_cmi p -> fprintf ppf "Missing_cmi %a" Path.print p - | Wildcard -> fprintf ppf "Wildcard" - | Unification_var -> fprintf ppf "Unification_var" - | Initial_typedecl_env -> fprintf ppf "Initial_typedecl_env" - | Dummy_layout -> fprintf ppf "Dummy_layout" - | Type_expression_call -> fprintf ppf "Type_expression_call" - - let immediate_creation_reason ppf : immediate_creation_reason -> _ = - function - | Empty_record -> fprintf ppf "Empty_record" - | Enumeration -> fprintf ppf "Enumeration" - | Primitive id -> fprintf ppf "Primitive %s" (Ident.unique_name id) - | Immediate_polymorphic_variant -> - fprintf ppf "Immediate_polymorphic_variant" - | Gc_ignorable_check -> fprintf ppf "Gc_ignorable_check" - | Value_kind -> fprintf ppf "Value_kind" - - let immediate64_creation_reason ppf = function - | Local_mode_cross_check -> fprintf ppf "Local_mode_cross_check" - | Gc_ignorable_check -> fprintf ppf "Gc_ignorable_check" - | Separability_check -> fprintf ppf "Separability_check" - - let value_creation_reason ppf : value_creation_reason -> _ = function - | Class_let_binding -> fprintf ppf "Class_let_binding" - | Tuple_element -> fprintf ppf "Tuple_element" - | Probe -> fprintf ppf "Probe" - | Package_hack -> fprintf ppf "Package_hack" - | Object -> fprintf ppf "Object" - | Instance_variable -> fprintf ppf "Instance_variable" - | Object_field -> fprintf ppf "Object_field" - | Class_field -> fprintf ppf "Class_field" - | Boxed_record -> fprintf ppf "Boxed_record" - | Boxed_variant -> fprintf ppf "Boxed_variant" - | Extensible_variant -> fprintf ppf "Extensible_variant" - | Primitive id -> fprintf ppf "Primitive %s" (Ident.unique_name id) - | Type_argument -> fprintf ppf "Type_argument" - | Tuple -> fprintf ppf "Tuple" - | Row_variable -> fprintf ppf "Row_variable" - | Polymorphic_variant -> fprintf ppf "Polymorphic_variant" - | Arrow -> fprintf ppf "Arrow" - | Tfield -> fprintf ppf "Tfield" - | Tnil -> fprintf ppf "Tnil" - | First_class_module -> fprintf ppf "First_class_module" - | Separability_check -> fprintf ppf "Separability_check" - | Univar -> fprintf ppf "Univar" - | Polymorphic_variant_field -> fprintf ppf "Polymorphic_variant_field" - | Default_type_layout -> fprintf ppf "Default_type_layout" - | Float_record_field -> fprintf ppf "Float_record_field" - | Existential_type_variable -> fprintf ppf "Existential_type_variable" - | Array_element -> fprintf ppf "Array_element" - | Lazy_expression -> fprintf ppf "Lazy_expression" - | Class_argument -> fprintf ppf "Class_argument" - | Structure_element -> fprintf ppf "Structure_element" - | Debug_printer_argument -> fprintf ppf "Debug_printer_argument" - | V1_safety_check -> fprintf ppf "V1_safety_check" - | Captured_in_object -> fprintf ppf "Captured_in_object" - | Unknown s -> fprintf ppf "Unknown %s" s - - let void_creation_reason ppf : void_creation_reason -> _ = function - | V1_safety_check -> fprintf ppf "V1_safety_check" - - let float64_creation_reason ppf : float64_creation_reason -> _ = function - | Primitive id -> fprintf ppf "Primitive %s" (Ident.unique_name id) - - let creation_reason ppf : creation_reason -> unit = function - | Annotated (ctx, loc) -> - fprintf ppf "Annotated (%a,%a)" - annotation_context ctx - Location.print_loc loc - | Any_creation any -> - fprintf ppf "Any_creation %a" any_creation_reason any - | Immediate_creation immediate -> - fprintf ppf "Immediate_creation %a" immediate_creation_reason immediate - | Immediate64_creation immediate64 -> - fprintf ppf "Immediate64_creation %a" immediate64_creation_reason immediate64 - | Value_creation value -> - fprintf ppf "Value_creation %a" value_creation_reason value - | Void_creation void -> - fprintf ppf "Void_creation %a" void_creation_reason void - | Float64_creation float -> - fprintf ppf "Float64_creation %a" float64_creation_reason float - | Concrete_creation concrete -> - fprintf ppf "Concrete_creation %a" concrete_layout_reason concrete - | Imported -> - fprintf ppf "Imported" - - let interact_reason ppf = function - | Gadt_equation p -> - fprintf ppf "Gadt_equation %a" - Path.print p - | Tyvar_refinement_intersection -> - fprintf ppf "Tyvar_refinement_intersection" - | Sublayout -> - fprintf ppf "Sublayout" - - let rec history ppf = function - | Interact - { reason; lhs_layout; lhs_history; rhs_layout; rhs_history } -> - fprintf ppf "Interact {@[reason = %a;@ \ - lhs_layout = %a;@ \ - lhs_history = %a;@ \ - rhs_layout = %a;@ \ - rhs_history = %a}@]" - interact_reason reason - internal lhs_layout - history lhs_history - internal rhs_layout - history rhs_history - | Creation c -> - fprintf ppf "Creation (%a)" - creation_reason c + let report_with_offender_sort ~offender = + report_general "A representable layout was expected, but " pp_t offender - let t ppf ({ layout; history=h } : t) : unit = - fprintf ppf "@[{ layout = %a@,; history = %a }@]" - internal layout - history h - end + let report_with_name ~name = + report_general "" pp_print_string name +end - (*** formatting user errors ***) - let report_error ~loc = function - | Insufficient_level (context, layout) -> - let required_layouts_level = get_required_layouts_level context layout in - let hint ppf = - Format.fprintf ppf "You must enable -extension %s to use this feature." - (Language_extension.to_command_line_string - Layouts required_layouts_level) - in - match Language_extension.get_command_line_string_if_enabled Layouts with - | None -> - Location.errorf ~loc - "@[The appropriate layouts extension is not enabled.@;%t@]" - hint - | Some cmd_line_string -> - Location.errorf ~loc - (* CR layouts errors: use the context to produce a better error message. - When RAE tried this, some types got printed like [t/2], but the - [/2] shouldn't be there. Investigate and fix. *) - "@[Layout %s is more experimental than allowed by -extension %s.@;%t@]" - (string_of_const layout) - cmd_line_string - hint - - let () = - Location.register_error_of_exn - (function - | User_error(loc, err) -> - Some (report_error ~loc err) - | _ -> None) +(******************************) +(* relations *) + +let equate_or_equal ~allow_mutation (l1 : t) (l2 : t) = + match l1.jkind, l2.jkind with + | Any, Any -> true + | Immediate64, Immediate64 -> true + | Immediate, Immediate -> true + | Sort s1, Sort s2 -> begin + match Sort.equate_tracking_mutation s1 s2 with + | (Equal_mutated_first | Equal_mutated_second) + when not allow_mutation -> + Misc.fatal_errorf + "Jkind.equal: Performed unexpected mutation" + | Unequal -> false + | Equal_no_mutation | Equal_mutated_first | Equal_mutated_second -> true + end + | (Any | Immediate64 | Immediate | Sort _), _ -> false + +(* CR layouts v2.8: Switch this back to ~allow_mutation:false *) +let equal = equate_or_equal ~allow_mutation:true + +let equate = equate_or_equal ~allow_mutation:true + +let combine_histories reason lhs rhs = + Interact { reason; lhs_jkind = lhs.jkind; lhs_history = lhs.history; + rhs_jkind = rhs.jkind; rhs_history = rhs.history } + +let intersection ~reason l1 l2 = + match l1.jkind, l2.jkind with + (* only update the history when something interesting happens; e.g. + finding the intersection between a subjkind and its superjkind + is not interesting *) + | _, Any -> Ok l1 + | Any, _ -> Ok l2 + | (Immediate, Immediate) | (Immediate64, Immediate64) -> + Ok { l1 with history = combine_histories reason l1 l2 } + | Immediate, Immediate64 -> Ok l1 + | Immediate64, Immediate -> Ok l2 + | (Immediate | Immediate64), Sort s -> + if Sort.equate s Sort.value + then Ok l1 + else Error (Violation.of_ (No_intersection (l1, l2))) + | Sort s, (Immediate | Immediate64) -> + if Sort.equate s Sort.value + then Ok l2 + else Error (Violation.of_ (No_intersection (l1, l2))) + | Sort s1, Sort s2 -> + if Sort.equate s1 s2 + then Ok { l1 with history = combine_histories reason l1 l2 } + else Error (Violation.of_ (No_intersection (l1, l2))) + +(* this is hammered on; it must be fast! *) +let check_sub sub super : sub_result = + match sub.jkind, super.jkind with + (* don't use [get], because that allocates *) + | Any, Any -> Equal + | _, Any -> Sub + | Immediate, Immediate -> Equal + | Immediate64, Immediate64 -> Equal + | Immediate, Immediate64 -> Sub + | Immediate64, Immediate -> Not_sub + | (Immediate | Immediate64), Sort s -> + if Sort.equate s Sort.value then Sub else Not_sub + | Sort s1, Sort s2 -> + if Sort.equate s1 s2 then Equal else Not_sub + | Any, _ -> Not_sub + | Sort _, (Immediate | Immediate64) -> Not_sub + +let sub sub super = match check_sub sub super with + | Sub | Equal -> Ok () + | Not_sub -> Error (Violation.of_ (Not_a_subjkind (sub, super))) + +let sub_with_history sub super = match check_sub sub super with + | Sub | Equal -> + Ok { sub with history = combine_histories Subjkind sub super } + | Not_sub -> Error (Violation.of_ (Not_a_subjkind (sub, super))) + +let is_void_defaulting = function + | { jkind = Sort s } -> Sort.is_void_defaulting s + | _ -> false + +let is_any = function + | { jkind = Any } -> true + | _ -> false + +(*********************************) +(* debugging *) + +module Debug_printers = struct + open Format + + let internal ppf : internal -> unit = function + | Any -> fprintf ppf "Any" + | Sort s -> fprintf ppf "Sort %a" Sort.Debug_printers.t s + | Immediate64 -> fprintf ppf "Immediate64" + | Immediate -> fprintf ppf "Immediate" + + let concrete_jkind_reason ppf : concrete_jkind_reason -> unit = function + | Match -> + fprintf ppf "Match" + | Constructor_declaration idx -> + fprintf ppf "Constructor_declaration %d" idx + | Label_declaration lbl -> + fprintf ppf "Label_declaration %a" Ident.print lbl + | Unannotated_type_parameter -> + fprintf ppf "Unannotated_type_parameter" + | Record_projection -> + fprintf ppf "Record_projection" + | Record_assignment -> + fprintf ppf "Record_assignment" + | Let_binding -> + fprintf ppf "Let_binding" + | Function_argument -> + fprintf ppf "Function_argument" + | Function_result -> + fprintf ppf "Function_result" + | Structure_item_expression -> + fprintf ppf "Structure_item_expression" + | V1_safety_check -> + fprintf ppf "V1_safety_check" + | External_argument -> + fprintf ppf "External_argument" + | External_result -> + fprintf ppf "External_result" + | Statement -> + fprintf ppf "Statement" + + let annotation_context ppf : annotation_context -> unit = function + | Type_declaration p -> + fprintf ppf "Type_declaration %a" Path.print p + | Type_parameter (p, var) -> + fprintf ppf "Type_parameter (%a, %a)" + Path.print p + (Misc.Stdlib.Option.print Misc.Stdlib.String.print) var + | With_constraint s -> + fprintf ppf "With_constraint %S" s + | Newtype_declaration name -> + fprintf ppf "Newtype_declaration %s" name + | Constructor_type_parameter (cstr, name) -> + fprintf ppf "Constructor_type_parameter (%a, %S)" Path.print cstr name + | Univar name -> + fprintf ppf "Univar %S" name + | Type_variable name -> + fprintf ppf "Type_variable %S" name + | Type_wildcard loc -> + fprintf ppf "Type_wildcard (%a)" Location.print_loc loc + + let any_creation_reason ppf : any_creation_reason -> unit = function + | Missing_cmi p -> fprintf ppf "Missing_cmi %a" Path.print p + | Wildcard -> fprintf ppf "Wildcard" + | Unification_var -> fprintf ppf "Unification_var" + | Initial_typedecl_env -> fprintf ppf "Initial_typedecl_env" + | Dummy_jkind -> fprintf ppf "Dummy_jkind" + | Type_expression_call -> fprintf ppf "Type_expression_call" + + let immediate_creation_reason ppf : immediate_creation_reason -> _ = + function + | Empty_record -> fprintf ppf "Empty_record" + | Enumeration -> fprintf ppf "Enumeration" + | Primitive id -> fprintf ppf "Primitive %s" (Ident.unique_name id) + | Immediate_polymorphic_variant -> + fprintf ppf "Immediate_polymorphic_variant" + | Gc_ignorable_check -> fprintf ppf "Gc_ignorable_check" + | Value_kind -> fprintf ppf "Value_kind" + + let immediate64_creation_reason ppf = function + | Local_mode_cross_check -> fprintf ppf "Local_mode_cross_check" + | Gc_ignorable_check -> fprintf ppf "Gc_ignorable_check" + | Separability_check -> fprintf ppf "Separability_check" + + let value_creation_reason ppf : value_creation_reason -> _ = function + | Class_let_binding -> fprintf ppf "Class_let_binding" + | Tuple_element -> fprintf ppf "Tuple_element" + | Probe -> fprintf ppf "Probe" + | Package_hack -> fprintf ppf "Package_hack" + | Object -> fprintf ppf "Object" + | Instance_variable -> fprintf ppf "Instance_variable" + | Object_field -> fprintf ppf "Object_field" + | Class_field -> fprintf ppf "Class_field" + | Boxed_record -> fprintf ppf "Boxed_record" + | Boxed_variant -> fprintf ppf "Boxed_variant" + | Extensible_variant -> fprintf ppf "Extensible_variant" + | Primitive id -> fprintf ppf "Primitive %s" (Ident.unique_name id) + | Type_argument -> fprintf ppf "Type_argument" + | Tuple -> fprintf ppf "Tuple" + | Row_variable -> fprintf ppf "Row_variable" + | Polymorphic_variant -> fprintf ppf "Polymorphic_variant" + | Arrow -> fprintf ppf "Arrow" + | Tfield -> fprintf ppf "Tfield" + | Tnil -> fprintf ppf "Tnil" + | First_class_module -> fprintf ppf "First_class_module" + | Separability_check -> fprintf ppf "Separability_check" + | Univar -> fprintf ppf "Univar" + | Polymorphic_variant_field -> fprintf ppf "Polymorphic_variant_field" + | Default_type_jkind -> fprintf ppf "Default_type_jkind" + | Float_record_field -> fprintf ppf "Float_record_field" + | Existential_type_variable -> fprintf ppf "Existential_type_variable" + | Array_element -> fprintf ppf "Array_element" + | Lazy_expression -> fprintf ppf "Lazy_expression" + | Class_argument -> fprintf ppf "Class_argument" + | Structure_element -> fprintf ppf "Structure_element" + | Debug_printer_argument -> fprintf ppf "Debug_printer_argument" + | V1_safety_check -> fprintf ppf "V1_safety_check" + | Captured_in_object -> fprintf ppf "Captured_in_object" + | Unknown s -> fprintf ppf "Unknown %s" s + + let void_creation_reason ppf : void_creation_reason -> _ = function + | V1_safety_check -> fprintf ppf "V1_safety_check" + + let float64_creation_reason ppf : float64_creation_reason -> _ = function + | Primitive id -> fprintf ppf "Primitive %s" (Ident.unique_name id) + + let creation_reason ppf : creation_reason -> unit = function + | Annotated (ctx, loc) -> + fprintf ppf "Annotated (%a,%a)" + annotation_context ctx + Location.print_loc loc + | Any_creation any -> + fprintf ppf "Any_creation %a" any_creation_reason any + | Immediate_creation immediate -> + fprintf ppf "Immediate_creation %a" immediate_creation_reason immediate + | Immediate64_creation immediate64 -> + fprintf ppf "Immediate64_creation %a" immediate64_creation_reason immediate64 + | Value_creation value -> + fprintf ppf "Value_creation %a" value_creation_reason value + | Void_creation void -> + fprintf ppf "Void_creation %a" void_creation_reason void + | Float64_creation float -> + fprintf ppf "Float64_creation %a" float64_creation_reason float + | Concrete_creation concrete -> + fprintf ppf "Concrete_creation %a" concrete_jkind_reason concrete + | Imported -> + fprintf ppf "Imported" + + let interact_reason ppf = function + | Gadt_equation p -> + fprintf ppf "Gadt_equation %a" + Path.print p + | Tyvar_refinement_intersection -> + fprintf ppf "Tyvar_refinement_intersection" + | Subjkind -> + fprintf ppf "Subjkind" + + let rec history ppf = function + | Interact + { reason; lhs_jkind; lhs_history; rhs_jkind; rhs_history } -> + fprintf ppf "Interact {@[reason = %a;@ \ + lhs_jkind = %a;@ \ + lhs_history = %a;@ \ + rhs_jkind = %a;@ \ + rhs_history = %a}@]" + interact_reason reason + internal lhs_jkind + history lhs_history + internal rhs_jkind + history rhs_history + | Creation c -> + fprintf ppf "Creation (%a)" + creation_reason c + + let t ppf ({ jkind; history=h } : t) : unit = + fprintf ppf "@[{ jkind = %a@,; history = %a }@]" + internal jkind + history h end -type layout = Layout.t +(*** formatting user errors ***) +let report_error ~loc = function +| Insufficient_level (context, jkind) -> + let required_layouts_level = get_required_layouts_level context jkind in + let hint ppf = + Format.fprintf ppf "You must enable -extension %s to use this feature." + (Language_extension.to_command_line_string + Layouts required_layouts_level) + in + match Language_extension.get_command_line_string_if_enabled Layouts with + | None -> + Location.errorf ~loc + "@[The appropriate layouts extension is not enabled.@;%t@]" + hint + | Some cmd_line_string -> + Location.errorf ~loc + (* CR layouts errors: use the context to produce a better error message. + When RAE tried this, some types got printed like [t/2], but the + [/2] shouldn't be there. Investigate and fix. *) + "@[Layout %s is more experimental than allowed by -extension %s.@;%t@]" + (string_of_const jkind) + cmd_line_string + hint + +let () = + Location.register_error_of_exn + (function + | User_error(loc, err) -> + Some (report_error ~loc err) + | _ -> None) + diff --git a/ocaml/typing/jkind.mli b/ocaml/typing/jkind.mli index 21b8325b4c8..605d247fe95 100644 --- a/ocaml/typing/jkind.mli +++ b/ocaml/typing/jkind.mli @@ -12,9 +12,28 @@ (* *) (**************************************************************************) +(* This module is named Jkind, with a 'y', to distinguish jkinds + as used here from type kinds (which might be abstract or record or variant, + etc.). This is clearly far from ideal, but the current scheme has these + positives: + + * It allows us to call jkinds "kinds" to users, connecting that word with + a word that actually appears in the code. + + * It allows us to use "layout" to refer to the component of a jkind that + describes the in-memory/in-register layout of a type. Using "layout" + to refer to the whole jkind seems worse than the already-terrible "jkind". + + * We could imagine renaming the existing "kind" to something else ("shape"?), + but that would introduce merge conflicts. Perhaps, with broad support from + OCaml developers, we can make this switch someday. + + * It is very easy to search for and replace when we have a better name. +*) + module Sort : sig (** A sort classifies how a type is represented at runtime. Every concrete - layout has a sort, and knowing the sort is sufficient for knowing the + jkind has a sort, and knowing the sort is sufficient for knowing the calling convention of values of a given type. *) type t @@ -27,11 +46,12 @@ module Sort : sig | Float64 (** Unboxed 64-bit floats *) + (** A sort variable that can be unified during type-checking. *) type var (** Return the concrete constraint placed on the variable. This check is - constant-time if [var] was just returned from [Layout.get]. + constant-time if [var] was just returned from [Jkind.get]. *) val var_constraint : var -> const option @@ -77,8 +97,8 @@ module Sort : sig currently required to be values, but for which we expect to relax that restriction in versions 2 and beyond. Naming them makes it easy to find where in the translation to lambda they are assume to be value. *) - (* CR layouts: add similarly named layouts and use those names everywhere (not - just the translation to lambda) rather than writing specific layouts and + (* CR layouts: add similarly named jkinds and use those names everywhere (not + just the translation to lambda) rather than writing specific jkinds and sorts in the code. *) val for_class_arg : t val for_instance_var : t @@ -107,357 +127,351 @@ end type sort = Sort.t -(** This module describes layouts, which classify types. Layouts are arranged - in the following lattice: - - {[ - any - / \ - value void - | - immediate64 - | - immediate - ]} +(* This module describes jkinds, which classify types. Jkinds are arranged + in the following lattice: + + {[ + any + / \ + value void + | + immediate64 + | + immediate + ]} *) -module Layout : sig - (** A Layout.t is a full description of the runtime representation of values - of a given type. It includes sorts, but also the abstract top layout - [Any] and sublayouts of other sorts, such as [Immediate]. *) - type t - - (******************************) - (* errors *) - - type concrete_layout_reason = - | Match - | Constructor_declaration of int - | Label_declaration of Ident.t - | Unannotated_type_parameter - | Record_projection - | Record_assignment - | Let_binding - | Function_argument - | Function_result - | Structure_item_expression - | V1_safety_check - | External_argument - | External_result - | Statement - - type annotation_context = - | Type_declaration of Path.t - | Type_parameter of Path.t * string option - | With_constraint of string - | Newtype_declaration of string - | Constructor_type_parameter of Path.t * string - | Univar of string - | Type_variable of string - | Type_wildcard of Location.t - - type value_creation_reason = - | Class_let_binding - | Tuple_element - | Probe - | Package_hack - | Object - | Instance_variable - | Object_field - | Class_field - | Boxed_record - | Boxed_variant - | Extensible_variant - | Primitive of Ident.t - | Type_argument (* CR layouts: Should this take a Path.t? *) - | Tuple - | Row_variable - | Polymorphic_variant - | Arrow - | Tfield - | Tnil - | First_class_module - | Separability_check - | Univar - | Polymorphic_variant_field - | Default_type_layout - | Float_record_field - | Existential_type_variable - | Array_element - | Lazy_expression - | Class_argument - | Structure_element - | Debug_printer_argument - | V1_safety_check - | Captured_in_object - | Unknown of string (* CR layouts: get rid of these *) - - type immediate_creation_reason = - | Empty_record - | Enumeration - | Primitive of Ident.t - | Immediate_polymorphic_variant - | Gc_ignorable_check - | Value_kind - - type immediate64_creation_reason = - | Local_mode_cross_check - | Gc_ignorable_check - | Separability_check - - type void_creation_reason = - | V1_safety_check - - type any_creation_reason = - | Missing_cmi of Path.t - | Wildcard - | Unification_var - | Initial_typedecl_env - | Dummy_layout - (* This is used when the layout is about to get overwritten; - key example: when creating a fresh tyvar that is immediately - unified to correct levels *) - | Type_expression_call - - type float64_creation_reason = - | Primitive of Ident.t - - type creation_reason = - | Annotated of annotation_context * Location.t - | Value_creation of value_creation_reason - | Immediate_creation of immediate_creation_reason - | Immediate64_creation of immediate64_creation_reason - | Void_creation of void_creation_reason - | Any_creation of any_creation_reason - | Float64_creation of float64_creation_reason - | Concrete_creation of concrete_layout_reason - | Imported - - type interact_reason = - | Gadt_equation of Path.t - | Tyvar_refinement_intersection - (* CR layouts: this needs to carry a type_expr, but that's loopy *) - | Sublayout - - module Violation : sig - type violation = - | Not_a_sublayout of t * t - | No_intersection of t * t - - type t - - val of_ : violation -> t - - (** Mark a [t] as having arisen from a missing cmi *) - val record_missing_cmi : missing_cmi_for:Path.t -> t -> t - - (** Is this error from a missing cmi? *) - val is_missing_cmi : t -> bool - - (* CR layouts: The [offender] arguments below are always - [Printtyp.type_expr], so we should either stash that in a ref (like with - [set_printtyp_path] below) or just move all the printing machinery - downstream of both [Layouts] and [Printtyp]. *) - - (* CR layouts: Having these options for printing a violation was a choice - made based on the needs of expedient debugging during development, but - probably should be rethought at some point. *) - (** Prints a violation and the thing that had an unexpected layout - ([offender], which you supply an arbitrary printer for). *) - val report_with_offender : - offender:(Format.formatter -> unit) -> - Format.formatter -> t -> unit - - (** Like [report_with_offender], but additionally prints that the issue is - that a representable layout was expected. *) - val report_with_offender_sort : - offender:(Format.formatter -> unit) -> - Format.formatter -> t -> unit - - (** Simpler version of [report_with_offender] for when the thing that had an - unexpected layout is available as a string. *) - val report_with_name : name:string -> Format.formatter -> t -> unit - end - - (******************************) - (* constants *) - - (** Constant layouts are used both for user-written annotations and within - the type checker when we know a layout has no variables *) - type const = Jane_asttypes.const_layout = - | Any - | Value - | Void - | Immediate64 - | Immediate - | Float64 - val string_of_const : const -> string - val equal_const : const -> const -> bool - - (** This layout is the top of the layout lattice. All types have layout [any]. - But we cannot compile run-time manipulations of values of types with layout - [any]. *) - val any : why:any_creation_reason -> t - - (** Value of types of this layout are not retained at all at runtime *) - val void : why:void_creation_reason -> t - - (** This is the layout of normal ocaml values *) - val value : why:value_creation_reason -> t - - (** Values of types of this layout are immediate on 64-bit platforms; on other - platforms, we know nothing other than that it's a value. *) - val immediate64 : why:immediate64_creation_reason -> t - - (** We know for sure that values of types of this layout are always immediate *) - val immediate : why:immediate_creation_reason -> t - - (** This is the layout of unboxed 64-bit floats. They have sort Float64. *) - val float64 : why:float64_creation_reason -> t - - - (******************************) - (* construction *) - - (** Create a fresh sort variable, packed into a layout. *) - val of_new_sort_var : why:concrete_layout_reason -> t - - val of_sort : why:concrete_layout_reason -> sort -> t - val of_const : why:creation_reason -> const -> t - - (* CR layouts v1.5: remove legacy_immediate when the old attributes mechanism - is rerouted away from the new annotations mechanism *) - val of_annotation : - ?legacy_immediate:bool -> - context:annotation_context -> - Jane_asttypes.layout_annotation -> - t - - val of_annotation_option_default : - ?legacy_immediate:bool -> - default:t -> context:annotation_context -> - Jane_asttypes.layout_annotation option -> t - - (** Find a layout in attributes. Returns error if a disallowed layout is - present, but always allows immediate attributes if ~legacy_immediate is - true. See comment on [Builtin_attributes.layout]. *) - val of_attributes : - legacy_immediate:bool -> context:annotation_context -> Parsetree.attributes -> - (t option, Jane_asttypes.layout_annotation) result - (** Find a layout in attributes, defaulting to ~default. Returns error if a - disallowed layout is present, but always allows immediate if - ~legacy_immediate is true. See comment on [Builtin_attributes.layout]. *) - val of_attributes_default : - legacy_immediate:bool -> context:annotation_context -> - default:t -> Parsetree.attributes -> - (t, Jane_asttypes.layout_annotation) result +(** A Jkind.t is a full description of the runtime representation of values + of a given type. It includes sorts, but also the abstract top jkind + [Any] and subjkinds of other sorts, such as [Immediate]. *) +type t + +(******************************) +(* errors *) + +type concrete_jkind_reason = + | Match + | Constructor_declaration of int + | Label_declaration of Ident.t + | Unannotated_type_parameter + | Record_projection + | Record_assignment + | Let_binding + | Function_argument + | Function_result + | Structure_item_expression + | V1_safety_check + | External_argument + | External_result + | Statement + +type annotation_context = + | Type_declaration of Path.t + | Type_parameter of Path.t * string option + | With_constraint of string + | Newtype_declaration of string + | Constructor_type_parameter of Path.t * string + | Univar of string + | Type_variable of string + | Type_wildcard of Location.t + + type value_creation_reason = + | Class_let_binding + | Tuple_element + | Probe + | Package_hack + | Object + | Instance_variable + | Object_field + | Class_field + | Boxed_record + | Boxed_variant + | Extensible_variant + | Primitive of Ident.t + | Type_argument (* CR layouts: Should this take a Path.t? *) + | Tuple + | Row_variable + | Polymorphic_variant + | Arrow + | Tfield + | Tnil + | First_class_module + | Separability_check + | Univar + | Polymorphic_variant_field + | Default_type_jkind + | Float_record_field + | Existential_type_variable + | Array_element + | Lazy_expression + | Class_argument + | Structure_element + | Debug_printer_argument + | V1_safety_check + | Captured_in_object + | Unknown of string (* CR layouts: get rid of these *) + +type immediate_creation_reason = + | Empty_record + | Enumeration + | Primitive of Ident.t + | Immediate_polymorphic_variant + | Gc_ignorable_check + | Value_kind + +type immediate64_creation_reason = + | Local_mode_cross_check + | Gc_ignorable_check + | Separability_check + +type void_creation_reason = + | V1_safety_check + +type any_creation_reason = + | Missing_cmi of Path.t + | Wildcard + | Unification_var + | Initial_typedecl_env + | Dummy_jkind + (* This is used when the jkind is about to get overwritten; + key example: when creating a fresh tyvar that is immediately + unified to correct levels *) + | Type_expression_call + +type float64_creation_reason = + | Primitive of Ident.t + +type creation_reason = + | Annotated of annotation_context * Location.t + | Value_creation of value_creation_reason + | Immediate_creation of immediate_creation_reason + | Immediate64_creation of immediate64_creation_reason + | Void_creation of void_creation_reason + | Any_creation of any_creation_reason + | Float64_creation of float64_creation_reason + | Concrete_creation of concrete_jkind_reason + | Imported + +type interact_reason = + | Gadt_equation of Path.t + | Tyvar_refinement_intersection + (* CR layouts: this needs to carry a type_expr, but that's loopy *) + | Subjkind + +module Violation : sig + type violation = + | Not_a_subjkind of t * t + | No_intersection of t * t - (** Choose an appropriate layout for a boxed record type, given whether - all of its fields are [void]. *) - val for_boxed_record : all_void:bool -> t - - (** Choose an appropriate layout for a boxed variant type, given whether - all of the fields of all of its constructors are [void]. *) - val for_boxed_variant : all_voids:bool -> t - - (******************************) - (* elimination and defaulting *) - - (* The description of a layout, used as a return type from [get]. *) - type desc = - | Const of const - | Var of Sort.var - - (** Extract the [desc] from a [Layout.t], looking through unified - sort variables. Returns [Var] if the final, non-variable layout has not - yet been determined. *) - val get : t -> desc - - (** [get_default_value] extracts the layout as a `const`. If it's a sort - variable, it is set to [value] first. *) - val get_default_value : t -> const - - (** [default_to_value t] is [ignore (get_default_value t)] *) - val default_to_value : t -> unit + type t - (** [is_void t] is [Void = get_default_value t]. In particular, it will - default the layout to value if needed to make this false. *) - val is_void_defaulting : t -> bool - (* CR layouts v5: When we have proper support for void, we'll want to change - these three functions to default to void - it's the most efficient thing - when we have a choice. *) + val of_ : violation -> t - (** Returns the sort corresponding to the layout. Call only on representable - layouts - raises on Any. *) - val sort_of_layout : t -> sort + (** Mark a [t] as having arisen from a missing cmi *) + val record_missing_cmi : missing_cmi_for:Path.t -> t -> t - (*********************************) - (* pretty printing *) + (** Is this error from a missing cmi? *) + val is_missing_cmi : t -> bool - val to_string : t -> string - val format : Format.formatter -> t -> unit + (* CR layouts: The [offender] arguments below are always + [Printtyp.type_expr], so we should either stash that in a ref (like with + [set_printtyp_path] below) or just move all the printing machinery + downstream of both [Jkinds] and [Printtyp]. *) - (** Format the history of this layout: what interactions it has had and why - it is the layout that it is. Might be a no-op: see [display_histories] - in the implementation of the [Layout] module. - - The [intro] is something like "The layout of t is". *) - val format_history : - intro:(Format.formatter -> unit) -> + (* CR layouts: Having these options for printing a violation was a choice + made based on the needs of expedient debugging during development, but + probably should be rethought at some point. *) + (** Prints a violation and the thing that had an unexpected jkind + ([offender], which you supply an arbitrary printer for). *) + val report_with_offender : + offender:(Format.formatter -> unit) -> Format.formatter -> t -> unit - (** Provides the [Printtyp.path] formatter back up the dependency chain to - this module. *) - val set_printtyp_path : (Format.formatter -> Path.t -> unit) -> unit - - (******************************) - (* relations *) - - (** This checks for equality, and sets any variables to make two layouts - equal, if possible. e.g. [equate] on a var and [value] will set the - variable to be [value]. - - This function ignores the [missing_cmi_for] medatadata for [any]s. *) - val equate : t -> t -> bool - - (** This checks for equality, but has the invariant that it can only be called - when there is no need for unification; e.g. [equal] on a var and [value] - will crash. - - CR layouts (v1.5): At the moment, this is actually the same as [equate]! *) - val equal : t -> t -> bool - - (** Finds the intersection of two layouts, constraining sort variables to - create one if needed, or returns a [Violation.t] if an intersection does - not exist. Can update the layouts. The returned layout's history - consists of the provided reason followed by the history of the first - layout argument. That is, due to histories, this function is asymmetric; - it should be thought of as modifying the first layout to be the - intersection of the two, not something that modifies the second layout. *) - val intersection : - reason:interact_reason -> t -> t -> (t, Violation.t) Result.t - - (** [sub t1 t2] returns [Ok ()] iff [t1] is a sublayout of - of [t2]. The current hierarchy is: - - Any > Sort Value > Immediate64 > Immediate - Any > Sort Void - - Returns [Error _] if the coercion is not possible. *) - val sub : t -> t -> (unit, Violation.t) result + (** Like [report_with_offender], but additionally prints that the issue is + that a representable jkind was expected. *) + val report_with_offender_sort : + offender:(Format.formatter -> unit) -> + Format.formatter -> t -> unit - (** Like [sub], but returns the sublayout with an updated history. *) - val sub_with_history : t -> t -> (t, Violation.t) result + (** Simpler version of [report_with_offender] for when the thing that had an + unexpected jkind is available as a string. *) + val report_with_name : name:string -> Format.formatter -> t -> unit +end - (** Checks to see whether a layout is any. Never does any mutation. *) - val is_any : t -> bool +(******************************) +(* constants *) + +(** Constant jkinds are used both for user-written annotations and within + the type checker when we know a jkind has no variables *) +type const = Jane_asttypes.const_jkind = + | Any + | Value + | Void + | Immediate64 + | Immediate + | Float64 +val string_of_const : const -> string +val equal_const : const -> const -> bool + +(** This jkind is the top of the jkind lattice. All types have jkind [any]. + But we cannot compile run-time manipulations of values of types with jkind + [any]. *) +val any : why:any_creation_reason -> t + +(** Value of types of this jkind are not retained at all at runtime *) +val void : why:void_creation_reason -> t + +(** This is the jkind of normal ocaml values *) +val value : why:value_creation_reason -> t + +(** Values of types of this jkind are immediate on 64-bit platforms; on other + platforms, we know nothing other than that it's a value. *) +val immediate64 : why:immediate64_creation_reason -> t + +(** We know for sure that values of types of this jkind are always immediate *) +val immediate : why:immediate_creation_reason -> t + +(** This is the jkind of unboxed 64-bit floats. They have sort Float64. *) +val float64 : why:float64_creation_reason -> t + +(******************************) +(* construction *) + +(** Create a fresh sort variable, packed into a jkind. *) +val of_new_sort_var : why:concrete_jkind_reason -> t + +val of_sort : why:concrete_jkind_reason -> sort -> t +val of_const : why:creation_reason -> const -> t + +(* CR layouts v1.5: remove legacy_immediate when the old attributes mechanism + is rerouted away from the new annotations mechanism *) +val of_annotation : + ?legacy_immediate:bool -> + context:annotation_context -> + Jane_asttypes.jkind_annotation -> + t + +val of_annotation_option_default : + ?legacy_immediate:bool -> + default:t -> context:annotation_context -> + Jane_asttypes.jkind_annotation option -> t + +(** Find a jkind in attributes. Returns error if a disallowed jkind is + present, but always allows immediate attributes if ~legacy_immediate is + true. See comment on [Builtin_attributes.jkind]. *) +val of_attributes : + legacy_immediate:bool -> context:annotation_context -> Parsetree.attributes -> + (t option, Jane_asttypes.jkind_annotation) result + +(** Find a jkind in attributes, defaulting to ~default. Returns error if a + disallowed jkind is present, but always allows immediate if + ~legacy_immediate is true. See comment on [Builtin_attributes.jkind]. *) +val of_attributes_default : + legacy_immediate:bool -> context:annotation_context -> + default:t -> Parsetree.attributes -> + (t, Jane_asttypes.jkind_annotation) result + +(** Choose an appropriate jkind for a boxed record type, given whether + all of its fields are [void]. *) +val for_boxed_record : all_void:bool -> t + +(** Choose an appropriate jkind for a boxed variant type, given whether + all of the fields of all of its constructors are [void]. *) +val for_boxed_variant : all_voids:bool -> t + +(******************************) +(* elimination and defaulting *) + +(* The description of a jkind, used as a return type from [get]. *) +type desc = + | Const of const + | Var of Sort.var + +(** Extract the [const] from a [Jkind.t], looking through unified + sort variables. Returns [Var] if the final, non-variable jkind has not + yet been determined. *) +val get : t -> desc + +(** [get_default_value] extracts the jkind as a `const`. If it's a sort + variable, it is set to [value] first. *) +val get_default_value : t -> const + +(** [default_to_value t] is [ignore (get_default_value t)] *) +val default_to_value : t -> unit + +(** [is_void t] is [Void = get_default_value t]. In particular, it will + default the jkind to value if needed to make this false. *) +val is_void_defaulting : t -> bool +(* CR layouts v5: When we have proper support for void, we'll want to change + these three functions to default to void - it's the most efficient thing + when we have a choice. *) + +(** Returns the sort corresponding to the jkind. Call only on representable + jkinds - raises on Any. *) +val sort_of_jkind : t -> sort + +(*********************************) +(* pretty printing *) + +val to_string : t -> string +val format : Format.formatter -> t -> unit + +(** Format the history of this jkind: what interactions it has had and why + it is the jkind that it is. Might be a no-op: see [display_histories] + in the implementation of the [Jkind] module. + + The [intro] is something like "The jkind of t is". *) +val format_history : + intro:(Format.formatter -> unit) -> + Format.formatter -> t -> unit + +(** Provides the [Printtyp.path] formatter back up the dependency chain to + this module. *) +val set_printtyp_path : (Format.formatter -> Path.t -> unit) -> unit + +(******************************) +(* relations *) + +(** This checks for equality, and sets any variables to make two jkinds + equal, if possible. e.g. [equate] on a var and [value] will set the + variable to be [value] *) +val equate : t -> t -> bool + +(** This checks for equality, but has the invariant that it can only be called + when there is no need for unification; e.g. [equal] on a var and [value] + will crash. + + CR layouts (v1.5): At the moment, this is actually the same as [equate]! *) +val equal : t -> t -> bool + +(** Finds the intersection of two jkinds, constraining sort variables to + create one if needed, or returns a [Violation.t] if an intersection does + not exist. Can update the jkinds. The returned jkind's history + consists of the provided reason followed by the history of the first + jkind argument. That is, due to histories, this function is asymmetric; + it should be thought of as modifying the first jkind to be the + intersection of the two, not something that modifies the second jkind. *) +val intersection : + reason:interact_reason -> t -> t -> (t, Violation.t) Result.t + +(** [sub t1 t2] returns [Ok ()] iff [t1] is a subjkind of + of [t2]. The current hierarchy is: + + Any > Sort Value > Immediate64 > Immediate + Any > Sort Void + + Returns [Error _] if the coercion is not possible. *) +val sub : t -> t -> (unit, Violation.t) result + +(** Like [sub], but returns the subjkind with an updated history. *) +val sub_with_history : t -> t -> (t, Violation.t) result + +(** Checks to see whether a jkind is any. Never does any mutation. *) +val is_any : t -> bool - (*********************************) - (* debugging *) +(*********************************) +(* debugging *) - module Debug_printers : sig - val t : Format.formatter -> t -> unit - end +module Debug_printers : sig + val t : Format.formatter -> t -> unit end - -type layout = Layout.t diff --git a/ocaml/typing/oprint.ml b/ocaml/typing/oprint.ml index f2c6a94e939..53f8dca3a17 100644 --- a/ocaml/typing/oprint.ml +++ b/ocaml/typing/oprint.ml @@ -271,22 +271,22 @@ let pr_present = let pr_var = Printast.tyvar -let print_out_layout ppf = function - | Olay_const lay -> fprintf ppf "%s" (Jkind.Layout.string_of_const lay) +let print_out_jkind ppf = function + | Olay_const lay -> fprintf ppf "%s" (Jkind.string_of_const lay) | Olay_var v -> fprintf ppf "%s" v -let print_out_layout_annot ppf = function +let print_out_jkind_annot ppf = function | None -> () - | Some lay -> fprintf ppf "@ : %a" print_out_layout lay + | Some lay -> fprintf ppf "@ : %a" print_out_jkind lay -let pr_var_layout ppf (v, l) = match l with +let pr_var_jkind ppf (v, l) = match l with | None -> pr_var ppf v | Some lay -> fprintf ppf "(%a : %a)" pr_var v - print_out_layout lay + print_out_jkind lay -let pr_var_layouts = - print_list pr_var_layout (fun ppf -> fprintf ppf "@ ") +let pr_var_jkinds = + print_list pr_var_jkind (fun ppf -> fprintf ppf "@ ") let join_locality lm1 lm2 = match lm1, lm2 with @@ -376,8 +376,8 @@ let mode_agree expected real = 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" (Jkind.Layout.string_of_const lay) +let print_out_jkind ppf = function + | Olay_const lay -> fprintf ppf "%s" (Jkind.string_of_const lay) | Olay_var v -> fprintf ppf "%s" v let is_local mode = @@ -403,7 +403,7 @@ let rec print_out_type_0 mode ppf = print_out_type_0 mode ppf ty (* no "." if there are no vars *) | Otyp_poly (sl, ty) -> fprintf ppf "@[%a.@ %a@]" - pr_var_layouts sl + pr_var_jkinds sl (print_out_type_0 mode) ty | ty -> print_out_type_1 mode ppf ty @@ -525,10 +525,10 @@ and print_out_type_3 mode ppf = | Otyp_attribute (t, attr) -> fprintf ppf "@[<1>(%a [@@%s])@]" (print_out_type_0 mode) t attr.oattr_name - | Otyp_layout_annot (t, lay) -> + | Otyp_jkind_annot (t, lay) -> fprintf ppf "@[<1>(%a@ :@ %a)@]" (print_out_type_0 mode) t - print_out_layout lay + print_out_jkind lay and print_out_type ppf typ = print_out_type_0 default_mode ppf typ and print_simple_out_type ppf typ = @@ -598,7 +598,7 @@ let print_type_parameter ppf s = let type_parameter ~in_parens ppf { oparam_name = ty; oparam_variance = var; - oparam_injectivity = inj; oparam_layout = lay } = + oparam_injectivity = inj; oparam_jkind = lay } = let open Asttypes in let format_string : _ format = "%s%s%a%a" in let format_string : _ format = match lay with @@ -609,7 +609,7 @@ let type_parameter ~in_parens ppf (match var with Covariant -> "+" | Contravariant -> "-" | NoVariance -> "") (match inj with Injective -> "!" | NoInjectivity -> "") print_type_parameter ty - print_out_layout_annot lay + print_out_jkind_annot lay let print_out_class_params ppf = function @@ -914,7 +914,7 @@ and print_out_type_decl kwd ppf td = in fprintf ppf "@[<2>@[%t%a%a@]%t%t@]" print_name_params - print_out_layout_annot td.otype_layout + print_out_jkind_annot td.otype_jkind print_out_tkind ty print_constraints print_unboxed @@ -956,11 +956,11 @@ and print_out_constr ppf constr = fprintf ppf "@[<2>%s of@ %a@]" name print_out_constr_args tyl end - | Some (vars_layouts, ret_type) -> + | Some (vars_jkinds, ret_type) -> fprintf ppf "@[<2>%s :@ " name; - begin match vars_layouts with + begin match vars_jkinds with | [] -> () - | _ -> fprintf ppf "@[%a.@]@ " pr_var_layouts vars_layouts + | _ -> fprintf ppf "@[%a.@]@ " pr_var_jkinds vars_jkinds end; begin match tyl with | [] -> diff --git a/ocaml/typing/outcometree.mli b/ocaml/typing/outcometree.mli index 604b497063a..4455844da8f 100644 --- a/ocaml/typing/outcometree.mli +++ b/ocaml/typing/outcometree.mli @@ -56,15 +56,15 @@ type out_value = | Oval_tuple of out_value list | Oval_variant of string * out_value option -type out_layout = - | Olay_const of Jane_asttypes.const_layout +type out_jkind = + | Olay_const of Jane_asttypes.const_jkind | Olay_var of string type out_type_param = { oparam_name : string; oparam_variance : Asttypes.variance; oparam_injectivity : Asttypes.injectivity; - oparam_layout : out_layout option } + oparam_jkind : out_jkind option } type out_mutable_or_global = | Ogom_mutable @@ -75,8 +75,8 @@ type out_global = | Ogf_global | Ogf_unrestricted -(* should be empty if all the layout annotations are missing *) -type out_vars_layouts = (string * out_layout option) list +(* should be empty if all the jkind annotations are missing *) +type out_vars_jkinds = (string * out_jkind option) list type out_type = | Otyp_abstract @@ -94,17 +94,17 @@ type out_type = | Otyp_var of bool * string | Otyp_variant of bool * out_variant * bool * (string list) option - | Otyp_poly of out_vars_layouts * out_type + | Otyp_poly of out_vars_jkinds * out_type | Otyp_module of out_ident * (string * out_type) list | Otyp_attribute of out_type * out_attribute - | Otyp_layout_annot of out_type * out_layout + | Otyp_jkind_annot of out_type * out_jkind (* Currently only introduced with very explicit code in [Printtyp] and not synthesized directly from the [Typedtree] *) and out_constructor = { ocstr_name: string; ocstr_args: (out_type * out_global) list; - ocstr_return_type: (out_vars_layouts * out_type) option; + ocstr_return_type: (out_vars_jkinds * out_type) option; } and out_variant = @@ -168,8 +168,8 @@ and out_type_decl = otype_private: Asttypes.private_flag; (* Some <=> we should print this annotation; - see Note [When to print layout annotations] in Printtyp, Case (C1) *) - otype_layout: out_layout option; + see Note [When to print jkind annotations] in Printtyp, Case (C1) *) + otype_jkind: out_jkind option; otype_unboxed: bool; otype_cstrs: (out_type * out_type) list } @@ -178,7 +178,7 @@ and out_extension_constructor = oext_type_name: string; oext_type_params: string list; oext_args: (out_type * out_global) list; - oext_ret_type: (out_vars_layouts * out_type) option; + oext_ret_type: (out_vars_jkinds * out_type) option; oext_private: Asttypes.private_flag } and out_type_extension = { otyext_name: string; diff --git a/ocaml/typing/parmatch.ml b/ocaml/typing/parmatch.ml index 801a666e5af..387009e4951 100644 --- a/ocaml/typing/parmatch.ml +++ b/ocaml/typing/parmatch.ml @@ -18,7 +18,6 @@ open Misc open Asttypes open Types -open Layouts open Typedtree (*************************************) @@ -737,7 +736,7 @@ let close_variant env row = let more' = if static then Btype.newgenty Tnil - else Btype.newgenvar (Layout.value ~why:Row_variable) + else Btype.newgenvar (Jkind.value ~why:Row_variable) in (* this unification cannot fail *) Ctype.unify env more diff --git a/ocaml/typing/predef.ml b/ocaml/typing/predef.ml index ebe80e75454..a9632af5a5c 100644 --- a/ocaml/typing/predef.ml +++ b/ocaml/typing/predef.ml @@ -17,7 +17,6 @@ open Path open Types -open Layouts open Btype let builtin_idents = ref [] @@ -166,13 +165,13 @@ and ident_some = ident_create "Some" let mk_add_type add_type ?manifest type_ident ?(kind=Type_abstract Abstract_def) - ?(layout=Layout.value ~why:(Primitive type_ident)) + ?(jkind=Jkind.value ~why:(Primitive type_ident)) env = let decl = {type_params = []; type_arity = 0; type_kind = kind; - type_layout = layout; + type_jkind = jkind; type_loc = Location.none; type_private = Asttypes.Public; type_manifest = manifest; @@ -193,14 +192,14 @@ let common_initial_env add_type add_extension empty_env = let add_type = mk_add_type add_type and add_type1 type_ident ?(kind=fun _ -> Type_abstract Abstract_def) - ?(layout=Layout.value ~why:(Primitive type_ident)) + ?(jkind=Jkind.value ~why:(Primitive type_ident)) ~variance ~separability env = - let param = newgenvar (Layout.value ~why:Type_argument) in + let param = newgenvar (Jkind.value ~why:Type_argument) in let decl = {type_params = [param]; type_arity = 1; type_kind = kind param; - type_layout = layout; + type_jkind = jkind; type_loc = Location.none; type_private = Asttypes.Public; type_manifest = None; @@ -215,12 +214,12 @@ let common_initial_env add_type add_extension empty_env = in add_type type_ident decl env in - let add_extension id args layouts = + let add_extension id args jkinds = add_extension id { ext_type_path = path_exn; ext_type_params = []; ext_args = Cstr_tuple (List.map (fun x -> (x, Unrestricted)) args); - ext_arg_layouts = layouts; + ext_arg_jkinds = jkinds; ext_constant = args = []; ext_ret_type = None; ext_private = Asttypes.Public; @@ -231,7 +230,7 @@ let common_initial_env add_type add_extension empty_env = ext_uid = Uid.of_predef_id id; } in - let variant constrs layouts = Type_variant (constrs, Variant_boxed layouts) in + let variant constrs jkinds = Type_variant (constrs, Variant_boxed jkinds) in empty_env (* Predefined types *) |> add_type1 ident_array @@ -243,15 +242,15 @@ let common_initial_env add_type add_extension empty_env = |> add_type ident_bool ~kind:(variant [cstr ident_false []; cstr ident_true []] [| [| |]; [| |] |]) - ~layout:(Layout.immediate ~why:Enumeration) - |> add_type ident_char ~layout:(Layout.immediate ~why:(Primitive ident_char)) + ~jkind:(Jkind.immediate ~why:Enumeration) + |> add_type ident_char ~jkind:(Jkind.immediate ~why:(Primitive ident_char)) |> add_type ident_exn ~kind:Type_open - ~layout:(Layout.value ~why:Extensible_variant) + ~jkind:(Jkind.value ~why:Extensible_variant) |> add_type ident_extension_constructor |> add_type ident_float |> add_type ident_floatarray - |> add_type ident_int ~layout:(Layout.immediate ~why:(Primitive ident_int)) + |> add_type ident_int ~jkind:(Jkind.immediate ~why:(Primitive ident_int)) |> add_type ident_int32 |> add_type ident_int64 |> add_type1 ident_lazy_t @@ -264,45 +263,45 @@ let common_initial_env add_type add_extension empty_env = variant [cstr ident_nil []; cstr ident_cons [tvar, Unrestricted; type_list tvar, Unrestricted]] - [| [| |]; [| Layout.value ~why:Type_argument; - Layout.value ~why:Boxed_variant |] |] ) - ~layout:(Layout.value ~why:Boxed_variant) + [| [| |]; [| Jkind.value ~why:Type_argument; + Jkind.value ~why:Boxed_variant |] |] ) + ~jkind:(Jkind.value ~why:Boxed_variant) |> add_type ident_nativeint |> add_type1 ident_option ~variance:Variance.covariant ~separability:Separability.Ind ~kind:(fun tvar -> variant [cstr ident_none []; cstr ident_some [tvar, Unrestricted]] - [| [| |]; [| Layout.value ~why:Type_argument |] |]) - ~layout:(Layout.value ~why:Boxed_variant) + [| [| |]; [| Jkind.value ~why:Type_argument |] |]) + ~jkind:(Jkind.value ~why:Boxed_variant) |> add_type ident_string |> add_type ident_unboxed_float - ~layout:(Layout.float64 ~why:(Primitive ident_unboxed_float)) + ~jkind:(Jkind.float64 ~why:(Primitive ident_unboxed_float)) |> add_type ident_unit ~kind:(variant [cstr ident_void []] [| [| |] |]) - ~layout:(Layout.immediate ~why:Enumeration) + ~jkind:(Jkind.immediate ~why:Enumeration) (* Predefined exceptions - alphabetical order *) |> add_extension ident_assert_failure [newgenty (Ttuple[type_string; type_int; type_int])] - [| Layout.value ~why:Tuple |] + [| Jkind.value ~why:Tuple |] |> add_extension ident_division_by_zero [] [||] |> add_extension ident_end_of_file [] [||] |> add_extension ident_failure [type_string] - [| Layout.value ~why:(Primitive ident_string) |] + [| Jkind.value ~why:(Primitive ident_string) |] |> add_extension ident_invalid_argument [type_string] - [| Layout.value ~why:(Primitive ident_string) |] + [| Jkind.value ~why:(Primitive ident_string) |] |> add_extension ident_match_failure [newgenty (Ttuple[type_string; type_int; type_int])] - [| Layout.value ~why:Tuple |] + [| Jkind.value ~why:Tuple |] |> add_extension ident_not_found [] [||] |> add_extension ident_out_of_memory [] [||] |> add_extension ident_stack_overflow [] [||] |> add_extension ident_sys_blocked_io [] [||] |> add_extension ident_sys_error [type_string] - [| Layout.value ~why:(Primitive ident_string) |] + [| Jkind.value ~why:(Primitive ident_string) |] |> add_extension ident_undefined_recursive_module [newgenty (Ttuple[type_string; type_int; type_int])] - [| Layout.value ~why:Tuple |] + [| Jkind.value ~why:Tuple |] let build_initial_env add_type add_exception empty_env = let common = common_initial_env add_type add_exception empty_env in diff --git a/ocaml/typing/primitive.ml b/ocaml/typing/primitive.ml index 3dcabbd1b53..42baefb6228 100644 --- a/ocaml/typing/primitive.ml +++ b/ocaml/typing/primitive.ml @@ -17,7 +17,6 @@ open Misc open Parsetree -open Jkind type boxed_integer = Pnativeint | Pint32 | Pint64 @@ -26,7 +25,7 @@ type vec128_type = Int8x16 | Int16x8 | Int32x4 | Int64x2 | Float32x4 | Float64x2 type boxed_vector = Pvec128 of vec128_type type native_repr = - | Same_as_ocaml_repr of Sort.const + | Same_as_ocaml_repr of Jkind.Sort.const | Unboxed_float | Unboxed_vector of boxed_vector | Unboxed_integer of boxed_integer @@ -101,8 +100,8 @@ let simple_on_values ~name ~arity ~alloc = prim_coeffects = Has_coeffects; prim_native_name = ""; prim_native_repr_args = - make_native_repr_args arity (Prim_global, Same_as_ocaml_repr Sort.Value); - prim_native_repr_res = (Prim_global, Same_as_ocaml_repr Sort.Value) } + make_native_repr_args arity (Prim_global, Same_as_ocaml_repr Jkind.Sort.Value); + prim_native_repr_res = (Prim_global, Same_as_ocaml_repr Jkind.Sort.Value) } let make ~name ~alloc ~c_builtin ~effects ~coeffects ~native_name ~native_repr_args ~native_repr_res = @@ -332,7 +331,7 @@ let equal_boxed_vector_size bi1 bi2 = let equal_native_repr nr1 nr2 = match nr1, nr2 with - | Same_as_ocaml_repr s1, Same_as_ocaml_repr s2 -> Sort.equal_const s1 s2 + | Same_as_ocaml_repr s1, Same_as_ocaml_repr s2 -> Jkind.Sort.equal_const s1 s2 | Same_as_ocaml_repr _, (Unboxed_float | Unboxed_integer _ | Untagged_int | Unboxed_vector _) -> false | Unboxed_float, Unboxed_float -> true @@ -370,7 +369,7 @@ let native_name_is_external p = let sort_of_native_repr = function | Same_as_ocaml_repr s -> s - | (Unboxed_float | Unboxed_integer _ | Untagged_int | Unboxed_vector _) -> Sort.Value + | (Unboxed_float | Unboxed_integer _ | Untagged_int | Unboxed_vector _) -> Jkind.Sort.Value let report_error ppf err = match err with diff --git a/ocaml/typing/printtyp.ml b/ocaml/typing/printtyp.ml index 8e031e13412..ca8f7ed3a68 100644 --- a/ocaml/typing/printtyp.ml +++ b/ocaml/typing/printtyp.ml @@ -22,7 +22,6 @@ open Longident open Path open Asttypes open Types -open Layouts open Mode open Btype open Outcometree @@ -30,40 +29,40 @@ open Outcometree module String = Misc.Stdlib.String module Int = Misc.Stdlib.Int -(* Note [When to print layout annotations] +(* Note [When to print jkind annotations] ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Layout annotations are only occasionally necessary to write - (compilation can often infer layouts), so when should we print + Jkind annotations are only occasionally necessary to write + (compilation can often infer jkinds), so when should we print them? This Note addresses all the cases. - Case (C1). The layout on a type declaration, like + Case (C1). The jkind on a type declaration, like [type 'a t : <> = ...]. - We print the layout when it cannot be inferred from the rest of what is - printed. Specifically, we print the user-written layout in both of these + We print the jkind when it cannot be inferred from the rest of what is + printed. Specifically, we print the user-written jkind in both of these cases: (C1.1) The type declaration is abstract and has no manifest (i.e., it's written without any [=]-signs). - In this case, there is no way to know the layout without the annotation. + In this case, there is no way to know the jkind without the annotation. It is possible we might print a redundant [ : value ] annotation, but if the user included this, they are probably happy to have it be printed, too. (C1.2) The type is [@@unboxed]. If an [@@unboxed] type is recursive, it can - be impossible to deduce the layout. We thus defer to the user in determining - whether to print the layout annotation. + be impossible to deduce the jkind. We thus defer to the user in determining + whether to print the jkind annotation. - Case (C2). The layout on a type parameter to a type, like + Case (C2). The jkind on a type parameter to a type, like [type ('a : <>) t = ...]. - This layout is printed if both of the following are true: + This jkind is printed if both of the following are true: - (C2.1) The layout is something other than the default [value]. + (C2.1) The jkind is something other than the default [value]. (* CR layouts reisenberg: update when the default changes *) (C2.2) The variable has no constraints on it. (If there is a constraint, - the constraint determines the layout, so printing the layout is + the constraint determines the jkind, so printing the jkind is redundant.) We *could*, in theory, print this only when it cannot be inferred. @@ -75,15 +74,15 @@ module Int = Misc.Stdlib.Int Another design possibility is to pass in verbosity level as some kind of flag. - Case (C3). The layout on a universal type variable, like + Case (C3). The jkind on a universal type variable, like [val f : ('a : <>). 'a -> 'a]. - We should print this layout annotation whenever it is neither the + We should print this jkind annotation whenever it is neither the default [value] nor an unfilled sort variable. (But see (X1) below.) (* CR layouts reisenberg: update when the default changes *) This is a challenge, though, because the type in a [val] does not explicitly quantify its free variables. So we must collect the free - variables, look to see whether any have interesting layouts, and + variables, look to see whether any have interesting jkinds, and print the whole set of variables if any of them do. This is all implemented in [extract_qtvs], used also in a number of other places we do quantification (e.g. gadt-syntax constructors). @@ -547,7 +546,7 @@ let strings_of_paths namespace p = List.map (Format.asprintf "%a" !Oprint.out_ident) trees let () = Env.print_path := path -let () = Layouts.Layout.set_printtyp_path path +let () = Jkind.set_printtyp_path path (* Print a recursive annotation *) @@ -603,9 +602,9 @@ let rec raw_type ppf ty = end and raw_type_list tl = raw_list raw_type tl and raw_type_desc ppf = function - Tvar { name; layout } -> + Tvar { name; jkind } -> fprintf ppf "Tvar (@,%a,@,%s)" print_name name - (Layout.to_string layout) + (Jkind.to_string jkind) | Tarrow((l,arg,ret),t1,t2,c) -> fprintf ppf "@[Tarrow((\"%s\",%a,%a),@,%a,@,%a,@,%s)@]" (string_of_label l) @@ -634,9 +633,9 @@ and raw_type_desc ppf = function | Tsubst (t, None) -> fprintf ppf "@[<1>Tsubst@,(%a,None)@]" raw_type t | Tsubst (t, Some t') -> fprintf ppf "@[<1>Tsubst@,(%a,@ Some%a)@]" raw_type t raw_type t' - | Tunivar { name; layout } -> + | Tunivar { name; jkind } -> fprintf ppf "Tunivar (@,%a,@,%s)" print_name name - (Layout.to_string layout) + (Jkind.to_string jkind) | Tpoly (t, tl) -> fprintf ppf "@[Tpoly(@,%a,@,%a)@]" raw_type t @@ -1181,14 +1180,14 @@ let add_type_to_preparation = prepare_type let print_labels = ref true (* returns None for [value], according to (C2.1) from - Note [When to print layout annotations] *) -let out_layout_option_of_layout layout = - match Layout.get layout with + Note [When to print jkind annotations] *) +let out_jkind_option_of_jkind jkind = + match Jkind.get jkind with | Const Value -> None | Const clay -> Some (Olay_const clay) | Var v -> (* This handles (X1). *) if !Clflags.verbose_types - then Some (Olay_var (Sort.var_name v)) + then Some (Olay_var (Jkind.Sort.var_name v)) else None let tree_of_mode mode = @@ -1339,13 +1338,13 @@ let rec tree_of_typexp mode ty = (* qtvs = quantified type variables *) (* this silently drops any arguments that are not generic Tvar or Tunivar *) and tree_of_qtvs qtvs = - let tree_of_qtv v : (string * out_layout option) option = - let tree layout = Some (Names.name_of_type Names.new_name v, - out_layout_option_of_layout layout) + let tree_of_qtv v : (string * out_jkind option) option = + let tree jkind = Some (Names.name_of_type Names.new_name v, + out_jkind_option_of_jkind jkind) in match v.desc with - | Tvar { layout } when v.level = generic_level -> tree layout - | Tunivar { layout } -> tree layout + | Tvar { jkind } when v.level = generic_level -> tree jkind + | Tunivar { jkind } -> tree jkind | _ -> None in List.filter_map tree_of_qtv qtvs @@ -1481,26 +1480,26 @@ let filter_params tyl = let prepare_type_constructor_arguments args = List.iter prepare_type (tys_of_constr_args args) -(* returns an empty list if no variables in the list have a layout annotation *) +(* returns an empty list if no variables in the list have a jkind annotation *) let zap_qtvs_if_boring qtvs = if List.exists (fun (_v, l) -> Option.is_some l) qtvs then qtvs else [] -(* get the free variables with their layouts; do this *after* converting the +(* get the free variables with their jkinds; do this *after* converting the type itself, so that the type names are available. - This implements Case (C3) from Note [When to print layout annotations]. *) + This implements Case (C3) from Note [When to print jkind annotations]. *) let extract_qtvs tyl = let fvs = Ctype.free_non_row_variables_of_list tyl in let tfvs = List.map Transient_expr.repr fvs in - let vars_layouts = tree_of_qtvs tfvs in - zap_qtvs_if_boring vars_layouts + let vars_jkinds = tree_of_qtvs tfvs in + zap_qtvs_if_boring vars_jkinds -let param_layout ty = +let param_jkind ty = match get_desc ty with - | Tvar { layout; _ } | Tunivar { layout; _ } -> - out_layout_option_of_layout layout - | _ -> None (* this is (C2.2) from Note [When to print layout annotations] *) + | Tvar { jkind; _ } | Tunivar { jkind; _ } -> + out_jkind_option_of_jkind jkind + | _ -> None (* this is (C2.2) from Note [When to print jkind annotations] *) let rec tree_of_type_decl id decl = @@ -1514,9 +1513,9 @@ let rec tree_of_type_decl id decl = List.iter (fun ty -> match get_desc ty with - | Tvar { name = Some "_"; layout } + | Tvar { name = Some "_"; jkind } when List.exists (eq_type ty) vars -> - set_type_desc ty (Tvar {name = None; layout}) + set_type_desc ty (Tvar {name = None; jkind}) | _ -> ()) params | None -> () @@ -1597,7 +1596,7 @@ let rec tree_of_type_decl id decl = { oparam_name = type_param (tree_of_typexp Type ty); oparam_variance = variance; oparam_injectivity = injectivity; - oparam_layout = param_layout ty } + oparam_jkind = param_jkind ty } in (Ident.name id, List.map2 mk_param params vari) @@ -1636,7 +1635,7 @@ let rec tree_of_type_decl id decl = false in (* The algorithm for setting [lay] here is described as Case (C1) in - Note [When to print layout annotations] *) + Note [When to print jkind annotations] *) let lay = match ty, unboxed with | (Otyp_abstract, _) | (_, true) -> (* (C1.1) from the Note corresponds to Otyp_abstract. Anything @@ -1645,18 +1644,18 @@ let rec tree_of_type_decl id decl = unboxed case. Because this is just printing, we liberally allow [@@immediate]. *) begin match - Builtin_attributes.layout ~legacy_immediate:true decl.type_attributes + Builtin_attributes.jkind ~legacy_immediate:true decl.type_attributes with | Ok annot -> annot | Error annot -> Some annot (* don't care here about extensions *) end - | _ -> None (* other cases have no layout annotation *) + | _ -> None (* other cases have no jkind annotation *) in { otype_name = name; otype_params = args; otype_type = ty; otype_private = priv; - otype_layout = Option.map (fun { txt } -> Olay_const txt) lay; + otype_jkind = Option.map (fun { txt } -> Olay_const txt) lay; otype_unboxed = unboxed; otype_cstrs = constraints } @@ -1918,9 +1917,9 @@ let tree_of_class_param param var_inj = end; oparam_variance = variance; oparam_injectivity = injectivity; - (* CR layouts: fix next line when adding support for layout + (* CR layouts: fix next line when adding support for jkind annotations on class type parameters *) - oparam_layout = param_layout param } + oparam_jkind = param_jkind param } let class_variance = let open Variance in let open Asttypes in @@ -2014,7 +2013,7 @@ let dummy = type_params = []; type_arity = 0; type_kind = Type_abstract Abstract_def; - type_layout = Layout.any ~why:Dummy_layout; + type_jkind = Jkind.any ~why:Dummy_jkind; type_private = Public; type_manifest = None; type_variance = []; @@ -2264,17 +2263,17 @@ let same_path t t' = type 'a diff = Same of 'a | Diff of 'a * 'a let trees_of_type_expansion' - ~var_layouts mode Errortrace.{ty = t; expanded = t'} = + ~var_jkinds mode Errortrace.{ty = t; expanded = t'} = let tree_of_typexp' ty = let out = tree_of_typexp mode ty in - if var_layouts then + if var_jkinds then match get_desc ty with - | Tvar { layout; _ } | Tunivar { layout; _ } -> - let olay = match Layouts.Layout.get layout with + | Tvar { jkind; _ } | Tunivar { jkind; _ } -> + let olay = match Jkind.get jkind with | Const clay -> Olay_const clay - | Var v -> Olay_var (Sort.var_name v) + | Var v -> Olay_var (Jkind.Sort.var_name v) in - Otyp_layout_annot (out, olay) + Otyp_jkind_annot (out, olay) | _ -> out else @@ -2296,7 +2295,7 @@ let trees_of_type_expansion' end let trees_of_type_expansion = - trees_of_type_expansion' ~var_layouts:false + trees_of_type_expansion' ~var_jkinds:false let type_expansion ppf = function | Same t -> !Oprint.out_type ppf t @@ -2394,7 +2393,7 @@ let hide_variant_name t = (Tvariant (create_row ~fields ~fixed ~closed ~name:None ~more:(newvar2 (get_level more) - (Layout.value ~why:Row_variable)))) + (Jkind.value ~why:Row_variable)))) | _ -> t let prepare_expansion Errortrace.{ty; expanded} = @@ -2595,17 +2594,17 @@ let explanation (type variety) intro prev env {[ The type int occurs inside int list -> 'a |} *) end - | Errortrace.Bad_layout (t,e) -> + | Errortrace.Bad_jkind (t,e) -> Some (dprintf "@ @[%a@]" - (Layout.Violation.report_with_offender + (Jkind.Violation.report_with_offender ~offender:(fun ppf -> type_expr ppf t)) e) - | Errortrace.Bad_layout_sort (t,e) -> + | Errortrace.Bad_jkind_sort (t,e) -> Some (dprintf "@ @[%a@]" - (Layout.Violation.report_with_offender_sort + (Jkind.Violation.report_with_offender_sort ~offender:(fun ppf -> type_expr ppf t)) e) - | Errortrace.Unequal_var_layouts (t1,l1,t2,l2) -> + | Errortrace.Unequal_var_jkinds (t1,l1,t2,l2) -> let fmt_history t = - Layout.format_history ~intro:(fun ppf -> type_expr ppf t) + Jkind.format_history ~intro:(fun ppf -> type_expr ppf t) in Some (dprintf "@ because their layouts are different.@[%a%a@]" (fmt_history t1) l1 (fmt_history t2) l2) @@ -2642,11 +2641,11 @@ let prepare_expansion_head empty_tr = function Some (Errortrace.map_diff (may_prepare_expansion empty_tr) d) | _ -> None -let head_error_printer ~var_layouts mode txt_got txt_but = function +let head_error_printer ~var_jkinds mode txt_got txt_but = function | None -> ignore | Some d -> let d = - Errortrace.map_diff (trees_of_type_expansion' ~var_layouts mode) d + Errortrace.map_diff (trees_of_type_expansion' ~var_jkinds mode) d in dprintf "%t@;<1 2>%a@ %t@;<1 2>%a" txt_got type_expansion d.Errortrace.got @@ -2670,8 +2669,8 @@ let error trace_format mode subst env tr txt1 ppf txt2 ty_expect_explanation = Errortrace.{ty_exp with expanded = hide_variant_name ty_exp.expanded}) tr in - let layout_error = match Misc.last tr with - | Some (Bad_layout _ | Bad_layout_sort _ | Unequal_var_layouts _) -> + let jkind_error = match Misc.last tr with + | Some (Bad_jkind _ | Bad_jkind_sort _ | Unequal_var_jkinds _) -> true | Some (Diff _ | Escape _ | Variant _ | Obj _ | Incompatible_fields _ | Rec_occur _) @@ -2688,7 +2687,7 @@ let error trace_format mode subst env tr txt1 ppf txt2 ty_expect_explanation = let head = prepare_expansion_head (tr=[]) elt in let tr = List.map (Errortrace.map_diff prepare_expansion) tr in let head_error = - head_error_printer ~var_layouts:layout_error mode txt1 txt2 head + head_error_printer ~var_jkinds:jkind_error mode txt1 txt2 head in let tr = trees_of_trace mode tr in fprintf ppf @@ -2699,8 +2698,8 @@ let error trace_format mode subst env tr txt1 ppf txt2 ty_expect_explanation = ty_expect_explanation (trace false (incompatibility_phrase trace_format)) tr (explain mis); - if env <> Env.empty && not layout_error - (* the layouts mechanism has its own way of reporting missing cmis *) + if env <> Env.empty && not jkind_error + (* the jkinds mechanism has its own way of reporting missing cmis *) then warn_on_missing_defs env ppf head; Conflicts.print_explanations ppf; print_labels := true diff --git a/ocaml/typing/printtyped.ml b/ocaml/typing/printtyped.ml index 54cb9f9efd6..753f7c57115 100644 --- a/ocaml/typing/printtyped.ml +++ b/ocaml/typing/printtyped.ml @@ -155,7 +155,7 @@ let arg_label i ppf = function | Labelled s -> line i ppf "Labelled \"%s\"\n" s ;; -let typevar_layout ~print_quote ppf (v, l) = +let typevar_jkind ~print_quote ppf (v, l) = let pptv = if print_quote then Printast.tyvar @@ -165,15 +165,15 @@ let typevar_layout ~print_quote ppf (v, l) = | None -> fprintf ppf " %a" pptv v | Some lay -> fprintf ppf " (%a : %a)" pptv v - Jane_syntax.Layouts.Pprint.const_layout lay + Jane_syntax.Layouts.Pprint.const_jkind lay let typevars ppf vs = - List.iter (typevar_layout ~print_quote:true ppf) vs + List.iter (typevar_jkind ~print_quote:true ppf) vs ;; -let layout_array i ppf layouts = - array (i+1) (fun _ ppf l -> fprintf ppf "%a;@ " Jkind.Layout.format l) - ppf layouts +let jkind_array i ppf jkinds = + array (i+1) (fun _ ppf l -> fprintf ppf "%a;@ " Jkind.format l) + ppf jkinds let tag ppf = let open Types in function | Ordinary {src_index;runtime_tag} -> @@ -183,16 +183,16 @@ let tag ppf = let open Types in function let variant_representation i ppf = let open Types in function | Variant_unboxed -> line i ppf "Variant_unboxed\n" - | Variant_boxed layouts -> + | Variant_boxed jkinds -> line i ppf "Variant_boxed %a\n" - (array (i+1) (fun _ ppf -> layout_array (i+1) ppf)) layouts + (array (i+1) (fun _ ppf -> jkind_array (i+1) ppf)) jkinds | Variant_extensible -> line i ppf "Variant_inlined\n" let record_representation i ppf = let open Types in function | Record_unboxed -> line i ppf "Record_unboxed\n" - | Record_boxed layouts -> - line i ppf "Record_boxed %a\n" (layout_array i) layouts + | Record_boxed jkinds -> + line i ppf "Record_boxed %a\n" (jkind_array i) jkinds | Record_inlined (t,v) -> line i ppf "Record_inlined (%a, %a)\n" tag t (variant_representation i) v | Record_float -> line i ppf "Record_float\n" @@ -209,17 +209,17 @@ let attributes i ppf l = Printast.payload (i + 1) ppf a.Parsetree.attr_payload ) l -let layout_annotation i ppf layout = - line i ppf "%s" (Jkind.Layout.string_of_const layout) +let jkind_annotation i ppf jkind = + line i ppf "%s" (Jkind.string_of_const jkind) let rec core_type i ppf x = line i ppf "core_type %a\n" fmt_location x.ctyp_loc; attributes i ppf x.ctyp_attributes; let i = i+1 in match x.ctyp_desc with - | Ttyp_var (s, layout) -> + | Ttyp_var (s, jkind) -> line i ppf "Ttyp_var %s\n" (Option.value ~default:"_" s); - option i layout_annotation ppf layout + option i jkind_annotation ppf jkind | Ttyp_arrow (l, ct1, ct2) -> line i ppf "Ttyp_arrow\n"; arg_label i ppf l; @@ -251,13 +251,13 @@ let rec core_type i ppf x = | Ttyp_class (li, _, l) -> line i ppf "Ttyp_class %a\n" fmt_path li; list i core_type ppf l; - | Ttyp_alias (ct, s, layout) -> + | Ttyp_alias (ct, s, jkind) -> line i ppf "Ttyp_alias \"%s\"\n" (Option.value s ~default:"_"); core_type i ppf ct; - option i layout_annotation ppf layout + option i jkind_annotation ppf jkind | Ttyp_poly (sl, ct) -> line i ppf "Ttyp_poly%a\n" - (fun ppf -> List.iter (typevar_layout ~print_quote:true ppf)) sl; + (fun ppf -> List.iter (typevar_jkind ~print_quote:true ppf)) sl; core_type i ppf ct; | Ttyp_package { pack_path = s; pack_fields = l } -> line i ppf "Ttyp_package %a\n" fmt_path s; @@ -354,7 +354,7 @@ and expression_extra i ppf (x,_,attrs) = attributes i ppf attrs; option i core_type ppf cto; | Texp_newtype (s, lay) -> - line i ppf "Texp_newtype %a\n" (typevar_layout ~print_quote:false) (s, lay); + line i ppf "Texp_newtype %a\n" (typevar_jkind ~print_quote:false) (s, lay); attributes i ppf attrs; and alloc_mode i ppf m = diff --git a/ocaml/typing/subst.ml b/ocaml/typing/subst.ml index ebfef150d04..322950347b5 100644 --- a/ocaml/typing/subst.ml +++ b/ocaml/typing/subst.ml @@ -18,23 +18,22 @@ open Misc open Path open Types -open Layouts open Btype open Local_store -type layout_error = - | Unconstrained_layout_variable +type jkind_error = + | Unconstrained_jkind_variable -exception Error of Location.t * layout_error +exception Error of Location.t * jkind_error type type_replacement = | Path of Path.t | Type_function of { params : type_expr list; body : type_expr } type additional_action = - | Prepare_for_saving of (Location.t -> layout -> layout) - (* The [Prepare_for_saving] function should be applied to all layouts when + | Prepare_for_saving of (Location.t -> jkind -> jkind) + (* The [Prepare_for_saving] function should be applied to all jkinds when saving; this commons them up, truncates their histories, and runs a check that all unconstrained variables have been defaulted to value. *) | Duplicate_variables @@ -95,15 +94,15 @@ let with_additional_action (config : additional_action_config) s = match config with | Duplicate_variables -> Duplicate_variables | Prepare_for_saving -> - let reason = Layout.Imported in - let any = Layout.of_const Any ~why:reason in - let void = Layout.of_const Void ~why:reason in - let value = Layout.of_const Value ~why:reason in - let immediate = Layout.of_const Immediate ~why:reason in - let immediate64 = Layout.of_const Immediate64 ~why:reason in - let float64 = Layout.of_const Float64 ~why:reason in - let prepare_layout loc lay = - match Layout.get lay with + let reason = Jkind.Imported in + let any = Jkind.of_const Any ~why:reason in + let void = Jkind.of_const Void ~why:reason in + let value = Jkind.of_const Value ~why:reason in + let immediate = Jkind.of_const Immediate ~why:reason in + let immediate64 = Jkind.of_const Immediate64 ~why:reason in + let float64 = Jkind.of_const Float64 ~why:reason in + let prepare_jkind loc lay = + match Jkind.get lay with | Const Any -> any | Const Void -> void | Const Value -> value @@ -111,20 +110,20 @@ let with_additional_action (config : additional_action_config) s = | Const Immediate64 -> immediate64 | Const Float64 -> float64 | Var var -> begin - match Sort.var_constraint var with + match Jkind.Sort.var_constraint var with | Some Void -> void | Some Value -> value | Some Float64 -> float64 - | None -> raise(Error (loc, Unconstrained_layout_variable)) + | None -> raise(Error (loc, Unconstrained_jkind_variable)) end in - Prepare_for_saving prepare_layout + Prepare_for_saving prepare_jkind in { s with additional_action; last_compose = None } -let apply_prepare_layout s lay loc = +let apply_prepare_jkind s lay loc = match s.additional_action with - | Prepare_for_saving prepare_layout -> prepare_layout loc lay + | Prepare_for_saving prepare_jkind -> prepare_jkind loc lay | Duplicate_variables | No_action -> lay let change_locs s loc = { s with loc = Some loc; last_compose = None } @@ -235,17 +234,17 @@ let newpersty desc = it just makes an error message more useful in case of a compiler bug. We may decide to get rid of this check someday, too. *) -let location_for_layout_check_errors = ref Location.none +let location_for_jkind_check_errors = ref Location.none -let norm desc ~prepare_layout = +let norm desc ~prepare_jkind = match desc with - | Tvar { name; layout } -> - let loc = !location_for_layout_check_errors in - Tvar { name; layout = prepare_layout loc layout } - | Tunivar { name; layout } -> - let loc = !location_for_layout_check_errors in - Tunivar { name; layout = prepare_layout loc layout } - | desc -> desc + | Tvar { name; jkind } -> + let loc = !location_for_jkind_check_errors in + Tvar { name; jkind = prepare_jkind loc jkind } + | Tunivar { name; jkind } -> + let loc = !location_for_jkind_check_errors in + Tunivar { name; jkind = prepare_jkind loc jkind } + | desc -> desc let ctype_apply_env_empty = ref (fun _ -> assert false) @@ -263,8 +262,8 @@ let rec typexp copy_scope s ty = let ty' = match s.additional_action with | Duplicate_variables -> newpersty desc - | Prepare_for_saving prepare_layout -> - newpersty (norm desc ~prepare_layout) + | Prepare_for_saving prepare_jkind -> + newpersty (norm desc ~prepare_jkind) | No_action -> newty2 ~level:(get_level ty) desc in For_copy.redirect_desc copy_scope ty (Tsubst (ty', None)); @@ -285,10 +284,10 @@ let rec typexp copy_scope s ty = let has_fixed_row = not (is_Tconstr ty) && is_constr_row ~allow_ident:false tm in (* Make a stub *) - let layout = Layout.any ~why:Dummy_layout in + let jkind = Jkind.any ~why:Dummy_jkind in let ty' = - if should_duplicate_vars then newpersty (Tvar {name = None; layout}) - else newgenstub ~scope:(get_scope ty) layout + if should_duplicate_vars then newpersty (Tvar {name = None; jkind}) + else newgenstub ~scope:(get_scope ty) jkind in For_copy.redirect_desc copy_scope ty (Tsubst (ty', None)); let desc = @@ -375,10 +374,10 @@ let rec typexp copy_scope s ty = - [s.loc] is a way for the external client of the module to indicate the location of the copy. - [loc] is internally-populated and is the location of the AST construct - that encloses the type (and is used only in errors in the layout check). + that encloses the type (and is used only in errors in the jkind check). *) let typexp copy_scope s loc ty = - location_for_layout_check_errors := loc; + location_for_jkind_check_errors := loc; typexp copy_scope s ty (* @@ -394,7 +393,7 @@ let label_declaration copy_scope s l = ld_id = l.ld_id; ld_mutable = l.ld_mutable; ld_global = l.ld_global; - ld_layout = apply_prepare_layout s l.ld_layout l.ld_loc; + ld_jkind = apply_prepare_jkind s l.ld_jkind l.ld_loc; ld_type = typexp copy_scope s l.ld_loc l.ld_type; ld_loc = loc s l.ld_loc; ld_attributes = attrs s l.ld_attributes; @@ -418,26 +417,26 @@ let constructor_declaration copy_scope s c = } (* called only when additional_action is [Prepare_for_saving] *) -let constructor_tag ~prepare_layout loc = function +let constructor_tag ~prepare_jkind loc = function | Ordinary _ as tag -> tag | Extension (path, lays) -> - Extension (path, Array.map (prepare_layout loc) lays) + Extension (path, Array.map (prepare_jkind loc) lays) (* called only when additional_action is [Prepare_for_saving] *) -let variant_representation ~prepare_layout loc = function +let variant_representation ~prepare_jkind loc = function | Variant_unboxed -> Variant_unboxed | Variant_boxed layss -> - Variant_boxed (Array.map (Array.map (prepare_layout loc)) layss) + Variant_boxed (Array.map (Array.map (prepare_jkind loc)) layss) | Variant_extensible -> Variant_extensible (* called only when additional_action is [Prepare_for_saving] *) -let record_representation ~prepare_layout loc = function +let record_representation ~prepare_jkind loc = function | Record_unboxed -> Record_unboxed | Record_inlined (tag, variant_rep) -> - Record_inlined (constructor_tag ~prepare_layout loc tag, - variant_representation ~prepare_layout loc variant_rep) + Record_inlined (constructor_tag ~prepare_jkind loc tag, + variant_representation ~prepare_jkind loc variant_rep) | Record_boxed lays -> - Record_boxed (Array.map (prepare_layout loc) lays) + Record_boxed (Array.map (prepare_jkind loc) lays) | Record_float -> Record_float | Record_ufloat -> Record_ufloat @@ -451,8 +450,8 @@ let type_declaration' copy_scope s decl = let rep = match s.additional_action with | No_action | Duplicate_variables -> rep - | Prepare_for_saving prepare_layout -> - variant_representation ~prepare_layout decl.type_loc rep + | Prepare_for_saving prepare_jkind -> + variant_representation ~prepare_jkind decl.type_loc rep in Type_variant (List.map (constructor_declaration copy_scope s) cstrs, rep) @@ -460,8 +459,8 @@ let type_declaration' copy_scope s decl = let rep = match s.additional_action with | No_action | Duplicate_variables -> rep - | Prepare_for_saving prepare_layout -> - record_representation ~prepare_layout decl.type_loc rep + | Prepare_for_saving prepare_jkind -> + record_representation ~prepare_jkind decl.type_loc rep in Type_record (List.map (label_declaration copy_scope s) lbls, rep) | Type_open -> Type_open @@ -472,12 +471,12 @@ let type_declaration' copy_scope s decl = None -> None | Some ty -> Some(typexp copy_scope s decl.type_loc ty) end; - type_layout = + type_jkind = begin match s.additional_action with - | Prepare_for_saving prepare_layout -> - prepare_layout decl.type_loc decl.type_layout - | Duplicate_variables | No_action -> decl.type_layout + | Prepare_for_saving prepare_jkind -> + prepare_jkind decl.type_loc decl.type_jkind + | Duplicate_variables | No_action -> decl.type_jkind end; type_private = decl.type_private; type_variance = decl.type_variance; @@ -559,10 +558,10 @@ let extension_constructor' copy_scope s ext = ext_type_params = List.map (typexp copy_scope s ext.ext_loc) ext.ext_type_params; ext_args = constructor_arguments copy_scope s ext.ext_loc ext.ext_args; - ext_arg_layouts = begin match s.additional_action with - | Prepare_for_saving prepare_layout -> - Array.map (prepare_layout ext.ext_loc) ext.ext_arg_layouts - | Duplicate_variables | No_action -> ext.ext_arg_layouts + ext_arg_jkinds = begin match s.additional_action with + | Prepare_for_saving prepare_jkind -> + Array.map (prepare_jkind ext.ext_loc) ext.ext_arg_jkinds + | Duplicate_variables | No_action -> ext.ext_arg_jkinds end; ext_constant = ext.ext_constant; ext_ret_type = @@ -922,7 +921,7 @@ let value_description s descr = open Format let report_error ppf = function - | Unconstrained_layout_variable -> + | Unconstrained_jkind_variable -> fprintf ppf "Unconstrained layout variable detected when saving artifacts of \ compilation to disk.@ Please report this error to \ diff --git a/ocaml/typing/tast_iterator.ml b/ocaml/typing/tast_iterator.ml index 0755aa95df1..f8e38516420 100644 --- a/ocaml/typing/tast_iterator.ml +++ b/ocaml/typing/tast_iterator.ml @@ -33,7 +33,7 @@ type iterator = env: iterator -> Env.t -> unit; expr: iterator -> expression -> unit; extension_constructor: iterator -> extension_constructor -> unit; - layout_annotation: iterator -> const_layout -> unit; + jkind_annotation: iterator -> const_jkind -> unit; module_binding: iterator -> module_binding -> unit; module_coercion: iterator -> module_coercion -> unit; module_declaration: iterator -> module_declaration -> unit; @@ -460,8 +460,8 @@ let class_type_field sub {ctf_desc; _} = let typ sub {ctyp_desc; ctyp_env; _} = sub.env sub ctyp_env; match ctyp_desc with - | Ttyp_var (_, layout) -> - Option.iter (sub.layout_annotation sub) layout + | Ttyp_var (_, jkind) -> + Option.iter (sub.jkind_annotation sub) jkind | Ttyp_arrow (_, ct1, ct2) -> sub.typ sub ct1; sub.typ sub ct2 @@ -469,12 +469,12 @@ let typ sub {ctyp_desc; ctyp_env; _} = | Ttyp_constr (_, _, list) -> List.iter (sub.typ sub) list | Ttyp_object (list, _) -> List.iter (sub.object_field sub) list | Ttyp_class (_, _, list) -> List.iter (sub.typ sub) list - | Ttyp_alias (ct, _, layout) -> + | Ttyp_alias (ct, _, jkind) -> sub.typ sub ct; - Option.iter (sub.layout_annotation sub) layout + Option.iter (sub.jkind_annotation sub) jkind | Ttyp_variant (list, _, _) -> List.iter (sub.row_field sub) list | Ttyp_poly (vars, ct) -> - List.iter (fun (_, l) -> Option.iter (sub.layout_annotation sub) l) vars; + List.iter (fun (_, l) -> Option.iter (sub.jkind_annotation sub) l) vars; sub.typ sub ct | Ttyp_package pack -> sub.package_type sub pack @@ -519,7 +519,7 @@ let value_binding sub {vb_pat; vb_expr; _} = let env _sub _ = () -let layout_annotation _sub _ = () +let jkind_annotation _sub _ = () let default_iterator = { @@ -537,7 +537,7 @@ let default_iterator = env; expr; extension_constructor; - layout_annotation; + jkind_annotation; module_binding; module_coercion; module_declaration; diff --git a/ocaml/typing/tast_iterator.mli b/ocaml/typing/tast_iterator.mli index b568c9ba5a1..388a9256da5 100644 --- a/ocaml/typing/tast_iterator.mli +++ b/ocaml/typing/tast_iterator.mli @@ -37,7 +37,7 @@ type iterator = env: iterator -> Env.t -> unit; expr: iterator -> expression -> unit; extension_constructor: iterator -> extension_constructor -> unit; - layout_annotation: iterator -> const_layout -> unit; + jkind_annotation: iterator -> const_jkind -> unit; module_binding: iterator -> module_binding -> unit; module_coercion: iterator -> module_coercion -> unit; module_declaration: iterator -> module_declaration -> unit; diff --git a/ocaml/typing/tast_mapper.ml b/ocaml/typing/tast_mapper.ml index 55d2d0e4230..6334abecec8 100644 --- a/ocaml/typing/tast_mapper.ml +++ b/ocaml/typing/tast_mapper.ml @@ -38,7 +38,7 @@ type mapper = expr: mapper -> expression -> expression; extension_constructor: mapper -> extension_constructor -> extension_constructor; - layout_annotation: mapper -> const_layout -> const_layout; + jkind_annotation: mapper -> const_jkind -> const_jkind; module_binding: mapper -> module_binding -> module_binding; module_coercion: mapper -> module_coercion -> module_coercion; module_declaration: mapper -> module_declaration -> module_declaration; @@ -121,8 +121,8 @@ let structure_item sub {str_desc; str_loc; str_env} = let str_env = sub.env sub str_env in let str_desc = match str_desc with - | Tstr_eval (exp, layout, attrs) -> - Tstr_eval (sub.expr sub exp, layout, attrs) + | Tstr_eval (exp, jkind, attrs) -> + Tstr_eval (sub.expr sub exp, jkind, attrs) | Tstr_value (rec_flag, list) -> let (rec_flag, list) = sub.value_bindings sub (rec_flag, list) in Tstr_value (rec_flag, list) @@ -203,13 +203,13 @@ let type_exception sub x = in {x with tyexn_constructor} -let var_layout sub (v, l) = v, Option.map (sub.layout_annotation sub) l +let var_jkind sub (v, l) = v, Option.map (sub.jkind_annotation sub) l let extension_constructor sub x = let ext_kind = match x.ext_kind with Text_decl(v, ctl, cto) -> - Text_decl(List.map (var_layout sub) v, + Text_decl(List.map (var_jkind sub) v, constructor_args sub ctl, Option.map (sub.typ sub) cto) | Text_rebind _ as d -> d in @@ -369,10 +369,10 @@ let expr sub x = sub.expr sub exp2, Option.map (sub.expr sub) expo ) - | Texp_sequence (exp1, layout, exp2) -> + | Texp_sequence (exp1, jkind, exp2) -> Texp_sequence ( sub.expr sub exp1, - layout, + jkind, sub.expr sub exp2 ) | Texp_while wh -> @@ -697,8 +697,8 @@ let typ sub x = let ctyp_desc = match x.ctyp_desc with | Ttyp_var (_,None) as d -> d - | Ttyp_var (s, Some layout) -> - Ttyp_var (s, Some (sub.layout_annotation sub layout)) + | Ttyp_var (s, Some jkind) -> + Ttyp_var (s, Some (sub.jkind_annotation sub jkind)) | Ttyp_arrow (label, ct1, ct2) -> Ttyp_arrow (label, sub.typ sub ct1, sub.typ sub ct2) | Ttyp_tuple list -> Ttyp_tuple (List.map (sub.typ sub) list) @@ -712,13 +712,13 @@ let typ sub x = lid, List.map (sub.typ sub) list ) - | Ttyp_alias (ct, s, layout) -> + | Ttyp_alias (ct, s, jkind) -> Ttyp_alias (sub.typ sub ct, s, - Option.map (sub.layout_annotation sub) layout) + Option.map (sub.jkind_annotation sub) jkind) | Ttyp_variant (list, closed, labels) -> Ttyp_variant (List.map (sub.row_field sub) list, closed, labels) | Ttyp_poly (vars, ct) -> - Ttyp_poly (List.map (var_layout sub) vars, sub.typ sub ct) + Ttyp_poly (List.map (var_jkind sub) vars, sub.typ sub ct) | Ttyp_package pack -> Ttyp_package (sub.package_type sub pack) in @@ -788,7 +788,7 @@ let value_binding sub x = let env _sub x = x -let layout_annotation _sub l = l +let jkind_annotation _sub l = l let default = { @@ -806,7 +806,7 @@ let default = env; expr; extension_constructor; - layout_annotation; + jkind_annotation; module_binding; module_coercion; module_declaration; diff --git a/ocaml/typing/tast_mapper.mli b/ocaml/typing/tast_mapper.mli index e4f8dbf4335..d27e4840351 100644 --- a/ocaml/typing/tast_mapper.mli +++ b/ocaml/typing/tast_mapper.mli @@ -37,7 +37,7 @@ type mapper = expr: mapper -> expression -> expression; extension_constructor: mapper -> extension_constructor -> extension_constructor; - layout_annotation: mapper -> const_layout -> const_layout; + jkind_annotation: mapper -> const_jkind -> const_jkind; module_binding: mapper -> module_binding -> module_binding; module_coercion: mapper -> module_coercion -> module_coercion; module_declaration: mapper -> module_declaration -> module_declaration; diff --git a/ocaml/typing/typeclass.ml b/ocaml/typing/typeclass.ml index 89c8b68d1cd..4e34bfea5d9 100644 --- a/ocaml/typing/typeclass.ml +++ b/ocaml/typing/typeclass.ml @@ -17,7 +17,6 @@ open Parsetree open Asttypes open Path open Types -open Layouts open Typetexp open Format open Mode @@ -109,7 +108,7 @@ type error = | Duplicate of string * string | Closing_self_type of class_signature | Polymorphic_class_parameter - | Non_value_binding of string * Layout.Violation.t + | Non_value_binding of string * Jkind.Violation.t exception Error of Location.t * Env.t * error exception Error_forward of Location.error @@ -311,8 +310,8 @@ let rec class_type_field env sign self_scope ctf = 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 - env ty (Layout.value ~why:Instance_variable) + Ctype.constrain_type_jkind + env ty (Jkind.value ~why:Instance_variable) with | Ok _ -> () | Error err -> raise (Error(loc, env, Non_value_binding(lab, err))) @@ -327,7 +326,7 @@ let rec class_type_field env sign self_scope ctf = match sty.ptyp_desc, priv with | Ptyp_poly ([],sty'), Public -> let expected_ty = - Ctype.newvar (Layout.value ~why:Object_field) + Ctype.newvar (Jkind.value ~why:Object_field) in add_method loc env lab priv virt expected_ty sign; let returned_cty = @@ -677,8 +676,8 @@ let rec class_field_first_pass self_loc cl_num sign self_scope acc cf = end; begin match - Ctype.constrain_type_layout - val_env ty (Layout.value ~why:Class_field) + Ctype.constrain_type_jkind + val_env ty (Jkind.value ~why:Class_field) with | Ok _ -> () | Error err -> raise (Error(label.loc, val_env, @@ -726,9 +725,9 @@ let rec class_field_first_pass self_loc cl_num sign self_scope acc cf = end; begin match - Ctype.constrain_type_layout + Ctype.constrain_type_jkind val_env definition.exp_type - (Layout.value ~why:Class_field) + (Jkind.value ~why:Class_field) with | Ok _ -> () | Error err -> raise (Error(label.loc, val_env, @@ -798,7 +797,7 @@ let rec class_field_first_pass self_loc cl_num sign self_scope acc cf = in let ty = match sty with - | None -> Ctype.newvar (Layout.value ~why:Object_field) + | None -> Ctype.newvar (Jkind.value ~why:Object_field) | Some sty -> let sty = Ast_helper.Typ.force_poly sty in let cty' = @@ -812,7 +811,7 @@ let rec class_field_first_pass self_loc cl_num sign self_scope acc cf = match get_desc ty with | Tvar _ -> let ty' = - Ctype.newvar (Layout.value ~why:Object_field) + Ctype.newvar (Jkind.value ~why:Object_field) in Ctype.unify val_env (Ctype.newmono ty') ty; Typecore.type_approx val_env sbody ty' @@ -1304,7 +1303,7 @@ and class_expr_aux cl_num val_env met_env virt self_scope scl = Arg ( if not optional || Btype.is_optional l' then let arg = Typecore.type_argument val_env sarg ty ty0 in - arg, Sort.value + arg, Jkind.Sort.value else let ty' = Typecore.extract_option_type val_env ty and ty0' = Typecore.extract_option_type val_env ty0 in @@ -1312,14 +1311,14 @@ and class_expr_aux cl_num val_env met_env virt self_scope scl = Typecore.option_some val_env arg Mode.Value.legacy, (* CR layouts v5: Change the sort when options can hold non-values. *) - Sort.value + Jkind.Sort.value ) in let eliminate_optional_arg () = Arg (Typecore.option_none val_env ty0 Location.none, (* CR layouts v5: Change the sort when options can hold non-values. *) - Sort.value + Jkind.Sort.value ) in let remaining_sargs, arg = @@ -1355,7 +1354,7 @@ and class_expr_aux cl_num val_env met_env virt self_scope scl = 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 + let sort_arg = Jkind.Sort.value in Omitted { mode_closure; mode_arg; mode_ret; sort_arg } end in @@ -1397,10 +1396,10 @@ and class_expr_aux cl_num val_env met_env virt self_scope scl = List.iter (fun (loc, mode, sort) -> Typecore.escape ~loc ~env:val_env ~reason:Other mode; - if not (Sort.equate sort Sort.value) - then let viol = Layout.Violation.of_ (Not_a_sublayout( - Layout.of_sort ~why:Let_binding sort, - Layout.value ~why:Class_let_binding)) + if not (Jkind.Sort.(equate sort value)) + then let viol = Jkind.Violation.of_ (Not_a_subjkind( + Jkind.of_sort ~why:Let_binding sort, + Jkind.value ~why:Class_let_binding)) in raise (Error(loc, met_env, Non_value_binding (Ident.name id, viol))) @@ -1504,16 +1503,16 @@ and class_expr_aux cl_num val_env met_env virt self_scope scl = (* of optional parameters *) let var_option = - Predef.type_option (Btype.newgenvar (Layout.value ~why:Type_argument)) + Predef.type_option (Btype.newgenvar (Jkind.value ~why:Type_argument)) let rec approx_declaration cl = match cl.pcl_desc with Pcl_fun (l, _, _, cl) -> let arg = if Btype.is_optional l then Ctype.instance var_option - else Ctype.newvar (Layout.value ~why:Class_argument) + else Ctype.newvar (Jkind.value ~why:Class_argument) (* CR layouts: use of value here may be relaxed when we update - classes to work with layouts *) + classes to work with jkinds *) in let arg = Ctype.newmono arg in let arrow_desc = l, Mode.Alloc.legacy, Mode.Alloc.legacy in @@ -1523,37 +1522,37 @@ let rec approx_declaration cl = approx_declaration cl | Pcl_constraint (cl, _) -> approx_declaration cl - | _ -> Ctype.newvar (Layout.value ~why:Object) + | _ -> Ctype.newvar (Jkind.value ~why:Object) let rec approx_description ct = match ct.pcty_desc with Pcty_arrow (l, _, ct) -> let arg = if Btype.is_optional l then Ctype.instance var_option - else Ctype.newvar (Layout.value ~why:Class_argument) + else Ctype.newvar (Jkind.value ~why:Class_argument) (* CR layouts: use of value here may be relaxed when we - relax layouts in classes *) + relax jkinds in classes *) in let arg = Ctype.newmono arg 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) + | _ -> Ctype.newvar (Jkind.value ~why:Object) (*******************************) let temp_abbrev loc env id arity uid = let params = ref [] in for _i = 1 to arity do - params := Ctype.newvar (Layout.value ~why:Type_argument) :: !params + params := Ctype.newvar (Jkind.value ~why:Type_argument) :: !params done; - let ty = Ctype.newobj (Ctype.newvar (Layout.value ~why:Object)) in + let ty = Ctype.newobj (Ctype.newvar (Jkind.value ~why:Object)) in let env = Env.add_type ~check:true id {type_params = !params; type_arity = arity; type_kind = Type_abstract Abstract_def; - type_layout = Layout.value ~why:Object; + type_jkind = Jkind.value ~why:Object; type_private = Public; type_manifest = Some ty; type_variance = Variance.unknown_signature ~injective:false ~arity; @@ -1641,7 +1640,7 @@ let class_infos define_class kind we should lift this restriction. Doing so causes bad error messages today, so we wait for tomorrow. *) Ctype.unify env param.ctyp_type - (Ctype.newvar (Layout.value ~why:Class_argument)); + (Ctype.newvar (Jkind.value ~why:Class_argument)); (param, v) with Already_bound -> raise(Error(sty.ptyp_loc, env, Repeated_parameter)) @@ -1794,7 +1793,7 @@ let class_infos define_class kind type_params = obj_params; type_arity = arity; type_kind = Type_abstract Abstract_def; - type_layout = Layout.value ~why:Object; + type_jkind = Jkind.value ~why:Object; type_private = Public; type_manifest = Some obj_ty; type_variance = Variance.unknown_signature ~injective:false ~arity; @@ -1817,7 +1816,7 @@ let class_infos define_class kind type_params = cl_params; type_arity = arity; type_kind = Type_abstract Abstract_def; - type_layout = Layout.value ~why:Object; + type_jkind = Jkind.value ~why:Object; type_private = Public; type_manifest = Some cl_ty; type_variance = Variance.unknown_signature ~injective:false ~arity; @@ -2248,7 +2247,7 @@ let report_error env ppf = function | Non_value_binding (nm, err) -> fprintf ppf "@[Variables bound in a class must have layout value.@ %a@]" - (Layout.Violation.report_with_name ~name:nm) err + (Jkind.Violation.report_with_name ~name:nm) err let report_error env ppf err = Printtyp.wrap_printing_env ~error:true diff --git a/ocaml/typing/typeclass.mli b/ocaml/typing/typeclass.mli index 18b4463b84f..3fd426bf944 100644 --- a/ocaml/typing/typeclass.mli +++ b/ocaml/typing/typeclass.mli @@ -15,7 +15,6 @@ open Asttypes open Types -open Layouts open Format type 'a class_info = { @@ -125,7 +124,7 @@ type error = | Duplicate of string * string | Closing_self_type of class_signature | Polymorphic_class_parameter - | Non_value_binding of string * Layout.Violation.t + | Non_value_binding of string * Jkind.Violation.t exception Error of Location.t * Env.t * error exception Error_forward of Location.error diff --git a/ocaml/typing/typecore.ml b/ocaml/typing/typecore.ml index 5249579a6c7..e028688175b 100644 --- a/ocaml/typing/typecore.ml +++ b/ocaml/typing/typecore.ml @@ -19,7 +19,6 @@ open Misc open Asttypes open Parsetree open Types -open Layouts open Mode open Typedtree open Btype @@ -123,7 +122,7 @@ type error = Datatype_kind.t * Longident.t * (Path.t * Path.t) * (Path.t * Path.t) list | Invalid_format of string | Not_an_object of type_expr * type_forcing_context option - | Not_a_value of Layout.Violation.t * type_forcing_context option + | Not_a_value of Jkind.Violation.t * type_forcing_context option | Undefined_method of type_expr * string * string list option | Undefined_self_method of string * string list | Virtual_class of Longident.t @@ -197,7 +196,7 @@ type error = | Exclave_returns_not_local | Unboxed_int_literals_not_supported | Unboxed_float_literals_not_supported - | Function_type_not_rep of type_expr * Layout.Violation.t + | Function_type_not_rep of type_expr * Jkind.Violation.t exception Error of Location.t * Env.t * error exception Error_forward of Location.error @@ -213,7 +212,7 @@ let error_of_filter_arrow_failure ~explanation ~first ty_fun then Not_a_function(ty_fun, explanation) else Too_many_arguments(ty_fun, explanation) end - | Layout_error (ty, err) -> Function_type_not_rep (ty, err) + | Jkind_error (ty, err) -> Function_type_not_rep (ty, err) (* Forward declaration, to be filled in by Typemod.type_module *) @@ -1141,7 +1140,7 @@ let enter_orpat_variables loc env p1_vs p2_vs = pv1 :: vars, alist else begin begin try - unify_var env (newvar (Layout.any ~why:Dummy_layout)) t1; + unify_var env (newvar (Jkind.any ~why:Dummy_jkind)) t1; unify env t1 t2 with | Unify err -> @@ -1222,20 +1221,20 @@ and build_as_type_aux ~refine ~mode (env : Env.t ref) p = let ty = let fields = [l, rf_present ty] in newty (Tvariant (create_row ~fields - ~more:(newvar (Layout.value ~why:Row_variable)) + ~more:(newvar (Jkind.value ~why:Row_variable)) ~name:None ~fixed:None ~closed:false)) in ty, mode | Tpat_record (lpl,_) -> let lbl = snd3 (List.hd lpl) in if lbl.lbl_private = Private then p.pat_type, mode else - (* The layout here is filled in via unification with [ty_res] in + (* The jkind here is filled in via unification with [ty_res] in [unify_pat]. *) (* XXX layouts v2: This should be a sort variable and could be now (but think about when it gets defaulted.) RAE: why? It looks fine as-is. *) - let ty = newvar (Layout.any ~why:Dummy_layout) in + let ty = newvar (Jkind.any ~why:Dummy_jkind) in let ppl = List.map (fun (_, l, p) -> l.lbl_num, p) lpl in let do_label lbl = let _, ty_arg, ty_res = instance_label false lbl in @@ -1278,7 +1277,7 @@ and build_as_type_aux ~refine ~mode (env : Env.t ref) p = newty (Tvariant (create_row ~fields ~fixed ~name ~closed:false ~more:(newvar - (Layout.value ~why:Row_variable)))) + (Jkind.value ~why:Row_variable)))) in ty, mode end @@ -1314,7 +1313,7 @@ let solve_Ppat_tuple (type a) ~refine ~alloc_mode loc env (args : a list) expect let ann = (* CR layouts v5: restriction to value here to be relaxed. *) List.map2 - (fun p mode -> (p, newgenvar (Layout.value ~why:Tuple_element), + (fun p mode -> (p, newgenvar (Jkind.value ~why:Tuple_element), simple_pat_mode mode)) args arg_modes in @@ -1328,11 +1327,11 @@ let solve_constructor_annotation tps env name_list sty ty_args ty_ex = let ids = List.map (fun name -> - (* CR layouts v1.5: I expect this needs to change when we allow layout + (* CR layouts v1.5: I expect this needs to change when we allow jkind annotations on explicitly quantified vars in gadt constructors. See: https://github.com/ocaml/ocaml/pull/9584/ *) let decl = new_local_type ~loc:name.loc - (Layout.value ~why:Existential_type_variable) in + (Jkind.value ~why:Existential_type_variable) in let (id, new_env) = Env.enter_type ~scope:expansion_scope name.txt decl !env in env := new_env; @@ -1461,15 +1460,15 @@ let solve_Ppat_array ~refine loc env mutability expected_ty = | Immutable -> Predef.type_iarray | Mutable -> Predef.type_array in - (* CR layouts v4: in the future we'll have arrays of other layouts *) - let ty_elt = newgenvar (Layout.value ~why:Array_element) in + (* CR layouts v4: in the future we'll have arrays of other jkinds *) + let ty_elt = newgenvar (Jkind.value ~why:Array_element) in let expected_ty = generic_instance expected_ty in unify_pat_types ~refine loc env (type_some_array ty_elt) expected_ty; ty_elt let solve_Ppat_lazy ~refine loc env expected_ty = - let nv = newgenvar (Layout.value ~why:Lazy_expression) in + let nv = newgenvar (Jkind.value ~why:Lazy_expression) in unify_pat_types ~refine loc env (Predef.type_lazy_t nv) (generic_instance expected_ty); nv @@ -1495,28 +1494,28 @@ let solve_Ppat_variant ~refine loc env tag no_arg expected_ty = let arg_type = if no_arg then [] - else [newgenvar (Layout.value ~why:Polymorphic_variant_field)] + else [newgenvar (Jkind.value ~why:Polymorphic_variant_field)] in let fields = [tag, rf_either ~no_arg arg_type ~matched:true] in let make_row more = create_row ~fields ~closed:false ~more ~fixed:None ~name:None in - let row = make_row (newgenvar (Layout.value ~why:Row_variable)) in + let row = make_row (newgenvar (Jkind.value ~why:Row_variable)) in let expected_ty = generic_instance expected_ty in (* PR#7404: allow some_private_tag blindly, as it would not unify with the abstract row variable *) if tag <> Parmatch.some_private_tag then unify_pat_types ~refine loc env (newgenty(Tvariant row)) expected_ty; - (arg_type, make_row (newvar (Layout.value ~why:Row_variable)), + (arg_type, make_row (newvar (Jkind.value ~why:Row_variable)), instance expected_ty) (* Building the or-pattern corresponding to a polymorphic variant type *) let build_or_pat env loc lid = let path, decl = Env.lookup_type ~loc:lid.loc lid.txt env in (* CR layouts: the use of value here is wrong: - there could be other layouts in a polymorphic variant argument; + there could be other jkinds in a polymorphic variant argument; see Test 24 in tests/typing-layouts/basics_alpha.ml *) - let tyl = List.map (fun _ -> newvar (Layout.value ~why:Type_argument)) + let tyl = List.map (fun _ -> newvar (Jkind.value ~why:Type_argument)) decl.type_params in let row0 = let ty = expand_head env (newty(Tconstr(path, tyl, ref Mnil))) in @@ -1547,10 +1546,10 @@ let build_or_pat env loc lid = create_row ~fields ~more ~closed:false ~fixed:None ~name in let ty = newty (Tvariant (make_row (newvar - (Layout.value ~why:Row_variable)))) + (Jkind.value ~why:Row_variable)))) in let gloc = Location.ghostify loc in - let row' = ref (make_row (newvar (Layout.value ~why:Row_variable))) in + let row' = ref (make_row (newvar (Jkind.value ~why:Row_variable))) in let pats = List.map (fun (l,p) -> @@ -2723,7 +2722,7 @@ and type_pat_aux let ty = generic_instance expected_ty in Some (p0, p, is_principal expected_ty), ty | Maybe_a_record_type -> - None, newvar (Layout.value ~why:Boxed_record) + None, newvar (Jkind.value ~why:Boxed_record) | Not_a_record_type -> let error = Wrong_expected_kind(Record, Pattern, expected_ty) in raise (Error (loc, !env, error)) @@ -3007,8 +3006,8 @@ let type_pattern_list let type_class_arg_pattern cl_num val_env met_env l spat = if !Clflags.principal then Ctype.begin_def (); 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 + (* CR layouts: will change when we relax jkind restrictions in classes. *) + let nv = newvar (Jkind.value ~why:Class_argument) in let alloc_mode = simple_pat_mode Value.legacy in let pat = type_pat tps Value ~no_existentials:In_class_args ~alloc_mode @@ -3021,7 +3020,7 @@ let type_class_arg_pattern cl_num val_env met_env l spat = (* CR layouts v5: value restriction here to be relaxed *) if is_optional l then unify_pat (ref val_env) pat - (type_option (newvar (Layout.value ~why:Type_argument))); + (type_option (newvar (Jkind.value ~why:Type_argument))); let pvs = tps.tps_pattern_variables in if !Clflags.principal then begin Ctype.end_def (); @@ -3064,7 +3063,7 @@ let type_self_pattern env spat = let open Ast_helper in 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 nv = newvar (Jkind.value ~why:Object) in let alloc_mode = simple_pat_mode Value.legacy in let pat = type_pat tps Value ~no_existentials:In_self_pattern ~alloc_mode @@ -3170,7 +3169,7 @@ type untyped_apply_arg = { sarg : Parsetree.expression; ty_arg : type_expr; ty_arg0 : type_expr; - sort_arg : sort; + sort_arg : Jkind.sort; commuted : bool; mode_fun : Alloc.t; mode_arg : Alloc.t; @@ -3178,13 +3177,13 @@ type untyped_apply_arg = | Unknown_arg of { sarg : Parsetree.expression; ty_arg_mono : type_expr; - sort_arg : sort; + sort_arg : Jkind.sort; mode_fun : Alloc.t; mode_arg : Alloc.t} | Eliminated_optional_arg of { mode_fun: Alloc.t; ty_arg : type_expr; - sort_arg : sort; + sort_arg : Jkind.sort; mode_arg : Alloc.t; level: int; } @@ -3193,7 +3192,7 @@ type untyped_omitted_param = ty_arg : type_expr; mode_arg : Alloc.t; level: int; - sort_arg : sort } + sort_arg : Jkind.sort } let is_partial_apply args = List.exists @@ -3299,13 +3298,13 @@ let collect_unknown_apply_args env funct ty_fun mode_fun rev_args sargs ret_tvar let ty_fun = expand_head env ty_fun in match get_desc ty_fun with | Tvar _ -> - let sort_arg = Sort.new_var () in + let sort_arg = Jkind.Sort.new_var () in let ty_arg_mono = - newvar (Layout.of_sort ~why:Function_argument sort_arg) + newvar (Jkind.of_sort ~why:Function_argument sort_arg) in let ty_arg = newmono ty_arg_mono in let ty_res = - newvar (Layout.of_new_sort_var ~why:Function_result) + newvar (Jkind.of_new_sort_var ~why:Function_result) in if ret_tvar && not (is_prim ~name:"%identity" funct) && @@ -3534,7 +3533,7 @@ let rec 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 *) + | Texp_sequence (_e1, _jkind, e2) -> is_nonexpansive e2 (* PR#4354 *) | Texp_new (_, _, cl_decl, _) -> Btype.class_type_arity cl_decl.cty_type > 0 (* Note: nonexpansive only means no _observable_ side effects *) | Texp_lazy e -> is_nonexpansive e @@ -3790,7 +3789,7 @@ let loc_rest_of_function (which mentions approx_type) for why it can't be value. *) (* CR layouts v2: RAE thinks this any is fine in perpetuity. Before changing this, let's talk. *) -let approx_type_default () = newvar (Layout.any ~why:Dummy_layout) +let approx_type_default () = newvar (Jkind.any ~why:Dummy_jkind) let rec approx_type env sty = match Jane_syntax.Core_type.of_ast sty with @@ -3799,7 +3798,7 @@ let rec approx_type env sty = match sty.ptyp_desc with | Ptyp_arrow (p, ({ ptyp_desc = Ptyp_poly _ } as arg_sty), sty) -> (* CR layouts v5: value requirement here to be relaxed *) - if is_optional p then newvar (Layout.value ~why:Type_argument) + if is_optional p then newvar (Jkind.value ~why:Type_argument) else begin let arg_mode = Typetexp.get_alloc_mode arg_sty in let arg_ty = @@ -3817,8 +3816,8 @@ let rec approx_type env sty = let arg_mode = Typetexp.get_alloc_mode arg_sty in let arg = if is_optional p - then type_option (newvar (Layout.value ~why:Type_argument)) - else newvar (Layout.of_new_sort_var ~why:Function_argument) + then type_option (newvar (Jkind.value ~why:Type_argument)) + else newvar (Jkind.of_new_sort_var ~why:Function_argument) in let ret = approx_type env sty in let marg = Alloc.of_const arg_mode in @@ -3829,7 +3828,7 @@ let rec approx_type env sty = | Ptyp_constr (lid, ctl) -> let path, decl = Env.lookup_type ~use:false ~loc:lid.loc lid.txt env in if List.length ctl <> decl.type_arity - then newvar (Layout.any ~why:Dummy_layout) + then newvar (Jkind.any ~why:Dummy_jkind) else begin let tyl = List.map (approx_type env) ctl in newconstr path tyl @@ -3941,7 +3940,7 @@ let rec type_approx env sexp ty_expected = | Pexp_try (e, _) -> type_approx env e ty_expected | Pexp_tuple l -> let tys = List.map - (fun _ -> newvar (Layout.value ~why:Tuple_element)) l + (fun _ -> newvar (Jkind.value ~why:Tuple_element)) l in let ty = newty (Ttuple tys) in begin try unify env ty ty_expected with Unify err -> @@ -4056,7 +4055,7 @@ let check_univars env kind exp ty_expected vars = let univars, ty' = instance_poly true tl body in let vars, exp_ty = instance_parameterized_type vars exp.exp_type in List.iter2 (fun uvar var -> - (* This checks that the term doesn't require more specific layouts + (* This checks that the term doesn't require more specific jkinds than allowed by the univars. *) (* CR layouts: expand_head here is needed for examples like: @@ -4066,24 +4065,24 @@ let check_univars env kind exp ty_expected vars = Here, while checking foo, ['a] gets unified with ['a t]. This is fine because ['a t] is actually just ['a], but it does mean we need - to expand the var to find the variable with the layout we want to + to expand the var to find the variable with the jkind we want to check. However, I should come back and think about his more carefully: 1) [polyfy], which is called below, also does this expansion. - It would be nice to just move the layout check there, + It would be nice to just move the jkind check there, but there was some reason I didn't do this originally (something about unifications statefully changing things between now and then). Revisit. 2) [polyfy] actually calls [expand_head] twice! why?! *) match get_desc (expand_head env var) with - | Tvar { layout = layout2; } -> begin - match check_type_layout env uvar layout2 with + | Tvar { jkind = jkind2; } -> begin + match check_type_jkind env uvar jkind2 with | Ok _ -> () | Error err -> error exp_ty ty_expected - [Errortrace.Bad_layout (uvar,err)] + [Errortrace.Bad_jkind (uvar,err)] end | _ -> error exp_ty ty_expected []) univars vars; @@ -4330,7 +4329,7 @@ let check_absent_variant env = let fields = [s, rf_either ty_arg ~no_arg:(arg=None) ~matched:true] in let row' = create_row ~fields - ~more:(newvar (Layout.value ~why:Row_variable)) + ~more:(newvar (Jkind.value ~why:Row_variable)) ~closed:false ~fixed:None ~name:None in (* Should fail *) @@ -4465,7 +4464,7 @@ let unique_use ~loc ~env mode_l mode_r = let rec type_exp ?recarg env expected_mode sexp = (* We now delegate everything to type_expect *) type_expect ?recarg env expected_mode sexp - (mk_expected (newvar (Layout.any ~why:Dummy_layout))) + (mk_expected (newvar (Jkind.any ~why:Dummy_jkind))) (* Typing of an expression with an expected type. This provide better error messages, and allows controlled @@ -4648,7 +4647,7 @@ and type_expect_ let bound_exp_type = Ctype.instance bound_exp.exp_type in let loc = proper_exp_loc bound_exp in let outer_var = - newvar2 outer_level (Layout.any ~why:Dummy_layout) + newvar2 outer_level (Jkind.any ~why:Dummy_jkind) in (* Checking unification within an environment extended with the module bindings allows us to correctly accept more programs. @@ -4661,7 +4660,7 @@ and type_expect_ if may_contain_modules then begin end_def (); (* The "body" component of the scope escape check. *) - unify_exp new_env body (newvar (Layout.any ~why:Dummy_layout)); + unify_exp new_env body (newvar (Jkind.any ~why:Dummy_jkind)); end; re { exp_desc = Texp_let(rec_flag, pat_exp_list, body); @@ -4841,16 +4840,16 @@ and type_expect_ match get_desc ty with Tarrow (_l, ty_arg, ty_fun, _com) -> (try unify_var env - (newvar (Layout.any ~why:Dummy_layout)) ty_arg + (newvar (Jkind.any ~why:Dummy_jkind)) ty_arg with Unify _ -> assert false); ret_tvar (TypeSet.add ty seen) ty_fun | Tvar _ -> - let v = newvar (Layout.any ~why:Dummy_layout) in + let v = newvar (Jkind.any ~why:Dummy_jkind) in let rt = get_level ty > get_level v in unify_var env v ty; rt | _ -> - let v = newvar (Layout.any ~why:Dummy_layout) in + let v = newvar (Jkind.any ~why:Dummy_jkind) in unify_var env v ty; false in @@ -4913,10 +4912,10 @@ and type_expect_ tuple_pat_mode mode modes, mode_tuple mode modes in begin_def (); - let sort = Sort.new_var () in + let sort = Jkind.Sort.new_var () in let arg = type_expect env arg_expected_mode sarg - (mk_expected (newvar (Layout.of_sort ~why:Match sort))) + (mk_expected (newvar (Jkind.of_sort ~why:Match sort))) in end_def (); if maybe_expansive arg then lower_contravariant env arg.exp_type; @@ -4951,7 +4950,7 @@ and type_expect_ let alloc_mode = register_allocation expected_mode in (* CR layouts v5: non-values in tuples *) let subtypes = - List.map (fun _ -> newgenvar (Layout.value ~why:Tuple_element)) + List.map (fun _ -> newgenvar (Jkind.value ~why:Tuple_element)) sexpl in let to_unify = newgenty (Ttuple subtypes) in @@ -5015,7 +5014,7 @@ and type_expect_ | None -> None | Some sarg -> let ty_expected = - newvar (Layout.value ~why:Polymorphic_variant_field) + newvar (Jkind.value ~why:Polymorphic_variant_field) in let arg = type_expect env argument_mode sarg (mk_expected ty_expected) @@ -5027,7 +5026,7 @@ and type_expect_ let row = create_row ~fields: [l, rf_present arg_type] - ~more: (newvar (Layout.value ~why:Row_variable)) + ~more: (newvar (Jkind.value ~why:Row_variable)) ~closed: false ~fixed: None ~name: None @@ -5080,7 +5079,7 @@ and type_expect_ in match expected_opath, opt_exp_opath with | None, None -> - newvar (Layout.of_new_sort_var ~why:Record_projection), None + newvar (Jkind.of_new_sort_var ~why:Record_projection), None | Some _, None -> ty_expected, expected_opath | Some(_, _, true), Some _ -> ty_expected, expected_opath | (None | Some (_, _, false)), Some (_, p', _) -> @@ -5245,7 +5244,7 @@ and type_expect_ type_label_access env srecord Env.Mutation lid in let ty_record = if expected_type = None - then newvar (Layout.of_new_sort_var ~why:Record_assignment) + then newvar (Jkind.of_new_sort_var ~why:Record_assignment) else record.exp_type in let (label_loc, label, newval) = @@ -5401,7 +5400,7 @@ and type_expect_ begin_def (); let arg = type_exp env expected_mode sarg in end_def (); - let tv = newvar (Layout.any ~why:Dummy_layout) in + let tv = newvar (Jkind.any ~why:Dummy_jkind) in 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 @@ -5495,7 +5494,7 @@ and type_expect_ | id -> id, Btype.method_type met sign | exception Not_found -> let id = Ident.create_local met in - let ty = newvar (Layout.value ~why:Object_field) in + let ty = newvar (Jkind.value ~why:Object_field) in meths_ref := Meths.add met id !meths_ref; add_method env met Private Virtual ty sign; Location.prerr_warning loc @@ -5566,7 +5565,7 @@ and type_expect_ (Warnings.Not_principal "this use of a polymorphic method"); snd (instance_poly false tl ty) | Tvar _ -> - let ty' = newvar (Layout.value ~why:Object_field) in + let ty' = newvar (Jkind.value ~why:Object_field) in unify env (instance typ) (newty(Tpoly(ty',[]))); (* if not !Clflags.nolabels then Location.prerr_warning loc (Warnings.Unknown_method met); *) @@ -5661,7 +5660,7 @@ and type_expect_ assert false end | Pexp_letmodule(name, smodl, sbody) -> - let ty = newvar (Layout.any ~why:Dummy_layout) in + let ty = newvar (Jkind.any ~why:Dummy_jkind) in (* remember original level *) begin_def (); let modl, pres, id, new_env = Typetexp.TyVarEnv.with_local_scope begin fun () -> @@ -5736,7 +5735,7 @@ and type_expect_ exp_env = env; } | Pexp_lazy e -> - let ty = newgenvar (Layout.value ~why:Lazy_expression) in + let ty = newgenvar (Jkind.value ~why:Lazy_expression) in let to_unify = Predef.type_lazy_t ty in with_explanation (fun () -> unify_exp_types loc env to_unify (generic_instance ty_expected)); @@ -5832,7 +5831,7 @@ and type_expect_ exp_attributes = sexp.pexp_attributes; exp_env = env } | Pexp_open (od, e) -> - let tv = newvar (Layout.any ~why:Dummy_layout) in + let tv = newvar (Jkind.any ~why:Dummy_jkind) in let (od, _, newenv) = !type_open_decl env od in let exp = type_expect newenv expected_mode e ty_expected_explained in (* Force the return type to be well-formed in the original @@ -5852,41 +5851,41 @@ and type_expect_ | [] -> spat_acc, ty_acc, ty_acc_sort | { pbop_pat = spat; _} :: rest -> (* CR layouts v5: eliminate value requirement *) - let ty = newvar (Layout.value ~why:Tuple_element) in + let ty = newvar (Jkind.value ~why:Tuple_element) in let loc = Location.ghostify slet.pbop_op.loc in let spat_acc = Ast_helper.Pat.tuple ~loc [spat_acc; spat] in let ty_acc = newty (Ttuple [ty_acc; ty]) in - loop spat_acc ty_acc Sort.value rest + loop spat_acc ty_acc Jkind.Sort.value rest in if !Clflags.principal then begin_def (); let let_loc = slet.pbop_op.loc in let op_path, op_desc = type_binding_op_ident env slet.pbop_op in let op_type = instance op_desc.val_type in let spat_params, ty_params, param_sort = - let initial_layout, initial_sort = match sands with + let initial_jkind, initial_sort = match sands with | [] -> - let sort = Sort.new_var () in - Layout.of_sort ~why:Function_argument sort, sort + let sort = Jkind.Sort.new_var () in + Jkind.of_sort ~why:Function_argument sort, sort (* CR layouts v5: eliminate value requirement for tuple elements *) - | _ -> Layout.value ~why:Tuple_element, Sort.value + | _ -> Jkind.value ~why:Tuple_element, Jkind.Sort.value in - loop slet.pbop_pat (newvar initial_layout) initial_sort sands + loop slet.pbop_pat (newvar initial_jkind) initial_sort sands in - let body_sort = Sort.new_var () in + let body_sort = Jkind.Sort.new_var () in let ty_func_result = - newvar (Layout.of_sort ~why:Function_result body_sort) + newvar (Jkind.of_sort ~why:Function_result body_sort) 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 - let op_result_sort = Sort.new_var () in + let op_result_sort = Jkind.Sort.new_var () in let ty_result = - newvar (Layout.of_sort ~why:Function_result op_result_sort) + newvar (Jkind.of_sort ~why:Function_result op_result_sort) in - let sort_andops = Sort.new_var () in + let sort_andops = Jkind.Sort.new_var () in let ty_andops = - newvar (Layout.of_sort ~why:Function_argument sort_andops) + newvar (Jkind.of_sort ~why:Function_argument sort_andops) in let ty_op = newty (Tarrow(arrow_desc, newmono ty_andops, @@ -6158,7 +6157,7 @@ and type_function let snap = Btype.snapshot () in let really_poly = try - unify env (newmono (newvar (Layout.any ~why:Dummy_layout))) ty_arg; + unify env (newmono (newvar (Jkind.any ~why:Dummy_jkind))) ty_arg; false with Unify _ -> true in @@ -6692,7 +6691,7 @@ and type_argument ?explanation ?recarg env (mode : expected_mode) sarg in (* CR layouts v5: change value assumption below when we allow non-values in structures. *) - make_args ((l, Arg (ty, Sort.value)) :: args) ty_fun + make_args ((l, Arg (ty, Jkind.Sort.value)) :: args) ty_fun | Tarrow ((l,_,_),_,ty_res',_) when l = Nolabel || !Clflags.classic -> List.rev args, ty_fun, no_labels ty_res' | Tvar _ -> List.rev args, ty_fun, false @@ -6746,7 +6745,7 @@ and type_argument ?explanation ?recarg env (mode : expected_mode) sarg 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 + (* CR layouts v10: When we add abstract jkinds, the eta expansion here becomes impossible in some cases - we'll need better errors. For test cases, look toward the end of typing-layouts-missing-cmi/function_arg.ml *) @@ -6817,7 +6816,7 @@ and type_apply_arg env ~app_loc ~funct ~index ~position ~partial_app (lbl, arg) if is_optional lbl then (* CR layouts v5: relax value requirement *) unify_exp env arg - (type_option(newvar (Layout.value ~why:Type_argument))); + (type_option(newvar (Jkind.value ~why:Type_argument))); (lbl, Arg (arg, expected_mode.mode, sort_arg)) | Arg (Known_arg { sarg; ty_arg; ty_arg0; mode_arg; wrapped_in_some; sort_arg }) -> @@ -6843,7 +6842,7 @@ and type_apply_arg env ~app_loc ~funct ~index ~position ~partial_app (lbl, arg) let snap = Btype.snapshot () in let really_poly = try - unify env (newmono (newvar (Layout.any ~why:Dummy_layout))) + unify env (newmono (newvar (Jkind.any ~why:Dummy_jkind))) ty_arg; false with Unify _ -> true @@ -7068,13 +7067,13 @@ and type_statement ?explanation ?(position=RNontail) env sexp = 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 + (* We're requiring the statement to have a representable jkind. But that doesn't actually rule out things like "assert false"---we'll just end up - getting a sort variable for its layout. *) - (* CR layouts v10: Abstract layouts will introduce cases where we really + getting a sort variable for its jkind. *) + (* CR layouts v10: Abstract jkinds will introduce cases where we really have [any] and can't get a sort here. *) - let sort = Sort.new_var () in - let tv = newvar (Layout.of_sort ~why:Statement sort) in + let sort = Jkind.Sort.new_var () in + let tv = newvar (Jkind.of_sort ~why:Statement sort) in if is_Tvar ty && get_level ty > get_level tv then Location.prerr_warning (final_subexpression exp).exp_loc @@ -7084,7 +7083,7 @@ and type_statement ?explanation ?(position=RNontail) env sexp = let expected_ty = instance Predef.type_unit in with_explanation explanation (fun () -> unify_exp env exp expected_ty); - exp, Sort.value + exp, Jkind.Sort.value else begin check_partial_application ~statement:true exp; unify_var env tv ty; @@ -7180,7 +7179,7 @@ and type_cases else ty_res, (fun env -> env) in (* Unify all cases (delayed to keep it order-free) *) - let ty_arg' = newvar (Layout.any ~why:Dummy_layout) in + let ty_arg' = newvar (Jkind.any ~why:Dummy_jkind) in let unify_pats ty = List.iter (fun { typed_pat = pat; pat_type_for_unif = pat_ty; _ } -> unify_pat_types pat.pat_loc (ref env) pat_ty ty @@ -7199,7 +7198,7 @@ and type_cases if take_partial_instance <> None then unify_pats (instance ty_arg); List.iter (fun { pat_vars; _ } -> iter_pattern_variables_type - (fun t -> unify_var env (newvar (Layout.any ~why:Dummy_layout)) t) + (fun t -> unify_var env (newvar (Jkind.any ~why:Dummy_jkind)) t) pat_vars ) half_typed_cases; end_def (); @@ -7302,26 +7301,26 @@ and type_cases end_def (); (* Ensure that existential types do not escape *) unify_exp_types loc env ty_res' - (newvar (Layout.any ~why:Dummy_layout)); + (newvar (Jkind.any ~why:Dummy_jkind)); end; cases, partial and type_newtype ~loc ~env ~expected_mode ~rue ~attributes - name layout_annot_opt sbody = - let layout = - Layout.of_annotation_option_default ~context:(Newtype_declaration name) - ~default:(Layout.value ~why:Univar) layout_annot_opt + name jkind_annot_opt sbody = + let jkind = + Jkind.of_annotation_option_default ~context:(Newtype_declaration name) + ~default:(Jkind.value ~why:Univar) jkind_annot_opt in let ty = if Typetexp.valid_tyvar_name name then - newvar ~name layout + newvar ~name jkind else - newvar layout + newvar jkind in (* remember original level *) begin_def (); (* Create a fake abstract type declaration for name. *) - let decl = new_local_type ~loc layout in + let decl = new_local_type ~loc jkind in let scope = create_scope () in let (id, new_env) = Env.enter_type ~scope name decl env in @@ -7349,7 +7348,7 @@ and type_newtype ~loc ~env ~expected_mode ~rue ~attributes any new extra node in the typed AST. *) rue { body with exp_loc = loc; exp_type = ety; exp_extra = - (Texp_newtype (name, Option.map Location.get_txt layout_annot_opt), + (Texp_newtype (name, Option.map Location.get_txt jkind_annot_opt), loc, attributes) :: body.exp_extra } (* Typing of let bindings *) @@ -7449,9 +7448,9 @@ and type_let attrs, pat_mode, exp_mode, spat) spat_sexp_list in let is_recursive = (rec_flag = Recursive) in - let sorts = List.map (fun _ -> Sort.new_var ()) spatl in + let sorts = List.map (fun _ -> Jkind.Sort.new_var ()) spatl in let nvs = - List.map (fun s -> newvar (Layout.of_sort ~why:Let_binding s)) sorts + List.map (fun s -> newvar (Jkind.of_sort ~why:Let_binding s)) sorts in if is_recursive then begin_def (); let (pat_list, new_env, force, pvs, mvs) = @@ -7714,13 +7713,13 @@ and type_andops env sarg sands expected_sort expected_ty = if !Clflags.principal then begin_def (); let op_path, op_desc = type_binding_op_ident env sop in let op_type = op_desc.val_type in - let sort_arg = Sort.new_var () in - let ty_arg = newvar (Layout.of_sort ~why:Function_argument sort_arg) in - let sort_rest = Sort.new_var () in - let ty_rest = newvar (Layout.of_sort ~why:Function_argument sort_rest) in - let op_result_sort = Sort.new_var () in + let sort_arg = Jkind.Sort.new_var () in + let ty_arg = newvar (Jkind.of_sort ~why:Function_argument sort_arg) in + let sort_rest = Jkind.Sort.new_var () in + let ty_rest = newvar (Jkind.of_sort ~why:Function_argument sort_rest) in + let op_result_sort = Jkind.Sort.new_var () in let ty_result = - newvar (Layout.of_sort ~why:Function_result op_result_sort) + newvar (Jkind.of_sort ~why:Function_result op_result_sort) in let arrow_desc = (Nolabel,Alloc.legacy,Alloc.legacy) in let ty_rest_fun = @@ -7785,7 +7784,7 @@ and type_generic_array in let alloc_mode = register_allocation expected_mode in (* CR layouts v4: non-values in arrays *) - let ty = newgenvar (Layout.value ~why:Array_element) in + let ty = newgenvar (Jkind.value ~why:Array_element) in let to_unify = type_ ty in with_explanation explanation (fun () -> unify_exp_types loc env to_unify (generic_instance ty_expected)); @@ -7813,7 +7812,7 @@ and type_expect_jane_syntax type_immutable_array ~loc ~env ~expected_mode ~ty_expected ~explanation ~rue ~attributes x | Jexp_layout x -> - type_layout_expr + type_jkind_expr ~loc ~env ~expected_mode ~ty_expected ~explanation ~rue ~attributes x | Jexp_n_ary_function x -> type_n_ary_function @@ -7887,12 +7886,12 @@ and type_n_ary_function match pparam_desc with | Pparam_val (l, o, p) -> (Exp.fun_ l o p body ~loc [@alert "-prefer_jane_syntax"]) - | Pparam_newtype (newtype, layout) -> - match layout with + | Pparam_newtype (newtype, jkind) -> + match jkind with | None -> Exp.newtype newtype body ~loc - | Some layout -> + | Some jkind -> Jane_syntax.Layouts.expr_of ~loc - (Lexp_newtype (newtype, layout, body))) + (Lexp_newtype (newtype, jkind, body))) params constrained_body in @@ -7955,7 +7954,7 @@ and type_n_ary_function of [body] and the entire comprehension. While it would be nice to be polymorphic here, *we are unfortunately currently constrained to check comprehensions at global mode*. This is not a fundamental limitation, and - would just require updating the translation code to be layout-aware as it + would just require updating the translation code to be jkind-aware as it happens after inference. The changes this would require for list and array comprehensions are different: @@ -8003,7 +8002,7 @@ and type_comprehension_expr Predef.type_list, (fun tcomp -> Texp_list_comprehension tcomp), comp, - Layout.Type_argument + Jkind.Type_argument | Cexp_array_comprehension (amut, comp) -> let container_type = match amut with | Mutable -> Predef.type_array @@ -8013,13 +8012,13 @@ and type_comprehension_expr container_type, (fun tcomp -> Texp_array_comprehension (amut, tcomp)), comp, - Layout.Array_element + Jkind.Array_element in if !Clflags.principal then begin_def (); (* CR layouts v4: When this changes from [value], you will also have to update the use of [transl_exp] in transl_array_comprehension.ml. See a companion CR layouts v4 at the point of interest in that file. *) - let element_ty = newvar (Layout.value ~why:reason) in + let element_ty = newvar (Jkind.value ~why:reason) in unify_exp_types loc env @@ -8126,7 +8125,7 @@ and type_comprehension_iterator in Texp_comp_range { ident; pattern; start; stop; direction } | In seq -> - let item_ty = newvar (Layout.any ~why:Dummy_layout) in + let item_ty = newvar (Jkind.any ~why:Dummy_jkind) in let seq_ty = container_type item_ty in let sequence = (* To understand why we can currently only iterate over [mode_global] @@ -8169,13 +8168,13 @@ and type_immutable_array ~attributes elts -and type_layout_expr +and type_jkind_expr ~loc ~env ~expected_mode ~ty_expected:_ ~explanation:_ ~rue ~attributes : Jane_syntax.Layouts.expression -> _ = function | Lexp_constant x -> type_unboxed_constant ~loc ~env ~rue ~attributes x - | Lexp_newtype ({txt=name}, layout_annot, sbody) -> + | Lexp_newtype ({txt=name}, jkind_annot, sbody) -> type_newtype ~loc ~env ~expected_mode ~rue ~attributes - name (Some layout_annot) sbody + name (Some jkind_annot) sbody and type_unboxed_constant ~loc ~env ~rue ~attributes cst = rue { @@ -8218,10 +8217,10 @@ let type_let existential_ctx env rec_flag spat_sexp_list = (* Typing of toplevel expressions *) -let type_expression env layout sexp = +let type_expression env jkind sexp = Typetexp.TyVarEnv.reset (); begin_def(); - let expected = mk_expected (newvar layout) in + let expected = mk_expected (newvar jkind) in let exp = type_expect env mode_legacy sexp expected in end_def(); if maybe_expansive exp then lower_contravariant env exp.exp_type; @@ -8240,12 +8239,12 @@ let type_expression env layout sexp = maybe_check_uniqueness_exp exp; exp let type_representable_expression ~why env sexp = - let sort = Sort.new_var () in - let exp = type_expression env (Layout.of_sort ~why sort) sexp in + let sort = Jkind.Sort.new_var () in + let exp = type_expression env (Jkind.of_sort ~why sort) sexp in exp, sort let type_expression env sexp = - type_expression env (Layout.any ~why:Type_expression_call) sexp + type_expression env (Jkind.any ~why:Type_expression_call) sexp (* Error report *) @@ -8616,8 +8615,8 @@ let report_error ~loc env = function ) () | Not_a_value (err, explanation) -> Location.error_of_printer ~loc (fun ppf () -> - fprintf ppf "Methods must have layout value.@ %a" - (Layout.Violation.report_with_name ~name:"This expression") + fprintf ppf "Method types must have layout value.@ %a" + (Jkind.Violation.report_with_name ~name:"This expression") err; report_type_expected_explanation_opt explanation ppf) () @@ -8992,7 +8991,7 @@ let report_error ~loc env = function | Function_type_not_rep (ty,violation) -> Location.errorf ~loc "@[Function arguments and returns must be representable.@]@ %a" - (Layout.Violation.report_with_offender + (Jkind.Violation.report_with_offender ~offender:(fun ppf -> Printtyp.type_expr ppf ty)) violation let report_error ~loc env err = diff --git a/ocaml/typing/typecore.mli b/ocaml/typing/typecore.mli index e96d1aa63e6..d2a1b1b3464 100644 --- a/ocaml/typing/typecore.mli +++ b/ocaml/typing/typecore.mli @@ -17,7 +17,6 @@ open Asttypes open Types -open Layouts (* This variant is used for printing which type of comprehension something is found in; it's used by [type_forcing_context], which see. *) @@ -123,8 +122,8 @@ val type_let: val type_expression: Env.t -> Parsetree.expression -> Typedtree.expression val type_representable_expression: - why:Layouts.Layout.concrete_layout_reason -> - Env.t -> Parsetree.expression -> Typedtree.expression * sort + why:Jkind.concrete_jkind_reason -> + Env.t -> Parsetree.expression -> Typedtree.expression * Jkind.sort val type_class_arg_pattern: string -> Env.t -> Env.t -> arg_label -> Parsetree.pattern -> Typedtree.pattern * @@ -198,7 +197,7 @@ type error = Datatype_kind.t * Longident.t * (Path.t * Path.t) * (Path.t * Path.t) list | Invalid_format of string | Not_an_object of type_expr * type_forcing_context option - | Not_a_value of Layout.Violation.t * type_forcing_context option + | Not_a_value of Jkind.Violation.t * type_forcing_context option | Undefined_method of type_expr * string * string list option | Undefined_self_method of string * string list | Virtual_class of Longident.t @@ -272,7 +271,7 @@ type error = | Exclave_returns_not_local | Unboxed_int_literals_not_supported | Unboxed_float_literals_not_supported - | Function_type_not_rep of type_expr * Layout.Violation.t + | Function_type_not_rep of type_expr * Jkind.Violation.t exception Error of Location.t * Env.t * error exception Error_forward of Location.error diff --git a/ocaml/typing/typedecl.ml b/ocaml/typing/typedecl.ml index f24069e5a47..de5e066e51f 100644 --- a/ocaml/typing/typedecl.ml +++ b/ocaml/typing/typedecl.ml @@ -20,14 +20,13 @@ open Asttypes open Parsetree open Primitive open Types -open Layouts open Typetexp module String = Misc.Stdlib.String type native_repr_kind = Unboxed | Untagged -type layout_sort_loc = Cstr_tuple | Record | External +type jkind_sort_loc = Cstr_tuple | Record | External type error = Repeated_parameter @@ -63,16 +62,16 @@ type error = | Multiple_native_repr_attributes | Cannot_unbox_or_untag_type of native_repr_kind | Deep_unbox_or_untag_attribute of native_repr_kind - | Layout_mismatch_of_type of type_expr * Layout.Violation.t - | Layout_mismatch_of_path of Path.t * Layout.Violation.t - | Layout_sort of - { lloc : layout_sort_loc + | Jkind_mismatch_of_type of type_expr * Jkind.Violation.t + | Jkind_mismatch_of_path of Path.t * Jkind.Violation.t + | Jkind_sort of + { kloc : jkind_sort_loc ; typ : type_expr - ; err : Layout.Violation.t + ; err : Jkind.Violation.t } - | Layout_empty_record - | Non_value_in_sig of Layout.Violation.t * string - | Float64_in_block of type_expr * layout_sort_loc + | Jkind_empty_record + | Non_value_in_sig of Jkind.Violation.t * string + | Float64_in_block of type_expr * jkind_sort_loc | Mixed_block | Separability of Typedecl_separability.error | Bad_unboxed_attribute of string @@ -80,19 +79,19 @@ type error = | Nonrec_gadt | Invalid_private_row_declaration of type_expr | Local_not_enabled - | Layout_not_enabled of Layout.const + | Layout_not_enabled of Jkind.const open Typedtree exception Error of Location.t * error -let layout_of_attributes ~legacy_immediate ~context attrs = - match Layout.of_attributes ~legacy_immediate ~context attrs with +let jkind_of_attributes ~legacy_immediate ~context attrs = + match Jkind.of_attributes ~legacy_immediate ~context attrs with | Ok l -> l | Error { loc; txt } -> raise (Error (loc, Layout_not_enabled txt)) -let layout_of_attributes_default ~legacy_immediate ~context ~default attrs = - match Layout.of_attributes_default ~legacy_immediate ~context ~default attrs with +let jkind_of_attributes_default ~legacy_immediate ~context ~default attrs = + match Jkind.of_attributes_default ~legacy_immediate ~context ~default attrs with | Ok l -> l | Error { loc; txt } -> raise (Error (loc, Layout_not_enabled txt)) @@ -147,7 +146,7 @@ let enter_type ?abstract_abbrevs rec_flag env sdecl (id, uid) = let arity = List.length sdecl.ptype_params in let path = Path.Pident id in - (* There is some trickiness going on here with the layout. It expands on an + (* There is some trickiness going on here with the jkind. It expands on an old trick used in the manifest of [decl] below. Consider a declaration like: @@ -157,14 +156,14 @@ let enter_type ?abstract_abbrevs rec_flag env sdecl (id, uid) = When [enter_type] is called, we haven't yet analyzed anything about the manifests and kinds of the declarations, so it's natural to give [t] and - [foo] layout [Any]. But, while translating [t]'s manifest, we'll need to - know [foo] has layout [value], because it is used as the argument to + [foo] jkind [Any]. But, while translating [t]'s manifest, we'll need to + know [foo] has jkind [value], because it is used as the argument to [list_of_values]. And this check will occur before we've looked at [foo] at all. - One can imagine solutions, like estimating the layout based on the kind + One can imagine solutions, like estimating the jkind based on the kind (tricky for unboxed) or parameterizing the type_expr translation with an - option to not do full layout checking in some cases and fix it up later + option to not do full jkind checking in some cases and fix it up later (ugly). Instead, we build on an old trick that is used to handle constraints. @@ -196,35 +195,35 @@ let enter_type ?abstract_abbrevs rec_flag env sdecl (id, uid) = If [r] were, e.g., defined to be [int list], step 3 would fail. - To handle the original layout example, we piggyback off that approach - the - layout of the variable put in manifests here is updated when constraints + To handle the original jkind example, we piggyback off that approach - the + jkind of the variable put in manifests here is updated when constraints are checked and then unified with the real manifest and checked against the kind. *) - let type_layout = + let type_jkind = (* We set ~legacy_immediate to true because we're looking at a declaration that was already allowed to be [@@immediate] *) - layout_of_attributes_default + jkind_of_attributes_default ~legacy_immediate:true ~context:(Type_declaration path) - ~default:(Layout.any ~why:Initial_typedecl_env) + ~default:(Jkind.any ~why:Initial_typedecl_env) sdecl.ptype_attributes in let abstract_reason, type_manifest = match sdecl.ptype_manifest, abstract_abbrevs with - | (None, _ | Some _, None) -> Abstract_def, Some (Ctype.newvar type_layout) + | (None, _ | Some _, None) -> Abstract_def, Some (Ctype.newvar type_jkind) | Some _, Some reason -> reason, None in let type_params = List.map (fun (param, _) -> let name = get_type_param_name param in - let layout = get_type_param_layout path param in - Btype.newgenvar ?name layout) + let jkind = get_type_param_jkind path param in + Btype.newgenvar ?name jkind) sdecl.ptype_params in let decl = { type_params; type_arity = arity; type_kind = Type_abstract abstract_reason; - type_layout; + type_jkind; type_private = sdecl.ptype_private; type_manifest; type_variance = Variance.unknown_signature ~injective:false ~arity; @@ -244,16 +243,16 @@ let enter_type ?abstract_abbrevs rec_flag env sdecl (id, uid) = variable in [temp_env], which contains any requirements on the type implied by its use in other mutually defined types. - In particular, we want to ensure that the manifest of this type has a layout + In particular, we want to ensure that the manifest of this type has a jkind compatible with its uses in mutually defined types. One subtlety is that we - don't actually perform those layout checks here - we use - [Ctype.unify_delaying_layout_checks] to record any needed layout checks, but + don't actually perform those jkind checks here - we use + [Ctype.unify_delaying_jkind_checks] to record any needed jkind checks, but don't perform them until slightly later in [transl_type_decl]. The reason for this delay is ill-formed, circular types. These haven't been - ruled out yet, and as a result layout checking can fall into an infinite loop - where layout checking expands types, and these type expansions in subst - trigger layout checks that trigger type expansions that trigger layout checks + ruled out yet, and as a result jkind checking can fall into an infinite loop + where jkind checking expands types, and these type expansions in subst + trigger jkind checks that trigger type expansions that trigger jkind checks that... These circular types are ruled out just after [update_type] in [transl_type_decl], and then we perform the delayed checks. *) @@ -263,7 +262,7 @@ let update_type temp_env env id loc = match decl.type_manifest with None -> assert false | Some ty -> try - Ctype.(unify_delaying_layout_checks env + Ctype.(unify_delaying_jkind_checks env (newconstr path decl.type_params) ty) with Ctype.Unify err -> raise (Error(loc, Type_clash (env, err))) @@ -287,8 +286,8 @@ let is_fixed_type sd = let rec has_row_var sty = match sty.ptyp_desc with (* CR layouts upstreaming: The Ptyp_alias case also covers the case for a - layout annotation, conveniently. When upstreaming layouts, this - function will need a case for layout-annotation aliases. *) + jkind annotation, conveniently. When upstreaming jkinds, this + function will need a case for jkind-annotation aliases. *) Ptyp_alias (sty, _) -> has_row_var sty | Ptyp_class _ | Ptyp_object (_, Open) @@ -383,8 +382,8 @@ let transl_labels env univars closed lbls = {Types.ld_id = ld.ld_id; ld_mutable = ld.ld_mutable; ld_global = ld.ld_global; - ld_layout = Layout.any ~why:Dummy_layout; - (* Updated by [update_label_layouts] *) + ld_jkind = Jkind.any ~why:Dummy_jkind; + (* Updated by [update_label_jkinds] *) ld_type = ty; ld_loc = ld.ld_loc; ld_attributes = ld.ld_attributes; @@ -414,18 +413,18 @@ let transl_constructor_arguments env univars closed = function Types.Cstr_record lbls', Cstr_record lbls -(* Note that [make_constructor] does not fill in the [ld_layout] field of any +(* Note that [make_constructor] does not fill in the [ld_jkind] field of any computed record types, because it's called too early in the translation of a - type declaration to compute accurate layouts in the presence of recursively - defined types. It is updated later by [update_constructor_arguments_layouts] + type declaration to compute accurate jkinds in the presence of recursively + defined types. It is updated later by [update_constructor_arguments_jkinds] *) let make_constructor env loc ~cstr_path ~type_path type_params (svars : _ Either.t) sargs sret_type = let tvars = match svars with | Left vars_only -> List.map (fun v -> v.txt, None) vars_only - | Right vars_layouts -> - List.map (fun (v, l) -> v.txt, Option.map Location.get_txt l) vars_layouts + | Right vars_jkinds -> + List.map (fun (v, l) -> v.txt, Option.map Location.get_txt l) vars_jkinds in match sret_type with | None -> @@ -443,11 +442,11 @@ let make_constructor | Left vars_only -> Ctype.begin_def(); Some (TyVarEnv.make_poly_univars vars_only), true - | Right vars_layouts -> + | Right vars_jkinds -> Ctype.begin_def(); - Some (TyVarEnv.make_poly_univars_layouts + Some (TyVarEnv.make_poly_univars_jkinds ~context:(fun v -> Constructor_type_parameter (cstr_path, v)) - vars_layouts), true + vars_jkinds), true in let args, targs = transl_constructor_arguments env univars closed sargs @@ -481,7 +480,7 @@ let make_constructor let _vars = TyVarEnv.instance_poly_univars env loc univars in let set_level t = Ctype.unify_var env - (Ctype.newvar (Layout.any ~why:Dummy_layout)) t + (Ctype.newvar (Jkind.any ~why:Dummy_jkind)) t in Btype.iter_type_expr_cstr_args set_level args; set_level ret_type; @@ -525,62 +524,62 @@ let verify_unboxed_attr unboxed_attr sdecl = end end -(* Note [Default layouts in transl_declaration] +(* Note [Default jkinds in transl_declaration] ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ For every type declaration we create in transl_declaration, we must - choose the layout to use in the [type_layout] field. Note that choices - 2 and 3 below consult the layouts of other types. In the case that these - types are declared in the same mutually recursive group, those layouts + choose the jkind to use in the [type_jkind] field. Note that choices + 2 and 3 below consult the jkinds of other types. In the case that these + types are declared in the same mutually recursive group, those jkinds will be approximations; see the comments on [enter_type]. - 1. If there is a layout annotation, use that. We might later compute a more - precise layout for the type (e.g. [type t : value = int] or [type t : - value = A | B | C]); this will be updated in [update_decl_layout] (updates + 1. If there is a jkind annotation, use that. We might later compute a more + precise jkind for the type (e.g. [type t : value = int] or [type t : + value = A | B | C]); this will be updated in [update_decl_jkind] (updates from the kind) or [check_coherence] (updates from the manifest), which - also ensures that the updated layout is a sublayout of the annotated - layout. + also ensures that the updated jkind is a subjkind of the annotated + jkind. - 2. If there is no annotation but there is a manifest, use the layout + 2. If there is no annotation but there is a manifest, use the jkind of the manifest. This gets improved in [check_coherence], after - the manifest layout might be more accurate. + the manifest jkind might be more accurate. - 3. If there is no annotation and no manifest, the default layout + 3. If there is no annotation and no manifest, the default jkind depends on the kind: - Abstract types: In this case, we have a fully abstract type declaration, - like [type t]. We wish to default these to have layout [value] for + like [type t]. We wish to default these to have jkind [value] for backward compatibility. - [@@unboxed] records and variants: We use [any] as the default. - This default gets updated in [update_decl_layout], when we can - safely look up the layout of the field. Recursive uses - of the unboxed type are OK, because [update_decl_layout] uses - [Ctype.type_layout], which looks through unboxed types (and thus + This default gets updated in [update_decl_jkind], when we can + safely look up the jkind of the field. Recursive uses + of the unboxed type are OK, because [update_decl_jkind] uses + [Ctype.type_jkind], which looks through unboxed types (and thus the choice of [any] is not observed on recursive occurrences). - - Other records and variants: The layout of these depends on the layouts + - Other records and variants: The jkind of these depends on the jkinds of their fields: an enumeration variant is an [immediate], and someday (* CR layouts v5: today is the someday! *) we will allow records comprising only [void]s, which will also be [immediate]. So we choose a default of [value], which gets updated in - [update_decl_layout]. This default choice does get used when updating - the layouts of other types that (recursively) mention the current type, - but that's OK: the update in [update_decl_layout] can only change a + [update_decl_jkind]. This default choice does get used when updating + the jkinds of other types that (recursively) mention the current type, + but that's OK: the update in [update_decl_jkind] can only change a [value] to become [immediate], and yet that change can never affect the decision of whether an outer record/variant is a [value] or [immediate] (only choices of [void] can do that). (Again, any unboxed records/variants are looked through by - [type_layout], so a void one of those is OK.) + [type_jkind], so a void one of those is OK.) It is tempting to use [any] as the default here, but that causes - trouble around recursive occurrences in [update_decl_layout]. + trouble around recursive occurrences in [update_decl_jkind]. - Extensible variants: These really are [value]s, so we just use that as the default. - The layouts in type declarations are always just upper bounds, as + The jkinds in type declarations are always just upper bounds, as we see in this example: {[ @@ -591,15 +590,15 @@ let verify_unboxed_attr unboxed_attr sdecl = type t7_3 = t7_2 [@@immediate] ]} - The proper layout of [t7] is [immediate], but that's hard to know. Because - [t7] has no layout annotation and no manifest, it gets a default layout - of [value]. [t7_2] gets a default of [any]. We update [t7]'s layout to be - [immediate] in [update_decl_layout]. But when updating [t7_2]'s layout, we - use the *original, default* layout for [t7]: [value]. This means that the - layout recorded for [t7_2] is actually [value]. The program above is still - accepted, because the layout check in [check_coherence] uses [type_layout], + The proper jkind of [t7] is [immediate], but that's hard to know. Because + [t7] has no jkind annotation and no manifest, it gets a default jkind + of [value]. [t7_2] gets a default of [any]. We update [t7]'s jkind to be + [immediate] in [update_decl_jkind]. But when updating [t7_2]'s jkind, we + use the *original, default* jkind for [t7]: [value]. This means that the + jkind recorded for [t7_2] is actually [value]. The program above is still + accepted, because the jkind check in [check_coherence] uses [type_jkind], which looks through unboxed types. So it's all OK for users, but it's - unfortunate that the stored layout on [t7_2] is imprecise. + unfortunate that the stored jkind on [t7_2] is imprecise. (* CR layouts: see if we can do better here. *) *) @@ -628,10 +627,10 @@ let transl_declaration env sdecl (id, uid) = | _ -> false, false (* Not unboxable, mark as boxed *) in verify_unboxed_attr unboxed_attr sdecl; - let layout_annotation = + let jkind_annotation = (* We set legacy_immediate to true because you were already allowed to write [@@immediate] on declarations. *) - layout_of_attributes ~legacy_immediate:true ~context:(Type_declaration path) + jkind_of_attributes ~legacy_immediate:true ~context:(Type_declaration path) sdecl.ptype_attributes in let (tman, man) = match sdecl.ptype_manifest with @@ -641,15 +640,15 @@ let transl_declaration env sdecl (id, uid) = 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 - (* layout_default is the layout to use for now as the type_layout when there + let any = Jkind.any ~why:Initial_typedecl_env in + (* jkind_default is the jkind to use for now as the type_jkind when there is no annotation and no manifest. - See Note [Default layouts in transl_declaration]. + See Note [Default jkinds in transl_declaration]. *) - let (tkind, kind, layout_default) = + let (tkind, kind, jkind_default) = match sdecl.ptype_kind with | Ptype_abstract -> - Ttype_abstract, Type_abstract Abstract_def, Layout.value ~why:Default_type_layout + Ttype_abstract, Type_abstract Abstract_def, Jkind.value ~why:Default_type_jkind | Ptype_variant scstrs -> if List.exists (fun cstr -> cstr.pcd_res <> None) scstrs then begin match cstrs with @@ -675,8 +674,8 @@ let transl_declaration env sdecl (id, uid) = | None -> Either.Left scstr.pcd_vars, scstr.pcd_attributes - | Some (vars_layouts, attributes) -> - Either.Right vars_layouts, + | Some (vars_jkinds, attributes) -> + Either.Right vars_jkinds, attributes in let tvars, targs, tret_type, args, ret_type = @@ -708,12 +707,12 @@ let transl_declaration env sdecl (id, uid) = (fun () -> make_cstr scstr) in let tcstrs, cstrs = List.split (List.map make_cstr scstrs) in - let rep, layout = + let rep, jkind = if unbox then Variant_unboxed, any else - (* We mark all arg layouts "any" here. They are updated later, - after the circular type checks make it safe to check layouts. *) + (* We mark all arg jkinds "any" here. They are updated later, + after the circular type checks make it safe to check jkinds. *) Variant_boxed ( Array.map (fun cstr -> @@ -723,52 +722,52 @@ let transl_declaration env sdecl (id, uid) = | Cstr_record _ -> [| any |]) (Array.of_list cstrs) ), - Layout.value ~why:Boxed_variant + Jkind.value ~why:Boxed_variant in - Ttype_variant tcstrs, Type_variant (cstrs, rep), layout + Ttype_variant tcstrs, Type_variant (cstrs, rep), jkind | Ptype_record lbls -> let lbls, lbls' = transl_labels env None true lbls in - let rep, layout = + let rep, jkind = if unbox then Record_unboxed, any else (if List.for_all (fun l -> is_float env l.Types.ld_type) lbls' then Record_float else Record_boxed (Array.make (List.length lbls) any)), - Layout.value ~why:Boxed_record + Jkind.value ~why:Boxed_record in - Ttype_record lbls, Type_record(lbls', rep), layout + Ttype_record lbls, Type_record(lbls', rep), jkind | Ptype_open -> - Ttype_open, Type_open, Layout.value ~why:Extensible_variant + Ttype_open, Type_open, Jkind.value ~why:Extensible_variant in - let layout = + let jkind = (* - If there's an annotation, we use that. It's checked against - a kind in [update_decl_layout] and the manifest in [check_coherence]. + a kind in [update_decl_jkind] and the manifest in [check_coherence]. - If there's no annotation but there is a manifest, we estimate the - layout based on the manifest here. This upper bound saves time - later by avoiding expanding the manifest in layout checks, but it + jkind based on the manifest here. This upper bound saves time + later by avoiding expanding the manifest in jkind checks, but it would be sound to leave in `any`. We can't give a perfectly - accurate layout here because we don't have access to the + accurate jkind here because we don't have access to the manifests of mutually defined types (but we could one day consider improving it at a later point in transl_type_decl). - If there's no annotation and no manifest, we fill in with the default calculated above here. It will get updated in - [update_decl_layout]. See Note [Default layouts in transl_declaration]. + [update_decl_jkind]. See Note [Default jkinds in transl_declaration]. *) (* CR layouts: Is the estimation mentioned in the second bullet above doing anything for us? Abstract types are updated by check_coherence and record/variant types are updated by - update_decl_layout. *) - match layout_annotation, man with + update_decl_jkind. *) + match jkind_annotation, man with | Some annot, _ -> annot - | None, Some typ -> Ctype.estimate_type_layout env typ - | None, None -> layout_default + | None, Some typ -> Ctype.estimate_type_jkind env typ + | None, None -> jkind_default in let arity = List.length params in let decl = { type_params = params; type_arity = arity; type_kind = kind; - type_layout = layout; + type_jkind = jkind; type_private = sdecl.ptype_private; type_manifest = man; type_variance = Variance.unknown_signature ~injective:false ~arity; @@ -844,10 +843,10 @@ let rec check_constraints_rec env loc visited ty = match Ctype.matches ~expand_error_trace:false env ty ty' with | Unification_failure err -> raise (Error(loc, Constraint_failed (env, err))) - | Layout_mismatch { original_layout; inferred_layout; ty } -> - raise (Error(loc, Layout_mismatch_of_type (ty, - (Layout.Violation.of_ (Not_a_sublayout - (original_layout, inferred_layout)))))) + | Jkind_mismatch { original_jkind; inferred_jkind; ty } -> + raise (Error(loc, Jkind_mismatch_of_type (ty, + (Jkind.Violation.of_ (Not_a_subjkind + (original_jkind, inferred_jkind)))))) | All_good -> () end; List.iter (check_constraints_rec env loc visited) args @@ -936,14 +935,14 @@ let check_constraints env sdecl (_, decl) = need to check that the equation refers to a type of the same kind with the same constructors and labels. - If the kind is [Type_abstract], we need to check that [type_layout] (where - we've stored the layout annotation, if any) corresponds to the manifest - (e.g., in the case where [type_layout] is immediate, we should check the + If the kind is [Type_abstract], we need to check that [type_jkind] (where + we've stored the jkind annotation, if any) corresponds to the manifest + (e.g., in the case where [type_jkind] is immediate, we should check the manifest is immediate). It would also be nice to store the best possible - layout for this type in the kind, to avoid expansions later. So, we do the - relatively expensive thing of computing the best possible layout for the - manifest, checking that it's a sublayout of [type_layout], and then replacing - [type_layout] with what we computed. + jkind for this type in the kind, to avoid expansions later. So, we do the + relatively expensive thing of computing the best possible jkind for the + manifest, checking that it's a subjkind of [type_jkind], and then replacing + [type_jkind] with what we computed. CR layouts: if easy, factor out the shared backtracking logic from here and is_immediate. @@ -984,21 +983,21 @@ let check_coherence env loc dpath decl = end | { type_kind = Type_abstract _; type_manifest = Some ty } -> - let layout' = + let jkind' = if !Clflags.principal || Env.has_local_constraints env then (* We snapshot to keep this pure; see the mode crossing test that mentions snapshotting for an example. *) let snap = Btype.snapshot () in - let layout' = Ctype.type_layout env ty in + let jkind' = Ctype.type_jkind env ty in Btype.backtrack snap; - layout' + jkind' else - Ctype.type_layout env ty + Ctype.type_jkind env ty in - begin match Layout.sub_with_history layout' decl.type_layout with - | Ok layout' -> { decl with type_layout = layout' } + begin match Jkind.sub_with_history jkind' decl.type_jkind with + | Ok jkind' -> { decl with type_jkind = jkind' } | Error v -> - raise (Error (loc, Layout_mismatch_of_type (ty,v))) + raise (Error (loc, Jkind_mismatch_of_type (ty,v))) end | { type_manifest = None } -> decl @@ -1007,14 +1006,14 @@ let check_abbrev env sdecl (id, decl) = (* Makes sure a type is representable. Will lower "any" to "value". *) (* CR layouts: In the places where this is used, we first call this to - ensure a type is representable, and then call [Ctype.type_layout] to get the - most precise layout. These could be combined into some new function - [Ctype.type_layout_representable] that avoids duplicated work *) + ensure a type is representable, and then call [Ctype.type_jkind] to get the + most precise jkind. These could be combined into some new function + [Ctype.type_jkind_representable] that avoids duplicated work *) (* CR layouts: Many places where [check_representable] is called in this file should be replaced with checks at the places where values of those types are constructed. We've been conservative here in the first version. This is the same issue as with arrows. *) -let check_representable ~why ~allow_float env loc lloc typ = +let check_representable ~why ~allow_float env loc kloc typ = match Ctype.type_sort ~why env typ with (* CR layouts v3: This is a convenient place to rule out [float#] in structures for now, as it is called on all the types in declared blocks in @@ -1023,100 +1022,100 @@ let check_representable ~why ~allow_float env loc lloc typ = (* CR layouts v2.5: This rules out float# in [@@unboxed] types. No real need to rule that out - I just haven't had time to write tests for it yet. *) | Ok s -> begin - match Sort.get_default_value s with - (* All calls to this are part of [update_decl_layout], which happens after + match Jkind.Sort.get_default_value s with + (* All calls to this are part of [update_decl_jkind], which happens after all the defaulting, so we don't expect this actually defaults the sort - we just want the [const]. *) | Void | Value -> () | Float64 when allow_float -> () (* CR layouts v2.5: If we want to hold back [float#] records from the maturity progression of [float64], we can add a check here. *) - | Float64 -> raise (Error (loc, Float64_in_block (typ, lloc))) + | Float64 -> raise (Error (loc, Float64_in_block (typ, kloc))) end - | Error err -> raise (Error (loc,Layout_sort {lloc; typ; err})) + | Error err -> raise (Error (loc,Jkind_sort {kloc; typ; err})) -(* The [update_x_layouts] functions infer more precise layouts in the type kind, +(* The [update_x_jkinds] functions infer more precise jkinds in the type kind, including which fields of a record are void. This would be hard to do during [transl_declaration] due to mutually recursive types. *) -(* [update_label_layouts] additionally returns whether all the layouts +(* [update_label_jkinds] additionally returns whether all the jkinds were void *) -let update_label_layouts env loc lbls named = - (* [named] is [Some layouts] for top-level records (we will update the - layouts) and [None] for inlined records. *) +let update_label_jkinds env loc lbls named = + (* [named] is [Some jkinds] for top-level records (we will update the + jkinds) and [None] for inlined records. *) (* CR layouts v5: it wouldn't be too hard to support records that are all void. just needs a bit of refactoring in translcore *) let update = match named with | None -> fun _ _ -> () - | Some layouts -> fun idx layout -> layouts.(idx) <- layout + | Some jkinds -> fun idx jkind -> jkinds.(idx) <- jkind in let lbls = List.mapi (fun idx (Types.{ld_type; ld_id; ld_loc} as lbl) -> check_representable ~why:(Label_declaration ld_id) ~allow_float:(Option.is_some named) env ld_loc Record ld_type; - let ld_layout = Ctype.type_layout env ld_type in - update idx ld_layout; - {lbl with ld_layout} + let ld_jkind = Ctype.type_jkind env ld_type in + update idx ld_jkind; + {lbl with ld_jkind} ) lbls in - if List.for_all (fun l -> Layout.is_void_defaulting l.ld_layout) lbls then - raise (Error (loc, Layout_empty_record)) + if List.for_all (fun l -> Jkind.is_void_defaulting l.ld_jkind) lbls then + raise (Error (loc, Jkind_empty_record)) else lbls, false (* CR layouts v5: return true for a record with all voids *) (* In addition to updated constructor arguments, returns whether all arguments are void, useful for detecting enumerations that can be [immediate]. *) -let update_constructor_arguments_layouts env loc cd_args layouts = +let update_constructor_arguments_jkinds env loc cd_args jkinds = match cd_args with | Types.Cstr_tuple tys -> List.iteri (fun idx (ty,_) -> check_representable ~why:(Constructor_declaration idx) ~allow_float:false env loc Cstr_tuple ty; - layouts.(idx) <- Ctype.type_layout env ty) tys; - cd_args, Array.for_all Layout.is_void_defaulting layouts + jkinds.(idx) <- Ctype.type_jkind env ty) tys; + cd_args, Array.for_all Jkind.is_void_defaulting jkinds | Types.Cstr_record lbls -> - let lbls, all_void = update_label_layouts env loc lbls None in - layouts.(0) <- Layout.value ~why:Boxed_record; + let lbls, all_void = update_label_jkinds env loc lbls None in + jkinds.(0) <- Jkind.value ~why:Boxed_record; Types.Cstr_record lbls, all_void -(* This function updates layout stored in kinds with more accurate layouts. - It is called after the circularity checks and the delayed layout checks - have happened, so we can fully compute layouts of types. +(* This function updates jkind stored in kinds with more accurate jkinds. + It is called after the circularity checks and the delayed jkind checks + have happened, so we can fully compute jkinds of types. This function is an important part - of correctness, as it also checks that the layout computed from a kind - is consistent (i.e. a sublayout of) any layout annotation. - See Note [Default layouts in transl_declaration]. + of correctness, as it also checks that the jkind computed from a kind + is consistent (i.e. a subjkind of) any jkind annotation. + See Note [Default jkinds in transl_declaration]. *) -let update_decl_layout env dpath decl = +let update_decl_jkind env dpath decl = let open struct (* For tracking what types appear in record blocks. *) type has_values = Has_values | No_values type has_float64s = Has_float64s | No_float64s end in - (* returns updated labels, updated rep, and updated layout *) + (* returns updated labels, updated rep, and updated jkind *) let update_record_kind loc lbls rep = match lbls, rep with | [Types.{ld_type; ld_id; ld_loc} as lbl], Record_unboxed -> check_representable ~why:(Label_declaration ld_id) ~allow_float:false env ld_loc Record ld_type; - let ld_layout = Ctype.type_layout env ld_type in - [{lbl with ld_layout}], Record_unboxed, ld_layout - | _, Record_boxed layouts -> - let lbls, all_void = update_label_layouts env loc lbls (Some layouts) in - let layout = Layout.for_boxed_record ~all_void in + let ld_jkind = Ctype.type_jkind env ld_type in + [{lbl with ld_jkind}], Record_unboxed, ld_jkind + | _, Record_boxed jkinds -> + let lbls, all_void = update_label_jkinds env loc lbls (Some jkinds) in + let jkind = Jkind.for_boxed_record ~all_void in let has_values, has_floats = Array.fold_left - (fun (values, floats) layout -> - match Layout.get_default_value layout with + (fun (values, floats) jkind -> + match Jkind.get_default_value jkind with | Value | Immediate64 | Immediate -> (Has_values, floats) | Float64 -> (values, Has_float64s) | Void -> (values, floats) | Any -> assert false) - (No_values, No_float64s) layouts + (No_values, No_float64s) jkinds in let rep = match has_values, has_floats with @@ -1126,22 +1125,22 @@ let update_decl_layout env dpath decl = | No_values, No_float64s -> Misc.fatal_error "Typedecl.update_record_kind: empty record" in - lbls, rep, layout + lbls, rep, jkind | _, Record_float -> - (* CR layouts v2.5: When we have an unboxed float layout, does it make + (* CR layouts v2.5: When we have an unboxed float jkind, does it make sense to use that here? The use of value feels inaccurate, but I think the code that would look at first looks at the rep. *) let lbls = List.map (fun lbl -> - { lbl with ld_layout = Layout.value ~why:Float_record_field }) + { lbl with ld_jkind = Jkind.value ~why:Float_record_field }) lbls in - lbls, rep, Layout.value ~why:Boxed_record + lbls, rep, Jkind.value ~why:Boxed_record | (([] | (_ :: _)), Record_unboxed | _, (Record_inlined _ | Record_ufloat)) -> assert false in - (* returns updated constructors, updated rep, and updated layout *) + (* returns updated constructors, updated rep, and updated jkind *) let update_variant_kind cstrs rep = (* CR layouts: factor out duplication *) match cstrs, rep with @@ -1150,65 +1149,65 @@ let update_decl_layout env dpath decl = | Cstr_tuple [ty,_] -> begin check_representable ~why:(Constructor_declaration 0) ~allow_float:false env cd_loc Cstr_tuple ty; - let layout = Ctype.type_layout env ty in - cstrs, Variant_unboxed, layout + let jkind = Ctype.type_jkind env ty in + cstrs, Variant_unboxed, jkind end | Cstr_record [{ld_type; ld_id; ld_loc} as lbl] -> begin check_representable ~why:(Label_declaration ld_id) ~allow_float:false env ld_loc Record ld_type; - let ld_layout = Ctype.type_layout env ld_type in + let ld_jkind = Ctype.type_jkind env ld_type in [{ cstr with Types.cd_args = - Cstr_record [{ lbl with ld_layout }] }], - Variant_unboxed, ld_layout + Cstr_record [{ lbl with ld_jkind }] }], + Variant_unboxed, ld_jkind end | (Cstr_tuple ([] | _ :: _ :: _) | Cstr_record ([] | _ :: _ :: _)) -> assert false end - | cstrs, Variant_boxed layouts -> + | cstrs, Variant_boxed jkinds -> let (_,cstrs,all_voids) = List.fold_left (fun (idx,cstrs,all_voids) cstr -> let cd_args, all_void = - update_constructor_arguments_layouts env cstr.Types.cd_loc - cstr.Types.cd_args layouts.(idx) + update_constructor_arguments_jkinds env cstr.Types.cd_loc + cstr.Types.cd_args jkinds.(idx) in let cstr = { cstr with Types.cd_args } in (idx+1,cstr::cstrs,all_voids && all_void) ) (0,[],true) cstrs in - let layout = Layout.for_boxed_variant ~all_voids in - List.rev cstrs, rep, layout + let jkind = Jkind.for_boxed_variant ~all_voids in + List.rev cstrs, rep, jkind | (([] | (_ :: _)), Variant_unboxed | _, Variant_extensible) -> assert false in - let new_decl, new_layout = match decl.type_kind with - | Type_abstract _ -> decl, decl.type_layout + let new_decl, new_jkind = match decl.type_kind with + | Type_abstract _ -> decl, decl.type_jkind | Type_open -> - let type_layout = Layout.value ~why:Extensible_variant in - { decl with type_layout }, type_layout + let type_jkind = Jkind.value ~why:Extensible_variant in + { decl with type_jkind }, type_jkind | Type_record (lbls, rep) -> - let lbls, rep, type_layout = update_record_kind decl.type_loc lbls rep in - { decl with type_kind = Type_record (lbls, rep); type_layout }, - type_layout + let lbls, rep, type_jkind = update_record_kind decl.type_loc lbls rep in + { decl with type_kind = Type_record (lbls, rep); type_jkind }, + type_jkind | Type_variant (cstrs, rep) -> - let cstrs, rep, type_layout = update_variant_kind cstrs rep in - { decl with type_kind = Type_variant (cstrs, rep); type_layout }, - type_layout + let cstrs, rep, type_jkind = update_variant_kind cstrs rep in + { decl with type_kind = Type_variant (cstrs, rep); type_jkind }, + type_jkind in - (* check that the layout computed from the kind matches the layout - annotation, which was stored in decl.type_layout *) - if new_layout != decl.type_layout then - begin match Layout.sub new_layout decl.type_layout with + (* check that the jkind computed from the kind matches the jkind + annotation, which was stored in decl.type_jkind *) + if new_jkind != decl.type_jkind then + begin match Jkind.sub new_jkind decl.type_jkind with | Ok () -> () | Error err -> - raise(Error(decl.type_loc, Layout_mismatch_of_path (dpath,err))) + raise(Error(decl.type_loc, Jkind_mismatch_of_path (dpath,err))) end; new_decl -let update_decls_layout env decls = +let update_decls_jkind env decls = List.map - (fun (id, decl) -> (id, update_decl_layout env (Pident id) decl)) + (fun (id, decl) -> (id, update_decl_jkind env (Pident id) decl)) decls (* Check that recursion is well-founded *) @@ -1273,9 +1272,9 @@ let check_well_founded env loc path to_check ty = let check_well_founded_manifest env loc path decl = if decl.type_manifest = None then () else let args = - (* The layouts here shouldn't matter for the purposes of + (* The jkinds here shouldn't matter for the purposes of [check_well_founded] *) - List.map (fun _ -> Ctype.newvar (Layout.any ~why:Dummy_layout)) + List.map (fun _ -> Ctype.newvar (Jkind.any ~why:Dummy_jkind)) decl.type_params in check_well_founded env loc path (Path.same path) (Ctype.newconstr path args) @@ -1500,7 +1499,7 @@ let transl_type_decl env rec_flag sdecl_list = (* Build the final env. *) let new_env = add_types_to_env decls env in (* Update stubs *) - let delayed_layout_checks = + let delayed_jkind_checks = match rec_flag with | Asttypes.Nonrecursive -> [] | Asttypes.Recursive -> @@ -1539,23 +1538,23 @@ let transl_type_decl env rec_flag sdecl_list = List.iter (check_abbrev_recursion ~abs_env new_env id_loc_list to_check) tdecls; (* Now that we've ruled out ill-formed types, we can perform the delayed - layout checks *) + jkind checks *) List.iter (fun (checks,loc) -> - List.iter (fun (ty,layout) -> - match Ctype.constrain_type_layout new_env ty layout with + List.iter (fun (ty,jkind) -> + match Ctype.constrain_type_jkind new_env ty jkind with | Ok _ -> () | Error err -> - let err = Errortrace.unification_error ~trace:[Bad_layout (ty,err)] in + let err = Errortrace.unification_error ~trace:[Bad_jkind (ty,err)] in raise (Error (loc, Type_clash (new_env, err)))) checks) - delayed_layout_checks; + delayed_jkind_checks; (* Check that constraints are enforced *) List.iter2 (check_constraints new_env) sdecl_list decls; (* Check that all type variables are closed; this also defaults any remaining - sort variables. Defaulting must happen before update_decls_layout, + sort variables. Defaulting must happen before update_decls_jkind, Typedecl_seperability.update_decls, and add_types_to_env, all of which need to check whether parts of the type are void (and currently use - Layout.equate to do this which would set any remaining sort variables + Jkind.equate to do this which would set any remaining sort variables to void). *) List.iter2 (fun sdecl tdecl -> @@ -1571,7 +1570,7 @@ let transl_type_decl env rec_flag sdecl_list = |> name_recursion_decls sdecl_list |> Typedecl_variance.update_decls env sdecl_list |> Typedecl_separability.update_decls env - |> update_decls_layout new_env + |> update_decls_jkind new_env with | Typedecl_variance.Error (loc, err) -> raise (Error (loc, Variance err)) @@ -1605,25 +1604,25 @@ let transl_extension_constructor_decl | Cstr_tuple args -> List.length args | Cstr_record _ -> 1 in - let layouts = Array.make num_args (Layout.any ~why:Dummy_layout) in + let jkinds = Array.make num_args (Jkind.any ~why:Dummy_jkind) in let args, constant = - update_constructor_arguments_layouts env loc args layouts + update_constructor_arguments_jkinds env loc args jkinds in - args, layouts, constant, ret_type, + args, jkinds, constant, ret_type, Text_decl(tvars, targs, tret_type) let transl_extension_constructor_jst env type_path _type_params typext_params _priv loc id _attrs : Jane_syntax.Extension_constructor.t -> _ = function - | Jext_layout (Lext_decl(vars_layouts, args, res)) -> + | Jext_layout (Lext_decl(vars_jkinds, args, res)) -> transl_extension_constructor_decl - env type_path typext_params loc id (Right vars_layouts) args res + env type_path typext_params loc id (Right vars_jkinds) args res let transl_extension_constructor ~scope env type_path type_params typext_params priv sext = let id = Ident.create_scoped ~scope sext.pext_name.txt in let loc = sext.pext_loc in - let args, arg_layouts, constant, ret_type, kind = + let args, arg_jkinds, constant, ret_type, kind = match Jane_syntax.Extension_constructor.of_ast sext with | Some (jext, attrs) -> transl_extension_constructor_jst @@ -1662,9 +1661,9 @@ let transl_extension_constructor ~scope env type_path type_params List.iter (fun ty -> match get_desc ty with - | Tvar { name = Some "_"; layout } + | Tvar { name = Some "_"; jkind } when List.exists (eq_type ty) vars -> - set_type_desc ty (Tvar { name = None; layout }) + set_type_desc ty (Tvar { name = None; jkind }) | _ -> ()) typext_params end; @@ -1716,14 +1715,14 @@ let transl_extension_constructor ~scope env type_path type_params in Types.Cstr_record lbls in - args, cdescr.cstr_arg_layouts, cdescr.cstr_constant, ret_type, + args, cdescr.cstr_arg_jkinds, cdescr.cstr_constant, ret_type, Text_rebind(path, lid) in let ext = { ext_type_path = type_path; ext_type_params = typext_params; ext_args = args; - ext_arg_layouts = arg_layouts; + ext_arg_jkinds = arg_jkinds; ext_constant = constant; ext_ret_type = ret_type; ext_private = priv; @@ -1990,9 +1989,9 @@ let prim_const_mode m = allow non-representable types in external args/returns then. *) let type_sort_external ~why env loc typ = match Ctype.type_sort ~why env typ with - | Ok s -> Sort.get_default_value s + | Ok s -> Jkind.Sort.get_default_value s | Error err -> - raise (Error (loc,Layout_sort {lloc = External; typ; err})) + raise (Error (loc,Jkind_sort {kloc = External; typ; err})) let rec parse_native_repr_attributes env core_type ty rmode ~global_repr = match core_type.ptyp_desc, get_desc ty, @@ -2056,8 +2055,8 @@ let check_unboxable env loc ty = let transl_value_decl env loc valdecl = let cty = Typetexp.transl_type_scheme env valdecl.pval_type in (* CR layouts v5: relax this to check for representability. *) - begin match Ctype.constrain_type_layout env cty.ctyp_type - (Layout.value ~why:Structure_element) with + begin match Ctype.constrain_type_jkind env cty.ctyp_type + (Jkind.value ~why:Structure_element) with | Ok () -> () | Error err -> raise(Error(cty.ctyp_loc, Non_value_in_sig(err, valdecl.pval_name.txt))) @@ -2194,23 +2193,23 @@ let transl_with_constraint id ?fixed_row_path ~sig_env ~sig_decl ~outer_env if arity_ok && not sig_decl_abstract && sdecl.ptype_private = Private then Location.deprecated loc "spurious use of private"; - let type_kind, type_unboxed_default, type_layout = + let type_kind, type_unboxed_default, type_jkind = (* Here, `man = None` indicates we have a "fake" with constraint built by [Typetexp.create_package_mty] for a package type. *) if arity_ok && man <> None then - sig_decl.type_kind, sig_decl.type_unboxed_default, sig_decl.type_layout + sig_decl.type_kind, sig_decl.type_unboxed_default, sig_decl.type_jkind else (* CR layouts: this is a gross hack. See the comments in the [Ptyp_package] case of [Typetexp.transl_type_aux]. *) - let layout = Layout.value ~why:Package_hack in - (* Layout.(of_attributes ~default:value sdecl.ptype_attributes) *) - Type_abstract Abstract_def, false, layout + let jkind = Jkind.value ~why:Package_hack in + (* Jkind.(of_attributes ~default:value sdecl.ptype_attributes) *) + Type_abstract Abstract_def, false, jkind in let new_sig_decl = { type_params = params; type_arity = arity; type_kind; - type_layout; + type_jkind; type_private = priv; type_manifest = man; type_variance = []; @@ -2248,7 +2247,7 @@ let transl_with_constraint id ?fixed_row_path ~sig_env ~sig_decl ~outer_env type_params = new_sig_decl.type_params; type_arity = new_sig_decl.type_arity; type_kind = new_sig_decl.type_kind; - type_layout = new_sig_decl.type_layout; + type_jkind = new_sig_decl.type_jkind; type_private = new_sig_decl.type_private; type_manifest = new_sig_decl.type_manifest; type_unboxed_default = new_sig_decl.type_unboxed_default; @@ -2278,7 +2277,7 @@ let transl_with_constraint id ?fixed_row_path ~sig_env ~sig_decl ~outer_env (* Approximate a type declaration: just make all types abstract *) -let abstract_type_decl ~injective layout params = +let abstract_type_decl ~injective jkind params = let arity = List.length params in Ctype.begin_def(); let params = List.map Ctype.newvar params in @@ -2286,7 +2285,7 @@ let abstract_type_decl ~injective layout params = { type_params = params; type_arity = arity; type_kind = Type_abstract Abstract_def; - type_layout = layout; + type_jkind = jkind; type_private = Public; type_manifest = None; type_variance = Variance.unknown_signature ~injective ~arity; @@ -2309,19 +2308,19 @@ let approx_type_decl sdecl_list = let id = Ident.create_scoped ~scope sdecl.ptype_name.txt in let path = Path.Pident id in let injective = sdecl.ptype_kind <> Ptype_abstract in - let layout = + let jkind = (* We set legacy_immediate to true because you were already allowed to write [@@immediate] on declarations. *) - layout_of_attributes_default ~legacy_immediate:true + jkind_of_attributes_default ~legacy_immediate:true ~context:(Type_declaration path) - ~default:(Layout.value ~why:Default_type_layout) + ~default:(Jkind.value ~why:Default_type_jkind) sdecl.ptype_attributes in let params = - List.map (fun (param, _) -> get_type_param_layout path param) + List.map (fun (param, _) -> get_type_param_jkind path param) sdecl.ptype_params in - (id, abstract_type_decl ~injective layout params)) + (id, abstract_type_decl ~injective jkind params)) sdecl_list (* Variant of check_abbrev_recursion to check the well-formedness @@ -2578,29 +2577,29 @@ let report_error ppf = function a direct argument or result of the primitive,@ \ it should not occur deeply into its type.@]" (match kind with Unboxed -> "@unboxed" | Untagged -> "@untagged") - | Layout_mismatch_of_path (dpath,v) -> + | Jkind_mismatch_of_path (dpath,v) -> (* the type is always printed just above, so print out just the head of the path instead of something like [t/3] *) let offender ppf = fprintf ppf "Type %s" (Ident.name (Path.head dpath)) in - Layout.Violation.report_with_offender ~offender ppf v - | Layout_mismatch_of_type (ty,v) -> + Jkind.Violation.report_with_offender ~offender ppf v + | Jkind_mismatch_of_type (ty,v) -> let offender ppf = fprintf ppf "Type %a" Printtyp.type_expr ty in - Layout.Violation.report_with_offender ~offender ppf v - | Layout_sort {lloc; typ; err} -> + Jkind.Violation.report_with_offender ~offender ppf v + | Jkind_sort {kloc; typ; err} -> let s = - match lloc with + match kloc with | Cstr_tuple -> "Constructor argument" | Record -> "Record element" | External -> "External" in fprintf ppf "@[%s types must have a representable layout.@ \ %a@]" s - (Layout.Violation.report_with_offender + (Jkind.Violation.report_with_offender ~offender:(fun ppf -> Printtyp.type_expr ppf typ)) err - | Layout_empty_record -> + | Jkind_empty_record -> fprintf ppf "@[Records must contain at least one runtime value.@]" | Non_value_in_sig (err, val_name) -> fprintf ppf "@[This type signature for %s is not a value type.@ %a@]" - val_name (Layout.Violation.report_with_name ~name:val_name) err + val_name (Jkind.Violation.report_with_name ~name:val_name) err | Float64_in_block (typ, lloc) -> let struct_desc = match lloc with @@ -2650,7 +2649,7 @@ let report_error ppf = function fprintf ppf "@[Layout %s is used here, but the appropriate layouts extension is \ not enabled@]" - (Layout.string_of_const c) + (Jkind.string_of_const c) let () = Location.register_error_of_exn diff --git a/ocaml/typing/typedecl.mli b/ocaml/typing/typedecl.mli index efd6348ca12..20e60fe6895 100644 --- a/ocaml/typing/typedecl.mli +++ b/ocaml/typing/typedecl.mli @@ -16,7 +16,6 @@ (* Typing of type definitions and primitive definitions *) open Types -open Layouts open Format val transl_type_decl: @@ -48,13 +47,13 @@ val transl_with_constraint: Typedtree.type_declaration val abstract_type_decl: - injective:bool -> layout -> layout list -> type_declaration + injective:bool -> Jkind.t -> Jkind.t list -> type_declaration val approx_type_decl: Parsetree.type_declaration list -> (Ident.t * type_declaration) list val check_recmod_typedecl: Env.t -> Location.t -> Ident.t list -> Path.t -> type_declaration -> unit -(* Returns an updated decl that may include improved layout estimates, but it's +(* Returns an updated decl that may include improved jkind estimates, but it's sound to throw it away. *) val check_coherence: Env.t -> Location.t -> Path.t -> type_declaration -> type_declaration @@ -64,8 +63,8 @@ val is_fixed_type : Parsetree.type_declaration -> bool type native_repr_kind = Unboxed | Untagged -(* Records reason for a layout representability requirement in errors. *) -type layout_sort_loc = Cstr_tuple | Record | External +(* Records reason for a jkind representability requirement in errors. *) +type jkind_sort_loc = Cstr_tuple | Record | External type error = Repeated_parameter @@ -101,16 +100,16 @@ type error = | Multiple_native_repr_attributes | Cannot_unbox_or_untag_type of native_repr_kind | Deep_unbox_or_untag_attribute of native_repr_kind - | Layout_mismatch_of_type of type_expr * Layout.Violation.t - | Layout_mismatch_of_path of Path.t * Layout.Violation.t - | Layout_sort of - { lloc : layout_sort_loc + | Jkind_mismatch_of_type of type_expr * Jkind.Violation.t + | Jkind_mismatch_of_path of Path.t * Jkind.Violation.t + | Jkind_sort of + { kloc : jkind_sort_loc ; typ : type_expr - ; err : Layout.Violation.t + ; err : Jkind.Violation.t } - | Layout_empty_record - | Non_value_in_sig of Layout.Violation.t * string - | Float64_in_block of type_expr * layout_sort_loc + | Jkind_empty_record + | Non_value_in_sig of Jkind.Violation.t * string + | Float64_in_block of type_expr * jkind_sort_loc | Mixed_block | Separability of Typedecl_separability.error | Bad_unboxed_attribute of string @@ -118,7 +117,7 @@ type error = | Nonrec_gadt | Invalid_private_row_declaration of type_expr | Local_not_enabled - | Layout_not_enabled of Layout.const + | Layout_not_enabled of Jkind.const exception Error of Location.t * error diff --git a/ocaml/typing/typedecl_separability.ml b/ocaml/typing/typedecl_separability.ml index 48ff1896ffd..56c357e9b8a 100644 --- a/ocaml/typing/typedecl_separability.ml +++ b/ocaml/typing/typedecl_separability.ml @@ -15,7 +15,6 @@ (**************************************************************************) open Types -open Layouts type type_definition = type_declaration (* We should use 'declaration' for interfaces, and 'definition' for @@ -478,12 +477,12 @@ let worst_msig decl = List.map (fun _ -> Deepsep) decl.type_params this when we add unboxed floats, or, better, just delete the float array optimization and this entire file at that point. *) let msig_of_external_type env decl = - let check_layout = - Ctype.check_decl_layout env decl + let check_jkind = + Ctype.check_decl_jkind env decl in - if Result.is_error (check_layout (Layout.value ~why:Separability_check)) + if Result.is_error (check_jkind (Jkind.value ~why:Separability_check)) || Result.is_ok - (check_layout (Layout.immediate64 ~why:Separability_check)) + (check_jkind (Jkind.immediate64 ~why:Separability_check)) then best_msig decl else worst_msig decl diff --git a/ocaml/typing/typedtree.ml b/ocaml/typing/typedtree.ml index 17b2bc45bea..f909fdb2b88 100644 --- a/ocaml/typing/typedtree.ml +++ b/ocaml/typing/typedtree.ml @@ -18,7 +18,6 @@ open Asttypes open Jane_asttypes open Types -open Layouts module Uid = Shape.Uid @@ -105,7 +104,7 @@ and exp_extra = | Texp_constraint of core_type | Texp_coerce of core_type option * core_type | Texp_poly of core_type option - | Texp_newtype of string * const_layout option + | Texp_newtype of string * const_jkind option and fun_curry_state = @@ -122,13 +121,13 @@ and expression_desc = region : bool; curry : fun_curry_state; warnings : Warnings.state; arg_mode : Mode.Alloc.t; - arg_sort : sort; - ret_sort : sort; + arg_sort : Jkind.sort; + ret_sort : Jkind.sort; 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_match of expression * Jkind.sort * computation case list * partial | Texp_try of expression * value case list | Texp_tuple of expression list * Mode.Alloc.t | Texp_construct of @@ -148,11 +147,11 @@ and expression_desc = | Texp_list_comprehension of comprehension | Texp_array_comprehension of mutable_flag * comprehension | Texp_ifthenelse of expression * expression * expression option - | Texp_sequence of expression * sort * expression + | Texp_sequence of expression * Jkind.sort * expression | Texp_while of { wh_cond : expression; wh_body : expression; - wh_body_sort : sort + wh_body_sort : Jkind.sort } | Texp_for of { for_id : Ident.t; @@ -161,7 +160,7 @@ and expression_desc = for_to : expression; for_dir : direction_flag; for_body : expression; - for_body_sort : sort; + for_body_sort : Jkind.sort; } | Texp_send of expression * meth * apply_position * Mode.Alloc.t | Texp_new of @@ -181,9 +180,9 @@ and expression_desc = let_ : binding_op; ands : binding_op list; param : Ident.t; - param_sort : sort; + param_sort : Jkind.sort; body : value case; - body_sort : sort; + body_sort : Jkind.sort; partial : partial; warnings : Warnings.state; } @@ -245,9 +244,9 @@ and binding_op = bop_op_name : string loc; bop_op_val : Types.value_description; bop_op_type : Types.type_expr; - bop_op_return_sort : sort; + bop_op_return_sort : Jkind.sort; bop_exp : expression; - bop_exp_sort : sort; + bop_exp_sort : Jkind.sort; bop_loc : Location.t; } @@ -259,9 +258,9 @@ and omitted_parameter = { mode_closure : Mode.Alloc.t; mode_arg : Mode.Alloc.t; mode_ret : Mode.Alloc.t; - sort_arg : sort } + sort_arg : Jkind.sort } -and apply_arg = (expression * sort, omitted_parameter) arg_or_omitted +and apply_arg = (expression * Jkind.sort, omitted_parameter) arg_or_omitted and apply_position = | Tail @@ -363,7 +362,7 @@ and structure_item = } and structure_item_desc = - Tstr_eval of expression * sort * attributes + Tstr_eval of expression * Jkind.sort * attributes | Tstr_value of rec_flag * value_binding list | Tstr_primitive of value_description | Tstr_type of rec_flag * type_declaration list @@ -392,7 +391,7 @@ and value_binding = { vb_pat: pattern; vb_expr: expression; - vb_sort: sort; + vb_sort: Jkind.sort; vb_attributes: attributes; vb_loc: Location.t; } @@ -540,15 +539,15 @@ and core_type = } and core_type_desc = - | Ttyp_var of string option * const_layout option + | Ttyp_var of string option * const_jkind option | Ttyp_arrow of arg_label * core_type * core_type | Ttyp_tuple of core_type list | Ttyp_constr of Path.t * Longident.t loc * core_type list | Ttyp_object of object_field list * closed_flag | Ttyp_class of Path.t * Longident.t loc * core_type list - | Ttyp_alias of core_type * string option * const_layout option + | Ttyp_alias of core_type * string option * const_jkind option | Ttyp_variant of row_field list * closed_flag * label list option - | Ttyp_poly of (string * const_layout option) list * core_type + | Ttyp_poly of (string * const_jkind option) list * core_type | Ttyp_package of package_type and package_type = { @@ -622,7 +621,7 @@ and constructor_declaration = { cd_id: Ident.t; cd_name: string loc; - cd_vars: (string * const_layout option) list; + cd_vars: (string * const_jkind option) list; cd_args: constructor_arguments; cd_res: core_type option; cd_loc: Location.t; @@ -662,7 +661,7 @@ and extension_constructor = } and extension_constructor_kind = - Text_decl of (string * const_layout option) list * + Text_decl of (string * const_jkind option) list * constructor_arguments * core_type option | Text_rebind of Path.t * Longident.t loc @@ -873,17 +872,17 @@ let rec iter_bound_idents d type full_bound_ident_action = - Ident.t -> string loc -> type_expr -> Uid.t -> Mode.Value.t -> sort -> unit + Ident.t -> string loc -> type_expr -> Uid.t -> Mode.Value.t -> Jkind.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 + It's used to avoid computing jkinds from types. `f` then gets passed the sorts of the variables. This is occasionally used in places where we don't actually know about the sort of the pattern but `f` doesn't care about the sorts. *) let iter_pattern_full ~both_sides_of_or f sort pat = let rec loop : - type k . full_bound_ident_action -> sort -> k general_pattern -> _ = + type k . full_bound_ident_action -> Jkind.sort -> k general_pattern -> _ = fun f sort pat -> match pat.pat_desc with (* Cases where we push the sort inwards: *) @@ -902,21 +901,21 @@ let iter_pattern_full ~both_sides_of_or f sort pat = match cstr.cstr_repr with | Variant_unboxed -> [ sort ] | Variant_boxed _ | Variant_extensible -> - Array.to_list (Array.map Layout.sort_of_layout - cstr.cstr_arg_layouts) + Array.to_list (Array.map Jkind.sort_of_jkind + cstr.cstr_arg_jkinds) in List.iter2 (loop f) sorts patl | Tpat_record (lbl_pat_list, _) -> List.iter (fun (_, lbl, pat) -> - (loop f) (Layout.sort_of_layout lbl.lbl_layout) pat) + (loop f) (Jkind.sort_of_jkind lbl.lbl_jkind) pat) lbl_pat_list (* Cases where the inner things must be value: *) - | Tpat_variant (_, pat, _) -> Option.iter (loop f Sort.value) pat - | Tpat_tuple patl -> List.iter (loop f Sort.value) patl + | Tpat_variant (_, pat, _) -> Option.iter (loop f Jkind.Sort.value) pat + | Tpat_tuple patl -> List.iter (loop f Jkind.Sort.value) patl (* CR layouts v5: tuple case to change when we allow non-values in tuples *) - | Tpat_array (_, patl) -> List.iter (loop f Sort.value) patl - | Tpat_lazy p | Tpat_exception p -> loop f Sort.value p + | Tpat_array (_, patl) -> List.iter (loop f Jkind.Sort.value) patl + | Tpat_lazy p | Tpat_exception p -> loop f Jkind.Sort.value p (* Cases without variables: *) | Tpat_any | Tpat_constant _ -> () in @@ -942,9 +941,9 @@ let pat_bound_idents_full sort pat = (* In these two, we don't know the sort, but the sort information isn't used so it's fine to lie. *) let pat_bound_idents_with_types pat = - rev_only_idents_and_types (rev_pat_bound_idents_full Sort.value pat) + rev_only_idents_and_types (rev_pat_bound_idents_full Jkind.Sort.value pat) let pat_bound_idents pat = - rev_only_idents (rev_pat_bound_idents_full Sort.value pat) + rev_only_idents (rev_pat_bound_idents_full Jkind.Sort.value pat) let rev_let_bound_idents_full bindings = let idents_full = ref [] in diff --git a/ocaml/typing/typedtree.mli b/ocaml/typing/typedtree.mli index 92228153c1e..73b1e36db87 100644 --- a/ocaml/typing/typedtree.mli +++ b/ocaml/typing/typedtree.mli @@ -186,7 +186,7 @@ and exp_extra = *) | Texp_poly of core_type option (** Used for method bodies. *) - | Texp_newtype of string * const_layout option + | Texp_newtype of string * const_jkind option (** fun (type t : immediate) -> *) and fun_curry_state = @@ -199,18 +199,19 @@ and fun_curry_state = functions, which might result in this arg no longer being final *) -(** Layouts in the typed tree: Compilation of the typed tree to lambda sometimes - requires layout information. Our approach is to propagate layout - information inward during compilation. This requires us to annotate places - in the typed tree where the layout of a subexpression is not determined by - the layout of the expression containing it. For example, to the left of a - semicolon, or in value_bindings. +(** Jkinds in the typed tree: Compilation of the typed tree to lambda + sometimes requires jkind information. Our approach is to + propagate jkind information inward during compilation. This + requires us to annotate places in the typed tree where the jkind + of a type of a subexpression is not determined by the jkind of the + type of the expression containing it. For example, to the left of + a semicolon, or in value_bindings. CR layouts v1.5: Some of these were mainly needed for void (e.g., left of a semicolon). If we redo how void is compiled, perhaps we can drop those. On the other hand, there are some places we're not annotating now (e.g., function arguments) that will need annotations in the future because we'll - allow other layouts there. Just do a rationalization pass on this. + allow other jkinds there. Just do a rationalization pass on this. *) and expression_desc = Texp_ident of @@ -735,15 +736,15 @@ and core_type = } and core_type_desc = - | Ttyp_var of string option * const_layout option + | Ttyp_var of string option * const_jkind option | Ttyp_arrow of arg_label * core_type * core_type | Ttyp_tuple of core_type list | Ttyp_constr of Path.t * Longident.t loc * core_type list | Ttyp_object of object_field list * closed_flag | Ttyp_class of Path.t * Longident.t loc * core_type list - | Ttyp_alias of core_type * string option * const_layout option + | Ttyp_alias of core_type * string option * const_jkind option | Ttyp_variant of row_field list * closed_flag * label list option - | Ttyp_poly of (string * const_layout option) list * core_type + | Ttyp_poly of (string * const_jkind option) list * core_type | Ttyp_package of package_type and package_type = { @@ -818,7 +819,7 @@ and constructor_declaration = { cd_id: Ident.t; cd_name: string loc; - cd_vars: (string * const_layout option) list; + cd_vars: (string * const_jkind option) list; cd_args: constructor_arguments; cd_res: core_type option; cd_loc: Location.t; @@ -858,7 +859,7 @@ and extension_constructor = } and extension_constructor_kind = - Text_decl of (string * const_layout option) list * + Text_decl of (string * const_jkind option) list * constructor_arguments * core_type option | Text_rebind of Path.t * Longident.t loc diff --git a/ocaml/typing/typemod.ml b/ocaml/typing/typemod.ml index 6da4e841556..847d2e4bcb1 100644 --- a/ocaml/typing/typemod.ml +++ b/ocaml/typing/typemod.ml @@ -19,7 +19,6 @@ open Path open Asttypes open Parsetree open Types -open Layouts open Format let () = Includemod_errorprinter.register () @@ -85,7 +84,7 @@ type error = | Invalid_type_subst_rhs | Unpackable_local_modtype_subst of Path.t | With_cannot_remove_packed_modtype of Path.t * module_type - | Toplevel_nonvalue of string * sort + | Toplevel_nonvalue of string * Jkind.sort | Strengthening_mismatch of Longident.t * Includemod.explanation exception Error of Location.t * Env.t * error @@ -506,14 +505,14 @@ let () = Env.check_well_formed_module := check_well_formed_module let type_decl_is_alias sdecl = (* assuming no explicit constraint *) let eq_vars x y = match Jane_syntax.Core_type.of_ast x, Jane_syntax.Core_type.of_ast y with - (* a layout annotation on either type variable might mean this definition + (* a jkind annotation on either type variable might mean this definition is not an alias. Example: {v type ('a : value) t type ('a : immediate) t2 = ('a : immediate) t v} But the only way to know that t2 isn't an alias is to look at - layouts in the environment, which is hard to do here. So we - conservatively say that any layout annotations block alias + jkinds in the environment, which is hard to do here. So we + conservatively say that any jkind annotations block alias detection. *) | (Some _, _) | (_, Some _) -> false @@ -584,14 +583,14 @@ let merge_constraint initial_env loc sg lid constr = let decl_row = let arity = List.length sdecl.ptype_params in { type_params = - (* layout any is fine on the params because they get thrown away + (* jkind any is fine on the params because they get thrown away below *) List.map - (fun _ -> Btype.newgenvar (Layout.any ~why:Dummy_layout)) + (fun _ -> Btype.newgenvar (Jkind.any ~why:Dummy_jkind)) sdecl.ptype_params; type_arity = arity; type_kind = Type_abstract Abstract_def; - type_layout = Layout.value ~why:(Unknown "merge_constraint"); + type_jkind = Jkind.value ~why:(Unknown "merge_constraint"); type_private = Private; type_manifest = None; type_variance = @@ -2042,8 +2041,8 @@ let check_nongen_signature_item env sig_item = let check_nongen_signature env sg = List.iter (check_nongen_signature_item env) sg -let remove_mode_and_layout_variables env sg = - let rm _env ty = Ctype.remove_mode_and_layout_variables ty; false in +let remove_mode_and_jkind_variables env sg = + let rm _env ty = Ctype.remove_mode_and_jkind_variables ty; false in List.exists (nongen_signature_item env rm) sg |> ignore (* Helpers for typing recursive modules *) @@ -2679,7 +2678,7 @@ and type_structure ?(toplevel = None) funct_body anchor env sstr = | None -> match desc with | Pstr_eval (sexpr, attrs) -> - (* We restrict [Tstr_eval] expressions to representable layouts to + (* We restrict [Tstr_eval] expressions to representable jkinds to support the native toplevel. See the special handling of [Tstr_eval] near the top of [execute_phrase] in [opttoploop.ml]. *) let expr, sort = @@ -2707,12 +2706,12 @@ and type_structure ?(toplevel = None) funct_body anchor env sstr = List.iter (fun (loc, mode, sort) -> Typecore.escape ~loc ~env:newenv ~reason:Other mode; - (* CR layouts v5: this layout check has the effect of + (* CR layouts v5: this jkind check has the effect of defaulting the sort of top-level bindings to value, which will change. *) - if not Sort.(equate sort value) + if not Jkind.Sort.(equate sort value) then raise (Error (loc, env, - Toplevel_nonvalue (Ident.name id,sort))) + Toplevel_nonvalue (Ident.name id,sort))) ) modes; let (first_loc, _, _) = List.hd modes in @@ -3053,7 +3052,7 @@ and type_structure ?(toplevel = None) funct_body anchor env sstr = else Builtin_attributes.warning_scope [] run (* The toplevel will print some types not present in the signature *) -let remove_mode_and_layout_variables_for_toplevel str = +let remove_mode_and_jkind_variables_for_toplevel str = match str.str_items with | [{ str_desc = ( Tstr_eval (exp, _, _) @@ -3062,7 +3061,7 @@ let remove_mode_and_layout_variables_for_toplevel str = vb_expr = exp}])) }] -> (* These types are printed by the toplevel, even though they do not appear in sg *) - Ctype.remove_mode_and_layout_variables exp.exp_type + Ctype.remove_mode_and_jkind_variables exp.exp_type | _ -> () let type_toplevel_phrase env sig_acc s = @@ -3071,8 +3070,8 @@ let type_toplevel_phrase env sig_acc s = Typecore.reset_allocations (); let (str, sg, to_remove_from_sg, shape, env) = type_structure ~toplevel:(Some sig_acc) false None env s in - remove_mode_and_layout_variables env sg; - remove_mode_and_layout_variables_for_toplevel str; + remove_mode_and_jkind_variables env sg; + remove_mode_and_jkind_variables_for_toplevel str; Typecore.optimise_allocations (); (str, sg, to_remove_from_sg, shape, env) @@ -3218,7 +3217,7 @@ let type_package env m p fl = (fun (n, ty) -> (* CR layouts v5: relax value requirement. *) try Ctype.unify env ty - (Ctype.newvar (Layout.value ~why:Structure_element)) + (Ctype.newvar (Jkind.value ~why:Structure_element)) with Ctype.Unify _ -> raise (Error(modl.mod_loc, env, Scoping_pack (n,ty)))) fl'; @@ -3269,7 +3268,7 @@ let type_implementation sourcefile outputprefix modulename initial_env ast = in let simple_sg = Signature_names.simplify finalenv names sg in if !Clflags.print_types then begin - remove_mode_and_layout_variables finalenv sg; + remove_mode_and_jkind_variables finalenv sg; Typecore.force_delayed_checks (); Typecore.optimise_allocations (); let shape = Shape.local_reduce shape in @@ -3669,7 +3668,7 @@ let report_error ~loc _env = function | Toplevel_nonvalue (id, sort) -> Location.errorf ~loc "@[Top-level module bindings must have layout value, but@ \ - %s has layout@ %a.@]" id Sort.format sort + %s has layout@ %a.@]" id Jkind.Sort.format sort | Strengthening_mismatch(lid, explanation) -> let main = Includemod_errorprinter.err_msgs explanation in Location.errorf ~loc diff --git a/ocaml/typing/typemod.mli b/ocaml/typing/typemod.mli index 2b1d5946fb3..2d873d038fd 100644 --- a/ocaml/typing/typemod.mli +++ b/ocaml/typing/typemod.mli @@ -21,7 +21,6 @@ *) open Types -open Layouts module Signature_names : sig type t @@ -144,7 +143,7 @@ type error = | Invalid_type_subst_rhs | Unpackable_local_modtype_subst of Path.t | With_cannot_remove_packed_modtype of Path.t * module_type - | Toplevel_nonvalue of string * sort + | Toplevel_nonvalue of string * Jkind.sort | Strengthening_mismatch of Longident.t * Includemod.explanation exception Error of Location.t * Env.t * error diff --git a/ocaml/typing/typeopt.ml b/ocaml/typing/typeopt.ml index c48efaa6af8..51e6cfccd4b 100644 --- a/ocaml/typing/typeopt.ml +++ b/ocaml/typing/typeopt.ml @@ -17,17 +17,16 @@ open Path open Types -open Layouts open Asttypes open Typedtree open Lambda type error = - Non_value_layout of type_expr * Layout.Violation.t option - | Non_value_sort of Sort.t * type_expr + Non_value_layout of type_expr * Jkind.Violation.t option + | Non_value_sort of Jkind.Sort.t * type_expr | Sort_without_extension of - Sort.t * Language_extension.maturity * type_expr option - | Non_value_sort_unknown_ty of Sort.t + Jkind.Sort.t * Language_extension.maturity * type_expr option + | Non_value_sort_unknown_ty of Jkind.Sort.t exception Error of Location.t * error @@ -37,7 +36,7 @@ exception Error of Location.t * error If we fail to fully scrape the type due to missing a missing cmi file, we return the original, rather than a partially expanded one. The original may - have cached layout information that is more accurate than can be computed + have cached jkind information that is more accurate than can be computed from its expanded form. *) let scrape_ty env ty = let ty = @@ -82,15 +81,15 @@ let is_base_type env ty base_ty_path = | _ -> false let is_always_gc_ignorable env ty = - let layout = + let jkind = (* We check that we're compiling to (64-bit) native code before counting immediate64 types as gc_ignorable, because bytecode is intended to be platform independent. *) if !Clflags.native_code && Sys.word_size = 64 - then Layout.immediate64 ~why:Gc_ignorable_check - else Layout.immediate ~why:Gc_ignorable_check + then Jkind.immediate64 ~why:Gc_ignorable_check + else Jkind.immediate ~why:Gc_ignorable_check in - Result.is_ok (Ctype.check_type_layout env ty layout) + Result.is_ok (Ctype.check_type_jkind env ty jkind) let maybe_pointer_type env ty = let ty = scrape_ty env ty in @@ -197,8 +196,8 @@ let bigarray_type_kind_and_layout env typ = | _ -> (Pbigarray_unknown, Pbigarray_unknown_layout) -let value_kind_of_value_layout layout = - match Layout.get_default_value layout with +let value_kind_of_value_jkind jkind = + match Jkind.get_default_value jkind with | Value -> Pgenval | Immediate -> Pintval | Immediate64 -> @@ -206,11 +205,11 @@ let value_kind_of_value_layout layout = | Any | Void | Float64 -> assert false (* [value_kind] has a pre-condition that it is only called on values. With the - current set of layout restrictions, there are two reasons this invariant may + current set of sort restrictions, there are two reasons this invariant may be violated: 1) A bug in the type checker or the translation to lambda. - 2) A missing cmi file, so that we can't accurately compute the layout of + 2) A missing cmi file, so that we can't accurately compute the sort of some type. In case 1, we have a bug and should fail loudly. @@ -234,7 +233,7 @@ let value_kind_of_value_layout layout = To account for these possibilities, [value_kind] can not simply assume its precondition holds, and must check. This is implemented as calls to - [check_type_layout] at the start of its implementation. If this check + [check_type_jkind] at the start of its implementation. If this check encounters layout [any] and it arises from a missing cmi, it raises [Missing_cmi_fallback]. If it encounters [any] that didn't arise from a missing cmi, or any other non-value layout, it fails loudly. @@ -305,17 +304,17 @@ let rec value_kind env ~loc ~visited ~depth ~num_nodes_visited ty This should be understood, but for now the simple fall back thing is sufficient. *) - match Ctype.check_type_layout env scty (Layout.value ~why:V1_safety_check) + match Ctype.check_type_jkind env scty (Jkind.value ~why:V1_safety_check) with | Ok _ -> () | Error _ -> match - Ctype.(check_type_layout env - (correct_levels ty) (Layout.value ~why:V1_safety_check)) + Ctype.(check_type_jkind env + (correct_levels ty) (Jkind.value ~why:V1_safety_check)) with | Ok _ -> () | Error violation -> - if (Layout.Violation.is_missing_cmi violation) + if (Jkind.Violation.is_missing_cmi violation) then raise Missing_cmi_fallback else raise (Error (loc, Non_value_layout (ty, Some violation))) end; @@ -354,7 +353,7 @@ let rec value_kind env ~loc ~visited ~depth ~num_nodes_visited ty in if cannot_proceed () then num_nodes_visited, - value_kind_of_value_layout decl.type_layout + value_kind_of_value_jkind decl.type_jkind else let visited = Numbers.Int.Set.add (get_id ty) visited in (* Default of [Pgenval] is currently safe for the missing cmi fallback @@ -372,7 +371,7 @@ let rec value_kind env ~loc ~visited ~depth ~num_nodes_visited ty ~num_nodes_visited labels rep) | Type_abstract _ -> num_nodes_visited, - value_kind_of_value_layout decl.type_layout + value_kind_of_value_jkind decl.type_jkind | Type_open -> num_nodes_visited, Pgenval end | Ttuple fields -> @@ -386,9 +385,9 @@ let rec value_kind env ~loc ~visited ~depth ~num_nodes_visited ty List.fold_left_map (fun num_nodes_visited field -> let num_nodes_visited = num_nodes_visited + 1 in (* CR layouts v5 - this is fine because voids are not allowed in - tuples. When they are, we probably need to add a list of layouts - to Ttuple, as in variant_representation and record_representation - *) + tuples. When they are, we'll need to make sure that elements + are values before recurring. + *) value_kind env ~loc ~visited ~depth ~num_nodes_visited field) num_nodes_visited fields in @@ -414,7 +413,7 @@ and value_kind_variant env ~loc ~visited ~depth ~num_nodes_visited value_kind env ~loc ~visited ~depth ~num_nodes_visited ty | _ -> assert false end - | Variant_boxed _layouts -> + | Variant_boxed _jkinds -> let depth = depth + 1 in let for_one_constructor (constructor : Types.constructor_declaration) ~depth ~num_nodes_visited = @@ -517,7 +516,7 @@ and value_kind_record env ~loc ~visited ~depth ~num_nodes_visited let num_nodes_visited, field = (* CR layouts v5: when we add other layouts, we'll need to check here that we aren't about to call value_kind on a different - sort (we can get this info from the label.ld_layout). For now + sort (we can get this info from the label.ld_jkind). For now we rely on the layout check at the top of value_kind to rule out void. *) match rep with @@ -563,24 +562,24 @@ let value_kind env loc ty = | Missing_cmi_fallback -> raise (Error (loc, Non_value_layout (ty, None))) let layout env loc sort ty = - match Layouts.Sort.get_default_value sort with + match Jkind.Sort.get_default_value sort with | Value -> Lambda.Pvalue (value_kind env loc ty) | Float64 when Language_extension.(is_at_least Layouts Beta) -> Lambda.Punboxed_float | Float64 -> - raise (Error (loc, Sort_without_extension (Sort.float64, Beta, Some ty))) - | Void -> raise (Error (loc, Non_value_sort (Sort.void,ty))) + raise (Error (loc, Sort_without_extension (Jkind.Sort.float64, Beta, Some ty))) + | Void -> raise (Error (loc, Non_value_sort (Jkind.Sort.void,ty))) let layout_of_sort loc sort = - match Layouts.Sort.get_default_value sort with + match Jkind.Sort.get_default_value sort with | Value -> Lambda.Pvalue Pgenval | Float64 when Language_extension.(is_at_least Layouts Beta) -> Lambda.Punboxed_float | Float64 -> - raise (Error (loc, Sort_without_extension (Sort.float64, Beta, None))) - | Void -> raise (Error (loc, Non_value_sort_unknown_ty Sort.void)) + raise (Error (loc, Sort_without_extension (Jkind.Sort.float64, Beta, None))) + | Void -> raise (Error (loc, Non_value_sort_unknown_ty Jkind.Sort.void)) -let layout_of_const_sort (s : Layouts.Sort.const) = +let layout_of_const_sort (s : Jkind.Sort.const) = match s with | Value -> Lambda.Pvalue Pgenval | Float64 when Language_extension.(is_at_least Layouts Beta) -> @@ -672,21 +671,21 @@ let report_error ppf = function fprintf ppf "@ Could not find cmi for: %a" Printtyp.type_expr ty | Some err -> fprintf ppf "@ %a" - (Layout.Violation.report_with_offender - ~offender:(fun ppf -> Printtyp.type_expr ppf ty)) err + (Jkind.Violation.report_with_offender + ~offender:(fun ppf -> Printtyp.type_expr ppf ty)) err end | Non_value_sort (sort, ty) -> fprintf ppf "Non-value layout %a detected in [Typeopt.layout] as sort for type@ %a.@ \ Please report this error to the Jane Street compilers team." - Sort.format sort Printtyp.type_expr ty + Jkind.Sort.format sort Printtyp.type_expr ty | Non_value_sort_unknown_ty sort -> fprintf ppf "Non-value layout %a detected in [layout_of_sort]@ Please report this \ error to the Jane Street compilers team." - Sort.format sort + Jkind.Sort.format sort | Sort_without_extension (sort, maturity, ty) -> - fprintf ppf "Non-value layout %a detected" Sort.format sort; + fprintf ppf "Non-value layout %a detected" Jkind.Sort.format sort; begin match ty with | None -> () | Some ty -> fprintf ppf " as sort for type@ %a" Printtyp.type_expr ty diff --git a/ocaml/typing/types.ml b/ocaml/typing/types.ml index a2459784f7d..a0aea698fb8 100644 --- a/ocaml/typing/types.ml +++ b/ocaml/typing/types.ml @@ -13,13 +13,11 @@ (* *) (**************************************************************************) -(* CR layouts v2.8: See comment at top of types.mli for an explanation. *) -module Layouts = Jkind - (* Representation of types and declarations *) open Asttypes -open Layouts + +type jkind = Jkind.t (* Type expressions for the core language *) @@ -32,7 +30,7 @@ type transient_expr = and type_expr = transient_expr and type_desc = - | Tvar of { name : string option; layout : layout } + | Tvar of { name : string option; jkind : Jkind.t } | Tarrow of arrow_desc * type_expr * type_expr * commutable | Ttuple of type_expr list | Tconstr of Path.t * type_expr list * abbrev_memo ref @@ -42,7 +40,7 @@ and type_desc = | Tlink of type_expr | Tsubst of type_expr * type_expr option | Tvariant of row_desc - | Tunivar of { name : string option; layout : layout } + | Tunivar of { name : string option; jkind : Jkind.t } | Tpoly of type_expr * type_expr list | Tpackage of Path.t * (Longident.t * type_expr) list @@ -199,7 +197,7 @@ type type_declaration = { type_params: type_expr list; type_arity: int; type_kind: type_decl_kind; - type_layout: layout; + type_jkind: Jkind.t; type_private: private_flag; type_manifest: type_expr option; type_variance: Variance.t list; @@ -222,7 +220,7 @@ and ('lbl, 'cstr) type_kind = and tag = Ordinary of {src_index: int; (* Unique name (per type) *) runtime_tag: int} (* The runtime tag *) - | Extension of Path.t * layout array + | Extension of Path.t * Jkind.t array and abstract_reason = Abstract_def @@ -231,13 +229,13 @@ and abstract_reason = and record_representation = | Record_unboxed | Record_inlined of tag * variant_representation - | Record_boxed of layout array + | Record_boxed of Jkind.t array | Record_float | Record_ufloat and variant_representation = | Variant_unboxed - | Variant_boxed of layout array array + | Variant_boxed of jkind array array | Variant_extensible and global_flag = @@ -250,7 +248,7 @@ and label_declaration = ld_mutable: mutable_flag; ld_global: global_flag; ld_type: type_expr; - ld_layout : layout; + ld_jkind : Jkind.t; ld_loc: Location.t; ld_attributes: Parsetree.attributes; ld_uid: Uid.t; @@ -274,7 +272,7 @@ type extension_constructor = { ext_type_path: Path.t; ext_type_params: type_expr list; ext_args: constructor_arguments; - ext_arg_layouts: layout array; + ext_arg_jkinds: Jkind.t array; ext_constant: bool; ext_ret_type: type_expr option; ext_private: private_flag; @@ -487,7 +485,7 @@ type constructor_description = cstr_res: type_expr; (* Type of the result *) cstr_existentials: type_expr list; (* list of existentials *) cstr_args: (type_expr * global_flag) list; (* Type of the arguments *) - cstr_arg_layouts: layout array; (* Layouts of the arguments *) + cstr_arg_jkinds: Jkind.t array; (* Jkinds of the arguments *) cstr_arity: int; (* Number of arguments *) cstr_tag: tag; (* Tag for heap blocks *) cstr_repr: variant_representation; (* Repr of the outer variant *) @@ -513,7 +511,7 @@ let equal_variant_representation r1 r2 = r1 == r2 || match r1, r2 with | Variant_unboxed, Variant_unboxed -> true | Variant_boxed lays1, Variant_boxed lays2 -> - Misc.Stdlib.Array.equal (Misc.Stdlib.Array.equal Layout.equal) lays1 lays2 + Misc.Stdlib.Array.equal (Misc.Stdlib.Array.equal Jkind.equal) lays1 lays2 | Variant_extensible, Variant_extensible -> true | (Variant_unboxed | Variant_boxed _ | Variant_extensible), _ -> @@ -525,7 +523,7 @@ let equal_record_representation r1 r2 = match r1, r2 with | Record_inlined (tag1, vr1), Record_inlined (tag2, vr2) -> equal_tag tag1 tag2 && equal_variant_representation vr1 vr2 | Record_boxed lays1, Record_boxed lays2 -> - Misc.Stdlib.Array.equal Layout.equal lays1 lays2 + Misc.Stdlib.Array.equal Jkind.equal lays1 lays2 | Record_float, Record_float -> true | Record_ufloat, Record_ufloat -> @@ -564,7 +562,7 @@ type label_description = lbl_arg: type_expr; (* Type of the argument *) lbl_mut: mutable_flag; (* Is this a mutable field? *) lbl_global: global_flag; (* Is this a global field? *) - lbl_layout : layout; (* Layout of the argument *) + lbl_jkind : Jkind.t; (* Jkind of the argument *) lbl_pos: int; (* Position in block *) lbl_num: int; (* Position in type *) lbl_all: label_description array; (* All the labels in this type *) @@ -708,10 +706,10 @@ module Transient_expr = struct ty.desc <- d let set_level ty lv = ty.level <- lv let set_scope ty sc = ty.scope <- sc - let set_var_layout ty layout' = + let set_var_jkind ty jkind' = match ty.desc with | Tvar { name; _ } -> - set_desc ty (Tvar { name; layout = layout' }) + set_desc ty (Tvar { name; jkind = jkind' }) | _ -> assert false let coerce ty = ty let repr = repr @@ -891,16 +889,16 @@ let link_type ty ty' = (* Name is a user-supplied name for this unification variable (obtained * through a type annotation for instance). *) match desc, ty'.desc with - Tvar { name }, Tvar { name = name'; layout = layout' } -> + Tvar { name }, Tvar { name = name'; jkind = jkind' } -> begin match name, name' with | Some _, None -> log_type ty'; - Transient_expr.set_desc ty' (Tvar { name; layout = layout' }) + Transient_expr.set_desc ty' (Tvar { name; jkind = jkind' }) | None, Some _ -> () | Some _, Some _ -> if ty.level < ty'.level then begin log_type ty'; - Transient_expr.set_desc ty' (Tvar { name; layout = layout' }) + Transient_expr.set_desc ty' (Tvar { name; jkind = jkind' }) end | None, None -> () end @@ -930,10 +928,10 @@ let set_scope ty scope = if ty.id <= !last_snapshot then log_change (Cscope (ty, ty.scope)); Transient_expr.set_scope ty scope end -let set_var_layout ty layout = +let set_var_jkind ty jkind = let ty = repr ty in log_type ty; - Transient_expr.set_var_layout ty layout + Transient_expr.set_var_jkind ty jkind let set_univar rty ty = log_change (Cuniv (rty, !rty)); rty := Some ty let set_name nm v = diff --git a/ocaml/typing/types.mli b/ocaml/typing/types.mli index 72b909d9b71..e9d37241179 100644 --- a/ocaml/typing/types.mli +++ b/ocaml/typing/types.mli @@ -13,11 +13,6 @@ (* *) (**************************************************************************) -(* CR layouts 2.8: This is a temporary hack so that the renaming of layouts.ml - to jkind.ml happens in a separate commit from other changes in that file. - This will allow git to recognize the file rename. *) -module Layouts = Jkind - (** {0 Representation of types and declarations} *) (** [Types] defines the representation of types and declarations (that is, the @@ -29,8 +24,9 @@ module Layouts = Jkind (** Asttypes exposes basic definitions shared both by Parsetree and Types. *) open Asttypes -(** Layouts contains support for type layouts *) -open Layouts +(** Jkinds classify types. *) +(* CR layouts v2.8: Say more here. *) +type jkind = Jkind.t (** Type expressions for the core language. @@ -70,7 +66,7 @@ type field_kind type commutable and type_desc = - | Tvar of { name : string option; layout : layout } + | Tvar of { name : string option; jkind : Jkind.t } (** [Tvar (Some "a")] ==> ['a] or ['_a] [Tvar None] ==> [_] *) @@ -129,7 +125,7 @@ and type_desc = | Tvariant of row_desc (** Representation of polymorphic variants, see [row_desc]. *) - | Tunivar of { name : string option; layout : layout } + | Tunivar of { name : string option; jkind : Jkind.t } (** Occurrence of a type variable introduced by a forall quantifier / [Tpoly]. *) @@ -472,17 +468,17 @@ type type_declaration = type_arity: int; type_kind: type_decl_kind; - type_layout: layout; + type_jkind: Jkind.t; (* for an abstract decl kind or for [@@unboxed] types: this is the stored - layout for the type; expansion might find a type with a more precise - layout. See PR#10017 for motivating examples where subsitution or + jkind for the type; expansion might find a type with a more precise + jkind. See PR#10017 for motivating examples where subsitution or instantiation may refine the immediacy of a type. - for other decl kinds: this is a cached layout, computed from the - decl kind. EXCEPTION: if a type's layout is refined by a gadt equation, - the layout stored here might be a sublayout of the layout that would + for other decl kinds: this is a cached jkind, computed from the + decl kind. EXCEPTION: if a type's jkind is refined by a gadt equation, + the jkind stored here might be a subjkind of the jkind that would be computed from the decl kind. This happens in - Ctype.add_layout_equation. *) + Ctype.add_jkind_equation. *) type_private: private_flag; type_manifest: type_expr option; @@ -512,14 +508,14 @@ and ('lbl, 'cstr) type_kind = In particular, lambda will need to do something about computing offsets for block projections when not everything is one word wide, whether that's - because of void or because of other layouts. One option is to change these - projections to be more abstract and pass the layout information to other + because of void or because of other jkinds. One option is to change these + projections to be more abstract and pass the jkind information to other stages of the compiler, as is currently done for unboxed projection operations, but at the moment our plan is to do this math in lambda in the case of normal projections from boxes. *) and tag = Ordinary of {src_index: int; (* Unique name (per type) *) runtime_tag: int} (* The runtime tag *) - | Extension of Path.t * layout array + | Extension of Path.t * Jkind.t array and abstract_reason = Abstract_def @@ -530,20 +526,20 @@ and record_representation = | Record_inlined of tag * variant_representation (* For an inlined record, we record the representation of the variant that contains it and the tag of the relevant constructor of that variant. *) - | Record_boxed of layout array + | Record_boxed of Jkind.t array | Record_float (* All fields are floats *) | Record_ufloat (* All fields are [float#]s. Same runtime representation as [Record_float], but operations on these (e.g., projection, update) work with unboxed floats rather than boxed floats. *) -(* For unboxed variants, we record the layout of the mandatory single argument. - For boxed variants, we record the layouts for the arguments of each +(* For unboxed variants, we record the jkind of the mandatory single argument. + For boxed variants, we record the jkinds for the arguments of each constructor. For boxed inlined records, this is just a length 1 array with - the layout of the record itself, not the layouts of each field. *) + the jkind of the record itself, not the jkinds of each field. *) and variant_representation = | Variant_unboxed - | Variant_boxed of layout array array + | Variant_boxed of jkind array array | Variant_extensible and global_flag = @@ -556,7 +552,7 @@ and label_declaration = ld_mutable: mutable_flag; ld_global: global_flag; ld_type: type_expr; - ld_layout : layout; + ld_jkind : Jkind.t; ld_loc: Location.t; ld_attributes: Parsetree.attributes; ld_uid: Uid.t; @@ -586,7 +582,7 @@ type extension_constructor = ext_type_path: Path.t; ext_type_params: type_expr list; ext_args: constructor_arguments; - ext_arg_layouts: layout array; + ext_arg_jkinds: Jkind.t array; ext_constant: bool; ext_ret_type: type_expr option; ext_private: private_flag; @@ -745,7 +741,7 @@ type constructor_description = cstr_res: type_expr; (* Type of the result *) cstr_existentials: type_expr list; (* list of existentials *) cstr_args: (type_expr * global_flag) list; (* Type of the arguments *) - cstr_arg_layouts: layout array; (* Layouts of the arguments *) + cstr_arg_jkinds: Jkind.t array; (* Jkinds of the arguments *) cstr_arity: int; (* Number of arguments *) cstr_tag: tag; (* Tag for heap blocks *) cstr_repr: variant_representation; (* Repr of the outer variant *) @@ -782,7 +778,7 @@ type label_description = lbl_arg: type_expr; (* Type of the argument *) lbl_mut: mutable_flag; (* Is this a mutable field? *) lbl_global: global_flag; (* Is this a global field? *) - lbl_layout : layout; (* Layout of the argument *) + lbl_jkind : Jkind.t; (* Jkind of the argument *) lbl_pos: int; (* Position in block *) lbl_num: int; (* Position in the type *) lbl_all: label_description array; (* All the labels in this type *) @@ -792,7 +788,7 @@ type label_description = lbl_attributes: Parsetree.attributes; lbl_uid: Uid.t; } -(* CR layouts v5: once we allow [any] in record fields, change [lbl_layout] to +(* CR layouts v5: once we allow [any] in record fields, change [lbl_jkind] to be a [sort option]. This will allow a fast path for representability checks at record construction, and currently only the sort is used anyway. *) @@ -836,14 +832,14 @@ val undo_compress: snapshot -> unit val link_type: type_expr -> type_expr -> unit (* Set the desc field of [t1] to [Tlink t2], logging the old value if - there is an active snapshot. Any layout information in [t1]'s desc + there is an active snapshot. Any jkind information in [t1]'s desc is thrown away without checking - calls to this in unification should - first check that [t2]'s layout is a sublayout of [t1]. *) + first check that [t2]'s jkind is a subjkind of [t1]. *) val set_type_desc: type_expr -> type_desc -> unit (* Set directly the desc field, without sharing *) val set_level: type_expr -> int -> unit val set_scope: type_expr -> int -> unit -val set_var_layout: type_expr -> layout -> unit +val set_var_jkind: type_expr -> Jkind.t -> unit (* May only be called on Tvars *) val set_name: (Path.t * type_expr list) option ref -> diff --git a/ocaml/typing/typetexp.ml b/ocaml/typing/typetexp.ml index 6c51c7b0778..7eca82e291e 100644 --- a/ocaml/typing/typetexp.ml +++ b/ocaml/typing/typetexp.ml @@ -23,7 +23,6 @@ open Misc open Parsetree open Typedtree open Types -open Layouts open Mode open Ctype @@ -40,13 +39,13 @@ type cannot_quantify_reason = | Univar | Scope_escape -(* a description of the layout on an explicitly quantified universal - variable, containing whether the layout was a default +(* a description of the jkind on an explicitly quantified universal + variable, containing whether the jkind was a default (e.g. [let f : 'a. 'a -> 'a = ...]) or explicit - (e.g. [let f : ('a : immediate). ...]) and what the layout was; - it is original as compared to the inferred layout after processing + (e.g. [let f : ('a : immediate). ...]) and what the jkind was; + it is original as compared to the inferred jkind after processing the body of the type *) -type layout_info = { original_layout : layout; defaulted : bool } +type jkind_info = { original_jkind : jkind; defaulted : bool } type error = | Unbound_type_variable of string * string list @@ -65,8 +64,8 @@ type error = | Variant_tags of string * string | Invalid_variable_name of string | Cannot_quantify of string * cannot_quantify_reason - | Bad_univar_layout of - { name : string; layout_info : layout_info; inferred_layout : layout } + | Bad_univar_jkind of + { name : string; jkind_info : jkind_info; inferred_jkind : jkind } | Multiple_constraints_on_type of Longident.t | Method_mismatch of string * type_expr * type_expr | Opened_object of Path.t option @@ -74,10 +73,10 @@ type error = | Unsupported_extension : _ Language_extension.t -> error | Polymorphic_optional_param | Non_value of - {vloc : value_loc; typ : type_expr; err : Layout.Violation.t} + {vloc : value_loc; typ : type_expr; err : Jkind.Violation.t} | Non_sort of - {vloc : sort_loc; typ : type_expr; err : Layout.Violation.t} - | Bad_layout_annot of type_expr * Layout.Violation.t + {vloc : sort_loc; typ : type_expr; err : Jkind.Violation.t} + | Bad_jkind_annot of type_expr * Jkind.Violation.t exception Error of Location.t * Env.t * error exception Error_forward of Location.error @@ -99,11 +98,11 @@ module TyVarEnv : sig (* evaluate with a locally extended set of univars *) val make_poly_univars : string Location.loc list -> poly_univars - (* a version of [make_poly_univars_layouts] that doesn't take layouts *) + (* a version of [make_poly_univars_jkinds] that doesn't take jkinds *) - val make_poly_univars_layouts : - context:(string -> Layout.annotation_context) -> - (string Location.loc * layout_annotation option) list -> poly_univars + val make_poly_univars_jkinds : + context:(string -> Jkind.annotation_context) -> + (string Location.loc * jkind_annotation option) list -> poly_univars (* see mli file *) val check_poly_univars : Env.t -> Location.t -> poly_univars -> type_expr list @@ -117,9 +116,9 @@ module TyVarEnv : sig val fixed_policy : policy (* no wildcards allowed *) val extensible_policy : policy (* common case *) val univars_policy : policy (* fresh variables are univars (in methods) *) - val new_anon_var : Location.t -> Env.t -> layout -> policy -> type_expr + val new_anon_var : Location.t -> Env.t -> Jkind.t -> policy -> type_expr (* create a new variable to represent a _; fails for fixed_policy *) - val new_var : ?name:string -> layout -> policy -> type_expr + val new_var : ?name:string -> Jkind.t -> policy -> type_expr (* create a new variable according to the given policy *) val add_pre_univar : type_expr -> policy -> unit @@ -210,7 +209,7 @@ end = struct TyVarMap.fold add_name !type_variables [] (*****) - type poly_univars = (string * type_expr * layout_info) list + type poly_univars = (string * type_expr * jkind_info) list (* These are variables we expect to become univars (they were introduced with e.g. ['a .]), but we need to make sure they don't unify first. Why not @@ -237,46 +236,46 @@ end = struct f ~finally:(fun () -> univars := old_univars) - let mk_poly_univars_triple_with_layout ~context var layout = + let mk_poly_univars_triple_with_jkind ~context var jkind = let name = var.txt in - let original_layout = Layout.of_annotation ~context:(context name) layout in - let layout_info = { original_layout; defaulted = false } in - name, newvar ~name original_layout, layout_info + let original_jkind = Jkind.of_annotation ~context:(context name) jkind in + let jkind_info = { original_jkind; defaulted = false } in + name, newvar ~name original_jkind, jkind_info - let mk_poly_univars_triple_without_layout var = + let mk_poly_univars_triple_without_jkind var = let name = var.txt in - let original_layout = Layout.value ~why:Univar in - let layout_info = { original_layout; defaulted = true } in - name, newvar ~name original_layout, layout_info + let original_jkind = Jkind.value ~why:Univar in + let jkind_info = { original_jkind; defaulted = true } in + name, newvar ~name original_jkind, jkind_info let make_poly_univars vars = - List.map mk_poly_univars_triple_without_layout vars + List.map mk_poly_univars_triple_without_jkind vars - let make_poly_univars_layouts ~context vars_layouts = + let make_poly_univars_jkinds ~context vars_jkinds = let mk_trip = function - | (v, None) -> mk_poly_univars_triple_without_layout v - | (v, Some l) -> mk_poly_univars_triple_with_layout ~context v l + | (v, None) -> mk_poly_univars_triple_without_jkind v + | (v, Some l) -> mk_poly_univars_triple_with_jkind ~context v l in - List.map mk_trip vars_layouts + List.map mk_trip vars_jkinds let check_poly_univars env loc vars = vars |> List.iter (fun (_, v, _) -> generalize v); vars |> List.map (fun (name, ty1, - ({ original_layout; _ } as layout_info)) -> + ({ original_jkind; _ } as jkind_info)) -> let v = Btype.proxy ty1 in let cant_quantify reason = raise (Error (loc, env, Cannot_quantify(name, reason))) in begin match get_desc v with - | Tvar { layout } when not (Layout.equate layout original_layout) -> + | Tvar { jkind } when not (Jkind.equate jkind original_jkind) -> let reason = - Bad_univar_layout { name; layout_info; inferred_layout = layout } + Bad_univar_jkind { name; jkind_info; inferred_jkind = jkind } in raise (Error (loc, env, reason)) | Tvar _ when get_level v <> Btype.generic_level -> cant_quantify Scope_escape - | Tvar { name; layout } -> - set_type_desc v (Tunivar { name; layout }) + | Tvar { name; jkind } -> + set_type_desc v (Tunivar { name; jkind }) | Tunivar _ -> cant_quantify Univar | _ -> @@ -288,8 +287,8 @@ end = struct let vs = check_poly_univars env loc vars in vs |> List.iter (fun v -> match get_desc v with - | Tunivar { name; layout } -> - set_type_desc v (Tvar { name; layout }) + | Tunivar { name; jkind } -> + set_type_desc v (Tvar { name; jkind }) | _ -> assert false); vs @@ -335,28 +334,28 @@ end = struct List.fold_left (fun acc v -> match get_desc v with - | Tvar { name; layout } when get_level v = Btype.generic_level -> - set_type_desc v (Tunivar { name; layout }); + | Tvar { name; jkind } when get_level v = Btype.generic_level -> + set_type_desc v (Tunivar { name; jkind }); v :: acc | _ -> acc) [] !pre_univars in result, univs - let new_var ?name layout policy = - let tv = Ctype.newvar ?name layout in + let new_var ?name jkind policy = + let tv = Ctype.newvar ?name jkind in add_pre_univar tv policy; tv - let new_anon_var loc env layout = function + let new_anon_var loc env jkind = function | { extensibility = Fixed } -> raise(Error(loc, env, No_type_wildcards)) - | policy -> new_var layout policy + | policy -> new_var jkind policy let globalize_used_variables { flavor; extensibility } env = let r = ref [] in TyVarMap.iter (fun name (ty, loc) -> if flavor = Unification || is_in_scope name then - let v = new_global_var (Layout.any ~why:Dummy_layout) in + let v = new_global_var (Jkind.any ~why:Dummy_jkind) in let snap = Btype.snapshot () in if try unify env v ty; true with _ -> Btype.backtrack snap; false then try @@ -366,7 +365,7 @@ end = struct raise(Error(loc, env, Unbound_type_variable ("'"^name, get_in_scope_names ()))); - let v2 = new_global_var (Layout.any ~why:Dummy_layout) in + let v2 = new_global_var (Jkind.any ~why:Dummy_jkind) in r := (loc, v, v2) :: !r; add name v2) !used_variables; @@ -419,17 +418,17 @@ let validate_name = function | Some name as s -> if name <> "" && strict_ident name.[0] then s else None -let new_global_var ?name layout = - new_global_var ?name:(validate_name name) layout -let newvar ?name layout = - newvar ?name:(validate_name name) layout +let new_global_var ?name jkind = + new_global_var ?name:(validate_name name) jkind +let newvar ?name jkind = + newvar ?name:(validate_name name) jkind let valid_tyvar_name name = name <> "" && name.[0] <> '_' let transl_type_param_var env loc attrs name_opt - (layout : layout) (layout_annot : const_layout option) = - let tvar = Ttyp_var (name_opt, layout_annot) in + (jkind : jkind) (jkind_annot : const_jkind option) = + let tvar = Ttyp_var (name_opt, jkind_annot) in let name = match name_opt with | None -> "_" @@ -440,7 +439,7 @@ let transl_type_param_var env loc attrs name_opt raise Already_bound; name in - let ty = new_global_var ~name layout in + let ty = new_global_var ~name jkind in Option.iter (fun name -> TyVarEnv.add name ty) name_opt; { ctyp_desc = tvar; ctyp_type = ty; ctyp_env = env; ctyp_loc = loc; ctyp_attributes = attrs } @@ -448,11 +447,11 @@ let transl_type_param_var env loc attrs name_opt let transl_type_param_jst env loc attrs path : Jane_syntax.Core_type.t -> _ = function - | Jtyp_layout (Ltyp_var { name; layout = annot }) -> - let layout = - Layout.of_annotation ~context:(Type_parameter (path, name)) annot + | Jtyp_layout (Ltyp_var { name; jkind = annot }) -> + let jkind = + Jkind.of_annotation ~context:(Type_parameter (path, name)) annot in - transl_type_param_var env loc attrs name layout (Some annot.txt) + transl_type_param_var env loc attrs name jkind (Some annot.txt) | Jtyp_layout (Ltyp_poly _ | Ltyp_alias _) -> Misc.fatal_error "non-type-variable in transl_type_param_jst" @@ -461,16 +460,16 @@ let transl_type_param env path styp = match Jane_syntax.Core_type.of_ast styp with | Some (etyp, attrs) -> transl_type_param_jst env loc attrs path etyp | None -> - (* Our choice for now is that if you want a parameter of layout any, you have + (* Our choice for now is that if you want a parameter of jkind any, you have to ask for it with an annotation. Some restriction here seems necessary for backwards compatibility (e.g., we wouldn't want [type 'a id = 'a] to - have layout any). But it might be possible to infer any in some cases. *) - let layout = Layout.of_new_sort_var ~why:Unannotated_type_parameter in + have jkind any). But it might be possible to infer any in some cases. *) + let jkind = Jkind.of_new_sort_var ~why:Unannotated_type_parameter in let attrs = styp.ptyp_attributes in match styp.ptyp_desc with - Ptyp_any -> transl_type_param_var env loc attrs None layout None + Ptyp_any -> transl_type_param_var env loc attrs None jkind None | Ptyp_var name -> - transl_type_param_var env loc attrs (Some name) layout None + transl_type_param_var env loc attrs (Some name) jkind None | _ -> assert false let transl_type_param env path styp = @@ -479,12 +478,12 @@ let transl_type_param env path styp = Builtin_attributes.warning_scope styp.ptyp_attributes (fun () -> transl_type_param env path styp) -let get_type_param_layout path styp = +let get_type_param_jkind path styp = match Jane_syntax.Core_type.of_ast styp with - | None -> Layout.of_new_sort_var ~why:Unannotated_type_parameter - | Some (Jtyp_layout (Ltyp_var { name; layout }), _attrs) -> - Layout.of_annotation ~context:(Type_parameter (path, name)) layout - | Some _ -> Misc.fatal_error "non-type-variable in get_type_param_layout" + | None -> Jkind.of_new_sort_var ~why:Unannotated_type_parameter + | Some (Jtyp_layout (Ltyp_var { name; jkind }), _attrs) -> + Jkind.of_annotation ~context:(Type_parameter (path, name)) jkind + | Some _ -> Misc.fatal_error "non-type-variable in get_type_param_jkind" let get_type_param_name styp = (* We don't need to check for jane-syntax here, just to get the @@ -550,9 +549,9 @@ let transl_bound_vars : (_, _) Either.t -> _ = function | Left vars_only -> List.map mk_one vars_only, TyVarEnv.make_poly_univars vars_only - | Right vars_layouts -> List.map mk_pair vars_layouts, - TyVarEnv.make_poly_univars_layouts - ~context:(fun v -> Univar v) vars_layouts + | Right vars_jkinds -> List.map mk_pair vars_jkinds, + TyVarEnv.make_poly_univars_jkinds + ~context:(fun v -> Univar v) vars_jkinds let rec transl_type env policy mode styp = Builtin_attributes.warning_scope styp.ptyp_attributes @@ -572,7 +571,7 @@ and transl_type_aux env policy mode styp = match styp.ptyp_desc with Ptyp_any -> let ty = - TyVarEnv.new_anon_var loc env (Layout.any ~why:Wildcard) policy + TyVarEnv.new_anon_var loc env (Jkind.any ~why:Wildcard) policy in ctyp (Ttyp_var (None, None)) ty | Ptyp_var name -> @@ -617,7 +616,7 @@ and transl_type_aux env policy mode styp = 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 + to have a representable jkind. See comment in [Ctype.filter_arrow]. *) begin match Ctype.type_sort ~why:Function_argument env arg_ty, @@ -645,8 +644,8 @@ and transl_type_aux env policy mode styp = List.iter (fun {ctyp_type; ctyp_loc} -> (* CR layouts v5: remove value requirement *) match - constrain_type_layout - env ctyp_type (Layout.value ~why:Tuple_element) + constrain_type_jkind + env ctyp_type (Jkind.value ~why:Tuple_element) with | Ok _ -> () | Error e -> @@ -746,7 +745,7 @@ and transl_type_aux env policy mode styp = in (* NB: row is always non-static here; more is thus never Tnil *) let more = - TyVarEnv.new_var (Layout.value ~why:Row_variable) policy + TyVarEnv.new_var (Jkind.value ~why:Row_variable) policy in let row = create_row ~fields ~more @@ -768,7 +767,7 @@ and transl_type_aux env policy mode styp = let name = ref None in let mkfield l f = newty (Tvariant (create_row ~fields:[l,f] - ~more:(newvar (Layout.value ~why:Row_variable)) + ~more:(newvar (Jkind.value ~why:Row_variable)) ~closed:true ~fixed:None ~name:None)) in let hfields = Hashtbl.create 17 in let add_typed_field loc l f = @@ -797,11 +796,11 @@ and transl_type_aux env policy mode styp = 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 + (* CR layouts: at some point we'll allow different jkinds in polymorphic variants. *) match - constrain_type_layout env ctyp_type - (Layout.value ~why:Polymorphic_variant_field) + constrain_type_jkind env ctyp_type + (Jkind.value ~why:Polymorphic_variant_field) with | Ok _ -> () | Error e -> @@ -870,9 +869,9 @@ and transl_type_aux env policy mode styp = in let more = if Btype.static_row - (make_row (newvar (Layout.value ~why:Row_variable))) + (make_row (newvar (Jkind.value ~why:Row_variable))) then newty Tnil - else TyVarEnv.new_var (Layout.value ~why:Row_variable) policy + else TyVarEnv.new_var (Jkind.value ~why:Row_variable) policy in let ty = newty (Tvariant (make_row more)) in ctyp (Ttyp_variant (tfields, closed, present)) ty @@ -886,7 +885,7 @@ and transl_type_aux env policy mode styp = everything in a package type with constraint be value. An alternative is to walk into the constrained module, using the - longidents, and find the actual things that need layout checking. + longidents, and find the actual things that need jkind checking. See [Typemod.package_constraints_sig] for code that does a similar traversal from a longident. *) @@ -899,7 +898,7 @@ and transl_type_aux env policy mode styp = ) l in List.iter (fun (s,{ctyp_type=ty}) -> match - Ctype.constrain_type_layout env ty (Layout.value ~why:Package_hack) + Ctype.constrain_type_jkind env ty (Jkind.value ~why:Package_hack) with | Ok _ -> () | Error e -> @@ -925,44 +924,44 @@ and transl_type_aux_jst env policy mode _attrs loc : and transl_type_aux_jst_layout env policy mode loc : Jane_syntax.Layouts.core_type -> _ = function - | Ltyp_var { name = None; layout } -> - let tlayout = Layout.of_annotation ~context:(Type_wildcard loc) layout in - Ttyp_var (None, Some layout.txt), - TyVarEnv.new_anon_var loc env tlayout policy - | Ltyp_var { name = Some name; layout } -> - transl_type_var env policy loc name (Some layout) + | Ltyp_var { name = None; jkind } -> + let tjkind = Jkind.of_annotation ~context:(Type_wildcard loc) jkind in + Ttyp_var (None, Some jkind.txt), + TyVarEnv.new_anon_var loc env tjkind policy + | Ltyp_var { name = Some name; jkind } -> + transl_type_var env policy loc name (Some jkind) | Ltyp_poly { bound_vars; inner_type } -> transl_type_poly env policy mode loc (Either.Right bound_vars) inner_type - | Ltyp_alias { aliased_type; name; layout } -> - transl_type_alias env policy mode loc aliased_type name (Some layout) + | Ltyp_alias { aliased_type; name; jkind } -> + transl_type_alias env policy mode loc aliased_type name (Some jkind) -and transl_type_var env policy loc name layout_annot_opt = +and transl_type_var env policy loc name jkind_annot_opt = let print_name = "'" ^ name in if not (valid_tyvar_name name) then raise (Error (loc, env, Invalid_variable_name print_name)); - let of_annot = Layout.of_annotation ~context:(Type_variable print_name) in + let of_annot = Jkind.of_annotation ~context:(Type_variable print_name) in let ty = try let ty = TyVarEnv.lookup_local name in - begin match layout_annot_opt with + begin match jkind_annot_opt with | None -> () - | Some layout_annot -> - let layout = of_annot layout_annot in - match constrain_type_layout env ty layout with + | Some jkind_annot -> + let jkind = of_annot jkind_annot in + match constrain_type_jkind env ty jkind with | Ok () -> () | Error err -> - raise (Error(layout_annot.loc, env, Bad_layout_annot (ty, err))) + raise (Error(jkind_annot.loc, env, Bad_jkind_annot (ty, err))) end; ty with Not_found -> - let layout = match layout_annot_opt with - | None -> Layout.any ~why:Unification_var - | Some layout_annot -> of_annot layout_annot + let jkind = match jkind_annot_opt with + | None -> Jkind.any ~why:Unification_var + | Some jkind_annot -> of_annot jkind_annot in - let ty = TyVarEnv.new_var ~name layout policy in + let ty = TyVarEnv.new_var ~name jkind policy in TyVarEnv.remember_used name ty loc; ty in - Ttyp_var (Some name, Option.map Location.get_txt layout_annot_opt), ty + Ttyp_var (Some name, Option.map Location.get_txt jkind_annot_opt), ty and transl_type_poly env policy mode loc (vars : (_, _) Either.t) st = begin_def(); @@ -976,10 +975,10 @@ and transl_type_poly env policy mode loc (vars : (_, _) Either.t) st = let ty_list = TyVarEnv.check_poly_univars env loc new_univars in let ty_list = List.filter (fun v -> deep_occur v ty) ty_list in let ty' = Btype.newgenty (Tpoly(ty, ty_list)) in - unify_var env (newvar (Layout.any ~why:Dummy_layout)) ty'; + unify_var env (newvar (Jkind.any ~why:Dummy_jkind)) ty'; Ttyp_poly (typed_vars, cty), ty' -and transl_type_alias env policy mode alias_loc styp name_opt layout_annot_opt = +and transl_type_alias env policy mode alias_loc styp name_opt jkind_annot_opt = let cty = match name_opt with | Some alias -> begin try @@ -989,28 +988,28 @@ and transl_type_alias env policy mode alias_loc styp name_opt layout_annot_opt = let err = Errortrace.swap_unification_error err in raise(Error(alias_loc, env, Alias_type_mismatch err)) end; - begin match layout_annot_opt with + begin match jkind_annot_opt with | None -> () - | Some layout_annot -> - let layout = - Layout.of_annotation ~context:(Type_variable alias) layout_annot + | Some jkind_annot -> + let jkind = + Jkind.of_annotation ~context:(Type_variable alias) jkind_annot in - begin match constrain_type_layout env t layout with + begin match constrain_type_jkind env t jkind with | Ok () -> () | Error err -> - raise (Error(layout_annot.loc, env, Bad_layout_annot(t, err))) + raise (Error(jkind_annot.loc, env, Bad_jkind_annot(t, err))) end end; cty with Not_found -> if !Clflags.principal then begin_def (); - let layout = - Layout.(of_annotation_option_default - ~default:(any ~why:Dummy_layout) + let jkind = + Jkind.(of_annotation_option_default + ~default:(any ~why:Dummy_jkind) ~context:(Type_variable alias) - layout_annot_opt) + jkind_annot_opt) in - let t = newvar layout in + let t = newvar jkind in TyVarEnv.remember_used alias t alias_loc; let cty = transl_type env policy mode styp in begin try unify_var env t cty.ctyp_type with Unify err -> @@ -1024,10 +1023,10 @@ and transl_type_alias env policy mode alias_loc styp name_opt layout_annot_opt = let t = instance t in let px = Btype.proxy t in begin match get_desc px with - | Tvar { name = None; layout } -> - set_type_desc px (Tvar { name = Some alias; layout }) - | Tunivar { name = None; layout } -> - set_type_desc px (Tunivar {name = Some alias; layout}) + | Tvar { name = None; jkind } -> + set_type_desc px (Tvar { name = Some alias; jkind }) + | Tunivar { name = None; jkind } -> + set_type_desc px (Tunivar {name = Some alias; jkind}) | _ -> () end; { cty with ctyp_type = t } @@ -1035,23 +1034,23 @@ and transl_type_alias env policy mode alias_loc styp name_opt layout_annot_opt = | None -> let cty = transl_type env policy mode styp in let cty_expr = cty.ctyp_type in - let layout_annot = match layout_annot_opt with + let jkind_annot = match jkind_annot_opt with | None -> Misc.fatal_error "anonymous alias without layout annotation" - | Some layout_annot -> layout_annot + | Some jkind_annot -> jkind_annot in - let layout = - Layout.of_annotation - ~context:(Type_wildcard layout_annot.loc) layout_annot + let jkind = + Jkind.of_annotation + ~context:(Type_wildcard jkind_annot.loc) jkind_annot in - begin match constrain_type_layout env cty_expr layout with + begin match constrain_type_jkind env cty_expr jkind with | Ok () -> () | Error err -> - raise (Error(layout_annot.loc, env, - Bad_layout_annot(cty_expr, err))) + raise (Error(jkind_annot.loc, env, + Bad_jkind_annot(cty_expr, err))) end; cty in - Ttyp_alias (cty, name_opt, Option.map Location.get_txt layout_annot_opt), + Ttyp_alias (cty, name_opt, Option.map Location.get_txt jkind_annot_opt), cty.ctyp_type and transl_fields env policy o fields = @@ -1078,8 +1077,8 @@ and transl_fields env policy o fields = in begin match - constrain_type_layout - env ty1.ctyp_type (Layout.value ~why:Object_field) + constrain_type_jkind + env ty1.ctyp_type (Jkind.value ~why:Object_field) with | Ok _ -> () | Error e -> @@ -1126,7 +1125,7 @@ and transl_fields env policy o fields = let ty_init = match o with | Closed -> newty Tnil - | Open -> TyVarEnv.new_var (Layout.value ~why:Row_variable) policy + | Open -> TyVarEnv.new_var (Jkind.value ~why:Row_variable) policy in let ty = List.fold_left (fun ty (s, ty') -> newty (Tfield (s, field_public, ty', ty))) ty_init fields in @@ -1205,10 +1204,10 @@ let transl_type_scheme_mono env styp = 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 - this line, we might accidentally export a layout-flexible definition + declarations from having undefaulted jkind variables. Without + this line, we might accidentally export a jkind-flexible definition from a compilation unit, which would lead to miscompilation. *) - remove_mode_and_layout_variables typ.ctyp_type; + remove_mode_and_jkind_variables typ.ctyp_type; generalize typ.ctyp_type; typ @@ -1334,15 +1333,15 @@ let report_error env ppf = function fprintf ppf "it escapes its scope" end; fprintf ppf ".@]"; - | Bad_univar_layout { name; layout_info; inferred_layout } -> + | Bad_univar_jkind { name; jkind_info; inferred_jkind } -> fprintf ppf "@[The universal type variable %a was %s to have@ \ layout %a, but was inferred to have %t.@]" Printast.tyvar name - (if layout_info.defaulted then "defaulted" else "declared") - Layout.format layout_info.original_layout - (fun ppf -> match Layout.get inferred_layout with - | Const c -> fprintf ppf "layout %s" (Layout.string_of_const c) + (if jkind_info.defaulted then "defaulted" else "declared") + Jkind.format jkind_info.original_jkind + (fun ppf -> match Jkind.get inferred_jkind with + | Const c -> fprintf ppf "layout %s" (Jkind.string_of_const c) | Var _ -> fprintf ppf "a representable layout") | Multiple_constraints_on_type s -> fprintf ppf "Multiple constraints for type %a" longident s @@ -1374,7 +1373,7 @@ let report_error env ppf = function | Object_field -> "Object field" in fprintf ppf "@[%s types must have layout value.@ \ %a@]" - s (Layout.Violation.report_with_offender + s (Jkind.Violation.report_with_offender ~offender:(fun ppf -> Printtyp.type_expr ppf typ)) err | Non_sort {vloc; typ; err} -> let s = @@ -1383,11 +1382,11 @@ let report_error env ppf = function | Fun_ret -> "Function return" in fprintf ppf "@[%s types must have a representable layout.@ \ %a@]" - s (Layout.Violation.report_with_offender + s (Jkind.Violation.report_with_offender ~offender:(fun ppf -> Printtyp.type_expr ppf typ)) err - | Bad_layout_annot(ty, violation) -> + | Bad_jkind_annot(ty, violation) -> fprintf ppf "@[Bad layout annotation:@ %a@]" - (Layout.Violation.report_with_offender + (Jkind.Violation.report_with_offender ~offender:(fun ppf -> Printtyp.type_expr ppf ty)) violation let () = diff --git a/ocaml/typing/typetexp.mli b/ocaml/typing/typetexp.mli index 2069f1df2aa..b669d876405 100644 --- a/ocaml/typing/typetexp.mli +++ b/ocaml/typing/typetexp.mli @@ -16,7 +16,6 @@ (* Typechecking of type expressions for the core language *) open Types -open Layouts open Mode module TyVarEnv : sig @@ -31,12 +30,12 @@ module TyVarEnv : sig type poly_univars val make_poly_univars : string Location.loc list -> poly_univars - (** A variant of [make_poly_univars_layouts] that gets variables - without layout annotations *) + (** A variant of [make_poly_univars_jkinds] that gets variables + without jkind annotations *) - val make_poly_univars_layouts : - context:(string -> Layout.annotation_context) -> - (string Location.loc * Jane_asttypes.layout_annotation option) list -> + val make_poly_univars_jkinds : + context:(string -> Jkind.annotation_context) -> + (string Location.loc * Jane_asttypes.jkind_annotation option) list -> poly_univars (** remember that a list of strings connotes univars; this must always be paired with a [check_poly_univars]. *) @@ -74,7 +73,7 @@ val transl_type_param: (* the Path.t above is of the type/class whose param we are processing; the level defaults to the current level *) -val get_type_param_layout: Path.t -> Parsetree.core_type -> layout +val get_type_param_jkind: Path.t -> Parsetree.core_type -> jkind val get_type_param_name: Parsetree.core_type -> string option val get_alloc_mode : Parsetree.core_type -> Alloc.Const.t @@ -88,7 +87,7 @@ type sort_loc = Fun_arg | Fun_ret type cannot_quantify_reason -type layout_info +type jkind_info type error = | Unbound_type_variable of string * string list | No_type_wildcards @@ -106,8 +105,8 @@ type error = | Variant_tags of string * string | Invalid_variable_name of string | Cannot_quantify of string * cannot_quantify_reason - | Bad_univar_layout of - { name : string; layout_info : layout_info; inferred_layout : layout } + | Bad_univar_jkind of + { name : string; jkind_info : jkind_info; inferred_jkind : jkind } | Multiple_constraints_on_type of Longident.t | Method_mismatch of string * type_expr * type_expr | Opened_object of Path.t option @@ -115,10 +114,10 @@ type error = | Unsupported_extension : _ Language_extension.t -> error | Polymorphic_optional_param | Non_value of - {vloc : value_loc; typ : type_expr; err : Layout.Violation.t} + {vloc : value_loc; typ : type_expr; err : Jkind.Violation.t} | Non_sort of - {vloc : sort_loc; typ : type_expr; err : Layout.Violation.t} - | Bad_layout_annot of type_expr * Layout.Violation.t + {vloc : sort_loc; typ : type_expr; err : Jkind.Violation.t} + | Bad_jkind_annot of type_expr * Jkind.Violation.t exception Error of Location.t * Env.t * error diff --git a/ocaml/typing/untypeast.ml b/ocaml/typing/untypeast.ml index 7f4c79235cd..f0624f45f76 100644 --- a/ocaml/typing/untypeast.ml +++ b/ocaml/typing/untypeast.ml @@ -147,9 +147,9 @@ let attribute sub a = { let attributes sub l = List.map (sub.attribute sub) l -let var_layout ~loc (var, layout) = +let var_jkind ~loc (var, jkind) = let add_loc x = mkloc x loc in - add_loc var, Option.map add_loc layout + add_loc var, Option.map add_loc jkind let structure sub str = List.map (sub.structure_item sub) str.str_items @@ -265,9 +265,9 @@ let constructor_arguments sub = function let constructor_declaration sub cd = let loc = sub.location sub cd.cd_loc in let attrs = sub.attributes sub cd.cd_attributes in - let vars_layouts = List.map (var_layout ~loc) cd.cd_vars in + let vars_jkinds = List.map (var_jkind ~loc) cd.cd_vars in Jane_syntax.Layouts.constructor_declaration_of ~loc ~attrs - ~vars_layouts + ~vars_jkinds ~args:(constructor_arguments sub cd.cd_args) ~res:(Option.map (sub.typ sub) cd.cd_res) ~info:Docstrings.empty_info @@ -300,7 +300,7 @@ let extension_constructor sub ext = let name = map_loc sub ext.ext_name in match ext.ext_kind with | Text_decl (vs, args, ret) -> - let vs = List.map (var_layout ~loc) vs in + let vs = List.map (var_jkind ~loc) vs in let args = constructor_arguments sub args in let ret = Option.map (sub.typ sub) ret in Jane_syntax.Extension_constructor.extension_constructor_of @@ -426,9 +426,9 @@ let exp_extra sub (extra, loc, attrs) sexp = | Texp_poly cto -> Pexp_poly (sexp, Option.map (sub.typ sub) cto) | Texp_newtype (s, None) -> Pexp_newtype (add_loc s, sexp) - | Texp_newtype (s, Some layout) -> + | Texp_newtype (s, Some jkind) -> Jane_syntax.Layouts.expr_of ~loc - (Lexp_newtype(add_loc s, add_loc layout, sexp)) + (Lexp_newtype(add_loc s, add_loc jkind, sexp)) |> add_jane_syntax_attributes in Exp.mk ~loc ~attrs:!attrs desc @@ -570,7 +570,7 @@ let expression sub exp = Pexp_ifthenelse (sub.expr sub exp1, sub.expr sub exp2, Option.map (sub.expr sub) expo) - | Texp_sequence (exp1, _layout, exp2) -> + | Texp_sequence (exp1, _jkind, exp2) -> Pexp_sequence (sub.expr sub exp1, sub.expr sub exp2) | Texp_while {wh_cond; wh_body} -> Pexp_while (sub.expr sub wh_cond, sub.expr sub wh_body) @@ -788,7 +788,7 @@ let module_type (sub : mapper) mty = Mty.mk ~loc ~attrs (Pmty_ident (map_loc sub lid)) | Tmty_alias (_path, lid) -> Mty.mk ~loc ~attrs (Pmty_alias (map_loc sub lid)) - | Tmty_signature sg -> + | Tmty_signature sg -> Mty.mk ~loc ~attrs (Pmty_signature (sub.signature sub sg)) | Tmty_functor (arg, mtype2) -> Mty.mk ~loc ~attrs @@ -937,9 +937,9 @@ let core_type sub ct = let desc = match ct.ctyp_desc with | Ttyp_var (None, None) -> Ptyp_any | Ttyp_var (Some s, None) -> Ptyp_var s - | Ttyp_var (name, Some layout) -> + | Ttyp_var (name, Some jkind) -> Jane_syntax.Layouts.type_of ~loc - (Ltyp_var { name; layout = mkloc layout loc }) |> + (Ltyp_var { name; jkind = mkloc jkind loc }) |> add_jane_syntax_attributes | Ttyp_arrow (label, ct1, ct2) -> Ptyp_arrow (label, sub.typ sub ct1, sub.typ sub ct2) @@ -954,17 +954,17 @@ let core_type sub ct = Ptyp_class (map_loc sub lid, List.map (sub.typ sub) list) | Ttyp_alias (ct, Some s, None) -> Ptyp_alias (sub.typ sub ct, s) - | Ttyp_alias (ct, s, Some layout) -> + | Ttyp_alias (ct, s, Some jkind) -> Jane_syntax.Layouts.type_of ~loc (Ltyp_alias { aliased_type = sub.typ sub ct; name = s; - layout = mkloc layout loc }) |> + jkind = mkloc jkind loc }) |> add_jane_syntax_attributes | Ttyp_alias (_, None, None) -> Misc.fatal_error "anonymous alias without layout annotation in Untypeast" | Ttyp_variant (list, bool, labels) -> Ptyp_variant (List.map (sub.row_field sub) list, bool, labels) | Ttyp_poly (list, ct) -> - let bound_vars = List.map (var_layout ~loc) list in + let bound_vars = List.map (var_jkind ~loc) list in Jane_syntax.Layouts.type_of ~loc (Ltyp_poly { bound_vars; inner_type = sub.typ sub ct }) |> add_jane_syntax_attributes