h*/%      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopq r s t u v w x y z { | } ~                             1.1.0 Safe-Inferred )1=> Safe-Inferred )1=> Safe-Inferred )1=>    Safe-Inferred )1=> W Safe-Inferred)1=>  Safe-Inferred)1=>  !"#$%&'()* !"#$%&'()* Safe-Inferred)1=> +bytezap- extension class providing unaligned accesseshoping to get this merged in /https://github.com/haskell/primitive/issues/4099(also includes Addr# primops which that issue/PR may not)Also includes an associated type for size in bytes. Another thing that maybe primitive could provide. (Wouldn't be hard!)-bytezap4Read a value from the array. The offset is in bytes.+,-./012 +,-./012  Safe-Inferred)1=> =bytezap'Newtype for easier instance derivation.CbytezapBoxed types which permit reversing byte order ("byte swapping").Pbytezap-Prim instance where we byte swap at accesses.=?>@BACDCD@BA=?> Safe-Inferred)1=>YbytezapPoke newtype wrapper.\bytezapA struct poker: base address (constant), byte offset, state token.We could combine base address and byte offset, but we're aiming for code that stores the address in a register and uses immediates to access fields (like a good C compiler will do for its structs). So by keeping them separate, I'm hoping that we can nudge GHC towards such behaviour.]bytezap Execute a Y at a fresh  of the given length.^bytezap Execute a Y3 at a pointer. Returns the number of bytes written.The pointer must be a mutable buffer with enough space to hold the poke. Absolutely none of this is checked. Use with caution. Sensible uses:.implementing pokes to ByteStrings and the likeexecuting known-length (!!) pokes to known-length (!!) buffers e.g. together with allocaBytes_bytezapPoke a type via its + instance.`bytezap9The empty poke. Provided here as we can't provide it via .abytezap Sequence two Y/s. We only require the length of the left poke.bbytezapessentially memset Y[Z\]^_`ab \Y[Z]^_`ab Safe-Inferred)1=>ebytezap=Class for holding info on class to use for poking base cases.The type is just used to map to class info. It is never instantiated. By packing  KnownSizeOf into here, we don't need to enforce a type-level solution! Now it's up to you how you want to track your constant lengths.We stay unboxed here because the internals are unboxed, just for convenience. Maybe this is bad, let me know.fbytezapThe state token of our poker.gbytezap.The type class that provides base case poking.9The type class should provide a function that looks like i.hbytezapThe type class that provides poked length (known at compile time).jbytezapGet the poked length of the given type. Unboxed because I felt like it.I think we have to pass a proxy, because of forall limitations on instance signatures. This would be much better with explicit type variables (GHC 9.10 or 9.12).lbytezapWow, look! Nothing! cdejihgfk kejihgfcd  Safe-Inferred)1=>qbytezapPoke newtype wrapper.ubytezap Execute a q at a fresh  of the given length.vbytezap Execute a q at a fresh  of the given maximum length. Does not reallocate if final size is less than estimated.wbytezap Execute a q3 at a pointer. Returns the number of bytes written.The pointer must be a mutable buffer with enough space to hold the poke. Absolutely none of this is checked. Use with caution. Sensible uses:.implementing pokes to ByteStrings and the likeexecuting known-length (!!) pokes to known-length (!!) buffers e.g. together with allocaBytesxbytezapPoke a type via its + instance.{bytezapessentially memset|bytezap$Use a struct poke as a regular poke.To do this, we must associate a constant byte length with an existing poker. Note that pokers don't expose the type of the data they are serializing, so this is a very clumsy operation by itself. You should only be using this when you have such types in scope, and the constant length should be obtained in a sensible manner (e.g.  for generic struct pokers, or your own constant size class if you're doing funky stuff).~bytezap Sequence two qs left-to-right. qsrtuvwxyz{| tqsruvwxyz{|  Safe-Inferred )1=>bytezapA Poke# with the associated size it pokes.bytezap The empty  is the empty Poke, which writes zero bytes.bytezap Sequence the Pokes, sum the sizes.  Safe-Inferred%&)1=>bytezapHelper for writing  runners.bytezapessentially memset    Safe-Inferred )1=>    Safe-Inferred )1=>bytezapPoke a .bytezapPoke a .bytezapPoke a .Adapted from utf8-string.bytezapunsafePokeIndexed pokeAt off n performs n indexed pokes starting from off.Does not check bounds. Largely intended for bytewise pokes where some work needs to be performed for each byte (e.g. escaping text and poking inline). Safe-Inferred )1=>bytezapWrite a .bytezapWrite a .bytezapWrite a .Adapted from utf8-string. Safe-Inferred )1=> Safe-Inferred )1=>!ebytezap0Reify a type-level byte (stored in a type-level  ) to its .Attempting to reify a ) larger than 255 results in a type error.bytezapReify 8 type-level bytes to a .bytezapReify 4 type-level bytes to a .bytezapReify 2 type-level bytes to a . Safe-Inferred)1=>$J bytezap0Serialize a type-level bytestring, byte-by-byte.bytezap4Serialize a type-level bytestring, largest grouping Word32.bytezap4Serialize a type-level bytestring, largest grouping Word32.bytezap4Serialize a type-level bytestring, largest grouping Word64.bytezapEnough bytes to make a Word64.bytezapEnough bytes to make a Word32.bytezap Try to group Word32s next.bytezapEnough bytes to make a Word16.bytezap Try to group Word16s next.bytezapEnd of the line.bytezapReify the next byte.bytezapReify byte-by-byte next. Safe-Inferred )1=>$ Safe-Inferred )1=>$ !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYYZ[[\],^_`abcdefghijklmnopqrrstuvwxyz{|}~ r r s t u  v w   z            w   z                w bytezap-1.1.0-inplace"Raehik.Compat.Data.Primitive.TypesRaehik.Compat.Data.Int.ByteSwap Raehik.Compat.Data.Word.ByteSwap*Raehik.Compat.GHC.Exts.GHC908MemcpyPrimops1Raehik.Compat.GHC.Exts.GHC910UnalignedAddrPrimops)Raehik.Compat.Data.Primitive.Types.EndianBytezap.StructBytezap.Struct.Generic Bytezap.PokeBytezap.Write.Internal Bytezap.WriteBytezap.Poke.Derived.EndianBytezap.Poke.DerivedBytezap.Write.DerivedBytezap.Poke.JsonRaehik.TypeLevelBytesBytezap.Struct.TypeLits Util.TypeNatsBytezap.Poke.KnownLenbytezapBytezap Paths_bytezapMonoidempty KnownSizeOf(primitive-0.8.0.0-BcoUEAnXhk925AP6fFV7UeData.Primitive.TypesPrimsizeOf# alignment#indexByteArray#readByteArray#writeByteArray# setByteArray# indexOffAddr# readOffAddr# writeOffAddr# setOffAddr#sizeOf byteSwapI16 byteSwapI32 byteSwapI64 byteSwapIbyteSwapcopyAddrToAddrNonOverlapping# setAddrRange#indexWord8OffAddrAsWord16#readWord8OffAddrAsWord16#writeWord8OffAddrAsWord16#indexWord8OffAddrAsWord32#readWord8OffAddrAsWord32#writeWord8OffAddrAsWord32#indexWord8OffAddrAsWord64#readWord8OffAddrAsWord64#writeWord8OffAddrAsWord64#indexWord8OffAddrAsWord#readWord8OffAddrAsWord#writeWord8OffAddrAsWord#indexWord8OffAddrAsInt16#readWord8OffAddrAsInt16#writeWord8OffAddrAsInt16#indexWord8OffAddrAsInt32#readWord8OffAddrAsInt32#writeWord8OffAddrAsInt32#indexWord8OffAddrAsInt64#readWord8OffAddrAsInt64#writeWord8OffAddrAsInt64#indexWord8OffAddrAsInt#readWord8OffAddrAsInt#writeWord8OffAddrAsInt#Prim'SizeOfindexWord8ByteArrayAs#readWord8ByteArrayAs#writeWord8ByteArrayAs#indexWord8OffAddrAs#readWord8OffAddrAs#writeWord8OffAddrAs# $fPrim'Int $fPrim'Word $fPrim'Int64 $fPrim'Int32 $fPrim'Int16 $fPrim'Int8 $fPrim'Word64 $fPrim'Word32 $fPrim'Word16 $fPrim'Word8PrimByteSwappedunPrimByteSwapped ByteOrdered unByteOrderedByteSwap$fByteSwapDouble$fByteSwapFloat $fByteSwapInt$fByteSwapInt64$fByteSwapInt32$fByteSwapInt16$fByteSwapWord$fByteSwapWord64$fByteSwapWord32$fByteSwapWord16$fPrim'PrimByteSwapped$fPrimPrimByteSwapped$fOrdByteOrdered$fEqByteOrdered$fShowByteOrdered$fNumByteOrdered$fPrim'ByteOrdered$fPrimByteOrdered$fPrim'ByteOrdered0$fPrimByteOrdered0PokeunPokePoke#unsafeRunPokeBS unsafeRunPokeprim emptyPoke sequencePokes replicateByteGPokegPoke GPokeBase GPokeBaseSt GPokeBaseC KnownSizeOf' gPokeBasesizeOf'UnwrapGenericS1$fGPokekkidxU1$fGPokekkidxM1$fGPokekkidx:*:$fGPokekkidxM10$fGPokekkidxM11unsafeRunPokeBSUptoN byteString byteArray#fromStructPoke $fMonoidPoke$fSemigroupPokeWritesizepoke $fMonoidWrite$fSemigroupWrite runWriteBSrunWriteBSUptoNw16lew16bew32lew32bew64lew64bei16lei16bei32lei32bei64lei64beshortByteStringtextcharunsafePokeIndexedc_lower_hex_tableescapedLength8escapeW8pokeEscapedTextUnquoted pokeEscapeW8 w8AsciiHexReifyW8reifyW8reifyW64reifyW32reifyW16 $fReifyW8255 $fReifyW8254 $fReifyW8253 $fReifyW8252 $fReifyW8251 $fReifyW8250 $fReifyW8249 $fReifyW8248 $fReifyW8247 $fReifyW8246 $fReifyW8245 $fReifyW8244 $fReifyW8243 $fReifyW8242 $fReifyW8241 $fReifyW8240 $fReifyW8239 $fReifyW8238 $fReifyW8237 $fReifyW8236 $fReifyW8235 $fReifyW8234 $fReifyW8233 $fReifyW8232 $fReifyW8231 $fReifyW8230 $fReifyW8229 $fReifyW8228 $fReifyW8227 $fReifyW8226 $fReifyW8225 $fReifyW8224 $fReifyW8223 $fReifyW8222 $fReifyW8221 $fReifyW8220 $fReifyW8219 $fReifyW8218 $fReifyW8217 $fReifyW8216 $fReifyW8215 $fReifyW8214 $fReifyW8213 $fReifyW8212 $fReifyW8211 $fReifyW8210 $fReifyW8209 $fReifyW8208 $fReifyW8207 $fReifyW8206 $fReifyW8205 $fReifyW8204 $fReifyW8203 $fReifyW8202 $fReifyW8201 $fReifyW8200 $fReifyW8199 $fReifyW8198 $fReifyW8197 $fReifyW8196 $fReifyW8195 $fReifyW8194 $fReifyW8193 $fReifyW8192 $fReifyW8191 $fReifyW8190 $fReifyW8189 $fReifyW8188 $fReifyW8187 $fReifyW8186 $fReifyW8185 $fReifyW8184 $fReifyW8183 $fReifyW8182 $fReifyW8181 $fReifyW8180 $fReifyW8179 $fReifyW8178 $fReifyW8177 $fReifyW8176 $fReifyW8175 $fReifyW8174 $fReifyW8173 $fReifyW8172 $fReifyW8171 $fReifyW8170 $fReifyW8169 $fReifyW8168 $fReifyW8167 $fReifyW8166 $fReifyW8165 $fReifyW8164 $fReifyW8163 $fReifyW8162 $fReifyW8161 $fReifyW8160 $fReifyW8159 $fReifyW8158 $fReifyW8157 $fReifyW8156 $fReifyW8155 $fReifyW8154 $fReifyW8153 $fReifyW8152 $fReifyW8151 $fReifyW8150 $fReifyW8149 $fReifyW8148 $fReifyW8147 $fReifyW8146 $fReifyW8145 $fReifyW8144 $fReifyW8143 $fReifyW8142 $fReifyW8141 $fReifyW8140 $fReifyW8139 $fReifyW8138 $fReifyW8137 $fReifyW8136 $fReifyW8135 $fReifyW8134 $fReifyW8133 $fReifyW8132 $fReifyW8131 $fReifyW8130 $fReifyW8129 $fReifyW8128 $fReifyW8127 $fReifyW8126 $fReifyW8125 $fReifyW8124 $fReifyW8123 $fReifyW8122 $fReifyW8121 $fReifyW8120 $fReifyW8119 $fReifyW8118 $fReifyW8117 $fReifyW8116 $fReifyW8115 $fReifyW8114 $fReifyW8113 $fReifyW8112 $fReifyW8111 $fReifyW8110 $fReifyW8109 $fReifyW8108 $fReifyW8107 $fReifyW8106 $fReifyW8105 $fReifyW8104 $fReifyW8103 $fReifyW8102 $fReifyW8101 $fReifyW8100 $fReifyW899 $fReifyW898 $fReifyW897 $fReifyW896 $fReifyW895 $fReifyW894 $fReifyW893 $fReifyW892 $fReifyW891 $fReifyW890 $fReifyW889 $fReifyW888 $fReifyW887 $fReifyW886 $fReifyW885 $fReifyW884 $fReifyW883 $fReifyW882 $fReifyW881 $fReifyW880 $fReifyW879 $fReifyW878 $fReifyW877 $fReifyW876 $fReifyW875 $fReifyW874 $fReifyW873 $fReifyW872 $fReifyW871 $fReifyW870 $fReifyW869 $fReifyW868 $fReifyW867 $fReifyW866 $fReifyW865 $fReifyW864 $fReifyW863 $fReifyW862 $fReifyW861 $fReifyW860 $fReifyW859 $fReifyW858 $fReifyW857 $fReifyW856 $fReifyW855 $fReifyW854 $fReifyW853 $fReifyW852 $fReifyW851 $fReifyW850 $fReifyW849 $fReifyW848 $fReifyW847 $fReifyW846 $fReifyW845 $fReifyW844 $fReifyW843 $fReifyW842 $fReifyW841 $fReifyW840 $fReifyW839 $fReifyW838 $fReifyW837 $fReifyW836 $fReifyW835 $fReifyW834 $fReifyW833 $fReifyW832 $fReifyW831 $fReifyW830 $fReifyW829 $fReifyW828 $fReifyW827 $fReifyW826 $fReifyW825 $fReifyW824 $fReifyW823 $fReifyW822 $fReifyW821 $fReifyW820 $fReifyW819 $fReifyW818 $fReifyW817 $fReifyW816 $fReifyW815 $fReifyW814 $fReifyW813 $fReifyW812 $fReifyW811 $fReifyW810 $fReifyW89 $fReifyW88 $fReifyW87 $fReifyW86 $fReifyW85 $fReifyW84 $fReifyW83 $fReifyW82 $fReifyW81 $fReifyW80 ReifyBytesW8 reifyBytesW8 ReifyBytesW16 reifyBytesW16 ReifyBytesW32 reifyBytesW32 ReifyBytesW64 reifyBytesW64$fReifyBytesW64:$fReifyBytesW32:$fReifyBytesW64ns$fReifyBytesW16:$fReifyBytesW32ns$fReifyBytesW8[]$fReifyBytesW8:$fReifyBytesW16nsnatVal'' natValInt PokeKnownLenunPokeKnownLenmappend'mempty'runPokeKnownLenBSversion getBinDir getLibDir getDynLibDir getDataDir getLibexecDirgetDataFileName getSysconfDirbytestring-0.11.5.3Data.ByteString.Internal.Type ByteString runWriteWithData.ByteString.Short.InternalShortByteString text-2.0.2Data.Text.InternalTextghc-prim GHC.TypesChar ghc-bignumGHC.Num.NaturalNaturalbaseGHC.WordWord8Word64Word32Word16