úÎUlQ    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. ' maxBy cmp x y returns the larger of x and y by the specified comparator. (lexCompare cmp1 cmp2; gives a comparator that lexicographically orders first by cmp1 then by cmp2. )*+,- ./"#$%&'()+, "#$%&'()+, 0IasPureArray is a simple syntax to force an ambiguous array to a standard 1. 2 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. 3 listToArray' n l is a version of 2( used when the array size is foreknown. 4$Shorthand for the size of an array. 5<A lookup function that also forces its array argument to an 1. 6&An unsafe lookup function on standard 1/ types that does not range-check its argument. 7A memoization function. )An arbitrary function on integer values. n A function on integers from 0 to n-1 that memoizes its values. 8'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. 9;Given a list and its length, memoizes lookups on the list. 023456789 023456789%:WThe 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. ;<=>?@ABCDEFGHIJKLMNOPQRbGiven 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. SSGiven 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.      T      !"#$%&'()*+,-./012345$67$689$:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^rangemin-1.0.3 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 splitEvery unfoldrFBscanlFBtailerFBscanl1FBmebbescanrFBscanr1FB mapAccumLFB mapAccumRFB flattenFBintLogceilLog floor2Powdoublepow2divCeilmodCeilbaseGHC.RealmodononPair.:switch comparing orderPairBy orderPairminBymaxBy lexCompare lexComparingminimax listRangeBy listRange listRangeWith Data.List minimumBy maximumBy asPureArrayGHC.ArrArray listToArray listToArray' arraySize pureLookuppureUnsafeLookup unsafeMemoizeunsafeMemoize' listLookup' RangeMinValoffset unsafeLookupassocs'blockify blockify'unsafeLookupArrayrangeMin3CommonrangeMin3Internal rangeMin3By rangeMin3rangeMin2CommonrangeMin2Internal rangeMin2By' rangeMin2By rangeMin2blockedRangeMinrangeMinsAndMinsrangeMin1CommonrangeMin1Internal rangeMin1By rangeMin1 rangeMinFuncinternalRangeMinByinternalRangeMin lcaTraversal