úÎWüS;    splitEvery n l is equivalent to :map (take n) (takeWhile (not . null) (iterate (drop n) l)), so  splitEvery n [x1,x2,..,xm] = [[x1,x2,..,x(n-1)],[xn,x(n+1),..,x(2n-1)] ,..,[..xm]]It is a good producer in the fold/build5 sense, but not a good consumer; the author believes  this is unavoidable.   is equivalent to floor . logBase 2<, but uses heavy bit manipulation to achieve maximum speed.  is equivalent to ceiling . logBase 2<, but uses heavy bit manipulation to achieve maximum speed.  is equivalent to  bit . intLog.  !!# is (unsurprisingly) equivalent to (2*). ""1 uses bit shifting to quickly find a power of 2. #a # b is equivalent to  ceiling (a / b)", but uses integer division only. $a $ b is equivalent to  let m = a % b in if m == 0 then b else m.  !"#$  !"#$&(f & g) x y is equivalent to  f (g x) (g y). 'onPair f (x, y) is equivalent to  (f x, f y). ( (f .: g) x y is equivalent to  f (g x y). ) switch x y p is equivalent to if p then x else y. *&'()*&'()* +7A handy shorthand for a frequently occurring function. ,comparing f (x y) is equivalent to compare (f x) (f y). -orderPairBy cmp (x, y) is equivalent to (if cmp x y == GT then (y, x) else (x, y). .orderPairBy cmp (x, y) is equivalent to if x <= y then (y, x) else (x, y). / minBy cmp x y returns the smaller of x and y by the specified comparator. 0 maxBy cmp x y returns the larger of x and y by the specified comparator. 1lexCompare cmp1 cmp2; gives a comparator that lexicographically orders first by cmp1 then by cmp2. 23456 78+,-./01245 +,-./01245 9:;IasPureArray is a simple syntax to force an ambiguous array to a standard <. = listToArray- converts a list to an arbitrary array type. A list of arbitrary elements. DA zero-indexed array containing precisely the elements of the list. >$Shorthand for the size of an array. ?<A lookup function that also forces its array argument to an <. @&An unsafe lookup function on standard </ types that does not range-check its argument. AA memoization function. K unsafeMemoize :: (Int -> e) -- ^ An arbitrary function on integer values.  -> Int -- ^ n 2 -> (Int -> e) -- ^ A function on integers from 0 to n-1 that memoizes its values. & unsafeMemoize f (n+1) = unsafeMemoize' f n 'A memoization function that indexes to n inclusive. )An arbitrary function on integer values. n A function on integers from 0 to n that memoizes its values. BCDeGiven a list and its length, memoizes lookups on the list. An attempt to process a list longer than / the specified size will result in a segfault. ;?AD;?AD#EFGHIJKWThe type of a range-min function. Takes as an argument a range of indices and returns ? the position and value of the smallest element in that range. LMNOPQRSTUVWXYZ[bGiven a comparator, an index range and a list of elements in index order, returns a function that q takes two indices and returns the index and the value at the minimum value between those two indices inclusive. #A comparator function on elements.  Index range. !List of elements in index order. LGiven a subrange, returns the index and value at the minimum in that range.  A version of * on elements with their default ordering.  Index range. !List of elements in index order. LGiven a subrange, returns the index and value at the minimum in that range. [Given a comparator and an array, returns a function that takes a subrange of the array and ? returns the index and value at the minimum in that subrange. NOT necessarily faster than , T primarily because most of the algorithms used are based upon careful list folding. #A comparator function on elements. An array of elements. LGiven a subrange, returns the index and value at the minimum in that range.  A version of * on elements with their default ordering. \SGiven an indexing function on node labels, returns a function that takes two node ? labels and returns the label of their lowest common ancestor. =An index on tree labels so they can be indexed on an array. : Need not account for every node label, hence the Maybe. "Bounds on indices of tree labels. 8The tree to provide lowest-common-ancestor service for. JGiven two node labels, returns the label of their lowest common ancestor. ‚Given an indexing function on node labels, returns a function that takes two indices and returns the label of the associated nodes' lowest common ancestor. =An index on tree labels, so they can be indexed in an array. 9 Need not account for every node label, hence the Maybe. "Bounds on indices of tree labels. 8The tree to provide lowest-common-ancestor service for. ;Given two indices, return the label of the associated nodes' lowest common ancestor. Q The behavior of this method is not specified if these indices do not correspond  to any trees. qGiven a tree of indexed nodes, returns a function that takes two nodes and returns their lowest common ancestor. Bounds on node labels. 8The tree to provide lowest-common-ancestor service for. ]A function that takes two node labels and returns the label of their lowest common ancestor.     ]      !"#$%&'()*+,-./0123456789:;<=>,?@,?ABCD,EFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcderangemin-1.0.6 Data.RangeMin Data.RangeMin.Internal.HandyList#Data.RangeMin.Internal.HandyNumeric"Data.RangeMin.Internal.Combinators$Data.RangeMin.Internal.HandyOrdering!Data.RangeMin.Internal.HandyArray ComparatorRangeMin rangeMinBy' rangeMin' rangeMinByrangeMin rangeMinByM rangeMinMlowestCommonAncestorBylowestCommonAncestorBy'lowestCommonAncestor BlockAccumBA consecutives splitEvery splitEvery' unfoldrFBscanlFBtailerFBscanl1FBmebbescanrFBscanr1FB mapAccumLFB mapAccumRFB flattenFB unckdEFIntFB unckdEFDIntFBintLogceilLog floor2PowisPow2ceil2Powdoublepow2divCeilmodCeilbaseGHC.RealmodononPair.:switchboth comparing orderPairBy orderPairminBymaxBy lexCompare lexComparingminimax listRangeBy listRange listRangeWith Data.List minimumBy maximumByAccA asPureArrayGHC.ArrArray listToArray arraySize pureLookuppureUnsafeLookupunsafeMemoize#memoizerlistLookerUpper listLookup'IntAccumIA IntAccum1IA1 RangeMinValoffset rangeSizeindexassocs'blockifyrangeMin3CommonrangeMin3InternalrangeMin2CommonrangeMin2Internal rangeMin2By'blockedRangeMinrangeMin1CommonrangeMin1Internal rangeMinFuncinternalRangeMinByinternalRangeMin lcaTraversal