Caml1999I037 { ,Stdlib__Char!t3;@@@A$charB@@@@@@@(char.mli\\@@A@@@A@$code4@@@@#intA@@@@@ݐ)%identityAA @@@__ @@-A@@#chr5@@@@0@@@@@@.b==/b=R@@@B@@'escaped6@?@@@&stringQ@@@@@@CgDg@@UC@@'compare7@\@@@@@@@G@@@@@@@@[rqq\rq@@mD@@%equal8@@@@@@@@$boolE@@@@@@@@tx  ux  @@E@@Ӡ%Ascii9@#min?@@@@Q  Q  @@F@@#max@@@@@T  T  @@G@@(is_validA@@@@5@@@@@@Y 9 ;Y 9 V@@H@@(is_upperB@@@@H@@@@@@]  ]  @@I@@(is_lowerC@@@@[@@@@@@aa@@J@@)is_letterD@@@@n@@@@@@eACeA_@@K@@+is_alphanumE@@@@@@@@@@hh@@L@@(is_whiteF@@@@@@@@@@kk@@M@@(is_blankG@@@@@@@@@@r13r1N@@+N@@*is_graphicH@*@@@@@@@@@,v-v@@>O@@(is_printI@=@@@@@@@@@?z@z@@QP@@*is_controlJ@P@@@@@@@@@R}S}@@dQ@@(is_digitK@c@@@@@@@@@ef@@wR@@,digit_to_intL@v@@@d@@@@@@xsuys@@S@@,digit_of_intM@s@@@@@@@@@242R@@T@@,is_hex_digitN@@@@,@@@@@@@@U@@0hex_digit_to_intO@@@@@@@@@@@@V@@6lower_hex_digit_of_intP@@@@@@@@@@@@W@@6upper_hex_digit_of_intQ@@@@@@@@@@sus@@X@@)uppercaseR@@@@@@@@@@DFDb@@Y@@)lowercaseS@@@@@@@@@@2@@Z@@@@M  @[@@@/lowercase_ascii:@@@@@@@@@@ @@&\@@/uppercase_ascii;@%@@@)@@@@@@'RR(Rt@@9]@@+seeded_hash<@"@@@@@@@+@@@@@@@@?@@@Q^@@$hash=@@@@=@@@@@@QR@@c_@@*unsafe_chr>@L@@@f@@@@@)%identityAAN@@@h  i 9@@z`@@@j:.,Stdlib__Char0`(caJ&Stdlib0Lku]8_٠8CamlinternalFormatBasics0%FU(Q/Tu@@@Caml1999T037o) `>8C,Stdlib__Char*ocaml.text&_none_@@A G Character operations. Characters are the elements of [string] and [bytes] values. Characters represent bytes, that is an integer in the range \[[0x00];[0xFF]\]. Some of the functions of this module interpret the characters in the range \[[0x00];[0x7F]\] as the characters of the ASCII character set. (char.mliP77Xx@@@@@@3@@@@@@#intA;@@#intA@@@@@;@A@$charB;@@$charA@@@@@A@A@&stringQ;@@&stringA@@@@@G@@@%bytesC;@@%bytesA@@@@@M@@@%floatD;@@%floatA@@@@@S@@@$boolE;@@%falsec@@]@$trued@@c@@@A@@@@@d@A@$unitF;@@"()e@@n@@@A@@@@@o@A@ #exnG;@@@A@@@@@s@@@#effH;@@O@A@A@@@@@@|@@@,continuationI;@@Q@@P@B,continuationA@nY@@@@@@@@@%arrayJ;@@R@A%arrayA@@@@@@@@@ $listK;@@S@A"[]f@@@"::g@@@T@@@ @@A@Y@@@@@@@@&optionL;@@V@A$Noneh@@@$Somei@@@@@A@Y@@@@@@@@)nativeintM;@@)nativeintA@@@@@@@@%int32N;@@%int32A@@@@@@@@%int64O;@@%int64A@@@@@@@@&lazy_tP;@@X@A&lazy_tA@Y@@@@@@@@ 5extension_constructorR;@@5extension_constructorA@@@@@@@@*floatarrayS;@@*floatarrayA@@@@@@@@&iarrayT;@@Y@A&iarrayA@Y@@@@@@@@ *atomic_locU;@@Z@A*atomic_locA@@@@@@ @@@ .Assert_failure`#@@@@@J@@@@@@@@[@@A!=ocaml.warn_on_literal_pattern%@&@0Division_by_zero]#@@@A+ . .@+End_of_file\#$@@@A366@'FailureY#,@'@@A<??@0Invalid_argumentX#5@0@@AE$H#H@-Match_failureV#>@@=@9@;@@a@@AV5Y4Y@)Not_foundZ#O@@@A^=a<a@-Out_of_memoryW#W@@@AfEiDi@.Stack_overflow^#_@@@AnMqLq@.Sys_blocked_io_#g@@@AvUyTy@)Sys_error[#o@j@@A^]@:Undefined_recursive_modulea#x@@w@s@u@@h@@Aon@:Continuation_already_takenb#@@@Awv@&Stdlib@A; {1:characters Characters} ZZ@@@@@@A+!tA\\@@;@@@A@@@@@@@\\@)ocaml.docɐ & An alias for the type of characters. ]]@@@@@@@A@@@@@Aг$char\@@ 3@+;@@@A3@@@@@@@@'$@@@A &@@(%퐠$#@##@@@#@#@@32@$code__@б@гɠ$char__@@ @@@3@[U@A@@гޠ#int _ _@@ @@@@@@@@@@)%identityAA @@@__ @e * Return the integer code of the argument. )`  *` ;@@@@@@@BA@@@v>@@@@@@8#chrAb=ABb=D@б@г#intLb=GMb=J@@ @@@3NMMNNNNN@Qf?@A@@г($char[b=N\b=R@@ @@@@@@@@@@@fb== @ Return the character with the given integer code. @raise Invalid_argument if the argument is outside the range \[[0x00];[0xFF]\]. scSSte@@@@@@@B@@@@@@@@@1'escapedgg@б@гb$chargg@@ @@@3@J_8@A@@гk&stringgg@@ @@@@@@@@@@@g @  Return a string representing the given character, with special characters escaped following the lexical conventions of OCaml. All characters outside the ASCII printable range \[[0x20];[0x7E]\] are escaped, as well as backslash, double-quote, and single-quote. hl@@@@@@@C@@@А@@@@@@1ݐ N {1:predicates Predicates and comparisons} See also the {!Ascii} module. npKo@@@@@@3@CX1@A'comparerqurq|@б@гE!trq~rq@@ @@@@@б@гT!trqrq@@ @@@)@@гࠐ#int rqrq@@ @@@6@@@@@9@@@%@@<( @@@rqq@d The comparison function for characters, with the same specification as {!Stdlib.compare}. Along with the type [t], this function [compare] allows the module [Char] to be passed as argument to the functors {!Set.Make} and {!Map.Make}. (s)v f @@@@@@@AD@@@t<@@@@@@[%equal?x  @x  @б@г!tJx  Kx  @@ @@@3LKKLLLLL@to8@A@@б@г!t[x  \x  @@ @@@@@г$boolhx  ix  @@ @@@@@@@@!@@@'@@$* @@@vx  @ / The equal function for chars. @since 4.03 y  z  @@@@@@@E@@@@@@@@@C ' {1:ascii_characters ASCII characters} |  |  @@@@@@3@Uj1@A%Ascii-BM  M  @[@@Бǐ; {1:characters Characters} O  O  @@@@@@3@#@A#minQ  Q  @г$charQ  Q  @@ @@@@@@Q  @)4 [min] is ['\x00']. R  R  @@@@@@@F@@@9@@@@@@6#maxT  T  @гڠ$char T  T  @@ @@@3@pI6@A@@@T   @`4 [max] is ['\x7F']. $U  %U  @@@@@@@=G@@@p8@@@@@@!FE; {1:predicates Predicates} BW  CW  7@@@@@@3A@@AAAAA@3F1@A(is_validNY 9 ?OY 9 G@б@г&$charYY 9 JZY 9 N@@ @@@@@г$boolfY 9 RgY 9 V@@ @@@'@@@@@*@@@qY 9 ; @ x [is_valid c] is [true] if and only if [c] is an ASCII character, that is a byte in the range \[{!min};{!max}\]. ~Z W Z[  @@@@@@@H@@@@@@@@@I(is_upper]  ]  @б@гm$char]  ]  @@ @@@3@b]8@A@@гd$bool]  ]  @@ @@@@@@@@@@@]   @ [is_upper c] is [true] if and only if [c] is an ASCII uppercase letter ['A'] to ['Z'], that is a byte in the range \[[0x41];[0x5A]\]. ^  _D@@@@@@@I@@@ې@@@@@@1(is_loweraa@б@г$charaa@@ @@@3@J_8@A@@г$boolaa@@ @@@@@@@@@@@a @L [is_lower c] is [true] if and only if [c] is an ASCII lowercase letter ['a'] to ['z'], that is a byte in the range \[[0x61];[0x7A]\]. bc?@@@@@@@)J@@@\$@@@@@@1)is_letter'eAG(eAP@б@г$char2eAS3eAW@@ @@@343344444@J_8@A@@г$boolAeA[BeA_@@ @@@@@@@@@@@LeAC @ 6 [is_letter c] is {!is_lower}[ c || ]{!is_upper}[ c]. Yf`bZf`@@@@@@@rK@@@m@@@@@@1+is_alphanumphqh@б@гH$char{h|h@@ @@@3}||}}}}}@J_8@A@@г?$boolhh@@ @@@@@@@@@@@h @ސ 9 [is_alphanum c] is {!is_letter}[ c || ]{!is_digit}[ c]. ii@@@@@@@L@@@@@@@@@1(is_whitekk@б@г$charkk@@ @@@3@J_8@A@@г$boolkk@@ @@@@@@@@@@@k @'  [is_white c] is [true] if and only if [c] is an ASCII white space character, that is one of tab ['\t'] ([0x09]), newline ['\n'] ([0x0A]), vertical tab ([0x0B]), form feed ([0x0C]), carriage return ['\r'] ([0x0D]) or space [' '] ([0x20]), l "p/@@@@@@@M@@@7@@@@@@1(is_blank r17r1?@б@гڠ$char r1Br1F@@ @@@3@J_8@A@@гѠ$boolr1Jr1N@@ @@@@@@@@@@@'r13 @p [is_blank c] is [true] if and only if [c] is an ASCII blank character, that is either space [' '] ([0x20]) or tab ['\t'] ([0x09]). 4sOQ5t@@@@@@@MN@@@H@@@@@@1*is_graphic!KvLv@б@г#$charVvWv@@ @@@3XWWXXXXX@J_8@A@@г$boolevfv@@ @@@@@@@@@@@pv @ [is_graphic c] is [true] if and only if [c] is an ASCII graphic character, that is a byte in the range \[[0x21];[0x7E]\]. }w~xH@@@@@@@O@@@@@@@@@1(is_print"zz@б@гl$charzz@@ @@@3@J_8@A@@гc$boolzz@@ @@@@@@@@@@@z @ / [is_print c] is {!is_graphic}[ c || c = ' ']. {{@@@@@@@P@@@ڐ@@@@@@1*is_control#}}@б@г$char}}@@ @@@3@J_8@A@@г$bool}}@@ @@@@@@@@@@@} @K [is_control c] is [true] if and only if [c] is an ASCII control character, that is a byte in the range \[[0x00];[0x1F]\] or [0x7F]. ~S@@@@@@@(Q@@@[#@@@@@@110 # {1:decimal_digits Decimal digits} -.@@@@@@3,++,,,,,@CX1@A(is_digit$9:@б@г$charDE@@ @@@@@г$boolQR@@ @@@'@@@@@*@@@\ @ [is_digit c] is [true] if and only if [c] is an ASCII decimal digit ['0'] to ['9'], that is a byte in the range \[[0x30];[0x39]\]. ij*q@@@@@@@R@@@}@@@@@@I,digit_to_int%sys@б@гX$charss@@ @@@3@b]8@A@@гm#intss@@ @@@@@@@@@@@su @ [digit_to_int c] is the numerical value of a digit that satisfies {!is_digit}. Raises [Invalid_argument] if {!is_digit}[ c] is [false].  0@@@@@@@S@@@Ɛ@@@@@@1,digit_of_int&282D@б@г#int2G2J@@ @@@3@J_8@A@@г$char2N2R@@ @@@@@@@@@@@24 @7 Z [digit_of_int n] is an ASCII decimal digit for the decimal value [abs (n mod 10)]. SU@@@@@@@T@@@G@@@@@@1 # {1:hex_digits Hexadecimal digits} @@@@@@3@CX1@A,is_hex_digit'%&@б@г$char01@@ @@@@@г$bool=>@@ @@@'@@@@@*@@@H @ [is_hex_digit c] is [true] if and only if [c] is an ASCII hexadecimal digit ['0'] to ['9'], ['a'] to ['f'] or ['A'] to ['F'], that is a byte in one of the ranges \[[0x30];[0x39]\], \[[0x41];[0x46]\], \[[0x61];[0x66]\]. UV@@@@@@@nU@@@i@@@@@@I0hex_digit_to_int(lm@б@гD$charwx@@ @@@3yxxyyyyy@b]8@A@@гY#int@@ @@@@@@@@@@@ @ڐ [hex_digit_to_int c] is the numerical value of a digit that satisfies {!is_hex_digit}. Raises [Invalid_argument] if {!is_hex_digit}[ c] is [false].  "@@@@@@@V@@@@@@@@@16lower_hex_digit_of_int)@б@г#int@@ @@@3@J_8@A@@г$char@@ @@@@@@@@@@@ @# u [lower_hex_digit_of_int n] is a lowercase ASCII hexadecimal digit for the hexadecimal value [abs (n mod 16)]. Aq@@@@@@@ W@@@3@@@@@@16upper_hex_digit_of_int*sys@б@гܠ#int s s@@ @@@3        @J_8@A@@г堐$char s s@@ @@@@@@@@@@@ #su @l v [upper_hex_digit_of_int n] is an uppercase ASCII hexadecimal digit for the hexadecimal value [abs (n mod 16)].  0 1@@@@@@@ IX@@@| D@@@@@@1 R Q> {1:casing Casing transforms}  N OB@@@@@@3 M L L M M M M M@CX1@A)uppercase+ ZDJ [DS@б@г 2$char eDV fDZ@@ @@@@@г ?$char rD^ sDb@@ @@@'@@@@@*@@@ }DF @Ɛ [uppercase c] is [c] with ASCII characters ['a'] to ['z'] respectively mapped to uppercase characters ['A'] to ['Z']. Other characters are left untouched.  ce @@@@@@@ Y@@@ @@@@@@I)lowercase,  #@б@г y$char & *@@ @@@3        @b]8@A@@г $char . 2@@ @@@@@@@@@@@  @ [lowercase c] is [c] with ASCII characters ['A'] to ['Z'] respectively mapped to lowercase characters ['a'] to ['z']. Other characters are left untouched.  35 @@@@@@@ Z@@@ 琠@@@@@@1@@@y@Y2@@@]@=@@@hA@!@@[@;@@u@U.@@@oH@@3        @\qJ@A-l M   @@Z " r ASCII character set support. These functions give meaning to the integers \[[0x00];[0x7F]\] of the {{:https://en.wikipedia.org/wiki/ASCII#Character_set}ASCII character set}. Since the UTF-8 encoding of Unicode has the same encoding and character semantics (U+0000 to U+001F) for these bytes, the functions can be safely used on elements of UTF-8 encoded [string] and [bytes] values. However the functions only deal with ASCII related matters. For example the notion of Unicode whitespace is much larger than the ASCII whitespace determined by {!Char.Ascii.is_white}. @since 5.4  ~   L o @@@@@@@ "M  @@/lowercase_ascii. , -@б@г $char 7 8@@ @@@3 9 8 8 9 9 9 9 9@@wd@D/@@@pI@)@@t@T-@ @@X@%@@r@?@@@lE@@@@WV@VV@@@V@V@S@A>=@@г I$char | } @@ @@@E@@@K@@HN@@@  @А @ Use the equivalent {!Ascii.lowercase} instead. @since 4.03     >P@@@@@@@ \@@@ @@@@@@g/uppercase_ascii/ RV Re@б@г $char Rh Rl@@ @@@3        @8@A@@г $char Rp Rt@@ @@@@@@@@@@@ RR @  @ Use the equivalent {!Ascii.uppercase} instead. @since 4.03  uu @@@@@@@ ]@@@ ) 񐠠@@@@@@1  5 {1:hashing Hashing}   @@@@@@3        @CX1@A+seeded_hash0  @б@г 堐#int  @@ @@@@@б@г u!t ! "@@ @@@)@@г #int . /@@ @@@6@@@@@9@@@%@@<( @@@ <@ A seeded hash function for characters, with the same output value as {!Hashtbl.seeded_hash}. This function allows this module to be passed as argument to the functor {!Hashtbl.MakeSeeded}. @since 5.1  I J@@@@@@@ b^@@@  ]@@@@@@[$hash1 ` a@б@г !t k l@@ @@@3 m l l m m m m m@to8@A@@г M#int z {@@ @@@@@@@@@@@  @ ΐ An unseeded hash function for characters, with the same output value as {!Hashtbl.hash}. This function allows this module to be passed as argument to the functor {!Hashtbl.Make}. @since 5.1   @@@@@@@ _@@@  @@@@@@1  "/*  @@@@@@3        @CX1@A*unsafe_chr2    @б@г #int     #@@ @@@@@г $char  '  +@@ @@@'@@@@@*@@)%identityAA ɠ@@@     9@@ `@@@@6@ B J@ H the GNU Lesser General Public License version 2.1, with the  CK DKN@ H special exception on linking described in the file LICENSE.  ILOO JLO@ H  OM PM@ H************************************************************************ UN VN5@ H* Character operations. Characters are the elements of [string] and [bytes] values. Characters represent bytes, that is an integer in the range \[[0x00];[0xFF]\]. Some of the functions of this module interpret the characters in the range \[[0x00];[0x7F]\] as the characters of the ASCII character set.  [<* {1:characters Characters}  '* An alias for the type of characters.  +* Return the integer code of the argument.  ; * Return the character with the given integer code. @raise Invalid_argument if the argument is outside the range \[[0x00];[0xFF]\].  * Return a string representing the given character, with special characters escaped following the lexical conventions of OCaml. All characters outside the ASCII printable range \[[0x20];[0x7E]\] are escaped, as well as backslash, double-quote, and single-quote.  O* {1:predicates Predicates and comparisons} See also the {!Ascii} module.  * The comparison function for characters, with the same specification as {!Stdlib.compare}. Along with the type [t], this function [compare] allows the module [Char] to be passed as argument to the functors {!Set.Make} and {!Map.Make}.  H 0* The equal function for chars. @since 4.03  (* {1:ascii_characters ASCII characters} ՠ s* ASCII character set support. These functions give meaning to the integers \[[0x00];[0x7F]\] of the {{:https://en.wikipedia.org/wiki/ASCII#Character_set}ASCII character set}. Since the UTF-8 encoding of Unicode has the same encoding and character semantics (U+0000 to U+001F) for these bytes, the functions can be safely used on elements of UTF-8 encoded [string] and [bytes] values. However the functions only deal with ASCII related matters. For example the notion of Unicode whitespace is much larger than the ASCII whitespace determined by {!Char.Ascii.is_white}. @since 5.4 Z<* {1:characters Characters} 5* [min] is ['\x00']. 5* [max] is ['\x7F']. ^<* {1:predicates Predicates} C y* [is_valid c] is [true] if and only if [c] is an ASCII character, that is a byte in the range \[{!min};{!max}\].  * [is_upper c] is [true] if and only if [c] is an ASCII uppercase letter ['A'] to ['Z'], that is a byte in the range \[[0x41];[0x5A]\]. Ġ * [is_lower c] is [true] if and only if [c] is an ASCII lowercase letter ['a'] to ['z'], that is a byte in the range \[[0x61];[0x7A]\]. ~ 7* [is_letter c] is {!is_lower}[ c || ]{!is_upper}[ c]. 8 :* [is_alphanum c] is {!is_letter}[ c || ]{!is_digit}[ c].   * [is_white c] is [true] if and only if [c] is an ASCII white space character, that is one of tab ['\t'] ([0x09]), newline ['\n'] ([0x0A]), vertical tab ([0x0B]), form feed ([0x0C]), carriage return ['\r'] ([0x0D]) or space [' '] ([0x20]),  * [is_blank c] is [true] if and only if [c] is an ASCII blank character, that is either space [' '] ([0x20]) or tab ['\t'] ([0x09]). f * [is_graphic c] is [true] if and only if [c] is an ASCII graphic character, that is a byte in the range \[[0x21];[0x7E]\].  0* [is_print c] is {!is_graphic}[ c || c = ' ']. ڠ * [is_control c] is [true] if and only if [c] is an ASCII control character, that is a byte in the range \[[0x00];[0x1F]\] or [0x7F].  $* {1:decimal_digits Decimal digits} y * [is_digit c] is [true] if and only if [c] is an ASCII decimal digit ['0'] to ['9'], that is a byte in the range \[[0x30];[0x39]\]. @ * [digit_to_int c] is the numerical value of a digit that satisfies {!is_digit}. Raises [Invalid_argument] if {!is_digit}[ c] is [false].  [* [digit_of_int n] is an ASCII decimal digit for the decimal value [abs (n mod 10)].  $* {1:hex_digits Hexadecimal digits}  * [is_hex_digit c] is [true] if and only if [c] is an ASCII hexadecimal digit ['0'] to ['9'], ['a'] to ['f'] or ['A'] to ['F'], that is a byte in one of the ranges \[[0x30];[0x39]\], \[[0x41];[0x46]\], \[[0x61];[0x66]\]. ` * [hex_digit_to_int c] is the numerical value of a digit that satisfies {!is_hex_digit}. Raises [Invalid_argument] if {!is_hex_digit}[ c] is [false].  v* [lower_hex_digit_of_int n] is a lowercase ASCII hexadecimal digit for the hexadecimal value [abs (n mod 16)]. Ԡ w* [upper_hex_digit_of_int n] is an uppercase ASCII hexadecimal digit for the hexadecimal value [abs (n mod 16)]. ?* {1:casing Casing transforms} s * [uppercase c] is [c] with ASCII characters ['a'] to ['z'] respectively mapped to uppercase characters ['A'] to ['Z']. Other characters are left untouched. : * [lowercase c] is [c] with ASCII characters ['A'] to ['Z'] respectively mapped to lowercase characters ['a'] to ['z']. Other characters are left untouched.  A* Use the equivalent {!Ascii.lowercase} instead. @since 4.03 6 A* Use the equivalent {!Ascii.uppercase} instead. @since 4.03 6* {1:hashing Hashing} ՠ * A seeded hash function for characters, with the same output value as {!Hashtbl.seeded_hash}. This function allows this module to be passed as argument to the functor {!Hashtbl.MakeSeeded}. @since 5.1  * An unseeded hash function for characters, with the same output value as {!Hashtbl.hash}. This function allows this module to be passed as argument to the functor {!Hashtbl.Make}. @since 5.1 D#*/*) = The following is for system use only. Do not call directly.   @@?)../ocamlc0-strict-sequence(-absname"-w5+a-4-9-41-42-44-45-48"-g+-warn-error"+A*-bin-annot)-nostdlib*-principal"-o0stdlib__Char.cmi"-c  Z/home/teraram/ci/builds/workspace/parallel-build/flambda/true/label/ocaml-manycores/stdlib @@0C}B86 [3        @ @@8CamlinternalFormatBasics0%FU(Q/Tu&Stdlib0Lku]8_٠ 0`(caJ@0`(caJAa3m  @  !@7@@  2@ɐ@3bR@@@ / U@@@@@#] $@@@@] j @@ y @C}@  @6@@$^@@ߐ t @@@@@g[@@P@@