VE;      !"#$%&'()*+,-./0123456789:SafeThe number of s in a ;1. A handy constant to have around when defining ;'-based bulk operations on bit vectors. !<=>?@ABCDEFGHIJKLMNOPQRSTUVWX <=>?@ABCDEFGHIJKLMNOPQRSTUVW <=>?@ABCDEFGHIJKLMNOPQRSTUVWXNoneread a word at the given bit offset in little-endian order (i.e., the LSB will correspond to the bit at the given address, the 2's bit will correspond to the address + 1, etc.). If the offset is such that the word extends past the end of the vector, the result is zero-padded. read a word at the given bit offset in little-endian order (i.e., the LSB will correspond to the bit at the given address, the 2's bit will correspond to the address + 1, etc.). If the offset is such that the word extends past the end of the vector, the result is zero-padded. write a word at the given bit offset in little-endian order (i.e., the LSB will correspond to the bit at the given address, the 2's bit will correspond to the address + 1, etc.). If the offset is such that the word extends past the end of the vector, the word is truncated and as many low-order bits as possible are written. YZ[\ ]^_`Y YZ[\ TrustworthyaThe bD instance is currently based on integers mod 2, so (+) and (-) are L XOR, (*) is AND, and all the unary operations are identities. Saturating 2 operations would also be a sensible alternative. cdefgahicdefgahi Trustworthy 6Get the length of the vector that would be created by   Clone a specified number of bits from a vector of words into a new vector of bits (interpreting the words in little-endian order, as described at d). If there are not enough words for the number of bits requested, the vector will be zero-padded. Iclone a vector of bits to a new unboxed vector of words. If the bits don'@t completely fill the words, the last word will be zero-padded. %Map a function over a bit vector one ; at a time (S bits at a time). The function will be passed the bit index (which will always be -aligned) and the current value of the corresponding word. The returned word will be written back to the vector. If there is a partial word at the end of the vector, it will be zero-padded when passed to the function and truncated when the result is written back to the array. Same as   but without the index. #Flip every bit in the given vector *return the number of ones in a bit vector Returns j# if all bits in the vector are set Returns j! if any bit in the vector is set   cklmnopqrstuvwxyz{|}~]^        Trustworthy "Given a number of bits and a vector of words, concatenate them to a vector of bits (interpreting the words in little-endian order, as described at d). If there are not enough words for the number of bits requested, the vector will be zero-padded. #LGiven a vector of bits, extract an unboxed vector of words. If the bits don'@t completely fill the words, the last word will be zero-padded. $zipWords f xs ys = MfromWords (min (length xs) (length ys)) (zipWith f (toWords xs) (toWords ys)) (internal) N-ary $n with specified output length. Makes all kinds of assumptions; mainly only valid for union and intersection. +#Flip every bit in the given vector ,lGiven a vector of bits and a vector of things, extract those things for which the corresponding bit is set.  For example, 1select (V.map (fromBool . p) x) x == V.filter p x. -nGiven a vector of bits and a vector of things, extract those things for which the corresponding bit is unset.  For example, :exclude (V.map (fromBool . p) x) x == V.filter (not . p) x. 0*return the number of ones in a bit vector 2j# if all bits in the vector are set 3j! if any bit in the vector is set 9SReturn the address of the first bit in the vector with the specified value, if any !"#$%&'()*+,-./0123456789:klmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOP]^Q!"#$%&'()*+,-./0123456789:!"#$%)&*'(+,.-/0123574689:!"#$%&'()*+,-./0123456789:R      !"#$%&'()*+,-./01234 !"#$%56789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\][\^_`abcdefghijk89l[\m[\n[\o[\p[\q[\r[\s[\t[\u[\v[\w[\x[\y[\z[\{[\|[\}[\~[\[\[\[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[\[\[\[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[ [ [ [ [ [[[[[[[[[[[[[[[[[[[[ [!["[#[$[%[&['[([)[*[[+[,[[[[[[[[[[[[-[.[/[0[1[2[3[4[5[6[7[8[9[[[:;<bitvec-0.1.0.1Data.BitData.Vector.Unboxed.Mutable.BitData.Vector.Unboxed.BitData.Bit.Internal Data.Vector.Unboxed.Bit.InternalBitfromBooltoBoolwordSize indexWordreadWord writeWordpadWithpad wordLengthcloneFromWords cloneToWordsmapMInPlaceWithIndexmapInPlaceWithIndex mapMInPlace mapInPlace zipInPlace unionInPlaceintersectionInPlacedifferenceInPlacesymDiffInPlace invertInPlaceselectBitsInPlaceexcludeBitsInPlace countBitslistBitsandorallanyallBitsanyBitsreverseInPlace fromWordstoWordszipWordsunion intersection differencesymDiffunions intersectionsinvertselectexclude selectBits excludeBitsreversefirst findIndexghc-prim GHC.TypesWordlg2 lgWordSize wordSizeMask wordSizeMaskC divWordSize modWordSize mulWordSizenWordsnBitsaligned notAlignedalignUp alignDownreadBit extendToWordmaskmaskedisMaskedmeld extractWord spliceWord reverseWordreversePartialWorddiffffs bitsInWord selectWord $fEnumBit cloneWords$fVectorVectorBit$fMVectorMVectorBit $fUnboxBitvector-0.10.0.1Data.Vector.Unboxed.BaseMVectorVectorBitVecBitMVec$fNumBitbaseGHC.NumNum liftBool2liftInt2 $fBitsBit $fIntegralBit $fRealBit $fReadBit $fShowBitTrueMV_UnitMV_IntMV_Int8MV_Int16MV_Int32MV_Int64MV_WordMV_Word8 MV_Word16 MV_Word32 MV_Word64MV_Float MV_DoubleMV_CharMV_Bool MV_ComplexMV_2MV_3MV_4MV_5MV_6Data.Vector.Unboxed.Mutableunzip6zip6unzip5zip5unzip4zip4unzip3zip3unzipzip unsafeMovemove unsafeCopycopyset unsafeSwap unsafeWrite unsafeReadswapwritereadclear unsafeGrowgrowclone replicateM replicate unsafeNewnewoverlaps unsafeTail unsafeInit unsafeDrop unsafeTake unsafeSlicetailinitsplitAtdroptakeslicenulllengthIOVectorSTVectorUnboxzipManyData.Vector.Unboxedfreezethaw unsafeThaw unsafeFreeze fromListNfromListtoListscanr1'scanr1scanr'scanr postscanr' postscanr prescanr'prescanrscanl1'scanl1scanl'scanl postscanl' postscanl prescanl'prescanlfold1M'_foldM'_fold1M_foldM_fold1M'foldM'fold1MfoldM minIndexByminIndex maxIndexBymaxIndex minimumByminimum maximumBymaximumproductsumifoldr'ifoldrifoldl'ifoldlfoldr1'foldr'foldr1foldrfoldl1'foldl'foldl1foldl elemIndices elemIndex findIndicesfindnotElemelembreakspanunstablePartition partition dropWhile takeWhilefilterMifilterfilter zipWithM_zipWithM izipWith6 izipWith5 izipWith4 izipWith3izipWithzipWith6zipWith5zipWith4zipWith3zipWithforM_forMmapM_mapM concatMapimapmapindexedmodifyunsafeBackpermute backpermuteunsafeAccumulate_unsafeAccumulate unsafeAccum accumulate_ accumulateaccum unsafeUpdate_ unsafeUpdate unsafeUpdupdate_update//forcecreate generateMconcat++snocconsenumFromThenTo enumFromTo enumFromStepN enumFromN constructrN constructNunfoldrNunfoldriterateNgenerate singletonempty unsafeLastM unsafeHeadM unsafeIndexMlastMheadMindexM unsafeLast unsafeHead unsafeIndexlasthead!?!Data.Vector.Genericconvert