1 line
49 KiB
JSON
1 line
49 KiB
JSON
{"ast":null,"code":"import \"core-js/modules/es.error.cause.js\";\nvar DEFAULT_MIN_MERGE = 32;\nvar DEFAULT_MIN_GALLOPING = 7;\nvar DEFAULT_TMP_STORAGE_LENGTH = 256;\n\nfunction minRunLength(n) {\n var r = 0;\n\n while (n >= DEFAULT_MIN_MERGE) {\n r |= n & 1;\n n >>= 1;\n }\n\n return n + r;\n}\n\nfunction makeAscendingRun(array, lo, hi, compare) {\n var runHi = lo + 1;\n\n if (runHi === hi) {\n return 1;\n }\n\n if (compare(array[runHi++], array[lo]) < 0) {\n while (runHi < hi && compare(array[runHi], array[runHi - 1]) < 0) {\n runHi++;\n }\n\n reverseRun(array, lo, runHi);\n } else {\n while (runHi < hi && compare(array[runHi], array[runHi - 1]) >= 0) {\n runHi++;\n }\n }\n\n return runHi - lo;\n}\n\nfunction reverseRun(array, lo, hi) {\n hi--;\n\n while (lo < hi) {\n var t = array[lo];\n array[lo++] = array[hi];\n array[hi--] = t;\n }\n}\n\nfunction binaryInsertionSort(array, lo, hi, start, compare) {\n if (start === lo) {\n start++;\n }\n\n for (; start < hi; start++) {\n var pivot = array[start];\n var left = lo;\n var right = start;\n var mid;\n\n while (left < right) {\n mid = left + right >>> 1;\n\n if (compare(pivot, array[mid]) < 0) {\n right = mid;\n } else {\n left = mid + 1;\n }\n }\n\n var n = start - left;\n\n switch (n) {\n case 3:\n array[left + 3] = array[left + 2];\n\n case 2:\n array[left + 2] = array[left + 1];\n\n case 1:\n array[left + 1] = array[left];\n break;\n\n default:\n while (n > 0) {\n array[left + n] = array[left + n - 1];\n n--;\n }\n\n }\n\n array[left] = pivot;\n }\n}\n\nfunction gallopLeft(value, array, start, length, hint, compare) {\n var lastOffset = 0;\n var maxOffset = 0;\n var offset = 1;\n\n if (compare(value, array[start + hint]) > 0) {\n maxOffset = length - hint;\n\n while (offset < maxOffset && compare(value, array[start + hint + offset]) > 0) {\n lastOffset = offset;\n offset = (offset << 1) + 1;\n\n if (offset <= 0) {\n offset = maxOffset;\n }\n }\n\n if (offset > maxOffset) {\n offset = maxOffset;\n }\n\n lastOffset += hint;\n offset += hint;\n } else {\n maxOffset = hint + 1;\n\n while (offset < maxOffset && compare(value, array[start + hint - offset]) <= 0) {\n lastOffset = offset;\n offset = (offset << 1) + 1;\n\n if (offset <= 0) {\n offset = maxOffset;\n }\n }\n\n if (offset > maxOffset) {\n offset = maxOffset;\n }\n\n var tmp = lastOffset;\n lastOffset = hint - offset;\n offset = hint - tmp;\n }\n\n lastOffset++;\n\n while (lastOffset < offset) {\n var m = lastOffset + (offset - lastOffset >>> 1);\n\n if (compare(value, array[start + m]) > 0) {\n lastOffset = m + 1;\n } else {\n offset = m;\n }\n }\n\n return offset;\n}\n\nfunction gallopRight(value, array, start, length, hint, compare) {\n var lastOffset = 0;\n var maxOffset = 0;\n var offset = 1;\n\n if (compare(value, array[start + hint]) < 0) {\n maxOffset = hint + 1;\n\n while (offset < maxOffset && compare(value, array[start + hint - offset]) < 0) {\n lastOffset = offset;\n offset = (offset << 1) + 1;\n\n if (offset <= 0) {\n offset = maxOffset;\n }\n }\n\n if (offset > maxOffset) {\n offset = maxOffset;\n }\n\n var tmp = lastOffset;\n lastOffset = hint - offset;\n offset = hint - tmp;\n } else {\n maxOffset = length - hint;\n\n while (offset < maxOffset && compare(value, array[start + hint + offset]) >= 0) {\n lastOffset = offset;\n offset = (offset << 1) + 1;\n\n if (offset <= 0) {\n offset = maxOffset;\n }\n }\n\n if (offset > maxOffset) {\n offset = maxOffset;\n }\n\n lastOffset += hint;\n offset += hint;\n }\n\n lastOffset++;\n\n while (lastOffset < offset) {\n var m = lastOffset + (offset - lastOffset >>> 1);\n\n if (compare(value, array[start + m]) < 0) {\n offset = m;\n } else {\n lastOffset = m + 1;\n }\n }\n\n return offset;\n}\n\nfunction TimSort(array, compare) {\n var minGallop = DEFAULT_MIN_GALLOPING;\n var length = 0;\n var tmpStorageLength = DEFAULT_TMP_STORAGE_LENGTH;\n var stackLength = 0;\n var runStart;\n var runLength;\n var stackSize = 0;\n length = array.length;\n\n if (length < 2 * DEFAULT_TMP_STORAGE_LENGTH) {\n tmpStorageLength = length >>> 1;\n }\n\n var tmp = [];\n stackLength = length < 120 ? 5 : length < 1542 ? 10 : length < 119151 ? 19 : 40;\n runStart = [];\n runLength = [];\n\n function pushRun(_runStart, _runLength) {\n runStart[stackSize] = _runStart;\n runLength[stackSize] = _runLength;\n stackSize += 1;\n }\n\n function mergeRuns() {\n while (stackSize > 1) {\n var n = stackSize - 2;\n\n if (n >= 1 && runLength[n - 1] <= runLength[n] + runLength[n + 1] || n >= 2 && runLength[n - 2] <= runLength[n] + runLength[n - 1]) {\n if (runLength[n - 1] < runLength[n + 1]) {\n n--;\n }\n } else if (runLength[n] > runLength[n + 1]) {\n break;\n }\n\n mergeAt(n);\n }\n }\n\n function forceMergeRuns() {\n while (stackSize > 1) {\n var n = stackSize - 2;\n\n if (n > 0 && runLength[n - 1] < runLength[n + 1]) {\n n--;\n }\n\n mergeAt(n);\n }\n }\n\n function mergeAt(i) {\n var start1 = runStart[i];\n var length1 = runLength[i];\n var start2 = runStart[i + 1];\n var length2 = runLength[i + 1];\n runLength[i] = length1 + length2;\n\n if (i === stackSize - 3) {\n runStart[i + 1] = runStart[i + 2];\n runLength[i + 1] = runLength[i + 2];\n }\n\n stackSize--;\n var k = gallopRight(array[start2], array, start1, length1, 0, compare);\n start1 += k;\n length1 -= k;\n\n if (length1 === 0) {\n return;\n }\n\n length2 = gallopLeft(array[start1 + length1 - 1], array, start2, length2, length2 - 1, compare);\n\n if (length2 === 0) {\n return;\n }\n\n if (length1 <= length2) {\n mergeLow(start1, length1, start2, length2);\n } else {\n mergeHigh(start1, length1, start2, length2);\n }\n }\n\n function mergeLow(start1, length1, start2, length2) {\n var i = 0;\n\n for (i = 0; i < length1; i++) {\n tmp[i] = array[start1 + i];\n }\n\n var cursor1 = 0;\n var cursor2 = start2;\n var dest = start1;\n array[dest++] = array[cursor2++];\n\n if (--length2 === 0) {\n for (i = 0; i < length1; i++) {\n array[dest + i] = tmp[cursor1 + i];\n }\n\n return;\n }\n\n if (length1 === 1) {\n for (i = 0; i < length2; i++) {\n array[dest + i] = array[cursor2 + i];\n }\n\n array[dest + length2] = tmp[cursor1];\n return;\n }\n\n var _minGallop = minGallop;\n var count1;\n var count2;\n var exit;\n\n while (1) {\n count1 = 0;\n count2 = 0;\n exit = false;\n\n do {\n if (compare(array[cursor2], tmp[cursor1]) < 0) {\n array[dest++] = array[cursor2++];\n count2++;\n count1 = 0;\n\n if (--length2 === 0) {\n exit = true;\n break;\n }\n } else {\n array[dest++] = tmp[cursor1++];\n count1++;\n count2 = 0;\n\n if (--length1 === 1) {\n exit = true;\n break;\n }\n }\n } while ((count1 | count2) < _minGallop);\n\n if (exit) {\n break;\n }\n\n do {\n count1 = gallopRight(array[cursor2], tmp, cursor1, length1, 0, compare);\n\n if (count1 !== 0) {\n for (i = 0; i < count1; i++) {\n array[dest + i] = tmp[cursor1 + i];\n }\n\n dest += count1;\n cursor1 += count1;\n length1 -= count1;\n\n if (length1 <= 1) {\n exit = true;\n break;\n }\n }\n\n array[dest++] = array[cursor2++];\n\n if (--length2 === 0) {\n exit = true;\n break;\n }\n\n count2 = gallopLeft(tmp[cursor1], array, cursor2, length2, 0, compare);\n\n if (count2 !== 0) {\n for (i = 0; i < count2; i++) {\n array[dest + i] = array[cursor2 + i];\n }\n\n dest += count2;\n cursor2 += count2;\n length2 -= count2;\n\n if (length2 === 0) {\n exit = true;\n break;\n }\n }\n\n array[dest++] = tmp[cursor1++];\n\n if (--length1 === 1) {\n exit = true;\n break;\n }\n\n _minGallop--;\n } while (count1 >= DEFAULT_MIN_GALLOPING || count2 >= DEFAULT_MIN_GALLOPING);\n\n if (exit) {\n break;\n }\n\n if (_minGallop < 0) {\n _minGallop = 0;\n }\n\n _minGallop += 2;\n }\n\n minGallop = _minGallop;\n minGallop < 1 && (minGallop = 1);\n\n if (length1 === 1) {\n for (i = 0; i < length2; i++) {\n array[dest + i] = array[cursor2 + i];\n }\n\n array[dest + length2] = tmp[cursor1];\n } else if (length1 === 0) {\n throw new Error();\n } else {\n for (i = 0; i < length1; i++) {\n array[dest + i] = tmp[cursor1 + i];\n }\n }\n }\n\n function mergeHigh(start1, length1, start2, length2) {\n var i = 0;\n\n for (i = 0; i < length2; i++) {\n tmp[i] = array[start2 + i];\n }\n\n var cursor1 = start1 + length1 - 1;\n var cursor2 = length2 - 1;\n var dest = start2 + length2 - 1;\n var customCursor = 0;\n var customDest = 0;\n array[dest--] = array[cursor1--];\n\n if (--length1 === 0) {\n customCursor = dest - (length2 - 1);\n\n for (i = 0; i < length2; i++) {\n array[customCursor + i] = tmp[i];\n }\n\n return;\n }\n\n if (length2 === 1) {\n dest -= length1;\n cursor1 -= length1;\n customDest = dest + 1;\n customCursor = cursor1 + 1;\n\n for (i = length1 - 1; i >= 0; i--) {\n array[customDest + i] = array[customCursor + i];\n }\n\n array[dest] = tmp[cursor2];\n return;\n }\n\n var _minGallop = minGallop;\n\n while (true) {\n var count1 = 0;\n var count2 = 0;\n var exit = false;\n\n do {\n if (compare(tmp[cursor2], array[cursor1]) < 0) {\n array[dest--] = array[cursor1--];\n count1++;\n count2 = 0;\n\n if (--length1 === 0) {\n exit = true;\n break;\n }\n } else {\n array[dest--] = tmp[cursor2--];\n count2++;\n count1 = 0;\n\n if (--length2 === 1) {\n exit = true;\n break;\n }\n }\n } while ((count1 | count2) < _minGallop);\n\n if (exit) {\n break;\n }\n\n do {\n count1 = length1 - gallopRight(tmp[cursor2], array, start1, length1, length1 - 1, compare);\n\n if (count1 !== 0) {\n dest -= count1;\n cursor1 -= count1;\n length1 -= count1;\n customDest = dest + 1;\n customCursor = cursor1 + 1;\n\n for (i = count1 - 1; i >= 0; i--) {\n array[customDest + i] = array[customCursor + i];\n }\n\n if (length1 === 0) {\n exit = true;\n break;\n }\n }\n\n array[dest--] = tmp[cursor2--];\n\n if (--length2 === 1) {\n exit = true;\n break;\n }\n\n count2 = length2 - gallopLeft(array[cursor1], tmp, 0, length2, length2 - 1, compare);\n\n if (count2 !== 0) {\n dest -= count2;\n cursor2 -= count2;\n length2 -= count2;\n customDest = dest + 1;\n customCursor = cursor2 + 1;\n\n for (i = 0; i < count2; i++) {\n array[customDest + i] = tmp[customCursor + i];\n }\n\n if (length2 <= 1) {\n exit = true;\n break;\n }\n }\n\n array[dest--] = array[cursor1--];\n\n if (--length1 === 0) {\n exit = true;\n break;\n }\n\n _minGallop--;\n } while (count1 >= DEFAULT_MIN_GALLOPING || count2 >= DEFAULT_MIN_GALLOPING);\n\n if (exit) {\n break;\n }\n\n if (_minGallop < 0) {\n _minGallop = 0;\n }\n\n _minGallop += 2;\n }\n\n minGallop = _minGallop;\n\n if (minGallop < 1) {\n minGallop = 1;\n }\n\n if (length2 === 1) {\n dest -= length1;\n cursor1 -= length1;\n customDest = dest + 1;\n customCursor = cursor1 + 1;\n\n for (i = length1 - 1; i >= 0; i--) {\n array[customDest + i] = array[customCursor + i];\n }\n\n array[dest] = tmp[cursor2];\n } else if (length2 === 0) {\n throw new Error();\n } else {\n customCursor = dest - (length2 - 1);\n\n for (i = 0; i < length2; i++) {\n array[customCursor + i] = tmp[i];\n }\n }\n }\n\n return {\n mergeRuns: mergeRuns,\n forceMergeRuns: forceMergeRuns,\n pushRun: pushRun\n };\n}\n\nexport default function sort(array, compare, lo, hi) {\n if (!lo) {\n lo = 0;\n }\n\n if (!hi) {\n hi = array.length;\n }\n\n var remaining = hi - lo;\n\n if (remaining < 2) {\n return;\n }\n\n var runLength = 0;\n\n if (remaining < DEFAULT_MIN_MERGE) {\n runLength = makeAscendingRun(array, lo, hi, compare);\n binaryInsertionSort(array, lo, hi, lo + runLength, compare);\n return;\n }\n\n var ts = TimSort(array, compare);\n var minRun = minRunLength(remaining);\n\n do {\n runLength = makeAscendingRun(array, lo, hi, compare);\n\n if (runLength < minRun) {\n var force = remaining;\n\n if (force > minRun) {\n force = minRun;\n }\n\n binaryInsertionSort(array, lo, lo + force, lo + runLength, compare);\n runLength = force;\n }\n\n ts.pushRun(lo, runLength);\n ts.mergeRuns();\n remaining -= runLength;\n lo += runLength;\n } while (remaining !== 0);\n\n ts.forceMergeRuns();\n}","map":{"version":3,"sources":["D:/Work/WorkSpace/GitWorkSpace/TenShop/resource/ElectronicMall/src/ElectronicMallVue/node_modules/zrender/lib/core/timsort.js"],"names":["DEFAULT_MIN_MERGE","DEFAULT_MIN_GALLOPING","DEFAULT_TMP_STORAGE_LENGTH","minRunLength","n","r","makeAscendingRun","array","lo","hi","compare","runHi","reverseRun","t","binaryInsertionSort","start","pivot","left","right","mid","gallopLeft","value","length","hint","lastOffset","maxOffset","offset","tmp","m","gallopRight","TimSort","minGallop","tmpStorageLength","stackLength","runStart","runLength","stackSize","pushRun","_runStart","_runLength","mergeRuns","mergeAt","forceMergeRuns","i","start1","length1","start2","length2","k","mergeLow","mergeHigh","cursor1","cursor2","dest","_minGallop","count1","count2","exit","Error","customCursor","customDest","sort","remaining","ts","minRun","force"],"mappings":"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","sourcesContent":["var DEFAULT_MIN_MERGE = 32;\nvar DEFAULT_MIN_GALLOPING = 7;\nvar DEFAULT_TMP_STORAGE_LENGTH = 256;\nfunction minRunLength(n) {\n var r = 0;\n while (n >= DEFAULT_MIN_MERGE) {\n r |= n & 1;\n n >>= 1;\n }\n return n + r;\n}\nfunction makeAscendingRun(array, lo, hi, compare) {\n var runHi = lo + 1;\n if (runHi === hi) {\n return 1;\n }\n if (compare(array[runHi++], array[lo]) < 0) {\n while (runHi < hi && compare(array[runHi], array[runHi - 1]) < 0) {\n runHi++;\n }\n reverseRun(array, lo, runHi);\n }\n else {\n while (runHi < hi && compare(array[runHi], array[runHi - 1]) >= 0) {\n runHi++;\n }\n }\n return runHi - lo;\n}\nfunction reverseRun(array, lo, hi) {\n hi--;\n while (lo < hi) {\n var t = array[lo];\n array[lo++] = array[hi];\n array[hi--] = t;\n }\n}\nfunction binaryInsertionSort(array, lo, hi, start, compare) {\n if (start === lo) {\n start++;\n }\n for (; start < hi; start++) {\n var pivot = array[start];\n var left = lo;\n var right = start;\n var mid;\n while (left < right) {\n mid = left + right >>> 1;\n if (compare(pivot, array[mid]) < 0) {\n right = mid;\n }\n else {\n left = mid + 1;\n }\n }\n var n = start - left;\n switch (n) {\n case 3:\n array[left + 3] = array[left + 2];\n case 2:\n array[left + 2] = array[left + 1];\n case 1:\n array[left + 1] = array[left];\n break;\n default:\n while (n > 0) {\n array[left + n] = array[left + n - 1];\n n--;\n }\n }\n array[left] = pivot;\n }\n}\nfunction gallopLeft(value, array, start, length, hint, compare) {\n var lastOffset = 0;\n var maxOffset = 0;\n var offset = 1;\n if (compare(value, array[start + hint]) > 0) {\n maxOffset = length - hint;\n while (offset < maxOffset && compare(value, array[start + hint + offset]) > 0) {\n lastOffset = offset;\n offset = (offset << 1) + 1;\n if (offset <= 0) {\n offset = maxOffset;\n }\n }\n if (offset > maxOffset) {\n offset = maxOffset;\n }\n lastOffset += hint;\n offset += hint;\n }\n else {\n maxOffset = hint + 1;\n while (offset < maxOffset && compare(value, array[start + hint - offset]) <= 0) {\n lastOffset = offset;\n offset = (offset << 1) + 1;\n if (offset <= 0) {\n offset = maxOffset;\n }\n }\n if (offset > maxOffset) {\n offset = maxOffset;\n }\n var tmp = lastOffset;\n lastOffset = hint - offset;\n offset = hint - tmp;\n }\n lastOffset++;\n while (lastOffset < offset) {\n var m = lastOffset + (offset - lastOffset >>> 1);\n if (compare(value, array[start + m]) > 0) {\n lastOffset = m + 1;\n }\n else {\n offset = m;\n }\n }\n return offset;\n}\nfunction gallopRight(value, array, start, length, hint, compare) {\n var lastOffset = 0;\n var maxOffset = 0;\n var offset = 1;\n if (compare(value, array[start + hint]) < 0) {\n maxOffset = hint + 1;\n while (offset < maxOffset && compare(value, array[start + hint - offset]) < 0) {\n lastOffset = offset;\n offset = (offset << 1) + 1;\n if (offset <= 0) {\n offset = maxOffset;\n }\n }\n if (offset > maxOffset) {\n offset = maxOffset;\n }\n var tmp = lastOffset;\n lastOffset = hint - offset;\n offset = hint - tmp;\n }\n else {\n maxOffset = length - hint;\n while (offset < maxOffset && compare(value, array[start + hint + offset]) >= 0) {\n lastOffset = offset;\n offset = (offset << 1) + 1;\n if (offset <= 0) {\n offset = maxOffset;\n }\n }\n if (offset > maxOffset) {\n offset = maxOffset;\n }\n lastOffset += hint;\n offset += hint;\n }\n lastOffset++;\n while (lastOffset < offset) {\n var m = lastOffset + (offset - lastOffset >>> 1);\n if (compare(value, array[start + m]) < 0) {\n offset = m;\n }\n else {\n lastOffset = m + 1;\n }\n }\n return offset;\n}\nfunction TimSort(array, compare) {\n var minGallop = DEFAULT_MIN_GALLOPING;\n var length = 0;\n var tmpStorageLength = DEFAULT_TMP_STORAGE_LENGTH;\n var stackLength = 0;\n var runStart;\n var runLength;\n var stackSize = 0;\n length = array.length;\n if (length < 2 * DEFAULT_TMP_STORAGE_LENGTH) {\n tmpStorageLength = length >>> 1;\n }\n var tmp = [];\n stackLength = length < 120 ? 5 : length < 1542 ? 10 : length < 119151 ? 19 : 40;\n runStart = [];\n runLength = [];\n function pushRun(_runStart, _runLength) {\n runStart[stackSize] = _runStart;\n runLength[stackSize] = _runLength;\n stackSize += 1;\n }\n function mergeRuns() {\n while (stackSize > 1) {\n var n = stackSize - 2;\n if ((n >= 1 && runLength[n - 1] <= runLength[n] + runLength[n + 1])\n || (n >= 2 && runLength[n - 2] <= runLength[n] + runLength[n - 1])) {\n if (runLength[n - 1] < runLength[n + 1]) {\n n--;\n }\n }\n else if (runLength[n] > runLength[n + 1]) {\n break;\n }\n mergeAt(n);\n }\n }\n function forceMergeRuns() {\n while (stackSize > 1) {\n var n = stackSize - 2;\n if (n > 0 && runLength[n - 1] < runLength[n + 1]) {\n n--;\n }\n mergeAt(n);\n }\n }\n function mergeAt(i) {\n var start1 = runStart[i];\n var length1 = runLength[i];\n var start2 = runStart[i + 1];\n var length2 = runLength[i + 1];\n runLength[i] = length1 + length2;\n if (i === stackSize - 3) {\n runStart[i + 1] = runStart[i + 2];\n runLength[i + 1] = runLength[i + 2];\n }\n stackSize--;\n var k = gallopRight(array[start2], array, start1, length1, 0, compare);\n start1 += k;\n length1 -= k;\n if (length1 === 0) {\n return;\n }\n length2 = gallopLeft(array[start1 + length1 - 1], array, start2, length2, length2 - 1, compare);\n if (length2 === 0) {\n return;\n }\n if (length1 <= length2) {\n mergeLow(start1, length1, start2, length2);\n }\n else {\n mergeHigh(start1, length1, start2, length2);\n }\n }\n function mergeLow(start1, length1, start2, length2) {\n var i = 0;\n for (i = 0; i < length1; i++) {\n tmp[i] = array[start1 + i];\n }\n var cursor1 = 0;\n var cursor2 = start2;\n var dest = start1;\n array[dest++] = array[cursor2++];\n if (--length2 === 0) {\n for (i = 0; i < length1; i++) {\n array[dest + i] = tmp[cursor1 + i];\n }\n return;\n }\n if (length1 === 1) {\n for (i = 0; i < length2; i++) {\n array[dest + i] = array[cursor2 + i];\n }\n array[dest + length2] = tmp[cursor1];\n return;\n }\n var _minGallop = minGallop;\n var count1;\n var count2;\n var exit;\n while (1) {\n count1 = 0;\n count2 = 0;\n exit = false;\n do {\n if (compare(array[cursor2], tmp[cursor1]) < 0) {\n array[dest++] = array[cursor2++];\n count2++;\n count1 = 0;\n if (--length2 === 0) {\n exit = true;\n break;\n }\n }\n else {\n array[dest++] = tmp[cursor1++];\n count1++;\n count2 = 0;\n if (--length1 === 1) {\n exit = true;\n break;\n }\n }\n } while ((count1 | count2) < _minGallop);\n if (exit) {\n break;\n }\n do {\n count1 = gallopRight(array[cursor2], tmp, cursor1, length1, 0, compare);\n if (count1 !== 0) {\n for (i = 0; i < count1; i++) {\n array[dest + i] = tmp[cursor1 + i];\n }\n dest += count1;\n cursor1 += count1;\n length1 -= count1;\n if (length1 <= 1) {\n exit = true;\n break;\n }\n }\n array[dest++] = array[cursor2++];\n if (--length2 === 0) {\n exit = true;\n break;\n }\n count2 = gallopLeft(tmp[cursor1], array, cursor2, length2, 0, compare);\n if (count2 !== 0) {\n for (i = 0; i < count2; i++) {\n array[dest + i] = array[cursor2 + i];\n }\n dest += count2;\n cursor2 += count2;\n length2 -= count2;\n if (length2 === 0) {\n exit = true;\n break;\n }\n }\n array[dest++] = tmp[cursor1++];\n if (--length1 === 1) {\n exit = true;\n break;\n }\n _minGallop--;\n } while (count1 >= DEFAULT_MIN_GALLOPING || count2 >= DEFAULT_MIN_GALLOPING);\n if (exit) {\n break;\n }\n if (_minGallop < 0) {\n _minGallop = 0;\n }\n _minGallop += 2;\n }\n minGallop = _minGallop;\n minGallop < 1 && (minGallop = 1);\n if (length1 === 1) {\n for (i = 0; i < length2; i++) {\n array[dest + i] = array[cursor2 + i];\n }\n array[dest + length2] = tmp[cursor1];\n }\n else if (length1 === 0) {\n throw new Error();\n }\n else {\n for (i = 0; i < length1; i++) {\n array[dest + i] = tmp[cursor1 + i];\n }\n }\n }\n function mergeHigh(start1, length1, start2, length2) {\n var i = 0;\n for (i = 0; i < length2; i++) {\n tmp[i] = array[start2 + i];\n }\n var cursor1 = start1 + length1 - 1;\n var cursor2 = length2 - 1;\n var dest = start2 + length2 - 1;\n var customCursor = 0;\n var customDest = 0;\n array[dest--] = array[cursor1--];\n if (--length1 === 0) {\n customCursor = dest - (length2 - 1);\n for (i = 0; i < length2; i++) {\n array[customCursor + i] = tmp[i];\n }\n return;\n }\n if (length2 === 1) {\n dest -= length1;\n cursor1 -= length1;\n customDest = dest + 1;\n customCursor = cursor1 + 1;\n for (i = length1 - 1; i >= 0; i--) {\n array[customDest + i] = array[customCursor + i];\n }\n array[dest] = tmp[cursor2];\n return;\n }\n var _minGallop = minGallop;\n while (true) {\n var count1 = 0;\n var count2 = 0;\n var exit = false;\n do {\n if (compare(tmp[cursor2], array[cursor1]) < 0) {\n array[dest--] = array[cursor1--];\n count1++;\n count2 = 0;\n if (--length1 === 0) {\n exit = true;\n break;\n }\n }\n else {\n array[dest--] = tmp[cursor2--];\n count2++;\n count1 = 0;\n if (--length2 === 1) {\n exit = true;\n break;\n }\n }\n } while ((count1 | count2) < _minGallop);\n if (exit) {\n break;\n }\n do {\n count1 = length1 - gallopRight(tmp[cursor2], array, start1, length1, length1 - 1, compare);\n if (count1 !== 0) {\n dest -= count1;\n cursor1 -= count1;\n length1 -= count1;\n customDest = dest + 1;\n customCursor = cursor1 + 1;\n for (i = count1 - 1; i >= 0; i--) {\n array[customDest + i] = array[customCursor + i];\n }\n if (length1 === 0) {\n exit = true;\n break;\n }\n }\n array[dest--] = tmp[cursor2--];\n if (--length2 === 1) {\n exit = true;\n break;\n }\n count2 = length2 - gallopLeft(array[cursor1], tmp, 0, length2, length2 - 1, compare);\n if (count2 !== 0) {\n dest -= count2;\n cursor2 -= count2;\n length2 -= count2;\n customDest = dest + 1;\n customCursor = cursor2 + 1;\n for (i = 0; i < count2; i++) {\n array[customDest + i] = tmp[customCursor + i];\n }\n if (length2 <= 1) {\n exit = true;\n break;\n }\n }\n array[dest--] = array[cursor1--];\n if (--length1 === 0) {\n exit = true;\n break;\n }\n _minGallop--;\n } while (count1 >= DEFAULT_MIN_GALLOPING || count2 >= DEFAULT_MIN_GALLOPING);\n if (exit) {\n break;\n }\n if (_minGallop < 0) {\n _minGallop = 0;\n }\n _minGallop += 2;\n }\n minGallop = _minGallop;\n if (minGallop < 1) {\n minGallop = 1;\n }\n if (length2 === 1) {\n dest -= length1;\n cursor1 -= length1;\n customDest = dest + 1;\n customCursor = cursor1 + 1;\n for (i = length1 - 1; i >= 0; i--) {\n array[customDest + i] = array[customCursor + i];\n }\n array[dest] = tmp[cursor2];\n }\n else if (length2 === 0) {\n throw new Error();\n }\n else {\n customCursor = dest - (length2 - 1);\n for (i = 0; i < length2; i++) {\n array[customCursor + i] = tmp[i];\n }\n }\n }\n return {\n mergeRuns: mergeRuns,\n forceMergeRuns: forceMergeRuns,\n pushRun: pushRun\n };\n}\nexport default function sort(array, compare, lo, hi) {\n if (!lo) {\n lo = 0;\n }\n if (!hi) {\n hi = array.length;\n }\n var remaining = hi - lo;\n if (remaining < 2) {\n return;\n }\n var runLength = 0;\n if (remaining < DEFAULT_MIN_MERGE) {\n runLength = makeAscendingRun(array, lo, hi, compare);\n binaryInsertionSort(array, lo, hi, lo + runLength, compare);\n return;\n }\n var ts = TimSort(array, compare);\n var minRun = minRunLength(remaining);\n do {\n runLength = makeAscendingRun(array, lo, hi, compare);\n if (runLength < minRun) {\n var force = remaining;\n if (force > minRun) {\n force = minRun;\n }\n binaryInsertionSort(array, lo, lo + force, lo + runLength, compare);\n runLength = force;\n }\n ts.pushRun(lo, runLength);\n ts.mergeRuns();\n remaining -= runLength;\n lo += runLength;\n } while (remaining !== 0);\n ts.forceMergeRuns();\n}\n"]},"metadata":{},"sourceType":"module"} |