úÎ! ƒ     3portable (should run where the package binary runs) experimentalkolmodin@gmail.com ! Put a 1 bit ". Put the n lower bits of a #. Put the n lower bits of a $. Put the n lower bits of a %. Put the n lower bits of a &. Put a '. Run a ( inside .. Any partially written bytes will be flushed  before ($ executes to ensure byte alignment. )*Run the  monad inside (.   3portable (should run where the package binary runs) experimentalkolmodin@gmail.com(  , is a monad, applicative and a functor. See    for how to run it. +, IA block that will be read with only one boundry check. Needs to know the  number of bits in advance. -./ =Get a block. Will be read with one single boundry check, and 7 therefore requires a statically known number of bits.  Build blocks using , , , , ,   and 0. 12make_mask 3 = 00000111 3456789:;< Run a   within the Binary packages = monad. If a byte has 3 been partially consumed it will be discarded once   is finished. >?@AMake sure there are at least n bits. Get 1 bit as a ". Get n bits as a #. n must be within [0..8]. Get n bits as a $. n must be within [0..16]. Get n bits as a %. n must be within [0..32]. Get n bits as a &. n must be within [0..64]. Get n bytes as a '.  Read a 1 bit ". Read n bits as a #. n must be within [0..8]. Read n bits as a $. n must be within [0..16]. Read n bits as a %. n must be within [0..32]. Read n bits as a &. n must be within [0..64]. Read n bytes as a '. BCD    3portable (should run where the package binary runs) experimentalkolmodin@gmail.comE       !!"#$%&'(&')&'*&'+,-./012345  &6789:;<=>?@ABC/DEFGHIJKLMbinary-bits-0.1Data.Binary.Bits.PutData.Binary.Bits.GetData.Binary.BitsBitPutputBoolputWord8 putWord16be putWord32be putWord64be putByteStringjoinPut runBitPutBitGetBlockblock runBitGetgetBoolgetWord8 getWord16be getWord32be getWord64be getByteStringboolword8word16beword32beword64be byteString BinaryBitputBitsgetBitsSPairSrunghc-prim GHC.TypesBoolbaseGHC.WordWord8Word16Word32Word64bytestring-0.9.2.0Data.ByteString.Internal ByteStringbinary-0.5.0.2Data.Binary.PutPutflushflushIncompleteBrunStateControl.Applicative ApplicativeincS make_mask bit_offset byte_offsetreadBool readWord8 readWord16be readWord32be readWord64bereadByteStringreadWithoutOffsetreadWithOffsetData.Binary.GetGetgetStateputState modifyState ensureBits shiftl_w16 shiftl_w32 shiftl_w64