!3-#5      !"#$%&'()*+,-./01234None_m5 ron-storageAn infix form of 6 with arguments flipped.789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~6     550None $>PXkm ron-storageIResult of DB reading, loaded document with information about its versions ron-storage Merged value. ron-storagerA thing (e.g. document) was fixed during loading. It it was fixed during loading it must be saved to the storage. ron-storageStorage backend interface ron-storage Must return [] for non-existent collection ron-storage Must return [] for non-existent document  ron-storage0Must create collection and document if not exist  ron-storage[A type that intended to be put in a separate collection must define a Collection instance. ron-storageCalled when RON parser fails. ron-storageCollection (directory name) ron-storageODocument identifier (directory name), should be a RON-Base32-encoded RON-UUID. ron-storage'Document version identifier (file name) ron-storage Try decode UUID from a file name ron-storage"Load document version as an object ron-storageLoad all versions of a document ron-storageValidation-like version of |. ron-storage7Load document, apply changes and put it back to storage ron-storageaCreate new version of an object/document. If the document doesn't exist yet, it will be created. ron-storage.Create document assuming it doesn't exist yet. ron-storage+Bool = is document id a valid UUID encoding ron-storage, if document exists already;  otherwise.     None $/=?@AMSXkm"e ron-storageThe handler is called as onDocumentChanged docid , where docid is the changed document id.! ron-storage+Storage handle (uses the Handle pattern )." ron-storageEnvironment is the dataDir# ron-storageRun a " action$ ron-storageCreate new storage handle!   !"#$%! $%"#None$/MX_km#{-.-.      !""#$%&'()*+,-./0123456789:8;<8=>8=?8@A8@B8;C8;D8;EFGH8IJ8IK8LM8NO8NP8NQ8NR8NS8NT8NU8NVFWXFWYFWZ8I[8I\8;]8;^8_`8;a8;b8;c8de8df8dg8dh8diFWjFWkFWlFWmFWnFWoFWpFWq8Ir8st8uv8wx8wy8;z8;{8;|8;}8;~8;8888888888888;8;8;8;8;FFFFFF8888888FFFFFF8888888F88;8;8;8;8;88888L8L8L8L8888888888888888888888888888888888888888I8I8I88=8=8= 8= 8= 8= 8= 898989898@8d8;8;8;8;8;8;8;8;888 FW!FW"FW#$%&'()'(*+,-+,.+/0+/1+/2+/3+/4+/5+67+68+9:+9;+9<+9='>?'>@'AB'AB'AC'DE'DF'DG'DH'DI'DJ'DK'LM'LNOPQRSTUVWXYZ[&ron-storage-0.5-LCryaPJBcTD4E6njif8hOU RON.StorageRON.Storage.IORON.Storage.TestPreludeDocumentvalueversions isTouched MonadStoragegetCollections getDocumentsgetDocumentVersionssaveVersionContentloadVersionContent deleteVersion changeDocId CollectioncollectionName fallbackParseCollectionNameDocId DocVersion decodeDocId readVersion loadDocumentmodifycreateDocument docIdFromUuid $fShowDocId $fEqDocId $fOrdDocId$fShowIsTouched$fShowDocumentOnDocumentChangedHandleStorage runStorage newHandlesetOnDocumentChanged$fMonadStorageStorage$fReplicaClockStorage$fApplicativeStorage$fFunctorStorage$fMonadStorage$fMonadErrorStorage$fMonadIOStorageTestDB runStorageSim$fMonadStorageStorageSim$fApplicativeStorageSim$fFunctorStorageSim$fMonadStorageSim$fMonadErrorStorageSim$fReplicaClockStorageSim?:base 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 Applicativepure<*>*><*liftA2 Data.FoldableFoldabletoListfoldrlengthfoldMapnullfoldl'foldData.Traversabletraverse sequenceAsequence GHC.GenericsGeneric Semigroup<>sconcatMonoidmempty GHC.TypesBoolFalseTrueCharDoubleIntGHC.IntInt8Int16Int32Int64 integer-gmpGHC.Integer.TypeInteger GHC.MaybeMaybeNothingJustOrderingLTEQGTIOWordGHC.WordWord8Word16Word32Word64 Data.EitherEitherLeftRight Coerciblebytestring-0.10.8.2Data.ByteString.Internal ByteString Data.Functor<$> text-1.2.3.1Data.Text.InternalTextcontainers-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&&||notfilepath-1.4.2.1System.FilePath.Posixtransformers-0.5.5.0Control.Monad.Trans.Class MonadTranslift mtl-2.2.2Control.Monad.Writer.Class MonadWritertellControl.Monad.State.Classgetsmodify' MonadStategetputstateControl.Monad.Reader.ClassaskreaderControl.Monad.Error.Class liftEither 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 maximumDefmaxOnminOnshowwhenJust IsTouchedvsconcat createVersion