sig   module ConfigInt :     sig       module type Type =         sig           val datadir : string           val charmapdir : string           val unimapdir : string           val localedir : string         end     end   module DefaultConfig : ConfigInt.Type   module OOChannel :     sig       class type ['a] obj_input_channel =         object method close_in : unit -> unit method get : unit -> 'end       class type ['a] obj_output_channel =         object           method close_out : unit -> unit           method flush : unit -> unit           method put : '-> unit         end       class ['a] channel_of_stream : 'Stream.t -> ['a] obj_input_channel       val stream_of_channel :         '#CamomileLibrary.OOChannel.obj_input_channel -> 'Stream.t       class type char_input_channel =         object           method close_in : unit -> unit           method input : string -> int -> int -> int         end       class type char_output_channel =         object           method close_out : unit -> unit           method flush : unit -> unit           method output : string -> int -> int -> int         end       class char_input_channel_of :         char #CamomileLibrary.OOChannel.obj_input_channel ->         char_input_channel       class char_obj_input_channel_of :         CamomileLibrary.OOChannel.char_input_channel ->         [char] obj_input_channel       class char_output_channel_of :         char #CamomileLibrary.OOChannel.obj_output_channel ->         char_output_channel       class char_obj_output_channel_of :         CamomileLibrary.OOChannel.char_output_channel ->         [char] obj_output_channel       class of_in_channel : Pervasives.in_channel -> char_input_channel       class of_out_channel : Pervasives.out_channel -> char_output_channel     end   module UChar :     sig       type t       exception Out_of_range       val char_of : CamomileLibrary.UChar.t -> char       val of_char : char -> CamomileLibrary.UChar.t       val code : CamomileLibrary.UChar.t -> int       val chr : int -> CamomileLibrary.UChar.t       external uint_code : CamomileLibrary.UChar.t -> int = "%identity"       val chr_of_uint : int -> CamomileLibrary.UChar.t       val eq : CamomileLibrary.UChar.t -> CamomileLibrary.UChar.t -> bool       val compare : CamomileLibrary.UChar.t -> CamomileLibrary.UChar.t -> int       type uchar = CamomileLibrary.UChar.t       val int_of : CamomileLibrary.UChar.uchar -> int       val of_int : int -> CamomileLibrary.UChar.uchar     end   module USet :     sig       type t       val empty : CamomileLibrary.USet.t       val is_empty : CamomileLibrary.USet.t -> bool       val mem : CamomileLibrary.UChar.t -> CamomileLibrary.USet.t -> bool       val add :         CamomileLibrary.UChar.t ->         CamomileLibrary.USet.t -> CamomileLibrary.USet.t       val add_range :         CamomileLibrary.UChar.t ->         CamomileLibrary.UChar.t ->         CamomileLibrary.USet.t -> CamomileLibrary.USet.t       val singleton : CamomileLibrary.UChar.t -> CamomileLibrary.USet.t       val remove :         CamomileLibrary.UChar.t ->         CamomileLibrary.USet.t -> CamomileLibrary.USet.t       val remove_range :         CamomileLibrary.UChar.t ->         CamomileLibrary.UChar.t ->         CamomileLibrary.USet.t -> CamomileLibrary.USet.t       val union :         CamomileLibrary.USet.t ->         CamomileLibrary.USet.t -> CamomileLibrary.USet.t       val inter :         CamomileLibrary.USet.t ->         CamomileLibrary.USet.t -> CamomileLibrary.USet.t       val diff :         CamomileLibrary.USet.t ->         CamomileLibrary.USet.t -> CamomileLibrary.USet.t       val compl : CamomileLibrary.USet.t -> CamomileLibrary.USet.t       val compare : CamomileLibrary.USet.t -> CamomileLibrary.USet.t -> int       val equal : CamomileLibrary.USet.t -> CamomileLibrary.USet.t -> bool       val subset : CamomileLibrary.USet.t -> CamomileLibrary.USet.t -> bool       val from :         CamomileLibrary.UChar.t ->         CamomileLibrary.USet.t -> CamomileLibrary.USet.t       val after :         CamomileLibrary.UChar.t ->         CamomileLibrary.USet.t -> CamomileLibrary.USet.t       val until :         CamomileLibrary.UChar.t ->         CamomileLibrary.USet.t -> CamomileLibrary.USet.t       val before :         CamomileLibrary.UChar.t ->         CamomileLibrary.USet.t -> CamomileLibrary.USet.t       val iter :         (CamomileLibrary.UChar.t -> unit) -> CamomileLibrary.USet.t -> unit       val iter_range :         (CamomileLibrary.UChar.t -> CamomileLibrary.UChar.t -> unit) ->         CamomileLibrary.USet.t -> unit       val fold :         (CamomileLibrary.UChar.t -> '-> 'a) ->         CamomileLibrary.USet.t -> '-> 'a       val fold_range :         (CamomileLibrary.UChar.t -> CamomileLibrary.UChar.t -> '-> 'a) ->         CamomileLibrary.USet.t -> '-> 'a       val for_all :         (CamomileLibrary.UChar.t -> bool) -> CamomileLibrary.USet.t -> bool       val exists :         (CamomileLibrary.UChar.t -> bool) -> CamomileLibrary.USet.t -> bool       val filter :         (CamomileLibrary.UChar.t -> bool) ->         CamomileLibrary.USet.t -> CamomileLibrary.USet.t       val partition :         (CamomileLibrary.UChar.t -> bool) ->         CamomileLibrary.USet.t ->         CamomileLibrary.USet.t * CamomileLibrary.USet.t       val cardinal : CamomileLibrary.USet.t -> int       val elements : CamomileLibrary.USet.t -> CamomileLibrary.UChar.t list       val ranges :         CamomileLibrary.USet.t ->         (CamomileLibrary.UChar.t * CamomileLibrary.UChar.t) list       val min_elt : CamomileLibrary.USet.t -> CamomileLibrary.UChar.t       val max_elt : CamomileLibrary.USet.t -> CamomileLibrary.UChar.t       val choose : CamomileLibrary.USet.t -> CamomileLibrary.UChar.t       val uset_of_iset : ISet.t -> CamomileLibrary.USet.t       val iset_of_uset : CamomileLibrary.USet.t -> ISet.t     end   module UMap :     sig       type 'a t       val empty : 'CamomileLibrary.UMap.t       val is_empty : 'CamomileLibrary.UMap.t -> bool       val add :         ?eq:('-> '-> bool) ->         CamomileLibrary.UChar.t ->         '-> 'CamomileLibrary.UMap.t -> 'CamomileLibrary.UMap.t       val add_range :         ?eq:('-> '-> bool) ->         CamomileLibrary.UChar.t ->         CamomileLibrary.UChar.t ->         '-> 'CamomileLibrary.UMap.t -> 'CamomileLibrary.UMap.t       val find : CamomileLibrary.UChar.t -> 'CamomileLibrary.UMap.t -> 'a       val remove :         CamomileLibrary.UChar.t ->         'CamomileLibrary.UMap.t -> 'CamomileLibrary.UMap.t       val remove_range :         CamomileLibrary.UChar.t ->         CamomileLibrary.UChar.t ->         'CamomileLibrary.UMap.t -> 'CamomileLibrary.UMap.t       val from :         CamomileLibrary.UChar.t ->         'CamomileLibrary.UMap.t -> 'CamomileLibrary.UMap.t       val after :         CamomileLibrary.UChar.t ->         'CamomileLibrary.UMap.t -> 'CamomileLibrary.UMap.t       val until :         CamomileLibrary.UChar.t ->         'CamomileLibrary.UMap.t -> 'CamomileLibrary.UMap.t       val before :         CamomileLibrary.UChar.t ->         'CamomileLibrary.UMap.t -> 'CamomileLibrary.UMap.t       val mem : CamomileLibrary.UChar.t -> 'CamomileLibrary.UMap.t -> bool       val iter :         (CamomileLibrary.UChar.t -> '-> unit) ->         'CamomileLibrary.UMap.t -> unit       val iter_range :         (CamomileLibrary.UChar.t -> CamomileLibrary.UChar.t -> '-> unit) ->         'CamomileLibrary.UMap.t -> unit       val map :         ?eq:('-> '-> bool) ->         ('-> 'b) -> 'CamomileLibrary.UMap.t -> 'CamomileLibrary.UMap.t       val mapi :         ?eq:('-> '-> bool) ->         (CamomileLibrary.UChar.t -> '-> 'b) ->         'CamomileLibrary.UMap.t -> 'CamomileLibrary.UMap.t       val fold :         (CamomileLibrary.UChar.t -> '-> '-> 'a) ->         'CamomileLibrary.UMap.t -> '-> 'a       val fold_range :         (CamomileLibrary.UChar.t -> CamomileLibrary.UChar.t -> '-> '-> 'a) ->         'CamomileLibrary.UMap.t -> '-> 'a       val set_to_map :         CamomileLibrary.USet.t -> '-> 'CamomileLibrary.UMap.t       val domain : 'CamomileLibrary.UMap.t -> CamomileLibrary.USet.t       val map_to_set :         ('-> bool) -> 'CamomileLibrary.UMap.t -> CamomileLibrary.USet.t       val umap_of_imap : 'IMap.t -> 'CamomileLibrary.UMap.t       val imap_of_umap : 'CamomileLibrary.UMap.t -> 'IMap.t     end   module UCharTbl :     sig       type 'a tbl       type 'a t = 'CamomileLibrary.UCharTbl.tbl       val get :         'CamomileLibrary.UCharTbl.tbl -> CamomileLibrary.UChar.t -> 'a       module type Type =         sig           type elt           type t =               CamomileLibrary.UCharTbl.Type.elt CamomileLibrary.UCharTbl.tbl           val get :             CamomileLibrary.UCharTbl.Type.elt CamomileLibrary.UCharTbl.tbl ->             CamomileLibrary.UChar.t -> CamomileLibrary.UCharTbl.Type.elt           val of_map :             CamomileLibrary.UCharTbl.Type.elt ->             CamomileLibrary.UCharTbl.Type.elt CamomileLibrary.UMap.t ->             CamomileLibrary.UCharTbl.Type.t         end       module Make :         functor (H : Hashtbl.HashedType->           sig             type elt = H.t             type t = elt tbl             val get : elt tbl -> UChar.t -> elt             val of_map : elt -> elt UMap.t -> t           end       module Bool :         sig           type t           val get :             CamomileLibrary.UCharTbl.Bool.t ->             CamomileLibrary.UChar.t -> bool           val of_set :             CamomileLibrary.USet.t -> CamomileLibrary.UCharTbl.Bool.t         end       module Bits :         sig           type t           val of_map :             int ->             int CamomileLibrary.UMap.t -> CamomileLibrary.UCharTbl.Bits.t           val get :             CamomileLibrary.UCharTbl.Bits.t -> CamomileLibrary.UChar.t -> int         end       module Bytes :         sig           type t           val of_map :             int ->             int CamomileLibrary.UMap.t -> CamomileLibrary.UCharTbl.Bytes.t           val get :             CamomileLibrary.UCharTbl.Bytes.t ->             CamomileLibrary.UChar.t -> int         end       module Char :         sig           type t           val of_map :             char ->             char CamomileLibrary.UMap.t -> CamomileLibrary.UCharTbl.Char.t           val get :             CamomileLibrary.UCharTbl.Char.t ->             CamomileLibrary.UChar.t -> char         end     end   module UnicodeString :     sig       module type Type =         sig           type t           val get :             CamomileLibrary.UnicodeString.Type.t ->             int -> CamomileLibrary.UChar.t           val init :             int ->             (int -> CamomileLibrary.UChar.t) ->             CamomileLibrary.UnicodeString.Type.t           val length : CamomileLibrary.UnicodeString.Type.t -> int           type index           val look :             CamomileLibrary.UnicodeString.Type.t ->             CamomileLibrary.UnicodeString.Type.index ->             CamomileLibrary.UChar.t           val nth :             CamomileLibrary.UnicodeString.Type.t ->             int -> CamomileLibrary.UnicodeString.Type.index           val next :             CamomileLibrary.UnicodeString.Type.t ->             CamomileLibrary.UnicodeString.Type.index ->             CamomileLibrary.UnicodeString.Type.index           val prev :             CamomileLibrary.UnicodeString.Type.t ->             CamomileLibrary.UnicodeString.Type.index ->             CamomileLibrary.UnicodeString.Type.index           val out_of_range :             CamomileLibrary.UnicodeString.Type.t ->             CamomileLibrary.UnicodeString.Type.index -> bool           val iter :             (CamomileLibrary.UChar.t -> unit) ->             CamomileLibrary.UnicodeString.Type.t -> unit           val compare :             CamomileLibrary.UnicodeString.Type.t ->             CamomileLibrary.UnicodeString.Type.t -> int           val first :             CamomileLibrary.UnicodeString.Type.t ->             CamomileLibrary.UnicodeString.Type.index           val last :             CamomileLibrary.UnicodeString.Type.t ->             CamomileLibrary.UnicodeString.Type.index           val move :             CamomileLibrary.UnicodeString.Type.t ->             CamomileLibrary.UnicodeString.Type.index ->             int -> CamomileLibrary.UnicodeString.Type.index           val compare_index :             CamomileLibrary.UnicodeString.Type.t ->             CamomileLibrary.UnicodeString.Type.index ->             CamomileLibrary.UnicodeString.Type.index -> int           module Buf :             sig               type buf               val create : int -> CamomileLibrary.UnicodeString.Type.Buf.buf               val contents :                 CamomileLibrary.UnicodeString.Type.Buf.buf ->                 CamomileLibrary.UnicodeString.Type.t               val clear : CamomileLibrary.UnicodeString.Type.Buf.buf -> unit               val reset : CamomileLibrary.UnicodeString.Type.Buf.buf -> unit               val add_char :                 CamomileLibrary.UnicodeString.Type.Buf.buf ->                 CamomileLibrary.UChar.t -> unit               val add_string :                 CamomileLibrary.UnicodeString.Type.Buf.buf ->                 CamomileLibrary.UnicodeString.Type.t -> unit               val add_buffer :                 CamomileLibrary.UnicodeString.Type.Buf.buf ->                 CamomileLibrary.UnicodeString.Type.Buf.buf -> unit             end         end     end   module UText :     sig       type mutability = [ `Immutable | `Mutable ]       type 'a text       type utext = [ `Immutable ] CamomileLibrary.UText.text       type ustring = [ `Mutable ] CamomileLibrary.UText.text       type t = CamomileLibrary.UText.utext       val utext_of_ustring :         CamomileLibrary.UText.ustring -> CamomileLibrary.UText.utext       val ustring_of_utext :         CamomileLibrary.UText.utext -> CamomileLibrary.UText.ustring       val get :         'CamomileLibrary.UText.text -> int -> CamomileLibrary.UChar.t       val set :         CamomileLibrary.UText.ustring ->         int -> CamomileLibrary.UChar.t -> unit       type index       val look :         'CamomileLibrary.UText.text ->         CamomileLibrary.UText.index -> CamomileLibrary.UChar.t       val nth :         'CamomileLibrary.UText.text -> int -> CamomileLibrary.UText.index       val first :         'CamomileLibrary.UText.text -> CamomileLibrary.UText.index       val last : 'CamomileLibrary.UText.text -> CamomileLibrary.UText.index       val out_of_range :         'CamomileLibrary.UText.text -> CamomileLibrary.UText.index -> bool       val compare_index :         'CamomileLibrary.UText.text ->         CamomileLibrary.UText.index -> CamomileLibrary.UText.index -> int       val next :         'CamomileLibrary.UText.text ->         CamomileLibrary.UText.index -> CamomileLibrary.UText.index       val prev :         'CamomileLibrary.UText.text ->         CamomileLibrary.UText.index -> CamomileLibrary.UText.index       val move :         'CamomileLibrary.UText.text ->         CamomileLibrary.UText.index -> int -> CamomileLibrary.UText.index       val length : 'CamomileLibrary.UText.text -> int       val of_string : string -> CamomileLibrary.UText.utext       val init :         int ->         (int -> CamomileLibrary.UChar.t) -> CamomileLibrary.UText.utext       val init_ustring :         int ->         (int -> CamomileLibrary.UChar.t) -> CamomileLibrary.UText.ustring       val make :         int -> CamomileLibrary.UChar.t -> CamomileLibrary.UText.ustring       val copy :         CamomileLibrary.UText.ustring -> CamomileLibrary.UText.ustring       val sub :         'CamomileLibrary.UText.text ->         int -> int -> 'CamomileLibrary.UText.text       val fill :         CamomileLibrary.UText.ustring ->         int -> int -> CamomileLibrary.UChar.t -> unit       val blit :         'CamomileLibrary.UText.text ->         int -> CamomileLibrary.UText.ustring -> int -> int -> unit       val append :         'CamomileLibrary.UText.text ->         'CamomileLibrary.UText.text -> 'CamomileLibrary.UText.text       val iter :         (CamomileLibrary.UChar.t -> unit) ->         'CamomileLibrary.UText.text -> unit       val compare :         'CamomileLibrary.UText.text -> 'CamomileLibrary.UText.text -> int       module Buf :         sig           type buf           val create : int -> CamomileLibrary.UText.Buf.buf           val contents :             CamomileLibrary.UText.Buf.buf -> CamomileLibrary.UText.t           val contents_string :             CamomileLibrary.UText.Buf.buf -> CamomileLibrary.UText.ustring           val length : CamomileLibrary.UText.Buf.buf -> int           val clear : CamomileLibrary.UText.Buf.buf -> unit           val reset : CamomileLibrary.UText.Buf.buf -> unit           val add_char :             CamomileLibrary.UText.Buf.buf -> CamomileLibrary.UChar.t -> unit           val add_string :             CamomileLibrary.UText.Buf.buf ->             'CamomileLibrary.UText.text -> unit           val add_buffer :             CamomileLibrary.UText.Buf.buf ->             CamomileLibrary.UText.Buf.buf -> unit         end     end   module XString :     sig       type xstring       type t = CamomileLibrary.XString.xstring       val get :         CamomileLibrary.XString.xstring -> int -> CamomileLibrary.UChar.t       val set :         CamomileLibrary.XString.xstring ->         int -> CamomileLibrary.UChar.t -> unit       val length : CamomileLibrary.XString.xstring -> int       val init :         int ->         (int -> CamomileLibrary.UChar.t) -> CamomileLibrary.XString.xstring       type index       val look :         CamomileLibrary.XString.xstring ->         CamomileLibrary.XString.index -> CamomileLibrary.UChar.t       val nth :         CamomileLibrary.XString.xstring ->         int -> CamomileLibrary.XString.index       val first :         CamomileLibrary.XString.xstring -> CamomileLibrary.XString.index       val last :         CamomileLibrary.XString.xstring -> CamomileLibrary.XString.index       val out_of_range :         CamomileLibrary.XString.xstring ->         CamomileLibrary.XString.index -> bool       val next :         CamomileLibrary.XString.xstring ->         CamomileLibrary.XString.index -> CamomileLibrary.XString.index       val prev :         CamomileLibrary.XString.xstring ->         CamomileLibrary.XString.index -> CamomileLibrary.XString.index       val move :         CamomileLibrary.XString.xstring ->         CamomileLibrary.XString.index -> int -> CamomileLibrary.XString.index       val compare_index :         CamomileLibrary.XString.xstring ->         CamomileLibrary.XString.index -> CamomileLibrary.XString.index -> int       val make :         ?bufsize:int ->         int -> CamomileLibrary.UChar.t -> CamomileLibrary.XString.xstring       val clear : CamomileLibrary.XString.xstring -> unit       val reset : CamomileLibrary.XString.xstring -> unit       val copy :         CamomileLibrary.XString.xstring -> CamomileLibrary.XString.xstring       val sub :         CamomileLibrary.XString.xstring ->         int -> int -> CamomileLibrary.XString.xstring       val add_char :         CamomileLibrary.XString.xstring -> CamomileLibrary.UChar.t -> unit       val add_text :         CamomileLibrary.XString.xstring ->         'CamomileLibrary.UText.text -> unit       val add_xstring :         CamomileLibrary.XString.xstring ->         CamomileLibrary.XString.xstring -> unit       val shrink : CamomileLibrary.XString.xstring -> int -> unit       val append :         CamomileLibrary.XString.xstring ->         CamomileLibrary.XString.xstring -> CamomileLibrary.XString.xstring       val utext_of :         CamomileLibrary.XString.xstring -> CamomileLibrary.UText.t       val ustring_of :         CamomileLibrary.XString.xstring -> CamomileLibrary.UText.ustring       val iter :         (CamomileLibrary.UChar.t -> unit) ->         CamomileLibrary.XString.xstring -> unit       val compare :         CamomileLibrary.XString.t -> CamomileLibrary.XString.t -> int       module Buf :         sig           type buf           val create : int -> CamomileLibrary.XString.Buf.buf           val contents :             CamomileLibrary.XString.Buf.buf -> CamomileLibrary.XString.t           val length : CamomileLibrary.XString.Buf.buf -> int           val clear : CamomileLibrary.XString.Buf.buf -> unit           val reset : CamomileLibrary.XString.Buf.buf -> unit           val add_char :             CamomileLibrary.XString.Buf.buf ->             CamomileLibrary.UChar.t -> unit           val add_string :             CamomileLibrary.XString.Buf.buf ->             CamomileLibrary.XString.t -> unit           val add_buffer :             CamomileLibrary.XString.Buf.buf ->             CamomileLibrary.XString.Buf.buf -> unit         end     end   module SubText :     sig       module type Type =         sig           type t           val get :             CamomileLibrary.SubText.Type.t -> int -> CamomileLibrary.UChar.t           val init :             int ->             (int -> CamomileLibrary.UChar.t) ->             CamomileLibrary.SubText.Type.t           val length : CamomileLibrary.SubText.Type.t -> int           type index           val look :             CamomileLibrary.SubText.Type.t ->             CamomileLibrary.SubText.Type.index -> CamomileLibrary.UChar.t           val nth :             CamomileLibrary.SubText.Type.t ->             int -> CamomileLibrary.SubText.Type.index           val first :             CamomileLibrary.SubText.Type.t ->             CamomileLibrary.SubText.Type.index           val last :             CamomileLibrary.SubText.Type.t ->             CamomileLibrary.SubText.Type.index           val next :             CamomileLibrary.SubText.Type.t ->             CamomileLibrary.SubText.Type.index ->             CamomileLibrary.SubText.Type.index           val prev :             CamomileLibrary.SubText.Type.t ->             CamomileLibrary.SubText.Type.index ->             CamomileLibrary.SubText.Type.index           val move :             CamomileLibrary.SubText.Type.t ->             CamomileLibrary.SubText.Type.index ->             int -> CamomileLibrary.SubText.Type.index           val out_of_range :             CamomileLibrary.SubText.Type.t ->             CamomileLibrary.SubText.Type.index -> bool           val compare_index :             CamomileLibrary.SubText.Type.t ->             CamomileLibrary.SubText.Type.index ->             CamomileLibrary.SubText.Type.index -> int           val iter :             (CamomileLibrary.UChar.t -> unit) ->             CamomileLibrary.SubText.Type.t -> unit           val compare :             CamomileLibrary.SubText.Type.t ->             CamomileLibrary.SubText.Type.t -> int           module Buf :             sig               type buf               val create : int -> CamomileLibrary.SubText.Type.Buf.buf               val contents :                 CamomileLibrary.SubText.Type.Buf.buf ->                 CamomileLibrary.SubText.Type.t               val clear : CamomileLibrary.SubText.Type.Buf.buf -> unit               val reset : CamomileLibrary.SubText.Type.Buf.buf -> unit               val add_char :                 CamomileLibrary.SubText.Type.Buf.buf ->                 CamomileLibrary.UChar.t -> unit               val add_string :                 CamomileLibrary.SubText.Type.Buf.buf ->                 CamomileLibrary.SubText.Type.t -> unit               val add_buffer :                 CamomileLibrary.SubText.Type.Buf.buf ->                 CamomileLibrary.SubText.Type.Buf.buf -> unit             end           type ur_text           type ur_index           val refer :             CamomileLibrary.SubText.Type.ur_text ->             CamomileLibrary.SubText.Type.ur_index ->             CamomileLibrary.SubText.Type.ur_index ->             CamomileLibrary.SubText.Type.t           val excerpt :             CamomileLibrary.SubText.Type.t ->             CamomileLibrary.SubText.Type.ur_text           val context :             CamomileLibrary.SubText.Type.t ->             CamomileLibrary.SubText.Type.ur_text *             CamomileLibrary.SubText.Type.ur_index *             CamomileLibrary.SubText.Type.ur_index           val ur_index_of :             CamomileLibrary.SubText.Type.t ->             CamomileLibrary.SubText.Type.index ->             CamomileLibrary.SubText.Type.ur_index         end       module Make :         functor (Text : UnicodeString.Type->           sig             type t             val get : t -> int -> UChar.t             val init : int -> (int -> UChar.t) -> t             val length : t -> int             type index             val look : t -> index -> UChar.t             val nth : t -> int -> index             val first : t -> index             val last : t -> index             val next : t -> index -> index             val prev : t -> index -> index             val move : t -> index -> int -> index             val out_of_range : t -> index -> bool             val compare_index : t -> index -> index -> int             val iter : (UChar.t -> unit) -> t -> unit             val compare : t -> t -> int             module Buf :               sig                 type buf                 val create : int -> buf                 val contents : buf -> t                 val clear : buf -> unit                 val reset : buf -> unit                 val add_char : buf -> UChar.t -> unit                 val add_string : buf -> t -> unit                 val add_buffer : buf -> buf -> unit               end             type ur_text = Text.t             type ur_index = Text.index             val refer : ur_text -> ur_index -> ur_index -> t             val excerpt : t -> ur_text             val context : t -> ur_text * ur_index * ur_index             val ur_index_of : t -> index -> ur_index           end     end   module ULine :     sig       type separator = [ `CR | `CRLF | `LF | `LS | `NEL | `PS ]       class input :         CamomileLibrary.ULine.separator ->         CamomileLibrary.UChar.t #CamomileLibrary.OOChannel.obj_input_channel ->         [CamomileLibrary.UChar.t] OOChannel.obj_input_channel       class output :         CamomileLibrary.ULine.separator ->         CamomileLibrary.UChar.t #CamomileLibrary.OOChannel.obj_output_channel ->         [CamomileLibrary.UChar.t] OOChannel.obj_output_channel       module type Type =         sig           type text           class input_line :             CamomileLibrary.UChar.t             #CamomileLibrary.OOChannel.obj_input_channel ->             [CamomileLibrary.ULine.Type.text] OOChannel.obj_input_channel           class output_line :             ?sp:CamomileLibrary.ULine.separator ->             CamomileLibrary.UChar.t             #CamomileLibrary.OOChannel.obj_output_channel ->             [CamomileLibrary.ULine.Type.text] OOChannel.obj_output_channel         end       module Make :         functor (Text : UnicodeString.Type->           sig             type text = Text.t             class input_line :               UChar.t #OOChannel.obj_input_channel ->               [text] OOChannel.obj_input_channel             class output_line :               ?sp:separator ->               UChar.t #OOChannel.obj_output_channel ->               [text] OOChannel.obj_output_channel           end     end   module Locale :     sig       type t = string       val read :         string -> string -> (Pervasives.in_channel -> 'a) -> string -> 'a       val contain : string -> string -> bool     end   module UTF8 :     sig       type t = string       exception Malformed_code       val validate : CamomileLibrary.UTF8.t -> unit       val get : CamomileLibrary.UTF8.t -> int -> CamomileLibrary.UChar.t       val init :         int -> (int -> CamomileLibrary.UChar.t) -> CamomileLibrary.UTF8.t       val length : CamomileLibrary.UTF8.t -> int       type index = int       val nth : CamomileLibrary.UTF8.t -> int -> CamomileLibrary.UTF8.index       val first : CamomileLibrary.UTF8.t -> CamomileLibrary.UTF8.index       val last : CamomileLibrary.UTF8.t -> CamomileLibrary.UTF8.index       val look :         CamomileLibrary.UTF8.t ->         CamomileLibrary.UTF8.index -> CamomileLibrary.UChar.t       val out_of_range :         CamomileLibrary.UTF8.t -> CamomileLibrary.UTF8.index -> bool       val compare_index :         CamomileLibrary.UTF8.t ->         CamomileLibrary.UTF8.index -> CamomileLibrary.UTF8.index -> int       val next :         CamomileLibrary.UTF8.t ->         CamomileLibrary.UTF8.index -> CamomileLibrary.UTF8.index       val prev :         CamomileLibrary.UTF8.t ->         CamomileLibrary.UTF8.index -> CamomileLibrary.UTF8.index       val move :         CamomileLibrary.UTF8.t ->         CamomileLibrary.UTF8.index -> int -> CamomileLibrary.UTF8.index       val iter :         (CamomileLibrary.UChar.t -> unit) -> CamomileLibrary.UTF8.t -> unit       val compare : CamomileLibrary.UTF8.t -> CamomileLibrary.UTF8.t -> int       module Buf :         sig           type buf = Buffer.t           val create : int -> CamomileLibrary.UTF8.Buf.buf           val contents :             CamomileLibrary.UTF8.Buf.buf -> CamomileLibrary.UTF8.t           val clear : CamomileLibrary.UTF8.Buf.buf -> unit           val reset : CamomileLibrary.UTF8.Buf.buf -> unit           val add_char :             CamomileLibrary.UTF8.Buf.buf -> CamomileLibrary.UChar.t -> unit           val add_string :             CamomileLibrary.UTF8.Buf.buf -> CamomileLibrary.UTF8.t -> unit           val add_buffer :             CamomileLibrary.UTF8.Buf.buf ->             CamomileLibrary.UTF8.Buf.buf -> unit         end     end   module UTF16 :     sig       type t =           (int, Bigarray.int16_unsigned_elt, Bigarray.c_layout)           Bigarray.Array1.t       exception Malformed_code       val validate : CamomileLibrary.UTF16.t -> unit       val get : CamomileLibrary.UTF16.t -> int -> CamomileLibrary.UChar.t       exception Out_of_range       val init :         int -> (int -> CamomileLibrary.UChar.t) -> CamomileLibrary.UTF16.t       val length : CamomileLibrary.UTF16.t -> int       type index = int       val nth : CamomileLibrary.UTF16.t -> int -> CamomileLibrary.UTF16.index       val first : CamomileLibrary.UTF16.t -> CamomileLibrary.UTF16.index       val last : CamomileLibrary.UTF16.t -> CamomileLibrary.UTF16.index       val look :         CamomileLibrary.UTF16.t ->         CamomileLibrary.UTF16.index -> CamomileLibrary.UChar.t       val out_of_range :         CamomileLibrary.UTF16.t -> CamomileLibrary.UTF16.index -> bool       val compare_index :         CamomileLibrary.UTF16.t ->         CamomileLibrary.UTF16.index -> CamomileLibrary.UTF16.index -> int       val next :         CamomileLibrary.UTF16.t ->         CamomileLibrary.UTF16.index -> CamomileLibrary.UTF16.index       val prev :         CamomileLibrary.UTF16.t ->         CamomileLibrary.UTF16.index -> CamomileLibrary.UTF16.index       val move :         CamomileLibrary.UTF16.t ->         CamomileLibrary.UTF16.index -> int -> CamomileLibrary.UTF16.index       val iter :         (CamomileLibrary.UChar.t -> unit) -> CamomileLibrary.UTF16.t -> unit       val compare : CamomileLibrary.UTF16.t -> CamomileLibrary.UTF16.t -> int       module Buf :         sig           type buf           val create : int -> CamomileLibrary.UTF16.Buf.buf           val contents :             CamomileLibrary.UTF16.Buf.buf -> CamomileLibrary.UTF16.t           val clear : CamomileLibrary.UTF16.Buf.buf -> unit           val reset : CamomileLibrary.UTF16.Buf.buf -> unit           val add_char :             CamomileLibrary.UTF16.Buf.buf -> CamomileLibrary.UChar.t -> unit           val add_string :             CamomileLibrary.UTF16.Buf.buf -> CamomileLibrary.UTF16.t -> unit           val add_buffer :             CamomileLibrary.UTF16.Buf.buf ->             CamomileLibrary.UTF16.Buf.buf -> unit         end     end   module UCS4 :     sig       type t =           (int32, Bigarray.int32_elt, Bigarray.c_layout) Bigarray.Array1.t       exception Malformed_code       val validate : CamomileLibrary.UCS4.t -> unit       val get : CamomileLibrary.UCS4.t -> int -> CamomileLibrary.UChar.t       val init :         int -> (int -> CamomileLibrary.UChar.t) -> CamomileLibrary.UCS4.t       val length : CamomileLibrary.UCS4.t -> int       type index = int       val nth : CamomileLibrary.UCS4.t -> int -> CamomileLibrary.UCS4.index       val first : CamomileLibrary.UCS4.t -> CamomileLibrary.UCS4.index       val last : CamomileLibrary.UCS4.t -> CamomileLibrary.UCS4.index       val look :         CamomileLibrary.UCS4.t ->         CamomileLibrary.UCS4.index -> CamomileLibrary.UChar.t       val out_of_range :         CamomileLibrary.UCS4.t -> CamomileLibrary.UCS4.index -> bool       val compare_index :         CamomileLibrary.UCS4.t ->         CamomileLibrary.UCS4.index -> CamomileLibrary.UCS4.index -> int       val next :         CamomileLibrary.UCS4.t ->         CamomileLibrary.UCS4.index -> CamomileLibrary.UCS4.index       val prev :         CamomileLibrary.UCS4.t ->         CamomileLibrary.UCS4.index -> CamomileLibrary.UCS4.index       val move :         CamomileLibrary.UCS4.t ->         CamomileLibrary.UCS4.index -> int -> CamomileLibrary.UCS4.index       val iter :         (CamomileLibrary.UChar.t -> unit) -> CamomileLibrary.UCS4.t -> unit       val compare : CamomileLibrary.UCS4.t -> CamomileLibrary.UCS4.t -> int       module Buf :         sig           type buf           val create : int -> CamomileLibrary.UCS4.Buf.buf           val contents :             CamomileLibrary.UCS4.Buf.buf -> CamomileLibrary.UCS4.t           val clear : CamomileLibrary.UCS4.Buf.buf -> unit           val reset : CamomileLibrary.UCS4.Buf.buf -> unit           val add_char :             CamomileLibrary.UCS4.Buf.buf -> CamomileLibrary.UChar.t -> unit           val add_string :             CamomileLibrary.UCS4.Buf.buf -> CamomileLibrary.UCS4.t -> unit           val add_buffer :             CamomileLibrary.UCS4.Buf.buf ->             CamomileLibrary.UCS4.Buf.buf -> unit         end     end   module UPervasives :     sig       type uchar = CamomileLibrary.UChar.t       val int_of_uchar : CamomileLibrary.UPervasives.uchar -> int       val uchar_of_int : int -> CamomileLibrary.UPervasives.uchar       val escaped_uchar : CamomileLibrary.UPervasives.uchar -> string       val escaped_utf8 : string -> string       val printer_utf8 : Format.formatter -> string -> unit       val printer_uchar :         Format.formatter -> CamomileLibrary.UPervasives.uchar -> unit     end   module URe :     sig       type regexp =           [ `After of CamomileLibrary.URe.regexp           | `Alt of CamomileLibrary.URe.regexp * CamomileLibrary.URe.regexp           | `Before of CamomileLibrary.URe.regexp           | `BoS           | `EoS           | `Epsilon           | `Group of CamomileLibrary.URe.regexp           | `OneChar           | `Rep of CamomileLibrary.URe.regexp           | `Repn of CamomileLibrary.URe.regexp * int * int option           | `Seq of CamomileLibrary.URe.regexp * CamomileLibrary.URe.regexp           | `Set of CamomileLibrary.USet.t           | `String of CamomileLibrary.UChar.t list ]       type match_semantics = [ `First | `Longest | `Shortest ]       val no_group : CamomileLibrary.URe.regexp -> CamomileLibrary.URe.regexp       module type Type =         sig           type text           type index           type compiled_regexp           module SubText :             sig               type t               val get : t -> int -> UChar.t               val init : int -> (int -> UChar.t) -> t               val length : t -> int               type index               val look : t -> index -> UChar.t               val nth : t -> int -> index               val first : t -> index               val last : t -> index               val next : t -> index -> index               val prev : t -> index -> index               val move : t -> index -> int -> index               val out_of_range : t -> index -> bool               val compare_index : t -> index -> index -> int               val iter : (UChar.t -> unit) -> t -> unit               val compare : t -> t -> int               module Buf :                 sig                   type buf                   val create : int -> buf                   val contents : buf -> t                   val clear : buf -> unit                   val reset : buf -> unit                   val add_char : buf -> UChar.t -> unit                   val add_string : buf -> t -> unit                   val add_buffer : buf -> buf -> unit                 end               type ur_text = text               type ur_index = index               val refer : ur_text -> ur_index -> ur_index -> t               val excerpt : t -> ur_text               val context : t -> ur_text * ur_index * ur_index               val ur_index_of : t -> index -> ur_index             end           val compile :             CamomileLibrary.URe.regexp ->             CamomileLibrary.URe.Type.compiled_regexp           val regexp_match :             ?sem:CamomileLibrary.URe.match_semantics ->             CamomileLibrary.URe.Type.compiled_regexp ->             CamomileLibrary.URe.Type.text ->             CamomileLibrary.URe.Type.index ->             CamomileLibrary.URe.Type.SubText.t option array option           val string_match :             CamomileLibrary.URe.Type.compiled_regexp ->             CamomileLibrary.URe.Type.text ->             CamomileLibrary.URe.Type.index -> bool           val search_forward :             ?sem:CamomileLibrary.URe.match_semantics ->             CamomileLibrary.URe.Type.compiled_regexp ->             CamomileLibrary.URe.Type.text ->             CamomileLibrary.URe.Type.index ->             CamomileLibrary.URe.Type.SubText.t option array option         end       module Make :         functor (Text : UnicodeString.Type->           sig             type text = Text.t             type index = Text.index             type compiled_regexp             module SubText :               sig                 type t                 val get : t -> int -> UChar.t                 val init : int -> (int -> UChar.t) -> t                 val length : t -> int                 type index                 val look : t -> index -> UChar.t                 val nth : t -> int -> index                 val first : t -> index                 val last : t -> index                 val next : t -> index -> index                 val prev : t -> index -> index                 val move : t -> index -> int -> index                 val out_of_range : t -> index -> bool                 val compare_index : t -> index -> index -> int                 val iter : (UChar.t -> unit) -> t -> unit                 val compare : t -> t -> int                 module Buf :                   sig                     type buf                     val create : int -> buf                     val contents : buf -> t                     val clear : buf -> unit                     val reset : buf -> unit                     val add_char : buf -> UChar.t -> unit                     val add_string : buf -> t -> unit                     val add_buffer : buf -> buf -> unit                   end                 type ur_text = text                 type ur_index = index                 val refer : ur_text -> ur_index -> ur_index -> t                 val excerpt : t -> ur_text                 val context : t -> ur_text * ur_index * ur_index                 val ur_index_of : t -> index -> ur_index               end             val compile : regexp -> compiled_regexp             val regexp_match :               ?sem:match_semantics ->               compiled_regexp ->               text -> index -> SubText.t option array option             val string_match : compiled_regexp -> text -> index -> bool             val search_forward :               ?sem:match_semantics ->               compiled_regexp ->               text -> index -> SubText.t option array option           end     end   module CharEncoding :     sig       module type Interface =         sig           exception Malformed_code           exception Out_of_range           type t           val automatic :             string ->             CamomileLibrary.CharEncoding.Interface.t list ->             CamomileLibrary.CharEncoding.Interface.t ->             CamomileLibrary.CharEncoding.Interface.t           val new_enc :             string -> CamomileLibrary.CharEncoding.Interface.t -> unit           val alias : string -> string -> unit           val of_name : string -> CamomileLibrary.CharEncoding.Interface.t           val name_of : CamomileLibrary.CharEncoding.Interface.t -> string           val ascii : CamomileLibrary.CharEncoding.Interface.t           val latin1 : CamomileLibrary.CharEncoding.Interface.t           val utf8 : CamomileLibrary.CharEncoding.Interface.t           val utf16 : CamomileLibrary.CharEncoding.Interface.t           val utf16be : CamomileLibrary.CharEncoding.Interface.t           val utf16le : CamomileLibrary.CharEncoding.Interface.t           val utf32 : CamomileLibrary.CharEncoding.Interface.t           val utf32be : CamomileLibrary.CharEncoding.Interface.t           val utf32le : CamomileLibrary.CharEncoding.Interface.t           val ucs4 : CamomileLibrary.CharEncoding.Interface.t           val recode_string :             in_enc:CamomileLibrary.CharEncoding.Interface.t ->             out_enc:CamomileLibrary.CharEncoding.Interface.t ->             string -> string           class uchar_input_channel_of :             CamomileLibrary.CharEncoding.Interface.t ->             CamomileLibrary.OOChannel.char_input_channel ->             [CamomileLibrary.UChar.t] OOChannel.obj_input_channel           class uchar_output_channel_of :             CamomileLibrary.CharEncoding.Interface.t ->             CamomileLibrary.OOChannel.char_output_channel ->             [CamomileLibrary.UChar.t] OOChannel.obj_output_channel           class convert_uchar_input :             CamomileLibrary.CharEncoding.Interface.t ->             CamomileLibrary.UChar.t             CamomileLibrary.OOChannel.obj_input_channel ->             OOChannel.char_input_channel           class convert_uchar_output :             CamomileLibrary.CharEncoding.Interface.t ->             CamomileLibrary.UChar.t             CamomileLibrary.OOChannel.obj_output_channel ->             OOChannel.char_output_channel           class convert_input :             in_enc:CamomileLibrary.CharEncoding.Interface.t ->             out_enc:CamomileLibrary.CharEncoding.Interface.t ->             CamomileLibrary.OOChannel.char_input_channel ->             OOChannel.char_input_channel           class convert_output :             in_enc:CamomileLibrary.CharEncoding.Interface.t ->             out_enc:CamomileLibrary.CharEncoding.Interface.t ->             CamomileLibrary.OOChannel.char_output_channel ->             OOChannel.char_output_channel           class out_channel :             CamomileLibrary.CharEncoding.Interface.t ->             Pervasives.out_channel ->             [CamomileLibrary.UChar.t] OOChannel.obj_output_channel           class in_channel :             CamomileLibrary.CharEncoding.Interface.t ->             Pervasives.in_channel ->             [CamomileLibrary.UChar.t] OOChannel.obj_input_channel           val ustream_of :             CamomileLibrary.CharEncoding.Interface.t ->             char Stream.t -> CamomileLibrary.UChar.t Stream.t           val char_stream_of :             CamomileLibrary.CharEncoding.Interface.t ->             CamomileLibrary.UChar.t Stream.t -> char Stream.t           module type Type =             sig               type text               val decode :                 CamomileLibrary.CharEncoding.Interface.t ->                 string -> CamomileLibrary.CharEncoding.Interface.Type.text               val encode :                 CamomileLibrary.CharEncoding.Interface.t ->                 CamomileLibrary.CharEncoding.Interface.Type.text -> string             end           module Make :             functor (Text : UnicodeString.Type->               sig                 type text = Text.t                 val decode : t -> string -> text                 val encode : t -> text -> string               end         end       module Configure : functor (Config : ConfigInt.Type-> Interface     end   module UCharInfo :     sig       module type Type =         sig           type general_category_type =               [ `Cc               | `Cf               | `Cn               | `Co               | `Cs               | `Ll               | `Lm               | `Lo               | `Lt               | `Lu               | `Mc               | `Me               | `Mn               | `Nd               | `Nl               | `No               | `Pc               | `Pd               | `Pe               | `Pf               | `Pi               | `Po               | `Ps               | `Sc               | `Sk               | `Sm               | `So               | `Zl               | `Zp               | `Zs ]           val general_category :             CamomileLibrary.UChar.t ->             CamomileLibrary.UCharInfo.Type.general_category_type           val load_general_category_map :             unit ->             CamomileLibrary.UCharInfo.Type.general_category_type             CamomileLibrary.UMap.t           type character_property_type =               [ `Alphabetic               | `Ascii_Hex_Digit               | `Bidi_Control               | `Default_Ignorable_Code_Point               | `Deprecated               | `Diacritic               | `Extender               | `Grapheme_Base               | `Grapheme_Extend               | `Grapheme_Link               | `Hex_Digit               | `Hyphen               | `IDS_Binary_Operator               | `IDS_Trinary_Operator               | `ID_Continue               | `ID_Start               | `Ideographic               | `Logical_Order_Exception               | `Lowercase               | `Math               | `Noncharacter_Code_Point               | `Other_Alphabetic               | `Other_Grapheme_Extend               | `Other_Lowercase               | `Other_Math               | `Other_Uppercase               | `Other_default_Ignorable_Code_Point               | `Quotation_Mark               | `Radical               | `Soft_Dotted               | `Terminal_Punctuation               | `Unified_Ideograph               | `Uppercase               | `White_Space               | `XID_Continue               | `XID_Start ]           val load_property_tbl :             CamomileLibrary.UCharInfo.Type.character_property_type ->             CamomileLibrary.UCharTbl.Bool.t           val load_property_tbl_by_name :             string -> CamomileLibrary.UCharTbl.Bool.t           val load_property_set :             CamomileLibrary.UCharInfo.Type.character_property_type ->             CamomileLibrary.USet.t           val load_property_set_by_name : string -> CamomileLibrary.USet.t           type script_type =               [ `Arabic               | `Armenian               | `Bengali               | `Bopomofo               | `Buhid               | `Canadian_Aboriginal               | `Cherokee               | `Common               | `Cyrillic               | `Deseret               | `Devanagari               | `Ethiopic               | `Georgian               | `Gothic               | `Greek               | `Gujarati               | `Gurmukhi               | `Han               | `Hangul               | `Hanunoo               | `Hebrew               | `Hiragana               | `Inherited               | `Kannada               | `Katakana               | `Khmer               | `Lao               | `Latin               | `Malayalam               | `Mongolian               | `Myanmar               | `Ogham               | `Old_Italic               | `Oriya               | `Runic               | `Sinhala               | `Syriac               | `Tagalog               | `Tagbanwa               | `Tamil               | `Telugu               | `Thaana               | `Thai               | `Tibetan               | `Yi ]           val script :             CamomileLibrary.UChar.t ->             CamomileLibrary.UCharInfo.Type.script_type           val load_script_map :             unit ->             CamomileLibrary.UCharInfo.Type.script_type CamomileLibrary.UMap.t           type version_type =               [ `Nc | `v1_0 | `v1_1 | `v2_0 | `v2_1 | `v3_0 | `v3_1 | `v3_2 ]           val age :             CamomileLibrary.UChar.t ->             CamomileLibrary.UCharInfo.Type.version_type           val older :             CamomileLibrary.UCharInfo.Type.version_type ->             CamomileLibrary.UCharInfo.Type.version_type -> bool           val load_to_lower1_tbl :             unit -> CamomileLibrary.UChar.t CamomileLibrary.UCharTbl.t           val load_to_upper1_tbl :             unit -> CamomileLibrary.UChar.t CamomileLibrary.UCharTbl.t           val load_to_title1_tbl :             unit -> CamomileLibrary.UChar.t CamomileLibrary.UCharTbl.t           type casemap_condition =               [ `AfterSoftDotted               | `BeforeDot               | `FinalSigma               | `Locale of string               | `MoreAbove               | `Not of CamomileLibrary.UCharInfo.Type.casemap_condition ]           type special_casing_property = {             lower : CamomileLibrary.UChar.t list;             title : CamomileLibrary.UChar.t list;             upper : CamomileLibrary.UChar.t list;             condition : CamomileLibrary.UCharInfo.Type.casemap_condition list;           }           val load_conditional_casing_tbl :             unit ->             CamomileLibrary.UCharInfo.Type.special_casing_property list             CamomileLibrary.UCharTbl.t           val load_casefolding_tbl :             unit -> CamomileLibrary.UChar.t list CamomileLibrary.UCharTbl.t           val combined_class : CamomileLibrary.UChar.t -> int           type decomposition_type =               [ `Canon               | `Circle               | `Compat               | `Final               | `Font               | `Fraction               | `Initial               | `Isolated               | `Medial               | `Narrow               | `NoBreak               | `Small               | `Square               | `Sub               | `Super               | `Vertical               | `Wide ]           type decomposition_info =               [ `Canonform               | `Composite of                   CamomileLibrary.UCharInfo.Type.decomposition_type *                   CamomileLibrary.UChar.t list               | `HangulSyllable ]           val load_decomposition_tbl :             unit ->             CamomileLibrary.UCharInfo.Type.decomposition_info             CamomileLibrary.UCharTbl.t           val load_composition_tbl :             unit ->             (CamomileLibrary.UChar.t * CamomileLibrary.UChar.t) list             CamomileLibrary.UCharTbl.t           val load_composition_exclusion_tbl :             unit -> CamomileLibrary.UCharTbl.Bool.t         end       module Make : functor (Config : ConfigInt.Type-> Type     end   module UNF :     sig       module type Type =         sig           type text           class nfd :             CamomileLibrary.UChar.t             #CamomileLibrary.OOChannel.obj_output_channel ->             [CamomileLibrary.UChar.t] OOChannel.obj_output_channel           class nfc :             CamomileLibrary.UChar.t             #CamomileLibrary.OOChannel.obj_output_channel ->             [CamomileLibrary.UChar.t] OOChannel.obj_output_channel           class nfkd :             CamomileLibrary.UChar.t             #CamomileLibrary.OOChannel.obj_output_channel ->             [CamomileLibrary.UChar.t] OOChannel.obj_output_channel           class nfkc :             CamomileLibrary.UChar.t             #CamomileLibrary.OOChannel.obj_output_channel ->             [CamomileLibrary.UChar.t] OOChannel.obj_output_channel           val nfd :             CamomileLibrary.UNF.Type.text -> CamomileLibrary.UNF.Type.text           val nfkd :             CamomileLibrary.UNF.Type.text -> CamomileLibrary.UNF.Type.text           val nfc :             CamomileLibrary.UNF.Type.text -> CamomileLibrary.UNF.Type.text           val nfkc :             CamomileLibrary.UNF.Type.text -> CamomileLibrary.UNF.Type.text           module NFCBuf :             sig               type buf               val create : int -> CamomileLibrary.UNF.Type.NFCBuf.buf               val contents :                 CamomileLibrary.UNF.Type.NFCBuf.buf ->                 CamomileLibrary.UNF.Type.text               val clear : CamomileLibrary.UNF.Type.NFCBuf.buf -> unit               val reset : CamomileLibrary.UNF.Type.NFCBuf.buf -> unit               val add_char :                 CamomileLibrary.UNF.Type.NFCBuf.buf ->                 CamomileLibrary.UChar.t -> unit               val add_string :                 CamomileLibrary.UNF.Type.NFCBuf.buf ->                 CamomileLibrary.UNF.Type.text -> unit               val add_buffer :                 CamomileLibrary.UNF.Type.NFCBuf.buf ->                 CamomileLibrary.UNF.Type.NFCBuf.buf -> unit             end           val nfc_append :             CamomileLibrary.UNF.Type.text ->             CamomileLibrary.UNF.Type.text -> CamomileLibrary.UNF.Type.text           val put_nfd :             CamomileLibrary.XString.t ->             CamomileLibrary.UNF.Type.text -> unit           val put_nfkd :             CamomileLibrary.XString.t ->             CamomileLibrary.UNF.Type.text -> unit           val put_nfc :             CamomileLibrary.XString.t ->             CamomileLibrary.UNF.Type.text -> unit           val put_nfkc :             CamomileLibrary.XString.t ->             CamomileLibrary.UNF.Type.text -> unit           type index           val nfd_inc :             CamomileLibrary.UNF.Type.text ->             CamomileLibrary.UNF.Type.index ->             ([ `Inc of                  CamomileLibrary.UChar.t list *                  CamomileLibrary.UNF.Type.index * 'a lazy_t ]              as 'a)           val canon_compare :             CamomileLibrary.UNF.Type.text ->             CamomileLibrary.UNF.Type.text -> int           val nfd_decompose :             CamomileLibrary.UChar.t -> CamomileLibrary.UChar.t list           val nfkd_decompose :             CamomileLibrary.UChar.t -> CamomileLibrary.UChar.t list         end       module Make :         functor (Config : ConfigInt.Type) (Text : UnicodeString.Type->           sig             type text = Text.t             class nfd :               UChar.t #OOChannel.obj_output_channel ->               [UChar.t] OOChannel.obj_output_channel             class nfc :               UChar.t #OOChannel.obj_output_channel ->               [UChar.t] OOChannel.obj_output_channel             class nfkd :               UChar.t #OOChannel.obj_output_channel ->               [UChar.t] OOChannel.obj_output_channel             class nfkc :               UChar.t #OOChannel.obj_output_channel ->               [UChar.t] OOChannel.obj_output_channel             val nfd : text -> text             val nfkd : text -> text             val nfc : text -> text             val nfkc : text -> text             module NFCBuf :               sig                 type buf                 val create : int -> buf                 val contents : buf -> text                 val clear : buf -> unit                 val reset : buf -> unit                 val add_char : buf -> UChar.t -> unit                 val add_string : buf -> text -> unit                 val add_buffer : buf -> buf -> unit               end             val nfc_append : text -> text -> text             val put_nfd : XString.t -> text -> unit             val put_nfkd : XString.t -> text -> unit             val put_nfc : XString.t -> text -> unit             val put_nfkc : XString.t -> text -> unit             type index = Text.index             val nfd_inc :               text ->               index -> ([ `Inc of UChar.t list * index * 'a lazy_t ] as 'a)             val canon_compare : text -> text -> int             val nfd_decompose : UChar.t -> UChar.t list             val nfkd_decompose : UChar.t -> UChar.t list           end     end   module UCol :     sig       type variable_option =           [ `Blanked | `Non_ignorable | `Shift_Trimmed | `Shifted ]       type precision = [ `Primary | `Quaternary | `Secondary | `Tertiary ]       module type Type =         sig           type text           type index           val compare :             ?locale:string ->             ?prec:CamomileLibrary.UCol.precision ->             ?variable:CamomileLibrary.UCol.variable_option ->             CamomileLibrary.UCol.Type.text ->             CamomileLibrary.UCol.Type.text -> int           val sort_key :             ?locale:string ->             ?prec:CamomileLibrary.UCol.precision ->             ?variable:CamomileLibrary.UCol.variable_option ->             CamomileLibrary.UCol.Type.text -> string           val compare_with_key :             ?locale:string ->             ?prec:CamomileLibrary.UCol.precision ->             ?variable:CamomileLibrary.UCol.variable_option ->             string -> CamomileLibrary.UCol.Type.text -> int           val search_with_key :             ?locale:string ->             ?prec:CamomileLibrary.UCol.precision ->             ?variable:CamomileLibrary.UCol.variable_option ->             string ->             CamomileLibrary.UCol.Type.text ->             CamomileLibrary.UCol.Type.index ->             CamomileLibrary.UCol.Type.index * CamomileLibrary.UCol.Type.index           val search :             ?locale:string ->             ?prec:CamomileLibrary.UCol.precision ->             ?variable:CamomileLibrary.UCol.variable_option ->             CamomileLibrary.UCol.Type.text ->             CamomileLibrary.UCol.Type.text ->             CamomileLibrary.UCol.Type.index ->             CamomileLibrary.UCol.Type.index * CamomileLibrary.UCol.Type.index         end       module Make :         functor (Config : ConfigInt.Type) (Text : UnicodeString.Type->           sig             type text = Text.t             type index = Text.index             val compare :               ?locale:string ->               ?prec:precision ->               ?variable:variable_option -> text -> text -> int             val sort_key :               ?locale:string ->               ?prec:precision -> ?variable:variable_option -> text -> string             val compare_with_key :               ?locale:string ->               ?prec:precision ->               ?variable:variable_option -> string -> text -> int             val search_with_key :               ?locale:string ->               ?prec:precision ->               ?variable:variable_option ->               string -> text -> index -> index * index             val search :               ?locale:string ->               ?prec:precision ->               ?variable:variable_option ->               text -> text -> index -> index * index           end     end   module CaseMap :     sig       module type Type =         sig           type text           val lowercase :             ?locale:string ->             CamomileLibrary.CaseMap.Type.text ->             CamomileLibrary.CaseMap.Type.text           val uppercase :             ?locale:string ->             CamomileLibrary.CaseMap.Type.text ->             CamomileLibrary.CaseMap.Type.text           val titlecase :             ?locale:string ->             CamomileLibrary.CaseMap.Type.text ->             CamomileLibrary.CaseMap.Type.text           val casefolding :             CamomileLibrary.CaseMap.Type.text ->             CamomileLibrary.CaseMap.Type.text           val compare_caseless :             CamomileLibrary.CaseMap.Type.text ->             CamomileLibrary.CaseMap.Type.text -> int         end       module Make :         functor (Config : ConfigInt.Type) (Text : UnicodeString.Type->           sig             type text = Text.t             val lowercase : ?locale:string -> text -> text             val uppercase : ?locale:string -> text -> text             val titlecase : ?locale:string -> text -> text             val casefolding : text -> text             val compare_caseless : text -> text -> int           end     end   module UReStr :     sig       module type Interface =         sig           type regexp = CamomileLibrary.URe.regexp           val regexp : string -> CamomileLibrary.UReStr.Interface.regexp           val quote : string -> string           val regexp_string :             string -> CamomileLibrary.UReStr.Interface.regexp           module type Type =             sig               type text               type index               type compiled_regexp               module SubText :                 sig                   type t                   val get : t -> int -> UChar.t                   val init : int -> (int -> UChar.t) -> t                   val length : t -> int                   type index                   val look : t -> index -> UChar.t                   val nth : t -> int -> index                   val first : t -> index                   val last : t -> index                   val next : t -> index -> index                   val prev : t -> index -> index                   val move : t -> index -> int -> index                   val out_of_range : t -> index -> bool                   val compare_index : t -> index -> index -> int                   val iter : (UChar.t -> unit) -> t -> unit                   val compare : t -> t -> int                   module Buf :                     sig                       type buf                       val create : int -> buf                       val contents : buf -> t                       val clear : buf -> unit                       val reset : buf -> unit                       val add_char : buf -> UChar.t -> unit                       val add_string : buf -> t -> unit                       val add_buffer : buf -> buf -> unit                     end                   type ur_text = text                   type ur_index = index                   val refer : ur_text -> ur_index -> ur_index -> t                   val excerpt : t -> ur_text                   val context : t -> ur_text * ur_index * ur_index                   val ur_index_of : t -> index -> ur_index                 end               val compile :                 CamomileLibrary.UReStr.Interface.regexp ->                 CamomileLibrary.UReStr.Interface.Type.compiled_regexp               val regexp_match :                 ?sem:CamomileLibrary.URe.match_semantics ->                 CamomileLibrary.UReStr.Interface.Type.compiled_regexp ->                 CamomileLibrary.UReStr.Interface.Type.text ->                 CamomileLibrary.UReStr.Interface.Type.index ->                 CamomileLibrary.UReStr.Interface.Type.SubText.t option array                 option               val string_match :                 CamomileLibrary.UReStr.Interface.Type.compiled_regexp ->                 CamomileLibrary.UReStr.Interface.Type.text ->                 CamomileLibrary.UReStr.Interface.Type.index -> bool               val search_forward :                 ?sem:CamomileLibrary.URe.match_semantics ->                 CamomileLibrary.UReStr.Interface.Type.compiled_regexp ->                 CamomileLibrary.UReStr.Interface.Type.text ->                 CamomileLibrary.UReStr.Interface.Type.index ->                 CamomileLibrary.UReStr.Interface.Type.SubText.t option array                 option             end           module Make :             functor (Text : UnicodeString.Type->               sig                 type text = Text.t                 type index = Text.index                 type compiled_regexp                 module SubText :                   sig                     type t                     val get : t -> int -> UChar.t                     val init : int -> (int -> UChar.t) -> t                     val length : t -> int                     type index                     val look : t -> index -> UChar.t                     val nth : t -> int -> index                     val first : t -> index                     val last : t -> index                     val next : t -> index -> index                     val prev : t -> index -> index                     val move : t -> index -> int -> index                     val out_of_range : t -> index -> bool                     val compare_index : t -> index -> index -> int                     val iter : (UChar.t -> unit) -> t -> unit                     val compare : t -> t -> int                     module Buf :                       sig                         type buf                         val create : int -> buf                         val contents : buf -> t                         val clear : buf -> unit                         val reset : buf -> unit                         val add_char : buf -> UChar.t -> unit                         val add_string : buf -> t -> unit                         val add_buffer : buf -> buf -> unit                       end                     type ur_text = text                     type ur_index = index                     val refer : ur_text -> ur_index -> ur_index -> t                     val excerpt : t -> ur_text                     val context : t -> ur_text * ur_index * ur_index                     val ur_index_of : t -> index -> ur_index                   end                 val compile : regexp -> compiled_regexp                 val regexp_match :                   ?sem:URe.match_semantics ->                   compiled_regexp ->                   text -> index -> SubText.t option array option                 val string_match : compiled_regexp -> text -> index -> bool                 val search_forward :                   ?sem:URe.match_semantics ->                   compiled_regexp ->                   text -> index -> SubText.t option array option               end         end       module Configure : functor (Config : ConfigInt.Type-> Interface     end   module StringPrep :     sig       module type Type =         sig           type text           exception Prohibited of CamomileLibrary.UChar.t           exception Bad_bidi           type profile =               [ `Iscsi               | `Mib               | `Nameprep               | `Nodeprep               | `Resourceprep               | `Saslprep               | `Trace ]           val stringprep :             CamomileLibrary.StringPrep.Type.profile ->             CamomileLibrary.StringPrep.Type.text ->             CamomileLibrary.StringPrep.Type.text         end       module Make :         functor (Config : ConfigInt.Type) (Text : UnicodeString.Type->           sig             type text = Text.t             exception Prohibited of UChar.t             exception Bad_bidi             type profile =                 [ `Iscsi                 | `Mib                 | `Nameprep                 | `Nodeprep                 | `Resourceprep                 | `Saslprep                 | `Trace ]             val stringprep : profile -> text -> text           end     end   module type Type =     sig       module OOChannel :         sig           class type ['a] obj_input_channel =             object method close_in : unit -> unit method get : unit -> 'end           class type ['a] obj_output_channel =             object               method close_out : unit -> unit               method flush : unit -> unit               method put : '-> unit             end           class ['a] channel_of_stream :             'Stream.t -> ['a] obj_input_channel           val stream_of_channel :             '#CamomileLibrary.Type.OOChannel.obj_input_channel ->             'Stream.t           class type char_input_channel =             object               method close_in : unit -> unit               method input : string -> int -> int -> int             end           class type char_output_channel =             object               method close_out : unit -> unit               method flush : unit -> unit               method output : string -> int -> int -> int             end           class char_input_channel_of :             char #CamomileLibrary.Type.OOChannel.obj_input_channel ->             char_input_channel           class char_obj_input_channel_of :             CamomileLibrary.Type.OOChannel.char_input_channel ->             [char] obj_input_channel           class char_output_channel_of :             char #CamomileLibrary.Type.OOChannel.obj_output_channel ->             char_output_channel           class char_obj_output_channel_of :             CamomileLibrary.Type.OOChannel.char_output_channel ->             [char] obj_output_channel           class of_in_channel : Pervasives.in_channel -> char_input_channel           class of_out_channel :             Pervasives.out_channel -> char_output_channel         end       module UChar :         sig           type t           exception Out_of_range           val char_of : CamomileLibrary.Type.UChar.t -> char           val of_char : char -> CamomileLibrary.Type.UChar.t           val code : CamomileLibrary.Type.UChar.t -> int           val chr : int -> CamomileLibrary.Type.UChar.t           external uint_code : CamomileLibrary.Type.UChar.t -> int             = "%identity"           val chr_of_uint : int -> CamomileLibrary.Type.UChar.t           val eq :             CamomileLibrary.Type.UChar.t ->             CamomileLibrary.Type.UChar.t -> bool           val compare :             CamomileLibrary.Type.UChar.t ->             CamomileLibrary.Type.UChar.t -> int           type uchar = CamomileLibrary.Type.UChar.t           val int_of : CamomileLibrary.Type.UChar.uchar -> int           val of_int : int -> CamomileLibrary.Type.UChar.uchar         end       module USet :         sig           type t           val empty : CamomileLibrary.Type.USet.t           val is_empty : CamomileLibrary.Type.USet.t -> bool           val mem :             CamomileLibrary.Type.UChar.t ->             CamomileLibrary.Type.USet.t -> bool           val add :             CamomileLibrary.Type.UChar.t ->             CamomileLibrary.Type.USet.t -> CamomileLibrary.Type.USet.t           val add_range :             CamomileLibrary.Type.UChar.t ->             CamomileLibrary.Type.UChar.t ->             CamomileLibrary.Type.USet.t -> CamomileLibrary.Type.USet.t           val singleton :             CamomileLibrary.Type.UChar.t -> CamomileLibrary.Type.USet.t           val remove :             CamomileLibrary.Type.UChar.t ->             CamomileLibrary.Type.USet.t -> CamomileLibrary.Type.USet.t           val remove_range :             CamomileLibrary.Type.UChar.t ->             CamomileLibrary.Type.UChar.t ->             CamomileLibrary.Type.USet.t -> CamomileLibrary.Type.USet.t           val union :             CamomileLibrary.Type.USet.t ->             CamomileLibrary.Type.USet.t -> CamomileLibrary.Type.USet.t           val inter :             CamomileLibrary.Type.USet.t ->             CamomileLibrary.Type.USet.t -> CamomileLibrary.Type.USet.t           val diff :             CamomileLibrary.Type.USet.t ->             CamomileLibrary.Type.USet.t -> CamomileLibrary.Type.USet.t           val compl :             CamomileLibrary.Type.USet.t -> CamomileLibrary.Type.USet.t           val compare :             CamomileLibrary.Type.USet.t -> CamomileLibrary.Type.USet.t -> int           val equal :             CamomileLibrary.Type.USet.t ->             CamomileLibrary.Type.USet.t -> bool           val subset :             CamomileLibrary.Type.USet.t ->             CamomileLibrary.Type.USet.t -> bool           val from :             CamomileLibrary.Type.UChar.t ->             CamomileLibrary.Type.USet.t -> CamomileLibrary.Type.USet.t           val after :             CamomileLibrary.Type.UChar.t ->             CamomileLibrary.Type.USet.t -> CamomileLibrary.Type.USet.t           val until :             CamomileLibrary.Type.UChar.t ->             CamomileLibrary.Type.USet.t -> CamomileLibrary.Type.USet.t           val before :             CamomileLibrary.Type.UChar.t ->             CamomileLibrary.Type.USet.t -> CamomileLibrary.Type.USet.t           val iter :             (CamomileLibrary.Type.UChar.t -> unit) ->             CamomileLibrary.Type.USet.t -> unit           val iter_range :             (CamomileLibrary.Type.UChar.t ->              CamomileLibrary.Type.UChar.t -> unit) ->             CamomileLibrary.Type.USet.t -> unit           val fold :             (CamomileLibrary.Type.UChar.t -> '-> 'a) ->             CamomileLibrary.Type.USet.t -> '-> 'a           val fold_range :             (CamomileLibrary.Type.UChar.t ->              CamomileLibrary.Type.UChar.t -> '-> 'a) ->             CamomileLibrary.Type.USet.t -> '-> 'a           val for_all :             (CamomileLibrary.Type.UChar.t -> bool) ->             CamomileLibrary.Type.USet.t -> bool           val exists :             (CamomileLibrary.Type.UChar.t -> bool) ->             CamomileLibrary.Type.USet.t -> bool           val filter :             (CamomileLibrary.Type.UChar.t -> bool) ->             CamomileLibrary.Type.USet.t -> CamomileLibrary.Type.USet.t           val partition :             (CamomileLibrary.Type.UChar.t -> bool) ->             CamomileLibrary.Type.USet.t ->             CamomileLibrary.Type.USet.t * CamomileLibrary.Type.USet.t           val cardinal : CamomileLibrary.Type.USet.t -> int           val elements :             CamomileLibrary.Type.USet.t -> CamomileLibrary.Type.UChar.t list           val ranges :             CamomileLibrary.Type.USet.t ->             (CamomileLibrary.Type.UChar.t * CamomileLibrary.Type.UChar.t)             list           val min_elt :             CamomileLibrary.Type.USet.t -> CamomileLibrary.Type.UChar.t           val max_elt :             CamomileLibrary.Type.USet.t -> CamomileLibrary.Type.UChar.t           val choose :             CamomileLibrary.Type.USet.t -> CamomileLibrary.Type.UChar.t           val uset_of_iset : ISet.t -> CamomileLibrary.Type.USet.t           val iset_of_uset : CamomileLibrary.Type.USet.t -> ISet.t         end       module UMap :         sig           type 'a t           val empty : 'CamomileLibrary.Type.UMap.t           val is_empty : 'CamomileLibrary.Type.UMap.t -> bool           val add :             ?eq:('-> '-> bool) ->             CamomileLibrary.Type.UChar.t ->             '->             'CamomileLibrary.Type.UMap.t -> 'CamomileLibrary.Type.UMap.t           val add_range :             ?eq:('-> '-> bool) ->             CamomileLibrary.Type.UChar.t ->             CamomileLibrary.Type.UChar.t ->             '->             'CamomileLibrary.Type.UMap.t -> 'CamomileLibrary.Type.UMap.t           val find :             CamomileLibrary.Type.UChar.t ->             'CamomileLibrary.Type.UMap.t -> 'a           val remove :             CamomileLibrary.Type.UChar.t ->             'CamomileLibrary.Type.UMap.t -> 'CamomileLibrary.Type.UMap.t           val remove_range :             CamomileLibrary.Type.UChar.t ->             CamomileLibrary.Type.UChar.t ->             'CamomileLibrary.Type.UMap.t -> 'CamomileLibrary.Type.UMap.t           val from :             CamomileLibrary.Type.UChar.t ->             'CamomileLibrary.Type.UMap.t -> 'CamomileLibrary.Type.UMap.t           val after :             CamomileLibrary.Type.UChar.t ->             'CamomileLibrary.Type.UMap.t -> 'CamomileLibrary.Type.UMap.t           val until :             CamomileLibrary.Type.UChar.t ->             'CamomileLibrary.Type.UMap.t -> 'CamomileLibrary.Type.UMap.t           val before :             CamomileLibrary.Type.UChar.t ->             'CamomileLibrary.Type.UMap.t -> 'CamomileLibrary.Type.UMap.t           val mem :             CamomileLibrary.Type.UChar.t ->             'CamomileLibrary.Type.UMap.t -> bool           val iter :             (CamomileLibrary.Type.UChar.t -> '-> unit) ->             'CamomileLibrary.Type.UMap.t -> unit           val iter_range :             (CamomileLibrary.Type.UChar.t ->              CamomileLibrary.Type.UChar.t -> '-> unit) ->             'CamomileLibrary.Type.UMap.t -> unit           val map :             ?eq:('-> '-> bool) ->             ('-> 'b) ->             'CamomileLibrary.Type.UMap.t -> 'CamomileLibrary.Type.UMap.t           val mapi :             ?eq:('-> '-> bool) ->             (CamomileLibrary.Type.UChar.t -> '-> 'b) ->             'CamomileLibrary.Type.UMap.t -> 'CamomileLibrary.Type.UMap.t           val fold :             (CamomileLibrary.Type.UChar.t -> '-> '-> 'a) ->             'CamomileLibrary.Type.UMap.t -> '-> 'a           val fold_range :             (CamomileLibrary.Type.UChar.t ->              CamomileLibrary.Type.UChar.t -> '-> '-> 'a) ->             'CamomileLibrary.Type.UMap.t -> '-> 'a           val set_to_map :             CamomileLibrary.Type.USet.t ->             '-> 'CamomileLibrary.Type.UMap.t           val domain :             'CamomileLibrary.Type.UMap.t -> CamomileLibrary.Type.USet.t           val map_to_set :             ('-> bool) ->             'CamomileLibrary.Type.UMap.t -> CamomileLibrary.Type.USet.t           val umap_of_imap : 'IMap.t -> 'CamomileLibrary.Type.UMap.t           val imap_of_umap : 'CamomileLibrary.Type.UMap.t -> 'IMap.t         end       module UCharTbl :         sig           type 'a tbl           type 'a t = 'CamomileLibrary.Type.UCharTbl.tbl           val get :             'CamomileLibrary.Type.UCharTbl.tbl ->             CamomileLibrary.Type.UChar.t -> 'a           module type Type =             sig               type elt               type t =                   CamomileLibrary.Type.UCharTbl.Type.elt                   CamomileLibrary.Type.UCharTbl.tbl               val get :                 CamomileLibrary.Type.UCharTbl.Type.elt                 CamomileLibrary.Type.UCharTbl.tbl ->                 CamomileLibrary.Type.UChar.t ->                 CamomileLibrary.Type.UCharTbl.Type.elt               val of_map :                 CamomileLibrary.Type.UCharTbl.Type.elt ->                 CamomileLibrary.Type.UCharTbl.Type.elt                 CamomileLibrary.Type.UMap.t ->                 CamomileLibrary.Type.UCharTbl.Type.t             end           module Make :             functor (H : Hashtbl.HashedType->               sig                 type elt = H.t                 type t = elt tbl                 val get : elt tbl -> UChar.t -> elt                 val of_map : elt -> elt UMap.t -> t               end           module Bool :             sig               type t               val get :                 CamomileLibrary.Type.UCharTbl.Bool.t ->                 CamomileLibrary.Type.UChar.t -> bool               val of_set :                 CamomileLibrary.Type.USet.t ->                 CamomileLibrary.Type.UCharTbl.Bool.t             end           module Bits :             sig               type t               val of_map :                 int ->                 int CamomileLibrary.Type.UMap.t ->                 CamomileLibrary.Type.UCharTbl.Bits.t               val get :                 CamomileLibrary.Type.UCharTbl.Bits.t ->                 CamomileLibrary.Type.UChar.t -> int             end           module Bytes :             sig               type t               val of_map :                 int ->                 int CamomileLibrary.Type.UMap.t ->                 CamomileLibrary.Type.UCharTbl.Bytes.t               val get :                 CamomileLibrary.Type.UCharTbl.Bytes.t ->                 CamomileLibrary.Type.UChar.t -> int             end           module Char :             sig               type t               val of_map :                 char ->                 char CamomileLibrary.Type.UMap.t ->                 CamomileLibrary.Type.UCharTbl.Char.t               val get :                 CamomileLibrary.Type.UCharTbl.Char.t ->                 CamomileLibrary.Type.UChar.t -> char             end         end       module UnicodeString :         sig           module type Type =             sig               type t               val get :                 CamomileLibrary.Type.UnicodeString.Type.t ->                 int -> CamomileLibrary.Type.UChar.t               val init :                 int ->                 (int -> CamomileLibrary.Type.UChar.t) ->                 CamomileLibrary.Type.UnicodeString.Type.t               val length : CamomileLibrary.Type.UnicodeString.Type.t -> int               type index               val look :                 CamomileLibrary.Type.UnicodeString.Type.t ->                 CamomileLibrary.Type.UnicodeString.Type.index ->                 CamomileLibrary.Type.UChar.t               val nth :                 CamomileLibrary.Type.UnicodeString.Type.t ->                 int -> CamomileLibrary.Type.UnicodeString.Type.index               val next :                 CamomileLibrary.Type.UnicodeString.Type.t ->                 CamomileLibrary.Type.UnicodeString.Type.index ->                 CamomileLibrary.Type.UnicodeString.Type.index               val prev :                 CamomileLibrary.Type.UnicodeString.Type.t ->                 CamomileLibrary.Type.UnicodeString.Type.index ->                 CamomileLibrary.Type.UnicodeString.Type.index               val out_of_range :                 CamomileLibrary.Type.UnicodeString.Type.t ->                 CamomileLibrary.Type.UnicodeString.Type.index -> bool               val iter :                 (CamomileLibrary.Type.UChar.t -> unit) ->                 CamomileLibrary.Type.UnicodeString.Type.t -> unit               val compare :                 CamomileLibrary.Type.UnicodeString.Type.t ->                 CamomileLibrary.Type.UnicodeString.Type.t -> int               val first :                 CamomileLibrary.Type.UnicodeString.Type.t ->                 CamomileLibrary.Type.UnicodeString.Type.index               val last :                 CamomileLibrary.Type.UnicodeString.Type.t ->                 CamomileLibrary.Type.UnicodeString.Type.index               val move :                 CamomileLibrary.Type.UnicodeString.Type.t ->                 CamomileLibrary.Type.UnicodeString.Type.index ->                 int -> CamomileLibrary.Type.UnicodeString.Type.index               val compare_index :                 CamomileLibrary.Type.UnicodeString.Type.t ->                 CamomileLibrary.Type.UnicodeString.Type.index ->                 CamomileLibrary.Type.UnicodeString.Type.index -> int               module Buf :                 sig                   type buf                   val create :                     int -> CamomileLibrary.Type.UnicodeString.Type.Buf.buf                   val contents :                     CamomileLibrary.Type.UnicodeString.Type.Buf.buf ->                     CamomileLibrary.Type.UnicodeString.Type.t                   val clear :                     CamomileLibrary.Type.UnicodeString.Type.Buf.buf -> unit                   val reset :                     CamomileLibrary.Type.UnicodeString.Type.Buf.buf -> unit                   val add_char :                     CamomileLibrary.Type.UnicodeString.Type.Buf.buf ->                     CamomileLibrary.Type.UChar.t -> unit                   val add_string :                     CamomileLibrary.Type.UnicodeString.Type.Buf.buf ->                     CamomileLibrary.Type.UnicodeString.Type.t -> unit                   val add_buffer :                     CamomileLibrary.Type.UnicodeString.Type.Buf.buf ->                     CamomileLibrary.Type.UnicodeString.Type.Buf.buf -> unit                 end             end         end       module UText :         sig           type mutability = [ `Immutable | `Mutable ]           type 'a text           type utext = [ `Immutable ] CamomileLibrary.Type.UText.text           type ustring = [ `Mutable ] CamomileLibrary.Type.UText.text           type t = CamomileLibrary.Type.UText.utext           val utext_of_ustring :             CamomileLibrary.Type.UText.ustring ->             CamomileLibrary.Type.UText.utext           val ustring_of_utext :             CamomileLibrary.Type.UText.utext ->             CamomileLibrary.Type.UText.ustring           val get :             'CamomileLibrary.Type.UText.text ->             int -> CamomileLibrary.Type.UChar.t           val set :             CamomileLibrary.Type.UText.ustring ->             int -> CamomileLibrary.Type.UChar.t -> unit           type index           val look :             'CamomileLibrary.Type.UText.text ->             CamomileLibrary.Type.UText.index -> CamomileLibrary.Type.UChar.t           val nth :             'CamomileLibrary.Type.UText.text ->             int -> CamomileLibrary.Type.UText.index           val first :             'CamomileLibrary.Type.UText.text ->             CamomileLibrary.Type.UText.index           val last :             'CamomileLibrary.Type.UText.text ->             CamomileLibrary.Type.UText.index           val out_of_range :             'CamomileLibrary.Type.UText.text ->             CamomileLibrary.Type.UText.index -> bool           val compare_index :             'CamomileLibrary.Type.UText.text ->             CamomileLibrary.Type.UText.index ->             CamomileLibrary.Type.UText.index -> int           val next :             'CamomileLibrary.Type.UText.text ->             CamomileLibrary.Type.UText.index ->             CamomileLibrary.Type.UText.index           val prev :             'CamomileLibrary.Type.UText.text ->             CamomileLibrary.Type.UText.index ->             CamomileLibrary.Type.UText.index           val move :             'CamomileLibrary.Type.UText.text ->             CamomileLibrary.Type.UText.index ->             int -> CamomileLibrary.Type.UText.index           val length : 'CamomileLibrary.Type.UText.text -> int           val of_string : string -> CamomileLibrary.Type.UText.utext           val init :             int ->             (int -> CamomileLibrary.Type.UChar.t) ->             CamomileLibrary.Type.UText.utext           val init_ustring :             int ->             (int -> CamomileLibrary.Type.UChar.t) ->             CamomileLibrary.Type.UText.ustring           val make :             int ->             CamomileLibrary.Type.UChar.t ->             CamomileLibrary.Type.UText.ustring           val copy :             CamomileLibrary.Type.UText.ustring ->             CamomileLibrary.Type.UText.ustring           val sub :             'CamomileLibrary.Type.UText.text ->             int -> int -> 'CamomileLibrary.Type.UText.text           val fill :             CamomileLibrary.Type.UText.ustring ->             int -> int -> CamomileLibrary.Type.UChar.t -> unit           val blit :             'CamomileLibrary.Type.UText.text ->             int -> CamomileLibrary.Type.UText.ustring -> int -> int -> unit           val append :             'CamomileLibrary.Type.UText.text ->             'CamomileLibrary.Type.UText.text ->             'CamomileLibrary.Type.UText.text           val iter :             (CamomileLibrary.Type.UChar.t -> unit) ->             'CamomileLibrary.Type.UText.text -> unit           val compare :             'CamomileLibrary.Type.UText.text ->             'CamomileLibrary.Type.UText.text -> int           module Buf :             sig               type buf               val create : int -> CamomileLibrary.Type.UText.Buf.buf               val contents :                 CamomileLibrary.Type.UText.Buf.buf ->                 CamomileLibrary.Type.UText.t               val contents_string :                 CamomileLibrary.Type.UText.Buf.buf ->                 CamomileLibrary.Type.UText.ustring               val length : CamomileLibrary.Type.UText.Buf.buf -> int               val clear : CamomileLibrary.Type.UText.Buf.buf -> unit               val reset : CamomileLibrary.Type.UText.Buf.buf -> unit               val add_char :                 CamomileLibrary.Type.UText.Buf.buf ->                 CamomileLibrary.Type.UChar.t -> unit               val add_string :                 CamomileLibrary.Type.UText.Buf.buf ->                 'CamomileLibrary.Type.UText.text -> unit               val add_buffer :                 CamomileLibrary.Type.UText.Buf.buf ->                 CamomileLibrary.Type.UText.Buf.buf -> unit             end         end       module XString :         sig           type xstring           type t = CamomileLibrary.Type.XString.xstring           val get :             CamomileLibrary.Type.XString.xstring ->             int -> CamomileLibrary.Type.UChar.t           val set :             CamomileLibrary.Type.XString.xstring ->             int -> CamomileLibrary.Type.UChar.t -> unit           val length : CamomileLibrary.Type.XString.xstring -> int           val init :             int ->             (int -> CamomileLibrary.Type.UChar.t) ->             CamomileLibrary.Type.XString.xstring           type index           val look :             CamomileLibrary.Type.XString.xstring ->             CamomileLibrary.Type.XString.index ->             CamomileLibrary.Type.UChar.t           val nth :             CamomileLibrary.Type.XString.xstring ->             int -> CamomileLibrary.Type.XString.index           val first :             CamomileLibrary.Type.XString.xstring ->             CamomileLibrary.Type.XString.index           val last :             CamomileLibrary.Type.XString.xstring ->             CamomileLibrary.Type.XString.index           val out_of_range :             CamomileLibrary.Type.XString.xstring ->             CamomileLibrary.Type.XString.index -> bool           val next :             CamomileLibrary.Type.XString.xstring ->             CamomileLibrary.Type.XString.index ->             CamomileLibrary.Type.XString.index           val prev :             CamomileLibrary.Type.XString.xstring ->             CamomileLibrary.Type.XString.index ->             CamomileLibrary.Type.XString.index           val move :             CamomileLibrary.Type.XString.xstring ->             CamomileLibrary.Type.XString.index ->             int -> CamomileLibrary.Type.XString.index           val compare_index :             CamomileLibrary.Type.XString.xstring ->             CamomileLibrary.Type.XString.index ->             CamomileLibrary.Type.XString.index -> int           val make :             ?bufsize:int ->             int ->             CamomileLibrary.Type.UChar.t ->             CamomileLibrary.Type.XString.xstring           val clear : CamomileLibrary.Type.XString.xstring -> unit           val reset : CamomileLibrary.Type.XString.xstring -> unit           val copy :             CamomileLibrary.Type.XString.xstring ->             CamomileLibrary.Type.XString.xstring           val sub :             CamomileLibrary.Type.XString.xstring ->             int -> int -> CamomileLibrary.Type.XString.xstring           val add_char :             CamomileLibrary.Type.XString.xstring ->             CamomileLibrary.Type.UChar.t -> unit           val add_text :             CamomileLibrary.Type.XString.xstring ->             'CamomileLibrary.Type.UText.text -> unit           val add_xstring :             CamomileLibrary.Type.XString.xstring ->             CamomileLibrary.Type.XString.xstring -> unit           val shrink : CamomileLibrary.Type.XString.xstring -> int -> unit           val append :             CamomileLibrary.Type.XString.xstring ->             CamomileLibrary.Type.XString.xstring ->             CamomileLibrary.Type.XString.xstring           val utext_of :             CamomileLibrary.Type.XString.xstring ->             CamomileLibrary.Type.UText.t           val ustring_of :             CamomileLibrary.Type.XString.xstring ->             CamomileLibrary.Type.UText.ustring           val iter :             (CamomileLibrary.Type.UChar.t -> unit) ->             CamomileLibrary.Type.XString.xstring -> unit           val compare :             CamomileLibrary.Type.XString.t ->             CamomileLibrary.Type.XString.t -> int           module Buf :             sig               type buf               val create : int -> CamomileLibrary.Type.XString.Buf.buf               val contents :                 CamomileLibrary.Type.XString.Buf.buf ->                 CamomileLibrary.Type.XString.t               val length : CamomileLibrary.Type.XString.Buf.buf -> int               val clear : CamomileLibrary.Type.XString.Buf.buf -> unit               val reset : CamomileLibrary.Type.XString.Buf.buf -> unit               val add_char :                 CamomileLibrary.Type.XString.Buf.buf ->                 CamomileLibrary.Type.UChar.t -> unit               val add_string :                 CamomileLibrary.Type.XString.Buf.buf ->                 CamomileLibrary.Type.XString.t -> unit               val add_buffer :                 CamomileLibrary.Type.XString.Buf.buf ->                 CamomileLibrary.Type.XString.Buf.buf -> unit             end         end       module SubText :         sig           module type Type =             sig               type t               val get :                 CamomileLibrary.Type.SubText.Type.t ->                 int -> CamomileLibrary.Type.UChar.t               val init :                 int ->                 (int -> CamomileLibrary.Type.UChar.t) ->                 CamomileLibrary.Type.SubText.Type.t               val length : CamomileLibrary.Type.SubText.Type.t -> int               type index               val look :                 CamomileLibrary.Type.SubText.Type.t ->                 CamomileLibrary.Type.SubText.Type.index ->                 CamomileLibrary.Type.UChar.t               val nth :                 CamomileLibrary.Type.SubText.Type.t ->                 int -> CamomileLibrary.Type.SubText.Type.index               val first :                 CamomileLibrary.Type.SubText.Type.t ->                 CamomileLibrary.Type.SubText.Type.index               val last :                 CamomileLibrary.Type.SubText.Type.t ->                 CamomileLibrary.Type.SubText.Type.index               val next :                 CamomileLibrary.Type.SubText.Type.t ->                 CamomileLibrary.Type.SubText.Type.index ->                 CamomileLibrary.Type.SubText.Type.index               val prev :                 CamomileLibrary.Type.SubText.Type.t ->                 CamomileLibrary.Type.SubText.Type.index ->                 CamomileLibrary.Type.SubText.Type.index               val move :                 CamomileLibrary.Type.SubText.Type.t ->                 CamomileLibrary.Type.SubText.Type.index ->                 int -> CamomileLibrary.Type.SubText.Type.index               val out_of_range :                 CamomileLibrary.Type.SubText.Type.t ->                 CamomileLibrary.Type.SubText.Type.index -> bool               val compare_index :                 CamomileLibrary.Type.SubText.Type.t ->                 CamomileLibrary.Type.SubText.Type.index ->                 CamomileLibrary.Type.SubText.Type.index -> int               val iter :                 (CamomileLibrary.Type.UChar.t -> unit) ->                 CamomileLibrary.Type.SubText.Type.t -> unit               val compare :                 CamomileLibrary.Type.SubText.Type.t ->                 CamomileLibrary.Type.SubText.Type.t -> int               module Buf :                 sig                   type buf                   val create :                     int -> CamomileLibrary.Type.SubText.Type.Buf.buf                   val contents :                     CamomileLibrary.Type.SubText.Type.Buf.buf ->                     CamomileLibrary.Type.SubText.Type.t                   val clear :                     CamomileLibrary.Type.SubText.Type.Buf.buf -> unit                   val reset :                     CamomileLibrary.Type.SubText.Type.Buf.buf -> unit                   val add_char :                     CamomileLibrary.Type.SubText.Type.Buf.buf ->                     CamomileLibrary.Type.UChar.t -> unit                   val add_string :                     CamomileLibrary.Type.SubText.Type.Buf.buf ->                     CamomileLibrary.Type.SubText.Type.t -> unit                   val add_buffer :                     CamomileLibrary.Type.SubText.Type.Buf.buf ->                     CamomileLibrary.Type.SubText.Type.Buf.buf -> unit                 end               type ur_text               type ur_index               val refer :                 CamomileLibrary.Type.SubText.Type.ur_text ->                 CamomileLibrary.Type.SubText.Type.ur_index ->                 CamomileLibrary.Type.SubText.Type.ur_index ->                 CamomileLibrary.Type.SubText.Type.t               val excerpt :                 CamomileLibrary.Type.SubText.Type.t ->                 CamomileLibrary.Type.SubText.Type.ur_text               val context :                 CamomileLibrary.Type.SubText.Type.t ->                 CamomileLibrary.Type.SubText.Type.ur_text *                 CamomileLibrary.Type.SubText.Type.ur_index *                 CamomileLibrary.Type.SubText.Type.ur_index               val ur_index_of :                 CamomileLibrary.Type.SubText.Type.t ->                 CamomileLibrary.Type.SubText.Type.index ->                 CamomileLibrary.Type.SubText.Type.ur_index             end           module Make :             functor (Text : UnicodeString.Type->               sig                 type t                 val get : t -> int -> UChar.t                 val init : int -> (int -> UChar.t) -> t                 val length : t -> int                 type index                 val look : t -> index -> UChar.t                 val nth : t -> int -> index                 val first : t -> index                 val last : t -> index                 val next : t -> index -> index                 val prev : t -> index -> index                 val move : t -> index -> int -> index                 val out_of_range : t -> index -> bool                 val compare_index : t -> index -> index -> int                 val iter : (UChar.t -> unit) -> t -> unit                 val compare : t -> t -> int                 module Buf :                   sig                     type buf                     val create : int -> buf                     val contents : buf -> t                     val clear : buf -> unit                     val reset : buf -> unit                     val add_char : buf -> UChar.t -> unit                     val add_string : buf -> t -> unit                     val add_buffer : buf -> buf -> unit                   end                 type ur_text = Text.t                 type ur_index = Text.index                 val refer : ur_text -> ur_index -> ur_index -> t                 val excerpt : t -> ur_text                 val context : t -> ur_text * ur_index * ur_index                 val ur_index_of : t -> index -> ur_index               end         end       module ULine :         sig           type separator = [ `CR | `CRLF | `LF | `LS | `NEL | `PS ]           class input :             CamomileLibrary.Type.ULine.separator ->             CamomileLibrary.Type.UChar.t             #CamomileLibrary.Type.OOChannel.obj_input_channel ->             [CamomileLibrary.Type.UChar.t] OOChannel.obj_input_channel           class output :             CamomileLibrary.Type.ULine.separator ->             CamomileLibrary.Type.UChar.t             #CamomileLibrary.Type.OOChannel.obj_output_channel ->             [CamomileLibrary.Type.UChar.t] OOChannel.obj_output_channel           module type Type =             sig               type text               class input_line :                 CamomileLibrary.Type.UChar.t                 #CamomileLibrary.Type.OOChannel.obj_input_channel ->                 [CamomileLibrary.Type.ULine.Type.text]                 OOChannel.obj_input_channel               class output_line :                 ?sp:CamomileLibrary.Type.ULine.separator ->                 CamomileLibrary.Type.UChar.t                 #CamomileLibrary.Type.OOChannel.obj_output_channel ->                 [CamomileLibrary.Type.ULine.Type.text]                 OOChannel.obj_output_channel             end           module Make :             functor (Text : UnicodeString.Type->               sig                 type text = Text.t                 class input_line :                   UChar.t #OOChannel.obj_input_channel ->                   [text] OOChannel.obj_input_channel                 class output_line :                   ?sp:separator ->                   UChar.t #OOChannel.obj_output_channel ->                   [text] OOChannel.obj_output_channel               end         end       module Locale :         sig           type t = string           val read :             string -> string -> (Pervasives.in_channel -> 'a) -> string -> 'a           val contain : string -> string -> bool         end       module CharEncoding : CharEncoding.Interface       module UTF8 :         sig           type t = string           exception Malformed_code           val validate : CamomileLibrary.Type.UTF8.t -> unit           val get :             CamomileLibrary.Type.UTF8.t ->             int -> CamomileLibrary.Type.UChar.t           val init :             int ->             (int -> CamomileLibrary.Type.UChar.t) ->             CamomileLibrary.Type.UTF8.t           val length : CamomileLibrary.Type.UTF8.t -> int           type index = int           val nth :             CamomileLibrary.Type.UTF8.t ->             int -> CamomileLibrary.Type.UTF8.index           val first :             CamomileLibrary.Type.UTF8.t -> CamomileLibrary.Type.UTF8.index           val last :             CamomileLibrary.Type.UTF8.t -> CamomileLibrary.Type.UTF8.index           val look :             CamomileLibrary.Type.UTF8.t ->             CamomileLibrary.Type.UTF8.index -> CamomileLibrary.Type.UChar.t           val out_of_range :             CamomileLibrary.Type.UTF8.t ->             CamomileLibrary.Type.UTF8.index -> bool           val compare_index :             CamomileLibrary.Type.UTF8.t ->             CamomileLibrary.Type.UTF8.index ->             CamomileLibrary.Type.UTF8.index -> int           val next :             CamomileLibrary.Type.UTF8.t ->             CamomileLibrary.Type.UTF8.index ->             CamomileLibrary.Type.UTF8.index           val prev :             CamomileLibrary.Type.UTF8.t ->             CamomileLibrary.Type.UTF8.index ->             CamomileLibrary.Type.UTF8.index           val move :             CamomileLibrary.Type.UTF8.t ->             CamomileLibrary.Type.UTF8.index ->             int -> CamomileLibrary.Type.UTF8.index           val iter :             (CamomileLibrary.Type.UChar.t -> unit) ->             CamomileLibrary.Type.UTF8.t -> unit           val compare :             CamomileLibrary.Type.UTF8.t -> CamomileLibrary.Type.UTF8.t -> int           module Buf :             sig               type buf = Buffer.t               val create : int -> CamomileLibrary.Type.UTF8.Buf.buf               val contents :                 CamomileLibrary.Type.UTF8.Buf.buf ->                 CamomileLibrary.Type.UTF8.t               val clear : CamomileLibrary.Type.UTF8.Buf.buf -> unit               val reset : CamomileLibrary.Type.UTF8.Buf.buf -> unit               val add_char :                 CamomileLibrary.Type.UTF8.Buf.buf ->                 CamomileLibrary.Type.UChar.t -> unit               val add_string :                 CamomileLibrary.Type.UTF8.Buf.buf ->                 CamomileLibrary.Type.UTF8.t -> unit               val add_buffer :                 CamomileLibrary.Type.UTF8.Buf.buf ->                 CamomileLibrary.Type.UTF8.Buf.buf -> unit             end         end       module UTF16 :         sig           type t =               (int, Bigarray.int16_unsigned_elt, Bigarray.c_layout)               Bigarray.Array1.t           exception Malformed_code           val validate : CamomileLibrary.Type.UTF16.t -> unit           val get :             CamomileLibrary.Type.UTF16.t ->             int -> CamomileLibrary.Type.UChar.t           exception Out_of_range           val init :             int ->             (int -> CamomileLibrary.Type.UChar.t) ->             CamomileLibrary.Type.UTF16.t           val length : CamomileLibrary.Type.UTF16.t -> int           type index = int           val nth :             CamomileLibrary.Type.UTF16.t ->             int -> CamomileLibrary.Type.UTF16.index           val first :             CamomileLibrary.Type.UTF16.t -> CamomileLibrary.Type.UTF16.index           val last :             CamomileLibrary.Type.UTF16.t -> CamomileLibrary.Type.UTF16.index           val look :             CamomileLibrary.Type.UTF16.t ->             CamomileLibrary.Type.UTF16.index -> CamomileLibrary.Type.UChar.t           val out_of_range :             CamomileLibrary.Type.UTF16.t ->             CamomileLibrary.Type.UTF16.index -> bool           val compare_index :             CamomileLibrary.Type.UTF16.t ->             CamomileLibrary.Type.UTF16.index ->             CamomileLibrary.Type.UTF16.index -> int           val next :             CamomileLibrary.Type.UTF16.t ->             CamomileLibrary.Type.UTF16.index ->             CamomileLibrary.Type.UTF16.index           val prev :             CamomileLibrary.Type.UTF16.t ->             CamomileLibrary.Type.UTF16.index ->             CamomileLibrary.Type.UTF16.index           val move :             CamomileLibrary.Type.UTF16.t ->             CamomileLibrary.Type.UTF16.index ->             int -> CamomileLibrary.Type.UTF16.index           val iter :             (CamomileLibrary.Type.UChar.t -> unit) ->             CamomileLibrary.Type.UTF16.t -> unit           val compare :             CamomileLibrary.Type.UTF16.t ->             CamomileLibrary.Type.UTF16.t -> int           module Buf :             sig               type buf               val create : int -> CamomileLibrary.Type.UTF16.Buf.buf               val contents :                 CamomileLibrary.Type.UTF16.Buf.buf ->                 CamomileLibrary.Type.UTF16.t               val clear : CamomileLibrary.Type.UTF16.Buf.buf -> unit               val reset : CamomileLibrary.Type.UTF16.Buf.buf -> unit               val add_char :                 CamomileLibrary.Type.UTF16.Buf.buf ->                 CamomileLibrary.Type.UChar.t -> unit               val add_string :                 CamomileLibrary.Type.UTF16.Buf.buf ->                 CamomileLibrary.Type.UTF16.t -> unit               val add_buffer :                 CamomileLibrary.Type.UTF16.Buf.buf ->                 CamomileLibrary.Type.UTF16.Buf.buf -> unit             end         end       module UCS4 :         sig           type t =               (int32, Bigarray.int32_elt, Bigarray.c_layout)               Bigarray.Array1.t           exception Malformed_code           val validate : CamomileLibrary.Type.UCS4.t -> unit           val get :             CamomileLibrary.Type.UCS4.t ->             int -> CamomileLibrary.Type.UChar.t           val init :             int ->             (int -> CamomileLibrary.Type.UChar.t) ->             CamomileLibrary.Type.UCS4.t           val length : CamomileLibrary.Type.UCS4.t -> int           type index = int           val nth :             CamomileLibrary.Type.UCS4.t ->             int -> CamomileLibrary.Type.UCS4.index           val first :             CamomileLibrary.Type.UCS4.t -> CamomileLibrary.Type.UCS4.index           val last :             CamomileLibrary.Type.UCS4.t -> CamomileLibrary.Type.UCS4.index           val look :             CamomileLibrary.Type.UCS4.t ->             CamomileLibrary.Type.UCS4.index -> CamomileLibrary.Type.UChar.t           val out_of_range :             CamomileLibrary.Type.UCS4.t ->             CamomileLibrary.Type.UCS4.index -> bool           val compare_index :             CamomileLibrary.Type.UCS4.t ->             CamomileLibrary.Type.UCS4.index ->             CamomileLibrary.Type.UCS4.index -> int           val next :             CamomileLibrary.Type.UCS4.t ->             CamomileLibrary.Type.UCS4.index ->             CamomileLibrary.Type.UCS4.index           val prev :             CamomileLibrary.Type.UCS4.t ->             CamomileLibrary.Type.UCS4.index ->             CamomileLibrary.Type.UCS4.index           val move :             CamomileLibrary.Type.UCS4.t ->             CamomileLibrary.Type.UCS4.index ->             int -> CamomileLibrary.Type.UCS4.index           val iter :             (CamomileLibrary.Type.UChar.t -> unit) ->             CamomileLibrary.Type.UCS4.t -> unit           val compare :             CamomileLibrary.Type.UCS4.t -> CamomileLibrary.Type.UCS4.t -> int           module Buf :             sig               type buf               val create : int -> CamomileLibrary.Type.UCS4.Buf.buf               val contents :                 CamomileLibrary.Type.UCS4.Buf.buf ->                 CamomileLibrary.Type.UCS4.t               val clear : CamomileLibrary.Type.UCS4.Buf.buf -> unit               val reset : CamomileLibrary.Type.UCS4.Buf.buf -> unit               val add_char :                 CamomileLibrary.Type.UCS4.Buf.buf ->                 CamomileLibrary.Type.UChar.t -> unit               val add_string :                 CamomileLibrary.Type.UCS4.Buf.buf ->                 CamomileLibrary.Type.UCS4.t -> unit               val add_buffer :                 CamomileLibrary.Type.UCS4.Buf.buf ->                 CamomileLibrary.Type.UCS4.Buf.buf -> unit             end         end       module UPervasives :         sig           type uchar = CamomileLibrary.Type.UChar.t           val int_of_uchar : CamomileLibrary.Type.UPervasives.uchar -> int           val uchar_of_int : int -> CamomileLibrary.Type.UPervasives.uchar           val escaped_uchar :             CamomileLibrary.Type.UPervasives.uchar -> string           val escaped_utf8 : string -> string           val printer_utf8 : Format.formatter -> string -> unit           val printer_uchar :             Format.formatter ->             CamomileLibrary.Type.UPervasives.uchar -> unit         end       module URe :         sig           type regexp =               [ `After of CamomileLibrary.Type.URe.regexp               | `Alt of                   CamomileLibrary.Type.URe.regexp *                   CamomileLibrary.Type.URe.regexp               | `Before of CamomileLibrary.Type.URe.regexp               | `BoS               | `EoS               | `Epsilon               | `Group of CamomileLibrary.Type.URe.regexp               | `OneChar               | `Rep of CamomileLibrary.Type.URe.regexp               | `Repn of CamomileLibrary.Type.URe.regexp * int * int option               | `Seq of                   CamomileLibrary.Type.URe.regexp *                   CamomileLibrary.Type.URe.regexp               | `Set of CamomileLibrary.Type.USet.t               | `String of CamomileLibrary.Type.UChar.t list ]           type match_semantics = [ `First | `Longest | `Shortest ]           val no_group :             CamomileLibrary.Type.URe.regexp ->             CamomileLibrary.Type.URe.regexp           module type Type =             sig               type text               type index               type compiled_regexp               module SubText :                 sig                   type t                   val get : t -> int -> UChar.t                   val init : int -> (int -> UChar.t) -> t                   val length : t -> int                   type index                   val look : t -> index -> UChar.t                   val nth : t -> int -> index                   val first : t -> index                   val last : t -> index                   val next : t -> index -> index                   val prev : t -> index -> index                   val move : t -> index -> int -> index                   val out_of_range : t -> index -> bool                   val compare_index : t -> index -> index -> int                   val iter : (UChar.t -> unit) -> t -> unit                   val compare : t -> t -> int                   module Buf :                     sig                       type buf                       val create : int -> buf                       val contents : buf -> t                       val clear : buf -> unit                       val reset : buf -> unit                       val add_char : buf -> UChar.t -> unit                       val add_string : buf -> t -> unit                       val add_buffer : buf -> buf -> unit                     end                   type ur_text = text                   type ur_index = index                   val refer : ur_text -> ur_index -> ur_index -> t                   val excerpt : t -> ur_text                   val context : t -> ur_text * ur_index * ur_index                   val ur_index_of : t -> index -> ur_index                 end               val compile :                 CamomileLibrary.Type.URe.regexp ->                 CamomileLibrary.Type.URe.Type.compiled_regexp               val regexp_match :                 ?sem:CamomileLibrary.Type.URe.match_semantics ->                 CamomileLibrary.Type.URe.Type.compiled_regexp ->                 CamomileLibrary.Type.URe.Type.text ->                 CamomileLibrary.Type.URe.Type.index ->                 CamomileLibrary.Type.URe.Type.SubText.t option array option               val string_match :                 CamomileLibrary.Type.URe.Type.compiled_regexp ->                 CamomileLibrary.Type.URe.Type.text ->                 CamomileLibrary.Type.URe.Type.index -> bool               val search_forward :                 ?sem:CamomileLibrary.Type.URe.match_semantics ->                 CamomileLibrary.Type.URe.Type.compiled_regexp ->                 CamomileLibrary.Type.URe.Type.text ->                 CamomileLibrary.Type.URe.Type.index ->                 CamomileLibrary.Type.URe.Type.SubText.t option array option             end           module Make :             functor (Text : UnicodeString.Type->               sig                 type text = Text.t                 type index = Text.index                 type compiled_regexp                 module SubText :                   sig                     type t                     val get : t -> int -> UChar.t                     val init : int -> (int -> UChar.t) -> t                     val length : t -> int                     type index                     val look : t -> index -> UChar.t                     val nth : t -> int -> index                     val first : t -> index                     val last : t -> index                     val next : t -> index -> index                     val prev : t -> index -> index                     val move : t -> index -> int -> index                     val out_of_range : t -> index -> bool                     val compare_index : t -> index -> index -> int                     val iter : (UChar.t -> unit) -> t -> unit                     val compare : t -> t -> int                     module Buf :                       sig                         type buf                         val create : int -> buf                         val contents : buf -> t                         val clear : buf -> unit                         val reset : buf -> unit                         val add_char : buf -> UChar.t -> unit                         val add_string : buf -> t -> unit                         val add_buffer : buf -> buf -> unit                       end                     type ur_text = text                     type ur_index = index                     val refer : ur_text -> ur_index -> ur_index -> t                     val excerpt : t -> ur_text                     val context : t -> ur_text * ur_index * ur_index                     val ur_index_of : t -> index -> ur_index                   end                 val compile : regexp -> compiled_regexp                 val regexp_match :                   ?sem:match_semantics ->                   compiled_regexp ->                   text -> index -> SubText.t option array option                 val string_match : compiled_regexp -> text -> index -> bool                 val search_forward :                   ?sem:match_semantics ->                   compiled_regexp ->                   text -> index -> SubText.t option array option               end         end       module UCharInfo : UCharInfo.Type       module UNF :         sig           module type Type = UNF.Type           module Make :             functor (Text : UnicodeString.Type->               sig                 type text = Text.t                 class nfd :                   UChar.t #OOChannel.obj_output_channel ->                   [UChar.t] OOChannel.obj_output_channel                 class nfc :                   UChar.t #OOChannel.obj_output_channel ->                   [UChar.t] OOChannel.obj_output_channel                 class nfkd :                   UChar.t #OOChannel.obj_output_channel ->                   [UChar.t] OOChannel.obj_output_channel                 class nfkc :                   UChar.t #OOChannel.obj_output_channel ->                   [UChar.t] OOChannel.obj_output_channel                 val nfd : text -> text                 val nfkd : text -> text                 val nfc : text -> text                 val nfkc : text -> text                 module NFCBuf :                   sig                     type buf                     val create : int -> buf                     val contents : buf -> text                     val clear : buf -> unit                     val reset : buf -> unit                     val add_char : buf -> UChar.t -> unit                     val add_string : buf -> text -> unit                     val add_buffer : buf -> buf -> unit                   end                 val nfc_append : text -> text -> text                 val put_nfd : XString.t -> text -> unit                 val put_nfkd : XString.t -> text -> unit                 val put_nfc : XString.t -> text -> unit                 val put_nfkc : XString.t -> text -> unit                 type index = Text.index                 val nfd_inc :                   text ->                   index ->                   ([ `Inc of UChar.t list * index * 'a lazy_t ] as 'a)                 val canon_compare : text -> text -> int                 val nfd_decompose : UChar.t -> UChar.t list                 val nfkd_decompose : UChar.t -> UChar.t list               end         end       module UCol :         sig           type variable_option =               [ `Blanked | `Non_ignorable | `Shift_Trimmed | `Shifted ]           type precision =               [ `Primary | `Quaternary | `Secondary | `Tertiary ]           module type Type = UCol.Type           module Make :             functor (Text : UnicodeString.Type->               sig                 type text = Text.t                 type index = Text.index                 val compare :                   ?locale:string ->                   ?prec:UCol.precision ->                   ?variable:UCol.variable_option -> text -> text -> int                 val sort_key :                   ?locale:string ->                   ?prec:UCol.precision ->                   ?variable:UCol.variable_option -> text -> string                 val compare_with_key :                   ?locale:string ->                   ?prec:UCol.precision ->                   ?variable:UCol.variable_option -> string -> text -> int                 val search_with_key :                   ?locale:string ->                   ?prec:UCol.precision ->                   ?variable:UCol.variable_option ->                   string -> text -> index -> index * index                 val search :                   ?locale:string ->                   ?prec:UCol.precision ->                   ?variable:UCol.variable_option ->                   text -> text -> index -> index * index               end         end       module CaseMap :         sig           module type Type = CaseMap.Type           module Make :             functor (Text : UnicodeString.Type->               sig                 type text = Text.t                 val lowercase : ?locale:string -> text -> text                 val uppercase : ?locale:string -> text -> text                 val titlecase : ?locale:string -> text -> text                 val casefolding : text -> text                 val compare_caseless : text -> text -> int               end         end       module UReStr : UReStr.Interface       module StringPrep :         sig           module type Type = StringPrep.Type           module Make :             functor (Text : UnicodeString.Type->               sig                 type text = Text.t                 exception Prohibited of UChar.t                 exception Bad_bidi                 type profile =                     [ `Iscsi                     | `Mib                     | `Nameprep                     | `Nodeprep                     | `Resourceprep                     | `Saslprep                     | `Trace ]                 val stringprep : profile -> text -> text               end         end     end   module Make :     functor (Config : ConfigInt.Type->       sig         module OOChannel :           sig             class type ['a] obj_input_channel =               object                 method close_in : unit -> unit                 method get : unit -> 'a               end             class type ['a] obj_output_channel =               object                 method close_out : unit -> unit                 method flush : unit -> unit                 method put : '-> unit               end             class ['a] channel_of_stream :               'Stream.t -> ['a] obj_input_channel             val stream_of_channel : '#obj_input_channel -> 'Stream.t             class type char_input_channel =               object                 method close_in : unit -> unit                 method input : string -> int -> int -> int               end             class type char_output_channel =               object                 method close_out : unit -> unit                 method flush : unit -> unit                 method output : string -> int -> int -> int               end             class char_input_channel_of :               char #obj_input_channel -> char_input_channel             class char_obj_input_channel_of :               char_input_channel -> [char] obj_input_channel             class char_output_channel_of :               char #obj_output_channel -> char_output_channel             class char_obj_output_channel_of :               char_output_channel -> [char] obj_output_channel             class of_in_channel : in_channel -> char_input_channel             class of_out_channel : out_channel -> char_output_channel           end         module UChar :           sig             type t = UChar.t             exception Out_of_range             val char_of : t -> char             val of_char : char -> t             val code : t -> int             val chr : int -> t             external uint_code : t -> int = "%identity"             val chr_of_uint : int -> t             val eq : t -> t -> bool             val compare : t -> t -> int             type uchar = t             val int_of : uchar -> int             val of_int : int -> uchar           end         module USet :           sig             type t = USet.t             val empty : t             val is_empty : t -> bool             val mem : UChar.t -> t -> bool             val add : UChar.t -> t -> t             val add_range : UChar.t -> UChar.t -> t -> t             val singleton : UChar.t -> t             val remove : UChar.t -> t -> t             val remove_range : UChar.t -> UChar.t -> t -> t             val union : t -> t -> t             val inter : t -> t -> t             val diff : t -> t -> t             val compl : t -> t             val compare : t -> t -> int             val equal : t -> t -> bool             val subset : t -> t -> bool             val from : UChar.t -> t -> t             val after : UChar.t -> t -> t             val until : UChar.t -> t -> t             val before : UChar.t -> t -> t             val iter : (UChar.t -> unit) -> t -> unit             val iter_range : (UChar.t -> UChar.t -> unit) -> t -> unit             val fold : (UChar.t -> '-> 'a) -> t -> '-> 'a             val fold_range :               (UChar.t -> UChar.t -> '-> 'a) -> t -> '-> 'a             val for_all : (UChar.t -> bool) -> t -> bool             val exists : (UChar.t -> bool) -> t -> bool             val filter : (UChar.t -> bool) -> t -> t             val partition : (UChar.t -> bool) -> t -> t * t             val cardinal : t -> int             val elements : t -> UChar.t list             val ranges : t -> (UChar.t * UChar.t) list             val min_elt : t -> UChar.t             val max_elt : t -> UChar.t             val choose : t -> UChar.t             val uset_of_iset : ISet.t -> t             val iset_of_uset : t -> ISet.t           end         module UMap :           sig             type 'a t = 'UMap.t             val empty : 'a t             val is_empty : 'a t -> bool             val add : ?eq:('-> '-> bool) -> UChar.t -> '-> 'a t -> 'a t             val add_range :               ?eq:('-> '-> bool) ->               UChar.t -> UChar.t -> '-> 'a t -> 'a t             val find : UChar.t -> 'a t -> 'a             val remove : UChar.t -> 'a t -> 'a t             val remove_range : UChar.t -> UChar.t -> 'a t -> 'a t             val from : UChar.t -> 'a t -> 'a t             val after : UChar.t -> 'a t -> 'a t             val until : UChar.t -> 'a t -> 'a t             val before : UChar.t -> 'a t -> 'a t             val mem : UChar.t -> 'a t -> bool             val iter : (UChar.t -> '-> unit) -> 'a t -> unit             val iter_range :               (UChar.t -> UChar.t -> '-> unit) -> 'a t -> unit             val map : ?eq:('-> '-> bool) -> ('-> 'b) -> 'a t -> 'b t             val mapi :               ?eq:('-> '-> bool) -> (UChar.t -> '-> 'b) -> 'a t -> 'b t             val fold : (UChar.t -> '-> '-> 'a) -> 'b t -> '-> 'a             val fold_range :               (UChar.t -> UChar.t -> '-> '-> 'a) -> 'b t -> '-> 'a             val set_to_map : USet.t -> '-> 'a t             val domain : 'a t -> USet.t             val map_to_set : ('-> bool) -> 'a t -> USet.t             val umap_of_imap : 'IMap.t -> 'a t             val imap_of_umap : 'a t -> 'IMap.t           end         module UCharTbl :           sig             type 'a tbl = 'UCharTbl.tbl             type 'a t = 'a tbl             val get : 'a tbl -> UChar.t -> 'a             module type Type =               sig                 type elt                 type t = elt tbl                 val get : elt tbl -> UChar.t -> elt                 val of_map : elt -> elt UMap.t -> t               end             module Make :               functor (H : Hashtbl.HashedType->                 sig                   type elt = H.t                   type t = elt tbl                   val get : elt tbl -> UChar.t -> elt                   val of_map : elt -> elt UMap.t -> t                 end             module Bool :               sig                 type t = UCharTbl.Bool.t                 val get : t -> UChar.t -> bool                 val of_set : USet.t -> t               end             module Bits :               sig                 type t = UCharTbl.Bits.t                 val of_map : int -> int UMap.t -> t                 val get : t -> UChar.t -> int               end             module Bytes :               sig                 type t = UCharTbl.Bytes.t                 val of_map : int -> int UMap.t -> t                 val get : t -> UChar.t -> int               end             module Char :               sig                 type t = UCharTbl.Char.t                 val of_map : char -> char UMap.t -> t                 val get : t -> UChar.t -> char               end           end         module UnicodeString :           sig             module type Type =               sig                 type t                 val get : t -> int -> UChar.t                 val init : int -> (int -> UChar.t) -> t                 val length : t -> int                 type index                 val look : t -> index -> UChar.t                 val nth : t -> int -> index                 val next : t -> index -> index                 val prev : t -> index -> index                 val out_of_range : t -> index -> bool                 val iter : (UChar.t -> unit) -> t -> unit                 val compare : t -> t -> int                 val first : t -> index                 val last : t -> index                 val move : t -> index -> int -> index                 val compare_index : t -> index -> index -> int                 module Buf :                   sig                     type buf                     val create : int -> buf                     val contents : buf -> t                     val clear : buf -> unit                     val reset : buf -> unit                     val add_char : buf -> UChar.t -> unit                     val add_string : buf -> t -> unit                     val add_buffer : buf -> buf -> unit                   end               end           end         module UText :           sig             type mutability = [ `Immutable | `Mutable ]             type 'a text = 'UText.text             type utext = [ `Immutable ] text             type ustring = [ `Mutable ] text             type t = utext             val utext_of_ustring : ustring -> utext             val ustring_of_utext : utext -> ustring             val get : 'a text -> int -> UChar.t             val set : ustring -> int -> UChar.t -> unit             type index = UText.index             val look : 'a text -> index -> UChar.t             val nth : 'a text -> int -> index             val first : 'a text -> index             val last : 'a text -> index             val out_of_range : 'a text -> index -> bool             val compare_index : 'a text -> index -> index -> int             val next : 'a text -> index -> index             val prev : 'a text -> index -> index             val move : 'a text -> index -> int -> index             val length : 'a text -> int             val of_string : string -> utext             val init : int -> (int -> UChar.t) -> utext             val init_ustring : int -> (int -> UChar.t) -> ustring             val make : int -> UChar.t -> ustring             val copy : ustring -> ustring             val sub : 'a text -> int -> int -> 'a text             val fill : ustring -> int -> int -> UChar.t -> unit             val blit : 'a text -> int -> ustring -> int -> int -> unit             val append : 'a text -> 'b text -> 'a text             val iter : (UChar.t -> unit) -> 'a text -> unit             val compare : 'a text -> 'b text -> int             module Buf :               sig                 type buf = UText.Buf.buf                 val create : int -> buf                 val contents : buf -> t                 val contents_string : buf -> ustring                 val length : buf -> int                 val clear : buf -> unit                 val reset : buf -> unit                 val add_char : buf -> UChar.t -> unit                 val add_string : buf -> 'a text -> unit                 val add_buffer : buf -> buf -> unit               end           end         module XString :           sig             type xstring = XString.xstring             type t = xstring             val get : xstring -> int -> UChar.t             val set : xstring -> int -> UChar.t -> unit             val length : xstring -> int             val init : int -> (int -> UChar.t) -> xstring             type index = XString.index             val look : xstring -> index -> UChar.t             val nth : xstring -> int -> index             val first : xstring -> index             val last : xstring -> index             val out_of_range : xstring -> index -> bool             val next : xstring -> index -> index             val prev : xstring -> index -> index             val move : xstring -> index -> int -> index             val compare_index : xstring -> index -> index -> int             val make : ?bufsize:int -> int -> UChar.t -> xstring             val clear : xstring -> unit             val reset : xstring -> unit             val copy : xstring -> xstring             val sub : xstring -> int -> int -> xstring             val add_char : xstring -> UChar.t -> unit             val add_text : xstring -> 'UText.text -> unit             val add_xstring : xstring -> xstring -> unit             val shrink : xstring -> int -> unit             val append : xstring -> xstring -> xstring             val utext_of : xstring -> UText.t             val ustring_of : xstring -> UText.ustring             val iter : (UChar.t -> unit) -> xstring -> unit             val compare : t -> t -> int             module Buf :               sig                 type buf = XString.Buf.buf                 val create : int -> buf                 val contents : buf -> t                 val length : buf -> int                 val clear : buf -> unit                 val reset : buf -> unit                 val add_char : buf -> UChar.t -> unit                 val add_string : buf -> t -> unit                 val add_buffer : buf -> buf -> unit               end           end         module SubText :           sig             module type Type =               sig                 type t                 val get : t -> int -> UChar.t                 val init : int -> (int -> UChar.t) -> t                 val length : t -> int                 type index                 val look : t -> index -> UChar.t                 val nth : t -> int -> index                 val first : t -> index                 val last : t -> index                 val next : t -> index -> index                 val prev : t -> index -> index                 val move : t -> index -> int -> index                 val out_of_range : t -> index -> bool                 val compare_index : t -> index -> index -> int                 val iter : (UChar.t -> unit) -> t -> unit                 val compare : t -> t -> int                 module Buf :                   sig                     type buf                     val create : int -> buf                     val contents : buf -> t                     val clear : buf -> unit                     val reset : buf -> unit                     val add_char : buf -> UChar.t -> unit                     val add_string : buf -> t -> unit                     val add_buffer : buf -> buf -> unit                   end                 type ur_text                 type ur_index                 val refer : ur_text -> ur_index -> ur_index -> t                 val excerpt : t -> ur_text                 val context : t -> ur_text * ur_index * ur_index                 val ur_index_of : t -> index -> ur_index               end             module Make :               functor (Text : UnicodeString.Type->                 sig                   type t = SubText.Make(Text).t                   val get : t -> int -> UChar.t                   val init : int -> (int -> UChar.t) -> t                   val length : t -> int                   type index = SubText.Make(Text).index                   val look : t -> index -> UChar.t                   val nth : t -> int -> index                   val first : t -> index                   val last : t -> index                   val next : t -> index -> index                   val prev : t -> index -> index                   val move : t -> index -> int -> index                   val out_of_range : t -> index -> bool                   val compare_index : t -> index -> index -> int                   val iter : (UChar.t -> unit) -> t -> unit                   val compare : t -> t -> int                   module Buf :                     sig                       type buf = SubText.Make(Text).Buf.buf                       val create : int -> buf                       val contents : buf -> t                       val clear : buf -> unit                       val reset : buf -> unit                       val add_char : buf -> UChar.t -> unit                       val add_string : buf -> t -> unit                       val add_buffer : buf -> buf -> unit                     end                   type ur_text = Text.t                   type ur_index = Text.index                   val refer : ur_text -> ur_index -> ur_index -> t                   val excerpt : t -> ur_text                   val context : t -> ur_text * ur_index * ur_index                   val ur_index_of : t -> index -> ur_index                 end           end         module ULine :           sig             type separator = [ `CR | `CRLF | `LF | `LS | `NEL | `PS ]             class input :               separator ->               UChar.t #OOChannel.obj_input_channel ->               [UChar.t] OOChannel.obj_input_channel             class output :               separator ->               UChar.t #OOChannel.obj_output_channel ->               [UChar.t] OOChannel.obj_output_channel             module type Type =               sig                 type text                 class input_line :                   UChar.t #OOChannel.obj_input_channel ->                   [text] OOChannel.obj_input_channel                 class output_line :                   ?sp:separator ->                   UChar.t #OOChannel.obj_output_channel ->                   [text] OOChannel.obj_output_channel               end             module Make :               functor (Text : UnicodeString.Type->                 sig                   type text = Text.t                   class input_line :                     UChar.t #OOChannel.obj_input_channel ->                     [text] OOChannel.obj_input_channel                   class output_line :                     ?sp:separator ->                     UChar.t #OOChannel.obj_output_channel ->                     [text] OOChannel.obj_output_channel                 end           end         module Locale :           sig             type t = string             val read : string -> string -> (in_channel -> 'a) -> string -> 'a             val contain : string -> string -> bool           end         module CharEncoding :           sig             exception Malformed_code             exception Out_of_range             type t = CharEncoding.Configure(Config).t             val automatic : string -> t list -> t -> t             val new_enc : string -> t -> unit             val alias : string -> string -> unit             val of_name : string -> t             val name_of : t -> string             val ascii : t             val latin1 : t             val utf8 : t             val utf16 : t             val utf16be : t             val utf16le : t             val utf32 : t             val utf32be : t             val utf32le : t             val ucs4 : t             val recode_string : in_enc:t -> out_enc:t -> string -> string             class uchar_input_channel_of :               t ->               OOChannel.char_input_channel ->               [UChar.t] OOChannel.obj_input_channel             class uchar_output_channel_of :               t ->               OOChannel.char_output_channel ->               [UChar.t] OOChannel.obj_output_channel             class convert_uchar_input :               t ->               UChar.t OOChannel.obj_input_channel ->               OOChannel.char_input_channel             class convert_uchar_output :               t ->               UChar.t OOChannel.obj_output_channel ->               OOChannel.char_output_channel             class convert_input :               in_enc:t ->               out_enc:t ->               OOChannel.char_input_channel -> OOChannel.char_input_channel             class convert_output :               in_enc:t ->               out_enc:t ->               OOChannel.char_output_channel -> OOChannel.char_output_channel             class out_channel :               t -> out_channel -> [UChar.t] OOChannel.obj_output_channel             class in_channel :               t -> in_channel -> [UChar.t] OOChannel.obj_input_channel             val ustream_of : t -> char Stream.t -> UChar.t Stream.t             val char_stream_of : t -> UChar.t Stream.t -> char Stream.t             module type Type =               sig                 type text                 val decode : t -> string -> text                 val encode : t -> text -> string               end             module Make :               functor (Text : UnicodeString.Type->                 sig                   type text = Text.t                   val decode : t -> string -> text                   val encode : t -> text -> string                 end           end         module UTF8 :           sig             type t = string             exception Malformed_code             val validate : t -> unit             val get : t -> int -> UChar.t             val init : int -> (int -> UChar.t) -> t             val length : t -> int             type index = int             val nth : t -> int -> index             val first : t -> index             val last : t -> index             val look : t -> index -> UChar.t             val out_of_range : t -> index -> bool             val compare_index : t -> index -> index -> int             val next : t -> index -> index             val prev : t -> index -> index             val move : t -> index -> int -> index             val iter : (UChar.t -> unit) -> t -> unit             val compare : t -> t -> int             module Buf :               sig                 type buf = Buffer.t                 val create : int -> buf                 val contents : buf -> t                 val clear : buf -> unit                 val reset : buf -> unit                 val add_char : buf -> UChar.t -> unit                 val add_string : buf -> t -> unit                 val add_buffer : buf -> buf -> unit               end           end         module UTF16 :           sig             type t =                 (int, Bigarray.int16_unsigned_elt, Bigarray.c_layout)                 Bigarray.Array1.t             exception Malformed_code             val validate : t -> unit             val get : t -> int -> UChar.t             exception Out_of_range             val init : int -> (int -> UChar.t) -> t             val length : t -> int             type index = int             val nth : t -> int -> index             val first : t -> index             val last : t -> index             val look : t -> index -> UChar.t             val out_of_range : t -> index -> bool             val compare_index : t -> index -> index -> int             val next : t -> index -> index             val prev : t -> index -> index             val move : t -> index -> int -> index             val iter : (UChar.t -> unit) -> t -> unit             val compare : t -> t -> int             module Buf :               sig                 type buf = UTF16.Buf.buf                 val create : int -> buf                 val contents : buf -> t                 val clear : buf -> unit                 val reset : buf -> unit                 val add_char : buf -> UChar.t -> unit                 val add_string : buf -> t -> unit                 val add_buffer : buf -> buf -> unit               end           end         module UCS4 :           sig             type t =                 (int32, Bigarray.int32_elt, Bigarray.c_layout)                 Bigarray.Array1.t             exception Malformed_code             val validate : t -> unit             val get : t -> int -> UChar.t             val init : int -> (int -> UChar.t) -> t             val length : t -> int             type index = int             val nth : t -> int -> index             val first : t -> index             val last : t -> index             val look : t -> index -> UChar.t             val out_of_range : t -> index -> bool             val compare_index : t -> index -> index -> int             val next : t -> index -> index             val prev : t -> index -> index             val move : t -> index -> int -> index             val iter : (UChar.t -> unit) -> t -> unit             val compare : t -> t -> int             module Buf :               sig                 type buf = UCS4.Buf.buf                 val create : int -> buf                 val contents : buf -> t                 val clear : buf -> unit                 val reset : buf -> unit                 val add_char : buf -> UChar.t -> unit                 val add_string : buf -> t -> unit                 val add_buffer : buf -> buf -> unit               end           end         module UPervasives :           sig             type uchar = UChar.t             val int_of_uchar : uchar -> int             val uchar_of_int : int -> uchar             val escaped_uchar : uchar -> string             val escaped_utf8 : string -> string             val printer_utf8 : Format.formatter -> string -> unit             val printer_uchar : Format.formatter -> uchar -> unit           end         module URe :           sig             type regexp =                 [ `After of regexp                 | `Alt of regexp * regexp                 | `Before of regexp                 | `BoS                 | `EoS                 | `Epsilon                 | `Group of regexp                 | `OneChar                 | `Rep of regexp                 | `Repn of regexp * int * int option                 | `Seq of regexp * regexp                 | `Set of USet.t                 | `String of UChar.t list ]             type match_semantics = [ `First | `Longest | `Shortest ]             val no_group : regexp -> regexp             module type Type =               sig                 type text                 type index                 type compiled_regexp                 module SubText :                   sig                     type t                     val get : t -> int -> UChar.t                     val init : int -> (int -> UChar.t) -> t                     val length : t -> int                     type index                     val look : t -> index -> UChar.t                     val nth : t -> int -> index                     val first : t -> index                     val last : t -> index                     val next : t -> index -> index                     val prev : t -> index -> index                     val move : t -> index -> int -> index                     val out_of_range : t -> index -> bool                     val compare_index : t -> index -> index -> int                     val iter : (UChar.t -> unit) -> t -> unit                     val compare : t -> t -> int                     module Buf :                       sig                         type buf                         val create : int -> buf                         val contents : buf -> t                         val clear : buf -> unit                         val reset : buf -> unit                         val add_char : buf -> UChar.t -> unit                         val add_string : buf -> t -> unit                         val add_buffer : buf -> buf -> unit                       end                     type ur_text = text                     type ur_index = index                     val refer : ur_text -> ur_index -> ur_index -> t                     val excerpt : t -> ur_text                     val context : t -> ur_text * ur_index * ur_index                     val ur_index_of : t -> index -> ur_index                   end                 val compile : regexp -> compiled_regexp                 val regexp_match :                   ?sem:match_semantics ->                   compiled_regexp ->                   text -> index -> SubText.t option array option                 val string_match : compiled_regexp -> text -> index -> bool                 val search_forward :                   ?sem:match_semantics ->                   compiled_regexp ->                   text -> index -> SubText.t option array option               end             module Make :               functor (Text : UnicodeString.Type->                 sig                   type text = Text.t                   type index = Text.index                   type compiled_regexp = URe.Make(Text).compiled_regexp                   module SubText :                     sig                       type t = URe.Make(Text).SubText.t                       val get : t -> int -> UChar.t                       val init : int -> (int -> UChar.t) -> t                       val length : t -> int                       type index = URe.Make(Text).SubText.index                       val look : t -> index -> UChar.t                       val nth : t -> int -> index                       val first : t -> index                       val last : t -> index                       val next : t -> index -> index                       val prev : t -> index -> index                       val move : t -> index -> int -> index                       val out_of_range : t -> index -> bool                       val compare_index : t -> index -> index -> int                       val iter : (UChar.t -> unit) -> t -> unit                       val compare : t -> t -> int                       module Buf :                         sig                           type buf = URe.Make(Text).SubText.Buf.buf                           val create : int -> buf                           val contents : buf -> t                           val clear : buf -> unit                           val reset : buf -> unit                           val add_char : buf -> UChar.t -> unit                           val add_string : buf -> t -> unit                           val add_buffer : buf -> buf -> unit                         end                       type ur_text = text                       type ur_index = index                       val refer : ur_text -> ur_index -> ur_index -> t                       val excerpt : t -> ur_text                       val context : t -> ur_text * ur_index * ur_index                       val ur_index_of : t -> index -> ur_index                     end                   val compile : regexp -> compiled_regexp                   val regexp_match :                     ?sem:match_semantics ->                     compiled_regexp ->                     text -> index -> SubText.t option array option                   val string_match : compiled_regexp -> text -> index -> bool                   val search_forward :                     ?sem:match_semantics ->                     compiled_regexp ->                     text -> index -> SubText.t option array option                 end           end         module UCharInfo :           sig             type general_category_type =                 [ `Cc                 | `Cf                 | `Cn                 | `Co                 | `Cs                 | `Ll                 | `Lm                 | `Lo                 | `Lt                 | `Lu                 | `Mc                 | `Me                 | `Mn                 | `Nd                 | `Nl                 | `No                 | `Pc                 | `Pd                 | `Pe                 | `Pf                 | `Pi                 | `Po                 | `Ps                 | `Sc                 | `Sk                 | `Sm                 | `So                 | `Zl                 | `Zp                 | `Zs ]             val general_category : UChar.t -> general_category_type             val load_general_category_map :               unit -> general_category_type UMap.t             type character_property_type =                 [ `Alphabetic                 | `Ascii_Hex_Digit                 | `Bidi_Control                 | `Default_Ignorable_Code_Point                 | `Deprecated                 | `Diacritic                 | `Extender                 | `Grapheme_Base                 | `Grapheme_Extend                 | `Grapheme_Link                 | `Hex_Digit                 | `Hyphen                 | `IDS_Binary_Operator                 | `IDS_Trinary_Operator                 | `ID_Continue                 | `ID_Start                 | `Ideographic                 | `Logical_Order_Exception                 | `Lowercase                 | `Math                 | `Noncharacter_Code_Point                 | `Other_Alphabetic                 | `Other_Grapheme_Extend                 | `Other_Lowercase                 | `Other_Math                 | `Other_Uppercase                 | `Other_default_Ignorable_Code_Point                 | `Quotation_Mark                 | `Radical                 | `Soft_Dotted                 | `Terminal_Punctuation                 | `Unified_Ideograph                 | `Uppercase                 | `White_Space                 | `XID_Continue                 | `XID_Start ]             val load_property_tbl :               character_property_type -> UCharTbl.Bool.t             val load_property_tbl_by_name : string -> UCharTbl.Bool.t             val load_property_set : character_property_type -> USet.t             val load_property_set_by_name : string -> USet.t             type script_type =                 [ `Arabic                 | `Armenian                 | `Bengali                 | `Bopomofo                 | `Buhid                 | `Canadian_Aboriginal                 | `Cherokee                 | `Common                 | `Cyrillic                 | `Deseret                 | `Devanagari                 | `Ethiopic                 | `Georgian                 | `Gothic                 | `Greek                 | `Gujarati                 | `Gurmukhi                 | `Han                 | `Hangul                 | `Hanunoo                 | `Hebrew                 | `Hiragana                 | `Inherited                 | `Kannada                 | `Katakana                 | `Khmer                 | `Lao                 | `Latin                 | `Malayalam                 | `Mongolian                 | `Myanmar                 | `Ogham                 | `Old_Italic                 | `Oriya                 | `Runic                 | `Sinhala                 | `Syriac                 | `Tagalog                 | `Tagbanwa                 | `Tamil                 | `Telugu                 | `Thaana                 | `Thai                 | `Tibetan                 | `Yi ]             val script : UChar.t -> script_type             val load_script_map : unit -> script_type UMap.t             type version_type =                 [ `Nc | `v1_0 | `v1_1 | `v2_0 | `v2_1 | `v3_0 | `v3_1 | `v3_2 ]             val age : UChar.t -> version_type             val older : version_type -> version_type -> bool             val load_to_lower1_tbl : unit -> UChar.t UCharTbl.t             val load_to_upper1_tbl : unit -> UChar.t UCharTbl.t             val load_to_title1_tbl : unit -> UChar.t UCharTbl.t             type casemap_condition =                 [ `AfterSoftDotted                 | `BeforeDot                 | `FinalSigma                 | `Locale of string                 | `MoreAbove                 | `Not of casemap_condition ]             type special_casing_property =               UCharInfo.Make(Config).special_casing_property = {               lower : UChar.t list;               title : UChar.t list;               upper : UChar.t list;               condition : casemap_condition list;             }             val load_conditional_casing_tbl :               unit -> special_casing_property list UCharTbl.t             val load_casefolding_tbl : unit -> UChar.t list UCharTbl.t             val combined_class : UChar.t -> int             type decomposition_type =                 [ `Canon                 | `Circle                 | `Compat                 | `Final                 | `Font                 | `Fraction                 | `Initial                 | `Isolated                 | `Medial                 | `Narrow                 | `NoBreak                 | `Small                 | `Square                 | `Sub                 | `Super                 | `Vertical                 | `Wide ]             type decomposition_info =                 [ `Canonform                 | `Composite of decomposition_type * UChar.t list                 | `HangulSyllable ]             val load_decomposition_tbl :               unit -> decomposition_info UCharTbl.t             val load_composition_tbl :               unit -> (UChar.t * UChar.t) list UCharTbl.t             val load_composition_exclusion_tbl : unit -> UCharTbl.Bool.t           end         module UNF :           sig             module type Type = UNF.Type             module Make :               functor (Text : UnicodeString.Type->                 sig                   type text = Text.t                   class nfd :                     UChar.t #OOChannel.obj_output_channel ->                     [UChar.t] OOChannel.obj_output_channel                   class nfc :                     UChar.t #OOChannel.obj_output_channel ->                     [UChar.t] OOChannel.obj_output_channel                   class nfkd :                     UChar.t #OOChannel.obj_output_channel ->                     [UChar.t] OOChannel.obj_output_channel                   class nfkc :                     UChar.t #OOChannel.obj_output_channel ->                     [UChar.t] OOChannel.obj_output_channel                   val nfd : text -> text                   val nfkd : text -> text                   val nfc : text -> text                   val nfkc : text -> text                   module NFCBuf :                     sig                       type buf = UNF.Make(Config)(Text).NFCBuf.buf                       val create : int -> buf                       val contents : buf -> text                       val clear : buf -> unit                       val reset : buf -> unit                       val add_char : buf -> UChar.t -> unit                       val add_string : buf -> text -> unit                       val add_buffer : buf -> buf -> unit                     end                   val nfc_append : text -> text -> text                   val put_nfd : XString.t -> text -> unit                   val put_nfkd : XString.t -> text -> unit                   val put_nfc : XString.t -> text -> unit                   val put_nfkc : XString.t -> text -> unit                   type index = Text.index                   val nfd_inc :                     text ->                     index ->                     ([ `Inc of UChar.t list * index * 'a lazy_t ] as 'a)                   val canon_compare : text -> text -> int                   val nfd_decompose : UChar.t -> UChar.t list                   val nfkd_decompose : UChar.t -> UChar.t list                 end           end         module UCol :           sig             type variable_option =                 [ `Blanked | `Non_ignorable | `Shift_Trimmed | `Shifted ]             type precision =                 [ `Primary | `Quaternary | `Secondary | `Tertiary ]             module type Type = UCol.Type             module Make :               functor (Text : UnicodeString.Type->                 sig                   type text = Text.t                   type index = Text.index                   val compare :                     ?locale:string ->                     ?prec:UCol.precision ->                     ?variable:UCol.variable_option -> text -> text -> int                   val sort_key :                     ?locale:string ->                     ?prec:UCol.precision ->                     ?variable:UCol.variable_option -> text -> string                   val compare_with_key :                     ?locale:string ->                     ?prec:UCol.precision ->                     ?variable:UCol.variable_option -> string -> text -> int                   val search_with_key :                     ?locale:string ->                     ?prec:UCol.precision ->                     ?variable:UCol.variable_option ->                     string -> text -> index -> index * index                   val search :                     ?locale:string ->                     ?prec:UCol.precision ->                     ?variable:UCol.variable_option ->                     text -> text -> index -> index * index                 end           end         module CaseMap :           sig             module type Type = CaseMap.Type             module Make :               functor (Text : UnicodeString.Type->                 sig                   type text = Text.t                   val lowercase : ?locale:string -> text -> text                   val uppercase : ?locale:string -> text -> text                   val titlecase : ?locale:string -> text -> text                   val casefolding : text -> text                   val compare_caseless : text -> text -> int                 end           end         module UReStr :           sig             type regexp = URe.regexp             val regexp : string -> regexp             val quote : string -> string             val regexp_string : string -> regexp             module type Type =               sig                 type text                 type index                 type compiled_regexp                 module SubText :                   sig                     type t                     val get : t -> int -> UChar.t                     val init : int -> (int -> UChar.t) -> t                     val length : t -> int                     type index                     val look : t -> index -> UChar.t                     val nth : t -> int -> index                     val first : t -> index                     val last : t -> index                     val next : t -> index -> index                     val prev : t -> index -> index                     val move : t -> index -> int -> index                     val out_of_range : t -> index -> bool                     val compare_index : t -> index -> index -> int                     val iter : (UChar.t -> unit) -> t -> unit                     val compare : t -> t -> int                     module Buf :                       sig                         type buf                         val create : int -> buf                         val contents : buf -> t                         val clear : buf -> unit                         val reset : buf -> unit                         val add_char : buf -> UChar.t -> unit                         val add_string : buf -> t -> unit                         val add_buffer : buf -> buf -> unit                       end                     type ur_text = text                     type ur_index = index                     val refer : ur_text -> ur_index -> ur_index -> t                     val excerpt : t -> ur_text                     val context : t -> ur_text * ur_index * ur_index                     val ur_index_of : t -> index -> ur_index                   end                 val compile : regexp -> compiled_regexp                 val regexp_match :                   ?sem:URe.match_semantics ->                   compiled_regexp ->                   text -> index -> SubText.t option array option                 val string_match : compiled_regexp -> text -> index -> bool                 val search_forward :                   ?sem:URe.match_semantics ->                   compiled_regexp ->                   text -> index -> SubText.t option array option               end             module Make :               functor (Text : UnicodeString.Type->                 sig                   type text = Text.t                   type index = Text.index                   type compiled_regexp =                       UReStr.Configure(Config).Make(Text).compiled_regexp                   module SubText :                     sig                       type t = UReStr.Configure(Config).Make(Text).SubText.t                       val get : t -> int -> UChar.t                       val init : int -> (int -> UChar.t) -> t                       val length : t -> int                       type index =                           UReStr.Configure(Config).Make(Text).SubText.index                       val look : t -> index -> UChar.t                       val nth : t -> int -> index                       val first : t -> index                       val last : t -> index                       val next : t -> index -> index                       val prev : t -> index -> index                       val move : t -> index -> int -> index                       val out_of_range : t -> index -> bool                       val compare_index : t -> index -> index -> int                       val iter : (UChar.t -> unit) -> t -> unit                       val compare : t -> t -> int                       module Buf :                         sig                           type buf =                               UReStr.Configure(Config).Make(Text).SubText.Buf.buf                           val create : int -> buf                           val contents : buf -> t                           val clear : buf -> unit                           val reset : buf -> unit                           val add_char : buf -> UChar.t -> unit                           val add_string : buf -> t -> unit                           val add_buffer : buf -> buf -> unit                         end                       type ur_text = text                       type ur_index = index                       val refer : ur_text -> ur_index -> ur_index -> t                       val excerpt : t -> ur_text                       val context : t -> ur_text * ur_index * ur_index                       val ur_index_of : t -> index -> ur_index                     end                   val compile : regexp -> compiled_regexp                   val regexp_match :                     ?sem:URe.match_semantics ->                     compiled_regexp ->                     text -> index -> SubText.t option array option                   val string_match : compiled_regexp -> text -> index -> bool                   val search_forward :                     ?sem:URe.match_semantics ->                     compiled_regexp ->                     text -> index -> SubText.t option array option                 end           end         module StringPrep :           sig             module type Type = StringPrep.Type             module Make :               functor (Text : UnicodeString.Type->                 sig                   type text = Text.t                   exception Prohibited of UChar.t                   exception Bad_bidi                   type profile =                       [ `Iscsi                       | `Mib                       | `Nameprep                       | `Nodeprep                       | `Resourceprep                       | `Saslprep                       | `Trace ]                   val stringprep : profile -> text -> text                 end           end       end end