UNPKG

32.7 kBJavaScriptView Raw
1'use strict';
2Object.defineProperty(exports, '__esModule', { value: true });
3function* accumulate(x, fr, acc) {
4 var init = arguments.length <= 2, i = -1;
5 for (var v of x) {
6 if (init) {
7 acc = v;
8 init = false;
9 ++i;
10 }
11 else
12 acc = fr(acc, v, ++i, x);
13 yield acc;
14 }
15}
16function callable(x) {
17 var xi = x[Symbol.iterator]();
18 return () => xi.next().value;
19}
20function is(v) {
21 return v != null && typeof v[Symbol.iterator] === "function";
22}
23function isOnce(v) {
24 return is(v) && v[Symbol.iterator]() === v;
25}
26function manyLate(x, a) {
27 return { [Symbol.iterator]: () => {
28 var i = 0, xi = x[Symbol.iterator]();
29 return { next: () => {
30 if (i < a.length)
31 return { value: a[i++], done: false };
32 var { value, done } = xi.next();
33 if (!done)
34 a[i++] = value;
35 return { value, done };
36 } };
37 } };
38}
39function many(x, now = false) {
40 if (!isOnce(x))
41 return x;
42 return now ? Array.from(x) : manyLate(x, []);
43}
44function id(v) {
45 return v;
46}
47function* cartesianProduct(xs, fm = null) {
48 var fm = fm || id;
49 var X = xs.length;
50 if (X === 0)
51 return;
52 var is = [], os = [];
53 for (var i = 0; i < X; i++) {
54 xs[i] = i > 0 ? many(xs[i]) : xs[i];
55 is[i] = xs[i][Symbol.iterator]();
56 os[i] = is[i].next();
57 if (os[i].done)
58 return;
59 }
60 for (var i = 0;; i++) {
61 var vs = [];
62 for (var o of os)
63 vs.push(o.value);
64 yield fm(vs, i, null);
65 for (var r = X - 1; r >= 0; r--) {
66 os[r] = is[r].next();
67 if (!os[r].done)
68 break;
69 is[r] = xs[r][Symbol.iterator]();
70 os[r] = is[r].next();
71 }
72 if (r < 0)
73 break;
74 }
75}
76function* chunk(x, n = 1, s = n) {
77 var M = Math.max(n, s);
78 var m = 0, a = [];
79 for (var v of x) {
80 if (m < n)
81 a.push(v);
82 if (++m < M)
83 continue;
84 yield a;
85 a = a.slice(s);
86 m = a.length;
87 }
88 if (a.length > 0)
89 yield a;
90}
91function cmp(a, b) {
92 return a < b ? -1 : (a > b ? 1 : 0);
93}
94function compare(x, y, fc = null, fm = null) {
95 var fc = fc || cmp, fm = fm || id;
96 var ix = x[Symbol.iterator]();
97 var iy = y[Symbol.iterator]();
98 for (var i = 0;; i++) {
99 var u = ix.next();
100 var v = iy.next();
101 if (u.done || v.done)
102 break;
103 var u1 = fm(u.value, i, x);
104 var v1 = fm(v.value, i, y);
105 var c = fc(u1, v1);
106 if (c !== 0)
107 return c;
108 }
109 return (v.done ? 1 : 0) - (u.done ? 1 : 0);
110}
111function* concat(...xs) {
112 for (var x of xs)
113 yield* x;
114}
115const END = Number.MAX_SAFE_INTEGER;
116function* slicePos(x, i, I) {
117 var k = -1;
118 for (var v of x) {
119 if (++k >= I)
120 break;
121 if (k >= i)
122 yield v;
123 }
124}
125function* slicePosNeg(x, i, I) {
126 var j = 0, k = -1;
127 var a = [], A = -I;
128 for (var v of x) {
129 if (++k < i)
130 continue;
131 if (a.length >= A)
132 yield a[j];
133 a[j] = v;
134 j = (j + 1) % A;
135 }
136}
137function* sliceNeg(x, i, I) {
138 var j = 0, n = 0;
139 var a = [], A = -i;
140 for (var v of x) {
141 a[j] = v;
142 j = (j + 1) % A;
143 n++;
144 }
145 if (n < A)
146 return;
147 var I = I < 0 ? I : Math.min(I - n, 0);
148 var n = Math.max(I - i, 0);
149 var J = Math.max(j + n - A, 0);
150 yield* a.slice(j, j + n);
151 yield* a.slice(0, J);
152}
153function* slice(x, i = 0, I = END) {
154 if (i >= 0 && I >= 0)
155 yield* slicePos(x, i, I);
156 else if (i >= 0 && I < 0)
157 yield* slicePosNeg(x, i, I);
158 else
159 yield* sliceNeg(x, i, I);
160}
161function* copy(x, y, j = 0, i = 0, I = END) {
162 var k = -1, J = -1;
163 for (var u of x) {
164 if (++k === j) {
165 J = k;
166 for (var v of slice(y, i, I)) {
167 yield v;
168 ++J;
169 }
170 }
171 if (k >= j && k < J)
172 continue;
173 else
174 yield u;
175 }
176 if (k < j) {
177 for (; ++k < j;)
178 yield undefined;
179 yield* slice(y, i, I);
180 }
181}
182function size(x, i = 0, I = END) {
183 var j = -1, n = 0;
184 for (var _ of x)
185 if (++j >= i && j < I)
186 n++;
187 return n;
188}
189function* copyWithin(x, j = 0, i = 0, I = END) {
190 var x = many(x), n = size(x);
191 for (var v of copy(x, x, j, i, I)) {
192 if (--n < 0)
193 break;
194 yield v;
195 }
196}
197function id$1(v) {
198 return v;
199}
200function cmp$1(a, b) {
201 return a < b ? -1 : (a > b ? 1 : 0);
202}
203function count(x, ft) {
204 var a = 0, i = -1;
205 for (var v of x)
206 if (ft(v, ++i, x))
207 a++;
208 return a;
209}
210function countAs(x, fm = null) {
211 var fm = fm || id$1;
212 var a = new Map(), i = -1;
213 for (var v of x) {
214 var v1 = fm(v, ++i, x);
215 a.set(v1, (a.get(v1) || 0) + 1);
216 }
217 return a;
218}
219function from$(x) {
220 return Array.isArray(x) ? x : [...x];
221}
222function from(vs, fm = null) {
223 return new Set(fm ? from$(vs).map(fm) : vs);
224}
225function scanUntil(x, ft) {
226 var i = -1;
227 for (var v of x)
228 if (ft(v, ++i, x))
229 return i;
230 return ++i;
231}
232function from$$1(x) {
233 return Array.isArray(x) ? x : [...x];
234}
235function searchValue(x, v, fc = null, fm = null) {
236 var fc = fc || cmp$1, fm = fm || id$1;
237 var v1 = fm(v, 0, null), i = -1;
238 for (var u of x) {
239 var u1 = fm(u, ++i, x);
240 if (fc(u1, v1) === 0)
241 return i;
242 }
243 return -1;
244}
245function isDisjointMap(x, y, fm = null) {
246 var s = from(y, fm);
247 var fm = fm || id$1, i = -1;
248 for (var u of x) {
249 var u1 = fm(u, ++i, x);
250 if (s.has(u1))
251 return false;
252 }
253 return true;
254}
255function isDisjointDual(x, y, fc = null, fm = null) {
256 var fc = fc || cmp$1, fm = fm || id$1;
257 var y1 = [...y].map(fm), i = -1;
258 for (var u of x) {
259 var u1 = fm(u, ++i, x);
260 for (var v1 of y1)
261 if (fc(u1, v1) === 0)
262 return false;
263 }
264 return true;
265}
266function isDisjoint(x, y, fc = null, fm = null) {
267 if (fc)
268 return isDisjointDual(x, y, fc, fm);
269 return isDisjointMap(x, y, fm);
270}
271function isUniqueMap(x, fm = null) {
272 var fm = fm || id$1;
273 var s = new Set(), i = -1;
274 for (var v of x) {
275 var v1 = fm(v, ++i, x);
276 if (s.has(v1))
277 return false;
278 s.add(v1);
279 }
280 return true;
281}
282function isUniqueDual(x, fc = null, fm = null) {
283 var fc = fc || cmp$1, fm = fm || id$1;
284 var x1 = [...x].map(fm);
285 for (var u1 of x1) {
286 for (var v1 of x1)
287 if (fc(u1, v1) === 0)
288 return false;
289 }
290 return true;
291}
292function isUnique(x, fc = null, fm = null) {
293 if (fc)
294 return isUniqueDual(x, fc, fm);
295 else
296 return isUniqueMap(x, fm);
297}
298function range(x, fc = null, fm = null) {
299 var fc = fc || cmp$1, fm = fm || id$1;
300 var mi = -1, mu, mv;
301 var ni = -1, nu, nv;
302 var i = -1;
303 for (var u of x) {
304 var v = fm(u, ++i, x);
305 if (i === 0 || fc(v, mv) < 0) {
306 mi = i;
307 mu = u;
308 mv = v;
309 }
310 if (i === 0 || fc(v, nv) > 0) {
311 ni = i;
312 nu = u;
313 nv = v;
314 }
315 }
316 return [[mi, mu], [ni, nu]];
317}
318function partition(x, ft) {
319 var t = [], f = [], i = -1;
320 for (var v of x) {
321 if (ft(v, ++i, x))
322 t.push(v);
323 else
324 f.push(v);
325 }
326 return [t, f];
327}
328function partitionAs(x, fm = null) {
329 var fm = fm || id$1;
330 var a = new Map(), i = -1;
331 for (var v of x) {
332 var v1 = fm(v, ++i, x);
333 if (!a.has(v1))
334 a.set(v1, []);
335 a.get(v1).push(v);
336 }
337 return a;
338}
339function scanWhile(x, ft) {
340 var i = -1;
341 for (var v of x)
342 if (!ft(v, ++i, x))
343 return i;
344 return ++i;
345}
346function count$1(x, ft) {
347 return count(x, ft);
348}
349function countAs$1(x, fm = null) {
350 return countAs(x, fm);
351}
352function* cut(x, ft) {
353 var i = -1, a = [];
354 for (var v of x) {
355 if (ft(v, ++i, x)) {
356 yield a;
357 a = [];
358 }
359 a.push(v);
360 }
361 yield a;
362}
363function* cutAt(x, is) {
364 var ii = is[Symbol.iterator]();
365 var { value, done } = ii.next();
366 if (done)
367 value = END;
368 var a = [], j = -1;
369 for (var v of x) {
370 if (++j < value) {
371 a.push(v);
372 continue;
373 }
374 yield a;
375 a = [v];
376 var { value, done } = ii.next();
377 if (done)
378 value = END;
379 }
380 yield a;
381 for (; !done; { done } = ii.next())
382 yield [];
383}
384function* map(x, fm) {
385 var i = -1;
386 for (var v of x)
387 yield fm(v, ++i, x);
388}
389function* cutAtRight(x, is) {
390 yield* cutAt(x, map(is, i => i + 1));
391}
392function* cutRight(x, ft) {
393 var i = -1, a = [];
394 for (var v of x) {
395 a.push(v);
396 if (ft(v, ++i, x)) {
397 yield a;
398 a = [];
399 }
400 }
401 yield a;
402}
403function mod(x, y) {
404 return x - y * Math.floor(x / y);
405}
406function* cycle(x, i = 0, n = -1) {
407 var x = many(x);
408 var i = i === 0 ? 0 : mod(i, size(x));
409 while (true) {
410 for (var v of x) {
411 if (--i >= 0)
412 continue;
413 if (n-- === 0)
414 return;
415 yield v;
416 }
417 }
418}
419function from$$1$1(x) {
420 return Array.isArray(x) ? x : [...x];
421}
422function from$1(vs, fm = null) {
423 return new Set(fm ? from$$1$1(vs).map(fm) : vs);
424}
425function* differenceMap(x, y, fm = null) {
426 var s = from$1(y, fm);
427 var fm = fm || id, i = -1;
428 for (var u of x) {
429 var u1 = fm(u, ++i, x);
430 if (!s.has(u1))
431 yield u;
432 }
433}
434function* differenceDual(x, y, fc = null, fm = null) {
435 var fc = fc || cmp, fm = fm || id;
436 var y1 = [...y].map(fm), i = -1;
437 x: for (var u of x) {
438 var u1 = fm(u, ++i, x);
439 for (var v1 of y1)
440 if (fc(u1, v1) === 0)
441 continue x;
442 yield u;
443 }
444}
445function* difference(x, y, fc = null, fm = null) {
446 if (fc)
447 yield* differenceDual(x, y, fc, fm);
448 else
449 yield* differenceMap(x, y, fm);
450}
451function* drop(x, n = 1) {
452 yield* slice(x, n);
453}
454function* dropRight(x, n = 1) {
455 if (n > 0)
456 yield* slice(x, 0, -n);
457 else
458 yield* x;
459}
460function* dropWhile(x, ft) {
461 var c = true, i = -1;
462 for (var v of x) {
463 c = c && ft(v, ++i, x);
464 if (!c)
465 yield v;
466 }
467}
468function* dropWhileRight(x, ft) {
469 var i = -1, a = [];
470 for (var v of x) {
471 if (ft(v, ++i, x))
472 a.push(v);
473 else {
474 yield* a;
475 yield v;
476 a.length = 0;
477 }
478 }
479}
480function* entries(x) {
481 var i = -1;
482 for (var v of x)
483 yield [++i, v];
484}
485function everyBool(x) {
486 for (var v of x)
487 if (!v)
488 return false;
489 return true;
490}
491function everyTest(x, ft) {
492 var i = -1;
493 for (var v of x)
494 if (!ft(v, ++i, x))
495 return false;
496 return true;
497}
498function every(x, ft = null) {
499 if (ft)
500 return everyTest(x, ft);
501 else
502 return everyBool(x);
503}
504function* fill(x, v, i = 0, I = END) {
505 var j = -1;
506 for (var u of x) {
507 if (++j >= i && j < I)
508 yield v;
509 else
510 yield u;
511 }
512}
513function* filter(x, ft) {
514 var i = -1;
515 for (var v of x)
516 if (ft(v, ++i, x))
517 yield v;
518}
519function* filterAt(x, is) {
520 var i = -1;
521 for (var v of x)
522 if (is.includes(++i))
523 yield v;
524}
525function find(x, ft) {
526 var i = -1;
527 for (var v of x)
528 if (ft(v, ++i, x))
529 return v;
530}
531function* findAll(x, ft) {
532 yield* filter(x, ft);
533}
534function findRight(x, ft) {
535 var i = -1, a;
536 for (var v of x)
537 if (ft(v, ++i, x))
538 a = v;
539 return a;
540}
541function isList(v) {
542 return is(v) && typeof v !== "string";
543}
544function* flat(x, n = -1, fm = null, ft = null) {
545 var fm = fm || id, ft = ft || isList, i = -1;
546 for (var v of x) {
547 var v1 = fm(v, ++i, x);
548 if (n !== 0 && ft(v1, i, x))
549 yield* flat(v1, n - 1, fm, ft);
550 else
551 yield v1;
552 }
553}
554function* flatMap(x, fm = null, ft = null) {
555 var fm = fm || id, ft = ft || isList, i = -1;
556 for (var v of x) {
557 var v1 = fm(v, ++i, x);
558 if (ft(v1, i, x))
559 yield* v1;
560 else
561 yield v1;
562 }
563}
564function forEach(x, fc) {
565 var i = -1;
566 for (var v of x)
567 fc(v, ++i, x);
568}
569function from$2(x) {
570 if (typeof x[Symbol.iterator] === "function")
571 return x;
572 return { [Symbol.iterator]: () => x };
573}
574function* fromApply(fm = null, v, n = -1) {
575 if (n !== 0)
576 yield v;
577 for (var i = 1; i !== n; i++)
578 yield (v = fm(v, i, null));
579}
580function* fromCall(fc, ...as) {
581 for (;;)
582 yield fc(...as);
583}
584function* fromRange(v = 0, V = END, s = 1) {
585 if (s >= 0) {
586 for (; v < V; v += s)
587 yield v;
588 }
589 else {
590 for (; v > V; v += s)
591 yield v;
592 }
593}
594function get(x, i) {
595 var j = -1;
596 for (var v of x)
597 if (++j === i)
598 return v;
599}
600function* getAll(x, is) {
601 var ii = is[Symbol.iterator]();
602 var value = -1, j = -1;
603 for (var v of x) {
604 while (value <= j) {
605 var { value, done } = ii.next();
606 if (done)
607 return;
608 if (value <= j)
609 yield undefined;
610 }
611 if (value === ++j)
612 yield v;
613 }
614 while (!ii.next().done)
615 yield undefined;
616}
617function getPath(x, p) {
618 for (var i of p)
619 x = is(x) ? get(x, i) : undefined;
620 return x;
621}
622function* group(x, fc = null, fm = null) {
623 var fc = fc || cmp, fm = fm || id;
624 var a = [], u1, i = -1;
625 for (var v of x) {
626 var v1 = fm(v, ++i, x);
627 if (i > 0 && fc(u1, v1) !== 0) {
628 yield a;
629 a = [v];
630 }
631 else
632 a.push(v);
633 u1 = v1;
634 }
635 yield a;
636}
637function head(x, vd) {
638 for (var v of x)
639 return v;
640 return vd;
641}
642function* searchInfixAll(x, y, fc, fm = null) {
643 var fc = fc || cmp, fm = fm || id;
644 var y1 = from$$1(y), Y = y1.length;
645 if (Y === 0)
646 yield 0;
647 var y1 = y1.map(fm, null);
648 var m = new Array(Y).fill(false);
649 var i = -1, J = 0;
650 for (var u of x) {
651 var u1 = fm(u, ++i, x);
652 for (var j = J; j > 0; j--)
653 m[j] = m[j - 1] && fc(u1, y1[j]) === 0;
654 m[0] = fc(u1, y1[0]) === 0;
655 J = Math.min(J + 1, Y - 1);
656 if (m[Y - 1])
657 yield i - Y + 1;
658 }
659}
660function searchInfix(x, y, fc, fm = null) {
661 return head(searchInfixAll(x, y, fc, fm), -1);
662}
663function hasInfix(x, y, fc, fm = null) {
664 return searchInfix(x, y, fc, fm) >= 0;
665}
666function hasPath(x, p) {
667 return getPath(x, p) !== undefined;
668}
669function hasPrefix(x, y, fc = null, fm = null) {
670 var fc = fc || cmp, fm = fm || id;
671 var ix = x[Symbol.iterator](), i = -1;
672 for (var v of y) {
673 var { value, done } = ix.next();
674 if (done)
675 return false;
676 var u1 = fm(value, ++i, x);
677 var v1 = fm(v, i, y);
678 if (fc(u1, v1) !== 0)
679 return false;
680 }
681 return true;
682}
683function searchSubsequence(x, y, fc = null, fm = null) {
684 var fc = fc || cmp, fm = fm || id;
685 var iy = y[Symbol.iterator]();
686 var { value, done } = iy.next();
687 if (done)
688 return 0;
689 var i = -1, j = -1, a = -1;
690 var v1 = fm(value, ++j, y);
691 for (var u of x) {
692 var u1 = fm(u, ++i, x);
693 if (fc(u1, v1) !== 0)
694 continue;
695 if (a < 0)
696 a = i;
697 var { value, done } = iy.next();
698 if (done)
699 return a;
700 v1 = fm(value, ++j, y);
701 }
702 return -1;
703}
704function hasSubsequence(x, y, fc = null, fm = null) {
705 return searchSubsequence(x, y, fc, fm) >= 0;
706}
707function hasSuffix(x, y, fc, fm = null) {
708 var fc = fc || cmp, fm = fm || id;
709 var y1 = from$$1(y), Y = y1.length;
710 var a = [], ai = 0, n = 0;
711 if (Y === 0)
712 return true;
713 for (var u of x) {
714 a[ai++ % Y] = u;
715 n++;
716 }
717 if (a.length < Y)
718 return false;
719 for (var i = 0, j = n - Y; i < Y; i++, j++) {
720 var u1 = fm(a[ai++ % Y], j, x);
721 var v1 = fm(y1[i], i, y);
722 if (fc(u1, v1) !== 0)
723 return false;
724 }
725 return true;
726}
727function searchValue$1(x, v, fc = null, fm = null) {
728 return searchValue(x, v, fc, fm);
729}
730function hasValue(x, v, fc = null, fm = null) {
731 return searchValue$1(x, v, fc, fm) >= 0;
732}
733function includes(x, v, i = 0) {
734 return hasValue(slice(x, i), v);
735}
736function index(x, i = 0) {
737 var n = size(x);
738 return i < 0 ? Math.max(n + i, 0) : Math.min(i, n);
739}
740function indexOf(x, v, i = 0) {
741 var a = searchValue$1(slice(x, i), v);
742 return a < 0 ? a : a + i;
743}
744function indexRange(x, i = 0, I = END) {
745 var n = size(x);
746 i = i < 0 ? Math.max(n + i, 0) : Math.min(i, n);
747 I = I < 0 ? Math.max(n + I, 0) : Math.min(I, n);
748 I = Math.max(i, I);
749 return [i, I];
750}
751function* init(x) {
752 var u, i = -1;
753 for (var v of x) {
754 if (++i > 0)
755 yield u;
756 u = v;
757 }
758}
759function* interleave(xs) {
760 var X = xs.length;
761 var is = [], os = [];
762 for (var n = 0, i = 0; n < X; n++) {
763 is[i] = xs[i][Symbol.iterator]();
764 os[i] = is[i].next();
765 if (!os[i].done)
766 i++;
767 }
768 for (var j = 0; i > 0; j++) {
769 var vs = os.map(o => o.value);
770 j %= i;
771 yield vs[j];
772 os[j] = is[j].next();
773 if (!os[j].done)
774 continue;
775 is.splice(j, 1);
776 os.splice(j, 1);
777 i--;
778 }
779}
780function* repeat(x, n = -1) {
781 var x = many(x);
782 for (; n !== 0; n--)
783 yield* x;
784}
785function* intermix(x, y, m = 1, n = 1, s = m, t = n) {
786 var x1 = chunk(x, m, s);
787 var y1 = chunk(repeat(y), n, t);
788 var iy = y1[Symbol.iterator](), i = -1;
789 for (var u of x1) {
790 if (++i > 0)
791 yield* iy.next().value;
792 yield* u;
793 }
794}
795function* interpolate(x, fc) {
796 var u, i = -1;
797 for (var v of x) {
798 if (++i > 0)
799 yield fc(u, v);
800 yield (u = v);
801 }
802}
803function* intersectionMap(x, y, fm = null) {
804 var s = from$1(y, fm);
805 var fm = fm || id, i = -1;
806 for (var u of x) {
807 var u1 = fm(u, ++i, x);
808 if (s.has(u1))
809 yield u;
810 }
811}
812function* intersectionDual(x, y, fc = null, fm = null) {
813 var fc = fc || cmp, fm = fm || id;
814 var y1 = [...y].map(fm), i = -1;
815 x: for (var u of x) {
816 var u1 = fm(u, ++i, x);
817 for (var v1 of y1)
818 if (fc(u1, v1) === 0) {
819 yield u;
820 continue x;
821 }
822 }
823}
824function* intersection(x, y, fc = null, fm = null) {
825 if (fc)
826 yield* intersectionDual(x, y, fc, fm);
827 else
828 yield* intersectionMap(x, y, fm);
829}
830function* intersperse(x, v) {
831 var i = -1;
832 for (var u of x) {
833 if (++i > 0)
834 yield v;
835 yield u;
836 }
837}
838function isDisjoint$1(x, y, fc = null, fm = null) {
839 return isDisjoint(x, y, fc, fm);
840}
841function isEmpty(x) {
842 for (var _ of x)
843 return false;
844 return true;
845}
846function isEqual(x, y, fc = null, fm = null) {
847 return compare(x, y, fc, fm) === 0;
848}
849function isIterator(v) {
850 return v != null && typeof v.next === "function";
851}
852function isMany(v) {
853 return !isOnce(v);
854}
855function isUnique$1(x, fc = null, fm = null) {
856 return isUnique(x, fc, fm);
857}
858function iterator(x) {
859 return x[Symbol.iterator]();
860}
861function join(x, sep = ",") {
862 var a = "";
863 for (var v of x)
864 a += v + sep;
865 return a.substring(0, a.length - sep.length);
866}
867function* keys(x) {
868 var i = -1;
869 for (var _ of x)
870 yield ++i;
871}
872function last(x, vd) {
873 var v = vd;
874 for (var v of x)
875 ;
876 return v;
877}
878function searchValueRight(x, v, fc = null, fm = null) {
879 var fc = fc || cmp, fm = fm || id;
880 var v1 = fm(v, 0, null), i = -1, j = -1;
881 for (var u of x) {
882 var u1 = fm(u, ++i, x);
883 if (fc(u1, v1) === 0)
884 j = i;
885 }
886 return j;
887}
888function lastIndexOf(x, v, i = END - 1) {
889 return searchValueRight(slice(x, 0, i + 1), v);
890}
891function* left(x, n = 1) {
892 yield* slice(x, 0, n);
893}
894function length(x, i = 0, I = END) {
895 return size(x, i, I);
896}
897function range$1(x, fc = null, fm = null) {
898 return range(x, fc, fm);
899}
900function max(x, fc = null, fm = null) {
901 return range$1(x, fc, fm)[1];
902}
903function min(x, fc = null, fm = null) {
904 return range$1(x, fc, fm)[0];
905}
906function* merge(xs, fc = null, fm = null) {
907 var X = xs.length;
908 var is = [], os = [];
909 for (var n = 0, i = 0; n < X; n++) {
910 is[i] = xs[i][Symbol.iterator]();
911 os[i] = is[i].next();
912 if (!os[i].done)
913 i++;
914 }
915 while (i > 0) {
916 var vs = os.map(o => o.value);
917 var j = min(vs, fc, fm)[0];
918 yield vs[j];
919 os[j] = is[j].next();
920 if (!os[j].done)
921 continue;
922 is.splice(j, 1);
923 os.splice(j, 1);
924 i--;
925 }
926}
927function* middle(x, i = 0, n = 1) {
928 yield* slice(x, i, i + n);
929}
930function* movePart(x, j, k, l) {
931 var p = [], i = -1;
932 for (var v of x) {
933 if (++i < j || i >= l)
934 yield v;
935 else {
936 p.push(v);
937 if (i < l - 1)
938 continue;
939 yield* p.slice(k - j);
940 yield* p.slice(0, k - j);
941 }
942 }
943}
944function* moveWithin(x, j = 0, i = 0, I = END) {
945 if (j < i)
946 yield* movePart(x, j, i, I);
947 else
948 yield* movePart(x, i, I, j);
949}
950function partition$1(x, ft) {
951 return partition(x, ft);
952}
953function partitionAs$1(x, fm = null) {
954 return partitionAs(x, fm);
955}
956function* pop(x) {
957 yield* init(x);
958}
959function* push(x, ...vs) {
960 yield* x;
961 yield* vs;
962}
963function reduce(x, fr, acc) {
964 var init = arguments.length <= 2, i = -1;
965 for (var v of x) {
966 if (init) {
967 init = false;
968 acc = v;
969 ++i;
970 }
971 else
972 acc = fr(acc, v, ++i, x);
973 }
974 return acc;
975}
976function* reject(x, ft) {
977 var i = -1;
978 for (var v of x)
979 if (!ft(v, ++i, x))
980 yield v;
981}
982function* rejectAt(x, is) {
983 var i = -1;
984 for (var v of x)
985 if (!is.includes(++i))
986 yield v;
987}
988function* splice(x, i = 0, n = END - i, ...vs) {
989 var j = -1;
990 for (var u of x) {
991 if (++j < i || j >= i + n)
992 yield u;
993 else if (j === i)
994 yield* vs;
995 }
996}
997function* remove(x, i) {
998 yield* splice(x, i, 1);
999}
1000function* reverse(x) {
1001 var a = from$$1(x);
1002 for (var i = a.length - 1; i >= 0; i--)
1003 yield a[i];
1004}
1005function* right(x, n = 1) {
1006 if (n === 0)
1007 return;
1008 yield* slice(x, -n);
1009}
1010function* rotateLeft(x, n) {
1011 var a = [], i = -1;
1012 for (var v of x) {
1013 if (++i < n)
1014 a.push(v);
1015 else
1016 yield v;
1017 }
1018 if (++i >= n) {
1019 yield* a;
1020 return;
1021 }
1022 var n = n % i;
1023 yield* a.slice(n);
1024 yield* a.slice(-n);
1025}
1026function* rotateRight(x, n) {
1027 var a = Array.from(x);
1028 var n = n % a.length;
1029 yield* a.slice(-n);
1030 yield* a.slice(0, -n);
1031}
1032function* rotate(x, n = 0) {
1033 if (n === 0)
1034 yield* x;
1035 else if (n > 0)
1036 yield* rotateLeft(x, n);
1037 else
1038 yield* rotateRight(x, -n);
1039}
1040function scanUntil$1(x, ft) {
1041 return scanUntil(x, ft);
1042}
1043function scanUntilRight(x, ft) {
1044 var i = 0, a = 0;
1045 for (var v of x)
1046 if (ft(v, i++, x))
1047 a = i;
1048 return a;
1049}
1050function scanWhile$1(x, ft) {
1051 return scanWhile(x, ft);
1052}
1053function scanWhileRight(x, ft) {
1054 var i = 0, a = 0;
1055 for (var v of x)
1056 if (!ft(v, i++, x))
1057 a = i;
1058 return a;
1059}
1060function search(x, ft) {
1061 var i = -1;
1062 for (var v of x)
1063 if (ft(v, ++i, x))
1064 return i;
1065 return -1;
1066}
1067function* searchAll(x, ft) {
1068 var i = -1;
1069 for (var v of x)
1070 if (ft(v, ++i, x))
1071 yield i;
1072}
1073function searchInfixRight(x, y, fc, fm = null) {
1074 return last(searchInfixAll(x, y, fc, fm), -1);
1075}
1076function searchRight(x, ft) {
1077 var i = -1, a = -1;
1078 for (var v of x)
1079 if (ft(v, ++i, x))
1080 a = i;
1081 return a;
1082}
1083function* searchValueAll(x, v, fc = null, fm = null) {
1084 var fc = fc || cmp, fm = fm || id;
1085 var v1 = fm(v, 0, null), i = -1;
1086 for (var u of x) {
1087 var u1 = fm(u, ++i, x);
1088 if (fc(u1, v1) === 0)
1089 yield i;
1090 }
1091}
1092function* set(x, i, v) {
1093 var j = -1;
1094 for (var u of x)
1095 yield (++j === i ? v : u);
1096 if (j >= i)
1097 return;
1098 for (; ++j < i;)
1099 yield undefined;
1100 yield v;
1101}
1102function* tail(x) {
1103 var i = -1;
1104 for (var v of x)
1105 if (++i > 0)
1106 yield v;
1107}
1108function* shift(x) {
1109 yield* tail(x);
1110}
1111function someBool(x) {
1112 for (var v of x)
1113 if (v)
1114 return true;
1115 return false;
1116}
1117function someTest(x, ft) {
1118 var i = -1;
1119 for (var v of x)
1120 if (ft(v, ++i, x))
1121 return true;
1122 return false;
1123}
1124function some(x, ft = null) {
1125 if (ft)
1126 return someTest(x, ft);
1127 else
1128 return someBool(x);
1129}
1130function* split(x, ft) {
1131 var a = [], i = -1;
1132 for (var v of x) {
1133 if (!ft(v, ++i, x))
1134 a.push(v);
1135 else if (a.length) {
1136 yield a;
1137 a = [];
1138 }
1139 }
1140 if (a.length)
1141 yield a;
1142}
1143function* splitAt(x, is) {
1144 var a = [], i = -1;
1145 for (var v of x) {
1146 if (!is.includes(++i))
1147 a.push(v);
1148 else if (a.length) {
1149 yield a;
1150 a = [];
1151 }
1152 }
1153 if (a.length)
1154 yield a;
1155}
1156function* swap(x, i, j) {
1157 if (i === j)
1158 yield* x;
1159 var k = Math.min(i, j);
1160 var l = Math.max(i, j);
1161 var m = [];
1162 var vk, i = -1;
1163 for (var v of x) {
1164 if (++i < k || i > l)
1165 yield v;
1166 else if (i === k)
1167 vk = v;
1168 else if (i < l)
1169 m.push(v);
1170 else {
1171 yield v;
1172 yield* m;
1173 yield vk;
1174 }
1175 }
1176}
1177function* symmetricDifference(x, y, fc = null, fm = null) {
1178 var x = many(x), y = many(y);
1179 yield* difference(x, y, fc, fm);
1180 yield* difference(y, x, fc, fm);
1181}
1182function* take(x, n = 1) {
1183 yield* slice(x, 0, n);
1184}
1185function* takeRight(x, n = 1) {
1186 if (n > 0)
1187 yield* slice(x, -n);
1188}
1189function* takeWhile(x, ft) {
1190 var i = -1;
1191 for (var v of x) {
1192 if (ft(v, ++i, x))
1193 yield v;
1194 else
1195 return;
1196 }
1197}
1198function* takeWhileRight(x, ft) {
1199 var i = -1, a = [];
1200 for (var v of x) {
1201 if (ft(v, ++i, x))
1202 a.push(v);
1203 else
1204 a.length = 0;
1205 }
1206 yield* a;
1207}
1208function* unionMap(x, y, fm = null) {
1209 var fm = fm || id;
1210 var s = new Set();
1211 var i = -1, j = -1;
1212 for (var u of x) {
1213 var u1 = fm(u, ++i, x);
1214 s.add(u1);
1215 yield u;
1216 }
1217 for (var v of y) {
1218 var v1 = fm(v, ++j, y);
1219 if (!s.has(v1))
1220 yield v;
1221 }
1222}
1223function* unionDual(x, y, fc = null, fm = null) {
1224 var fc = fc || cmp, fm = fm || id;
1225 var x = many(x);
1226 yield* x;
1227 var x1 = [...x].map(fm), j = -1;
1228 y: for (var v of y) {
1229 var v1 = fm(v, ++j, y);
1230 for (var u1 of x1)
1231 if (fc(u1, v1) === 0)
1232 continue y;
1233 yield v;
1234 }
1235}
1236function* union(x, y, fc = null, fm = null) {
1237 if (fc)
1238 yield* unionDual(x, y, fc, fm);
1239 else
1240 yield* unionMap(x, y, fm);
1241}
1242function* uniqueMap(x, fm = null) {
1243 var fm = fm || id;
1244 var s = new Set(), i = -1;
1245 for (var v of x) {
1246 var v1 = fm(v, ++i, x);
1247 if (s.has(v1))
1248 continue;
1249 s.add(v1);
1250 yield v;
1251 }
1252}
1253function* uniqueDual(x, fc = null, fm = null) {
1254 var fc = fc || cmp, fm = fm || id;
1255 var s = [], i = -1;
1256 x: for (var v of x) {
1257 var v1 = fm(v, ++i, x);
1258 for (var u1 of s)
1259 if (fc(u1, v1) === 0)
1260 continue x;
1261 s.push(v1);
1262 yield v;
1263 }
1264}
1265function* unique(x, fc = null, fm = null) {
1266 if (fc)
1267 yield* uniqueDual(x, fc, fm);
1268 else
1269 yield* uniqueMap(x, fm);
1270}
1271function* unshift(x, ...vs) {
1272 yield* vs;
1273 yield* x;
1274}
1275function* values(x) {
1276 yield* x;
1277}
1278function* zip(xs, fm = null, ft = null, vd) {
1279 var fm = fm || id, ft = ft || some;
1280 var X = xs.length;
1281 if (X === 0)
1282 return;
1283 var is = [], ds = [], vs = [];
1284 for (var r = 0; r < X; r++)
1285 is[r] = xs[r][Symbol.iterator]();
1286 for (var i = 0;; i++) {
1287 for (var r = 0; r < X; r++) {
1288 var { done, value } = is[r].next();
1289 ds[r] = done;
1290 vs[r] = done ? vd : value;
1291 }
1292 if (ft(ds))
1293 break;
1294 yield fm(vs.slice(), i, null);
1295 }
1296}
1297exports.END = END;
1298exports.accumulate = accumulate;
1299exports.callable = callable;
1300exports.cartesianProduct = cartesianProduct;
1301exports.chunk = chunk;
1302exports.compare = compare;
1303exports.concat = concat;
1304exports.copy = copy;
1305exports.copyWithin = copyWithin;
1306exports.count = count$1;
1307exports.countAs = countAs$1;
1308exports.cut = cut;
1309exports.cutAt = cutAt;
1310exports.cutAtRight = cutAtRight;
1311exports.cutRight = cutRight;
1312exports.cycle = cycle;
1313exports.difference = difference;
1314exports.drop = drop;
1315exports.dropRight = dropRight;
1316exports.dropWhile = dropWhile;
1317exports.dropWhileRight = dropWhileRight;
1318exports.entries = entries;
1319exports.every = every;
1320exports.fill = fill;
1321exports.filter = filter;
1322exports.filterAt = filterAt;
1323exports.find = find;
1324exports.findAll = findAll;
1325exports.findRight = findRight;
1326exports.flat = flat;
1327exports.flatMap = flatMap;
1328exports.forEach = forEach;
1329exports.from = from$2;
1330exports.fromApply = fromApply;
1331exports.fromCall = fromCall;
1332exports.fromRange = fromRange;
1333exports.get = get;
1334exports.getAll = getAll;
1335exports.getPath = getPath;
1336exports.group = group;
1337exports.hasInfix = hasInfix;
1338exports.hasPath = hasPath;
1339exports.hasPrefix = hasPrefix;
1340exports.hasSubsequence = hasSubsequence;
1341exports.hasSuffix = hasSuffix;
1342exports.hasValue = hasValue;
1343exports.head = head;
1344exports.includes = includes;
1345exports.index = index;
1346exports.indexOf = indexOf;
1347exports.indexRange = indexRange;
1348exports.init = init;
1349exports.interleave = interleave;
1350exports.intermix = intermix;
1351exports.interpolate = interpolate;
1352exports.intersection = intersection;
1353exports.intersperse = intersperse;
1354exports.is = is;
1355exports.isDisjoint = isDisjoint$1;
1356exports.isEmpty = isEmpty;
1357exports.isEqual = isEqual;
1358exports.isIterator = isIterator;
1359exports.isList = isList;
1360exports.isMany = isMany;
1361exports.isOnce = isOnce;
1362exports.isUnique = isUnique$1;
1363exports.iterator = iterator;
1364exports.join = join;
1365exports.keys = keys;
1366exports.last = last;
1367exports.lastIndexOf = lastIndexOf;
1368exports.left = left;
1369exports.length = length;
1370exports.many = many;
1371exports.map = map;
1372exports.max = max;
1373exports.merge = merge;
1374exports.middle = middle;
1375exports.min = min;
1376exports.moveWithin = moveWithin;
1377exports.partition = partition$1;
1378exports.partitionAs = partitionAs$1;
1379exports.pop = pop;
1380exports.push = push;
1381exports.range = range$1;
1382exports.reduce = reduce;
1383exports.reject = reject;
1384exports.rejectAt = rejectAt;
1385exports.remove = remove;
1386exports.repeat = repeat;
1387exports.reverse = reverse;
1388exports.right = right;
1389exports.rotate = rotate;
1390exports.scanUntil = scanUntil$1;
1391exports.scanUntilRight = scanUntilRight;
1392exports.scanWhile = scanWhile$1;
1393exports.scanWhileRight = scanWhileRight;
1394exports.search = search;
1395exports.searchAll = searchAll;
1396exports.searchInfix = searchInfix;
1397exports.searchInfixAll = searchInfixAll;
1398exports.searchInfixRight = searchInfixRight;
1399exports.searchRight = searchRight;
1400exports.searchSubsequence = searchSubsequence;
1401exports.searchValue = searchValue$1;
1402exports.searchValueAll = searchValueAll;
1403exports.searchValueRight = searchValueRight;
1404exports.set = set;
1405exports.shift = shift;
1406exports.size = size;
1407exports.slice = slice;
1408exports.some = some;
1409exports.splice = splice;
1410exports.split = split;
1411exports.splitAt = splitAt;
1412exports.swap = swap;
1413exports.symmetricDifference = symmetricDifference;
1414exports.tail = tail;
1415exports.take = take;
1416exports.takeRight = takeRight;
1417exports.takeWhile = takeWhile;
1418exports.takeWhileRight = takeWhileRight;
1419exports.union = union;
1420exports.unique = unique;
1421exports.unshift = unshift;
1422exports.values = values;
1423exports.zip = zip;