# 18 "parsing/lexer.mll" open Lexing open Misc open Parser type error = | Illegal_character of char | Illegal_escape of string * string option | Reserved_sequence of string * string option | Unterminated_comment of Location.t | Unterminated_string | Unterminated_string_in_comment of Location.t * Location.t | Empty_character_literal | Keyword_as_label of string | Invalid_literal of string | Invalid_directive of string * string option exception Error of error * Location.t (* The table of keywords *) let keyword_table = create_hashtable 149 [ "and", AND; "as", AS; "assert", ASSERT; "begin", BEGIN; "class", CLASS; "constraint", CONSTRAINT; "do", DO; "done", DONE; "downto", DOWNTO; "else", ELSE; "end", END; "exception", EXCEPTION; "external", EXTERNAL; "false", FALSE; "for", FOR; "fun", FUN; "function", FUNCTION; "functor", FUNCTOR; "if", IF; "in", IN; "include", INCLUDE; "inherit", INHERIT; "initializer", INITIALIZER; "lazy", LAZY; "let", LET; "match", MATCH; "method", METHOD; "module", MODULE; "mutable", MUTABLE; "new", NEW; "nonrec", NONREC; "object", OBJECT; "of", OF; "open", OPEN; "or", OR; (* "parser", PARSER; *) "private", PRIVATE; "rec", REC; "sig", SIG; "struct", STRUCT; "then", THEN; "to", TO; "true", TRUE; "try", TRY; "type", TYPE; "val", VAL; "virtual", VIRTUAL; "when", WHEN; "while", WHILE; "with", WITH; "lor", INFIXOP3("lor"); (* Should be INFIXOP2 *) "lxor", INFIXOP3("lxor"); (* Should be INFIXOP2 *) "mod", INFIXOP3("mod"); "land", INFIXOP3("land"); "lsl", INFIXOP4("lsl"); "lsr", INFIXOP4("lsr"); "asr", INFIXOP4("asr") ] (* To buffer string literals *) let string_buffer = Buffer.create 256 let reset_string_buffer () = Buffer.reset string_buffer let get_stored_string () = Buffer.contents string_buffer let store_string_char c = Buffer.add_char string_buffer c let store_string_utf_8_uchar u = Buffer.add_utf_8_uchar string_buffer u let store_string s = Buffer.add_string string_buffer s let store_substring s ~pos ~len = Buffer.add_substring string_buffer s pos len let store_lexeme lexbuf = store_string (Lexing.lexeme lexbuf) let store_normalized_newline newline = (* #12502: we normalize "\r\n" to "\n" at lexing time, to avoid behavior difference due to OS-specific newline characters in string literals. (For example, Git for Windows will translate \n in versioned files into \r\n sequences when checking out files on Windows. If your code contains multiline quoted string literals, the raw content of the string literal would be different between Git for Windows users and all other users. Thanks to newline normalization, the value of the literal as a string constant will be the same no matter which programming tools are used.) Many programming languages use the same approach, for example Java, Javascript, Kotlin, Python, Swift and C++. *) (* Our 'newline' regexp accepts \r*\n, but we only wish to normalize \r?\n into \n -- see the discussion in #12502. All carriage returns except for the (optional) last one are reproduced in the output. We implement this by skipping the first carriage return, if any. *) let len = String.length newline in if len = 1 then store_string_char '\n' else store_substring newline ~pos:1 ~len:(len - 1) (* To store the position of the beginning of a string and comment *) let string_start_loc = ref Location.none let comment_start_loc = ref [] let in_comment () = !comment_start_loc <> [] let is_in_string = ref false let in_string () = !is_in_string let print_warnings = ref true (* Escaped chars are interpreted in strings unless they are in comments. *) let store_escaped_char lexbuf c = if in_comment () then store_lexeme lexbuf else store_string_char c let store_escaped_uchar lexbuf u = if in_comment () then store_lexeme lexbuf else store_string_utf_8_uchar u let compute_quoted_string_idloc {Location.loc_start = orig_loc } shift id = let id_start_pos = orig_loc.Lexing.pos_cnum + shift in let loc_start = Lexing.{orig_loc with pos_cnum = id_start_pos } in let loc_end = Lexing.{orig_loc with pos_cnum = id_start_pos + String.length id} in {Location. loc_start ; loc_end ; loc_ghost = false } let wrap_string_lexer f lexbuf = let loc_start = lexbuf.lex_curr_p in reset_string_buffer(); is_in_string := true; let string_start = lexbuf.lex_start_p in string_start_loc := Location.curr lexbuf; let loc_end = f lexbuf in is_in_string := false; lexbuf.lex_start_p <- string_start; let loc = Location.{loc_ghost= false; loc_start; loc_end} in get_stored_string (), loc let wrap_comment_lexer comment lexbuf = let start_loc = Location.curr lexbuf in comment_start_loc := [start_loc]; reset_string_buffer (); let end_loc = comment lexbuf in let s = get_stored_string () in reset_string_buffer (); s, { start_loc with Location.loc_end = end_loc.Location.loc_end } let error lexbuf e = raise (Error(e, Location.curr lexbuf)) let error_loc loc e = raise (Error(e, loc)) (* to translate escape sequences *) let digit_value c = match c with | 'a' .. 'f' -> 10 + Char.code c - Char.code 'a' | 'A' .. 'F' -> 10 + Char.code c - Char.code 'A' | '0' .. '9' -> Char.code c - Char.code '0' | _ -> assert false let num_value lexbuf ~base ~first ~last = let c = ref 0 in for i = first to last do let v = digit_value (Lexing.lexeme_char lexbuf i) in assert(v < base); c := (base * !c) + v done; !c let char_for_backslash = function | 'n' -> '\010' | 'r' -> '\013' | 'b' -> '\008' | 't' -> '\009' | c -> c let illegal_escape lexbuf reason = let error = Illegal_escape (Lexing.lexeme lexbuf, Some reason) in raise (Error (error, Location.curr lexbuf)) let char_for_decimal_code lexbuf i = let c = num_value lexbuf ~base:10 ~first:i ~last:(i+2) in if (c < 0 || c > 255) then if in_comment () then 'x' else illegal_escape lexbuf (Printf.sprintf "%d is outside the range of legal characters (0-255)." c) else Char.chr c let char_for_octal_code lexbuf i = let c = num_value lexbuf ~base:8 ~first:i ~last:(i+2) in if (c < 0 || c > 255) then if in_comment () then 'x' else illegal_escape lexbuf (Printf.sprintf "o%o (=%d) is outside the range of legal characters (0-255)." c c) else Char.chr c let char_for_hexadecimal_code lexbuf i = Char.chr (num_value lexbuf ~base:16 ~first:i ~last:(i+1)) let uchar_for_uchar_escape lexbuf = let len = Lexing.lexeme_end lexbuf - Lexing.lexeme_start lexbuf in let first = 3 (* skip opening \u{ *) in let last = len - 2 (* skip closing } *) in let digit_count = last - first + 1 in match digit_count > 6 with | true -> illegal_escape lexbuf "too many digits, expected 1 to 6 hexadecimal digits" | false -> let cp = num_value lexbuf ~base:16 ~first ~last in if Uchar.is_valid cp then Uchar.unsafe_of_int cp else illegal_escape lexbuf (Printf.sprintf "%X is not a Unicode scalar value" cp) let is_keyword name = Hashtbl.mem keyword_table name let check_label_name lexbuf name = if is_keyword name then error lexbuf (Keyword_as_label name) (* Update the current location with file name and line number. *) let update_loc lexbuf file line absolute chars = let pos = lexbuf.lex_curr_p in let new_file = match file with | None -> pos.pos_fname | Some s -> s in lexbuf.lex_curr_p <- { pos with pos_fname = new_file; pos_lnum = if absolute then line else pos.pos_lnum + line; pos_bol = pos.pos_cnum - chars; } let preprocessor = ref None let escaped_newlines = ref false (* Warn about Latin-1 characters used in idents *) let warn_latin1 lexbuf = Location.deprecated (Location.curr lexbuf) "ISO-Latin1 characters in identifiers" let handle_docstrings = ref true let comment_list = ref [] let add_comment com = comment_list := com :: !comment_list let add_docstring_comment ds = let com = ("*" ^ Docstrings.docstring_body ds, Docstrings.docstring_loc ds) in add_comment com let comments () = List.rev !comment_list (* Error report *) open Format let prepare_error loc = function | Illegal_character c -> Location.errorf ~loc "Illegal character (%s)" (Char.escaped c) | Illegal_escape (s, explanation) -> Location.errorf ~loc "Illegal backslash escape in string or character (%s)%t" s (fun ppf -> match explanation with | None -> () | Some expl -> fprintf ppf ": %s" expl) | Reserved_sequence (s, explanation) -> Location.errorf ~loc "Reserved character sequence: %s%t" s (fun ppf -> match explanation with | None -> () | Some expl -> fprintf ppf " %s" expl) | Unterminated_comment _ -> Location.errorf ~loc "Comment not terminated" | Unterminated_string -> Location.errorf ~loc "String literal not terminated" | Unterminated_string_in_comment (_, literal_loc) -> Location.errorf ~loc "This comment contains an unterminated string literal" ~sub:[Location.msg ~loc:literal_loc "String literal begins here"] | Empty_character_literal -> let msg = "Illegal empty character literal ''" in let sub = [Location.msg "@{Hint@}: Did you mean ' ' or a type variable 'a?"] in Location.error ~loc ~sub msg | Keyword_as_label kwd -> Location.errorf ~loc "%a is a keyword, it cannot be used as label name" Style.inline_code kwd | Invalid_literal s -> Location.errorf ~loc "Invalid literal %s" s | Invalid_directive (dir, explanation) -> Location.errorf ~loc "Invalid lexer directive %S%t" dir (fun ppf -> match explanation with | None -> () | Some expl -> fprintf ppf ": %s" expl) let () = Location.register_error_of_exn (function | Error (err, loc) -> Some (prepare_error loc err) | _ -> None ) # 341 "parsing/lexer.ml" let __ocaml_lex_tables = { Lexing.lex_base = "\000\000\152\255\153\255\224\000\003\001\038\001\073\001\108\001\ \143\001\178\255\178\001\215\001\186\255\091\000\252\001\031\002\ \068\000\071\000\066\002\204\255\206\255\209\255\101\002\136\002\ \171\002\088\000\255\000\201\002\232\255\029\003\113\003\197\003\ \149\004\101\005\053\006\005\007\213\007\180\008\016\009\147\009\ \231\009\122\000\254\255\001\000\125\000\064\000\255\255\005\000\ \016\009\006\000\198\010\228\010\180\011\101\000\169\002\132\012\ \249\255\248\255\247\255\222\012\201\255\250\255\252\012\204\013\ \102\000\225\003\156\014\245\255\244\255\243\255\240\014\204\015\ \240\004\156\016\120\017\192\005\072\018\156\018\240\018\068\019\ \152\019\236\019\064\020\148\020\232\020\060\021\144\021\091\000\ \228\021\056\022\140\022\224\022\052\023\224\000\184\255\112\006\ \231\255\253\003\063\007\166\023\000\011\230\255\015\008\024\024\ \229\255\211\004\138\024\024\013\228\255\238\011\252\024\227\255\ \163\005\219\255\087\025\110\000\111\000\007\000\226\255\225\255\ \220\255\023\014\003\001\191\002\113\000\224\255\201\002\117\000\ \223\255\189\003\074\004\118\000\222\255\059\015\119\000\221\255\ \146\000\215\255\148\000\214\255\217\000\112\025\213\255\179\025\ \214\025\251\025\030\026\065\026\196\255\197\255\198\255\194\255\ \100\026\154\000\183\000\187\255\188\255\189\255\199\000\174\255\ \172\255\181\255\135\026\177\255\179\255\170\026\205\026\240\026\ \019\027\205\008\172\009\080\001\038\001\024\001\081\027\241\255\ \166\027\243\255\011\000\244\255\107\015\028\011\253\255\223\000\ \241\000\255\255\254\255\252\255\052\013\215\016\034\028\011\016\ \062\028\180\017\176\028\011\029\250\000\252\000\012\000\251\255\ \250\255\249\255\045\029\038\001\240\004\003\001\248\255\192\005\ \004\001\247\255\187\006\138\007\005\001\246\255\084\029\020\001\ \245\255\013\000\236\001\245\255\246\255\247\255\017\000\155\029\ \255\255\248\255\193\000\189\029\090\008\050\010\253\255\073\001\ \018\000\094\001\099\010\252\255\180\008\197\008\251\255\228\029\ \250\255\251\029\033\030\249\255\111\001\150\001\252\255\062\030\ \254\255\255\255\112\001\113\001\253\255\091\030\033\001\036\001\ \063\001\098\001\044\001\107\001\043\001\019\000\255\255"; Lexing.lex_backtrk = "\255\255\255\255\255\255\098\000\097\000\094\000\093\000\086\000\ \084\000\255\255\075\000\072\000\255\255\065\000\064\000\062\000\ \060\000\056\000\089\000\255\255\255\255\255\255\044\000\043\000\ \050\000\048\000\047\000\070\000\255\255\018\000\018\000\017\000\ \016\000\015\000\014\000\014\000\014\000\009\000\053\000\004\000\ \003\000\002\000\255\255\103\000\103\000\255\255\255\255\255\255\ \013\000\255\255\092\000\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\055\000\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\014\000\014\000\ \100\000\014\000\014\000\101\000\022\000\022\000\020\000\019\000\ \022\000\019\000\019\000\018\000\020\000\019\000\020\000\255\255\ \021\000\021\000\018\000\018\000\020\000\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\035\000\035\000\035\000\035\000\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \037\000\255\255\038\000\255\255\039\000\096\000\255\255\099\000\ \045\000\095\000\090\000\052\000\255\255\255\255\255\255\255\255\ \063\000\082\000\079\000\255\255\255\255\255\255\080\000\255\255\ \255\255\255\255\073\000\255\255\255\255\091\000\085\000\088\000\ \087\000\255\255\255\255\255\255\255\255\000\000\255\255\255\255\ \013\000\255\255\014\000\255\255\014\000\014\000\255\255\014\000\ \014\000\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\010\000\010\000\ \255\255\255\255\007\000\007\000\007\000\007\000\255\255\001\000\ \007\000\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\003\000\ \255\255\255\255\003\000\255\255\255\255\255\255\002\000\255\255\ \255\255\001\000\255\255\255\255\255\255\255\255\255\255"; Lexing.lex_default = "\001\000\000\000\000\000\255\255\255\255\255\255\255\255\255\255\ \255\255\000\000\255\255\255\255\000\000\255\255\255\255\255\255\ \255\255\255\255\255\255\000\000\000\000\000\000\255\255\255\255\ \255\255\255\255\115\000\255\255\000\000\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\000\000\255\255\255\255\255\255\000\000\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \000\000\000\000\000\000\255\255\000\000\000\000\255\255\255\255\ \255\255\255\255\255\255\000\000\000\000\000\000\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\000\000\255\255\ \000\000\255\255\255\255\255\255\255\255\000\000\255\255\255\255\ \000\000\255\255\255\255\255\255\000\000\255\255\255\255\000\000\ \255\255\000\000\120\000\255\255\255\255\255\255\000\000\000\000\ \000\000\255\255\255\255\255\255\255\255\000\000\255\255\255\255\ \000\000\255\255\255\255\255\255\000\000\255\255\255\255\000\000\ \255\255\000\000\255\255\000\000\255\255\255\255\000\000\255\255\ \255\255\255\255\255\255\255\255\000\000\000\000\000\000\000\000\ \255\255\255\255\255\255\000\000\000\000\000\000\255\255\000\000\ \000\000\000\000\255\255\000\000\000\000\255\255\255\255\255\255\ \255\255\255\255\255\255\171\000\255\255\173\000\175\000\000\000\ \255\255\000\000\255\255\000\000\196\000\255\255\000\000\255\255\ \255\255\000\000\000\000\000\000\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\000\000\ \000\000\000\000\255\255\255\255\255\255\255\255\000\000\255\255\ \255\255\000\000\255\255\255\255\255\255\000\000\255\255\255\255\ \000\000\255\255\219\000\000\000\000\000\000\000\255\255\225\000\ \000\000\000\000\255\255\255\255\255\255\255\255\000\000\255\255\ \255\255\255\255\255\255\000\000\255\255\255\255\000\000\255\255\ \000\000\255\255\255\255\000\000\255\255\246\000\000\000\255\255\ \000\000\000\000\255\255\255\255\000\000\255\255\255\255\255\255\ \000\001\003\001\255\255\003\001\255\255\255\255\000\000"; Lexing.lex_trans = "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\041\000\042\000\042\000\041\000\043\000\049\000\046\000\ \042\000\116\000\047\000\049\000\117\000\177\000\197\000\177\000\ \217\000\198\000\217\000\221\000\231\000\006\001\244\000\233\000\ \041\000\008\000\028\000\023\000\006\000\004\000\022\000\026\000\ \025\000\020\000\024\000\007\000\019\000\018\000\038\000\003\000\ \030\000\029\000\029\000\029\000\029\000\029\000\029\000\029\000\ \029\000\029\000\017\000\016\000\015\000\014\000\010\000\037\000\ \005\000\032\000\032\000\032\000\032\000\032\000\032\000\032\000\ \032\000\032\000\032\000\032\000\032\000\032\000\032\000\032\000\ \032\000\032\000\032\000\032\000\032\000\032\000\032\000\032\000\ \032\000\032\000\032\000\013\000\044\000\012\000\005\000\040\000\ \021\000\035\000\034\000\034\000\034\000\034\000\034\000\034\000\ \034\000\034\000\034\000\034\000\036\000\034\000\034\000\034\000\ \034\000\034\000\034\000\034\000\034\000\034\000\034\000\034\000\ \034\000\034\000\034\000\027\000\011\000\009\000\039\000\151\000\ \153\000\150\000\136\000\041\000\149\000\148\000\041\000\046\000\ \054\000\065\000\047\000\086\000\086\000\086\000\086\000\086\000\ \086\000\086\000\086\000\086\000\086\000\119\000\118\000\156\000\ \125\000\155\000\041\000\154\000\128\000\132\000\135\000\048\000\ \045\000\048\000\048\000\048\000\048\000\048\000\048\000\048\000\ \048\000\048\000\048\000\048\000\048\000\048\000\048\000\048\000\ \048\000\048\000\048\000\048\000\048\000\048\000\048\000\048\000\ \048\000\048\000\048\000\137\000\138\000\139\000\140\000\160\000\ \031\000\031\000\031\000\031\000\031\000\031\000\031\000\031\000\ \031\000\031\000\031\000\031\000\031\000\031\000\031\000\031\000\ \031\000\031\000\031\000\031\000\031\000\031\000\031\000\157\000\ \031\000\031\000\031\000\031\000\031\000\031\000\031\000\033\000\ \033\000\033\000\033\000\033\000\033\000\033\000\033\000\033\000\ \033\000\033\000\033\000\033\000\033\000\033\000\033\000\033\000\ \033\000\033\000\033\000\033\000\033\000\033\000\033\000\158\000\ \033\000\033\000\033\000\033\000\033\000\033\000\033\000\033\000\ \002\000\003\000\139\000\140\000\003\000\003\000\003\000\159\000\ \186\000\116\000\003\000\003\000\117\000\003\000\003\000\003\000\ \092\000\092\000\092\000\092\000\092\000\092\000\092\000\092\000\ \092\000\092\000\003\000\185\000\003\000\003\000\003\000\003\000\ \003\000\201\000\255\255\200\000\003\000\255\255\113\000\003\000\ \003\000\003\000\206\000\209\000\213\000\003\000\003\000\172\000\ \003\000\003\000\003\000\129\000\129\000\129\000\129\000\129\000\ \129\000\129\000\129\000\216\000\241\000\003\000\003\000\003\000\ \003\000\003\000\003\000\003\000\255\000\000\001\172\000\005\000\ \171\000\001\001\005\000\005\000\005\000\004\001\005\001\000\000\ \005\000\005\000\231\000\005\000\005\000\005\000\210\000\210\000\ \210\000\210\000\255\255\114\000\003\000\255\255\003\000\000\000\ \005\000\003\000\005\000\005\000\005\000\005\000\005\000\000\000\ \231\000\231\000\006\000\233\000\002\001\006\000\006\000\006\000\ \000\000\000\000\173\000\006\000\006\000\002\001\006\000\006\000\ \006\000\221\000\249\000\249\000\244\000\251\000\251\000\003\000\ \000\000\003\000\000\000\006\000\005\000\006\000\006\000\006\000\ \006\000\006\000\000\000\000\000\000\000\145\000\000\000\000\000\ \145\000\145\000\145\000\000\000\000\000\000\000\145\000\145\000\ \000\000\145\000\168\000\145\000\000\000\000\000\000\000\000\000\ \249\000\000\000\005\000\250\000\005\000\000\000\145\000\006\000\ \145\000\167\000\145\000\145\000\145\000\000\000\000\000\000\000\ \165\000\000\000\165\000\165\000\165\000\165\000\000\000\000\000\ \000\000\165\000\165\000\000\000\165\000\165\000\165\000\000\000\ \000\000\000\000\000\000\000\000\000\000\006\000\000\000\006\000\ \000\000\165\000\145\000\165\000\166\000\165\000\165\000\165\000\ \000\000\000\000\000\000\006\000\000\000\000\000\006\000\006\000\ \006\000\000\000\000\000\000\000\006\000\006\000\000\000\006\000\ \006\000\006\000\000\000\000\000\000\000\000\000\000\000\000\000\ \145\000\000\000\145\000\000\000\006\000\165\000\006\000\006\000\ \006\000\006\000\006\000\000\000\000\000\000\000\221\000\000\000\ \006\000\222\000\000\000\006\000\006\000\006\000\000\000\255\255\ \000\000\006\000\006\000\000\000\006\000\006\000\006\000\000\000\ \000\000\000\000\000\000\165\000\000\000\165\000\224\000\164\000\ \006\000\006\000\247\000\006\000\006\000\006\000\006\000\006\000\ \255\255\000\000\000\000\000\000\000\000\006\000\000\000\000\000\ \006\000\006\000\006\000\000\000\000\000\000\000\006\000\006\000\ \000\000\006\000\006\000\006\000\000\000\000\000\006\000\163\000\ \006\000\000\000\000\000\000\000\161\000\006\000\006\000\000\000\ \006\000\006\000\006\000\006\000\006\000\000\000\000\000\255\255\ \006\000\000\000\000\000\006\000\006\000\006\000\000\000\000\000\ \223\000\006\000\006\000\000\000\152\000\006\000\006\000\000\000\ \255\255\000\000\000\000\162\000\000\000\006\000\000\000\000\000\ \000\000\006\000\006\000\006\000\006\000\006\000\006\000\006\000\ \000\000\000\000\255\255\145\000\000\000\000\000\145\000\145\000\ \145\000\000\000\000\000\255\255\145\000\145\000\000\000\145\000\ \146\000\145\000\000\000\000\000\000\000\000\000\000\000\000\000\ \006\000\000\000\006\000\000\000\145\000\006\000\145\000\145\000\ \147\000\145\000\145\000\000\000\000\000\000\000\006\000\000\000\ \000\000\006\000\006\000\144\000\000\000\000\000\000\000\006\000\ \006\000\000\000\006\000\006\000\006\000\000\000\248\000\000\000\ \000\000\000\000\000\000\006\000\000\000\006\000\000\000\006\000\ \145\000\006\000\006\000\006\000\006\000\006\000\000\000\000\000\ \000\000\143\000\000\000\143\000\143\000\143\000\143\000\000\000\ \000\000\000\000\143\000\143\000\000\000\143\000\143\000\143\000\ \000\000\000\000\000\000\000\000\000\000\000\000\145\000\000\000\ \145\000\000\000\143\000\006\000\143\000\143\000\143\000\143\000\ \143\000\000\000\000\000\000\000\003\000\000\000\000\000\003\000\ \003\000\003\000\000\000\000\000\142\000\141\000\003\000\000\000\ \003\000\003\000\003\000\000\000\000\000\000\000\000\000\000\000\ \000\000\006\000\000\000\006\000\000\000\003\000\143\000\003\000\ \003\000\003\000\003\000\003\000\220\000\000\000\095\000\126\000\ \126\000\126\000\126\000\126\000\126\000\126\000\126\000\126\000\ \126\000\127\000\127\000\127\000\127\000\127\000\127\000\127\000\ \127\000\127\000\127\000\000\000\143\000\094\000\143\000\000\000\ \055\000\003\000\055\000\055\000\055\000\055\000\055\000\055\000\ \055\000\055\000\055\000\055\000\055\000\055\000\055\000\055\000\ \055\000\055\000\055\000\055\000\055\000\055\000\055\000\055\000\ \055\000\055\000\055\000\055\000\000\000\000\000\000\000\003\000\ \097\000\003\000\097\000\097\000\097\000\097\000\097\000\097\000\ \097\000\097\000\097\000\097\000\097\000\097\000\097\000\097\000\ \097\000\097\000\097\000\097\000\097\000\097\000\097\000\097\000\ \097\000\097\000\097\000\097\000\076\000\096\000\000\000\000\000\ \000\000\000\000\000\000\078\000\000\000\029\000\029\000\029\000\ \029\000\029\000\029\000\029\000\029\000\029\000\029\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\076\000\076\000\ \076\000\076\000\077\000\076\000\079\000\079\000\079\000\079\000\ \079\000\079\000\079\000\079\000\079\000\079\000\079\000\079\000\ \079\000\079\000\079\000\079\000\079\000\079\000\079\000\079\000\ \000\000\000\000\000\000\000\000\029\000\000\000\076\000\076\000\ \076\000\076\000\077\000\076\000\079\000\079\000\079\000\079\000\ \079\000\079\000\079\000\079\000\079\000\079\000\079\000\079\000\ \079\000\079\000\079\000\079\000\079\000\079\000\079\000\079\000\ \076\000\000\000\000\000\000\000\000\000\000\000\000\000\078\000\ \000\000\029\000\029\000\029\000\029\000\029\000\029\000\029\000\ \029\000\029\000\029\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\076\000\080\000\076\000\076\000\077\000\076\000\ \079\000\079\000\079\000\079\000\079\000\079\000\079\000\079\000\ \081\000\079\000\079\000\079\000\079\000\079\000\079\000\079\000\ \079\000\082\000\079\000\079\000\000\000\000\000\000\000\000\000\ \029\000\000\000\076\000\080\000\076\000\076\000\077\000\076\000\ \079\000\079\000\079\000\079\000\079\000\079\000\079\000\079\000\ \081\000\079\000\079\000\079\000\079\000\079\000\079\000\079\000\ \079\000\082\000\079\000\079\000\031\000\130\000\130\000\130\000\ \130\000\130\000\130\000\130\000\130\000\031\000\031\000\031\000\ \031\000\031\000\031\000\031\000\031\000\031\000\031\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\031\000\031\000\ \031\000\031\000\031\000\031\000\031\000\031\000\031\000\031\000\ \031\000\031\000\031\000\031\000\031\000\031\000\031\000\031\000\ \031\000\031\000\031\000\031\000\031\000\031\000\031\000\031\000\ \000\000\000\000\000\000\000\000\031\000\000\000\031\000\031\000\ \031\000\031\000\031\000\031\000\031\000\031\000\031\000\031\000\ \031\000\031\000\031\000\031\000\031\000\031\000\031\000\031\000\ \031\000\031\000\031\000\031\000\031\000\031\000\031\000\031\000\ \066\000\000\000\066\000\066\000\066\000\066\000\066\000\066\000\ \066\000\066\000\066\000\066\000\066\000\066\000\066\000\066\000\ \066\000\066\000\066\000\066\000\066\000\066\000\066\000\066\000\ \066\000\066\000\066\000\066\000\097\000\000\000\097\000\097\000\ \097\000\097\000\097\000\097\000\097\000\097\000\097\000\097\000\ \097\000\097\000\097\000\097\000\097\000\097\000\097\000\097\000\ \097\000\097\000\097\000\097\000\097\000\097\000\097\000\097\000\ \000\000\096\000\131\000\131\000\131\000\131\000\131\000\131\000\ \131\000\131\000\000\000\000\000\000\000\031\000\031\000\031\000\ \031\000\031\000\031\000\031\000\031\000\031\000\031\000\031\000\ \031\000\031\000\031\000\031\000\031\000\031\000\031\000\031\000\ \031\000\031\000\031\000\031\000\000\000\031\000\031\000\031\000\ \031\000\031\000\031\000\031\000\031\000\031\000\031\000\031\000\ \031\000\031\000\031\000\031\000\031\000\031\000\031\000\031\000\ \031\000\031\000\031\000\031\000\031\000\031\000\031\000\031\000\ \031\000\031\000\031\000\031\000\032\000\031\000\031\000\031\000\ \031\000\031\000\031\000\031\000\031\000\032\000\032\000\032\000\ \032\000\032\000\032\000\032\000\032\000\032\000\032\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\032\000\032\000\ \032\000\032\000\032\000\032\000\032\000\032\000\032\000\032\000\ \032\000\032\000\032\000\032\000\032\000\032\000\032\000\032\000\ \032\000\032\000\032\000\032\000\032\000\032\000\032\000\032\000\ \000\000\000\000\000\000\000\000\032\000\000\000\032\000\032\000\ \032\000\032\000\032\000\032\000\032\000\032\000\032\000\032\000\ \032\000\032\000\032\000\032\000\032\000\032\000\032\000\032\000\ \032\000\032\000\032\000\032\000\032\000\032\000\032\000\032\000\ \000\000\072\000\000\000\000\000\072\000\072\000\072\000\000\000\ \000\000\000\000\072\000\072\000\000\000\072\000\000\000\072\000\ \207\000\207\000\207\000\207\000\207\000\207\000\207\000\207\000\ \207\000\207\000\072\000\000\000\000\000\072\000\072\000\072\000\ \072\000\000\000\105\000\000\000\105\000\105\000\105\000\105\000\ \105\000\105\000\105\000\105\000\105\000\105\000\105\000\105\000\ \105\000\105\000\105\000\105\000\105\000\105\000\105\000\105\000\ \105\000\105\000\105\000\105\000\105\000\105\000\072\000\104\000\ \000\000\000\000\000\000\000\000\000\000\031\000\031\000\031\000\ \031\000\031\000\031\000\031\000\031\000\031\000\031\000\031\000\ \031\000\031\000\031\000\031\000\031\000\031\000\031\000\031\000\ \031\000\031\000\031\000\031\000\072\000\031\000\031\000\031\000\ \031\000\031\000\031\000\031\000\031\000\031\000\031\000\031\000\ \031\000\031\000\031\000\031\000\031\000\031\000\031\000\031\000\ \031\000\031\000\031\000\031\000\031\000\031\000\031\000\031\000\ \031\000\031\000\031\000\031\000\033\000\031\000\031\000\031\000\ \031\000\031\000\031\000\031\000\031\000\033\000\033\000\033\000\ \033\000\033\000\033\000\033\000\033\000\033\000\033\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\033\000\033\000\ \033\000\033\000\033\000\033\000\033\000\033\000\033\000\033\000\ \033\000\033\000\033\000\033\000\033\000\033\000\033\000\033\000\ \033\000\033\000\033\000\033\000\033\000\033\000\033\000\033\000\ \000\000\000\000\000\000\000\000\033\000\000\000\033\000\033\000\ \033\000\033\000\033\000\033\000\033\000\033\000\033\000\033\000\ \033\000\033\000\033\000\033\000\033\000\033\000\033\000\033\000\ \033\000\033\000\033\000\033\000\033\000\033\000\033\000\033\000\ \000\000\075\000\000\000\000\000\075\000\075\000\075\000\000\000\ \000\000\000\000\075\000\075\000\000\000\075\000\000\000\075\000\ \208\000\208\000\208\000\208\000\208\000\208\000\208\000\208\000\ \208\000\208\000\075\000\000\000\000\000\075\000\075\000\075\000\ \075\000\000\000\112\000\000\000\112\000\112\000\112\000\112\000\ \112\000\112\000\112\000\112\000\112\000\112\000\112\000\112\000\ \112\000\112\000\112\000\112\000\112\000\112\000\112\000\112\000\ \112\000\112\000\112\000\112\000\112\000\112\000\075\000\111\000\ \000\000\000\000\000\000\000\000\000\000\033\000\033\000\033\000\ \033\000\033\000\033\000\033\000\033\000\033\000\033\000\033\000\ \033\000\033\000\033\000\033\000\033\000\033\000\033\000\033\000\ \033\000\033\000\033\000\033\000\075\000\033\000\033\000\033\000\ \033\000\033\000\033\000\033\000\033\000\033\000\033\000\033\000\ \033\000\033\000\033\000\033\000\033\000\033\000\033\000\033\000\ \033\000\033\000\033\000\033\000\033\000\033\000\033\000\033\000\ \033\000\033\000\033\000\033\000\034\000\033\000\033\000\033\000\ \033\000\033\000\033\000\033\000\033\000\034\000\034\000\034\000\ \034\000\034\000\034\000\034\000\034\000\034\000\034\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\034\000\034\000\ \034\000\034\000\034\000\034\000\034\000\034\000\034\000\034\000\ \034\000\034\000\034\000\034\000\034\000\034\000\034\000\034\000\ \034\000\034\000\034\000\034\000\034\000\034\000\034\000\034\000\ \000\000\000\000\000\000\000\000\034\000\098\000\034\000\034\000\ \034\000\034\000\034\000\034\000\034\000\034\000\034\000\034\000\ \034\000\034\000\034\000\034\000\034\000\034\000\034\000\034\000\ \034\000\034\000\034\000\034\000\034\000\034\000\034\000\034\000\ \000\000\099\000\099\000\099\000\099\000\099\000\099\000\099\000\ \099\000\099\000\099\000\099\000\099\000\099\000\099\000\099\000\ \099\000\099\000\099\000\099\000\099\000\099\000\099\000\099\000\ \099\000\099\000\099\000\000\000\000\000\000\000\000\000\099\000\ \000\000\099\000\099\000\099\000\099\000\099\000\099\000\099\000\ \099\000\099\000\099\000\099\000\099\000\099\000\099\000\099\000\ \099\000\099\000\099\000\099\000\099\000\099\000\099\000\099\000\ \099\000\099\000\099\000\211\000\211\000\211\000\211\000\211\000\ \211\000\211\000\211\000\000\000\000\000\033\000\033\000\033\000\ \033\000\033\000\033\000\033\000\033\000\033\000\033\000\033\000\ \033\000\033\000\033\000\033\000\033\000\033\000\033\000\033\000\ \033\000\033\000\033\000\033\000\000\000\033\000\033\000\033\000\ \033\000\033\000\033\000\033\000\033\000\033\000\033\000\033\000\ \033\000\033\000\033\000\033\000\033\000\033\000\033\000\033\000\ \033\000\033\000\033\000\033\000\033\000\033\000\033\000\033\000\ \033\000\033\000\033\000\033\000\034\000\033\000\033\000\033\000\ \033\000\033\000\033\000\033\000\033\000\034\000\034\000\034\000\ \034\000\034\000\034\000\034\000\034\000\034\000\034\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\034\000\034\000\ \034\000\034\000\034\000\034\000\034\000\034\000\034\000\034\000\ \034\000\034\000\034\000\034\000\034\000\034\000\034\000\034\000\ \034\000\034\000\034\000\034\000\034\000\034\000\034\000\034\000\ \000\000\000\000\000\000\000\000\034\000\000\000\034\000\034\000\ \034\000\034\000\034\000\034\000\034\000\034\000\034\000\034\000\ \034\000\034\000\034\000\073\000\034\000\034\000\034\000\034\000\ \034\000\034\000\034\000\034\000\034\000\034\000\034\000\034\000\ \106\000\106\000\106\000\106\000\106\000\106\000\106\000\106\000\ \106\000\106\000\106\000\106\000\106\000\106\000\106\000\106\000\ \106\000\106\000\106\000\106\000\106\000\106\000\106\000\106\000\ \106\000\106\000\000\000\000\000\000\000\000\000\106\000\000\000\ \106\000\106\000\106\000\106\000\106\000\106\000\106\000\106\000\ \106\000\106\000\106\000\106\000\106\000\106\000\106\000\106\000\ \106\000\106\000\106\000\106\000\106\000\106\000\106\000\106\000\ \106\000\106\000\212\000\212\000\212\000\212\000\212\000\212\000\ \212\000\212\000\000\000\000\000\000\000\033\000\033\000\033\000\ \033\000\033\000\033\000\033\000\033\000\033\000\033\000\033\000\ \033\000\033\000\033\000\033\000\033\000\033\000\033\000\033\000\ \033\000\033\000\033\000\033\000\000\000\033\000\033\000\033\000\ \033\000\033\000\033\000\033\000\033\000\033\000\033\000\033\000\ \033\000\033\000\033\000\033\000\033\000\033\000\033\000\033\000\ \033\000\033\000\033\000\033\000\033\000\033\000\033\000\033\000\ \033\000\033\000\033\000\033\000\034\000\033\000\033\000\033\000\ \033\000\033\000\033\000\033\000\033\000\034\000\034\000\034\000\ \034\000\034\000\034\000\034\000\034\000\034\000\034\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\034\000\034\000\ \034\000\034\000\034\000\034\000\034\000\034\000\034\000\034\000\ \034\000\034\000\034\000\034\000\034\000\034\000\034\000\034\000\ \034\000\034\000\034\000\034\000\034\000\034\000\034\000\034\000\ \000\000\000\000\000\000\000\000\034\000\000\000\034\000\034\000\ \034\000\034\000\070\000\034\000\034\000\034\000\034\000\034\000\ \034\000\034\000\034\000\034\000\034\000\034\000\034\000\034\000\ \034\000\034\000\034\000\034\000\034\000\034\000\034\000\034\000\ \103\000\103\000\103\000\103\000\103\000\103\000\103\000\103\000\ \103\000\103\000\103\000\103\000\103\000\103\000\103\000\103\000\ \103\000\103\000\103\000\103\000\103\000\103\000\103\000\103\000\ \103\000\103\000\000\000\000\000\000\000\000\000\103\000\000\000\ \103\000\103\000\103\000\103\000\103\000\103\000\103\000\103\000\ \103\000\103\000\103\000\103\000\103\000\103\000\103\000\103\000\ \103\000\103\000\103\000\103\000\103\000\103\000\103\000\103\000\ \103\000\103\000\236\000\236\000\236\000\236\000\236\000\236\000\ \236\000\236\000\000\000\000\000\000\000\033\000\033\000\033\000\ \033\000\033\000\033\000\033\000\033\000\033\000\033\000\033\000\ \033\000\033\000\033\000\033\000\033\000\033\000\033\000\033\000\ \033\000\033\000\033\000\033\000\000\000\033\000\033\000\033\000\ \033\000\033\000\033\000\033\000\033\000\033\000\033\000\033\000\ \033\000\033\000\033\000\033\000\033\000\033\000\033\000\033\000\ \033\000\033\000\033\000\033\000\033\000\033\000\033\000\033\000\ \033\000\033\000\033\000\033\000\000\000\033\000\033\000\033\000\ \033\000\033\000\033\000\033\000\033\000\050\000\169\000\050\000\ \050\000\050\000\050\000\000\000\000\000\000\000\050\000\050\000\ \000\000\050\000\050\000\050\000\237\000\237\000\237\000\237\000\ \237\000\237\000\237\000\237\000\000\000\169\000\050\000\000\000\ \050\000\050\000\050\000\050\000\050\000\238\000\238\000\238\000\ \238\000\238\000\238\000\238\000\238\000\170\000\170\000\170\000\ \170\000\170\000\170\000\170\000\170\000\170\000\170\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \064\000\000\000\050\000\063\000\000\000\063\000\063\000\063\000\ \063\000\063\000\063\000\063\000\063\000\063\000\063\000\063\000\ \063\000\063\000\063\000\063\000\063\000\063\000\063\000\063\000\ \063\000\063\000\063\000\063\000\063\000\063\000\063\000\000\000\ \050\000\059\000\050\000\000\000\059\000\059\000\059\000\048\000\ \000\000\000\000\059\000\059\000\000\000\059\000\060\000\059\000\ \048\000\048\000\048\000\048\000\048\000\048\000\048\000\048\000\ \048\000\048\000\059\000\000\000\000\000\059\000\059\000\059\000\ \059\000\048\000\048\000\048\000\048\000\048\000\048\000\048\000\ \048\000\048\000\048\000\048\000\048\000\048\000\048\000\048\000\ \048\000\048\000\048\000\048\000\048\000\048\000\048\000\048\000\ \048\000\048\000\048\000\000\000\000\000\000\000\059\000\048\000\ \000\000\048\000\048\000\048\000\048\000\048\000\048\000\048\000\ \048\000\048\000\048\000\048\000\048\000\048\000\048\000\048\000\ \048\000\048\000\048\000\048\000\048\000\048\000\048\000\048\000\ \048\000\048\000\048\000\000\000\059\000\000\000\061\000\000\000\ \000\000\000\000\000\000\062\000\062\000\062\000\062\000\062\000\ \062\000\062\000\062\000\062\000\062\000\062\000\062\000\062\000\ \062\000\062\000\062\000\062\000\062\000\062\000\062\000\062\000\ \062\000\062\000\062\000\000\000\062\000\062\000\062\000\062\000\ \062\000\062\000\062\000\062\000\050\000\172\000\050\000\050\000\ \050\000\050\000\000\000\000\000\000\000\050\000\050\000\000\000\ \050\000\050\000\050\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\172\000\050\000\171\000\050\000\ \050\000\050\000\050\000\050\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\170\000\170\000\170\000\170\000\ \170\000\170\000\170\000\170\000\170\000\170\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\053\000\ \000\000\050\000\052\000\000\000\052\000\052\000\052\000\052\000\ \052\000\052\000\052\000\052\000\052\000\052\000\052\000\052\000\ \052\000\052\000\052\000\052\000\052\000\052\000\052\000\052\000\ \052\000\052\000\052\000\052\000\052\000\052\000\034\000\050\000\ \000\000\050\000\000\000\000\000\000\000\000\000\000\000\034\000\ \034\000\034\000\034\000\034\000\034\000\034\000\034\000\034\000\ \034\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \034\000\034\000\034\000\034\000\034\000\034\000\034\000\034\000\ \034\000\034\000\034\000\034\000\034\000\034\000\034\000\034\000\ \034\000\034\000\034\000\034\000\034\000\034\000\034\000\034\000\ \034\000\034\000\000\000\000\000\000\000\000\000\034\000\000\000\ \034\000\034\000\034\000\034\000\034\000\034\000\034\000\034\000\ \034\000\034\000\034\000\034\000\034\000\034\000\034\000\034\000\ \034\000\034\000\034\000\034\000\034\000\034\000\034\000\034\000\ \034\000\034\000\234\000\234\000\234\000\234\000\234\000\234\000\ \234\000\234\000\234\000\234\000\000\000\000\000\000\000\000\000\ \000\000\000\000\051\000\051\000\051\000\051\000\051\000\051\000\ \051\000\051\000\051\000\051\000\051\000\051\000\051\000\051\000\ \051\000\051\000\051\000\051\000\051\000\051\000\051\000\051\000\ \051\000\051\000\000\000\051\000\051\000\051\000\051\000\051\000\ \051\000\051\000\051\000\235\000\235\000\235\000\235\000\235\000\ \235\000\235\000\235\000\235\000\235\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\033\000\ \033\000\033\000\033\000\033\000\033\000\033\000\033\000\033\000\ \033\000\033\000\033\000\033\000\033\000\033\000\033\000\033\000\ \033\000\033\000\033\000\033\000\033\000\033\000\000\000\033\000\ \033\000\033\000\033\000\033\000\033\000\033\000\033\000\033\000\ \033\000\033\000\033\000\033\000\033\000\033\000\033\000\033\000\ \033\000\033\000\033\000\033\000\033\000\033\000\033\000\033\000\ \033\000\033\000\033\000\033\000\033\000\033\000\000\000\033\000\ \033\000\033\000\033\000\033\000\033\000\033\000\033\000\050\000\ \000\000\050\000\050\000\050\000\050\000\000\000\000\000\000\000\ \050\000\050\000\000\000\050\000\050\000\050\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \050\000\000\000\050\000\050\000\050\000\050\000\050\000\000\000\ \000\000\100\000\000\000\051\000\100\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\051\000\051\000\051\000\051\000\ \051\000\051\000\051\000\051\000\051\000\051\000\058\000\000\000\ \100\000\000\000\000\000\000\000\050\000\051\000\051\000\051\000\ \051\000\051\000\051\000\051\000\051\000\051\000\051\000\051\000\ \051\000\051\000\051\000\051\000\051\000\051\000\051\000\051\000\ \051\000\051\000\051\000\051\000\051\000\051\000\051\000\000\000\ \000\000\189\000\050\000\051\000\050\000\051\000\051\000\051\000\ \051\000\051\000\051\000\051\000\051\000\051\000\051\000\051\000\ \051\000\051\000\051\000\051\000\051\000\051\000\051\000\051\000\ \051\000\051\000\051\000\051\000\051\000\051\000\051\000\105\000\ \000\000\105\000\105\000\105\000\105\000\105\000\105\000\105\000\ \105\000\105\000\105\000\105\000\105\000\105\000\105\000\105\000\ \105\000\105\000\105\000\105\000\105\000\105\000\105\000\105\000\ \105\000\105\000\105\000\188\000\104\000\188\000\188\000\188\000\ \188\000\188\000\188\000\188\000\188\000\188\000\188\000\188\000\ \188\000\188\000\188\000\188\000\188\000\188\000\188\000\188\000\ \188\000\188\000\188\000\188\000\188\000\188\000\188\000\000\000\ \187\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\051\000\051\000\051\000\051\000\ \051\000\051\000\051\000\051\000\051\000\051\000\051\000\051\000\ \051\000\051\000\051\000\051\000\051\000\051\000\051\000\051\000\ \051\000\051\000\051\000\000\000\051\000\051\000\051\000\051\000\ \051\000\051\000\051\000\051\000\051\000\051\000\051\000\051\000\ \051\000\051\000\051\000\051\000\051\000\051\000\051\000\051\000\ \051\000\051\000\051\000\051\000\051\000\051\000\051\000\051\000\ \051\000\051\000\051\000\052\000\051\000\051\000\051\000\051\000\ \051\000\051\000\051\000\051\000\052\000\052\000\052\000\052\000\ \052\000\052\000\052\000\052\000\052\000\052\000\057\000\000\000\ \000\000\000\000\000\000\000\000\000\000\052\000\052\000\052\000\ \052\000\052\000\052\000\052\000\052\000\052\000\052\000\052\000\ \052\000\052\000\052\000\052\000\052\000\052\000\052\000\052\000\ \052\000\052\000\052\000\052\000\052\000\052\000\052\000\000\000\ \000\000\000\000\000\000\052\000\000\000\052\000\052\000\052\000\ \052\000\052\000\052\000\052\000\052\000\052\000\052\000\052\000\ \052\000\052\000\052\000\052\000\052\000\052\000\052\000\052\000\ \052\000\052\000\052\000\052\000\052\000\052\000\052\000\110\000\ \110\000\110\000\110\000\110\000\110\000\110\000\110\000\110\000\ \110\000\110\000\110\000\110\000\110\000\110\000\110\000\110\000\ \110\000\110\000\110\000\110\000\110\000\110\000\110\000\110\000\ \110\000\000\000\000\000\000\000\000\000\110\000\000\000\110\000\ \110\000\110\000\110\000\110\000\110\000\110\000\110\000\110\000\ \110\000\110\000\110\000\110\000\110\000\110\000\110\000\110\000\ \110\000\110\000\110\000\110\000\110\000\110\000\110\000\110\000\ \110\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\051\000\051\000\051\000\051\000\ \051\000\051\000\051\000\051\000\051\000\051\000\051\000\051\000\ \051\000\051\000\051\000\051\000\051\000\051\000\051\000\051\000\ \051\000\051\000\051\000\000\000\051\000\051\000\051\000\051\000\ \051\000\051\000\051\000\051\000\051\000\051\000\051\000\051\000\ \051\000\051\000\051\000\051\000\051\000\051\000\051\000\051\000\ \051\000\051\000\051\000\051\000\051\000\051\000\051\000\051\000\ \051\000\051\000\051\000\055\000\051\000\051\000\051\000\051\000\ \051\000\051\000\051\000\051\000\055\000\055\000\055\000\055\000\ \055\000\055\000\055\000\055\000\055\000\055\000\056\000\000\000\ \000\000\000\000\000\000\000\000\000\000\055\000\055\000\055\000\ \055\000\055\000\055\000\055\000\055\000\055\000\055\000\055\000\ \055\000\055\000\055\000\055\000\055\000\055\000\055\000\055\000\ \055\000\055\000\055\000\055\000\055\000\055\000\055\000\000\000\ \000\000\000\000\000\000\055\000\000\000\055\000\055\000\055\000\ \055\000\055\000\055\000\055\000\055\000\055\000\055\000\055\000\ \055\000\055\000\055\000\055\000\055\000\055\000\055\000\055\000\ \055\000\055\000\055\000\055\000\055\000\055\000\055\000\059\000\ \000\000\000\000\059\000\059\000\059\000\000\000\000\000\000\000\ \059\000\059\000\000\000\059\000\059\000\059\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \059\000\000\000\059\000\059\000\059\000\059\000\059\000\000\000\ \000\000\107\000\000\000\062\000\107\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\062\000\062\000\062\000\062\000\ \062\000\062\000\062\000\062\000\062\000\062\000\069\000\000\000\ \107\000\000\000\000\000\000\000\059\000\062\000\062\000\062\000\ \062\000\062\000\062\000\062\000\062\000\062\000\062\000\062\000\ \062\000\062\000\062\000\062\000\062\000\062\000\062\000\062\000\ \062\000\062\000\062\000\062\000\062\000\062\000\062\000\000\000\ \000\000\000\000\059\000\062\000\059\000\062\000\062\000\062\000\ \062\000\062\000\062\000\062\000\062\000\062\000\062\000\062\000\ \062\000\062\000\062\000\062\000\062\000\062\000\062\000\062\000\ \062\000\062\000\062\000\062\000\062\000\062\000\062\000\112\000\ \000\000\112\000\112\000\112\000\112\000\112\000\112\000\112\000\ \112\000\112\000\112\000\112\000\112\000\112\000\112\000\112\000\ \112\000\112\000\112\000\112\000\112\000\112\000\112\000\112\000\ \112\000\112\000\112\000\188\000\111\000\188\000\188\000\188\000\ \188\000\188\000\188\000\188\000\188\000\188\000\188\000\188\000\ \188\000\188\000\188\000\188\000\188\000\188\000\188\000\188\000\ \188\000\188\000\188\000\188\000\188\000\188\000\188\000\000\000\ \187\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\062\000\062\000\062\000\062\000\ \062\000\062\000\062\000\062\000\062\000\062\000\062\000\062\000\ \062\000\062\000\062\000\062\000\062\000\062\000\062\000\062\000\ \062\000\062\000\062\000\000\000\062\000\062\000\062\000\062\000\ \062\000\062\000\062\000\062\000\062\000\062\000\062\000\062\000\ \062\000\062\000\062\000\062\000\062\000\062\000\062\000\062\000\ \062\000\062\000\062\000\062\000\062\000\062\000\062\000\062\000\ \062\000\062\000\062\000\063\000\062\000\062\000\062\000\062\000\ \062\000\062\000\062\000\062\000\063\000\063\000\063\000\063\000\ \063\000\063\000\063\000\063\000\063\000\063\000\068\000\000\000\ \000\000\000\000\000\000\000\000\000\000\063\000\063\000\063\000\ \063\000\063\000\063\000\063\000\063\000\063\000\063\000\063\000\ \063\000\063\000\063\000\063\000\063\000\063\000\063\000\063\000\ \063\000\063\000\063\000\063\000\063\000\063\000\063\000\000\000\ \000\000\000\000\000\000\063\000\000\000\063\000\063\000\063\000\ \063\000\063\000\063\000\063\000\063\000\063\000\063\000\063\000\ \063\000\063\000\063\000\063\000\063\000\063\000\063\000\063\000\ \063\000\063\000\063\000\063\000\063\000\063\000\063\000\133\000\ \133\000\133\000\133\000\133\000\133\000\133\000\133\000\133\000\ \133\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \133\000\133\000\133\000\133\000\133\000\133\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \133\000\133\000\133\000\133\000\133\000\133\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\062\000\062\000\062\000\062\000\ \062\000\062\000\062\000\062\000\062\000\062\000\062\000\062\000\ \062\000\062\000\062\000\062\000\062\000\062\000\062\000\062\000\ \062\000\062\000\062\000\000\000\062\000\062\000\062\000\062\000\ \062\000\062\000\062\000\062\000\062\000\062\000\062\000\062\000\ \062\000\062\000\062\000\062\000\062\000\062\000\062\000\062\000\ \062\000\062\000\062\000\062\000\062\000\062\000\062\000\062\000\ \062\000\062\000\062\000\066\000\062\000\062\000\062\000\062\000\ \062\000\062\000\062\000\062\000\066\000\066\000\066\000\066\000\ \066\000\066\000\066\000\066\000\066\000\066\000\067\000\000\000\ \000\000\000\000\000\000\000\000\000\000\066\000\066\000\066\000\ \066\000\066\000\066\000\066\000\066\000\066\000\066\000\066\000\ \066\000\066\000\066\000\066\000\066\000\066\000\066\000\066\000\ \066\000\066\000\066\000\066\000\066\000\066\000\066\000\000\000\ \000\000\000\000\000\000\066\000\000\000\066\000\066\000\066\000\ \066\000\066\000\066\000\066\000\066\000\066\000\066\000\066\000\ \066\000\066\000\066\000\066\000\066\000\066\000\066\000\066\000\ \066\000\066\000\066\000\066\000\066\000\066\000\066\000\034\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \034\000\034\000\034\000\034\000\034\000\034\000\034\000\034\000\ \034\000\034\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\034\000\034\000\034\000\034\000\034\000\034\000\034\000\ \034\000\034\000\034\000\034\000\034\000\034\000\034\000\034\000\ \034\000\034\000\034\000\034\000\034\000\034\000\034\000\034\000\ \034\000\034\000\034\000\000\000\000\000\000\000\000\000\034\000\ \000\000\034\000\034\000\034\000\034\000\034\000\034\000\034\000\ \034\000\034\000\034\000\034\000\034\000\034\000\034\000\034\000\ \034\000\034\000\034\000\034\000\071\000\034\000\034\000\034\000\ \034\000\034\000\034\000\134\000\134\000\134\000\134\000\134\000\ \134\000\134\000\134\000\134\000\134\000\197\000\000\000\000\000\ \198\000\000\000\000\000\000\000\134\000\134\000\134\000\134\000\ \134\000\134\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\199\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\134\000\134\000\134\000\134\000\ \134\000\134\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \033\000\033\000\033\000\033\000\033\000\033\000\033\000\033\000\ \033\000\033\000\033\000\033\000\033\000\033\000\033\000\033\000\ \033\000\033\000\033\000\033\000\033\000\033\000\033\000\195\000\ \033\000\033\000\033\000\033\000\033\000\033\000\033\000\033\000\ \033\000\033\000\033\000\033\000\033\000\033\000\033\000\033\000\ \033\000\033\000\033\000\033\000\033\000\033\000\033\000\033\000\ \033\000\033\000\033\000\033\000\033\000\033\000\033\000\000\000\ \033\000\033\000\033\000\033\000\033\000\033\000\033\000\033\000\ \072\000\000\000\072\000\034\000\000\000\000\000\072\000\072\000\ \000\000\072\000\000\000\072\000\034\000\034\000\034\000\034\000\ \034\000\034\000\034\000\034\000\034\000\034\000\000\000\000\000\ \072\000\072\000\072\000\000\000\072\000\034\000\034\000\034\000\ \034\000\034\000\034\000\034\000\034\000\034\000\034\000\034\000\ \034\000\034\000\034\000\034\000\034\000\034\000\034\000\034\000\ \034\000\034\000\034\000\034\000\034\000\034\000\034\000\000\000\ \000\000\000\000\072\000\034\000\000\000\034\000\034\000\034\000\ \034\000\034\000\034\000\034\000\034\000\034\000\034\000\034\000\ \034\000\034\000\034\000\034\000\034\000\034\000\034\000\034\000\ \034\000\034\000\034\000\034\000\034\000\034\000\034\000\000\000\ \072\000\000\000\000\000\000\000\190\000\190\000\190\000\190\000\ \190\000\190\000\190\000\190\000\190\000\190\000\190\000\190\000\ \190\000\190\000\190\000\190\000\190\000\190\000\190\000\190\000\ \190\000\190\000\190\000\190\000\190\000\190\000\000\000\000\000\ \000\000\000\000\190\000\255\255\190\000\190\000\190\000\190\000\ \190\000\190\000\190\000\190\000\190\000\190\000\190\000\190\000\ \190\000\190\000\190\000\190\000\190\000\190\000\190\000\190\000\ \190\000\190\000\190\000\190\000\190\000\190\000\000\000\000\000\ \000\000\000\000\000\000\000\000\033\000\033\000\033\000\033\000\ \033\000\033\000\033\000\033\000\033\000\033\000\033\000\033\000\ \033\000\033\000\033\000\033\000\033\000\033\000\033\000\033\000\ \033\000\033\000\033\000\000\000\033\000\033\000\033\000\033\000\ \033\000\033\000\033\000\033\000\033\000\033\000\033\000\033\000\ \033\000\033\000\033\000\033\000\033\000\033\000\033\000\033\000\ \033\000\033\000\033\000\033\000\033\000\033\000\033\000\033\000\ \033\000\033\000\033\000\034\000\033\000\033\000\033\000\033\000\ \033\000\033\000\033\000\033\000\034\000\034\000\034\000\034\000\ \034\000\034\000\034\000\034\000\034\000\034\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\034\000\034\000\034\000\ \034\000\034\000\034\000\034\000\034\000\034\000\034\000\034\000\ \034\000\034\000\034\000\034\000\034\000\034\000\034\000\034\000\ \034\000\034\000\034\000\034\000\034\000\034\000\034\000\000\000\ \000\000\000\000\000\000\034\000\191\000\034\000\034\000\034\000\ \074\000\034\000\034\000\034\000\034\000\034\000\034\000\034\000\ \034\000\034\000\034\000\034\000\034\000\034\000\034\000\034\000\ \034\000\034\000\034\000\034\000\034\000\034\000\034\000\000\000\ \190\000\190\000\190\000\190\000\190\000\190\000\190\000\190\000\ \190\000\190\000\190\000\190\000\190\000\190\000\190\000\190\000\ \190\000\190\000\190\000\190\000\190\000\190\000\190\000\190\000\ \190\000\190\000\000\000\000\000\000\000\000\000\190\000\000\000\ \190\000\190\000\190\000\190\000\190\000\190\000\190\000\190\000\ \190\000\190\000\190\000\190\000\190\000\190\000\190\000\190\000\ \190\000\190\000\190\000\190\000\190\000\190\000\190\000\190\000\ \190\000\190\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\033\000\033\000\033\000\033\000\ \033\000\033\000\033\000\033\000\033\000\033\000\033\000\033\000\ \033\000\033\000\033\000\033\000\033\000\033\000\033\000\033\000\ \033\000\033\000\033\000\000\000\033\000\033\000\033\000\033\000\ \033\000\033\000\033\000\033\000\033\000\033\000\033\000\033\000\ \033\000\033\000\033\000\033\000\033\000\033\000\033\000\033\000\ \033\000\033\000\033\000\033\000\033\000\033\000\033\000\033\000\ \033\000\033\000\033\000\000\000\033\000\033\000\033\000\033\000\ \033\000\033\000\033\000\033\000\075\000\000\000\075\000\034\000\ \000\000\000\000\075\000\075\000\000\000\075\000\000\000\075\000\ \034\000\034\000\034\000\034\000\034\000\034\000\034\000\034\000\ \034\000\034\000\000\000\000\000\075\000\075\000\075\000\000\000\ \075\000\034\000\034\000\034\000\034\000\034\000\034\000\034\000\ \034\000\034\000\034\000\034\000\034\000\034\000\034\000\034\000\ \034\000\034\000\034\000\034\000\034\000\034\000\034\000\034\000\ \034\000\034\000\034\000\000\000\000\000\000\000\075\000\034\000\ \000\000\034\000\034\000\034\000\034\000\034\000\034\000\034\000\ \034\000\034\000\034\000\034\000\034\000\034\000\034\000\034\000\ \034\000\034\000\034\000\034\000\034\000\034\000\034\000\034\000\ \034\000\034\000\034\000\000\000\075\000\194\000\194\000\194\000\ \194\000\194\000\194\000\194\000\194\000\194\000\194\000\194\000\ \194\000\194\000\194\000\194\000\194\000\194\000\194\000\194\000\ \194\000\194\000\194\000\194\000\194\000\194\000\194\000\000\000\ \000\000\000\000\000\000\194\000\000\000\194\000\194\000\194\000\ \194\000\194\000\194\000\194\000\194\000\194\000\194\000\194\000\ \194\000\194\000\194\000\194\000\194\000\194\000\194\000\194\000\ \194\000\194\000\194\000\194\000\194\000\194\000\194\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \033\000\033\000\033\000\033\000\033\000\033\000\033\000\033\000\ \033\000\033\000\033\000\033\000\033\000\033\000\033\000\033\000\ \033\000\033\000\033\000\033\000\033\000\033\000\033\000\000\000\ \033\000\033\000\033\000\033\000\033\000\033\000\033\000\033\000\ \033\000\033\000\033\000\033\000\033\000\033\000\033\000\033\000\ \033\000\033\000\033\000\033\000\033\000\033\000\033\000\033\000\ \033\000\033\000\033\000\033\000\033\000\033\000\033\000\076\000\ \033\000\033\000\033\000\033\000\033\000\033\000\033\000\033\000\ \076\000\076\000\076\000\076\000\076\000\076\000\076\000\076\000\ \076\000\076\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\076\000\076\000\076\000\076\000\076\000\076\000\076\000\ \076\000\076\000\076\000\076\000\076\000\076\000\076\000\076\000\ \076\000\076\000\076\000\076\000\076\000\076\000\076\000\076\000\ \076\000\076\000\076\000\000\000\000\000\000\000\000\000\076\000\ \000\000\076\000\076\000\076\000\076\000\076\000\076\000\076\000\ \076\000\076\000\076\000\076\000\076\000\076\000\076\000\076\000\ \076\000\076\000\076\000\076\000\076\000\076\000\076\000\076\000\ \076\000\076\000\076\000\076\000\000\000\000\000\000\000\093\000\ \000\000\093\000\000\000\000\000\092\000\092\000\092\000\092\000\ \092\000\092\000\092\000\092\000\092\000\092\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\076\000\076\000\076\000\ \076\000\076\000\076\000\076\000\076\000\076\000\076\000\076\000\ \076\000\076\000\076\000\076\000\076\000\076\000\076\000\076\000\ \076\000\076\000\076\000\076\000\076\000\076\000\076\000\000\000\ \000\000\000\000\000\000\076\000\000\000\076\000\076\000\076\000\ \076\000\076\000\076\000\076\000\076\000\076\000\076\000\076\000\ \076\000\076\000\076\000\076\000\076\000\076\000\076\000\076\000\ \076\000\076\000\076\000\076\000\076\000\076\000\076\000\076\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \078\000\078\000\078\000\078\000\078\000\078\000\078\000\078\000\ \078\000\078\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\076\000\076\000\076\000\076\000\077\000\076\000\088\000\ \088\000\088\000\088\000\088\000\088\000\088\000\088\000\088\000\ \088\000\088\000\088\000\088\000\088\000\088\000\088\000\088\000\ \088\000\088\000\088\000\000\000\000\000\000\000\000\000\078\000\ \000\000\076\000\076\000\076\000\076\000\077\000\076\000\088\000\ \088\000\088\000\088\000\088\000\088\000\088\000\088\000\088\000\ \088\000\088\000\088\000\088\000\088\000\088\000\088\000\088\000\ \088\000\088\000\088\000\076\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\076\000\076\000\076\000\076\000\ \076\000\076\000\076\000\076\000\076\000\076\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\076\000\076\000\076\000\ \076\000\076\000\076\000\076\000\076\000\076\000\076\000\076\000\ \076\000\076\000\076\000\076\000\076\000\076\000\076\000\076\000\ \076\000\076\000\076\000\076\000\076\000\076\000\076\000\000\000\ \000\000\000\000\000\000\076\000\000\000\076\000\076\000\076\000\ \076\000\076\000\076\000\076\000\076\000\076\000\076\000\076\000\ \076\000\076\000\076\000\076\000\076\000\076\000\076\000\076\000\ \076\000\076\000\076\000\076\000\076\000\076\000\076\000\076\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \091\000\091\000\076\000\076\000\076\000\076\000\076\000\076\000\ \076\000\076\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\076\000\076\000\076\000\076\000\076\000\076\000\076\000\ \076\000\076\000\076\000\076\000\076\000\076\000\076\000\076\000\ \076\000\076\000\076\000\076\000\076\000\076\000\076\000\076\000\ \076\000\076\000\076\000\000\000\000\000\000\000\000\000\076\000\ \000\000\076\000\076\000\076\000\076\000\076\000\076\000\076\000\ \076\000\076\000\076\000\076\000\076\000\076\000\076\000\076\000\ \076\000\076\000\076\000\076\000\076\000\076\000\076\000\076\000\ \076\000\076\000\076\000\076\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\090\000\090\000\090\000\090\000\ \090\000\090\000\090\000\090\000\076\000\076\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\076\000\076\000\076\000\ \076\000\076\000\076\000\076\000\076\000\076\000\076\000\076\000\ \076\000\076\000\076\000\076\000\076\000\076\000\076\000\076\000\ \076\000\076\000\076\000\076\000\076\000\076\000\076\000\000\000\ \000\000\000\000\000\000\076\000\000\000\076\000\076\000\076\000\ \076\000\076\000\076\000\076\000\076\000\076\000\076\000\076\000\ \076\000\076\000\076\000\076\000\076\000\076\000\076\000\076\000\ \076\000\076\000\076\000\076\000\076\000\076\000\076\000\076\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \083\000\083\000\083\000\083\000\083\000\083\000\083\000\083\000\ \083\000\083\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\083\000\083\000\083\000\083\000\083\000\083\000\076\000\ \076\000\076\000\076\000\076\000\076\000\076\000\076\000\076\000\ \076\000\076\000\076\000\076\000\076\000\076\000\076\000\076\000\ \076\000\076\000\076\000\000\000\000\000\000\000\000\000\076\000\ \000\000\083\000\083\000\083\000\083\000\083\000\083\000\076\000\ \076\000\076\000\076\000\076\000\076\000\076\000\076\000\076\000\ \076\000\076\000\076\000\076\000\076\000\076\000\076\000\076\000\ \076\000\076\000\076\000\076\000\000\000\000\000\000\000\000\000\ \000\000\000\000\084\000\000\000\083\000\083\000\083\000\083\000\ \083\000\083\000\083\000\083\000\083\000\083\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\083\000\083\000\083\000\ \083\000\083\000\083\000\079\000\079\000\079\000\079\000\079\000\ \079\000\079\000\079\000\079\000\085\000\079\000\079\000\079\000\ \079\000\079\000\079\000\079\000\079\000\079\000\079\000\000\000\ \000\000\000\000\000\000\083\000\000\000\083\000\083\000\083\000\ \083\000\083\000\083\000\079\000\079\000\079\000\079\000\079\000\ \079\000\079\000\079\000\079\000\085\000\079\000\079\000\079\000\ \079\000\079\000\079\000\079\000\079\000\079\000\079\000\076\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \084\000\084\000\084\000\084\000\084\000\084\000\084\000\084\000\ \084\000\084\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\084\000\084\000\084\000\084\000\084\000\084\000\088\000\ \088\000\088\000\088\000\088\000\088\000\088\000\088\000\088\000\ \089\000\088\000\088\000\088\000\088\000\088\000\088\000\088\000\ \088\000\088\000\088\000\000\000\000\000\000\000\000\000\084\000\ \000\000\084\000\084\000\084\000\084\000\084\000\084\000\088\000\ \088\000\088\000\088\000\088\000\088\000\088\000\088\000\088\000\ \089\000\088\000\088\000\088\000\088\000\088\000\088\000\088\000\ \088\000\088\000\088\000\076\000\000\000\000\000\000\000\087\000\ \000\000\087\000\000\000\000\000\086\000\086\000\086\000\086\000\ \086\000\086\000\086\000\086\000\086\000\086\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\076\000\076\000\076\000\ \076\000\076\000\076\000\076\000\076\000\076\000\076\000\076\000\ \076\000\076\000\076\000\076\000\076\000\076\000\076\000\076\000\ \076\000\076\000\076\000\076\000\076\000\076\000\076\000\000\000\ \000\000\000\000\000\000\076\000\000\000\076\000\076\000\076\000\ \076\000\076\000\076\000\076\000\076\000\076\000\076\000\076\000\ \076\000\076\000\076\000\076\000\076\000\076\000\076\000\076\000\ \076\000\076\000\076\000\076\000\076\000\076\000\076\000\076\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \086\000\086\000\086\000\086\000\086\000\086\000\086\000\086\000\ \086\000\086\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\076\000\076\000\076\000\076\000\076\000\076\000\088\000\ \088\000\088\000\088\000\088\000\088\000\088\000\088\000\088\000\ \088\000\088\000\088\000\088\000\088\000\088\000\088\000\088\000\ \088\000\088\000\088\000\000\000\000\000\000\000\000\000\086\000\ \000\000\076\000\076\000\076\000\076\000\076\000\076\000\088\000\ \088\000\088\000\088\000\088\000\088\000\088\000\088\000\088\000\ \088\000\088\000\088\000\088\000\088\000\088\000\088\000\088\000\ \088\000\088\000\088\000\076\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\076\000\076\000\076\000\076\000\ \076\000\076\000\076\000\076\000\076\000\076\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\076\000\076\000\076\000\ \076\000\076\000\076\000\076\000\076\000\076\000\076\000\076\000\ \076\000\076\000\076\000\076\000\076\000\076\000\076\000\076\000\ \076\000\076\000\076\000\076\000\076\000\076\000\076\000\000\000\ \000\000\000\000\000\000\076\000\000\000\076\000\076\000\076\000\ \076\000\076\000\076\000\076\000\076\000\076\000\076\000\076\000\ \076\000\076\000\076\000\076\000\076\000\076\000\076\000\076\000\ \076\000\076\000\076\000\076\000\076\000\076\000\076\000\076\000\ \000\000\000\000\000\000\087\000\000\000\087\000\000\000\000\000\ \086\000\086\000\086\000\086\000\086\000\086\000\086\000\086\000\ \086\000\086\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\076\000\076\000\076\000\076\000\076\000\076\000\076\000\ \076\000\076\000\076\000\076\000\076\000\076\000\076\000\076\000\ \076\000\076\000\076\000\076\000\076\000\076\000\076\000\076\000\ \076\000\076\000\076\000\000\000\000\000\000\000\000\000\076\000\ \000\000\076\000\076\000\076\000\076\000\076\000\076\000\076\000\ \076\000\076\000\076\000\076\000\076\000\076\000\076\000\076\000\ \076\000\076\000\076\000\076\000\076\000\076\000\076\000\076\000\ \076\000\076\000\076\000\076\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\090\000\090\000\090\000\090\000\ \090\000\090\000\090\000\090\000\076\000\076\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\076\000\076\000\076\000\ \076\000\076\000\076\000\079\000\079\000\079\000\079\000\079\000\ \079\000\079\000\079\000\079\000\079\000\079\000\079\000\079\000\ \079\000\079\000\079\000\079\000\079\000\079\000\079\000\000\000\ \000\000\000\000\000\000\090\000\000\000\076\000\076\000\076\000\ \076\000\076\000\076\000\079\000\079\000\079\000\079\000\079\000\ \079\000\079\000\079\000\079\000\079\000\079\000\079\000\079\000\ \079\000\079\000\079\000\079\000\079\000\079\000\079\000\076\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \091\000\091\000\076\000\076\000\076\000\076\000\076\000\076\000\ \076\000\076\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\076\000\076\000\076\000\076\000\076\000\076\000\079\000\ \079\000\079\000\079\000\079\000\079\000\079\000\079\000\079\000\ \079\000\079\000\079\000\079\000\079\000\079\000\079\000\079\000\ \079\000\079\000\079\000\000\000\000\000\000\000\000\000\091\000\ \000\000\076\000\076\000\076\000\076\000\076\000\076\000\079\000\ \079\000\079\000\079\000\079\000\079\000\079\000\079\000\079\000\ \079\000\079\000\079\000\079\000\079\000\079\000\079\000\079\000\ \079\000\079\000\079\000\076\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\092\000\092\000\092\000\092\000\ \092\000\092\000\092\000\092\000\092\000\092\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\076\000\076\000\076\000\ \076\000\076\000\076\000\088\000\088\000\088\000\088\000\088\000\ \088\000\088\000\088\000\088\000\088\000\088\000\088\000\088\000\ \088\000\088\000\088\000\088\000\088\000\088\000\088\000\000\000\ \000\000\000\000\000\000\092\000\000\000\076\000\076\000\076\000\ \076\000\076\000\076\000\088\000\088\000\088\000\088\000\088\000\ \088\000\088\000\088\000\088\000\088\000\088\000\088\000\088\000\ \088\000\088\000\088\000\088\000\088\000\088\000\088\000\100\000\ \000\000\000\000\100\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\100\000\000\000\ \000\000\000\000\000\000\000\000\000\000\099\000\000\000\000\000\ \000\000\000\000\000\000\000\000\102\000\000\000\099\000\099\000\ \099\000\099\000\099\000\099\000\099\000\099\000\099\000\099\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\099\000\ \099\000\099\000\099\000\099\000\099\000\099\000\099\000\099\000\ \099\000\099\000\099\000\099\000\099\000\099\000\099\000\099\000\ \099\000\099\000\099\000\099\000\099\000\099\000\099\000\099\000\ \099\000\000\000\000\000\000\000\000\000\099\000\000\000\099\000\ \099\000\099\000\099\000\099\000\099\000\099\000\099\000\099\000\ \099\000\099\000\099\000\099\000\099\000\099\000\099\000\099\000\ \099\000\099\000\099\000\099\000\099\000\099\000\099\000\099\000\ \099\000\100\000\101\000\000\000\100\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \100\000\000\000\000\000\000\000\000\000\000\000\000\000\103\000\ \000\000\000\000\000\000\000\000\000\000\000\000\102\000\000\000\ \103\000\103\000\103\000\103\000\103\000\103\000\103\000\103\000\ \103\000\103\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\103\000\103\000\103\000\103\000\103\000\103\000\103\000\ \103\000\103\000\103\000\103\000\103\000\103\000\103\000\103\000\ \103\000\103\000\103\000\103\000\103\000\103\000\103\000\103\000\ \103\000\103\000\103\000\000\000\000\000\000\000\000\000\103\000\ \000\000\103\000\103\000\103\000\103\000\103\000\103\000\103\000\ \103\000\103\000\103\000\103\000\103\000\103\000\103\000\103\000\ \103\000\103\000\103\000\103\000\103\000\103\000\103\000\103\000\ \103\000\103\000\103\000\107\000\101\000\000\000\107\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\107\000\000\000\000\000\000\000\000\000\000\000\ \000\000\106\000\000\000\000\000\000\000\000\000\000\000\000\000\ \109\000\000\000\106\000\106\000\106\000\106\000\106\000\106\000\ \106\000\106\000\106\000\106\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\106\000\106\000\106\000\106\000\106\000\ \106\000\106\000\106\000\106\000\106\000\106\000\106\000\106\000\ \106\000\106\000\106\000\106\000\106\000\106\000\106\000\106\000\ \106\000\106\000\106\000\106\000\106\000\000\000\000\000\000\000\ \000\000\106\000\000\000\106\000\106\000\106\000\106\000\106\000\ \106\000\106\000\106\000\106\000\106\000\106\000\106\000\106\000\ \106\000\106\000\106\000\106\000\106\000\106\000\106\000\106\000\ \106\000\106\000\106\000\106\000\106\000\107\000\108\000\000\000\ \107\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\107\000\000\000\000\000\000\000\ \000\000\000\000\000\000\110\000\000\000\000\000\000\000\000\000\ \000\000\000\000\109\000\000\000\110\000\110\000\110\000\110\000\ \110\000\110\000\110\000\110\000\110\000\110\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\110\000\110\000\110\000\ \110\000\110\000\110\000\110\000\110\000\110\000\110\000\110\000\ \110\000\110\000\110\000\110\000\110\000\110\000\110\000\110\000\ \110\000\110\000\110\000\110\000\110\000\110\000\110\000\000\000\ \000\000\000\000\000\000\110\000\000\000\110\000\110\000\110\000\ \110\000\110\000\110\000\110\000\110\000\110\000\110\000\110\000\ \110\000\110\000\110\000\110\000\110\000\110\000\110\000\110\000\ \110\000\110\000\110\000\110\000\110\000\110\000\110\000\124\000\ \108\000\124\000\255\255\000\000\000\000\000\000\124\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\123\000\ \123\000\123\000\123\000\123\000\123\000\123\000\123\000\123\000\ \123\000\141\000\000\000\000\000\141\000\141\000\141\000\000\000\ \000\000\000\000\141\000\141\000\000\000\141\000\141\000\141\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\141\000\000\000\141\000\141\000\141\000\141\000\ \141\000\000\000\000\000\124\000\000\000\000\000\000\000\000\000\ \000\000\124\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\124\000\122\000\000\000\ \000\000\124\000\000\000\124\000\000\000\000\000\141\000\121\000\ \000\000\000\000\000\000\000\000\143\000\000\000\143\000\143\000\ \143\000\143\000\000\000\000\000\000\000\143\000\143\000\000\000\ \143\000\143\000\143\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\141\000\143\000\141\000\143\000\ \143\000\143\000\143\000\143\000\000\000\000\000\000\000\006\000\ \000\000\000\000\006\000\006\000\006\000\000\000\000\000\000\000\ \006\000\006\000\000\000\006\000\006\000\006\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \006\000\143\000\006\000\006\000\006\000\006\000\006\000\000\000\ \000\000\000\000\000\000\000\000\145\000\000\000\000\000\145\000\ \145\000\145\000\000\000\000\000\000\000\145\000\145\000\000\000\ \145\000\145\000\145\000\000\000\000\000\000\000\000\000\143\000\ \000\000\143\000\000\000\000\000\006\000\145\000\000\000\145\000\ \145\000\145\000\145\000\145\000\000\000\000\000\000\000\145\000\ \000\000\000\000\145\000\145\000\145\000\000\000\000\000\000\000\ \145\000\145\000\000\000\145\000\145\000\145\000\000\000\000\000\ \000\000\000\000\006\000\000\000\006\000\000\000\000\000\255\255\ \145\000\145\000\145\000\145\000\145\000\145\000\145\000\000\000\ \000\000\000\000\145\000\000\000\000\000\145\000\145\000\145\000\ \000\000\000\000\000\000\145\000\145\000\000\000\145\000\145\000\ \145\000\000\000\000\000\000\000\000\000\000\000\000\000\145\000\ \000\000\145\000\000\000\145\000\145\000\145\000\145\000\145\000\ \145\000\145\000\000\000\000\000\000\000\006\000\000\000\000\000\ \006\000\006\000\006\000\000\000\000\000\000\000\006\000\006\000\ \000\000\006\000\006\000\006\000\000\000\000\000\000\000\000\000\ \000\000\000\000\145\000\000\000\145\000\000\000\006\000\145\000\ \006\000\006\000\006\000\006\000\006\000\000\000\000\000\000\000\ \006\000\000\000\000\000\006\000\006\000\006\000\000\000\000\000\ \000\000\006\000\006\000\000\000\006\000\006\000\006\000\000\000\ \000\000\000\000\000\000\000\000\000\000\145\000\000\000\145\000\ \000\000\006\000\006\000\006\000\006\000\006\000\006\000\006\000\ \000\000\000\000\000\000\165\000\000\000\165\000\165\000\165\000\ \165\000\000\000\000\000\000\000\165\000\165\000\000\000\165\000\ \165\000\165\000\000\000\000\000\000\000\000\000\000\000\000\000\ \006\000\000\000\006\000\000\000\165\000\006\000\165\000\165\000\ \165\000\165\000\165\000\000\000\000\000\000\000\165\000\000\000\ \165\000\165\000\165\000\165\000\000\000\000\000\000\000\165\000\ \165\000\000\000\165\000\165\000\165\000\000\000\000\000\000\000\ \000\000\000\000\000\000\006\000\000\000\006\000\000\000\165\000\ \165\000\165\000\165\000\165\000\165\000\165\000\000\000\000\000\ \000\000\145\000\000\000\000\000\145\000\145\000\145\000\000\000\ \000\000\000\000\145\000\145\000\000\000\145\000\145\000\145\000\ \000\000\000\000\000\000\000\000\000\000\000\000\165\000\000\000\ \165\000\000\000\145\000\165\000\145\000\145\000\145\000\145\000\ \145\000\000\000\000\000\000\000\145\000\000\000\000\000\145\000\ \145\000\145\000\000\000\000\000\000\000\145\000\145\000\000\000\ \145\000\145\000\145\000\000\000\000\000\000\000\000\000\000\000\ \000\000\165\000\000\000\165\000\000\000\145\000\145\000\145\000\ \145\000\145\000\145\000\145\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\177\000\000\000\000\000\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\145\000\000\000\145\000\000\000\ \000\000\145\000\000\000\182\000\000\000\000\000\000\000\000\000\ \180\000\184\000\000\000\183\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\145\000\ \000\000\145\000\176\000\176\000\176\000\176\000\176\000\176\000\ \176\000\176\000\176\000\176\000\176\000\176\000\176\000\176\000\ \176\000\176\000\176\000\176\000\176\000\176\000\176\000\176\000\ \176\000\176\000\176\000\176\000\000\000\000\000\000\000\000\000\ \176\000\000\000\176\000\176\000\176\000\176\000\176\000\176\000\ \176\000\176\000\176\000\176\000\176\000\176\000\176\000\176\000\ \176\000\176\000\176\000\176\000\176\000\176\000\176\000\176\000\ \176\000\176\000\176\000\176\000\181\000\176\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\176\000\176\000\ \176\000\176\000\176\000\176\000\176\000\176\000\176\000\176\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\176\000\ \176\000\176\000\176\000\176\000\176\000\176\000\176\000\176\000\ \176\000\176\000\176\000\176\000\176\000\176\000\176\000\176\000\ \176\000\176\000\176\000\176\000\176\000\176\000\176\000\176\000\ \176\000\000\000\000\000\000\000\000\000\176\000\000\000\176\000\ \176\000\176\000\176\000\176\000\176\000\176\000\176\000\176\000\ \176\000\176\000\176\000\176\000\176\000\176\000\176\000\176\000\ \176\000\176\000\176\000\176\000\176\000\176\000\176\000\176\000\ \176\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\192\000\000\000\000\000\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\192\000\000\000\000\000\000\000\000\000\192\000\ \000\000\190\000\192\000\000\000\000\000\000\000\000\000\000\000\ \193\000\179\000\190\000\190\000\190\000\190\000\190\000\190\000\ \190\000\190\000\190\000\190\000\000\000\000\000\192\000\000\000\ \000\000\000\000\000\000\190\000\190\000\190\000\190\000\190\000\ \190\000\190\000\190\000\190\000\190\000\190\000\190\000\190\000\ \190\000\190\000\190\000\190\000\190\000\190\000\190\000\190\000\ \190\000\190\000\190\000\190\000\190\000\000\000\000\000\000\000\ \000\000\190\000\000\000\190\000\190\000\190\000\190\000\190\000\ \190\000\190\000\190\000\190\000\190\000\190\000\190\000\190\000\ \190\000\190\000\190\000\190\000\190\000\190\000\190\000\190\000\ \190\000\190\000\190\000\190\000\190\000\188\000\187\000\188\000\ \188\000\188\000\188\000\188\000\188\000\188\000\188\000\188\000\ \188\000\188\000\188\000\188\000\188\000\188\000\188\000\188\000\ \188\000\188\000\188\000\188\000\188\000\188\000\188\000\188\000\ \188\000\192\000\187\000\000\000\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\ \192\000\000\000\000\000\000\000\000\000\000\000\000\000\194\000\ \000\000\000\000\000\000\000\000\000\000\000\000\193\000\000\000\ \194\000\194\000\194\000\194\000\194\000\194\000\194\000\194\000\ \194\000\194\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\194\000\194\000\194\000\194\000\194\000\194\000\194\000\ \194\000\194\000\194\000\194\000\194\000\194\000\194\000\194\000\ \194\000\194\000\194\000\194\000\194\000\194\000\194\000\194\000\ \194\000\194\000\194\000\000\000\000\000\000\000\000\000\194\000\ \000\000\194\000\194\000\194\000\194\000\194\000\194\000\194\000\ \194\000\194\000\194\000\194\000\194\000\194\000\194\000\194\000\ \194\000\194\000\194\000\194\000\194\000\194\000\194\000\194\000\ \194\000\194\000\194\000\205\000\187\000\205\000\000\000\000\000\ \000\000\000\000\205\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\204\000\204\000\204\000\204\000\204\000\ \204\000\204\000\204\000\204\000\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\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\214\000\214\000\214\000\ \214\000\214\000\214\000\214\000\214\000\214\000\214\000\205\000\ \000\000\000\000\000\000\000\000\000\000\205\000\214\000\214\000\ \214\000\214\000\214\000\214\000\000\000\000\000\000\000\000\000\ \000\000\205\000\203\000\000\000\000\000\205\000\000\000\205\000\ \000\000\000\000\000\000\202\000\215\000\215\000\215\000\215\000\ \215\000\215\000\215\000\215\000\215\000\215\000\214\000\214\000\ \214\000\214\000\214\000\214\000\000\000\215\000\215\000\215\000\ \215\000\215\000\215\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\231\000\000\000\000\000\ \232\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\215\000\215\000\215\000\ \215\000\215\000\215\000\230\000\000\000\230\000\000\000\000\000\ \000\000\000\000\230\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\229\000\229\000\229\000\229\000\229\000\ \229\000\229\000\229\000\229\000\229\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\239\000\239\000\239\000\ \239\000\239\000\239\000\239\000\239\000\239\000\239\000\230\000\ \000\000\000\000\000\000\000\000\000\000\230\000\239\000\239\000\ \239\000\239\000\239\000\239\000\000\000\000\000\000\000\000\000\ \000\000\230\000\228\000\000\000\000\000\230\000\000\000\230\000\ \226\000\000\000\000\000\227\000\240\000\240\000\240\000\240\000\ \240\000\240\000\240\000\240\000\240\000\240\000\239\000\239\000\ \239\000\239\000\239\000\239\000\000\000\240\000\240\000\240\000\ \240\000\240\000\240\000\242\000\242\000\242\000\242\000\242\000\ \242\000\242\000\242\000\242\000\242\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\242\000\242\000\242\000\242\000\ \242\000\242\000\000\000\000\000\000\000\240\000\240\000\240\000\ \240\000\240\000\240\000\000\000\000\000\000\000\000\000\000\000\ \000\000\242\000\242\000\242\000\242\000\242\000\242\000\242\000\ \242\000\242\000\242\000\000\000\242\000\242\000\242\000\242\000\ \242\000\242\000\242\000\242\000\242\000\242\000\242\000\242\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\242\000\242\000\242\000\242\000\242\000\242\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\255\255\000\000\253\000\243\000\253\000\ \253\000\253\000\253\000\253\000\253\000\253\000\253\000\253\000\ \253\000\253\000\253\000\253\000\253\000\253\000\253\000\253\000\ \253\000\253\000\253\000\253\000\253\000\253\000\253\000\253\000\ \253\000\000\000\253\000\252\000\253\000\253\000\253\000\253\000\ \253\000\253\000\253\000\253\000\253\000\253\000\253\000\253\000\ \253\000\253\000\253\000\253\000\253\000\253\000\253\000\253\000\ \253\000\253\000\253\000\253\000\253\000\253\000\000\000\000\000\ \252\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000"; Lexing.lex_check = "\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\000\000\000\000\043\000\000\000\000\000\043\000\047\000\ \049\000\117\000\047\000\049\000\117\000\178\000\198\000\217\000\ \178\000\198\000\217\000\222\000\232\000\005\001\222\000\232\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\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\ \013\000\017\000\025\000\041\000\017\000\017\000\041\000\044\000\ \053\000\064\000\044\000\087\000\087\000\087\000\087\000\087\000\ \087\000\087\000\087\000\087\000\087\000\115\000\116\000\013\000\ \124\000\013\000\041\000\013\000\127\000\131\000\134\000\045\000\ \044\000\045\000\045\000\045\000\045\000\045\000\045\000\045\000\ \045\000\045\000\045\000\045\000\045\000\045\000\045\000\045\000\ \045\000\045\000\045\000\045\000\045\000\045\000\045\000\045\000\ \045\000\045\000\045\000\136\000\136\000\138\000\138\000\153\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\013\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\154\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\003\000\140\000\140\000\003\000\003\000\003\000\158\000\ \183\000\026\000\003\000\003\000\026\000\003\000\003\000\003\000\ \093\000\093\000\093\000\093\000\093\000\093\000\093\000\093\000\ \093\000\093\000\003\000\184\000\003\000\003\000\003\000\003\000\ \003\000\196\000\173\000\197\000\004\000\173\000\026\000\004\000\ \004\000\004\000\205\000\208\000\212\000\004\000\004\000\172\000\ \004\000\004\000\004\000\122\000\122\000\122\000\122\000\122\000\ \122\000\122\000\122\000\215\000\226\000\004\000\003\000\004\000\ \004\000\004\000\004\000\004\000\254\000\255\000\172\000\005\000\ \172\000\000\001\005\000\005\000\005\000\002\001\004\001\255\255\ \005\000\005\000\231\000\005\000\005\000\005\000\203\000\203\000\ \203\000\203\000\171\000\026\000\003\000\171\000\003\000\255\255\ \005\000\004\000\005\000\005\000\005\000\005\000\005\000\255\255\ \233\000\231\000\006\000\233\000\001\001\006\000\006\000\006\000\ \255\255\255\255\171\000\006\000\006\000\003\001\006\000\006\000\ \006\000\244\000\250\000\251\000\244\000\250\000\251\000\004\000\ \255\255\004\000\255\255\006\000\005\000\006\000\006\000\006\000\ \006\000\006\000\255\255\255\255\255\255\007\000\255\255\255\255\ \007\000\007\000\007\000\255\255\255\255\255\255\007\000\007\000\ \255\255\007\000\007\000\007\000\255\255\255\255\255\255\255\255\ \245\000\255\255\005\000\245\000\005\000\255\255\007\000\006\000\ \007\000\007\000\007\000\007\000\007\000\255\255\255\255\255\255\ \008\000\255\255\008\000\008\000\008\000\008\000\255\255\255\255\ \255\255\008\000\008\000\255\255\008\000\008\000\008\000\255\255\ \255\255\255\255\255\255\255\255\255\255\006\000\255\255\006\000\ \255\255\008\000\007\000\008\000\008\000\008\000\008\000\008\000\ \255\255\255\255\255\255\010\000\255\255\255\255\010\000\010\000\ \010\000\255\255\255\255\255\255\010\000\010\000\255\255\010\000\ \010\000\010\000\255\255\255\255\255\255\255\255\255\255\255\255\ \007\000\255\255\007\000\255\255\010\000\008\000\010\000\010\000\ \010\000\010\000\010\000\255\255\255\255\255\255\218\000\255\255\ \011\000\218\000\255\255\011\000\011\000\011\000\255\255\026\000\ \255\255\011\000\011\000\255\255\011\000\011\000\011\000\255\255\ \255\255\255\255\255\255\008\000\255\255\008\000\218\000\010\000\ \010\000\011\000\245\000\011\000\011\000\011\000\011\000\011\000\ \173\000\255\255\255\255\255\255\255\255\014\000\255\255\255\255\ \014\000\014\000\014\000\255\255\255\255\255\255\014\000\014\000\ \255\255\014\000\014\000\014\000\255\255\255\255\010\000\010\000\ \010\000\255\255\255\255\255\255\011\000\011\000\014\000\255\255\ \014\000\014\000\014\000\014\000\014\000\255\255\255\255\000\001\ \015\000\255\255\255\255\015\000\015\000\015\000\255\255\255\255\ \218\000\015\000\015\000\255\255\015\000\015\000\015\000\255\255\ \171\000\255\255\255\255\011\000\255\255\011\000\255\255\255\255\ \255\255\015\000\014\000\015\000\015\000\015\000\015\000\015\000\ \255\255\255\255\001\001\018\000\255\255\255\255\018\000\018\000\ \018\000\255\255\255\255\003\001\018\000\018\000\255\255\018\000\ \018\000\018\000\255\255\255\255\255\255\255\255\255\255\255\255\ \014\000\255\255\014\000\255\255\018\000\015\000\018\000\018\000\ \018\000\018\000\018\000\255\255\255\255\255\255\022\000\255\255\ \255\255\022\000\022\000\022\000\255\255\255\255\255\255\022\000\ \022\000\255\255\022\000\022\000\022\000\255\255\245\000\255\255\ \255\255\255\255\255\255\015\000\255\255\015\000\255\255\022\000\ \018\000\022\000\022\000\022\000\022\000\022\000\255\255\255\255\ \255\255\023\000\255\255\023\000\023\000\023\000\023\000\255\255\ \255\255\255\255\023\000\023\000\255\255\023\000\023\000\023\000\ \255\255\255\255\255\255\255\255\255\255\255\255\018\000\255\255\ \018\000\255\255\023\000\022\000\023\000\023\000\023\000\023\000\ \023\000\255\255\255\255\255\255\024\000\255\255\255\255\024\000\ \024\000\024\000\255\255\255\255\024\000\024\000\024\000\255\255\ \024\000\024\000\024\000\255\255\255\255\255\255\255\255\255\255\ \255\255\022\000\255\255\022\000\255\255\024\000\023\000\024\000\ \024\000\024\000\024\000\024\000\218\000\255\255\027\000\123\000\ \123\000\123\000\123\000\123\000\123\000\123\000\123\000\123\000\ \123\000\126\000\126\000\126\000\126\000\126\000\126\000\126\000\ \126\000\126\000\126\000\255\255\023\000\027\000\023\000\255\255\ \054\000\024\000\054\000\054\000\054\000\054\000\054\000\054\000\ \054\000\054\000\054\000\054\000\054\000\054\000\054\000\054\000\ \054\000\054\000\054\000\054\000\054\000\054\000\054\000\054\000\ \054\000\054\000\054\000\054\000\255\255\255\255\255\255\024\000\ \027\000\024\000\027\000\027\000\027\000\027\000\027\000\027\000\ \027\000\027\000\027\000\027\000\027\000\027\000\027\000\027\000\ \027\000\027\000\027\000\027\000\027\000\027\000\027\000\027\000\ \027\000\027\000\027\000\027\000\029\000\027\000\255\255\255\255\ \255\255\255\255\255\255\029\000\255\255\029\000\029\000\029\000\ \029\000\029\000\029\000\029\000\029\000\029\000\029\000\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\029\000\029\000\ \029\000\029\000\029\000\029\000\029\000\029\000\029\000\029\000\ \029\000\029\000\029\000\029\000\029\000\029\000\029\000\029\000\ \029\000\029\000\029\000\029\000\029\000\029\000\029\000\029\000\ \255\255\255\255\255\255\255\255\029\000\255\255\029\000\029\000\ \029\000\029\000\029\000\029\000\029\000\029\000\029\000\029\000\ \029\000\029\000\029\000\029\000\029\000\029\000\029\000\029\000\ \029\000\029\000\029\000\029\000\029\000\029\000\029\000\029\000\ \030\000\255\255\255\255\255\255\255\255\255\255\255\255\030\000\ \255\255\030\000\030\000\030\000\030\000\030\000\030\000\030\000\ \030\000\030\000\030\000\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\030\000\030\000\030\000\030\000\030\000\030\000\ \030\000\030\000\030\000\030\000\030\000\030\000\030\000\030\000\ \030\000\030\000\030\000\030\000\030\000\030\000\030\000\030\000\ \030\000\030\000\030\000\030\000\255\255\255\255\255\255\255\255\ \030\000\255\255\030\000\030\000\030\000\030\000\030\000\030\000\ \030\000\030\000\030\000\030\000\030\000\030\000\030\000\030\000\ \030\000\030\000\030\000\030\000\030\000\030\000\030\000\030\000\ \030\000\030\000\030\000\030\000\031\000\129\000\129\000\129\000\ \129\000\129\000\129\000\129\000\129\000\031\000\031\000\031\000\ \031\000\031\000\031\000\031\000\031\000\031\000\031\000\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\031\000\031\000\ \031\000\031\000\031\000\031\000\031\000\031\000\031\000\031\000\ \031\000\031\000\031\000\031\000\031\000\031\000\031\000\031\000\ \031\000\031\000\031\000\031\000\031\000\031\000\031\000\031\000\ \255\255\255\255\255\255\255\255\031\000\255\255\031\000\031\000\ \031\000\031\000\031\000\031\000\031\000\031\000\031\000\031\000\ \031\000\031\000\031\000\031\000\031\000\031\000\031\000\031\000\ \031\000\031\000\031\000\031\000\031\000\031\000\031\000\031\000\ \065\000\255\255\065\000\065\000\065\000\065\000\065\000\065\000\ \065\000\065\000\065\000\065\000\065\000\065\000\065\000\065\000\ \065\000\065\000\065\000\065\000\065\000\065\000\065\000\065\000\ \065\000\065\000\065\000\065\000\097\000\255\255\097\000\097\000\ \097\000\097\000\097\000\097\000\097\000\097\000\097\000\097\000\ \097\000\097\000\097\000\097\000\097\000\097\000\097\000\097\000\ \097\000\097\000\097\000\097\000\097\000\097\000\097\000\097\000\ \255\255\097\000\130\000\130\000\130\000\130\000\130\000\130\000\ \130\000\130\000\255\255\255\255\255\255\031\000\031\000\031\000\ \031\000\031\000\031\000\031\000\031\000\031\000\031\000\031\000\ \031\000\031\000\031\000\031\000\031\000\031\000\031\000\031\000\ \031\000\031\000\031\000\031\000\255\255\031\000\031\000\031\000\ \031\000\031\000\031\000\031\000\031\000\031\000\031\000\031\000\ \031\000\031\000\031\000\031\000\031\000\031\000\031\000\031\000\ \031\000\031\000\031\000\031\000\031\000\031\000\031\000\031\000\ \031\000\031\000\031\000\031\000\032\000\031\000\031\000\031\000\ \031\000\031\000\031\000\031\000\031\000\032\000\032\000\032\000\ \032\000\032\000\032\000\032\000\032\000\032\000\032\000\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\032\000\032\000\ \032\000\032\000\032\000\032\000\032\000\032\000\032\000\032\000\ \032\000\032\000\032\000\032\000\032\000\032\000\032\000\032\000\ \032\000\032\000\032\000\032\000\032\000\032\000\032\000\032\000\ \255\255\255\255\255\255\255\255\032\000\255\255\032\000\032\000\ \032\000\032\000\032\000\032\000\032\000\032\000\032\000\032\000\ \032\000\032\000\032\000\032\000\032\000\032\000\032\000\032\000\ \032\000\032\000\032\000\032\000\032\000\032\000\032\000\032\000\ \255\255\072\000\255\255\255\255\072\000\072\000\072\000\255\255\ \255\255\255\255\072\000\072\000\255\255\072\000\255\255\072\000\ \204\000\204\000\204\000\204\000\204\000\204\000\204\000\204\000\ \204\000\204\000\072\000\255\255\255\255\072\000\072\000\072\000\ \072\000\255\255\105\000\255\255\105\000\105\000\105\000\105\000\ \105\000\105\000\105\000\105\000\105\000\105\000\105\000\105\000\ \105\000\105\000\105\000\105\000\105\000\105\000\105\000\105\000\ \105\000\105\000\105\000\105\000\105\000\105\000\072\000\105\000\ \255\255\255\255\255\255\255\255\255\255\032\000\032\000\032\000\ \032\000\032\000\032\000\032\000\032\000\032\000\032\000\032\000\ \032\000\032\000\032\000\032\000\032\000\032\000\032\000\032\000\ \032\000\032\000\032\000\032\000\072\000\032\000\032\000\032\000\ \032\000\032\000\032\000\032\000\032\000\032\000\032\000\032\000\ \032\000\032\000\032\000\032\000\032\000\032\000\032\000\032\000\ \032\000\032\000\032\000\032\000\032\000\032\000\032\000\032\000\ \032\000\032\000\032\000\032\000\033\000\032\000\032\000\032\000\ \032\000\032\000\032\000\032\000\032\000\033\000\033\000\033\000\ \033\000\033\000\033\000\033\000\033\000\033\000\033\000\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\033\000\033\000\ \033\000\033\000\033\000\033\000\033\000\033\000\033\000\033\000\ \033\000\033\000\033\000\033\000\033\000\033\000\033\000\033\000\ \033\000\033\000\033\000\033\000\033\000\033\000\033\000\033\000\ \255\255\255\255\255\255\255\255\033\000\255\255\033\000\033\000\ \033\000\033\000\033\000\033\000\033\000\033\000\033\000\033\000\ \033\000\033\000\033\000\033\000\033\000\033\000\033\000\033\000\ \033\000\033\000\033\000\033\000\033\000\033\000\033\000\033\000\ \255\255\075\000\255\255\255\255\075\000\075\000\075\000\255\255\ \255\255\255\255\075\000\075\000\255\255\075\000\255\255\075\000\ \207\000\207\000\207\000\207\000\207\000\207\000\207\000\207\000\ \207\000\207\000\075\000\255\255\255\255\075\000\075\000\075\000\ \075\000\255\255\112\000\255\255\112\000\112\000\112\000\112\000\ \112\000\112\000\112\000\112\000\112\000\112\000\112\000\112\000\ \112\000\112\000\112\000\112\000\112\000\112\000\112\000\112\000\ \112\000\112\000\112\000\112\000\112\000\112\000\075\000\112\000\ \255\255\255\255\255\255\255\255\255\255\033\000\033\000\033\000\ \033\000\033\000\033\000\033\000\033\000\033\000\033\000\033\000\ \033\000\033\000\033\000\033\000\033\000\033\000\033\000\033\000\ \033\000\033\000\033\000\033\000\075\000\033\000\033\000\033\000\ \033\000\033\000\033\000\033\000\033\000\033\000\033\000\033\000\ \033\000\033\000\033\000\033\000\033\000\033\000\033\000\033\000\ \033\000\033\000\033\000\033\000\033\000\033\000\033\000\033\000\ \033\000\033\000\033\000\033\000\034\000\033\000\033\000\033\000\ \033\000\033\000\033\000\033\000\033\000\034\000\034\000\034\000\ \034\000\034\000\034\000\034\000\034\000\034\000\034\000\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\034\000\034\000\ \034\000\034\000\034\000\034\000\034\000\034\000\034\000\034\000\ \034\000\034\000\034\000\034\000\034\000\034\000\034\000\034\000\ \034\000\034\000\034\000\034\000\034\000\034\000\034\000\034\000\ \255\255\255\255\255\255\255\255\034\000\095\000\034\000\034\000\ \034\000\034\000\034\000\034\000\034\000\034\000\034\000\034\000\ \034\000\034\000\034\000\034\000\034\000\034\000\034\000\034\000\ \034\000\034\000\034\000\034\000\034\000\034\000\034\000\034\000\ \255\255\095\000\095\000\095\000\095\000\095\000\095\000\095\000\ \095\000\095\000\095\000\095\000\095\000\095\000\095\000\095\000\ \095\000\095\000\095\000\095\000\095\000\095\000\095\000\095\000\ \095\000\095\000\095\000\255\255\255\255\255\255\255\255\095\000\ \255\255\095\000\095\000\095\000\095\000\095\000\095\000\095\000\ \095\000\095\000\095\000\095\000\095\000\095\000\095\000\095\000\ \095\000\095\000\095\000\095\000\095\000\095\000\095\000\095\000\ \095\000\095\000\095\000\210\000\210\000\210\000\210\000\210\000\ \210\000\210\000\210\000\255\255\255\255\034\000\034\000\034\000\ \034\000\034\000\034\000\034\000\034\000\034\000\034\000\034\000\ \034\000\034\000\034\000\034\000\034\000\034\000\034\000\034\000\ \034\000\034\000\034\000\034\000\255\255\034\000\034\000\034\000\ \034\000\034\000\034\000\034\000\034\000\034\000\034\000\034\000\ \034\000\034\000\034\000\034\000\034\000\034\000\034\000\034\000\ \034\000\034\000\034\000\034\000\034\000\034\000\034\000\034\000\ \034\000\034\000\034\000\034\000\035\000\034\000\034\000\034\000\ \034\000\034\000\034\000\034\000\034\000\035\000\035\000\035\000\ \035\000\035\000\035\000\035\000\035\000\035\000\035\000\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\035\000\035\000\ \035\000\035\000\035\000\035\000\035\000\035\000\035\000\035\000\ \035\000\035\000\035\000\035\000\035\000\035\000\035\000\035\000\ \035\000\035\000\035\000\035\000\035\000\035\000\035\000\035\000\ \255\255\255\255\255\255\255\255\035\000\255\255\035\000\035\000\ \035\000\035\000\035\000\035\000\035\000\035\000\035\000\035\000\ \035\000\035\000\035\000\035\000\035\000\035\000\035\000\035\000\ \035\000\035\000\035\000\035\000\035\000\035\000\035\000\035\000\ \098\000\098\000\098\000\098\000\098\000\098\000\098\000\098\000\ \098\000\098\000\098\000\098\000\098\000\098\000\098\000\098\000\ \098\000\098\000\098\000\098\000\098\000\098\000\098\000\098\000\ \098\000\098\000\255\255\255\255\255\255\255\255\098\000\255\255\ \098\000\098\000\098\000\098\000\098\000\098\000\098\000\098\000\ \098\000\098\000\098\000\098\000\098\000\098\000\098\000\098\000\ \098\000\098\000\098\000\098\000\098\000\098\000\098\000\098\000\ \098\000\098\000\211\000\211\000\211\000\211\000\211\000\211\000\ \211\000\211\000\255\255\255\255\255\255\035\000\035\000\035\000\ \035\000\035\000\035\000\035\000\035\000\035\000\035\000\035\000\ \035\000\035\000\035\000\035\000\035\000\035\000\035\000\035\000\ \035\000\035\000\035\000\035\000\255\255\035\000\035\000\035\000\ \035\000\035\000\035\000\035\000\035\000\035\000\035\000\035\000\ \035\000\035\000\035\000\035\000\035\000\035\000\035\000\035\000\ \035\000\035\000\035\000\035\000\035\000\035\000\035\000\035\000\ \035\000\035\000\035\000\035\000\036\000\035\000\035\000\035\000\ \035\000\035\000\035\000\035\000\035\000\036\000\036\000\036\000\ \036\000\036\000\036\000\036\000\036\000\036\000\036\000\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\036\000\036\000\ \036\000\036\000\036\000\036\000\036\000\036\000\036\000\036\000\ \036\000\036\000\036\000\036\000\036\000\036\000\036\000\036\000\ \036\000\036\000\036\000\036\000\036\000\036\000\036\000\036\000\ \255\255\255\255\255\255\255\255\036\000\255\255\036\000\036\000\ \036\000\036\000\036\000\036\000\036\000\036\000\036\000\036\000\ \036\000\036\000\036\000\036\000\036\000\036\000\036\000\036\000\ \036\000\036\000\036\000\036\000\036\000\036\000\036\000\036\000\ \102\000\102\000\102\000\102\000\102\000\102\000\102\000\102\000\ \102\000\102\000\102\000\102\000\102\000\102\000\102\000\102\000\ \102\000\102\000\102\000\102\000\102\000\102\000\102\000\102\000\ \102\000\102\000\255\255\255\255\255\255\255\255\102\000\255\255\ \102\000\102\000\102\000\102\000\102\000\102\000\102\000\102\000\ \102\000\102\000\102\000\102\000\102\000\102\000\102\000\102\000\ \102\000\102\000\102\000\102\000\102\000\102\000\102\000\102\000\ \102\000\102\000\228\000\228\000\228\000\228\000\228\000\228\000\ \228\000\228\000\255\255\255\255\255\255\036\000\036\000\036\000\ \036\000\036\000\036\000\036\000\036\000\036\000\036\000\036\000\ \036\000\036\000\036\000\036\000\036\000\036\000\036\000\036\000\ \036\000\036\000\036\000\036\000\255\255\036\000\036\000\036\000\ \036\000\036\000\036\000\036\000\036\000\036\000\036\000\036\000\ \036\000\036\000\036\000\036\000\036\000\036\000\036\000\036\000\ \036\000\036\000\036\000\036\000\036\000\036\000\036\000\036\000\ \036\000\036\000\036\000\036\000\255\255\036\000\036\000\036\000\ \036\000\036\000\036\000\036\000\036\000\037\000\169\000\037\000\ \037\000\037\000\037\000\255\255\255\255\255\255\037\000\037\000\ \255\255\037\000\037\000\037\000\236\000\236\000\236\000\236\000\ \236\000\236\000\236\000\236\000\255\255\169\000\037\000\255\255\ \037\000\037\000\037\000\037\000\037\000\237\000\237\000\237\000\ \237\000\237\000\237\000\237\000\237\000\169\000\169\000\169\000\ \169\000\169\000\169\000\169\000\169\000\169\000\169\000\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \037\000\255\255\037\000\037\000\255\255\037\000\037\000\037\000\ \037\000\037\000\037\000\037\000\037\000\037\000\037\000\037\000\ \037\000\037\000\037\000\037\000\037\000\037\000\037\000\037\000\ \037\000\037\000\037\000\037\000\037\000\037\000\037\000\255\255\ \037\000\038\000\037\000\255\255\038\000\038\000\038\000\048\000\ \255\255\255\255\038\000\038\000\255\255\038\000\038\000\038\000\ \048\000\048\000\048\000\048\000\048\000\048\000\048\000\048\000\ \048\000\048\000\038\000\255\255\255\255\038\000\038\000\038\000\ \038\000\048\000\048\000\048\000\048\000\048\000\048\000\048\000\ \048\000\048\000\048\000\048\000\048\000\048\000\048\000\048\000\ \048\000\048\000\048\000\048\000\048\000\048\000\048\000\048\000\ \048\000\048\000\048\000\255\255\255\255\255\255\038\000\048\000\ \255\255\048\000\048\000\048\000\048\000\048\000\048\000\048\000\ \048\000\048\000\048\000\048\000\048\000\048\000\048\000\048\000\ \048\000\048\000\048\000\048\000\048\000\048\000\048\000\048\000\ \048\000\048\000\048\000\255\255\038\000\255\255\038\000\255\255\ \255\255\255\255\255\255\037\000\037\000\037\000\037\000\037\000\ \037\000\037\000\037\000\037\000\037\000\037\000\037\000\037\000\ \037\000\037\000\037\000\037\000\037\000\037\000\037\000\037\000\ \037\000\037\000\037\000\255\255\037\000\037\000\037\000\037\000\ \037\000\037\000\037\000\037\000\039\000\170\000\039\000\039\000\ \039\000\039\000\255\255\255\255\255\255\039\000\039\000\255\255\ \039\000\039\000\039\000\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\170\000\039\000\170\000\039\000\ \039\000\039\000\039\000\039\000\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\170\000\170\000\170\000\170\000\ \170\000\170\000\170\000\170\000\170\000\170\000\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\039\000\ \255\255\039\000\039\000\255\255\039\000\039\000\039\000\039\000\ \039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\ \039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\ \039\000\039\000\039\000\039\000\039\000\039\000\040\000\039\000\ \255\255\039\000\255\255\255\255\255\255\255\255\255\255\040\000\ \040\000\040\000\040\000\040\000\040\000\040\000\040\000\040\000\ \040\000\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \040\000\040\000\040\000\040\000\040\000\040\000\040\000\040\000\ \040\000\040\000\040\000\040\000\040\000\040\000\040\000\040\000\ \040\000\040\000\040\000\040\000\040\000\040\000\040\000\040\000\ \040\000\040\000\255\255\255\255\255\255\255\255\040\000\255\255\ \040\000\040\000\040\000\040\000\040\000\040\000\040\000\040\000\ \040\000\040\000\040\000\040\000\040\000\040\000\040\000\040\000\ \040\000\040\000\040\000\040\000\040\000\040\000\040\000\040\000\ \040\000\040\000\229\000\229\000\229\000\229\000\229\000\229\000\ \229\000\229\000\229\000\229\000\255\255\255\255\255\255\255\255\ \255\255\255\255\039\000\039\000\039\000\039\000\039\000\039\000\ \039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\ \039\000\039\000\039\000\039\000\039\000\039\000\039\000\039\000\ \039\000\039\000\255\255\039\000\039\000\039\000\039\000\039\000\ \039\000\039\000\039\000\234\000\234\000\234\000\234\000\234\000\ \234\000\234\000\234\000\234\000\234\000\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\040\000\ \040\000\040\000\040\000\040\000\040\000\040\000\040\000\040\000\ \040\000\040\000\040\000\040\000\040\000\040\000\040\000\040\000\ \040\000\040\000\040\000\040\000\040\000\040\000\255\255\040\000\ \040\000\040\000\040\000\040\000\040\000\040\000\040\000\040\000\ \040\000\040\000\040\000\040\000\040\000\040\000\040\000\040\000\ \040\000\040\000\040\000\040\000\040\000\040\000\040\000\040\000\ \040\000\040\000\040\000\040\000\040\000\040\000\255\255\040\000\ \040\000\040\000\040\000\040\000\040\000\040\000\040\000\050\000\ \255\255\050\000\050\000\050\000\050\000\255\255\255\255\255\255\ \050\000\050\000\255\255\050\000\050\000\050\000\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \050\000\255\255\050\000\050\000\050\000\050\000\050\000\255\255\ \255\255\100\000\255\255\051\000\100\000\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\051\000\051\000\051\000\051\000\ \051\000\051\000\051\000\051\000\051\000\051\000\051\000\255\255\ \100\000\255\255\255\255\255\255\050\000\051\000\051\000\051\000\ \051\000\051\000\051\000\051\000\051\000\051\000\051\000\051\000\ \051\000\051\000\051\000\051\000\051\000\051\000\051\000\051\000\ \051\000\051\000\051\000\051\000\051\000\051\000\051\000\255\255\ \255\255\181\000\050\000\051\000\050\000\051\000\051\000\051\000\ \051\000\051\000\051\000\051\000\051\000\051\000\051\000\051\000\ \051\000\051\000\051\000\051\000\051\000\051\000\051\000\051\000\ \051\000\051\000\051\000\051\000\051\000\051\000\051\000\100\000\ \255\255\100\000\100\000\100\000\100\000\100\000\100\000\100\000\ \100\000\100\000\100\000\100\000\100\000\100\000\100\000\100\000\ \100\000\100\000\100\000\100\000\100\000\100\000\100\000\100\000\ \100\000\100\000\100\000\181\000\100\000\181\000\181\000\181\000\ \181\000\181\000\181\000\181\000\181\000\181\000\181\000\181\000\ \181\000\181\000\181\000\181\000\181\000\181\000\181\000\181\000\ \181\000\181\000\181\000\181\000\181\000\181\000\181\000\255\255\ \181\000\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\051\000\051\000\051\000\051\000\ \051\000\051\000\051\000\051\000\051\000\051\000\051\000\051\000\ \051\000\051\000\051\000\051\000\051\000\051\000\051\000\051\000\ \051\000\051\000\051\000\255\255\051\000\051\000\051\000\051\000\ \051\000\051\000\051\000\051\000\051\000\051\000\051\000\051\000\ \051\000\051\000\051\000\051\000\051\000\051\000\051\000\051\000\ \051\000\051\000\051\000\051\000\051\000\051\000\051\000\051\000\ \051\000\051\000\051\000\052\000\051\000\051\000\051\000\051\000\ \051\000\051\000\051\000\051\000\052\000\052\000\052\000\052\000\ \052\000\052\000\052\000\052\000\052\000\052\000\052\000\255\255\ \255\255\255\255\255\255\255\255\255\255\052\000\052\000\052\000\ \052\000\052\000\052\000\052\000\052\000\052\000\052\000\052\000\ \052\000\052\000\052\000\052\000\052\000\052\000\052\000\052\000\ \052\000\052\000\052\000\052\000\052\000\052\000\052\000\255\255\ \255\255\255\255\255\255\052\000\255\255\052\000\052\000\052\000\ \052\000\052\000\052\000\052\000\052\000\052\000\052\000\052\000\ \052\000\052\000\052\000\052\000\052\000\052\000\052\000\052\000\ \052\000\052\000\052\000\052\000\052\000\052\000\052\000\109\000\ \109\000\109\000\109\000\109\000\109\000\109\000\109\000\109\000\ \109\000\109\000\109\000\109\000\109\000\109\000\109\000\109\000\ \109\000\109\000\109\000\109\000\109\000\109\000\109\000\109\000\ \109\000\255\255\255\255\255\255\255\255\109\000\255\255\109\000\ \109\000\109\000\109\000\109\000\109\000\109\000\109\000\109\000\ \109\000\109\000\109\000\109\000\109\000\109\000\109\000\109\000\ \109\000\109\000\109\000\109\000\109\000\109\000\109\000\109\000\ \109\000\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\052\000\052\000\052\000\052\000\ \052\000\052\000\052\000\052\000\052\000\052\000\052\000\052\000\ \052\000\052\000\052\000\052\000\052\000\052\000\052\000\052\000\ \052\000\052\000\052\000\255\255\052\000\052\000\052\000\052\000\ \052\000\052\000\052\000\052\000\052\000\052\000\052\000\052\000\ \052\000\052\000\052\000\052\000\052\000\052\000\052\000\052\000\ \052\000\052\000\052\000\052\000\052\000\052\000\052\000\052\000\ \052\000\052\000\052\000\055\000\052\000\052\000\052\000\052\000\ \052\000\052\000\052\000\052\000\055\000\055\000\055\000\055\000\ \055\000\055\000\055\000\055\000\055\000\055\000\055\000\255\255\ \255\255\255\255\255\255\255\255\255\255\055\000\055\000\055\000\ \055\000\055\000\055\000\055\000\055\000\055\000\055\000\055\000\ \055\000\055\000\055\000\055\000\055\000\055\000\055\000\055\000\ \055\000\055\000\055\000\055\000\055\000\055\000\055\000\255\255\ \255\255\255\255\255\255\055\000\255\255\055\000\055\000\055\000\ \055\000\055\000\055\000\055\000\055\000\055\000\055\000\055\000\ \055\000\055\000\055\000\055\000\055\000\055\000\055\000\055\000\ \055\000\055\000\055\000\055\000\055\000\055\000\055\000\059\000\ \255\255\255\255\059\000\059\000\059\000\255\255\255\255\255\255\ \059\000\059\000\255\255\059\000\059\000\059\000\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \059\000\255\255\059\000\059\000\059\000\059\000\059\000\255\255\ \255\255\107\000\255\255\062\000\107\000\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\062\000\062\000\062\000\062\000\ \062\000\062\000\062\000\062\000\062\000\062\000\062\000\255\255\ \107\000\255\255\255\255\255\255\059\000\062\000\062\000\062\000\ \062\000\062\000\062\000\062\000\062\000\062\000\062\000\062\000\ \062\000\062\000\062\000\062\000\062\000\062\000\062\000\062\000\ \062\000\062\000\062\000\062\000\062\000\062\000\062\000\255\255\ \255\255\255\255\059\000\062\000\059\000\062\000\062\000\062\000\ \062\000\062\000\062\000\062\000\062\000\062\000\062\000\062\000\ \062\000\062\000\062\000\062\000\062\000\062\000\062\000\062\000\ \062\000\062\000\062\000\062\000\062\000\062\000\062\000\107\000\ \255\255\107\000\107\000\107\000\107\000\107\000\107\000\107\000\ \107\000\107\000\107\000\107\000\107\000\107\000\107\000\107\000\ \107\000\107\000\107\000\107\000\107\000\107\000\107\000\107\000\ \107\000\107\000\107\000\188\000\107\000\188\000\188\000\188\000\ \188\000\188\000\188\000\188\000\188\000\188\000\188\000\188\000\ \188\000\188\000\188\000\188\000\188\000\188\000\188\000\188\000\ \188\000\188\000\188\000\188\000\188\000\188\000\188\000\255\255\ \188\000\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\062\000\062\000\062\000\062\000\ \062\000\062\000\062\000\062\000\062\000\062\000\062\000\062\000\ \062\000\062\000\062\000\062\000\062\000\062\000\062\000\062\000\ \062\000\062\000\062\000\255\255\062\000\062\000\062\000\062\000\ \062\000\062\000\062\000\062\000\062\000\062\000\062\000\062\000\ \062\000\062\000\062\000\062\000\062\000\062\000\062\000\062\000\ \062\000\062\000\062\000\062\000\062\000\062\000\062\000\062\000\ \062\000\062\000\062\000\063\000\062\000\062\000\062\000\062\000\ \062\000\062\000\062\000\062\000\063\000\063\000\063\000\063\000\ \063\000\063\000\063\000\063\000\063\000\063\000\063\000\255\255\ \255\255\255\255\255\255\255\255\255\255\063\000\063\000\063\000\ \063\000\063\000\063\000\063\000\063\000\063\000\063\000\063\000\ \063\000\063\000\063\000\063\000\063\000\063\000\063\000\063\000\ \063\000\063\000\063\000\063\000\063\000\063\000\063\000\255\255\ \255\255\255\255\255\255\063\000\255\255\063\000\063\000\063\000\ \063\000\063\000\063\000\063\000\063\000\063\000\063\000\063\000\ \063\000\063\000\063\000\063\000\063\000\063\000\063\000\063\000\ \063\000\063\000\063\000\063\000\063\000\063\000\063\000\121\000\ \121\000\121\000\121\000\121\000\121\000\121\000\121\000\121\000\ \121\000\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \121\000\121\000\121\000\121\000\121\000\121\000\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \121\000\121\000\121\000\121\000\121\000\121\000\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\063\000\063\000\063\000\063\000\ \063\000\063\000\063\000\063\000\063\000\063\000\063\000\063\000\ \063\000\063\000\063\000\063\000\063\000\063\000\063\000\063\000\ \063\000\063\000\063\000\255\255\063\000\063\000\063\000\063\000\ \063\000\063\000\063\000\063\000\063\000\063\000\063\000\063\000\ \063\000\063\000\063\000\063\000\063\000\063\000\063\000\063\000\ \063\000\063\000\063\000\063\000\063\000\063\000\063\000\063\000\ \063\000\063\000\063\000\066\000\063\000\063\000\063\000\063\000\ \063\000\063\000\063\000\063\000\066\000\066\000\066\000\066\000\ \066\000\066\000\066\000\066\000\066\000\066\000\066\000\255\255\ \255\255\255\255\255\255\255\255\255\255\066\000\066\000\066\000\ \066\000\066\000\066\000\066\000\066\000\066\000\066\000\066\000\ \066\000\066\000\066\000\066\000\066\000\066\000\066\000\066\000\ \066\000\066\000\066\000\066\000\066\000\066\000\066\000\255\255\ \255\255\255\255\255\255\066\000\255\255\066\000\066\000\066\000\ \066\000\066\000\066\000\066\000\066\000\066\000\066\000\066\000\ \066\000\066\000\066\000\066\000\066\000\066\000\066\000\066\000\ \066\000\066\000\066\000\066\000\066\000\066\000\066\000\070\000\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \070\000\070\000\070\000\070\000\070\000\070\000\070\000\070\000\ \070\000\070\000\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\070\000\070\000\070\000\070\000\070\000\070\000\070\000\ \070\000\070\000\070\000\070\000\070\000\070\000\070\000\070\000\ \070\000\070\000\070\000\070\000\070\000\070\000\070\000\070\000\ \070\000\070\000\070\000\255\255\255\255\255\255\255\255\070\000\ \255\255\070\000\070\000\070\000\070\000\070\000\070\000\070\000\ \070\000\070\000\070\000\070\000\070\000\070\000\070\000\070\000\ \070\000\070\000\070\000\070\000\070\000\070\000\070\000\070\000\ \070\000\070\000\070\000\133\000\133\000\133\000\133\000\133\000\ \133\000\133\000\133\000\133\000\133\000\180\000\255\255\255\255\ \180\000\255\255\255\255\255\255\133\000\133\000\133\000\133\000\ \133\000\133\000\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\180\000\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\133\000\133\000\133\000\133\000\ \133\000\133\000\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \070\000\070\000\070\000\070\000\070\000\070\000\070\000\070\000\ \070\000\070\000\070\000\070\000\070\000\070\000\070\000\070\000\ \070\000\070\000\070\000\070\000\070\000\070\000\070\000\180\000\ \070\000\070\000\070\000\070\000\070\000\070\000\070\000\070\000\ \070\000\070\000\070\000\070\000\070\000\070\000\070\000\070\000\ \070\000\070\000\070\000\070\000\070\000\070\000\070\000\070\000\ \070\000\070\000\070\000\070\000\070\000\070\000\070\000\255\255\ \070\000\070\000\070\000\070\000\070\000\070\000\070\000\070\000\ \071\000\255\255\071\000\071\000\255\255\255\255\071\000\071\000\ \255\255\071\000\255\255\071\000\071\000\071\000\071\000\071\000\ \071\000\071\000\071\000\071\000\071\000\071\000\255\255\255\255\ \071\000\071\000\071\000\255\255\071\000\071\000\071\000\071\000\ \071\000\071\000\071\000\071\000\071\000\071\000\071\000\071\000\ \071\000\071\000\071\000\071\000\071\000\071\000\071\000\071\000\ \071\000\071\000\071\000\071\000\071\000\071\000\071\000\255\255\ \255\255\255\255\071\000\071\000\255\255\071\000\071\000\071\000\ \071\000\071\000\071\000\071\000\071\000\071\000\071\000\071\000\ \071\000\071\000\071\000\071\000\071\000\071\000\071\000\071\000\ \071\000\071\000\071\000\071\000\071\000\071\000\071\000\255\255\ \071\000\255\255\255\255\255\255\191\000\191\000\191\000\191\000\ \191\000\191\000\191\000\191\000\191\000\191\000\191\000\191\000\ \191\000\191\000\191\000\191\000\191\000\191\000\191\000\191\000\ \191\000\191\000\191\000\191\000\191\000\191\000\255\255\255\255\ \255\255\255\255\191\000\180\000\191\000\191\000\191\000\191\000\ \191\000\191\000\191\000\191\000\191\000\191\000\191\000\191\000\ \191\000\191\000\191\000\191\000\191\000\191\000\191\000\191\000\ \191\000\191\000\191\000\191\000\191\000\191\000\255\255\255\255\ \255\255\255\255\255\255\255\255\071\000\071\000\071\000\071\000\ \071\000\071\000\071\000\071\000\071\000\071\000\071\000\071\000\ \071\000\071\000\071\000\071\000\071\000\071\000\071\000\071\000\ \071\000\071\000\071\000\255\255\071\000\071\000\071\000\071\000\ \071\000\071\000\071\000\071\000\071\000\071\000\071\000\071\000\ \071\000\071\000\071\000\071\000\071\000\071\000\071\000\071\000\ \071\000\071\000\071\000\071\000\071\000\071\000\071\000\071\000\ \071\000\071\000\071\000\073\000\071\000\071\000\071\000\071\000\ \071\000\071\000\071\000\071\000\073\000\073\000\073\000\073\000\ \073\000\073\000\073\000\073\000\073\000\073\000\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\073\000\073\000\073\000\ \073\000\073\000\073\000\073\000\073\000\073\000\073\000\073\000\ \073\000\073\000\073\000\073\000\073\000\073\000\073\000\073\000\ \073\000\073\000\073\000\073\000\073\000\073\000\073\000\255\255\ \255\255\255\255\255\255\073\000\189\000\073\000\073\000\073\000\ \073\000\073\000\073\000\073\000\073\000\073\000\073\000\073\000\ \073\000\073\000\073\000\073\000\073\000\073\000\073\000\073\000\ \073\000\073\000\073\000\073\000\073\000\073\000\073\000\255\255\ \189\000\189\000\189\000\189\000\189\000\189\000\189\000\189\000\ \189\000\189\000\189\000\189\000\189\000\189\000\189\000\189\000\ \189\000\189\000\189\000\189\000\189\000\189\000\189\000\189\000\ \189\000\189\000\255\255\255\255\255\255\255\255\189\000\255\255\ \189\000\189\000\189\000\189\000\189\000\189\000\189\000\189\000\ \189\000\189\000\189\000\189\000\189\000\189\000\189\000\189\000\ \189\000\189\000\189\000\189\000\189\000\189\000\189\000\189\000\ \189\000\189\000\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\073\000\073\000\073\000\073\000\ \073\000\073\000\073\000\073\000\073\000\073\000\073\000\073\000\ \073\000\073\000\073\000\073\000\073\000\073\000\073\000\073\000\ \073\000\073\000\073\000\255\255\073\000\073\000\073\000\073\000\ \073\000\073\000\073\000\073\000\073\000\073\000\073\000\073\000\ \073\000\073\000\073\000\073\000\073\000\073\000\073\000\073\000\ \073\000\073\000\073\000\073\000\073\000\073\000\073\000\073\000\ \073\000\073\000\073\000\255\255\073\000\073\000\073\000\073\000\ \073\000\073\000\073\000\073\000\074\000\255\255\074\000\074\000\ \255\255\255\255\074\000\074\000\255\255\074\000\255\255\074\000\ \074\000\074\000\074\000\074\000\074\000\074\000\074\000\074\000\ \074\000\074\000\255\255\255\255\074\000\074\000\074\000\255\255\ \074\000\074\000\074\000\074\000\074\000\074\000\074\000\074\000\ \074\000\074\000\074\000\074\000\074\000\074\000\074\000\074\000\ \074\000\074\000\074\000\074\000\074\000\074\000\074\000\074\000\ \074\000\074\000\074\000\255\255\255\255\255\255\074\000\074\000\ \255\255\074\000\074\000\074\000\074\000\074\000\074\000\074\000\ \074\000\074\000\074\000\074\000\074\000\074\000\074\000\074\000\ \074\000\074\000\074\000\074\000\074\000\074\000\074\000\074\000\ \074\000\074\000\074\000\255\255\074\000\193\000\193\000\193\000\ \193\000\193\000\193\000\193\000\193\000\193\000\193\000\193\000\ \193\000\193\000\193\000\193\000\193\000\193\000\193\000\193\000\ \193\000\193\000\193\000\193\000\193\000\193\000\193\000\255\255\ \255\255\255\255\255\255\193\000\255\255\193\000\193\000\193\000\ \193\000\193\000\193\000\193\000\193\000\193\000\193\000\193\000\ \193\000\193\000\193\000\193\000\193\000\193\000\193\000\193\000\ \193\000\193\000\193\000\193\000\193\000\193\000\193\000\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \074\000\074\000\074\000\074\000\074\000\074\000\074\000\074\000\ \074\000\074\000\074\000\074\000\074\000\074\000\074\000\074\000\ \074\000\074\000\074\000\074\000\074\000\074\000\074\000\255\255\ \074\000\074\000\074\000\074\000\074\000\074\000\074\000\074\000\ \074\000\074\000\074\000\074\000\074\000\074\000\074\000\074\000\ \074\000\074\000\074\000\074\000\074\000\074\000\074\000\074\000\ \074\000\074\000\074\000\074\000\074\000\074\000\074\000\076\000\ \074\000\074\000\074\000\074\000\074\000\074\000\074\000\074\000\ \076\000\076\000\076\000\076\000\076\000\076\000\076\000\076\000\ \076\000\076\000\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\076\000\076\000\076\000\076\000\076\000\076\000\076\000\ \076\000\076\000\076\000\076\000\076\000\076\000\076\000\076\000\ \076\000\076\000\076\000\076\000\076\000\076\000\076\000\076\000\ \076\000\076\000\076\000\255\255\255\255\255\255\255\255\076\000\ \255\255\076\000\076\000\076\000\076\000\076\000\076\000\076\000\ \076\000\076\000\076\000\076\000\076\000\076\000\076\000\076\000\ \076\000\076\000\076\000\076\000\076\000\076\000\076\000\076\000\ \076\000\076\000\076\000\077\000\255\255\255\255\255\255\077\000\ \255\255\077\000\255\255\255\255\077\000\077\000\077\000\077\000\ \077\000\077\000\077\000\077\000\077\000\077\000\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\077\000\077\000\077\000\ \077\000\077\000\077\000\077\000\077\000\077\000\077\000\077\000\ \077\000\077\000\077\000\077\000\077\000\077\000\077\000\077\000\ \077\000\077\000\077\000\077\000\077\000\077\000\077\000\255\255\ \255\255\255\255\255\255\077\000\255\255\077\000\077\000\077\000\ \077\000\077\000\077\000\077\000\077\000\077\000\077\000\077\000\ \077\000\077\000\077\000\077\000\077\000\077\000\077\000\077\000\ \077\000\077\000\077\000\077\000\077\000\077\000\077\000\078\000\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \078\000\078\000\078\000\078\000\078\000\078\000\078\000\078\000\ \078\000\078\000\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\078\000\078\000\078\000\078\000\078\000\078\000\078\000\ \078\000\078\000\078\000\078\000\078\000\078\000\078\000\078\000\ \078\000\078\000\078\000\078\000\078\000\078\000\078\000\078\000\ \078\000\078\000\078\000\255\255\255\255\255\255\255\255\078\000\ \255\255\078\000\078\000\078\000\078\000\078\000\078\000\078\000\ \078\000\078\000\078\000\078\000\078\000\078\000\078\000\078\000\ \078\000\078\000\078\000\078\000\078\000\078\000\078\000\078\000\ \078\000\078\000\078\000\079\000\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\079\000\079\000\079\000\079\000\ \079\000\079\000\079\000\079\000\079\000\079\000\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\079\000\079\000\079\000\ \079\000\079\000\079\000\079\000\079\000\079\000\079\000\079\000\ \079\000\079\000\079\000\079\000\079\000\079\000\079\000\079\000\ \079\000\079\000\079\000\079\000\079\000\079\000\079\000\255\255\ \255\255\255\255\255\255\079\000\255\255\079\000\079\000\079\000\ \079\000\079\000\079\000\079\000\079\000\079\000\079\000\079\000\ \079\000\079\000\079\000\079\000\079\000\079\000\079\000\079\000\ \079\000\079\000\079\000\079\000\079\000\079\000\079\000\080\000\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \080\000\080\000\080\000\080\000\080\000\080\000\080\000\080\000\ \080\000\080\000\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\080\000\080\000\080\000\080\000\080\000\080\000\080\000\ \080\000\080\000\080\000\080\000\080\000\080\000\080\000\080\000\ \080\000\080\000\080\000\080\000\080\000\080\000\080\000\080\000\ \080\000\080\000\080\000\255\255\255\255\255\255\255\255\080\000\ \255\255\080\000\080\000\080\000\080\000\080\000\080\000\080\000\ \080\000\080\000\080\000\080\000\080\000\080\000\080\000\080\000\ \080\000\080\000\080\000\080\000\080\000\080\000\080\000\080\000\ \080\000\080\000\080\000\081\000\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\081\000\081\000\081\000\081\000\ \081\000\081\000\081\000\081\000\081\000\081\000\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\081\000\081\000\081\000\ \081\000\081\000\081\000\081\000\081\000\081\000\081\000\081\000\ \081\000\081\000\081\000\081\000\081\000\081\000\081\000\081\000\ \081\000\081\000\081\000\081\000\081\000\081\000\081\000\255\255\ \255\255\255\255\255\255\081\000\255\255\081\000\081\000\081\000\ \081\000\081\000\081\000\081\000\081\000\081\000\081\000\081\000\ \081\000\081\000\081\000\081\000\081\000\081\000\081\000\081\000\ \081\000\081\000\081\000\081\000\081\000\081\000\081\000\082\000\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \082\000\082\000\082\000\082\000\082\000\082\000\082\000\082\000\ \082\000\082\000\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\082\000\082\000\082\000\082\000\082\000\082\000\082\000\ \082\000\082\000\082\000\082\000\082\000\082\000\082\000\082\000\ \082\000\082\000\082\000\082\000\082\000\082\000\082\000\082\000\ \082\000\082\000\082\000\255\255\255\255\255\255\255\255\082\000\ \255\255\082\000\082\000\082\000\082\000\082\000\082\000\082\000\ \082\000\082\000\082\000\082\000\082\000\082\000\082\000\082\000\ \082\000\082\000\082\000\082\000\082\000\082\000\082\000\082\000\ \082\000\082\000\082\000\083\000\255\255\255\255\255\255\255\255\ \255\255\255\255\083\000\255\255\083\000\083\000\083\000\083\000\ \083\000\083\000\083\000\083\000\083\000\083\000\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\083\000\083\000\083\000\ \083\000\083\000\083\000\083\000\083\000\083\000\083\000\083\000\ \083\000\083\000\083\000\083\000\083\000\083\000\083\000\083\000\ \083\000\083\000\083\000\083\000\083\000\083\000\083\000\255\255\ \255\255\255\255\255\255\083\000\255\255\083\000\083\000\083\000\ \083\000\083\000\083\000\083\000\083\000\083\000\083\000\083\000\ \083\000\083\000\083\000\083\000\083\000\083\000\083\000\083\000\ \083\000\083\000\083\000\083\000\083\000\083\000\083\000\084\000\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \084\000\084\000\084\000\084\000\084\000\084\000\084\000\084\000\ \084\000\084\000\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\084\000\084\000\084\000\084\000\084\000\084\000\084\000\ \084\000\084\000\084\000\084\000\084\000\084\000\084\000\084\000\ \084\000\084\000\084\000\084\000\084\000\084\000\084\000\084\000\ \084\000\084\000\084\000\255\255\255\255\255\255\255\255\084\000\ \255\255\084\000\084\000\084\000\084\000\084\000\084\000\084\000\ \084\000\084\000\084\000\084\000\084\000\084\000\084\000\084\000\ \084\000\084\000\084\000\084\000\084\000\084\000\084\000\084\000\ \084\000\084\000\084\000\085\000\255\255\255\255\255\255\085\000\ \255\255\085\000\255\255\255\255\085\000\085\000\085\000\085\000\ \085\000\085\000\085\000\085\000\085\000\085\000\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\085\000\085\000\085\000\ \085\000\085\000\085\000\085\000\085\000\085\000\085\000\085\000\ \085\000\085\000\085\000\085\000\085\000\085\000\085\000\085\000\ \085\000\085\000\085\000\085\000\085\000\085\000\085\000\255\255\ \255\255\255\255\255\255\085\000\255\255\085\000\085\000\085\000\ \085\000\085\000\085\000\085\000\085\000\085\000\085\000\085\000\ \085\000\085\000\085\000\085\000\085\000\085\000\085\000\085\000\ \085\000\085\000\085\000\085\000\085\000\085\000\085\000\086\000\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \086\000\086\000\086\000\086\000\086\000\086\000\086\000\086\000\ \086\000\086\000\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\086\000\086\000\086\000\086\000\086\000\086\000\086\000\ \086\000\086\000\086\000\086\000\086\000\086\000\086\000\086\000\ \086\000\086\000\086\000\086\000\086\000\086\000\086\000\086\000\ \086\000\086\000\086\000\255\255\255\255\255\255\255\255\086\000\ \255\255\086\000\086\000\086\000\086\000\086\000\086\000\086\000\ \086\000\086\000\086\000\086\000\086\000\086\000\086\000\086\000\ \086\000\086\000\086\000\086\000\086\000\086\000\086\000\086\000\ \086\000\086\000\086\000\088\000\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\088\000\088\000\088\000\088\000\ \088\000\088\000\088\000\088\000\088\000\088\000\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\088\000\088\000\088\000\ \088\000\088\000\088\000\088\000\088\000\088\000\088\000\088\000\ \088\000\088\000\088\000\088\000\088\000\088\000\088\000\088\000\ \088\000\088\000\088\000\088\000\088\000\088\000\088\000\255\255\ \255\255\255\255\255\255\088\000\255\255\088\000\088\000\088\000\ \088\000\088\000\088\000\088\000\088\000\088\000\088\000\088\000\ \088\000\088\000\088\000\088\000\088\000\088\000\088\000\088\000\ \088\000\088\000\088\000\088\000\088\000\088\000\088\000\089\000\ \255\255\255\255\255\255\089\000\255\255\089\000\255\255\255\255\ \089\000\089\000\089\000\089\000\089\000\089\000\089\000\089\000\ \089\000\089\000\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\089\000\089\000\089\000\089\000\089\000\089\000\089\000\ \089\000\089\000\089\000\089\000\089\000\089\000\089\000\089\000\ \089\000\089\000\089\000\089\000\089\000\089\000\089\000\089\000\ \089\000\089\000\089\000\255\255\255\255\255\255\255\255\089\000\ \255\255\089\000\089\000\089\000\089\000\089\000\089\000\089\000\ \089\000\089\000\089\000\089\000\089\000\089\000\089\000\089\000\ \089\000\089\000\089\000\089\000\089\000\089\000\089\000\089\000\ \089\000\089\000\089\000\090\000\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\090\000\090\000\090\000\090\000\ \090\000\090\000\090\000\090\000\090\000\090\000\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\090\000\090\000\090\000\ \090\000\090\000\090\000\090\000\090\000\090\000\090\000\090\000\ \090\000\090\000\090\000\090\000\090\000\090\000\090\000\090\000\ \090\000\090\000\090\000\090\000\090\000\090\000\090\000\255\255\ \255\255\255\255\255\255\090\000\255\255\090\000\090\000\090\000\ \090\000\090\000\090\000\090\000\090\000\090\000\090\000\090\000\ \090\000\090\000\090\000\090\000\090\000\090\000\090\000\090\000\ \090\000\090\000\090\000\090\000\090\000\090\000\090\000\091\000\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \091\000\091\000\091\000\091\000\091\000\091\000\091\000\091\000\ \091\000\091\000\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\091\000\091\000\091\000\091\000\091\000\091\000\091\000\ \091\000\091\000\091\000\091\000\091\000\091\000\091\000\091\000\ \091\000\091\000\091\000\091\000\091\000\091\000\091\000\091\000\ \091\000\091\000\091\000\255\255\255\255\255\255\255\255\091\000\ \255\255\091\000\091\000\091\000\091\000\091\000\091\000\091\000\ \091\000\091\000\091\000\091\000\091\000\091\000\091\000\091\000\ \091\000\091\000\091\000\091\000\091\000\091\000\091\000\091\000\ \091\000\091\000\091\000\092\000\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\092\000\092\000\092\000\092\000\ \092\000\092\000\092\000\092\000\092\000\092\000\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\092\000\092\000\092\000\ \092\000\092\000\092\000\092\000\092\000\092\000\092\000\092\000\ \092\000\092\000\092\000\092\000\092\000\092\000\092\000\092\000\ \092\000\092\000\092\000\092\000\092\000\092\000\092\000\255\255\ \255\255\255\255\255\255\092\000\255\255\092\000\092\000\092\000\ \092\000\092\000\092\000\092\000\092\000\092\000\092\000\092\000\ \092\000\092\000\092\000\092\000\092\000\092\000\092\000\092\000\ \092\000\092\000\092\000\092\000\092\000\092\000\092\000\099\000\ \255\255\255\255\099\000\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\099\000\255\255\ \255\255\255\255\255\255\255\255\255\255\099\000\255\255\255\255\ \255\255\255\255\255\255\255\255\099\000\255\255\099\000\099\000\ \099\000\099\000\099\000\099\000\099\000\099\000\099\000\099\000\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\099\000\ \099\000\099\000\099\000\099\000\099\000\099\000\099\000\099\000\ \099\000\099\000\099\000\099\000\099\000\099\000\099\000\099\000\ \099\000\099\000\099\000\099\000\099\000\099\000\099\000\099\000\ \099\000\255\255\255\255\255\255\255\255\099\000\255\255\099\000\ \099\000\099\000\099\000\099\000\099\000\099\000\099\000\099\000\ \099\000\099\000\099\000\099\000\099\000\099\000\099\000\099\000\ \099\000\099\000\099\000\099\000\099\000\099\000\099\000\099\000\ \099\000\103\000\099\000\255\255\103\000\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \103\000\255\255\255\255\255\255\255\255\255\255\255\255\103\000\ \255\255\255\255\255\255\255\255\255\255\255\255\103\000\255\255\ \103\000\103\000\103\000\103\000\103\000\103\000\103\000\103\000\ \103\000\103\000\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\103\000\103\000\103\000\103\000\103\000\103\000\103\000\ \103\000\103\000\103\000\103\000\103\000\103\000\103\000\103\000\ \103\000\103\000\103\000\103\000\103\000\103\000\103\000\103\000\ \103\000\103\000\103\000\255\255\255\255\255\255\255\255\103\000\ \255\255\103\000\103\000\103\000\103\000\103\000\103\000\103\000\ \103\000\103\000\103\000\103\000\103\000\103\000\103\000\103\000\ \103\000\103\000\103\000\103\000\103\000\103\000\103\000\103\000\ \103\000\103\000\103\000\106\000\103\000\255\255\106\000\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\106\000\255\255\255\255\255\255\255\255\255\255\ \255\255\106\000\255\255\255\255\255\255\255\255\255\255\255\255\ \106\000\255\255\106\000\106\000\106\000\106\000\106\000\106\000\ \106\000\106\000\106\000\106\000\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\106\000\106\000\106\000\106\000\106\000\ \106\000\106\000\106\000\106\000\106\000\106\000\106\000\106\000\ \106\000\106\000\106\000\106\000\106\000\106\000\106\000\106\000\ \106\000\106\000\106\000\106\000\106\000\255\255\255\255\255\255\ \255\255\106\000\255\255\106\000\106\000\106\000\106\000\106\000\ \106\000\106\000\106\000\106\000\106\000\106\000\106\000\106\000\ \106\000\106\000\106\000\106\000\106\000\106\000\106\000\106\000\ \106\000\106\000\106\000\106\000\106\000\110\000\106\000\255\255\ \110\000\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\110\000\255\255\255\255\255\255\ \255\255\255\255\255\255\110\000\255\255\255\255\255\255\255\255\ \255\255\255\255\110\000\255\255\110\000\110\000\110\000\110\000\ \110\000\110\000\110\000\110\000\110\000\110\000\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\110\000\110\000\110\000\ \110\000\110\000\110\000\110\000\110\000\110\000\110\000\110\000\ \110\000\110\000\110\000\110\000\110\000\110\000\110\000\110\000\ \110\000\110\000\110\000\110\000\110\000\110\000\110\000\255\255\ \255\255\255\255\255\255\110\000\255\255\110\000\110\000\110\000\ \110\000\110\000\110\000\110\000\110\000\110\000\110\000\110\000\ \110\000\110\000\110\000\110\000\110\000\110\000\110\000\110\000\ \110\000\110\000\110\000\110\000\110\000\110\000\110\000\114\000\ \110\000\114\000\114\000\255\255\255\255\255\255\114\000\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\114\000\ \114\000\114\000\114\000\114\000\114\000\114\000\114\000\114\000\ \114\000\141\000\255\255\255\255\141\000\141\000\141\000\255\255\ \255\255\255\255\141\000\141\000\255\255\141\000\141\000\141\000\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\141\000\255\255\141\000\141\000\141\000\141\000\ \141\000\255\255\255\255\114\000\255\255\255\255\255\255\255\255\ \255\255\114\000\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\114\000\114\000\255\255\ \255\255\114\000\255\255\114\000\255\255\255\255\141\000\114\000\ \255\255\255\255\255\255\255\255\143\000\255\255\143\000\143\000\ \143\000\143\000\255\255\255\255\255\255\143\000\143\000\255\255\ \143\000\143\000\143\000\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\141\000\143\000\141\000\143\000\ \143\000\143\000\143\000\143\000\255\255\255\255\255\255\144\000\ \255\255\255\255\144\000\144\000\144\000\255\255\255\255\255\255\ \144\000\144\000\255\255\144\000\144\000\144\000\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \144\000\143\000\144\000\144\000\144\000\144\000\144\000\255\255\ \255\255\255\255\255\255\255\255\145\000\255\255\255\255\145\000\ \145\000\145\000\255\255\255\255\255\255\145\000\145\000\255\255\ \145\000\145\000\145\000\255\255\255\255\255\255\255\255\143\000\ \255\255\143\000\255\255\255\255\144\000\145\000\255\255\145\000\ \145\000\145\000\145\000\145\000\255\255\255\255\255\255\146\000\ \255\255\255\255\146\000\146\000\146\000\255\255\255\255\255\255\ \146\000\146\000\255\255\146\000\146\000\146\000\255\255\255\255\ \255\255\255\255\144\000\255\255\144\000\255\255\255\255\114\000\ \146\000\145\000\146\000\146\000\146\000\146\000\146\000\255\255\ \255\255\255\255\147\000\255\255\255\255\147\000\147\000\147\000\ \255\255\255\255\255\255\147\000\147\000\255\255\147\000\147\000\ \147\000\255\255\255\255\255\255\255\255\255\255\255\255\145\000\ \255\255\145\000\255\255\147\000\146\000\147\000\147\000\147\000\ \147\000\147\000\255\255\255\255\255\255\152\000\255\255\255\255\ \152\000\152\000\152\000\255\255\255\255\255\255\152\000\152\000\ \255\255\152\000\152\000\152\000\255\255\255\255\255\255\255\255\ \255\255\255\255\146\000\255\255\146\000\255\255\152\000\147\000\ \152\000\152\000\152\000\152\000\152\000\255\255\255\255\255\255\ \162\000\255\255\255\255\162\000\162\000\162\000\255\255\255\255\ \255\255\162\000\162\000\255\255\162\000\162\000\162\000\255\255\ \255\255\255\255\255\255\255\255\255\255\147\000\255\255\147\000\ \255\255\162\000\152\000\162\000\162\000\162\000\162\000\162\000\ \255\255\255\255\255\255\165\000\255\255\165\000\165\000\165\000\ \165\000\255\255\255\255\255\255\165\000\165\000\255\255\165\000\ \165\000\165\000\255\255\255\255\255\255\255\255\255\255\255\255\ \152\000\255\255\152\000\255\255\165\000\162\000\165\000\165\000\ \165\000\165\000\165\000\255\255\255\255\255\255\166\000\255\255\ \166\000\166\000\166\000\166\000\255\255\255\255\255\255\166\000\ \166\000\255\255\166\000\166\000\166\000\255\255\255\255\255\255\ \255\255\255\255\255\255\162\000\255\255\162\000\255\255\166\000\ \165\000\166\000\166\000\166\000\166\000\166\000\255\255\255\255\ \255\255\167\000\255\255\255\255\167\000\167\000\167\000\255\255\ \255\255\255\255\167\000\167\000\255\255\167\000\167\000\167\000\ \255\255\255\255\255\255\255\255\255\255\255\255\165\000\255\255\ \165\000\255\255\167\000\166\000\167\000\167\000\167\000\167\000\ \167\000\255\255\255\255\255\255\168\000\255\255\255\255\168\000\ \168\000\168\000\255\255\255\255\255\255\168\000\168\000\255\255\ \168\000\168\000\168\000\255\255\255\255\255\255\255\255\255\255\ \255\255\166\000\255\255\166\000\255\255\168\000\167\000\168\000\ \168\000\168\000\168\000\168\000\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\174\000\255\255\255\255\174\000\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\167\000\255\255\167\000\255\255\ \255\255\168\000\255\255\174\000\255\255\255\255\255\255\255\255\ \174\000\174\000\255\255\174\000\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\168\000\ \255\255\168\000\174\000\174\000\174\000\174\000\174\000\174\000\ \174\000\174\000\174\000\174\000\174\000\174\000\174\000\174\000\ \174\000\174\000\174\000\174\000\174\000\174\000\174\000\174\000\ \174\000\174\000\174\000\174\000\255\255\255\255\255\255\255\255\ \174\000\255\255\174\000\174\000\174\000\174\000\174\000\174\000\ \174\000\174\000\174\000\174\000\174\000\174\000\174\000\174\000\ \174\000\174\000\174\000\174\000\174\000\174\000\174\000\174\000\ \174\000\174\000\174\000\174\000\174\000\176\000\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\176\000\176\000\ \176\000\176\000\176\000\176\000\176\000\176\000\176\000\176\000\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\176\000\ \176\000\176\000\176\000\176\000\176\000\176\000\176\000\176\000\ \176\000\176\000\176\000\176\000\176\000\176\000\176\000\176\000\ \176\000\176\000\176\000\176\000\176\000\176\000\176\000\176\000\ \176\000\255\255\255\255\255\255\255\255\176\000\255\255\176\000\ \176\000\176\000\176\000\176\000\176\000\176\000\176\000\176\000\ \176\000\176\000\176\000\176\000\176\000\176\000\176\000\176\000\ \176\000\176\000\176\000\176\000\176\000\176\000\176\000\176\000\ \176\000\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\190\000\255\255\255\255\190\000\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\190\000\255\255\255\255\255\255\255\255\192\000\ \255\255\190\000\192\000\255\255\255\255\255\255\255\255\255\255\ \190\000\174\000\190\000\190\000\190\000\190\000\190\000\190\000\ \190\000\190\000\190\000\190\000\255\255\255\255\192\000\255\255\ \255\255\255\255\255\255\190\000\190\000\190\000\190\000\190\000\ \190\000\190\000\190\000\190\000\190\000\190\000\190\000\190\000\ \190\000\190\000\190\000\190\000\190\000\190\000\190\000\190\000\ \190\000\190\000\190\000\190\000\190\000\255\255\255\255\255\255\ \255\255\190\000\255\255\190\000\190\000\190\000\190\000\190\000\ \190\000\190\000\190\000\190\000\190\000\190\000\190\000\190\000\ \190\000\190\000\190\000\190\000\190\000\190\000\190\000\190\000\ \190\000\190\000\190\000\190\000\190\000\192\000\190\000\192\000\ \192\000\192\000\192\000\192\000\192\000\192\000\192\000\192\000\ \192\000\192\000\192\000\192\000\192\000\192\000\192\000\192\000\ \192\000\192\000\192\000\192\000\192\000\192\000\192\000\192\000\ \192\000\194\000\192\000\255\255\194\000\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \194\000\255\255\255\255\255\255\255\255\255\255\255\255\194\000\ \255\255\255\255\255\255\255\255\255\255\255\255\194\000\255\255\ \194\000\194\000\194\000\194\000\194\000\194\000\194\000\194\000\ \194\000\194\000\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\194\000\194\000\194\000\194\000\194\000\194\000\194\000\ \194\000\194\000\194\000\194\000\194\000\194\000\194\000\194\000\ \194\000\194\000\194\000\194\000\194\000\194\000\194\000\194\000\ \194\000\194\000\194\000\255\255\255\255\255\255\255\255\194\000\ \255\255\194\000\194\000\194\000\194\000\194\000\194\000\194\000\ \194\000\194\000\194\000\194\000\194\000\194\000\194\000\194\000\ \194\000\194\000\194\000\194\000\194\000\194\000\194\000\194\000\ \194\000\194\000\194\000\195\000\194\000\195\000\255\255\255\255\ \255\255\255\255\195\000\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\195\000\195\000\195\000\195\000\195\000\ \195\000\195\000\195\000\195\000\195\000\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\202\000\202\000\202\000\ \202\000\202\000\202\000\202\000\202\000\202\000\202\000\195\000\ \255\255\255\255\255\255\255\255\255\255\195\000\202\000\202\000\ \202\000\202\000\202\000\202\000\255\255\255\255\255\255\255\255\ \255\255\195\000\195\000\255\255\255\255\195\000\255\255\195\000\ \255\255\255\255\255\255\195\000\214\000\214\000\214\000\214\000\ \214\000\214\000\214\000\214\000\214\000\214\000\202\000\202\000\ \202\000\202\000\202\000\202\000\255\255\214\000\214\000\214\000\ \214\000\214\000\214\000\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\223\000\255\255\255\255\ \223\000\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\214\000\214\000\214\000\ \214\000\214\000\214\000\223\000\255\255\223\000\255\255\255\255\ \255\255\255\255\223\000\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\223\000\223\000\223\000\223\000\223\000\ \223\000\223\000\223\000\223\000\223\000\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\227\000\227\000\227\000\ \227\000\227\000\227\000\227\000\227\000\227\000\227\000\223\000\ \255\255\255\255\255\255\255\255\255\255\223\000\227\000\227\000\ \227\000\227\000\227\000\227\000\255\255\255\255\255\255\255\255\ \255\255\223\000\223\000\255\255\255\255\223\000\255\255\223\000\ \223\000\255\255\255\255\223\000\239\000\239\000\239\000\239\000\ \239\000\239\000\239\000\239\000\239\000\239\000\227\000\227\000\ \227\000\227\000\227\000\227\000\255\255\239\000\239\000\239\000\ \239\000\239\000\239\000\241\000\241\000\241\000\241\000\241\000\ \241\000\241\000\241\000\241\000\241\000\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\241\000\241\000\241\000\241\000\ \241\000\241\000\255\255\255\255\255\255\239\000\239\000\239\000\ \239\000\239\000\239\000\255\255\255\255\255\255\255\255\255\255\ \255\255\242\000\242\000\242\000\242\000\242\000\242\000\242\000\ \242\000\242\000\242\000\255\255\241\000\241\000\241\000\241\000\ \241\000\241\000\242\000\242\000\242\000\242\000\242\000\242\000\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\242\000\242\000\242\000\242\000\242\000\242\000\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\223\000\255\255\247\000\242\000\247\000\ \247\000\247\000\247\000\247\000\247\000\247\000\247\000\247\000\ \247\000\247\000\247\000\247\000\247\000\247\000\247\000\247\000\ \247\000\247\000\247\000\247\000\247\000\247\000\247\000\247\000\ \247\000\255\255\253\000\247\000\253\000\253\000\253\000\253\000\ \253\000\253\000\253\000\253\000\253\000\253\000\253\000\253\000\ \253\000\253\000\253\000\253\000\253\000\253\000\253\000\253\000\ \253\000\253\000\253\000\253\000\253\000\253\000\255\255\255\255\ \253\000\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255"; Lexing.lex_base_code = "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\058\000\172\000\000\000\000\000\230\000\088\001\ \010\000\000\000\202\001\001\000\000\000\004\002\118\002\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\002\000\207\002\007\000\001\000\000\000\026\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\048\000\000\000\200\002\058\003\116\003\ \006\000\174\003\032\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\004\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \006\000\009\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000"; Lexing.lex_backtrk_code = "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\036\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\048\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000"; Lexing.lex_default_code = "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\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\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000"; Lexing.lex_trans_code = "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\007\000\015\000\004\000\007\000\015\000\045\000\045\000\ \045\000\000\000\045\000\045\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \007\000\015\000\004\000\031\000\000\000\000\000\045\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\015\000\015\000\015\000\015\000\015\000\015\000\ \015\000\015\000\015\000\015\000\000\000\000\000\000\000\000\000\ \000\000\001\000\001\000\001\000\001\000\001\000\001\000\001\000\ \001\000\001\000\001\000\001\000\001\000\001\000\001\000\001\000\ \001\000\001\000\001\000\001\000\001\000\001\000\001\000\001\000\ \001\000\001\000\001\000\000\000\000\000\000\000\000\000\001\000\ \000\000\001\000\001\000\001\000\001\000\001\000\001\000\001\000\ \001\000\001\000\001\000\001\000\001\000\001\000\001\000\001\000\ \001\000\001\000\001\000\001\000\001\000\001\000\001\000\001\000\ \001\000\001\000\001\000\004\000\004\000\004\000\004\000\004\000\ \004\000\004\000\004\000\004\000\004\000\004\000\004\000\004\000\ \004\000\004\000\004\000\004\000\004\000\004\000\004\000\004\000\ \004\000\004\000\004\000\004\000\004\000\045\000\000\000\000\000\ \000\000\004\000\000\000\004\000\004\000\004\000\004\000\004\000\ \004\000\004\000\004\000\004\000\004\000\004\000\004\000\004\000\ \004\000\004\000\004\000\004\000\004\000\004\000\004\000\004\000\ \004\000\004\000\004\000\004\000\004\000\007\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\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\007\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\001\000\001\000\001\000\001\000\ \001\000\001\000\001\000\001\000\001\000\001\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\001\000\001\000\001\000\ \001\000\001\000\001\000\001\000\001\000\001\000\001\000\001\000\ \001\000\001\000\001\000\001\000\001\000\001\000\001\000\001\000\ \001\000\001\000\001\000\001\000\001\000\001\000\001\000\000\000\ \000\000\000\000\000\000\001\000\000\000\001\000\001\000\001\000\ \001\000\001\000\001\000\001\000\001\000\001\000\001\000\001\000\ \001\000\001\000\001\000\001\000\001\000\001\000\001\000\001\000\ \001\000\001\000\001\000\001\000\001\000\001\000\001\000\001\000\ \001\000\001\000\001\000\001\000\001\000\001\000\001\000\001\000\ \001\000\001\000\001\000\001\000\001\000\001\000\001\000\001\000\ \001\000\001\000\001\000\001\000\001\000\001\000\001\000\001\000\ \001\000\000\000\000\000\000\000\000\000\001\000\000\000\001\000\ \001\000\001\000\001\000\001\000\001\000\001\000\001\000\001\000\ \001\000\001\000\001\000\001\000\001\000\001\000\001\000\001\000\ \001\000\001\000\001\000\001\000\001\000\001\000\001\000\001\000\ \001\000\007\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\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \007\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\ \001\000\001\000\001\000\001\000\001\000\001\000\001\000\001\000\ \001\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\001\000\001\000\001\000\001\000\001\000\001\000\001\000\ \001\000\001\000\001\000\001\000\001\000\001\000\001\000\001\000\ \001\000\001\000\001\000\001\000\001\000\001\000\001\000\001\000\ \001\000\001\000\001\000\000\000\000\000\000\000\000\000\001\000\ \000\000\001\000\001\000\001\000\001\000\001\000\001\000\001\000\ \001\000\001\000\001\000\001\000\001\000\001\000\001\000\001\000\ \001\000\001\000\001\000\001\000\001\000\001\000\001\000\001\000\ \001\000\001\000\001\000\015\000\000\000\000\000\015\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\015\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\004\000\004\000\004\000\004\000\004\000\004\000\ \004\000\004\000\004\000\004\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\004\000\004\000\004\000\004\000\004\000\ \004\000\004\000\004\000\004\000\004\000\004\000\004\000\004\000\ \004\000\004\000\004\000\004\000\004\000\004\000\004\000\004\000\ \004\000\004\000\004\000\004\000\004\000\000\000\000\000\000\000\ \000\000\004\000\000\000\004\000\004\000\004\000\004\000\004\000\ \004\000\004\000\004\000\004\000\004\000\004\000\004\000\004\000\ \004\000\004\000\004\000\004\000\004\000\004\000\004\000\004\000\ \004\000\004\000\004\000\004\000\004\000\004\000\004\000\004\000\ \004\000\004\000\004\000\004\000\004\000\004\000\004\000\004\000\ \004\000\004\000\004\000\004\000\004\000\004\000\004\000\004\000\ \004\000\004\000\004\000\004\000\004\000\004\000\004\000\000\000\ \000\000\000\000\000\000\004\000\000\000\004\000\004\000\004\000\ \004\000\004\000\004\000\004\000\004\000\004\000\004\000\004\000\ \004\000\004\000\004\000\004\000\004\000\004\000\004\000\004\000\ \004\000\004\000\004\000\004\000\004\000\004\000\004\000\015\000\ \000\000\000\000\015\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\015\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\004\000\004\000\ \004\000\004\000\004\000\004\000\004\000\004\000\004\000\004\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\000\ \004\000\004\000\004\000\004\000\004\000\004\000\004\000\004\000\ \004\000\004\000\004\000\004\000\004\000\004\000\004\000\004\000\ \004\000\004\000\004\000\004\000\004\000\004\000\004\000\004\000\ \004\000\000\000\000\000\000\000\000\000\004\000\000\000\004\000\ \004\000\004\000\004\000\004\000\004\000\004\000\004\000\004\000\ \004\000\004\000\004\000\004\000\004\000\004\000\004\000\004\000\ \004\000\004\000\004\000\004\000\004\000\004\000\004\000\004\000\ \004\000\023\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\015\000\ \015\000\015\000\015\000\015\000\015\000\015\000\015\000\015\000\ \015\000\045\000\045\000\045\000\045\000\045\000\045\000\045\000\ \045\000\045\000\045\000\045\000\045\000\045\000\045\000\045\000\ \045\000\045\000\045\000\045\000\045\000\045\000\045\000\045\000\ \045\000\045\000\045\000\000\000\000\000\000\000\000\000\045\000\ \000\000\045\000\045\000\045\000\045\000\045\000\045\000\045\000\ \045\000\045\000\045\000\045\000\045\000\045\000\045\000\045\000\ \045\000\045\000\045\000\045\000\045\000\045\000\045\000\045\000\ \045\000\045\000\045\000\045\000\000\000\000\000\045\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\045\000\000\000\000\000\000\000\000\000\000\000\ \000\000\045\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\045\000\045\000\045\000\045\000\045\000\045\000\ \045\000\045\000\045\000\045\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\045\000\045\000\045\000\045\000\045\000\ \045\000\045\000\045\000\045\000\045\000\045\000\045\000\045\000\ \045\000\045\000\045\000\045\000\045\000\045\000\045\000\045\000\ \045\000\045\000\045\000\045\000\045\000\000\000\000\000\000\000\ \000\000\045\000\000\000\045\000\045\000\045\000\045\000\045\000\ \045\000\045\000\045\000\045\000\045\000\045\000\045\000\045\000\ \045\000\045\000\045\000\045\000\045\000\045\000\045\000\045\000\ \045\000\045\000\045\000\045\000\045\000\045\000\045\000\045\000\ \045\000\045\000\045\000\045\000\045\000\045\000\045\000\045\000\ \045\000\045\000\045\000\045\000\045\000\045\000\045\000\045\000\ \045\000\045\000\045\000\045\000\045\000\045\000\045\000\000\000\ \000\000\000\000\000\000\045\000\000\000\045\000\045\000\045\000\ \045\000\045\000\045\000\045\000\045\000\045\000\045\000\045\000\ \045\000\045\000\045\000\045\000\045\000\045\000\045\000\045\000\ \045\000\045\000\045\000\045\000\045\000\045\000\045\000\045\000\ \045\000\045\000\045\000\045\000\045\000\045\000\045\000\045\000\ \045\000\045\000\045\000\045\000\045\000\045\000\045\000\045\000\ \045\000\045\000\045\000\045\000\045\000\045\000\045\000\045\000\ \045\000\000\000\000\000\000\000\000\000\045\000\000\000\045\000\ \045\000\045\000\045\000\045\000\045\000\045\000\045\000\045\000\ \045\000\045\000\045\000\045\000\045\000\045\000\045\000\045\000\ \045\000\045\000\045\000\045\000\045\000\045\000\045\000\045\000\ \045\000\045\000\000\000\000\000\045\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \045\000\000\000\000\000\000\000\000\000\000\000\000\000\045\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \045\000\045\000\045\000\045\000\045\000\045\000\045\000\045\000\ \045\000\045\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\045\000\045\000\045\000\045\000\045\000\045\000\045\000\ \045\000\045\000\045\000\045\000\045\000\045\000\045\000\045\000\ \045\000\045\000\045\000\045\000\045\000\045\000\045\000\045\000\ \045\000\045\000\045\000\000\000\000\000\000\000\000\000\045\000\ \000\000\045\000\045\000\045\000\045\000\045\000\045\000\045\000\ \045\000\045\000\045\000\045\000\045\000\045\000\045\000\045\000\ \045\000\045\000\045\000\045\000\045\000\045\000\045\000\045\000\ \045\000\045\000\045\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ \000\000"; Lexing.lex_check_code = "\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\100\000\107\000\169\000\100\000\107\000\223\000\192\000\ \232\000\171\000\192\000\233\000\171\000\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \100\000\107\000\169\000\172\000\255\255\255\255\192\000\255\255\ \255\255\171\000\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\169\000\169\000\169\000\169\000\169\000\169\000\ \169\000\169\000\169\000\169\000\255\255\255\255\255\255\255\255\ \255\255\095\000\095\000\095\000\095\000\095\000\095\000\095\000\ \095\000\095\000\095\000\095\000\095\000\095\000\095\000\095\000\ \095\000\095\000\095\000\095\000\095\000\095\000\095\000\095\000\ \095\000\095\000\095\000\255\255\255\255\255\255\255\255\095\000\ \255\255\095\000\095\000\095\000\095\000\095\000\095\000\095\000\ \095\000\095\000\095\000\095\000\095\000\095\000\095\000\095\000\ \095\000\095\000\095\000\095\000\095\000\095\000\095\000\095\000\ \095\000\095\000\095\000\098\000\098\000\098\000\098\000\098\000\ \098\000\098\000\098\000\098\000\098\000\098\000\098\000\098\000\ \098\000\098\000\098\000\098\000\098\000\098\000\098\000\098\000\ \098\000\098\000\098\000\098\000\098\000\174\000\255\255\255\255\ \255\255\098\000\255\255\098\000\098\000\098\000\098\000\098\000\ \098\000\098\000\098\000\098\000\098\000\098\000\098\000\098\000\ \098\000\098\000\098\000\098\000\098\000\098\000\098\000\098\000\ \098\000\098\000\098\000\098\000\098\000\099\000\255\255\255\255\ \099\000\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\099\000\255\255\255\255\255\255\ \255\255\255\255\255\255\099\000\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\099\000\099\000\099\000\099\000\ \099\000\099\000\099\000\099\000\099\000\099\000\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\099\000\099\000\099\000\ \099\000\099\000\099\000\099\000\099\000\099\000\099\000\099\000\ \099\000\099\000\099\000\099\000\099\000\099\000\099\000\099\000\ \099\000\099\000\099\000\099\000\099\000\099\000\099\000\171\000\ \255\255\255\255\255\255\099\000\255\255\099\000\099\000\099\000\ \099\000\099\000\099\000\099\000\099\000\099\000\099\000\099\000\ \099\000\099\000\099\000\099\000\099\000\099\000\099\000\099\000\ \099\000\099\000\099\000\099\000\099\000\099\000\099\000\102\000\ \102\000\102\000\102\000\102\000\102\000\102\000\102\000\102\000\ \102\000\102\000\102\000\102\000\102\000\102\000\102\000\102\000\ \102\000\102\000\102\000\102\000\102\000\102\000\102\000\102\000\ \102\000\255\255\255\255\255\255\255\255\102\000\255\255\102\000\ \102\000\102\000\102\000\102\000\102\000\102\000\102\000\102\000\ \102\000\102\000\102\000\102\000\102\000\102\000\102\000\102\000\ \102\000\102\000\102\000\102\000\102\000\102\000\102\000\102\000\ \102\000\103\000\255\255\255\255\103\000\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \103\000\255\255\255\255\255\255\255\255\255\255\255\255\103\000\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \103\000\103\000\103\000\103\000\103\000\103\000\103\000\103\000\ \103\000\103\000\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\103\000\103\000\103\000\103\000\103\000\103\000\103\000\ \103\000\103\000\103\000\103\000\103\000\103\000\103\000\103\000\ \103\000\103\000\103\000\103\000\103\000\103\000\103\000\103\000\ \103\000\103\000\103\000\255\255\255\255\255\255\255\255\103\000\ \255\255\103\000\103\000\103\000\103\000\103\000\103\000\103\000\ \103\000\103\000\103\000\103\000\103\000\103\000\103\000\103\000\ \103\000\103\000\103\000\103\000\103\000\103\000\103\000\103\000\ \103\000\103\000\103\000\106\000\255\255\255\255\106\000\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\106\000\255\255\255\255\255\255\255\255\255\255\ \255\255\106\000\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\106\000\106\000\106\000\106\000\106\000\106\000\ \106\000\106\000\106\000\106\000\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\106\000\106\000\106\000\106\000\106\000\ \106\000\106\000\106\000\106\000\106\000\106\000\106\000\106\000\ \106\000\106\000\106\000\106\000\106\000\106\000\106\000\106\000\ \106\000\106\000\106\000\106\000\106\000\255\255\255\255\255\255\ \255\255\106\000\255\255\106\000\106\000\106\000\106\000\106\000\ \106\000\106\000\106\000\106\000\106\000\106\000\106\000\106\000\ \106\000\106\000\106\000\106\000\106\000\106\000\106\000\106\000\ \106\000\106\000\106\000\106\000\106\000\109\000\109\000\109\000\ \109\000\109\000\109\000\109\000\109\000\109\000\109\000\109\000\ \109\000\109\000\109\000\109\000\109\000\109\000\109\000\109\000\ \109\000\109\000\109\000\109\000\109\000\109\000\109\000\255\255\ \255\255\255\255\255\255\109\000\255\255\109\000\109\000\109\000\ \109\000\109\000\109\000\109\000\109\000\109\000\109\000\109\000\ \109\000\109\000\109\000\109\000\109\000\109\000\109\000\109\000\ \109\000\109\000\109\000\109\000\109\000\109\000\109\000\110\000\ \255\255\255\255\110\000\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\110\000\255\255\ \255\255\255\255\255\255\255\255\255\255\110\000\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\110\000\110\000\ \110\000\110\000\110\000\110\000\110\000\110\000\110\000\110\000\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\110\000\ \110\000\110\000\110\000\110\000\110\000\110\000\110\000\110\000\ \110\000\110\000\110\000\110\000\110\000\110\000\110\000\110\000\ \110\000\110\000\110\000\110\000\110\000\110\000\110\000\110\000\ \110\000\255\255\255\255\255\255\255\255\110\000\255\255\110\000\ \110\000\110\000\110\000\110\000\110\000\110\000\110\000\110\000\ \110\000\110\000\110\000\110\000\110\000\110\000\110\000\110\000\ \110\000\110\000\110\000\110\000\110\000\110\000\110\000\110\000\ \110\000\170\000\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\170\000\ \170\000\170\000\170\000\170\000\170\000\170\000\170\000\170\000\ \170\000\189\000\189\000\189\000\189\000\189\000\189\000\189\000\ \189\000\189\000\189\000\189\000\189\000\189\000\189\000\189\000\ \189\000\189\000\189\000\189\000\189\000\189\000\189\000\189\000\ \189\000\189\000\189\000\255\255\255\255\255\255\255\255\189\000\ \255\255\189\000\189\000\189\000\189\000\189\000\189\000\189\000\ \189\000\189\000\189\000\189\000\189\000\189\000\189\000\189\000\ \189\000\189\000\189\000\189\000\189\000\189\000\189\000\189\000\ \189\000\189\000\189\000\190\000\255\255\255\255\190\000\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\190\000\255\255\255\255\255\255\255\255\255\255\ \255\255\190\000\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\190\000\190\000\190\000\190\000\190\000\190\000\ \190\000\190\000\190\000\190\000\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\190\000\190\000\190\000\190\000\190\000\ \190\000\190\000\190\000\190\000\190\000\190\000\190\000\190\000\ \190\000\190\000\190\000\190\000\190\000\190\000\190\000\190\000\ \190\000\190\000\190\000\190\000\190\000\255\255\255\255\255\255\ \255\255\190\000\255\255\190\000\190\000\190\000\190\000\190\000\ \190\000\190\000\190\000\190\000\190\000\190\000\190\000\190\000\ \190\000\190\000\190\000\190\000\190\000\190\000\190\000\190\000\ \190\000\190\000\190\000\190\000\190\000\191\000\191\000\191\000\ \191\000\191\000\191\000\191\000\191\000\191\000\191\000\191\000\ \191\000\191\000\191\000\191\000\191\000\191\000\191\000\191\000\ \191\000\191\000\191\000\191\000\191\000\191\000\191\000\255\255\ \255\255\255\255\255\255\191\000\255\255\191\000\191\000\191\000\ \191\000\191\000\191\000\191\000\191\000\191\000\191\000\191\000\ \191\000\191\000\191\000\191\000\191\000\191\000\191\000\191\000\ \191\000\191\000\191\000\191\000\191\000\191\000\191\000\193\000\ \193\000\193\000\193\000\193\000\193\000\193\000\193\000\193\000\ \193\000\193\000\193\000\193\000\193\000\193\000\193\000\193\000\ \193\000\193\000\193\000\193\000\193\000\193\000\193\000\193\000\ \193\000\255\255\255\255\255\255\255\255\193\000\255\255\193\000\ \193\000\193\000\193\000\193\000\193\000\193\000\193\000\193\000\ \193\000\193\000\193\000\193\000\193\000\193\000\193\000\193\000\ \193\000\193\000\193\000\193\000\193\000\193\000\193\000\193\000\ \193\000\194\000\255\255\255\255\194\000\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \194\000\255\255\255\255\255\255\255\255\255\255\255\255\194\000\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \194\000\194\000\194\000\194\000\194\000\194\000\194\000\194\000\ \194\000\194\000\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\194\000\194\000\194\000\194\000\194\000\194\000\194\000\ \194\000\194\000\194\000\194\000\194\000\194\000\194\000\194\000\ \194\000\194\000\194\000\194\000\194\000\194\000\194\000\194\000\ \194\000\194\000\194\000\255\255\255\255\255\255\255\255\194\000\ \255\255\194\000\194\000\194\000\194\000\194\000\194\000\194\000\ \194\000\194\000\194\000\194\000\194\000\194\000\194\000\194\000\ \194\000\194\000\194\000\194\000\194\000\194\000\194\000\194\000\ \194\000\194\000\194\000\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ \255\255"; Lexing.lex_code = "\255\002\255\255\004\255\255\003\255\255\000\002\001\003\255\005\ \255\255\000\004\001\005\255\007\255\006\255\255\007\255\255\006\ \255\007\255\255\000\004\001\005\002\006\003\007\255\001\255\255\ \000\001\255"; } let rec token lexbuf = lexbuf.Lexing.lex_mem <- Array.make 6 (-1); __ocaml_lex_token_rec lexbuf 0 and __ocaml_lex_token_rec lexbuf __ocaml_lex_state = match Lexing.new_engine __ocaml_lex_tables __ocaml_lex_state lexbuf with | 0 -> let # 405 "parsing/lexer.mll" bs # 2904 "parsing/lexer.ml" = Lexing.sub_lexeme_char lexbuf lexbuf.Lexing.lex_start_pos in # 405 "parsing/lexer.mll" ( if not !escaped_newlines then error lexbuf (Illegal_character bs); update_loc lexbuf None 1 false 0; token lexbuf ) # 2911 "parsing/lexer.ml" | 1 -> # 410 "parsing/lexer.mll" ( update_loc lexbuf None 1 false 0; EOL ) # 2917 "parsing/lexer.ml" | 2 -> # 413 "parsing/lexer.mll" ( token lexbuf ) # 2922 "parsing/lexer.ml" | 3 -> # 415 "parsing/lexer.mll" ( UNDERSCORE ) # 2927 "parsing/lexer.ml" | 4 -> # 417 "parsing/lexer.mll" ( TILDE ) # 2932 "parsing/lexer.ml" | 5 -> # 419 "parsing/lexer.mll" ( error lexbuf (Reserved_sequence (".~", Some "is reserved for use in MetaOCaml")) ) # 2938 "parsing/lexer.ml" | 6 -> let # 421 "parsing/lexer.mll" name # 2944 "parsing/lexer.ml" = Lexing.sub_lexeme lexbuf (lexbuf.Lexing.lex_start_pos + 3) (lexbuf.Lexing.lex_curr_pos + -1) in # 422 "parsing/lexer.mll" ( LABEL name ) # 2948 "parsing/lexer.ml" | 7 -> let # 423 "parsing/lexer.mll" name # 2954 "parsing/lexer.ml" = Lexing.sub_lexeme lexbuf (lexbuf.Lexing.lex_start_pos + 1) (lexbuf.Lexing.lex_curr_pos + -1) in # 424 "parsing/lexer.mll" ( check_label_name lexbuf name; LABEL name ) # 2959 "parsing/lexer.ml" | 8 -> let # 426 "parsing/lexer.mll" name # 2965 "parsing/lexer.ml" = Lexing.sub_lexeme lexbuf (lexbuf.Lexing.lex_start_pos + 1) (lexbuf.Lexing.lex_curr_pos + -1) in # 427 "parsing/lexer.mll" ( warn_latin1 lexbuf; LABEL name ) # 2970 "parsing/lexer.ml" | 9 -> # 430 "parsing/lexer.mll" ( QUESTION ) # 2975 "parsing/lexer.ml" | 10 -> let # 431 "parsing/lexer.mll" name # 2981 "parsing/lexer.ml" = Lexing.sub_lexeme lexbuf (lexbuf.Lexing.lex_start_pos + 3) (lexbuf.Lexing.lex_curr_pos + -1) in # 432 "parsing/lexer.mll" ( OPTLABEL name ) # 2985 "parsing/lexer.ml" | 11 -> let # 433 "parsing/lexer.mll" name # 2991 "parsing/lexer.ml" = Lexing.sub_lexeme lexbuf (lexbuf.Lexing.lex_start_pos + 1) (lexbuf.Lexing.lex_curr_pos + -1) in # 434 "parsing/lexer.mll" ( check_label_name lexbuf name; OPTLABEL name ) # 2996 "parsing/lexer.ml" | 12 -> let # 436 "parsing/lexer.mll" name # 3002 "parsing/lexer.ml" = Lexing.sub_lexeme lexbuf (lexbuf.Lexing.lex_start_pos + 1) (lexbuf.Lexing.lex_curr_pos + -1) in # 437 "parsing/lexer.mll" ( warn_latin1 lexbuf; OPTLABEL name ) # 3007 "parsing/lexer.ml" | 13 -> let # 439 "parsing/lexer.mll" name # 3013 "parsing/lexer.ml" = Lexing.sub_lexeme lexbuf (lexbuf.Lexing.lex_start_pos + 2) lexbuf.Lexing.lex_curr_pos in # 440 "parsing/lexer.mll" ( LIDENT name ) # 3017 "parsing/lexer.ml" | 14 -> let # 441 "parsing/lexer.mll" name # 3023 "parsing/lexer.ml" = Lexing.sub_lexeme lexbuf lexbuf.Lexing.lex_start_pos lexbuf.Lexing.lex_curr_pos in # 442 "parsing/lexer.mll" ( try Hashtbl.find keyword_table name with Not_found -> LIDENT name ) # 3028 "parsing/lexer.ml" | 15 -> let # 444 "parsing/lexer.mll" name # 3034 "parsing/lexer.ml" = Lexing.sub_lexeme lexbuf lexbuf.Lexing.lex_start_pos lexbuf.Lexing.lex_curr_pos in # 445 "parsing/lexer.mll" ( warn_latin1 lexbuf; LIDENT name ) # 3038 "parsing/lexer.ml" | 16 -> let # 446 "parsing/lexer.mll" name # 3044 "parsing/lexer.ml" = Lexing.sub_lexeme lexbuf lexbuf.Lexing.lex_start_pos lexbuf.Lexing.lex_curr_pos in # 447 "parsing/lexer.mll" ( UIDENT name ) # 3048 "parsing/lexer.ml" | 17 -> let # 448 "parsing/lexer.mll" name # 3054 "parsing/lexer.ml" = Lexing.sub_lexeme lexbuf lexbuf.Lexing.lex_start_pos lexbuf.Lexing.lex_curr_pos in # 449 "parsing/lexer.mll" ( warn_latin1 lexbuf; UIDENT name ) # 3058 "parsing/lexer.ml" | 18 -> let # 450 "parsing/lexer.mll" lit # 3064 "parsing/lexer.ml" = Lexing.sub_lexeme lexbuf lexbuf.Lexing.lex_start_pos lexbuf.Lexing.lex_curr_pos in # 450 "parsing/lexer.mll" ( INT (lit, None) ) # 3068 "parsing/lexer.ml" | 19 -> let # 451 "parsing/lexer.mll" lit # 3074 "parsing/lexer.ml" = Lexing.sub_lexeme lexbuf lexbuf.Lexing.lex_start_pos (lexbuf.Lexing.lex_curr_pos + -1) and # 451 "parsing/lexer.mll" modif # 3079 "parsing/lexer.ml" = Lexing.sub_lexeme_char lexbuf (lexbuf.Lexing.lex_curr_pos + -1) in # 452 "parsing/lexer.mll" ( INT (lit, Some modif) ) # 3083 "parsing/lexer.ml" | 20 -> let # 453 "parsing/lexer.mll" lit # 3089 "parsing/lexer.ml" = Lexing.sub_lexeme lexbuf lexbuf.Lexing.lex_start_pos lexbuf.Lexing.lex_curr_pos in # 454 "parsing/lexer.mll" ( FLOAT (lit, None) ) # 3093 "parsing/lexer.ml" | 21 -> let # 455 "parsing/lexer.mll" lit # 3099 "parsing/lexer.ml" = Lexing.sub_lexeme lexbuf lexbuf.Lexing.lex_start_pos (lexbuf.Lexing.lex_curr_pos + -1) and # 455 "parsing/lexer.mll" modif # 3104 "parsing/lexer.ml" = Lexing.sub_lexeme_char lexbuf (lexbuf.Lexing.lex_curr_pos + -1) in # 456 "parsing/lexer.mll" ( FLOAT (lit, Some modif) ) # 3108 "parsing/lexer.ml" | 22 -> let # 457 "parsing/lexer.mll" invalid # 3114 "parsing/lexer.ml" = Lexing.sub_lexeme lexbuf lexbuf.Lexing.lex_start_pos lexbuf.Lexing.lex_curr_pos in # 458 "parsing/lexer.mll" ( error lexbuf (Invalid_literal invalid) ) # 3118 "parsing/lexer.ml" | 23 -> # 460 "parsing/lexer.mll" ( let s, loc = wrap_string_lexer string lexbuf in STRING (s, loc, None) ) # 3124 "parsing/lexer.ml" | 24 -> let # 462 "parsing/lexer.mll" delim # 3130 "parsing/lexer.ml" = Lexing.sub_lexeme lexbuf (lexbuf.Lexing.lex_start_pos + 1) (lexbuf.Lexing.lex_curr_pos + -1) in # 463 "parsing/lexer.mll" ( let s, loc = wrap_string_lexer (quoted_string delim) lexbuf in STRING (s, loc, Some delim) ) # 3135 "parsing/lexer.ml" | 25 -> let # 465 "parsing/lexer.mll" id # 3141 "parsing/lexer.ml" = Lexing.sub_lexeme lexbuf (lexbuf.Lexing.lex_start_pos + 2) (lexbuf.Lexing.lex_curr_pos + -1) in # 466 "parsing/lexer.mll" ( let orig_loc = Location.curr lexbuf in let s, loc = wrap_string_lexer (quoted_string "") lexbuf in let idloc = compute_quoted_string_idloc orig_loc 2 id in QUOTED_STRING_EXPR (id, idloc, s, loc, Some "") ) # 3148 "parsing/lexer.ml" | 26 -> let # 470 "parsing/lexer.mll" id # 3154 "parsing/lexer.ml" = Lexing.sub_lexeme lexbuf (lexbuf.Lexing.lex_start_pos + 2) lexbuf.Lexing.lex_mem.(0) and # 470 "parsing/lexer.mll" delim # 3159 "parsing/lexer.ml" = Lexing.sub_lexeme lexbuf lexbuf.Lexing.lex_mem.(1) (lexbuf.Lexing.lex_curr_pos + -1) in # 471 "parsing/lexer.mll" ( let orig_loc = Location.curr lexbuf in let s, loc = wrap_string_lexer (quoted_string delim) lexbuf in let idloc = compute_quoted_string_idloc orig_loc 2 id in QUOTED_STRING_EXPR (id, idloc, s, loc, Some delim) ) # 3166 "parsing/lexer.ml" | 27 -> let # 475 "parsing/lexer.mll" id # 3172 "parsing/lexer.ml" = Lexing.sub_lexeme lexbuf (lexbuf.Lexing.lex_start_pos + 3) (lexbuf.Lexing.lex_curr_pos + -1) in # 476 "parsing/lexer.mll" ( let orig_loc = Location.curr lexbuf in let s, loc = wrap_string_lexer (quoted_string "") lexbuf in let idloc = compute_quoted_string_idloc orig_loc 3 id in QUOTED_STRING_ITEM (id, idloc, s, loc, Some "") ) # 3179 "parsing/lexer.ml" | 28 -> let # 480 "parsing/lexer.mll" id # 3185 "parsing/lexer.ml" = Lexing.sub_lexeme lexbuf (lexbuf.Lexing.lex_start_pos + 3) lexbuf.Lexing.lex_mem.(0) and # 480 "parsing/lexer.mll" delim # 3190 "parsing/lexer.ml" = Lexing.sub_lexeme lexbuf lexbuf.Lexing.lex_mem.(1) (lexbuf.Lexing.lex_curr_pos + -1) in # 481 "parsing/lexer.mll" ( let orig_loc = Location.curr lexbuf in let s, loc = wrap_string_lexer (quoted_string delim) lexbuf in let idloc = compute_quoted_string_idloc orig_loc 3 id in QUOTED_STRING_ITEM (id, idloc, s, loc, Some delim) ) # 3197 "parsing/lexer.ml" | 29 -> # 486 "parsing/lexer.mll" ( update_loc lexbuf None 1 false 1; (* newline is ('\013'* '\010') *) CHAR '\n' ) # 3204 "parsing/lexer.ml" | 30 -> let # 489 "parsing/lexer.mll" c # 3210 "parsing/lexer.ml" = Lexing.sub_lexeme_char lexbuf (lexbuf.Lexing.lex_start_pos + 1) in # 490 "parsing/lexer.mll" ( CHAR c ) # 3214 "parsing/lexer.ml" | 31 -> let # 491 "parsing/lexer.mll" c # 3220 "parsing/lexer.ml" = Lexing.sub_lexeme_char lexbuf (lexbuf.Lexing.lex_start_pos + 2) in # 492 "parsing/lexer.mll" ( CHAR (char_for_backslash c) ) # 3224 "parsing/lexer.ml" | 32 -> # 494 "parsing/lexer.mll" ( CHAR(char_for_decimal_code lexbuf 2) ) # 3229 "parsing/lexer.ml" | 33 -> # 496 "parsing/lexer.mll" ( CHAR(char_for_octal_code lexbuf 3) ) # 3234 "parsing/lexer.ml" | 34 -> # 498 "parsing/lexer.mll" ( CHAR(char_for_hexadecimal_code lexbuf 3) ) # 3239 "parsing/lexer.ml" | 35 -> let # 499 "parsing/lexer.mll" esc # 3245 "parsing/lexer.ml" = Lexing.sub_lexeme lexbuf (lexbuf.Lexing.lex_start_pos + 1) (lexbuf.Lexing.lex_start_pos + 3) in # 500 "parsing/lexer.mll" ( error lexbuf (Illegal_escape (esc, None)) ) # 3249 "parsing/lexer.ml" | 36 -> # 502 "parsing/lexer.mll" ( error lexbuf Empty_character_literal ) # 3254 "parsing/lexer.ml" | 37 -> # 504 "parsing/lexer.mll" ( let s, loc = wrap_comment_lexer comment lexbuf in COMMENT (s, loc) ) # 3260 "parsing/lexer.ml" | 38 -> # 507 "parsing/lexer.mll" ( let s, loc = wrap_comment_lexer comment lexbuf in if !handle_docstrings then DOCSTRING (Docstrings.docstring s loc) else COMMENT ("*" ^ s, loc) ) # 3270 "parsing/lexer.ml" | 39 -> let # 513 "parsing/lexer.mll" stars # 3276 "parsing/lexer.ml" = Lexing.sub_lexeme lexbuf (lexbuf.Lexing.lex_start_pos + 3) lexbuf.Lexing.lex_curr_pos in # 514 "parsing/lexer.mll" ( let s, loc = wrap_comment_lexer (fun lexbuf -> store_string ("*" ^ stars); comment lexbuf) lexbuf in COMMENT (s, loc) ) # 3287 "parsing/lexer.ml" | 40 -> # 523 "parsing/lexer.mll" ( if !print_warnings then Location.prerr_warning (Location.curr lexbuf) Warnings.Comment_start; let s, loc = wrap_comment_lexer comment lexbuf in COMMENT (s, loc) ) # 3295 "parsing/lexer.ml" | 41 -> let # 527 "parsing/lexer.mll" stars # 3301 "parsing/lexer.ml" = Lexing.sub_lexeme lexbuf (lexbuf.Lexing.lex_start_pos + 2) (lexbuf.Lexing.lex_curr_pos + -2) in # 528 "parsing/lexer.mll" ( if !handle_docstrings && stars="" then (* (**) is an empty docstring *) DOCSTRING(Docstrings.docstring "" (Location.curr lexbuf)) else COMMENT (stars, Location.curr lexbuf) ) # 3309 "parsing/lexer.ml" | 42 -> # 534 "parsing/lexer.mll" ( let loc = Location.curr lexbuf in Location.prerr_warning loc Warnings.Comment_not_end; lexbuf.Lexing.lex_curr_pos <- lexbuf.Lexing.lex_curr_pos - 1; let curpos = lexbuf.lex_curr_p in lexbuf.lex_curr_p <- { curpos with pos_cnum = curpos.pos_cnum - 1 }; STAR ) # 3320 "parsing/lexer.ml" | 43 -> # 542 "parsing/lexer.mll" ( let at_beginning_of_line pos = (pos.pos_cnum = pos.pos_bol) in if not (at_beginning_of_line lexbuf.lex_start_p) then HASH else try directive lexbuf with Failure _ -> HASH ) # 3329 "parsing/lexer.ml" | 44 -> # 547 "parsing/lexer.mll" ( AMPERSAND ) # 3334 "parsing/lexer.ml" | 45 -> # 548 "parsing/lexer.mll" ( AMPERAMPER ) # 3339 "parsing/lexer.ml" | 46 -> # 549 "parsing/lexer.mll" ( BACKQUOTE ) # 3344 "parsing/lexer.ml" | 47 -> # 550 "parsing/lexer.mll" ( QUOTE ) # 3349 "parsing/lexer.ml" | 48 -> # 551 "parsing/lexer.mll" ( LPAREN ) # 3354 "parsing/lexer.ml" | 49 -> # 552 "parsing/lexer.mll" ( RPAREN ) # 3359 "parsing/lexer.ml" | 50 -> # 553 "parsing/lexer.mll" ( STAR ) # 3364 "parsing/lexer.ml" | 51 -> # 554 "parsing/lexer.mll" ( COMMA ) # 3369 "parsing/lexer.ml" | 52 -> # 555 "parsing/lexer.mll" ( MINUSGREATER ) # 3374 "parsing/lexer.ml" | 53 -> # 556 "parsing/lexer.mll" ( DOT ) # 3379 "parsing/lexer.ml" | 54 -> # 557 "parsing/lexer.mll" ( DOTDOT ) # 3384 "parsing/lexer.ml" | 55 -> let # 558 "parsing/lexer.mll" op # 3390 "parsing/lexer.ml" = Lexing.sub_lexeme lexbuf (lexbuf.Lexing.lex_start_pos + 1) lexbuf.Lexing.lex_curr_pos in # 558 "parsing/lexer.mll" ( DOTOP op ) # 3394 "parsing/lexer.ml" | 56 -> # 559 "parsing/lexer.mll" ( COLON ) # 3399 "parsing/lexer.ml" | 57 -> # 560 "parsing/lexer.mll" ( COLONCOLON ) # 3404 "parsing/lexer.ml" | 58 -> # 561 "parsing/lexer.mll" ( COLONEQUAL ) # 3409 "parsing/lexer.ml" | 59 -> # 562 "parsing/lexer.mll" ( COLONGREATER ) # 3414 "parsing/lexer.ml" | 60 -> # 563 "parsing/lexer.mll" ( SEMI ) # 3419 "parsing/lexer.ml" | 61 -> # 564 "parsing/lexer.mll" ( SEMISEMI ) # 3424 "parsing/lexer.ml" | 62 -> # 565 "parsing/lexer.mll" ( LESS ) # 3429 "parsing/lexer.ml" | 63 -> # 566 "parsing/lexer.mll" ( LESSMINUS ) # 3434 "parsing/lexer.ml" | 64 -> # 567 "parsing/lexer.mll" ( EQUAL ) # 3439 "parsing/lexer.ml" | 65 -> # 568 "parsing/lexer.mll" ( LBRACKET ) # 3444 "parsing/lexer.ml" | 66 -> # 569 "parsing/lexer.mll" ( LBRACKETBAR ) # 3449 "parsing/lexer.ml" | 67 -> # 570 "parsing/lexer.mll" ( LBRACKETLESS ) # 3454 "parsing/lexer.ml" | 68 -> # 571 "parsing/lexer.mll" ( LBRACKETGREATER ) # 3459 "parsing/lexer.ml" | 69 -> # 572 "parsing/lexer.mll" ( RBRACKET ) # 3464 "parsing/lexer.ml" | 70 -> # 573 "parsing/lexer.mll" ( LBRACE ) # 3469 "parsing/lexer.ml" | 71 -> # 574 "parsing/lexer.mll" ( LBRACELESS ) # 3474 "parsing/lexer.ml" | 72 -> # 575 "parsing/lexer.mll" ( BAR ) # 3479 "parsing/lexer.ml" | 73 -> # 576 "parsing/lexer.mll" ( BARBAR ) # 3484 "parsing/lexer.ml" | 74 -> # 577 "parsing/lexer.mll" ( BARRBRACKET ) # 3489 "parsing/lexer.ml" | 75 -> # 578 "parsing/lexer.mll" ( GREATER ) # 3494 "parsing/lexer.ml" | 76 -> # 579 "parsing/lexer.mll" ( GREATERRBRACKET ) # 3499 "parsing/lexer.ml" | 77 -> # 580 "parsing/lexer.mll" ( RBRACE ) # 3504 "parsing/lexer.ml" | 78 -> # 581 "parsing/lexer.mll" ( GREATERRBRACE ) # 3509 "parsing/lexer.ml" | 79 -> # 582 "parsing/lexer.mll" ( LBRACKETAT ) # 3514 "parsing/lexer.ml" | 80 -> # 583 "parsing/lexer.mll" ( LBRACKETATAT ) # 3519 "parsing/lexer.ml" | 81 -> # 584 "parsing/lexer.mll" ( LBRACKETATATAT ) # 3524 "parsing/lexer.ml" | 82 -> # 585 "parsing/lexer.mll" ( LBRACKETPERCENT ) # 3529 "parsing/lexer.ml" | 83 -> # 586 "parsing/lexer.mll" ( LBRACKETPERCENTPERCENT ) # 3534 "parsing/lexer.ml" | 84 -> # 587 "parsing/lexer.mll" ( BANG ) # 3539 "parsing/lexer.ml" | 85 -> # 588 "parsing/lexer.mll" ( INFIXOP0 "!=" ) # 3544 "parsing/lexer.ml" | 86 -> # 589 "parsing/lexer.mll" ( PLUS ) # 3549 "parsing/lexer.ml" | 87 -> # 590 "parsing/lexer.mll" ( PLUSDOT ) # 3554 "parsing/lexer.ml" | 88 -> # 591 "parsing/lexer.mll" ( PLUSEQ ) # 3559 "parsing/lexer.ml" | 89 -> # 592 "parsing/lexer.mll" ( MINUS ) # 3564 "parsing/lexer.ml" | 90 -> # 593 "parsing/lexer.mll" ( MINUSDOT ) # 3569 "parsing/lexer.ml" | 91 -> let # 595 "parsing/lexer.mll" op # 3575 "parsing/lexer.ml" = Lexing.sub_lexeme lexbuf lexbuf.Lexing.lex_start_pos lexbuf.Lexing.lex_curr_pos in # 596 "parsing/lexer.mll" ( PREFIXOP op ) # 3579 "parsing/lexer.ml" | 92 -> let # 597 "parsing/lexer.mll" op # 3585 "parsing/lexer.ml" = Lexing.sub_lexeme lexbuf lexbuf.Lexing.lex_start_pos lexbuf.Lexing.lex_curr_pos in # 598 "parsing/lexer.mll" ( PREFIXOP op ) # 3589 "parsing/lexer.ml" | 93 -> let # 599 "parsing/lexer.mll" op # 3595 "parsing/lexer.ml" = Lexing.sub_lexeme lexbuf lexbuf.Lexing.lex_start_pos lexbuf.Lexing.lex_curr_pos in # 600 "parsing/lexer.mll" ( INFIXOP0 op ) # 3599 "parsing/lexer.ml" | 94 -> let # 601 "parsing/lexer.mll" op # 3605 "parsing/lexer.ml" = Lexing.sub_lexeme lexbuf lexbuf.Lexing.lex_start_pos lexbuf.Lexing.lex_curr_pos in # 602 "parsing/lexer.mll" ( INFIXOP1 op ) # 3609 "parsing/lexer.ml" | 95 -> let # 603 "parsing/lexer.mll" op # 3615 "parsing/lexer.ml" = Lexing.sub_lexeme lexbuf lexbuf.Lexing.lex_start_pos lexbuf.Lexing.lex_curr_pos in # 604 "parsing/lexer.mll" ( INFIXOP2 op ) # 3619 "parsing/lexer.ml" | 96 -> let # 605 "parsing/lexer.mll" op # 3625 "parsing/lexer.ml" = Lexing.sub_lexeme lexbuf lexbuf.Lexing.lex_start_pos lexbuf.Lexing.lex_curr_pos in # 606 "parsing/lexer.mll" ( INFIXOP4 op ) # 3629 "parsing/lexer.ml" | 97 -> # 607 "parsing/lexer.mll" ( PERCENT ) # 3634 "parsing/lexer.ml" | 98 -> let # 608 "parsing/lexer.mll" op # 3640 "parsing/lexer.ml" = Lexing.sub_lexeme lexbuf lexbuf.Lexing.lex_start_pos lexbuf.Lexing.lex_curr_pos in # 609 "parsing/lexer.mll" ( INFIXOP3 op ) # 3644 "parsing/lexer.ml" | 99 -> let # 610 "parsing/lexer.mll" op # 3650 "parsing/lexer.ml" = Lexing.sub_lexeme lexbuf lexbuf.Lexing.lex_start_pos lexbuf.Lexing.lex_curr_pos in # 611 "parsing/lexer.mll" ( HASHOP op ) # 3654 "parsing/lexer.ml" | 100 -> let # 612 "parsing/lexer.mll" op # 3660 "parsing/lexer.ml" = Lexing.sub_lexeme lexbuf lexbuf.Lexing.lex_start_pos lexbuf.Lexing.lex_curr_pos in # 613 "parsing/lexer.mll" ( LETOP op ) # 3664 "parsing/lexer.ml" | 101 -> let # 614 "parsing/lexer.mll" op # 3670 "parsing/lexer.ml" = Lexing.sub_lexeme lexbuf lexbuf.Lexing.lex_start_pos lexbuf.Lexing.lex_curr_pos in # 615 "parsing/lexer.mll" ( ANDOP op ) # 3674 "parsing/lexer.ml" | 102 -> # 616 "parsing/lexer.mll" ( EOF ) # 3679 "parsing/lexer.ml" | 103 -> let # 617 "parsing/lexer.mll" illegal_char # 3685 "parsing/lexer.ml" = Lexing.sub_lexeme_char lexbuf lexbuf.Lexing.lex_start_pos in # 618 "parsing/lexer.mll" ( error lexbuf (Illegal_character illegal_char) ) # 3689 "parsing/lexer.ml" | __ocaml_lex_state -> lexbuf.Lexing.refill_buff lexbuf; __ocaml_lex_token_rec lexbuf __ocaml_lex_state and directive lexbuf = lexbuf.Lexing.lex_mem <- Array.make 8 (-1);(* L=1 [4] <- p ; *) lexbuf.Lexing.lex_mem.(4) <- lexbuf.Lexing.lex_curr_pos ; __ocaml_lex_directive_rec lexbuf 169 and __ocaml_lex_directive_rec lexbuf __ocaml_lex_state = match Lexing.new_engine __ocaml_lex_tables __ocaml_lex_state lexbuf with | 0 -> let # 621 "parsing/lexer.mll" num # 3704 "parsing/lexer.ml" = Lexing.sub_lexeme lexbuf lexbuf.Lexing.lex_mem.(0) lexbuf.Lexing.lex_mem.(1) and # 622 "parsing/lexer.mll" name # 3709 "parsing/lexer.ml" = Lexing.sub_lexeme lexbuf lexbuf.Lexing.lex_mem.(2) lexbuf.Lexing.lex_mem.(3) and # 622 "parsing/lexer.mll" directive # 3714 "parsing/lexer.ml" = Lexing.sub_lexeme lexbuf lexbuf.Lexing.lex_start_pos (lexbuf.Lexing.lex_mem.(3) + 1) in # 624 "parsing/lexer.mll" ( match int_of_string num with | exception _ -> (* PR#7165 *) let explanation = "line number out of range" in error lexbuf (Invalid_directive ("#" ^ directive, Some explanation)) | line_num -> (* Documentation says that the line number should be positive, but we have never guarded against this and it might have useful hackish uses. *) update_loc lexbuf (Some name) (line_num - 1) true 0; token lexbuf ) # 3730 "parsing/lexer.ml" | __ocaml_lex_state -> lexbuf.Lexing.refill_buff lexbuf; __ocaml_lex_directive_rec lexbuf __ocaml_lex_state and comment lexbuf = lexbuf.Lexing.lex_mem <- Array.make 2 (-1); __ocaml_lex_comment_rec lexbuf 174 and __ocaml_lex_comment_rec lexbuf __ocaml_lex_state = match Lexing.new_engine __ocaml_lex_tables __ocaml_lex_state lexbuf with | 0 -> # 639 "parsing/lexer.mll" ( comment_start_loc := (Location.curr lexbuf) :: !comment_start_loc; store_lexeme lexbuf; comment lexbuf ) # 3745 "parsing/lexer.ml" | 1 -> # 644 "parsing/lexer.mll" ( match !comment_start_loc with | [] -> assert false | [_] -> comment_start_loc := []; Location.curr lexbuf | _ :: l -> comment_start_loc := l; store_lexeme lexbuf; comment lexbuf ) # 3756 "parsing/lexer.ml" | 2 -> # 652 "parsing/lexer.mll" ( string_start_loc := Location.curr lexbuf; store_string_char '\"'; is_in_string := true; let _loc = try string lexbuf with Error (Unterminated_string, str_start) -> match !comment_start_loc with | [] -> assert false | loc :: _ -> let start = List.hd (List.rev !comment_start_loc) in comment_start_loc := []; error_loc loc (Unterminated_string_in_comment (start, str_start)) in is_in_string := false; store_string_char '\"'; comment lexbuf ) # 3776 "parsing/lexer.ml" | 3 -> let # 668 "parsing/lexer.mll" delim # 3782 "parsing/lexer.ml" = Lexing.sub_lexeme lexbuf lexbuf.Lexing.lex_mem.(0) (lexbuf.Lexing.lex_curr_pos + -1) in # 669 "parsing/lexer.mll" ( string_start_loc := Location.curr lexbuf; store_lexeme lexbuf; is_in_string := true; let _loc = try quoted_string delim lexbuf with Error (Unterminated_string, str_start) -> match !comment_start_loc with | [] -> assert false | loc :: _ -> let start = List.hd (List.rev !comment_start_loc) in comment_start_loc := []; error_loc loc (Unterminated_string_in_comment (start, str_start)) in is_in_string := false; store_string_char '|'; store_string delim; store_string_char '}'; comment lexbuf ) # 3803 "parsing/lexer.ml" | 4 -> # 688 "parsing/lexer.mll" ( store_lexeme lexbuf; comment lexbuf ) # 3808 "parsing/lexer.ml" | 5 -> let # 689 "parsing/lexer.mll" nl # 3814 "parsing/lexer.ml" = Lexing.sub_lexeme lexbuf (lexbuf.Lexing.lex_start_pos + 1) (lexbuf.Lexing.lex_curr_pos + -1) in # 690 "parsing/lexer.mll" ( update_loc lexbuf None 1 false 1; store_string_char '\''; store_normalized_newline nl; store_string_char '\''; comment lexbuf ) # 3823 "parsing/lexer.ml" | 6 -> # 697 "parsing/lexer.mll" ( store_lexeme lexbuf; comment lexbuf ) # 3828 "parsing/lexer.ml" | 7 -> # 699 "parsing/lexer.mll" ( store_lexeme lexbuf; comment lexbuf ) # 3833 "parsing/lexer.ml" | 8 -> # 701 "parsing/lexer.mll" ( store_lexeme lexbuf; comment lexbuf ) # 3838 "parsing/lexer.ml" | 9 -> # 703 "parsing/lexer.mll" ( store_lexeme lexbuf; comment lexbuf ) # 3843 "parsing/lexer.ml" | 10 -> # 705 "parsing/lexer.mll" ( store_lexeme lexbuf; comment lexbuf ) # 3848 "parsing/lexer.ml" | 11 -> # 707 "parsing/lexer.mll" ( match !comment_start_loc with | [] -> assert false | loc :: _ -> let start = List.hd (List.rev !comment_start_loc) in comment_start_loc := []; error_loc loc (Unterminated_comment start) ) # 3859 "parsing/lexer.ml" | 12 -> let # 714 "parsing/lexer.mll" nl # 3865 "parsing/lexer.ml" = Lexing.sub_lexeme lexbuf lexbuf.Lexing.lex_start_pos lexbuf.Lexing.lex_curr_pos in # 715 "parsing/lexer.mll" ( update_loc lexbuf None 1 false 0; store_normalized_newline nl; comment lexbuf ) # 3872 "parsing/lexer.ml" | 13 -> # 720 "parsing/lexer.mll" ( store_lexeme lexbuf; comment lexbuf ) # 3877 "parsing/lexer.ml" | 14 -> # 722 "parsing/lexer.mll" ( store_lexeme lexbuf; comment lexbuf ) # 3882 "parsing/lexer.ml" | __ocaml_lex_state -> lexbuf.Lexing.refill_buff lexbuf; __ocaml_lex_comment_rec lexbuf __ocaml_lex_state and string lexbuf = lexbuf.Lexing.lex_mem <- Array.make 2 (-1); __ocaml_lex_string_rec lexbuf 218 and __ocaml_lex_string_rec lexbuf __ocaml_lex_state = match Lexing.new_engine __ocaml_lex_tables __ocaml_lex_state lexbuf with | 0 -> # 726 "parsing/lexer.mll" ( lexbuf.lex_start_p ) # 3894 "parsing/lexer.ml" | 1 -> let # 727 "parsing/lexer.mll" nl # 3900 "parsing/lexer.ml" = Lexing.sub_lexeme lexbuf (lexbuf.Lexing.lex_start_pos + 1) lexbuf.Lexing.lex_mem.(0) and # 727 "parsing/lexer.mll" space # 3905 "parsing/lexer.ml" = Lexing.sub_lexeme lexbuf lexbuf.Lexing.lex_mem.(0) lexbuf.Lexing.lex_curr_pos in # 728 "parsing/lexer.mll" ( update_loc lexbuf None 1 false (String.length space); if in_comment () then begin store_string_char '\\'; store_normalized_newline nl; store_string space; end; string lexbuf ) # 3916 "parsing/lexer.ml" | 2 -> let # 736 "parsing/lexer.mll" c # 3922 "parsing/lexer.ml" = Lexing.sub_lexeme_char lexbuf (lexbuf.Lexing.lex_start_pos + 1) in # 737 "parsing/lexer.mll" ( store_escaped_char lexbuf (char_for_backslash c); string lexbuf ) # 3927 "parsing/lexer.ml" | 3 -> # 740 "parsing/lexer.mll" ( store_escaped_char lexbuf (char_for_decimal_code lexbuf 1); string lexbuf ) # 3933 "parsing/lexer.ml" | 4 -> # 743 "parsing/lexer.mll" ( store_escaped_char lexbuf (char_for_octal_code lexbuf 2); string lexbuf ) # 3939 "parsing/lexer.ml" | 5 -> # 746 "parsing/lexer.mll" ( store_escaped_char lexbuf (char_for_hexadecimal_code lexbuf 2); string lexbuf ) # 3945 "parsing/lexer.ml" | 6 -> # 749 "parsing/lexer.mll" ( store_escaped_uchar lexbuf (uchar_for_uchar_escape lexbuf); string lexbuf ) # 3951 "parsing/lexer.ml" | 7 -> # 752 "parsing/lexer.mll" ( if not (in_comment ()) then begin (* Should be an error, but we are very lax. error lexbuf (Illegal_escape (Lexing.lexeme lexbuf, None)) *) let loc = Location.curr lexbuf in Location.prerr_warning loc Warnings.Illegal_backslash; end; store_lexeme lexbuf; string lexbuf ) # 3965 "parsing/lexer.ml" | 8 -> let # 762 "parsing/lexer.mll" nl # 3971 "parsing/lexer.ml" = Lexing.sub_lexeme lexbuf lexbuf.Lexing.lex_start_pos lexbuf.Lexing.lex_curr_pos in # 763 "parsing/lexer.mll" ( update_loc lexbuf None 1 false 0; store_normalized_newline nl; string lexbuf ) # 3978 "parsing/lexer.ml" | 9 -> # 768 "parsing/lexer.mll" ( is_in_string := false; error_loc !string_start_loc Unterminated_string ) # 3984 "parsing/lexer.ml" | 10 -> let # 770 "parsing/lexer.mll" c # 3990 "parsing/lexer.ml" = Lexing.sub_lexeme_char lexbuf lexbuf.Lexing.lex_start_pos in # 771 "parsing/lexer.mll" ( store_string_char c; string lexbuf ) # 3995 "parsing/lexer.ml" | __ocaml_lex_state -> lexbuf.Lexing.refill_buff lexbuf; __ocaml_lex_string_rec lexbuf __ocaml_lex_state and quoted_string delim lexbuf = __ocaml_lex_quoted_string_rec delim lexbuf 245 and __ocaml_lex_quoted_string_rec delim lexbuf __ocaml_lex_state = match Lexing.engine __ocaml_lex_tables __ocaml_lex_state lexbuf with | 0 -> let # 775 "parsing/lexer.mll" nl # 4008 "parsing/lexer.ml" = Lexing.sub_lexeme lexbuf lexbuf.Lexing.lex_start_pos lexbuf.Lexing.lex_curr_pos in # 776 "parsing/lexer.mll" ( update_loc lexbuf None 1 false 0; store_normalized_newline nl; quoted_string delim lexbuf ) # 4015 "parsing/lexer.ml" | 1 -> # 781 "parsing/lexer.mll" ( is_in_string := false; error_loc !string_start_loc Unterminated_string ) # 4021 "parsing/lexer.ml" | 2 -> let # 783 "parsing/lexer.mll" edelim # 4027 "parsing/lexer.ml" = Lexing.sub_lexeme lexbuf (lexbuf.Lexing.lex_start_pos + 1) (lexbuf.Lexing.lex_curr_pos + -1) in # 784 "parsing/lexer.mll" ( if delim = edelim then lexbuf.lex_start_p else (store_lexeme lexbuf; quoted_string delim lexbuf) ) # 4034 "parsing/lexer.ml" | 3 -> let # 788 "parsing/lexer.mll" c # 4040 "parsing/lexer.ml" = Lexing.sub_lexeme_char lexbuf lexbuf.Lexing.lex_start_pos in # 789 "parsing/lexer.mll" ( store_string_char c; quoted_string delim lexbuf ) # 4045 "parsing/lexer.ml" | __ocaml_lex_state -> lexbuf.Lexing.refill_buff lexbuf; __ocaml_lex_quoted_string_rec delim lexbuf __ocaml_lex_state and skip_hash_bang lexbuf = __ocaml_lex_skip_hash_bang_rec lexbuf 254 and __ocaml_lex_skip_hash_bang_rec lexbuf __ocaml_lex_state = match Lexing.engine __ocaml_lex_tables __ocaml_lex_state lexbuf with | 0 -> # 794 "parsing/lexer.mll" ( update_loc lexbuf None 3 false 0 ) # 4057 "parsing/lexer.ml" | 1 -> # 796 "parsing/lexer.mll" ( update_loc lexbuf None 1 false 0 ) # 4062 "parsing/lexer.ml" | 2 -> # 797 "parsing/lexer.mll" ( () ) # 4067 "parsing/lexer.ml" | __ocaml_lex_state -> lexbuf.Lexing.refill_buff lexbuf; __ocaml_lex_skip_hash_bang_rec lexbuf __ocaml_lex_state ;; # 799 "parsing/lexer.mll" let token_with_comments lexbuf = match !preprocessor with | None -> token lexbuf | Some (_init, preprocess) -> preprocess token lexbuf type newline_state = | NoLine (* There have been no blank lines yet. *) | NewLine (* There have been no blank lines, and the previous token was a newline. *) | BlankLine (* There have been blank lines. *) type doc_state = | Initial (* There have been no docstrings yet *) | After of docstring list (* There have been docstrings, none of which were preceded by a blank line *) | Before of docstring list * docstring list * docstring list (* There have been docstrings, some of which were preceded by a blank line *) and docstring = Docstrings.docstring let token lexbuf = let post_pos = lexeme_end_p lexbuf in let attach lines docs pre_pos = let open Docstrings in match docs, lines with | Initial, _ -> () | After a, (NoLine | NewLine) -> set_post_docstrings post_pos (List.rev a); set_pre_docstrings pre_pos a; | After a, BlankLine -> set_post_docstrings post_pos (List.rev a); set_pre_extra_docstrings pre_pos (List.rev a) | Before(a, f, b), (NoLine | NewLine) -> set_post_docstrings post_pos (List.rev a); set_post_extra_docstrings post_pos (List.rev_append f (List.rev b)); set_floating_docstrings pre_pos (List.rev f); set_pre_extra_docstrings pre_pos (List.rev a); set_pre_docstrings pre_pos b | Before(a, f, b), BlankLine -> set_post_docstrings post_pos (List.rev a); set_post_extra_docstrings post_pos (List.rev_append f (List.rev b)); set_floating_docstrings pre_pos (List.rev_append f (List.rev b)); set_pre_extra_docstrings pre_pos (List.rev a) in let rec loop lines docs lexbuf = match token_with_comments lexbuf with | COMMENT (s, loc) -> add_comment (s, loc); let lines' = match lines with | NoLine -> NoLine | NewLine -> NoLine | BlankLine -> BlankLine in loop lines' docs lexbuf | EOL -> let lines' = match lines with | NoLine -> NewLine | NewLine -> BlankLine | BlankLine -> BlankLine in loop lines' docs lexbuf | DOCSTRING doc -> Docstrings.register doc; add_docstring_comment doc; let docs' = if Docstrings.docstring_body doc = "/*" then match docs with | Initial -> Before([], [doc], []) | After a -> Before (a, [doc], []) | Before(a, f, b) -> Before(a, doc :: b @ f, []) else match docs, lines with | Initial, (NoLine | NewLine) -> After [doc] | Initial, BlankLine -> Before([], [], [doc]) | After a, (NoLine | NewLine) -> After (doc :: a) | After a, BlankLine -> Before (a, [], [doc]) | Before(a, f, b), (NoLine | NewLine) -> Before(a, f, doc :: b) | Before(a, f, b), BlankLine -> Before(a, b @ f, [doc]) in loop NoLine docs' lexbuf | tok -> attach lines docs (lexeme_start_p lexbuf); tok in loop NoLine Initial lexbuf let init () = is_in_string := false; comment_start_loc := []; comment_list := []; match !preprocessor with | None -> () | Some (init, _preprocess) -> init () let set_preprocessor init preprocess = escaped_newlines := true; preprocessor := Some (init, preprocess) # 4184 "parsing/lexer.ml"