sig   module Make :     functor (D : Date_sig.S) (T : Time_sig.S->       sig         module Date :           sig             type field = Period.date_field             type -'a date = 'D.date constraint 'a = [< field ]             type t = field date             type day = D.day = Sun | Mon | Tue | Wed | Thu | Fri | Sat             type month =               D.month =                 Jan               | Feb               | Mar               | Apr               | May               | Jun               | Jul               | Aug               | Sep               | Oct               | Nov               | Dec             type year = int             exception Out_of_bounds             exception Undefined             val make : year -> int -> int -> t             val lmake : year:year -> ?month:int -> ?day:int -> unit -> t             val make_year : int -> [< `Year ] date             val make_year_month : int -> int -> [< `Month | `Year ] date             val today : unit -> t             val from_jd : int -> t             val from_mjd : int -> t             val from_day_of_year : year -> int -> t             val days_in_month : [< field > `Month `Year ] date -> int             val day_of_week : t -> day             val day_of_month : t -> int             val day_of_year : t -> int             val week : t -> int             val month : [< field > `Month ] date -> month             val year : [< field > `Year ] date -> year             val to_jd : t -> int             val to_mjd : t -> int             val equal : [< field ] date -> [< field ] date -> bool             val compare : [< field ] date -> [< field ] date -> int             val hash : [< field ] date -> int             val is_valid_date : year -> int -> int -> bool             val is_leap_day : t -> bool             val is_gregorian : t -> bool             val is_julian : t -> bool             val to_unixtm : t -> Unix.tm             val from_unixtm : Unix.tm -> t             val to_unixfloat : t -> float             val from_unixfloat : float -> t             val to_business : t -> year * int * day             val from_business : year -> int -> day -> t             val int_of_day : day -> int             val day_of_int : int -> day             val int_of_month : month -> int             val month_of_int : int -> month             module Period :               sig                 type +'a p = 'D.Period.p constraint 'a = [< field ]                 type +'a period = 'a p constraint 'a = [< field ]                 type t = Period.date_field period                 val empty : [< Period.date_field ] period                 val add :                   ([< Period.date_field ] as 'a) period ->                   'a period -> 'a period                 val sub :                   ([< Period.date_field ] as 'a) period ->                   'a period -> 'a period                 val opp : ([< Period.date_field ] as 'a) period -> 'a period                 val equal :                   [< Period.date_field ] period ->                   [< Period.date_field ] period -> bool                 val compare :                   [< Period.date_field ] period ->                   [< Period.date_field ] period -> int                 val hash : [< Period.date_field ] period -> int                 val make : int -> int -> int -> t                 val lmake : ?year:int -> ?month:int -> ?day:int -> unit -> t                 val year : int -> [< field > `Year ] period                 val month : int -> [< field > `Month `Year ] period                 val week : int -> [< field > `Day `Week ] period                 val day : int -> [< field > `Day `Week ] period                 exception Not_computable                 val nb_days : [< field ] period -> int                 val safe_nb_days : [< `Day | `Week ] period -> int                 val ymd : [< field ] period -> int * int * int               end             val add : ([< field ] as 'a) date -> 'Period.period -> 'a date             val sub :               ([< field ] as 'a) date ->               'a date -> [< field > `Day `Week ] Period.period             val precise_sub : ([< field ] as 'a) date -> 'a date -> Period.t             val rem : ([< field ] as 'a) date -> 'Period.period -> 'a date             val next : ([< field ] as 'a) date -> '-> 'a date             val prev : ([< field ] as 'a) date -> '-> 'a date             val is_leap_year : year -> bool             val same_calendar : year -> year -> bool             val days_in_year : ?month:month -> year -> int             val weeks_in_year : year -> int             val week_first_last : int -> year -> t * t             val nth_weekday_of_month : year -> month -> day -> int -> t             val century : year -> int             val millenium : year -> int             val solar_number : year -> int             val indiction : year -> int             val golden_number : year -> int             val epact : year -> int             val easter : year -> t             val carnaval : year -> t             val mardi_gras : year -> t             val ash : year -> t             val palm : year -> t             val easter_friday : year -> t             val easter_saturday : year -> t             val easter_monday : year -> t             val ascension : year -> t             val withsunday : year -> t             val withmonday : year -> t             val corpus_christi : year -> t           end         module Time :           sig             type t = T.t             type field = [ `Hour | `Minute | `Second ]             type second = T.second             module Second :               sig                 type t = second                 val from_int : int -> t                 val from_float : float -> t                 val to_int : t -> int                 val to_float : t -> float               end             val make : int -> int -> second -> t             val lmake :               ?hour:int -> ?minute:int -> ?second:second -> unit -> t             val now : unit -> t             val midnight : unit -> t             val midday : unit -> t             val convert : t -> Time_Zone.t -> Time_Zone.t -> t             val from_gmt : t -> t             val to_gmt : t -> t             val normalize : t -> t * int             val hour : t -> int             val minute : t -> int             val second : t -> second             val to_seconds : t -> second             val to_minutes : t -> float             val to_hours : t -> float             val equal : t -> t -> bool             val compare : t -> t -> int             val hash : t -> int             val is_pm : t -> bool             val is_am : t -> bool             val from_seconds : second -> t             val from_minutes : float -> t             val from_hours : float -> t             module Period :               sig                 type +'a period = 'T.Period.period                   constraint 'a = [< Period.date_field ]                 type t = Period.date_field period                 val empty : [< Period.date_field ] period                 val add :                   ([< Period.date_field ] as 'a) period ->                   'a period -> 'a period                 val sub :                   ([< Period.date_field ] as 'a) period ->                   'a period -> 'a period                 val opp : ([< Period.date_field ] as 'a) period -> 'a period                 val equal :                   [< Period.date_field ] period ->                   [< Period.date_field ] period -> bool                 val compare :                   [< Period.date_field ] period ->                   [< Period.date_field ] period -> int                 val hash : [< Period.date_field ] period -> int                 val length : [< Period.date_field ] period -> second                 val mul :                   ([< Period.date_field ] as 'a) period ->                   'a period -> 'a period                 val div :                   ([< Period.date_field ] as 'a) period ->                   'a period -> 'a period                 val make :                   int -> int -> second -> [< Period.date_field ] period                 val lmake :                   ?hour:int ->                   ?minute:int ->                   ?second:second -> unit -> [< Period.date_field ] period                 val hour : int -> [< Period.date_field ] period                 val minute : int -> [< Period.date_field ] period                 val second : second -> [< Period.date_field ] period                 val to_seconds : [< Period.date_field ] period -> second                 val to_minutes : [< Period.date_field ] period -> float                 val to_hours : [< Period.date_field ] period -> float               end             val add : t -> [< Period.date_field ] Period.period -> t             val sub : t -> t -> [< Period.date_field ] Period.period             val rem : t -> [< Period.date_field ] Period.period -> t             val next : t -> field -> t             val prev : t -> field -> t           end         type t         type day = Date.day = Sun | Mon | Tue | Wed | Thu | Fri | Sat         type month =           Date.month =             Jan           | Feb           | Mar           | Apr           | May           | Jun           | Jul           | Aug           | Sep           | Oct           | Nov           | Dec         type year = Date.year         type second = Time.second         type field =             [ `Day | `Hour | `Minute | `Month | `Second | `Week | `Year ]         val make : int -> int -> int -> int -> int -> second -> t         val lmake :           year:int ->           ?month:int ->           ?day:int -> ?hour:int -> ?minute:int -> ?second:second -> unit -> t         val create : Date.t -> Time.t -> t         val now : unit -> t         val from_jd : float -> t         val from_mjd : float -> t         val convert : t -> Time_Zone.t -> Time_Zone.t -> t         val to_gmt : t -> t         val from_gmt : t -> t         val days_in_month : t -> int         val day_of_week : t -> day         val day_of_month : t -> int         val day_of_year : t -> int         val week : t -> int         val month : t -> month         val year : t -> int         val to_jd : t -> float         val to_mjd : t -> float         val hour : t -> int         val minute : t -> int         val second : t -> second         val equal : t -> t -> bool         val compare : t -> t -> int         val hash : t -> int         val is_leap_day : t -> bool         val is_gregorian : t -> bool         val is_julian : t -> bool         val is_pm : t -> bool         val is_am : t -> bool         val to_unixtm : t -> Unix.tm         val from_unixtm : Unix.tm -> t         val to_unixfloat : t -> float         val from_unixfloat : float -> t         val from_date : Date.t -> t         val to_date : t -> Date.t         val to_time : t -> Time.t         module Period :           sig             type +'a period constraint 'a = [< Period.date_field ]             type t = Period.date_field period             val empty : [< Period.date_field ] period             val add :               ([< Period.date_field > `Day `Week ] as 'a) period ->               'a period -> 'a period             val sub :               ([< Period.date_field > `Day `Week ] as 'a) period ->               'a period -> 'a period             val opp :               ([< Period.date_field > `Day `Week ] as 'a) period -> 'a period             val equal :               [< Period.date_field ] period ->               [< Period.date_field ] period -> bool             val compare :               [< Period.date_field ] period ->               [< Period.date_field ] period -> int             val hash : [< Period.date_field ] period -> int             val make : int -> int -> int -> int -> int -> second -> t             val lmake :               ?year:int ->               ?month:int ->               ?day:int ->               ?hour:int -> ?minute:int -> ?second:second -> unit -> t             val year : int -> [< Period.date_field > `Year ] period             val month : int -> [< Period.date_field > `Month `Year ] period             val week : int -> [< Period.date_field > `Day `Week ] period             val day : int -> [< Period.date_field > `Day `Week ] period             val hour : int -> [< Period.date_field > `Day `Week ] period             val minute : int -> [< Period.date_field > `Day `Week ] period             val second : second -> [< Period.date_field > `Day `Week ] period             val from_date :               ([< Period.date_field ] as 'a) Date.Period.period -> 'a period             val from_time :               ([< Period.date_field ] as 'a) Time.Period.period -> 'a period             val to_date :               ([< Date.field ] as 'a) period -> 'Date.Period.period             exception Not_computable             val to_time :               ([< Period.date_field ] as 'a) period -> 'Time.Period.period             val safe_to_time :               ([< `Day | `Week ] as 'a) period -> 'Time.Period.period             val ymds :               [< Period.date_field ] period -> int * int * int * second           end         val add : t -> [< Period.date_field ] Period.period -> t         val sub : t -> t -> [< Period.date_field > `Day `Week ] Period.period         val precise_sub : t -> t -> Period.t         val rem : t -> [< Period.date_field ] Period.period -> t         val next : t -> field -> t         val prev : t -> field -> t       end   module Make_Precise :     functor (D : Date_sig.S) (T : Time_sig.S->       sig         module Date :           sig             type field = Period.date_field             type -'a date = 'D.date constraint 'a = [< field ]             type t = field date             type day = D.day = Sun | Mon | Tue | Wed | Thu | Fri | Sat             type month =               D.month =                 Jan               | Feb               | Mar               | Apr               | May               | Jun               | Jul               | Aug               | Sep               | Oct               | Nov               | Dec             type year = int             exception Out_of_bounds             exception Undefined             val make : year -> int -> int -> t             val lmake : year:year -> ?month:int -> ?day:int -> unit -> t             val make_year : int -> [< `Year ] date             val make_year_month : int -> int -> [< `Month | `Year ] date             val today : unit -> t             val from_jd : int -> t             val from_mjd : int -> t             val from_day_of_year : year -> int -> t             val days_in_month : [< field > `Month `Year ] date -> int             val day_of_week : t -> day             val day_of_month : t -> int             val day_of_year : t -> int             val week : t -> int             val month : [< field > `Month ] date -> month             val year : [< field > `Year ] date -> year             val to_jd : t -> int             val to_mjd : t -> int             val equal : [< field ] date -> [< field ] date -> bool             val compare : [< field ] date -> [< field ] date -> int             val hash : [< field ] date -> int             val is_valid_date : year -> int -> int -> bool             val is_leap_day : t -> bool             val is_gregorian : t -> bool             val is_julian : t -> bool             val to_unixtm : t -> Unix.tm             val from_unixtm : Unix.tm -> t             val to_unixfloat : t -> float             val from_unixfloat : float -> t             val to_business : t -> year * int * day             val from_business : year -> int -> day -> t             val int_of_day : day -> int             val day_of_int : int -> day             val int_of_month : month -> int             val month_of_int : int -> month             module Period :               sig                 type +'a p = 'D.Period.p constraint 'a = [< field ]                 type +'a period = 'a p constraint 'a = [< field ]                 type t = Period.date_field period                 val empty : [< Period.date_field ] period                 val add :                   ([< Period.date_field ] as 'a) period ->                   'a period -> 'a period                 val sub :                   ([< Period.date_field ] as 'a) period ->                   'a period -> 'a period                 val opp : ([< Period.date_field ] as 'a) period -> 'a period                 val equal :                   [< Period.date_field ] period ->                   [< Period.date_field ] period -> bool                 val compare :                   [< Period.date_field ] period ->                   [< Period.date_field ] period -> int                 val hash : [< Period.date_field ] period -> int                 val make : int -> int -> int -> t                 val lmake : ?year:int -> ?month:int -> ?day:int -> unit -> t                 val year : int -> [< field > `Year ] period                 val month : int -> [< field > `Month `Year ] period                 val week : int -> [< field > `Day `Week ] period                 val day : int -> [< field > `Day `Week ] period                 exception Not_computable                 val nb_days : [< field ] period -> int                 val safe_nb_days : [< `Day | `Week ] period -> int                 val ymd : [< field ] period -> int * int * int               end             val add : ([< field ] as 'a) date -> 'Period.period -> 'a date             val sub :               ([< field ] as 'a) date ->               'a date -> [< field > `Day `Week ] Period.period             val precise_sub : ([< field ] as 'a) date -> 'a date -> Period.t             val rem : ([< field ] as 'a) date -> 'Period.period -> 'a date             val next : ([< field ] as 'a) date -> '-> 'a date             val prev : ([< field ] as 'a) date -> '-> 'a date             val is_leap_year : year -> bool             val same_calendar : year -> year -> bool             val days_in_year : ?month:month -> year -> int             val weeks_in_year : year -> int             val week_first_last : int -> year -> t * t             val nth_weekday_of_month : year -> month -> day -> int -> t             val century : year -> int             val millenium : year -> int             val solar_number : year -> int             val indiction : year -> int             val golden_number : year -> int             val epact : year -> int             val easter : year -> t             val carnaval : year -> t             val mardi_gras : year -> t             val ash : year -> t             val palm : year -> t             val easter_friday : year -> t             val easter_saturday : year -> t             val easter_monday : year -> t             val ascension : year -> t             val withsunday : year -> t             val withmonday : year -> t             val corpus_christi : year -> t           end         module Time :           sig             type t = T.t             type field = [ `Hour | `Minute | `Second ]             type second = T.second             module Second :               sig                 type t = second                 val from_int : int -> t                 val from_float : float -> t                 val to_int : t -> int                 val to_float : t -> float               end             val make : int -> int -> second -> t             val lmake :               ?hour:int -> ?minute:int -> ?second:second -> unit -> t             val now : unit -> t             val midnight : unit -> t             val midday : unit -> t             val convert : t -> Time_Zone.t -> Time_Zone.t -> t             val from_gmt : t -> t             val to_gmt : t -> t             val normalize : t -> t * int             val hour : t -> int             val minute : t -> int             val second : t -> second             val to_seconds : t -> second             val to_minutes : t -> float             val to_hours : t -> float             val equal : t -> t -> bool             val compare : t -> t -> int             val hash : t -> int             val is_pm : t -> bool             val is_am : t -> bool             val from_seconds : second -> t             val from_minutes : float -> t             val from_hours : float -> t             module Period :               sig                 type +'a period = 'T.Period.period                   constraint 'a = [< Period.date_field ]                 type t = Period.date_field period                 val empty : [< Period.date_field ] period                 val add :                   ([< Period.date_field ] as 'a) period ->                   'a period -> 'a period                 val sub :                   ([< Period.date_field ] as 'a) period ->                   'a period -> 'a period                 val opp : ([< Period.date_field ] as 'a) period -> 'a period                 val equal :                   [< Period.date_field ] period ->                   [< Period.date_field ] period -> bool                 val compare :                   [< Period.date_field ] period ->                   [< Period.date_field ] period -> int                 val hash : [< Period.date_field ] period -> int                 val length : [< Period.date_field ] period -> second                 val mul :                   ([< Period.date_field ] as 'a) period ->                   'a period -> 'a period                 val div :                   ([< Period.date_field ] as 'a) period ->                   'a period -> 'a period                 val make :                   int -> int -> second -> [< Period.date_field ] period                 val lmake :                   ?hour:int ->                   ?minute:int ->                   ?second:second -> unit -> [< Period.date_field ] period                 val hour : int -> [< Period.date_field ] period                 val minute : int -> [< Period.date_field ] period                 val second : second -> [< Period.date_field ] period                 val to_seconds : [< Period.date_field ] period -> second                 val to_minutes : [< Period.date_field ] period -> float                 val to_hours : [< Period.date_field ] period -> float               end             val add : t -> [< Period.date_field ] Period.period -> t             val sub : t -> t -> [< Period.date_field ] Period.period             val rem : t -> [< Period.date_field ] Period.period -> t             val next : t -> field -> t             val prev : t -> field -> t           end         type t         type day = Date.day = Sun | Mon | Tue | Wed | Thu | Fri | Sat         type month =           Date.month =             Jan           | Feb           | Mar           | Apr           | May           | Jun           | Jul           | Aug           | Sep           | Oct           | Nov           | Dec         type year = Date.year         type second = Time.second         type field =             [ `Day | `Hour | `Minute | `Month | `Second | `Week | `Year ]         val make : int -> int -> int -> int -> int -> second -> t         val lmake :           year:int ->           ?month:int ->           ?day:int -> ?hour:int -> ?minute:int -> ?second:second -> unit -> t         val create : Date.t -> Time.t -> t         val now : unit -> t         val from_jd : float -> t         val from_mjd : float -> t         val convert : t -> Time_Zone.t -> Time_Zone.t -> t         val to_gmt : t -> t         val from_gmt : t -> t         val days_in_month : t -> int         val day_of_week : t -> day         val day_of_month : t -> int         val day_of_year : t -> int         val week : t -> int         val month : t -> month         val year : t -> int         val to_jd : t -> float         val to_mjd : t -> float         val hour : t -> int         val minute : t -> int         val second : t -> second         val equal : t -> t -> bool         val compare : t -> t -> int         val hash : t -> int         val is_leap_day : t -> bool         val is_gregorian : t -> bool         val is_julian : t -> bool         val is_pm : t -> bool         val is_am : t -> bool         val to_unixtm : t -> Unix.tm         val from_unixtm : Unix.tm -> t         val to_unixfloat : t -> float         val from_unixfloat : float -> t         val from_date : Date.t -> t         val to_date : t -> Date.t         val to_time : t -> Time.t         module Period :           sig             type +'a period constraint 'a = [< Period.date_field ]             type t = Period.date_field period             val empty : [< Period.date_field ] period             val add :               ([< Period.date_field > `Day `Week ] as 'a) period ->               'a period -> 'a period             val sub :               ([< Period.date_field > `Day `Week ] as 'a) period ->               'a period -> 'a period             val opp :               ([< Period.date_field > `Day `Week ] as 'a) period -> 'a period             val equal :               [< Period.date_field ] period ->               [< Period.date_field ] period -> bool             val compare :               [< Period.date_field ] period ->               [< Period.date_field ] period -> int             val hash : [< Period.date_field ] period -> int             val make : int -> int -> int -> int -> int -> second -> t             val lmake :               ?year:int ->               ?month:int ->               ?day:int ->               ?hour:int -> ?minute:int -> ?second:second -> unit -> t             val year : int -> [< Period.date_field > `Year ] period             val month : int -> [< Period.date_field > `Month `Year ] period             val week : int -> [< Period.date_field > `Day `Week ] period             val day : int -> [< Period.date_field > `Day `Week ] period             val hour : int -> [< Period.date_field > `Day `Week ] period             val minute : int -> [< Period.date_field > `Day `Week ] period             val second : second -> [< Period.date_field > `Day `Week ] period             val from_date :               ([< Period.date_field ] as 'a) Date.Period.period -> 'a period             val from_time :               ([< Period.date_field ] as 'a) Time.Period.period -> 'a period             val to_date :               ([< Date.field ] as 'a) period -> 'Date.Period.period             exception Not_computable             val to_time :               ([< Period.date_field ] as 'a) period -> 'Time.Period.period             val safe_to_time :               ([< `Day | `Week ] as 'a) period -> 'Time.Period.period             val ymds :               [< Period.date_field ] period -> int * int * int * second           end         val add : t -> [< Period.date_field ] Period.period -> t         val sub : t -> t -> [< Period.date_field > `Day `Week ] Period.period         val precise_sub : t -> t -> Period.t         val rem : t -> [< Period.date_field ] Period.period -> t         val next : t -> field -> t         val prev : t -> field -> t       end end