úÎV‡      ;The event system must be initilized using initEventSystem. 8 More than one event system can be instantiated at once  (eg. for non-interference). 6IDs useful for canceling previously scheduled events. +A value indicating there is no such event. < Canceling this event returns True and has no other effect. 8The only way to get an event system is to initilize one JMain thread. Delays till the alarm time then executes any expired events.  Asynchronous  , exceptions might occur to indicate a new,  earlier, alarm time. LWorker function for expireEvents - the parent simply catches the exceptions ?Determines which events are expired, running all their actions Execute expired events 3Runs all provided events (which must have expired) MAdd an *action* to be performed at *time* by *system*. Returns a unique ID. Atomic version of addEvent <Cancel an event from the system, returning True on success. Atomic version of cancelEvent &Returns the number of pending events. LTracks the alarm time and the earliest event. If an earlier event is added N the alarm time is updated and TimerReset is thrown to the expireEvent thread LReturns the time difference in microseconds (potentially returning maxBound <= the real difference)    ! "   #      !"#$%control-event-0.3.0 Control.EventControl.Event.Timeout EventSystemEventIdnoEventinitEventSystemaddEvent addEventSTM cancelEventcancelEventSTM evtSystemSize TimeoutTag addTimeoutaddTimeoutAtomic cancelTimeout TimerResetEvtSysesEventsesThreadesAlarm esNewAlarm esExpiredEvtIdEventSet EventNumber singletonSetnever expireEvents expireEvents' runExpiremonitorExpiredQueue runEvents trackAlarmtimeDiffToMicroSecTTag getExpireTime