h&>9      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~(c) Matthew Mosior 2022 BSD-stylemattm.github@gmail.comportable Safe-Inferred(; #text-compression.Abstract BWTCounter and associated state type.text-compressionAbstract data type representing a BWTSeq in the (strict) ST monad.text-compression!Abstract BWTSeq type utilizing a .text-compression9The BWTMatrix data type. Uses a massiv array internally.text-compressionThe BWT data type. Uses  internally.text-compression!The SuffixArray data type. Uses  internally.text-compressionBasic suffix data type. Used to describe the core data inside of the  data type. text-compressionComputes the Burrows-Wheeler Transform (BWT) using the suffix array and the original string (represented as a  for performance). text-compressionComputes the corresponding  of a given string. Please see  *https://en.wikipedia.org/wiki/Suffix_array suffix array for more information. text-compressionHierarchical sorting scheme that compares fst first then snd. Necessary for the setting up the BWT in order to correctly invert it using the  +https://www.youtube.com/watch?v=QwSsppKrCj4Magic algorithm.text-compression1State function to push BWTString data into stack.text-compression0State function to create empty STBWTString type.text-compression$State function to update BWTCounter.text-compression1State function to create empty STBWTCounter type.text-compressionMagic Inverse BWT function.text-compressionSimple yet efficient implementation of converting a given string into a BWT Matrix (the BWTMatrix type is a massiv array).    (c) Matthew Mosior 2022 BSD-stylemattm.github@gmail.comportable Safe-Inferred(;text-compressionA newtype to ensure you only uncompress a BWT created from textToBWT, since [Word8] -> Text is partial.!text-compressionTakes a String and returns the Burrows-Wheeler Transform (BWT). Implemented via a ."text-compression!Helper function for converting a  to a  .#text-compressionHelper function for converting  to a .$text-compression"Takes a BWT data type (please see Data.BWT.Internal-) and inverts it back to the original string.This function utilizes the state monad (strict) in order to implement the  +https://www.youtube.com/watch?v=QwSsppKrCj4Magic Inverse BWT algorithm by backtracking indices starting with the (Nothing ,_) entry.%text-compression!Helper function for converting a  of s to a .&text-compression!Helper function for converting a  s to a .'text-compressionHelper function for converting  to a   !"#$%&' !" #$%&'(c) Matthew Mosior 2022 BSD-stylemattm.github@gmail.comportable Safe-Inferred(;a/-text-compression Abstract - and associated state type..text-compression"Abstract data type representing a / in the (strict) ST monad./text-compression Abstract / type utilizing a .0text-compression Abstract 0 and associated state type.1text-compression"Abstract data type representing a 2 in the (strict) ST monad.2text-compression Abstract 2 type utilizing a .3text-compression Abstract 3 and associated state type.4text-compression Abstract 4 and associated state type.5text-compression"Abstract data type representing a 6 in the (strict) ST monad.6text-compression Abstract 6 type utilizing a .7text-compression Abstract 7 type utilizing a 8text-compression Abstract 8 and associated state type.9text-compression Abstract 9 and associated state type.:text-compression"Abstract data type representing a ; in the (strict) ST monad.;text-compression Abstract ; type utilizing a .<text-compression Abstract < type utilizing a =text-compression Basic MTF ( ) data type.?text-compression Basic MTF ( ) data type.Atext-compression6Useful to acquire the unique elements that make up a ". Credit to @DavidFletcher. See  https://stackoverflow.com/questions/45757839/removing-duplicate-elements-in-a-seqthis stackoverflow post.Btext-compression#Abstract data type to initialize a : using the initial list.Ctext-compressionState function to update ; with each step of the MTF.Dtext-compressionState function to create empty : type.Etext-compression!State function to load list into 9.Ftext-compressionState function to create empty 9 type.Gtext-compressionState function to update 8.Htext-compressionState function to create empty 8 type.Itext-compressionStrict state monad function.Jtext-compression#Abstract data type to initialize a 5 using the initial list.Ktext-compressionState function to update 5 with each step of the MTF.Ltext-compressionState function to create empty 5 type.Mtext-compression!State function to load list into 4.Ntext-compressionState function to create empty 4 type.Otext-compressionState function to update 3.Ptext-compressionState function to create empty 3 type.Qtext-compressionStrict state monad function.Rtext-compressionState function to update 1# with each step of the inverse MTF.Stext-compressionState function to create empty 1 type.Ttext-compression!State function to load list into 0.Utext-compressionState function to update 0.Vtext-compressionState function to create empty 0 type.Wtext-compressionStrict state monad function.Xtext-compressionState function to update .# with each step of the inverse MTF.Ytext-compressionState function to create empty . type.Ztext-compression!State function to load list into -.[text-compressionState function to update -.\text-compressionState function to create empty - type.]text-compressionStrict state monad function.1-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]1?@=>A<;:BCD9EF8GHI765JKL4MN3OPQ21RS0TUVW/.XY-Z[\](c) Matthew Mosior 2022 BSD-stylemattm.github@gmail.comportable Safe-Inferred"(&htext-compression!Helper function for converting a  to a ? via a  first.itext-compression!Helper function for converting a  to a = via a  first.jtext-compression!Helper function for converting a  to a ? via a  first.ktext-compression!Helper function for converting a  to a = via a  first.ltext-compressionTake a  of -s and generate the Move-to-front transform (?).mtext-compressionTake a  of -s and generate the Move-to-front transform (?).ntext-compressionTake a  of -s and generate the Move-to-front transform (?).otext-compressionTake a  of -s and generate the Move-to-front transform (=).ptext-compressionTakes a * and returns the Move-to-front transform (?).qtext-compressionTakes a  of +s and returns the Move-to-front transform (?).rtext-compressionTakes a * and returns the Move-to-front transform (=).stext-compressionTakes a * and returns the Move-to-front transform (=).ttext-compression!Helper function for converting a ed ? back to the original .utext-compression!Helper function for converting a ed = back to the original .vtext-compression!Helper function for converting a ed ? back to the original .wtext-compression!Helper function for converting a ed = back to the original .xtext-compressionTakes a = and returns the  of s.ytext-compressionTakes a = and returns the  of s.ztext-compressionTakes a ? and returns the  of s.{text-compressionTake a ? and returns the  of s.|text-compressionTakes a ? and returns the original  of s.}text-compressionTakes a ? and returns the original  of s.~text-compressionTakes a = and returns the original  of s.text-compressionTakes a = and returns the original  of s.hijklmnopqrstuvwxyz{|}~hijklmnopqrstuvwxyz{|}~(c) Matthew Mosior 2022 BSD-stylemattm.github@gmail.comportable Safe-Inferred(;/"text-compression"Abstract data type representing a  in the (strict) ST monad.text-compression Abstract  type utilizing a .text-compression"Abstract data type representing a  in the (strict) ST monad.text-compression Abstract  type utilizing a .text-compression Abstract  and associated state type.text-compression Abstract  state type.text-compression"Abstract data type representing a  in the (strict) ST monad.text-compression Abstract  type utilizing a .text-compression Abstract  state type.text-compression Abstract  and associated state type.text-compression"Abstract data type representing a  in the (strict) ST monad.text-compression Abstract  type utilizing a .text-compression Basic RLE ( ) data type.text-compression Basic RLE ( ) data type.text-compressionState function to push  data into stack.text-compressionState function to create empty  type.text-compressionState function to update .text-compressionState function to create empty  type.text-compressionState function to update .text-compressionState function to create empty  type.text-compressionStrict state monad function.text-compressionState function to push  data into stack.text-compressionState function to create empty  type.text-compressionState function to update .text-compressionState function to create empty  type.text-compressionState function to update .text-compressionState function to create empty  type.text-compressionStrict state monad function.text-compressionState function to push  data into stack.text-compressionState function to create empty  type.text-compressionStrict state monad function.text-compressionState function to push  data into stack.text-compressionState function to create empty  type.text-compressionStrict state monad function.$$(c) Matthew Mosior 2022 BSD-stylemattm.github@gmail.comportable Safe-Inferred"(9[text-compression!Helper function for converting a  to a  via a  first.text-compression!Helper function for converting a  to a  via a  first.text-compression!Helper function for converting a  to a  via a  first.text-compression!Helper function for converting a  to a  via a  first.text-compressionTake a  of )s and generate the Run-length encoding ().text-compressionTake a  of )s and generate the Run-length encoding ().text-compressionTake a  of )s and generate the Run-length encoding ().text-compressionTake a  of )s and generate the Run-length encoding ().text-compressionTakes a & and returns the Run-length encoding ().text-compressionTakes a  of 's and returns the Run-length encoding ().text-compressionTakes a + and returns the Run-length encoding (RLE).text-compressionTakes a + and returns the Run-length encoding (RLE).text-compression!Helper function for converting a ed  back to the original .text-compression!Helper function for converting a ed  back to the original .text-compression!Helper function for converting a ed  back to the original .text-compression!Helper function for converting a ed  back to the original .text-compressionTakes a  and returns the  of s.text-compressionTakes a  and returns the  of s.text-compressionTakes a  and returns the  of s.text-compressionTake a  and returns the  of s.text-compressionTakes a  and returns the original  of s.text-compressionTakes a  and returns the original  of s.text-compressionTakes a  and returns the original  of s.text-compressionTakes a  and returns the original  of s.        !"#$$%&'()*+,-./0123456789:;<=>?@AABBCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~/text-compression-0.1.0.10-EepNgN4IpBnvakxQWW5JDData.BWT.InternalData.BWTData.MTF.InternalData.MTFData.RLE.InternalData.RLE STBWTCounterSTBWTSeqBWTSeq BWTMatrixBWT SuffixArraySuffix suffixindexsuffixstartpossuffixsaToBWTcreateSuffixArraysortTB pushSTBWTSeq emptySTBWTSequpdateSTBWTCounteremptySTBWTCountermagicInverseBWTcreateBWTMatrix$fEqBWT$fOrdBWT $fShowBWT $fReadBWT $fGenericBWT $fShowSuffix $fReadSuffix $fEqSuffix $fOrdSuffix$fGenericSuffixTextBWTtoBWTbytestringToBWT textToBWTfromBWTbytestringFromWord8BWTbytestringFromByteStringBWT textFromBWT $fEqTextBWT $fOrdTextBWT $fShowTextBWT $fReadTextBWT$fGenericTextBWT FSTMTFILT FSTMTFSeqTFMTFSeqT FSTMTFILB FSTMTFSeqBFMTFSeqB STMTFCounterTSTMTFILT STMTFLSSeqT MTFLSSeqT PTMTFSeqT STMTFCounterBSTMTFILB STMTFLSSeqB MTFLSSeqB PBMTFSeqBMTFTMTFBnubSeq'initializeSTMTFLSSeqBupdateSTMTFLSSeqBemptySTMTFLSSeqB loadSTMTFILB emptySTMTFILBupdateSTMTFCounterBemptySTMTFCounterB seqToMTFBinitializeSTMTFLSSeqTupdateSTMTFLSSeqTemptySTMTFLSSeqT loadSTMTFILT emptySTMTFILTupdateSTMTFCounterTemptySTMTFCounterT seqToMTFTupdateFSTMTFSeqBemptyFSTMTFSeqB loadFSTMTFILBupdateFSTMTFILBemptyFSTMTFILB seqFromMTFBupdateFSTMTFSeqTemptyFSTMTFSeqT loadFSTMTFILTupdateFSTMTFILTemptyFSTMTFILT seqFromMTFT$fEqMTFT $fOrdMTFT $fShowMTFT $fReadMTFT $fGenericMTFT$fEqMTFB $fOrdMTFB $fShowMTFB $fReadMTFB $fGenericMTFBbytestringToBWTToMTFBbytestringToBWTToMTFTtextToBWTToMTFBtextToBWTToMTFT textBWTToMTFBbytestringBWTToMTFB textBWTToMTFTbytestringBWTToMTFT textToMTFBbytestringToMTFB textToMTFTbytestringToMTFTbytestringFromBWTFromMTFBbytestringFromBWTFromMTFTtextFromBWTFromMTFBtextFromBWTFromMTFTtextBWTFromMTFTbytestringBWTFromMTFTtextBWTFromMTFBbytestringBWTFromMTFB textFromMTFBbytestringFromMTFB textFromMTFTbytestringFromMTFT FSTRLESeqTFRLESeqT FSTRLESeqBFRLESeqB STRLECounterT STRLETempT STRLESeqTRLESeqT STRLECounterB STRLETempB STRLESeqBRLESeqBRLETRLEB pushSTRLESeqBemptySTRLESeqBupdateSTRLETempBemptySTRLETempBupdateSTRLECounterBemptySTRLECounterB seqToRLEB pushSTRLESeqTemptySTRLESeqTupdateSTRLETempTemptySTRLETempTupdateSTRLECounterTemptySTRLECounterT seqToRLETpushFSTRLESeqBemptyFSTRLESeqB seqFromRLEBpushFSTRLESeqTemptyFSTRLESeqT seqFromRLET$fEqRLET $fOrdRLET $fShowRLET $fReadRLET $fGenericRLET$fEqRLEB $fOrdRLEB $fShowRLEB $fReadRLEB $fGenericRLEBbytestringToBWTToRLEBbytestringToBWTToRLETtextToBWTToRLEBtextToBWTToRLET textBWTToRLEBbytestringBWTToRLEB textBWTToRLETbytestringBWTToRLET textToRLEBbytestringToRLEB textToRLETbytestringToRLETbytestringFromBWTFromRLEBbytestringFromBWTFromRLETtextFromBWTFromRLEBtextFromBWTFromRLETtextBWTFromRLETbytestringBWTFromRLETtextBWTFromRLEBbytestringBWTFromRLEB textFromRLEBbytestringFromRLEB textFromRLETbytestringFromRLETcontainers-0.6.5.1Data.Sequence.InternalSeqbytestring-0.11.3.1Data.ByteString.Internal ByteStringbaseGHC.WordWord8 text-1.2.5.0Data.Text.InternalText