!      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~                        ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r stuvwxyz{|}~None_mronAn infix form of  with arguments flipped.      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdef0NonemghNone_mronData block descriptorron"Does the descriptor refer to an op  None,9>m  !"# ! #"None,EXm()**()Nonemhironj adapter to *kron Variant of l with a more debuggable message.mronFApply parser and check it is applied successfully. Kinda opposite to .<nopqrstuvwxyz{|}~jlikm3None@AMagkm&N =ron3& smart constructor dropping upper bitsNron2& smart constructor dropping upper bitsOron0& smart constructor dropping upper bitsPronO specialized for Qron/& smart constructor dropping upper bitsRronQ specialized for Sron.& smart constructor dropping upper bitsTronS specialized for Uron-& smart constructor dropping upper bitsVronU specialized for Wron-" smart constructor checking domain2+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWX239:;<8765=2>?@ABCDEFGHIJKLM4N01OP/QR.ST-UVWX+,None_am4ronBase64 alphabetron/Check if a character is in the Base64 alphabet.ron*Convert a Base64 letter to a number [0-63]ron;Convert a subset [0-F] of Base64 letters to a number [0-15]ron"Decode a blob from a Base64 stringron+Decode a 60-bit number from a Base64 stringron+Decode a 60-bit number from a Base32 stringron+Decode a 64-bit number from a Base64 stringron+Decode a 64-bit number from a Base32 stringron Encode a blob to a Base64 stringron0Convert a number from [0..63] to a single letterron0Convert a number from [0..15] to a single letterron)Encode a 60-bit number to a Base64 stringronCEncode a 60-bit number to a Base64 string, dropping trailing zeroesronCEncode a 64-bit number to a Base32 string, dropping trailing zeroesron)Encode a 64-bit number to a Base64 stringNone "#$%279XgmAEronUUID split in partsron)Universally unique identifier of anythingronUUID with all zero fieldsronSplit UUID into partsronBuild UUID from partsron'Build former 64 bits of UUID from partsron'Build latter 64 bits of UUID from partsron#Make an unscoped (unqualified) nameron$Contruct a UUID name in compile-timeronMake a scoped (qualified) nameronConvert UUID to a nameronUUID with all zero fieldsronIncrement field  of a UUIDron Encode a UUID to a Base32 stringron"Decode a UUID from a Base32 stringronRON-Text-encodingronname, max 10 Base64 lettersronscope, max 10 Base64 lettersron!local name, max 10 Base64 lettersron (scope, name) for a scoped name;  (name, "") for a global nameNone "$279_dgmK1ron8Specific field or item in an object, identified by UUID.ron&Reference to an object inside a frame.ron"Frame containing only state chunksronCReduced chunk representing an object state (i. e. high-level value)ron Op terminatorron Common frameron Common chunkronCommon reduced chunkronOpen op (operation)ronevent id (usually timestamp)ron;reference to other op; actual semantics depends on the typeronpayloadron Closed oprontyperon object idron7other keys and payload, that are common with reduced opronAtom  a payload element>>None"#$_`mRP ronSerialize a frameronSerialize a chunkronSerialize a closed opronSerialize a reduced opron Serialize a ronEncode descriptorron(Prepend serialized bytes with descriptorron Serialize an ronSerialize a float atomronSerialize a reduced chunk ronSerialize a string atomronbody  None "#PX_`am`ron for descriptorron for extended length field ron Parse frameron for frameron for chunk sequenceronClear upper bit of ron for a chunkronAssert that is such as expectedron for a sequence of reduced opsron? for closed op, returning the op's terminator along with the opron@ for reduced op, returning the op's terminator along with the opron! for closed op without terminatorron" for reduced op without terminatorron2 for an op key (type, object, event, or reference)ron for UUIDron" for a payload (sequence of atoms)ron for an atom ron Parse an ron for a float atomron for an integer atomron for an string ronParse a string atomronexpected input lengthronexpected input lengthronexpected input lengthronexpected input lengthronexpected input length      Nonem`u   None "#$79_agmxronGet current replica idronGet sequential timestamps.Laws:  ) t <- getEvents n (t !! i) == head t + i  t1 <- 0 t2 <- 0 t2 >= t1 + 1 getEvents 0 == getEvents 1ron"Make local time not less than thisron1Epoch-based Lamport time event, specific case of .ron4Calendar-based Lamport time event, specific case of .ron'Generic Lamport time event. Cannot be b because we can't compare different types of clocks. If you want comparable events, use specific .ronReplica identifierronReplica id assignment styleronEClock type is encoded in 2 higher bits of variety, value in uuidValue ron +https://en.wikipedia.org/wiki/Logical_clock#ronMRFC 4122 epoch, hundreds of nanoseconds since 1582. Year range is 1582 5235.$ronCalendar format. See  (https://github.com/gritzko/ron/issues/191. Year range is 2010 2350. Precision is 100 ns./ron variant for any UUID0ronGet a single event1ronGet a single event as UUID2ronGet event sequence as UUIDs5ron%Make a calendar timestamp from a date6ron4Make a calendar timestamp from a date and a day time7ronHMake a calendar timestamp from a date, a day time, and a second fraction8ronMake an ! replica id from arbitrary numberronnumber of needed timestamps5ron(date as (year, month [1..12], day [1..])6ron(date as (year, month [1..12], day [1..])ron%day time as (hours, minutes, seconds)7ron(date as (year, month [1..12], day [1..])ron%day time as (hours, minutes, seconds)ron/fraction of a second in hundreds of nanosecond, ! "#$%*&'()+,-./012345678,$%*&'()+#! " /843,-012567. NoneM_mCRron+ReplicaSim inside Lamport clock simulation.Tron!Lamport clock simulation. Key is 3. Non-present value is equivalent to (0, initial).UronExecute network simulationUsage: runNetworkSim $ do W r1 $ do actions... W r2 $ do actions... W r1 $ ... Each UX starts its own networks. One shouldn't use in one network events generated in another.QRSTUVWXSTQRUVWX NoneMmJdronNReal epoch clock. Uses kind of global variable to ensure strict monotonicity.eronRun d$ action with explicit time variable.fronLike e6, but initialize time variable with current wall time.gronGet current time in #B format (with 100 ns resolution). Monotonicity is not guaranteed.ron?Convert unix time in hundreds of milliseconds to RFC 4122 time.hron?Convert unix time in hundreds of milliseconds to RFC 4122 time.iron.Decode date and time from UUID epoch timestampdefghijdijghef None "#%X_gmDpron.Serialize UUID without context (used for test)qron Serialize UUID in op key contextrron)Serialize UUID in op value (atom) contextqron(same key in the previous op (default is )ron(previous key of the same op (default is )ronthisrronpreviousronthispqrprqNone"#$_agm sronSerialize a common frametron%Serialize a sequence of common framesronSerialize a common chunkronSerialize a reduced chunkuronSerialize a context-free raw opron5Serialize a raw op with compression in stream contextron9Serialize a reduced op with compression in stream contextvronSerialize a context-free atomron=Serialize an atom with compression for UUID in stream contextwronSerialize a string atomron%Serialize a payload in stream contextxronSerialize a state frameyronESerialize an object. Return object id that must be stored separately.ronenclosing objectronprevious UUID (default is )pstuvwxyvyuxwpstNone "#$_`admzronParse a common frameron%Returns a chunk and the last op in itron;Returns a chunk and the last op (converted to closed) in it{ron!Parse a sequence of common frames|ronParse a single context-free op}ron Parse a single context-free UUID~ronParse a UUID in key positionron%Parse a UUID in value (atom) positionron Parse an atomronParse a string atomronReturn  and  chunkIsQueryronParse a state frameron Parse a state frame as an objectron)Extract object states from a common frame~ron(same key in the previous op (default is )ron(previous key of the same op (default is )ronprevious z{|}~ |}~z{Nonemstxyz{z{yxst !"#$%&'()*+,-./01234556789:;<=>?@@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~               ! ! " " # # $ % & ' ( ) * + , - . / / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z{|}~      ! "#$%&'()*+,-./.0.1.23435363789:;<=>?@A@ABCBDBEBFBGBHBIBJBKLMNMOMOPQPRSTUVWXYZ[\]^_`abcdefghijklmnopqrqstuvwxyz{yz|}~}yyyyyyyyyyyyyy_`x                     ron-0.6-1zdV8HgBYsA3TsVzXF6qkT RON.Util.Word RON.ErrorRON.Binary.TypesRON.Util RON.Base64RON.UUID RON.TypesRON.Binary.SerializeRON.Binary.Parse RON.EventRON.Event.Simulation RON.EpochRON.Text.Serialize.UUIDRON.Text.SerializeRON.Text.ParsePrelude Data.ZigZagAttoparsec.Extra RON.BinaryRON.TextbaseGHC.WordWord8Word16Word32Word64 mtl-2.2.2Control.Monad.Error.Class liftEitherDesc DOpClosed DOpReduced DOpHeaderDOpQueryHeader DUuidReducer DUuidObjectDUuidOpDUuidRef DAtomUuidZipDUuidZipObject DUuidZipOp DUuidZipRef DAtomUuid DAtomInteger DAtomString DAtomFloatSizedescIsOp $fEnumDesc$fEqDesc $fShowDescMonadEError ErrorContext errorContext liftMaybeliftEitherStringthrowErrorTextthrowErrorString$fIsStringError$fExceptionError $fEqError $fShowErrorInstance ByteStringLSafeCastsafeCastWord60Word24Word12Word6W6Word4Word2B0000B11B10B01B00b00b01b10b11leastSignificant2b0000b0001b0010b0011b0100b0101b0110b0111b1000b1001b1010b1011b1100b1101b1110b1111leastSignificant4leastSignificant6ls6leastSignificant12ls12leastSignificant24ls24leastSignificant60ls60toWord60 word60add$fHashableWord60$fBoundedWord60$fSafeCastWord64Fixed$fSafeCastWord64Integer$fSafeCastWord60Word64$fSafeCastWord24Word32$fSafeCastWord24Word64$fSafeCastWord12Word64$fSafeCastWord8Word64$fSafeCastWord8Word32$fSafeCastWord6Word64$fSafeCastWord6Word60$fSafeCastWord6Word8$fSafeCastWord6Int$fSafeCastWord4Word8$fSafeCastWord4Word64$fSafeCastWord4Int$fSafeCastWord2Word64$fSafeCastWord2Word8$fSafeCastWord2Word4$fSafeCastWord2Int $fEqWord2 $fOrdWord2 $fShowWord2 $fEqWord4 $fOrdWord4 $fShowWord4 $fEqWord6 $fOrdWord6 $fShowWord6 $fEqWord12 $fOrdWord12 $fShowWord12 $fEqWord24 $fOrdWord24 $fShowWord24 $fEnumWord60 $fEqWord60 $fOrdWord60 $fShowWord60alphabetisLetter decodeLetter decodeLetter4decodedecode60decode60base32decode64decode64base32encode encodeLetter encodeLetter4encode60 encode60shortencode64base32shortencode64 UuidFields uuidVariety uuidValue uuidVariant uuidVersion uuidOriginUUIDZerosplitbuildbuildXbuildYmkNameliftName mkScopedNamegetNamezero succValue encodeBase32 decodeBase32 $fShowUUID $fDataUUID$fEqUUID $fGenericUUID$fHashableUUID $fOrdUUID$fEqUuidFields$fShowUuidFields OpPatternRegularDeleteUndeleteCreateAck AnnotationAnnotationDerived ObjectPart$sel:partObject:ObjectPart$sel:partLocation:ObjectPart$sel:partFrame:ObjectPartObject$sel:id:Object$sel:frame:Object StateFrame StateChunk$sel:stateType:StateChunk$sel:stateVersion:StateChunk$sel:stateBody:StateChunkOpTermTClosedTReducedTHeaderTQuery WireFrame WireChunkClosedValueQueryWireReducedChunk$sel:wrcHeader:WireReducedChunk$sel:wrcBody:WireReducedChunkOp $sel:opId:Op $sel:refId:Op$sel:payload:OpClosedOp$sel:reducerId:ClosedOp$sel:objectId:ClosedOp$sel:op:ClosedOpAtomAFloatAIntegerAStringAUuid UndeletePDeletePAckPRegularPCreatePAnnotationDerivedP AnnotationP opPattern$fShowClosedOp $fDataAtom$fEqAtom $fGenericAtom$fHashableAtom $fShowAtom$fDataOp$fEqOp $fGenericOp $fHashableOp$fShowOp$fDataClosedOp $fEqClosedOp$fGenericClosedOp$fDataWireReducedChunk$fEqWireReducedChunk$fGenericWireReducedChunk$fShowWireReducedChunk$fDataWireChunk $fEqWireChunk$fGenericWireChunk$fShowWireChunk $fEqOpTerm $fShowOpTerm$fEqStateChunk$fShowStateChunk $fEqObject $fShowObject serialize serializeAtomserializeStringparse parseAtom parseString ReplicaClockgetPid getEventsadvance EpochEvent CalendarEventEvent ReplicaIdNaming TrieForked CryptoForked RecordForkedApplicationSpecific LocalTime TCalendarTLogicalTEpochTUnknown EpochTime CalendarTimemonthsdayshoursminutessecondsnanosecHundredsfromCalendarEventfromEpochEvent toEpochEvent advanceToUuidgetEvent getEventUuid getEventUuids encodeEvent decodeEventmkCalendarDatemkCalendarDateTimemkCalendarDateTimeNanoapplicationSpecific$fHashableNaming$fOrdCalendarEvent$fOrdEpochEvent$fReplicaClockStateT$fReplicaClockExceptT$fEqCalendarTime$fOrdCalendarTime$fShowCalendarTime $fEqLocalTime$fShowLocalTime$fBoundedNaming $fEnumNaming $fEqNaming $fShowNaming $fEqReplicaId$fShowReplicaId$fGenericReplicaId$fHashableReplicaId $fEqEvent $fShowEvent$fEqCalendarEvent$fShowCalendarEvent$fEqEpochEvent$fShowEpochEvent ReplicaSim ReplicaSimT NetworkSim NetworkSimT runNetworkSimrunNetworkSimT runReplicaSimrunReplicaSimT$fMonadTransNetworkSimT$fReplicaClockReplicaSimT$fMonadTransReplicaSimT$fApplicativeNetworkSimT$fFunctorNetworkSimT$fMonadNetworkSimT$fMonadErrorNetworkSimT$fApplicativeReplicaSimT$fFunctorReplicaSimT$fMonadReplicaSimT$fMonadErrorReplicaSimT EpochClock runEpochClockrunEpochClockFromCurrentTimegetCurrentEpochTimelocalEpochTimeFromUnix$fReplicaClockEpochClock$fApplicativeEpochClock$fFunctorEpochClock$fMonadEpochClock$fMonadIOEpochClock serializeUuidserializeUuidKeyserializeUuidAtomserializeWireFrameserializeWireFramesserializeRawOpserializeStateFrameserializeObjectparseWireFrameparseWireFramesparseOp parseUuid parseUuidKey parseUuidAtomparseStateFrame parseObject?: Data.Maybe fromMaybeGHC.Base++GHC.Listfilterzip Data.Tuplefstsnd otherwisemap$ghc-primGHC.PrimcoerceGHC.Real fromIntegral realToFrac Control.MonadguardGHC.EnumBoundedminBoundmaxBoundEnumfromEnumtoEnumsuccpred GHC.ClassesEq==/=IntegralmodMonad>>= Data.DataDataFunctorfmap<$GHC.NumNum+*-negateOrd>=minmax><compare<=roundGHC.ShowShowData.Typeable.InternalTypeableControl.Monad.Fail MonadFailfail Applicative<*>pure*><*liftA2 Data.FoldableFoldabletoListfoldrlengthfoldMapnullfoldl'foldData.Traversabletraverse sequenceAsequence GHC.GenericsGeneric Semigroup<>sconcatMonoidmempty GHC.TypesBoolFalseTrueCharDoubleIntGHC.IntInt8Int16Int32Int64 integer-gmpGHC.Integer.TypeInteger GHC.MaybeMaybeNothingJustOrderingLTEQGTIOWord Data.EitherEitherLeftRight Coerciblebytestring-0.10.8.2Data.ByteString.Internal ByteString Data.Functor<$>'hashable-1.2.7.0-2SI038axTEd7AEZJ275kpiData.Hashable.ClassHashablehash text-1.2.3.1Data.Text.InternalText time-1.8.0.2 Data.Time.Clock.Internal.UTCTimeUTCTime4unordered-containers-0.2.10.0-LgoTL3wbBEY5bZIDJiyxW4Data.HashMap.BaseHashMapcontainers-0.6.0.1Data.Map.InternalMapString Alternativemany<|>someData.BifunctorbimapData.List.NonEmptynonEmptyControl.Monad.IO.ClassMonadIOliftIOunless<=<>=>filterMforControl.ApplicativeoptionalData.Functor.IdentityIdentity Data.IORefatomicModifyIORef' GHC.IORef writeIORef readIORefnewIORefIORefGHC.IOevaluatethrowIOcatchFilePathGHC.Exception.Type Exception minimumByorandasumfor_ traverse_ Data.MonoidLast Data.OldListunwordsunlinessortOnsortBy genericLength partition intercalate isSuffixOf isPrefixOfeitherData.Ord comparingDown GHC.UnicodetoUppertoLower Data.Functiononvoid$>^^^%GHC.CharchrlookupspansplitAttake takeWhile replicaterepeat catMaybes listToMaybe maybeToListmaybeuncurrysubtractflip.constordwhen=<<NonEmpty:|GHC.Err undefinederrorGHC.Stack.Types HasCallStack&&||nottransformers-0.5.5.0Control.Monad.Trans.Class MonadTransliftControl.Monad.Writer.Class MonadWritertellControl.Monad.State.Classgetsmodify' MonadStategetputstateControl.Monad.Reader.Classaskreader MonadError throwError catchErrorControl.Monad.Trans.ExceptExceptT runExceptTControl.Monad.Trans.ReaderReaderT runReaderT Control.Monad.Trans.State.StrictStateT runStateTStaterunState evalState evalStateT execStateT!Control.Monad.Trans.Writer.StrictWriterT runWriterTfmapLfoldr1identitylastDef maximumDefmaxOnminOnshowwhenJustzzEncode zzDecode64takeL*attoparsec-0.13.2.2-7cR7so94jW75HlSyRFdGuR#Data.Attoparsec.ByteString.Internal endOfInputExData.Attoparsec.Internal endOfInput isSuccessfulData.Attoparsec.ByteString.Lazy eitherResult maybeResult parseTestResultFailDonematch parseOnly peekWord8' peekWord8notWord8word8anyWord8 notInClassinClass takeWhile1 runScannerscantakeLazyByteStringtakeByteStringtakeTill skipWhilestring satisfyWithskipsatisfyParserData.Attoparsec.CombinatorfeedeitherPcount skipMany1skipMany manyTill'manyTillsepBy1'sepBy1sepBy'sepBymany1'many1many'optionchoicetryatEndcompareResults parseOnlyL withInputSizelabel??char<+>serializeChunkserializeClosedOpserializeReducedOp encodeDescserializeWithDescserializeFloatserializeReducedChunk parseDescextendedLength parseFrame parseChunksleastSignificant31 parseChunk assertSizeparseReducedOpsparseDescAndClosedOpparseDescAndReducedOp parseClosedOp parseOpenOp parseOpKeyuuid parsePayloadatomfloatintegerepochTimeFromUnixserializeClosedOpZipserializeReducedOpZipserializeAtomZipserializePayloadpChunkwireStateChunkheader findObjects