Bw=      !"#$%&'()*+,-./0123456789:;< NoneB =>?@ABCDEFGH @ABCDEFGH =>?@ABCDEFGHNoneBICache line size, in bytesJKLMNOPQIRSTUV JKMNOPRSTUV JKLMNOPQIRSTUVNoneWXYZWXYWXY None[\]^_`abcdefg default valuenew sizenumber of elements to copy old arrayhijklmnopqrsabcdefghijklmnopq[\]^_`abcdefghijklmnopqrs NoneBtLWhat you have to mask an integer index by to tell if it's cacheline-aligneduvwtxyz{|}~uvwtxy~uvwtxyz{|}~ None B(Returns 0 if x is positive, -1 otherwiseAbs of an integer, branchless Returns 0xfff..fff (aka -1) if a == b, 0 otherwise.^Search through a mutable vector for a given int value, cache-line aligned. If the start index is cache-line aligned, and there is more than a cache-line's room between the start index and the end of the vector, we will search the cache-line all at once using an efficient branchless bit-twiddling technique. Otherwise, we will use a typical loop.iSearch through a mutable vector for one of two given int values, cache-line aligned. If the start index is cache-line aligned, and there is more than a cache-line's room between the start index and the end of the vector, we will search the cache-line all at once using an efficient branchless bit-twiddling technique. Otherwise, we will use a typical loop.kSearch through a mutable vector for one of three given int values, cache-line aligned. If the start index is cache-line aligned, and there is more than a cache-line's room between the start index and the end of the vector, we will search the cache-line all at once using an efficient branchless bit-twiddling technique. Otherwise, we will use a typical loop.vector to search start indexvalue to search for7dest index where it can be found, or "-1" if not foundvector to search start indexvalue to search forvalue 2 to search for7dest index where it can be found, or "-1" if not foundvector to search start indexvalue to search forvalue 2 to search forvalue 3 to search for7dest index where it can be found, or "-1" if not found  None Safe #A typeclass for hash tables in the V monad. The operations on these hash tables are typically both key- and value-strict.)Creates a new, default-sized hash table. O(1).'Creates a new hash table sized to hold n elements. O(n).\Inserts a key/value mapping into a hash table, replacing any existing mapping for that key.O(n) worst case, O(1) amortized./Deletes a key-value mapping from a hash table. O(n) worst case, O(1) amortized..Looks up a key-value mapping in a hash table. O(n) worst case, (O(1) for cuckoo hash), O(1) amortized.@A strict fold over the key-value records of a hash table in the  monad. O(n).BA side-effecting map over the key-value records of a hash table. O(n).Computes the overhead (in words) per key-value mapping. Used for debugging, etc; time complexity depends on the underlying hash table implementation. O(n). 4Create a hash table from a list of key-value pairs. O(n). FCreate a hash table from a list of key-value pairs, with a size hint. O(n). 7Given a hash table, produce a list of key-value pairs. O(n).     NoneB O2-element array, stores how many entries and deleted entries are in the table. 3An open addressing hash table using linear probing. ,See the documentation for this function in Data.HashTable.Class#v:new.,See the documentation for this function in Data.HashTable.Class#v:newSized.,See the documentation for this function in Data.HashTable.Class#v:delete.,See the documentation for this function in Data.HashTable.Class#v:lookup.,See the documentation for this function in Data.HashTable.Class#v:insert.,See the documentation for this function in Data.HashTable.Class#v:foldM.,See the documentation for this function in Data.HashTable.Class#v:mapM_.,See the documentation for this function in &Data.HashTable.Class#v:computeOverhead.0   &  NoneB 8in buckets, total size is numElemsInCacheLine * _sizeA cuckoo hash table.,See the documentation for this function in Data.HashTable.Class#v:new.,See the documentation for this function in Data.HashTable.Class#v:newSized.,See the documentation for this function in Data.HashTable.Class#v:insert.,See the documentation for this function in &Data.HashTable.Class#v:computeOverhead.,See the documentation for this function in Data.HashTable.Class#v:delete.,See the documentation for this function in Data.HashTable.Class#v:lookup.,See the documentation for this function in Data.HashTable.Class#v:foldM. ,See the documentation for this function in Data.HashTable.Class#v:mapM_.*  hash tableare we updating?keycache line start address 1cache line start address 2hash1hash2 hash table hash code 1 hash code 2 cache line 1 cache line 2keyvalue!"  " !"NoneBOT #A linear hash table.$,See the documentation for this function in Data.HashTable.Class#v:new.%,See the documentation for this function in Data.HashTable.Class#v:newSized.&,See the documentation for this function in Data.HashTable.Class#v:delete.',See the documentation for this function in Data.HashTable.Class#v:lookup.(,See the documentation for this function in Data.HashTable.Class#v:insert.),See the documentation for this function in Data.HashTable.Class#v:mapM_.*,See the documentation for this function in Data.HashTable.Class#v:foldM.+,See the documentation for this function in &Data.HashTable.Class#v:computeOverhead.#$%&'()*+,- #$%&'()*+ #$%&'()*+#$%&'()*+,-NoneCT./A type alias for our hash tables, which run in ST", to set the state token type to   (aka  RealWorld) so that we can use them in ./,A type alias for the linear hash table. See Data.HashTable.ST.Linear.0,A type alias for the cuckoo hash table. See Data.HashTable.ST.Cuckoo.1OA type alias for a basic open addressing hash table using linear probing. See Data.HashTable.ST.Basic.2+See the documentation for this function in Data.HashTable.Class#v:new.3,See the documentation for this function in Data.HashTable.Class#v:newSized.4+See the documentation for this function in Data.HashTable.Class#v:insert.5+See the documentation for this function in Data.HashTable.Class#v:delete.6+See the documentation for this function in Data.HashTable.Class#v:lookup.7,See the documentation for this function in Data.HashTable.Class#v:fromList.8,See the documentation for this function in +Data.HashTable.Class#v:fromListWithSizeHint.9+See the documentation for this function in Data.HashTable.Class#v:toList.:+See the documentation for this function in Data.HashTable.Class#v:foldM.;+See the documentation for this function in Data.HashTable.Class#v:mapM_.<,See the documentation for this function in &Data.HashTable.Class#v:computeOverhead../0123456789:;<./0123456789:;<10/.23456789;:<./0123456789:;<     !"#$%&'()*+,-./0123456789:678;<= > ? @ A B C ? D E F G H I J K L M       N O P Q - R S T U V W X Y Z [ \ ] ^ _ ` a bcde f g h i j k l m n o p q r s t u v w x y z { | } ~ ~  c BCO BCO DO;)hashtables-1.2.1.0-5KfyleD814C26mncEt1Ul2Data.HashTable.ClassData.HashTable.ST.BasicData.HashTable.ST.CuckooData.HashTable.ST.LinearData.HashTable.IO$Data.HashTable.Internal.UnsafeTricks Data.HashTable.Internal.IntArrayData.HashTable.Internal.Array%Data.HashTable.Internal.Linear.BucketData.HashTable.Internal.Utils!Data.HashTable.Internal.CacheLine2Data.HashTable.Internal.CheapPseudoRandomBitStream HashTablenewnewSizedinsertdeletelookupfoldMmapM_computeOverheadfromListfromListWithSizeHinttoList $fMonoidSlot$fShowHashTable$fHashTableHashTable $fShowSlot IOHashTableLinearHashTableCuckooHashTableBasicHashTable TombStone EmptyElementDeletedElementKey emptyRecord deletedRecord keyIsEmpty keyIsDeletedtoKeyfromKeymakeEmptyVectorwriteDeletedElement cacheLineSizeElemIntArrayIAprimWordToElem elemToInt elemToInt#elemMaskwordSizeInBytesnewArray readArray writeArraylengthtoPtr'primitive-0.6.1.0-Ip44DqhfCp21tTUYbecwaData.Primitive.Array MutableArrayBucket_Bucket _bucketSize _highwater_keys_valuesbucketSplitSizenewBucketArraynelemsAndOverheadInWords emptyWithSize newBucketSize expandArrayexpandBucketArray growBucketTosnocsizemovedebugcacheLineIntMaskwordSizenumElemsInCacheLinecacheLineIntBits whichBucket binarySearchbinarySearchBybinarySearchByBounds primeSizes nextBestPrimebumpSizeshiftLshiftRLiShiftLiShiftRLnextHighestPowerOf2log2highestBitMask forceSameTypebaseGHC.IO unsafeIOToSTsign#bl_abs#mask#cacheLineSearchcacheLineSearch2cacheLineSearch3prefetchCacheLine_writeprefetchCacheLine_readc_forwardSearch_3c_forwardSearch_2c_lineSearch_3c_lineSearch_2 c_lineSearchfI prefetchRead prefetchWriteforwardSearch2forwardSearch3 lineSearch lineSearch2 lineSearch3advanceByCacheLineSizeisCacheLineAlignedmaskw# BitStream _curRandom _bitsLeft _randomPos random32s random64s numRandomsrandoms newBitStream getNextBitgetNBitsGHC.STST_loadSlot_slot _wasDeleted HashTable__size_hashesSizeRefsHTintSzreadLoad writeLoad readDelLoad writeDelLoad newSizeRefs newSizedReal insertRecord checkOverflow rehashAll growTabledelete'maxLoad emptyMarker deletedMarker recordIsEmptyrecordIsDeletedhash hashToElemnewRefwriteRefreadRef_rng _maxAttemptslookup' searchOne foldMWorkmapMWorkinsert' updateOrFail cuckooOrFailgrow hashPrimehash1hash2 bumpFactor whichLine_level _splitptr_bucketssplitprimitiveInsertprimitiveInsert' fillFactorpower2hashKey hashAtLvlControl.Monad.Primitive PrimStateghc-prim GHC.TypesIO