๚ฮนซฑ๋{      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyzNone{|}~portableunstableclaude@mathr.co.ukNone &The type of mutable bit arrays in the  monad. "The type of immutable bit arrays. ;Create a new array filled with unspecified initial values. Get the bounds of a bit array. +Snapshot the array into an immutable form. CSnapshot the array into an immutable form. Unsafe when the source  array can be modified later. &Convert an array from immutable form. CConvert an array from immutable form. Unsafe to modify the result 0 unless the source array is never used later. Copy an array. €‚ƒ„…bounds €‚ƒ„… €‚ƒ„…portableunstableclaude@mathr.co.uk Safe-Inferred /Lift a boolean constant to a bitwise constant. 7Lift a unary boolean operation to a bitwise operation. )The implementation is by exhaustive input/output case analysis: . thus the operation provided must be total. 8Lift a binary boolean operation to a bitwise operation. )The implementation is by exhaustive input/output case analysis: . thus the operation provided must be total. True when any bit is set. True when all bits are set. -True when the predicate is true for any bit. .True when the predicate is true for all bits. Determine if a † is all 1s, all 0s, or neither. .A mask with count least significant bits set. ;Split a word into (lsb, msb). Ensures lsb has no set bits  above the split point. ?Join lsb with msb to make a word. Assumes lsb has no set bits  above the join point. .Pack bits into a byte in little-endian order. +Pack bits into a byte in big-endian order. 5Extract the bits from a byte in little-endian order. 2Extract the bits from a byte in big-endian order. The least significant bit. (Convert a little-endian list of bits to †.  Convert a † (with a defined ‡) to a list of bits, in  little-endian order. %Convert a big-endian list of bits to †.  Convert a † (with a defined ‡) to a list of bits, in  big-endian order.   operation  operation  predicate  predicate count  split point word  (lsb, msb)  join point least significant bits most significant bits word least significant bit most significant bit most significant bit least significant bit 4(least significant bit, ..., most significant bit) 4(most significant bit, ..., least significant bit) [0least significant bit, ..., most significant bit] [0least significant bit, ..., most significant bit] [0most significant bit, ..., least significant bit] [0most significant bit, ..., least significant bit]    portableunstableclaude@mathr.co.ukNone1Create a new array filled with an initial value. 3Create a new array filled with values from a list.  Read from an array at an index. ARead from an array at an index without bounds checking. Unsafe. !Write to an array at an index. " Alias for ,. #,Create a new array by reading from another. $(Get a list of all elements of an array. %@Get a list of all elements of an array. Unsafe when the source  array can be modified later. &*Get a list of all (index, element) pairs. '$Fill an array with a uniform value. (<Short-circuit bitwise reduction: True when any bit is True. )>Short-circuit bitwise reduction: False when any bit is False. *!Short-circuit bitwise reduction: ˆ when any bits differ,  ‰ when all bits are the same. +DBitwise reduction with an associative commutative boolean operator.  Implementation lifts from Š to Bits and folds large chunks : at a time. Each bit is used as a source exactly once. ,(Bitwise map. Implementation lifts from Š to Bits and maps  large chunks at a time. -,Bitwise zipWith. Implementation lifts from Š to Bits and $ combines large chunks at a time. 3The bounds of the source arrays must be identical. bounds initial value bounds elems  ‹!"Œ# new bounds index transformation source array $%&'()*+ operator ,-Ž !"#$%&'()*+,-!"#$&'()*+,- % ‹!"Œ#$%&'()*+,-Žuses STunstableclaude@mathr.co.ukNone. The type of mutable bit arrays. /Get the bounds of a bit array. 01Create a new array filled with an initial value. 18Create a new array filled with a default initial value (). 23Create a new array filled with values from a list. 3 Read from an array at an index. 4ARead from an array at an index without bounds checking. Unsafe. 5Write to an array at an index. 6 Alias for E. 7,Create a new array by reading from another. 8(Get a list of all elements of an array. 9EGet a list of all elements of an array without copying. Unsafe when + the source array can be modified later. :*Get a list of all (index, element) pairs. ;+Snapshot the array into an immutable form. <CSnapshot the array into an immutable form. Unsafe when the source  array can be modified later. =&Convert an array from immutable form. >CConvert an array from immutable form. Unsafe to modify the result 0 unless the source array is never used later. ?Copy an array. @$Fill an array with a uniform value. A<Short-circuit bitwise reduction: True when any bit is True. B>Short-circuit bitwise reduction: False when any bit is False. C!Short-circuit bitwise reduction: ˆ when any bits differ,  ‰ when all bits are the same. DDBitwise reduction with an associative commutative boolean operator.  Implementation lifts from Š to Bits and folds large chunks : at a time. Each bit is used as a source exactly once. E(Bitwise map. Implementation lifts from Š to Bits and maps  large chunks at a time. F,Bitwise zipWith. Implementation lifts from Š to Bits and $ combines large chunks at a time. 3The bounds of the source arrays must be identical. ./0bounds initial value 1bounds 2bounds elems 34567 new bounds index transformation source array 89:;<=>?@ABCD operator EF./0123456789:;<=>?@ABCDEF./01235678:;=?@ABCDEF49<>./0123456789:;<=>?@ABCDEFportableunstableclaude@mathr.co.ukNoneGThe bounds of an array. H7Create an array from a list of (index, element) pairs. I)Create an array from a list of elements. JACreate an array by accumulating a list of (index, operand) pairs * from a default seed with an operation. KBit array indexing. L5Bit array indexing without bounds checking. Unsafe. M0A list of all the valid indices for this array. N&A list of the elements in this array. O4A list of the (index, element) pairs in this array. P9A new array with updated values at the supplied indices. Q=Accumulate with an operation and a list of (index, operand). R Alias for \. S<Create a new array by mapping indices into a source array.. TA uniform array of bits. UA uniform array of . VA uniform array of ‘. W.Bounds checking combined with array indexing. X:Short-circuit bitwise reduction: True if any bit is True. Y<Short-circuit bitwise reduction: False if any bit is False. Z=Short-circuit bitwise reduction: Nothing if any bits differ. [DBitwise reduction with an associative commutative boolean operator.  Implementation lifts from Š to Bits and folds large chunks : at a time. Each bit is used as a source exactly once. \(Bitwise map. Implementation lifts from Š to Bits and maps  large chunks at a time. ],Bitwise zipWith. Implementation lifts from Š to Bits and $ combines large chunks at a time. 3The bounds of the source arrays must be identical. GHbounds assocs Ibounds elems J operation  default bounds assocs KLMNOP new assocs Q operation source assocs RS new bounds index transformation source array Tbounds Ubounds Vbounds WXYZ[\]GHIJKLMNOPQRSTUVWXYZ[\]GHIJKMNOPQRSTUVXYZ[\]WLGHIJKLMNOPQRSTUVWXYZ[\]portableunstableclaude@mathr.co.ukNone^BCopy to a ByteString. The most significant bits of the last byte H are padded with 0 unless the array was a multiple of 8 bits in size. _#Copy from a ByteString. Much like  listArray but with packed bits. `BCopy to a ByteString. The most significant bits of the last byte H are padded with 0 unless the array was a multiple of 8 bits in size. a#Copy from a ByteString. Much like  newListArray but with packed bits. ^_bounds packed elems `abounds packed elems ^_`a^_`a^_`aportableunstableclaude@mathr.co.ukNonebCPossible reasons for decoding to fail, with the input that failed. c There weren't enough bytes of pixel data. d3Parsing failed at the space before the pixel data. e5The height could not be parsed, or was non-positive. f4The width could not be parsed, or was non-positive. g2Second character was not 4 (binary) or 1 (plain). hFirst character was not P. i'Possible reasons for encoding to fail. j'image width is larger than array width k,image width is too smaller than array width l(array width is not a multiple of 8 bits nA decoded PBM image. p must be less or equal to the  width of the q' array (which has its first index in Y B and the second in X, with lowest coordinates at the top left). >False pixels are white, True pixels are black. Pixels to the  right of p are don'%t care padding bits. However, these 4 padding bits are likely to invalidate aggregrate     operations. See y. r?Encode a binary PBM (P4) image, padding rows to multiples of 8  bits as necessary. sEncode a plain PBM (P1) image. =No restrictions on pixels array size, but the file format is " exceedingly wasteful of space. tEncode a pre-padded n to a binary PBM (P4) image. DThe pixels array must have a multiple of 8 bits per row. The image F width may be less than the pixel array width, with up to 7 padding  bits at the end of each row. u Decode a binary PBM (P4) image. v-Decode a sequence of binary PBM (P4) images. 5Keeps decoding until end of input (in which case the ’ of the  result is ˆ) or an error occurred. wDecode a plain PBM (P1) image. ANote that the pixel array size is kept as-is (with the width not & necessarily a multiple of 8 bits). xBAdd padding bits at the end of each row to make the array width a > multiple of 8 bits, required for binary PBM (P4) encoding. y$Trim any padding bits, required for fold operations to give  meaningful results. Fails for invalid n, with image width greater than array width. zTrim then pad. The resulting n (if any) is suitable for ? encoding to binary PBM (P4), moreover its padding bits will  be cleared. “$Reverse the bit order of all bytes. BPBM specifies that the most significant bit is leftmost, which is 0 opposite to the convention used by BitArray. ”?Fast reversal of the bit order of a byte using a lookup table. •'A lookup table for bit order reversal. –!A slow way to reverse bit order. —<White space characters as defined by the PBM specification. bcdefghijklmnopqrpixels spixels tuvwxyz“”•–—bcdefghijklmnopqrstuvwxyznopqrsilkjmmmtbhgfedcuwvxyzbhgfedcilkjmmmnopqrstuvwxyz“”•–—˜     !"#$%&'()*+,-./01 2 ' ()*+,-./01 3456789:;<=>?1@AB CDEFGHIJKLMNOPQRSSTUVWXYZ[\]^_`abcdbcebfghijklmnop_qr_qs_tu_tvhiwxyz{hi|}hi~_€‚ƒ„…†bitwise-0.1.0.1Data.Array.BitArray.IOData.Array.BitArrayData.Bits.BitwiseData.Array.BitArray.STData.Array.BitArray.ByteStringCodec.Image.PBMCompatData.Array.BitArray.InternalBitArrayfold IOBitArray newArray_ getBoundsfreeze unsafeFreezethaw unsafeThawcopyrepeatmapzipWithorandanyall isUniformmasksplitAtjoinAt packWord8LE packWord8BE unpackWord8LE unpackWord8BEfromBool fromListLEtoListLE fromListBEtoListBEnewArray newListArray readArrayunsafeReadArray writeArraymapArray mapIndicesgetElemsunsafeGetElems getAssocsfill STBitArrayboundsarray listArray accumArray!!!!indiceselemsassocs//accumamapixmapfalsetrue!? toByteStringfromByteStringtoByteStringIOfromByteStringIO DecodeError BadPixelsBadSpace BadHeightBadWidth BadMagicN BadMagicP EncodeError BadLargeWidth BadSmallWidth BadPixelWidth encErrPBMPBMpbmWidth pbmPixels encodePBMencodePlainPBM encodePBM' decodePBM decodePBMsdecodePlainPBMpadPBMtrimPBMrepadPBMbaseGHC.IO unsafeIOToSTbytestring-0.10.0.0Data.ByteStringpackCStringLenunconsData.ByteString.UnsafeunsafeUseAsCStringLenghc-prim GHC.TypesIOIOB iobBoundLo iobBoundHiiobBytesiobDataB Data.BitsBitsbitSize Data.MaybeNothingJustBool readArrayRawinterleavedMapMThenTouchmapTo zipWithToFalseSTBTrue Data.TuplesndreverseByteBits reverseBits bitReversed bitReversepbmSpace