cubing 0.40.0 → 0.41.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (80) hide show
  1. package/dist/esm/bluetooth/index.js +41 -41
  2. package/dist/esm/bluetooth/index.js.map +3 -3
  3. package/dist/esm/{chunk-2UHC65GH.js → chunk-3B5ND2Z3.js} +25 -23
  4. package/dist/esm/chunk-3B5ND2Z3.js.map +7 -0
  5. package/dist/esm/{chunk-NZAWY3EU.js → chunk-3RHBVKV2.js} +98 -89
  6. package/dist/esm/chunk-3RHBVKV2.js.map +7 -0
  7. package/dist/esm/{chunk-45VMKYXT.js → chunk-6FC7BO5U.js} +3 -5
  8. package/dist/esm/chunk-6FC7BO5U.js.map +7 -0
  9. package/dist/esm/{chunk-TKIXG2EX.js → chunk-GXXHRHE5.js} +35 -35
  10. package/dist/esm/chunk-GXXHRHE5.js.map +7 -0
  11. package/dist/esm/{chunk-NBVZ7LEM.js → chunk-H66X47MG.js} +115 -125
  12. package/dist/esm/chunk-H66X47MG.js.map +7 -0
  13. package/dist/esm/{chunk-JXW26CFJ.js → chunk-LRYMCZVI.js} +3 -3
  14. package/dist/esm/{chunk-ZILJKTYP.js → chunk-Q7UVEISQ.js} +17 -17
  15. package/dist/esm/{chunk-IZJ3YK5S.js → chunk-RYRRMKVS.js} +14 -13
  16. package/dist/esm/chunk-RYRRMKVS.js.map +7 -0
  17. package/dist/esm/{chunk-F6V2QBMP.js → chunk-V4YTFIKT.js} +99 -89
  18. package/dist/esm/chunk-V4YTFIKT.js.map +7 -0
  19. package/dist/esm/{chunk-TBVTYIMY.js → chunk-XODLDV3Q.js} +25 -23
  20. package/dist/esm/chunk-XODLDV3Q.js.map +7 -0
  21. package/dist/esm/inside-GPSEWHK7.js +17 -0
  22. package/dist/esm/kpuzzle/index.js +3 -3
  23. package/dist/esm/notation/index.js +3 -3
  24. package/dist/esm/protocol/index.js +3 -3
  25. package/dist/esm/puzzle-geometry/index.js +43 -26
  26. package/dist/esm/puzzle-geometry/index.js.map +2 -2
  27. package/dist/esm/puzzles/index.js +3 -3
  28. package/dist/esm/{puzzles-dynamic-side-events-DHAI7HWB.js → puzzles-dynamic-side-events-42Q52YAB.js} +157 -85
  29. package/dist/esm/puzzles-dynamic-side-events-42Q52YAB.js.map +7 -0
  30. package/dist/esm/{puzzles-dynamic-unofficial-QXSDLTK5.js → puzzles-dynamic-unofficial-PCHNKY4Y.js} +13 -13
  31. package/dist/esm/{puzzles-dynamic-unofficial-QXSDLTK5.js.map → puzzles-dynamic-unofficial-PCHNKY4Y.js.map} +2 -2
  32. package/dist/esm/scramble/index.js +7 -7
  33. package/dist/esm/search/index.js +9 -9
  34. package/dist/esm/{search-dynamic-sgs-side-events-LBEIUPJE.js → search-dynamic-sgs-side-events-4ZHROANX.js} +5 -5
  35. package/dist/esm/{search-dynamic-sgs-unofficial-PHDE4BVE.js → search-dynamic-sgs-unofficial-VKBYULK5.js} +5 -5
  36. package/dist/esm/{search-dynamic-solve-3x3x3-7EEK52SV.js → search-dynamic-solve-3x3x3-NULYS7OL.js} +3 -3
  37. package/dist/esm/{search-dynamic-solve-3x3x3-7EEK52SV.js.map → search-dynamic-solve-3x3x3-NULYS7OL.js.map} +2 -2
  38. package/dist/esm/{search-dynamic-solve-4x4x4-EJB3WWMV.js → search-dynamic-solve-4x4x4-KASG5V7K.js} +5 -5
  39. package/dist/esm/{search-dynamic-solve-sq1-CWJPRQVZ.js → search-dynamic-solve-sq1-TO7UHE6Y.js} +6 -6
  40. package/dist/esm/{search-dynamic-solve-sq1-CWJPRQVZ.js.map → search-dynamic-solve-sq1-TO7UHE6Y.js.map} +2 -2
  41. package/dist/esm/search-worker-entry.js.js +1 -1
  42. package/dist/esm/twisty/index.js +74 -66
  43. package/dist/esm/twisty/index.js.map +3 -3
  44. package/dist/esm/{twisty-dynamic-3d-EI5ZUVCP.js → twisty-dynamic-3d-5VC2L2WS.js} +19 -19
  45. package/dist/esm/twisty-dynamic-3d-5VC2L2WS.js.map +7 -0
  46. package/dist/esm/{twsearch-ZALDQ4TE.js → twsearch-OMTTOVJO.js} +15 -15
  47. package/dist/esm/twsearch-OMTTOVJO.js.map +7 -0
  48. package/dist/types/{KState-33ce1f57.d.ts → KPattern-12e23b1f.d.ts} +37 -33
  49. package/dist/types/{TwizzleLink-19143923.d.ts → TwizzleLink-8eaf164c.d.ts} +10 -10
  50. package/dist/types/bluetooth/index.d.ts +8 -8
  51. package/dist/types/{bluetooth-puzzle-29072a56.d.ts → bluetooth-puzzle-91e73b7f.d.ts} +3 -3
  52. package/dist/types/kpuzzle/index.d.ts +1 -1
  53. package/dist/types/notation/index.d.ts +2 -2
  54. package/dist/types/{outside-b7760f77.d.ts → outside-deaac55d.d.ts} +8 -8
  55. package/dist/types/protocol/index.d.ts +5 -5
  56. package/dist/types/puzzle-geometry/index.d.ts +2 -2
  57. package/dist/types/puzzles/index.d.ts +3 -3
  58. package/dist/types/scramble/index.d.ts +2 -2
  59. package/dist/types/search/index.d.ts +4 -4
  60. package/dist/types/stream/index.d.ts +2 -2
  61. package/dist/types/twisty/index.d.ts +7 -7
  62. package/package.json +1 -1
  63. package/dist/esm/chunk-2UHC65GH.js.map +0 -7
  64. package/dist/esm/chunk-45VMKYXT.js.map +0 -7
  65. package/dist/esm/chunk-F6V2QBMP.js.map +0 -7
  66. package/dist/esm/chunk-IZJ3YK5S.js.map +0 -7
  67. package/dist/esm/chunk-NBVZ7LEM.js.map +0 -7
  68. package/dist/esm/chunk-NZAWY3EU.js.map +0 -7
  69. package/dist/esm/chunk-TBVTYIMY.js.map +0 -7
  70. package/dist/esm/chunk-TKIXG2EX.js.map +0 -7
  71. package/dist/esm/inside-BGMQCQ2A.js +0 -17
  72. package/dist/esm/puzzles-dynamic-side-events-DHAI7HWB.js.map +0 -7
  73. package/dist/esm/twisty-dynamic-3d-EI5ZUVCP.js.map +0 -7
  74. package/dist/esm/twsearch-ZALDQ4TE.js.map +0 -7
  75. /package/dist/esm/{chunk-JXW26CFJ.js.map → chunk-LRYMCZVI.js.map} +0 -0
  76. /package/dist/esm/{chunk-ZILJKTYP.js.map → chunk-Q7UVEISQ.js.map} +0 -0
  77. /package/dist/esm/{inside-BGMQCQ2A.js.map → inside-GPSEWHK7.js.map} +0 -0
  78. /package/dist/esm/{search-dynamic-sgs-side-events-LBEIUPJE.js.map → search-dynamic-sgs-side-events-4ZHROANX.js.map} +0 -0
  79. /package/dist/esm/{search-dynamic-sgs-unofficial-PHDE4BVE.js.map → search-dynamic-sgs-unofficial-VKBYULK5.js.map} +0 -0
  80. /package/dist/esm/{search-dynamic-solve-4x4x4-EJB3WWMV.js.map → search-dynamic-solve-4x4x4-KASG5V7K.js.map} +0 -0
@@ -1,10 +1,10 @@
1
1
  import {
2
2
  mustBeInsideWorker,
3
3
  random333Scramble
4
- } from "./chunk-TKIXG2EX.js";
5
- import "./chunk-ZILJKTYP.js";
6
- import "./chunk-NBVZ7LEM.js";
7
- import "./chunk-F6V2QBMP.js";
4
+ } from "./chunk-GXXHRHE5.js";
5
+ import "./chunk-Q7UVEISQ.js";
6
+ import "./chunk-H66X47MG.js";
7
+ import "./chunk-V4YTFIKT.js";
8
8
  import {
9
9
  Alg
10
10
  } from "./chunk-5J7SUMXR.js";
@@ -2921,4 +2921,4 @@ export {
2921
2921
  initialize,
2922
2922
  random444Scramble
2923
2923
  };
2924
- //# sourceMappingURL=search-dynamic-solve-4x4x4-EJB3WWMV.js.map
2924
+ //# sourceMappingURL=search-dynamic-solve-4x4x4-KASG5V7K.js.map
@@ -800,15 +800,15 @@ var square1SolverGetRandomPosition = function() {
800
800
  }
801
801
  return FullCube_randomCube();
802
802
  };
803
- var square1SolverGenerate = function(state) {
803
+ var square1SolverGenerate = function(pattern) {
804
804
  var search_search = new Search_Search();
805
- return Search_solution(search_search, state);
805
+ return Search_solution(search_search, pattern);
806
806
  };
807
807
  var square1SolverGetRandomScramble = function() {
808
- var randomState = square1SolverGetRandomPosition();
809
- var scrambleString = square1SolverGenerate(randomState);
808
+ var randomPattern = square1SolverGetRandomPosition();
809
+ var scrambleString = square1SolverGenerate(randomPattern);
810
810
  return {
811
- state: randomState,
811
+ pattern: randomPattern,
812
812
  scramble_string: scrambleString
813
813
  };
814
814
  };
@@ -818,4 +818,4 @@ function getRandomSquare1ScrambleString() {
818
818
  export {
819
819
  getRandomSquare1ScrambleString
820
820
  };
821
- //# sourceMappingURL=search-dynamic-solve-sq1-CWJPRQVZ.js.map
821
+ //# sourceMappingURL=search-dynamic-solve-sq1-TO7UHE6Y.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/cubing/vendor/gpl/cs0x7f/sq12phase/sq1-solver.js"],
4
- "sourcesContent": ["/*\n\nscramble_sq1.js\n\nSquare-1 Solver / Scramble Generator in JavaScript.\n\nCode by by Shuang Chen.\nCompiled to JavaScript using GWT.\n\n*/\n\nimport { randomUIntBelow } from \"random-uint-below\";\n\nfunction FullCube_copy(obj, c) {\n obj.ul = c.ul;\n obj.ur = c.ur;\n obj.dl = c.dl;\n obj.dr = c.dr;\n obj.ml = c.ml;\n}\n\nfunction FullCube_doMove(obj, move) {\n var temp;\n move <<= 2;\n if (move > 24) {\n move = 48 - move;\n temp = obj.ul;\n obj.ul = ((~~obj.ul >> move) | (obj.ur << (24 - move))) & 16777215;\n obj.ur = ((~~obj.ur >> move) | (temp << (24 - move))) & 16777215;\n } else if (move > 0) {\n temp = obj.ul;\n obj.ul = ((obj.ul << move) | (~~obj.ur >> (24 - move))) & 16777215;\n obj.ur = ((obj.ur << move) | (~~temp >> (24 - move))) & 16777215;\n } else if (move === 0) {\n temp = obj.ur;\n obj.ur = obj.dl;\n obj.dl = temp;\n obj.ml = 1 - obj.ml;\n } else if (move >= -24) {\n move = -move;\n temp = obj.dl;\n obj.dl = ((obj.dl << move) | (~~obj.dr >> (24 - move))) & 16777215;\n obj.dr = ((obj.dr << move) | (~~temp >> (24 - move))) & 16777215;\n } else if (move < -24) {\n move = 48 + move;\n temp = obj.dl;\n obj.dl = ((~~obj.dl >> move) | (obj.dr << (24 - move))) & 16777215;\n obj.dr = ((~~obj.dr >> move) | (temp << (24 - move))) & 16777215;\n }\n}\n\nfunction FullCube_getParity(obj) {\n var a;\n var b;\n var cnt;\n var i;\n var p;\n cnt = 0;\n obj.arr[0] = FullCube_pieceAt(obj, 0);\n for (i = 1; i < 24; ++i) {\n FullCube_pieceAt(obj, i) !== obj.arr[cnt] &&\n (obj.arr[++cnt] = FullCube_pieceAt(obj, i));\n }\n p = 0;\n for (a = 0; a < 16; ++a) {\n for (b = a + 1; b < 16; ++b) {\n obj.arr[a] > obj.arr[b] && (p ^= 1);\n }\n }\n return p;\n}\n\nfunction FullCube_getShapeIdx(obj) {\n var dlx;\n var drx;\n var ulx;\n var urx;\n urx = obj.ur & 1118481;\n urx |= ~~urx >> 3;\n urx |= ~~urx >> 6;\n urx = (urx & 15) | ((~~urx >> 12) & 48);\n ulx = obj.ul & 1118481;\n ulx |= ~~ulx >> 3;\n ulx |= ~~ulx >> 6;\n ulx = (ulx & 15) | ((~~ulx >> 12) & 48);\n drx = obj.dr & 1118481;\n drx |= ~~drx >> 3;\n drx |= ~~drx >> 6;\n drx = (drx & 15) | ((~~drx >> 12) & 48);\n dlx = obj.dl & 1118481;\n dlx |= ~~dlx >> 3;\n dlx |= ~~dlx >> 6;\n dlx = (dlx & 15) | ((~~dlx >> 12) & 48);\n return Shape_getShape2Idx(\n (FullCube_getParity(obj) << 24) |\n (ulx << 18) |\n (urx << 12) |\n (dlx << 6) |\n drx,\n );\n}\n\nfunction FullCube_getSquare(obj, sq) {\n var a;\n var b;\n for (a = 0; a < 8; ++a) {\n obj.prm[a] = ~~((~~FullCube_pieceAt(obj, a * 3 + 1) >> 1) << 24) >> 24;\n }\n sq.cornperm = get8Perm(obj.prm);\n sq.topEdgeFirst = FullCube_pieceAt(obj, 0) === FullCube_pieceAt(obj, 1);\n a = sq.topEdgeFirst ? 2 : 0;\n for (b = 0; b < 4; a += 3, ++b) {\n obj.prm[b] = ~~((~~FullCube_pieceAt(obj, a) >> 1) << 24) >> 24;\n }\n sq.botEdgeFirst = FullCube_pieceAt(obj, 12) === FullCube_pieceAt(obj, 13);\n a = sq.botEdgeFirst ? 14 : 12;\n for (; b < 8; a += 3, ++b) {\n obj.prm[b] = ~~((~~FullCube_pieceAt(obj, a) >> 1) << 24) >> 24;\n }\n sq.edgeperm = get8Perm(obj.prm);\n sq.ml = obj.ml;\n}\n\nfunction FullCube_pieceAt(obj, idx) {\n var ret;\n idx < 6\n ? (ret = ~~obj.ul >> ((5 - idx) << 2))\n : idx < 12\n ? (ret = ~~obj.ur >> ((11 - idx) << 2))\n : idx < 18\n ? (ret = ~~obj.dl >> ((17 - idx) << 2))\n : (ret = ~~obj.dr >> ((23 - idx) << 2));\n return ~~((ret & 15) << 24) >> 24;\n}\n\nfunction FullCube_setPiece(obj, idx, value) {\n if (idx < 6) {\n obj.ul &= ~(0xf << ((5 - idx) << 2));\n obj.ul |= value << ((5 - idx) << 2);\n } else if (idx < 12) {\n obj.ur &= ~(0xf << ((11 - idx) << 2));\n obj.ur |= value << ((11 - idx) << 2);\n } else if (idx < 18) {\n obj.dl &= ~(0xf << ((17 - idx) << 2));\n obj.dl |= value << ((17 - idx) << 2);\n } else {\n obj.dr &= ~(0xf << ((23 - idx) << 2));\n obj.dr |= value << ((23 - idx) << 2);\n }\n}\n\nfunction FullCube_FullCube__Ljava_lang_String_2V() {\n this.arr = [];\n this.prm = [];\n}\n\nfunction FullCube_randomCube() {\n var f;\n var i;\n var shape;\n var edge;\n var corner;\n var n_edge;\n var n_corner;\n var rnd;\n var m;\n f = new FullCube_FullCube__Ljava_lang_String_2V();\n shape = Shape_ShapeIdx[randomUIntBelow(3678)];\n corner = (0x01234567 << 1) | 0x11111111;\n edge = 0x01234567 << 1;\n n_corner = n_edge = 8;\n for (i = 0; i < 24; i++) {\n if (((shape >> i) & 1) === 0) {\n //edge\n rnd = randomUIntBelow(n_edge) << 2;\n FullCube_setPiece(f, 23 - i, (edge >> rnd) & 0xf);\n m = (1 << rnd) - 1;\n edge = (edge & m) + ((edge >> 4) & ~m);\n --n_edge;\n } else {\n //corner\n rnd = randomUIntBelow(n_corner) << 2;\n FullCube_setPiece(f, 23 - i, (corner >> rnd) & 0xf);\n FullCube_setPiece(f, 22 - i, (corner >> rnd) & 0xf);\n m = (1 << rnd) - 1;\n corner = (corner & m) + ((corner >> 4) & ~m);\n --n_corner;\n ++i;\n }\n }\n f.ml = randomUIntBelow(2);\n //\tconsole.log(f);\n return f;\n}\n\nfunction FullCube() {}\n\nlet _ = (FullCube_FullCube__Ljava_lang_String_2V.prototype =\n FullCube.prototype);\n_.dl = 10062778;\n_.dr = 14536702;\n_.ml = 0;\n_.ul = 70195;\n_.ur = 4544119;\nfunction Search_init2(obj) {\n var corner;\n var edge;\n var i;\n var j;\n var ml;\n var prun;\n FullCube_copy(obj.Search_d, obj.Search_c);\n for (i = 0; i < obj.Search_length1; ++i) {\n FullCube_doMove(obj.Search_d, obj.Search_move[i]);\n }\n FullCube_getSquare(obj.Search_d, obj.Search_sq);\n edge = obj.Search_sq.edgeperm;\n corner = obj.Search_sq.cornperm;\n ml = obj.Search_sq.ml;\n prun = Math.max(\n SquarePrun[(obj.Search_sq.edgeperm << 1) | ml],\n SquarePrun[(obj.Search_sq.cornperm << 1) | ml],\n );\n for (i = prun; i < obj.Search_maxlen2; ++i) {\n if (\n Search_phase2(\n obj,\n edge,\n corner,\n obj.Search_sq.topEdgeFirst,\n obj.Search_sq.botEdgeFirst,\n ml,\n i,\n obj.Search_length1,\n 0,\n )\n ) {\n for (j = 0; j < i; ++j) {\n FullCube_doMove(obj.Search_d, obj.Search_move[obj.Search_length1 + j]);\n //console.log(obj.Search_move[obj.Search_length1 + j]);\n }\n //console.log(obj.Search_d);\n //console.log(obj.Search_move);\n obj.Search_sol_string = Search_move2string(obj, i + obj.Search_length1);\n return true;\n }\n }\n return false;\n}\n\nfunction Search_move2string(obj, len) {\n var s = \"\";\n var top = 0;\n var bottom = 0;\n for (var i = len - 1; i >= 0; i--) {\n var val = obj.Search_move[i];\n //console.log(val);\n if (val > 0) {\n val = 12 - val;\n top = val > 6 ? val - 12 : val;\n } else if (val < 0) {\n val = 12 + val;\n bottom = val > 6 ? val - 12 : val;\n } else {\n if (top === 0 && bottom === 0) {\n s += \" / \";\n } else {\n s += `(${top}, ${bottom}) / `;\n }\n top = bottom = 0;\n }\n }\n if (top !== 0 || bottom !== 0) {\n s += `(${top}, ${bottom})`;\n }\n return s; // + \" (\" + len + \"t)\";\n}\n\nfunction Search_phase1(obj, shape, prunvalue, maxl, depth, lm) {\n var m;\n var prunx;\n var shapex;\n if (prunvalue === 0 && maxl < 4) {\n return maxl === 0 && Search_init2(obj);\n }\n if (lm !== 0) {\n shapex = Shape_TwistMove[shape];\n prunx = ShapePrun[shapex];\n if (prunx < maxl) {\n obj.Search_move[depth] = 0;\n if (Search_phase1(obj, shapex, prunx, maxl - 1, depth + 1, 0)) {\n return true;\n }\n }\n }\n shapex = shape;\n if (lm <= 0) {\n m = 0;\n for (;;) {\n m += Shape_TopMove[shapex];\n shapex = ~~m >> 4;\n m &= 15;\n if (m >= 12) {\n break;\n }\n prunx = ShapePrun[shapex];\n if (prunx > maxl) {\n break;\n } else if (prunx < maxl) {\n obj.Search_move[depth] = m;\n if (Search_phase1(obj, shapex, prunx, maxl - 1, depth + 1, 1)) {\n return true;\n }\n }\n }\n }\n shapex = shape;\n if (lm <= 1) {\n m = 0;\n for (;;) {\n m += Shape_BottomMove[shapex];\n shapex = ~~m >> 4;\n m &= 15;\n if (m >= 6) {\n break;\n }\n prunx = ShapePrun[shapex];\n if (prunx > maxl) {\n break;\n } else if (prunx < maxl) {\n obj.Search_move[depth] = -m;\n if (Search_phase1(obj, shapex, prunx, maxl - 1, depth + 1, 2)) {\n return true;\n }\n }\n }\n }\n return false;\n}\n\nfunction Search_phase2(\n obj,\n edge,\n corner,\n topEdgeFirst,\n botEdgeFirst,\n ml,\n maxl,\n depth,\n lm,\n) {\n var botEdgeFirstx;\n var cornerx;\n var edgex;\n var m;\n var prun1;\n var prun2;\n var topEdgeFirstx;\n if (maxl === 0 && !topEdgeFirst && botEdgeFirst) {\n return true;\n }\n if (lm !== 0 && topEdgeFirst === botEdgeFirst) {\n edgex = Square_TwistMove[edge];\n cornerx = Square_TwistMove[corner];\n if (\n SquarePrun[(edgex << 1) | (1 - ml)] < maxl &&\n SquarePrun[(cornerx << 1) | (1 - ml)] < maxl\n ) {\n obj.Search_move[depth] = 0;\n if (\n Search_phase2(\n obj,\n edgex,\n cornerx,\n topEdgeFirst,\n botEdgeFirst,\n 1 - ml,\n maxl - 1,\n depth + 1,\n 0,\n )\n ) {\n return true;\n }\n }\n }\n if (lm <= 0) {\n topEdgeFirstx = !topEdgeFirst;\n edgex = topEdgeFirstx ? Square_TopMove[edge] : edge;\n cornerx = topEdgeFirstx ? corner : Square_TopMove[corner];\n m = topEdgeFirstx ? 1 : 2;\n prun1 = SquarePrun[(edgex << 1) | ml];\n prun2 = SquarePrun[(cornerx << 1) | ml];\n while (m < 12 && prun1 <= maxl && prun1 <= maxl) {\n if (prun1 < maxl && prun2 < maxl) {\n obj.Search_move[depth] = m;\n if (\n Search_phase2(\n obj,\n edgex,\n cornerx,\n topEdgeFirstx,\n botEdgeFirst,\n ml,\n maxl - 1,\n depth + 1,\n 1,\n )\n ) {\n return true;\n }\n }\n topEdgeFirstx = !topEdgeFirstx;\n if (topEdgeFirstx) {\n edgex = Square_TopMove[edgex];\n prun1 = SquarePrun[(edgex << 1) | ml];\n m += 1;\n } else {\n cornerx = Square_TopMove[cornerx];\n prun2 = SquarePrun[(cornerx << 1) | ml];\n m += 2;\n }\n }\n }\n if (lm <= 1) {\n botEdgeFirstx = !botEdgeFirst;\n edgex = botEdgeFirstx ? Square_BottomMove[edge] : edge;\n cornerx = botEdgeFirstx ? corner : Square_BottomMove[corner];\n m = botEdgeFirstx ? 1 : 2;\n prun1 = SquarePrun[(edgex << 1) | ml];\n prun2 = SquarePrun[(cornerx << 1) | ml];\n while (m < (maxl > 3 ? 6 : 12) && prun1 <= maxl && prun1 <= maxl) {\n if (prun1 < maxl && prun2 < maxl) {\n obj.Search_move[depth] = -m;\n if (\n Search_phase2(\n obj,\n edgex,\n cornerx,\n topEdgeFirst,\n botEdgeFirstx,\n ml,\n maxl - 1,\n depth + 1,\n 2,\n )\n ) {\n return true;\n }\n }\n botEdgeFirstx = !botEdgeFirstx;\n if (botEdgeFirstx) {\n edgex = Square_BottomMove[edgex];\n prun1 = SquarePrun[(edgex << 1) | ml];\n m += 1;\n } else {\n cornerx = Square_BottomMove[cornerx];\n prun2 = SquarePrun[(cornerx << 1) | ml];\n m += 2;\n }\n }\n }\n return false;\n}\n\nfunction Search_solution(obj, c) {\n var shape;\n obj.Search_c = c;\n shape = FullCube_getShapeIdx(c);\n //console.log(shape);\n for (\n obj.Search_length1 = ShapePrun[shape];\n obj.Search_length1 < 100;\n ++obj.Search_length1\n ) {\n //console.log(obj.Search_length1);\n obj.Search_maxlen2 = Math.min(31 - obj.Search_length1, 17);\n if (\n Search_phase1(obj, shape, ShapePrun[shape], obj.Search_length1, 0, -1)\n ) {\n break;\n }\n }\n return obj.Search_sol_string;\n}\n\nfunction Search_Search() {\n this.Search_move = [];\n this.Search_d = new FullCube_FullCube__Ljava_lang_String_2V();\n this.Search_sq = new Square_Square();\n}\n\nfunction Search() {}\n\n_ = Search_Search.prototype = Search.prototype;\n_.Search_c = null;\n_.Search_length1 = 0;\n_.Search_maxlen2 = 0;\n_.Search_sol_string = null;\nlet Shape_$clinit_ran = false;\nfunction Shape_$clinit() {\n if (Shape_$clinit_ran) {\n return;\n }\n Shape_$clinit_ran = true;\n Shape_halflayer = [0, 3, 6, 12, 15, 24, 27, 30, 48, 51, 54, 60, 63];\n Shape_ShapeIdx = [];\n ShapePrun = [];\n Shape_TopMove = [];\n Shape_BottomMove = [];\n Shape_TwistMove = [];\n Shape_init();\n}\n\nfunction Shape_bottomMove(obj) {\n var move;\n var moveParity;\n move = 0;\n moveParity = 0;\n do {\n if ((obj.bottom & 2048) === 0) {\n move += 1;\n obj.bottom = obj.bottom << 1;\n } else {\n move += 2;\n obj.bottom = (obj.bottom << 2) ^ 12291;\n }\n moveParity = 1 - moveParity;\n } while ((bitCount(obj.bottom & 63) & 1) !== 0);\n (bitCount(obj.bottom) & 2) === 0 && (obj.Shape_parity ^= moveParity);\n return move;\n}\n\nfunction Shape_getIdx(obj) {\n var ret;\n ret =\n (binarySearch(Shape_ShapeIdx, (obj.top << 12) | obj.bottom) << 1) |\n obj.Shape_parity;\n return ret;\n}\n\nfunction Shape_setIdx(obj, idx) {\n obj.Shape_parity = idx & 1;\n obj.top = Shape_ShapeIdx[~~idx >> 1];\n obj.bottom = obj.top & 4095;\n obj.top >>= 12;\n}\n\nfunction Shape_topMove(obj) {\n var move;\n var moveParity;\n move = 0;\n moveParity = 0;\n do {\n if ((obj.top & 2048) === 0) {\n move += 1;\n obj.top = obj.top << 1;\n } else {\n move += 2;\n obj.top = (obj.top << 2) ^ 12291;\n }\n moveParity = 1 - moveParity;\n } while ((bitCount(obj.top & 63) & 1) !== 0);\n (bitCount(obj.top) & 2) === 0 && (obj.Shape_parity ^= moveParity);\n return move;\n}\n\nfunction Shape_Shape() {}\n\nfunction Shape_getShape2Idx(shp) {\n var ret;\n ret = (binarySearch(Shape_ShapeIdx, shp & 16777215) << 1) | (~~shp >> 24);\n return ret;\n}\n\nfunction Shape_init() {\n var count;\n var depth;\n var dl;\n var done;\n var done0;\n var dr;\n var i;\n var idx;\n var m;\n var s;\n var ul;\n var ur;\n var value;\n var p1;\n var p3;\n var temp;\n count = 0;\n for (i = 0; i < 28561; ++i) {\n dr = Shape_halflayer[i % 13];\n dl = Shape_halflayer[~~(i / 13) % 13];\n ur = Shape_halflayer[~~(~~(i / 13) / 13) % 13];\n ul = Shape_halflayer[~~(~~(~~(i / 13) / 13) / 13)];\n value = (ul << 18) | (ur << 12) | (dl << 6) | dr;\n bitCount(value) === 16 && (Shape_ShapeIdx[count++] = value);\n }\n s = new Shape_Shape();\n for (i = 0; i < 7356; ++i) {\n Shape_setIdx(s, i);\n Shape_TopMove[i] = Shape_topMove(s);\n Shape_TopMove[i] |= Shape_getIdx(s) << 4;\n Shape_setIdx(s, i);\n Shape_BottomMove[i] = Shape_bottomMove(s);\n Shape_BottomMove[i] |= Shape_getIdx(s) << 4;\n Shape_setIdx(s, i);\n temp = s.top & 63;\n p1 = bitCount(temp);\n p3 = bitCount(s.bottom & 4032);\n s.Shape_parity ^= 1 & (~~(p1 & p3) >> 1);\n s.top = (s.top & 4032) | ((~~s.bottom >> 6) & 63);\n s.bottom = (s.bottom & 63) | (temp << 6);\n Shape_TwistMove[i] = Shape_getIdx(s);\n }\n for (i = 0; i < 7536; ++i) {\n ShapePrun[i] = -1;\n }\n ShapePrun[Shape_getShape2Idx(14378715)] = 0;\n ShapePrun[Shape_getShape2Idx(31157686)] = 0;\n ShapePrun[Shape_getShape2Idx(23967451)] = 0;\n ShapePrun[Shape_getShape2Idx(7191990)] = 0;\n done = 4;\n done0 = 0;\n depth = -1;\n while (done !== done0) {\n done0 = done;\n ++depth;\n for (i = 0; i < 7536; ++i) {\n if (ShapePrun[i] === depth) {\n m = 0;\n idx = i;\n do {\n idx = Shape_TopMove[idx];\n m += idx & 15;\n idx >>= 4;\n if (ShapePrun[idx] === -1) {\n ++done;\n ShapePrun[idx] = depth + 1;\n }\n } while (m !== 12);\n m = 0;\n idx = i;\n do {\n idx = Shape_BottomMove[idx];\n m += idx & 15;\n idx >>= 4;\n if (ShapePrun[idx] === -1) {\n ++done;\n ShapePrun[idx] = depth + 1;\n }\n } while (m !== 12);\n idx = Shape_TwistMove[i];\n if (ShapePrun[idx] === -1) {\n ++done;\n ShapePrun[idx] = depth + 1;\n }\n }\n }\n }\n}\n\nfunction Shape() {}\n\n_ = Shape_Shape.prototype = Shape.prototype;\n_.bottom = 0;\n_.Shape_parity = 0;\n_.top = 0;\nvar Shape_BottomMove;\nvar Shape_ShapeIdx;\nvar ShapePrun;\nvar Shape_TopMove;\nvar Shape_TwistMove;\nvar Shape_halflayer;\nlet Square_$clinit_ran = false;\nfunction Square_$clinit() {\n if (Square_$clinit_ran) {\n return;\n }\n Square_$clinit_ran = true;\n SquarePrun = [];\n Square_TwistMove = [];\n Square_TopMove = [];\n Square_BottomMove = [];\n fact = [1, 1, 2, 6, 24, 120, 720, 5040];\n Cnk = [];\n for (var i = 0; i < 12; ++i) {\n Cnk[i] = [];\n }\n Square_init();\n}\n\nfunction Square_Square() {}\n\nfunction get8Perm(arr) {\n var i;\n var idx;\n var v;\n var val;\n idx = 0;\n val = 1985229328;\n for (i = 0; i < 7; ++i) {\n v = arr[i] << 2;\n idx = (8 - i) * idx + ((~~val >> v) & 7);\n val -= 286331152 << v;\n }\n return idx & 65535;\n}\n\nfunction Square_init() {\n var check;\n var depth;\n var done;\n var find;\n var i;\n var idx;\n var idxx;\n var inv;\n var j;\n var m;\n var ml;\n var pos;\n var temp;\n for (i = 0; i < 12; ++i) {\n Cnk[i][0] = 1;\n Cnk[i][i] = 1;\n for (j = 1; j < i; ++j) {\n Cnk[i][j] = Cnk[i - 1][j - 1] + Cnk[i - 1][j];\n }\n }\n pos = [];\n for (i = 0; i < 40320; ++i) {\n set8Perm(pos, i);\n temp = pos[2];\n pos[2] = pos[4];\n pos[4] = temp;\n temp = pos[3];\n pos[3] = pos[5];\n pos[5] = temp;\n Square_TwistMove[i] = get8Perm(pos);\n set8Perm(pos, i);\n temp = pos[0];\n pos[0] = pos[1];\n pos[1] = pos[2];\n pos[2] = pos[3];\n pos[3] = temp;\n Square_TopMove[i] = get8Perm(pos);\n set8Perm(pos, i);\n temp = pos[4];\n pos[4] = pos[5];\n pos[5] = pos[6];\n pos[6] = pos[7];\n pos[7] = temp;\n Square_BottomMove[i] = get8Perm(pos);\n }\n for (i = 0; i < 80640; ++i) {\n SquarePrun[i] = -1;\n }\n SquarePrun[0] = 0;\n depth = 0;\n done = 1;\n while (done < 80640) {\n // console.log(done);\n inv = depth >= 11;\n find = inv ? -1 : depth;\n check = inv ? depth : -1;\n ++depth;\n OUT: for (i = 0; i < 80640; ++i) {\n if (SquarePrun[i] === find) {\n idx = ~~i >> 1;\n ml = i & 1;\n idxx = (Square_TwistMove[idx] << 1) | (1 - ml);\n if (SquarePrun[idxx] === check) {\n ++done;\n SquarePrun[inv ? i : idxx] = ~~(depth << 24) >> 24;\n if (inv) {\n continue OUT;\n }\n }\n idxx = idx;\n for (m = 0; m < 4; ++m) {\n idxx = Square_TopMove[idxx];\n if (SquarePrun[(idxx << 1) | ml] === check) {\n ++done;\n SquarePrun[inv ? i : (idxx << 1) | ml] = ~~(depth << 24) >> 24;\n if (inv) {\n continue OUT;\n }\n }\n }\n for (m = 0; m < 4; ++m) {\n idxx = Square_BottomMove[idxx];\n if (SquarePrun[(idxx << 1) | ml] === check) {\n ++done;\n SquarePrun[inv ? i : (idxx << 1) | ml] = ~~(depth << 24) >> 24;\n if (inv) {\n continue OUT;\n }\n }\n }\n }\n }\n }\n}\n\nfunction set8Perm(arr, idx) {\n var i;\n var m;\n var p;\n var v;\n var val;\n val = 1985229328;\n for (i = 0; i < 7; ++i) {\n p = fact[7 - i];\n v = ~~(idx / p);\n idx -= v * p;\n v <<= 2;\n arr[i] = ~~(((~~val >> v) & 7) << 24) >> 24;\n m = (1 << v) - 1;\n val = (val & m) + ((~~val >> 4) & ~m);\n }\n arr[7] = ~~(val << 24) >> 24;\n}\n\nfunction Square() {}\n\n_ = Square_Square.prototype = Square.prototype;\n_.botEdgeFirst = false;\n_.cornperm = 0;\n_.edgeperm = 0;\n_.ml = 0;\n_.topEdgeFirst = false;\nvar Square_BottomMove;\nvar Cnk;\nvar SquarePrun;\nvar Square_TopMove;\nvar Square_TwistMove;\nvar fact;\n\nfunction bitCount(x) {\n x -= (~~x >> 1) & 1431655765;\n x = ((~~x >> 2) & 858993459) + (x & 858993459);\n x = ((~~x >> 4) + x) & 252645135;\n x += ~~x >> 8;\n x += ~~x >> 16;\n return x & 63;\n}\n\nfunction binarySearch(sortedArray, key) {\n var high;\n var low;\n var mid;\n var midVal;\n low = 0;\n high = sortedArray.length - 1;\n while (low <= high) {\n mid = low + (~~(high - low) >> 1);\n midVal = sortedArray[mid];\n if (midVal < key) {\n low = mid + 1;\n } else if (midVal > key) {\n high = mid - 1;\n } else {\n return mid;\n }\n }\n return -low - 1;\n}\n\n/*\n * Some helper functions.\n */\n\nvar square1Solver_initialized = false;\n\nvar square1SolverInitialize = function (doneCallback, _, statusCallback) {\n if (!square1Solver_initialized) {\n Shape_$clinit();\n Square_$clinit();\n }\n\n if (statusCallback) {\n statusCallback(\"Done initializing Square-1.\");\n }\n\n square1Solver_initialized = true;\n if (doneCallback != null) {\n doneCallback();\n }\n};\n\nvar square1SolverGetRandomPosition = function () {\n if (!square1Solver_initialized) {\n square1SolverInitialize();\n }\n return FullCube_randomCube();\n};\n\nvar square1SolverGenerate = function (state) {\n var search_search = new Search_Search(); // Can this be factored out?\n return Search_solution(search_search, state);\n};\n\nvar square1SolverGetRandomScramble = function () {\n var randomState = square1SolverGetRandomPosition();\n var scrambleString = square1SolverGenerate(randomState);\n\n return {\n state: randomState,\n scramble_string: scrambleString,\n };\n};\n\nexport function getRandomSquare1ScrambleString() {\n return square1SolverGetRandomScramble().scramble_string;\n}\n"],
5
- "mappings": ";AAWA,SAAS,uBAAuB;AAEhC,SAAS,cAAc,KAAK,GAAG;AAC7B,MAAI,KAAK,EAAE;AACX,MAAI,KAAK,EAAE;AACX,MAAI,KAAK,EAAE;AACX,MAAI,KAAK,EAAE;AACX,MAAI,KAAK,EAAE;AACb;AAEA,SAAS,gBAAgB,KAAK,MAAM;AAClC,MAAI;AACJ,WAAS;AACT,MAAI,OAAO,IAAI;AACb,WAAO,KAAK;AACZ,WAAO,IAAI;AACX,QAAI,MAAO,CAAC,CAAC,IAAI,MAAM,OAAS,IAAI,MAAO,KAAK,QAAU;AAC1D,QAAI,MAAO,CAAC,CAAC,IAAI,MAAM,OAAS,QAAS,KAAK,QAAU;AAAA,EAC1D,WAAW,OAAO,GAAG;AACnB,WAAO,IAAI;AACX,QAAI,MAAO,IAAI,MAAM,OAAS,CAAC,CAAC,IAAI,MAAO,KAAK,QAAU;AAC1D,QAAI,MAAO,IAAI,MAAM,OAAS,CAAC,CAAC,QAAS,KAAK,QAAU;AAAA,EAC1D,WAAW,SAAS,GAAG;AACrB,WAAO,IAAI;AACX,QAAI,KAAK,IAAI;AACb,QAAI,KAAK;AACT,QAAI,KAAK,IAAI,IAAI;AAAA,EACnB,WAAW,QAAQ,KAAK;AACtB,WAAO,CAAC;AACR,WAAO,IAAI;AACX,QAAI,MAAO,IAAI,MAAM,OAAS,CAAC,CAAC,IAAI,MAAO,KAAK,QAAU;AAC1D,QAAI,MAAO,IAAI,MAAM,OAAS,CAAC,CAAC,QAAS,KAAK,QAAU;AAAA,EAC1D,WAAW,OAAO,KAAK;AACrB,WAAO,KAAK;AACZ,WAAO,IAAI;AACX,QAAI,MAAO,CAAC,CAAC,IAAI,MAAM,OAAS,IAAI,MAAO,KAAK,QAAU;AAC1D,QAAI,MAAO,CAAC,CAAC,IAAI,MAAM,OAAS,QAAS,KAAK,QAAU;AAAA,EAC1D;AACF;AAEA,SAAS,mBAAmB,KAAK;AAC/B,MAAI;AACJ,MAAI;AACJ,MAAI;AACJ,MAAI;AACJ,MAAI;AACJ,QAAM;AACN,MAAI,IAAI,CAAC,IAAI,iBAAiB,KAAK,CAAC;AACpC,OAAK,IAAI,GAAG,IAAI,IAAI,EAAE,GAAG;AACvB,qBAAiB,KAAK,CAAC,MAAM,IAAI,IAAI,GAAG,MACrC,IAAI,IAAI,EAAE,GAAG,IAAI,iBAAiB,KAAK,CAAC;AAAA,EAC7C;AACA,MAAI;AACJ,OAAK,IAAI,GAAG,IAAI,IAAI,EAAE,GAAG;AACvB,SAAK,IAAI,IAAI,GAAG,IAAI,IAAI,EAAE,GAAG;AAC3B,UAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,KAAK;AAAA,IACnC;AAAA,EACF;AACA,SAAO;AACT;AAEA,SAAS,qBAAqB,KAAK;AACjC,MAAI;AACJ,MAAI;AACJ,MAAI;AACJ,MAAI;AACJ,QAAM,IAAI,KAAK;AACf,SAAO,CAAC,CAAC,OAAO;AAChB,SAAO,CAAC,CAAC,OAAO;AAChB,QAAO,MAAM,KAAQ,CAAC,CAAC,OAAO,KAAM;AACpC,QAAM,IAAI,KAAK;AACf,SAAO,CAAC,CAAC,OAAO;AAChB,SAAO,CAAC,CAAC,OAAO;AAChB,QAAO,MAAM,KAAQ,CAAC,CAAC,OAAO,KAAM;AACpC,QAAM,IAAI,KAAK;AACf,SAAO,CAAC,CAAC,OAAO;AAChB,SAAO,CAAC,CAAC,OAAO;AAChB,QAAO,MAAM,KAAQ,CAAC,CAAC,OAAO,KAAM;AACpC,QAAM,IAAI,KAAK;AACf,SAAO,CAAC,CAAC,OAAO;AAChB,SAAO,CAAC,CAAC,OAAO;AAChB,QAAO,MAAM,KAAQ,CAAC,CAAC,OAAO,KAAM;AACpC,SAAO;AAAA,IACJ,mBAAmB,GAAG,KAAK,KACzB,OAAO,KACP,OAAO,KACP,OAAO,IACR;AAAA,EACJ;AACF;AAEA,SAAS,mBAAmB,KAAK,IAAI;AACnC,MAAI;AACJ,MAAI;AACJ,OAAK,IAAI,GAAG,IAAI,GAAG,EAAE,GAAG;AACtB,QAAI,IAAI,CAAC,IAAI,CAAC,EAAG,CAAC,CAAC,iBAAiB,KAAK,IAAI,IAAI,CAAC,KAAK,KAAM,OAAO;AAAA,EACtE;AACA,KAAG,WAAW,SAAS,IAAI,GAAG;AAC9B,KAAG,eAAe,iBAAiB,KAAK,CAAC,MAAM,iBAAiB,KAAK,CAAC;AACtE,MAAI,GAAG,eAAe,IAAI;AAC1B,OAAK,IAAI,GAAG,IAAI,GAAG,KAAK,GAAG,EAAE,GAAG;AAC9B,QAAI,IAAI,CAAC,IAAI,CAAC,EAAG,CAAC,CAAC,iBAAiB,KAAK,CAAC,KAAK,KAAM,OAAO;AAAA,EAC9D;AACA,KAAG,eAAe,iBAAiB,KAAK,EAAE,MAAM,iBAAiB,KAAK,EAAE;AACxE,MAAI,GAAG,eAAe,KAAK;AAC3B,SAAO,IAAI,GAAG,KAAK,GAAG,EAAE,GAAG;AACzB,QAAI,IAAI,CAAC,IAAI,CAAC,EAAG,CAAC,CAAC,iBAAiB,KAAK,CAAC,KAAK,KAAM,OAAO;AAAA,EAC9D;AACA,KAAG,WAAW,SAAS,IAAI,GAAG;AAC9B,KAAG,KAAK,IAAI;AACd;AAEA,SAAS,iBAAiB,KAAK,KAAK;AAClC,MAAI;AACJ,QAAM,IACD,MAAM,CAAC,CAAC,IAAI,OAAQ,IAAI,OAAQ,KACjC,MAAM,KACL,MAAM,CAAC,CAAC,IAAI,OAAQ,KAAK,OAAQ,KAClC,MAAM,KACL,MAAM,CAAC,CAAC,IAAI,OAAQ,KAAK,OAAQ,KACjC,MAAM,CAAC,CAAC,IAAI,OAAQ,KAAK,OAAQ;AACtC,SAAO,CAAC,GAAG,MAAM,OAAO,OAAO;AACjC;AAEA,SAAS,kBAAkB,KAAK,KAAK,OAAO;AAC1C,MAAI,MAAM,GAAG;AACX,QAAI,MAAM,EAAE,OAAS,IAAI,OAAQ;AACjC,QAAI,MAAM,UAAW,IAAI,OAAQ;AAAA,EACnC,WAAW,MAAM,IAAI;AACnB,QAAI,MAAM,EAAE,OAAS,KAAK,OAAQ;AAClC,QAAI,MAAM,UAAW,KAAK,OAAQ;AAAA,EACpC,WAAW,MAAM,IAAI;AACnB,QAAI,MAAM,EAAE,OAAS,KAAK,OAAQ;AAClC,QAAI,MAAM,UAAW,KAAK,OAAQ;AAAA,EACpC,OAAO;AACL,QAAI,MAAM,EAAE,OAAS,KAAK,OAAQ;AAClC,QAAI,MAAM,UAAW,KAAK,OAAQ;AAAA,EACpC;AACF;AAEA,SAAS,0CAA0C;AACjD,OAAK,MAAM,CAAC;AACZ,OAAK,MAAM,CAAC;AACd;AAEA,SAAS,sBAAsB;AAC7B,MAAI;AACJ,MAAI;AACJ,MAAI;AACJ,MAAI;AACJ,MAAI;AACJ,MAAI;AACJ,MAAI;AACJ,MAAI;AACJ,MAAI;AACJ,MAAI,IAAI,wCAAwC;AAChD,UAAQ,eAAe,gBAAgB,IAAI,CAAC;AAC5C,WAAU,YAAc,IAAK;AAC7B,SAAO,YAAc;AACrB,aAAW,SAAS;AACpB,OAAK,IAAI,GAAG,IAAI,IAAI,KAAK;AACvB,SAAM,SAAS,IAAK,OAAO,GAAG;AAE5B,YAAM,gBAAgB,MAAM,KAAK;AACjC,wBAAkB,GAAG,KAAK,GAAI,QAAQ,MAAO,EAAG;AAChD,WAAK,KAAK,OAAO;AACjB,cAAQ,OAAO,MAAO,QAAQ,IAAK,CAAC;AACpC,QAAE;AAAA,IACJ,OAAO;AAEL,YAAM,gBAAgB,QAAQ,KAAK;AACnC,wBAAkB,GAAG,KAAK,GAAI,UAAU,MAAO,EAAG;AAClD,wBAAkB,GAAG,KAAK,GAAI,UAAU,MAAO,EAAG;AAClD,WAAK,KAAK,OAAO;AACjB,gBAAU,SAAS,MAAO,UAAU,IAAK,CAAC;AAC1C,QAAE;AACF,QAAE;AAAA,IACJ;AAAA,EACF;AACA,IAAE,KAAK,gBAAgB,CAAC;AAExB,SAAO;AACT;AAEA,SAAS,WAAW;AAAC;AAErB,IAAI,IAAK,wCAAwC,YAC/C,SAAS;AACX,EAAE,KAAK;AACP,EAAE,KAAK;AACP,EAAE,KAAK;AACP,EAAE,KAAK;AACP,EAAE,KAAK;AACP,SAAS,aAAa,KAAK;AACzB,MAAI;AACJ,MAAI;AACJ,MAAI;AACJ,MAAI;AACJ,MAAI;AACJ,MAAI;AACJ,gBAAc,IAAI,UAAU,IAAI,QAAQ;AACxC,OAAK,IAAI,GAAG,IAAI,IAAI,gBAAgB,EAAE,GAAG;AACvC,oBAAgB,IAAI,UAAU,IAAI,YAAY,CAAC,CAAC;AAAA,EAClD;AACA,qBAAmB,IAAI,UAAU,IAAI,SAAS;AAC9C,SAAO,IAAI,UAAU;AACrB,WAAS,IAAI,UAAU;AACvB,OAAK,IAAI,UAAU;AACnB,SAAO,KAAK;AAAA,IACV,WAAY,IAAI,UAAU,YAAY,IAAK,EAAE;AAAA,IAC7C,WAAY,IAAI,UAAU,YAAY,IAAK,EAAE;AAAA,EAC/C;AACA,OAAK,IAAI,MAAM,IAAI,IAAI,gBAAgB,EAAE,GAAG;AAC1C,QACE;AAAA,MACE;AAAA,MACA;AAAA,MACA;AAAA,MACA,IAAI,UAAU;AAAA,MACd,IAAI,UAAU;AAAA,MACd;AAAA,MACA;AAAA,MACA,IAAI;AAAA,MACJ;AAAA,IACF,GACA;AACA,WAAK,IAAI,GAAG,IAAI,GAAG,EAAE,GAAG;AACtB,wBAAgB,IAAI,UAAU,IAAI,YAAY,IAAI,iBAAiB,CAAC,CAAC;AAAA,MAEvE;AAGA,UAAI,oBAAoB,mBAAmB,KAAK,IAAI,IAAI,cAAc;AACtE,aAAO;AAAA,IACT;AAAA,EACF;AACA,SAAO;AACT;AAEA,SAAS,mBAAmB,KAAK,KAAK;AACpC,MAAI,IAAI;AACR,MAAI,MAAM;AACV,MAAI,SAAS;AACb,WAAS,IAAI,MAAM,GAAG,KAAK,GAAG,KAAK;AACjC,QAAI,MAAM,IAAI,YAAY,CAAC;AAE3B,QAAI,MAAM,GAAG;AACX,YAAM,KAAK;AACX,YAAM,MAAM,IAAI,MAAM,KAAK;AAAA,IAC7B,WAAW,MAAM,GAAG;AAClB,YAAM,KAAK;AACX,eAAS,MAAM,IAAI,MAAM,KAAK;AAAA,IAChC,OAAO;AACL,UAAI,QAAQ,KAAK,WAAW,GAAG;AAC7B,aAAK;AAAA,MACP,OAAO;AACL,aAAK,IAAI,GAAG,KAAK,MAAM;AAAA,MACzB;AACA,YAAM,SAAS;AAAA,IACjB;AAAA,EACF;AACA,MAAI,QAAQ,KAAK,WAAW,GAAG;AAC7B,SAAK,IAAI,GAAG,KAAK,MAAM;AAAA,EACzB;AACA,SAAO;AACT;AAEA,SAAS,cAAc,KAAK,OAAO,WAAW,MAAM,OAAO,IAAI;AAC7D,MAAI;AACJ,MAAI;AACJ,MAAI;AACJ,MAAI,cAAc,KAAK,OAAO,GAAG;AAC/B,WAAO,SAAS,KAAK,aAAa,GAAG;AAAA,EACvC;AACA,MAAI,OAAO,GAAG;AACZ,aAAS,gBAAgB,KAAK;AAC9B,YAAQ,UAAU,MAAM;AACxB,QAAI,QAAQ,MAAM;AAChB,UAAI,YAAY,KAAK,IAAI;AACzB,UAAI,cAAc,KAAK,QAAQ,OAAO,OAAO,GAAG,QAAQ,GAAG,CAAC,GAAG;AAC7D,eAAO;AAAA,MACT;AAAA,IACF;AAAA,EACF;AACA,WAAS;AACT,MAAI,MAAM,GAAG;AACX,QAAI;AACJ,eAAS;AACP,WAAK,cAAc,MAAM;AACzB,eAAS,CAAC,CAAC,KAAK;AAChB,WAAK;AACL,UAAI,KAAK,IAAI;AACX;AAAA,MACF;AACA,cAAQ,UAAU,MAAM;AACxB,UAAI,QAAQ,MAAM;AAChB;AAAA,MACF,WAAW,QAAQ,MAAM;AACvB,YAAI,YAAY,KAAK,IAAI;AACzB,YAAI,cAAc,KAAK,QAAQ,OAAO,OAAO,GAAG,QAAQ,GAAG,CAAC,GAAG;AAC7D,iBAAO;AAAA,QACT;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACA,WAAS;AACT,MAAI,MAAM,GAAG;AACX,QAAI;AACJ,eAAS;AACP,WAAK,iBAAiB,MAAM;AAC5B,eAAS,CAAC,CAAC,KAAK;AAChB,WAAK;AACL,UAAI,KAAK,GAAG;AACV;AAAA,MACF;AACA,cAAQ,UAAU,MAAM;AACxB,UAAI,QAAQ,MAAM;AAChB;AAAA,MACF,WAAW,QAAQ,MAAM;AACvB,YAAI,YAAY,KAAK,IAAI,CAAC;AAC1B,YAAI,cAAc,KAAK,QAAQ,OAAO,OAAO,GAAG,QAAQ,GAAG,CAAC,GAAG;AAC7D,iBAAO;AAAA,QACT;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACA,SAAO;AACT;AAEA,SAAS,cACP,KACA,MACA,QACA,cACA,cACA,IACA,MACA,OACA,IACA;AACA,MAAI;AACJ,MAAI;AACJ,MAAI;AACJ,MAAI;AACJ,MAAI;AACJ,MAAI;AACJ,MAAI;AACJ,MAAI,SAAS,KAAK,CAAC,gBAAgB,cAAc;AAC/C,WAAO;AAAA,EACT;AACA,MAAI,OAAO,KAAK,iBAAiB,cAAc;AAC7C,YAAQ,iBAAiB,IAAI;AAC7B,cAAU,iBAAiB,MAAM;AACjC,QACE,WAAY,SAAS,IAAM,IAAI,EAAG,IAAI,QACtC,WAAY,WAAW,IAAM,IAAI,EAAG,IAAI,MACxC;AACA,UAAI,YAAY,KAAK,IAAI;AACzB,UACE;AAAA,QACE;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA,IAAI;AAAA,QACJ,OAAO;AAAA,QACP,QAAQ;AAAA,QACR;AAAA,MACF,GACA;AACA,eAAO;AAAA,MACT;AAAA,IACF;AAAA,EACF;AACA,MAAI,MAAM,GAAG;AACX,oBAAgB,CAAC;AACjB,YAAQ,gBAAgB,eAAe,IAAI,IAAI;AAC/C,cAAU,gBAAgB,SAAS,eAAe,MAAM;AACxD,QAAI,gBAAgB,IAAI;AACxB,YAAQ,WAAY,SAAS,IAAK,EAAE;AACpC,YAAQ,WAAY,WAAW,IAAK,EAAE;AACtC,WAAO,IAAI,MAAM,SAAS,QAAQ,SAAS,MAAM;AAC/C,UAAI,QAAQ,QAAQ,QAAQ,MAAM;AAChC,YAAI,YAAY,KAAK,IAAI;AACzB,YACE;AAAA,UACE;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA,OAAO;AAAA,UACP,QAAQ;AAAA,UACR;AAAA,QACF,GACA;AACA,iBAAO;AAAA,QACT;AAAA,MACF;AACA,sBAAgB,CAAC;AACjB,UAAI,eAAe;AACjB,gBAAQ,eAAe,KAAK;AAC5B,gBAAQ,WAAY,SAAS,IAAK,EAAE;AACpC,aAAK;AAAA,MACP,OAAO;AACL,kBAAU,eAAe,OAAO;AAChC,gBAAQ,WAAY,WAAW,IAAK,EAAE;AACtC,aAAK;AAAA,MACP;AAAA,IACF;AAAA,EACF;AACA,MAAI,MAAM,GAAG;AACX,oBAAgB,CAAC;AACjB,YAAQ,gBAAgB,kBAAkB,IAAI,IAAI;AAClD,cAAU,gBAAgB,SAAS,kBAAkB,MAAM;AAC3D,QAAI,gBAAgB,IAAI;AACxB,YAAQ,WAAY,SAAS,IAAK,EAAE;AACpC,YAAQ,WAAY,WAAW,IAAK,EAAE;AACtC,WAAO,KAAK,OAAO,IAAI,IAAI,OAAO,SAAS,QAAQ,SAAS,MAAM;AAChE,UAAI,QAAQ,QAAQ,QAAQ,MAAM;AAChC,YAAI,YAAY,KAAK,IAAI,CAAC;AAC1B,YACE;AAAA,UACE;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA,OAAO;AAAA,UACP,QAAQ;AAAA,UACR;AAAA,QACF,GACA;AACA,iBAAO;AAAA,QACT;AAAA,MACF;AACA,sBAAgB,CAAC;AACjB,UAAI,eAAe;AACjB,gBAAQ,kBAAkB,KAAK;AAC/B,gBAAQ,WAAY,SAAS,IAAK,EAAE;AACpC,aAAK;AAAA,MACP,OAAO;AACL,kBAAU,kBAAkB,OAAO;AACnC,gBAAQ,WAAY,WAAW,IAAK,EAAE;AACtC,aAAK;AAAA,MACP;AAAA,IACF;AAAA,EACF;AACA,SAAO;AACT;AAEA,SAAS,gBAAgB,KAAK,GAAG;AAC/B,MAAI;AACJ,MAAI,WAAW;AACf,UAAQ,qBAAqB,CAAC;AAE9B,OACE,IAAI,iBAAiB,UAAU,KAAK,GACpC,IAAI,iBAAiB,KACrB,EAAE,IAAI,gBACN;AAEA,QAAI,iBAAiB,KAAK,IAAI,KAAK,IAAI,gBAAgB,EAAE;AACzD,QACE,cAAc,KAAK,OAAO,UAAU,KAAK,GAAG,IAAI,gBAAgB,GAAG,EAAE,GACrE;AACA;AAAA,IACF;AAAA,EACF;AACA,SAAO,IAAI;AACb;AAEA,SAAS,gBAAgB;AACvB,OAAK,cAAc,CAAC;AACpB,OAAK,WAAW,IAAI,wCAAwC;AAC5D,OAAK,YAAY,IAAI,cAAc;AACrC;AAEA,SAAS,SAAS;AAAC;AAEnB,IAAI,cAAc,YAAY,OAAO;AACrC,EAAE,WAAW;AACb,EAAE,iBAAiB;AACnB,EAAE,iBAAiB;AACnB,EAAE,oBAAoB;AACtB,IAAI,oBAAoB;AACxB,SAAS,gBAAgB;AACvB,MAAI,mBAAmB;AACrB;AAAA,EACF;AACA,sBAAoB;AACpB,oBAAkB,CAAC,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE;AAClE,mBAAiB,CAAC;AAClB,cAAY,CAAC;AACb,kBAAgB,CAAC;AACjB,qBAAmB,CAAC;AACpB,oBAAkB,CAAC;AACnB,aAAW;AACb;AAEA,SAAS,iBAAiB,KAAK;AAC7B,MAAI;AACJ,MAAI;AACJ,SAAO;AACP,eAAa;AACb,KAAG;AACD,SAAK,IAAI,SAAS,UAAU,GAAG;AAC7B,cAAQ;AACR,UAAI,SAAS,IAAI,UAAU;AAAA,IAC7B,OAAO;AACL,cAAQ;AACR,UAAI,SAAU,IAAI,UAAU,IAAK;AAAA,IACnC;AACA,iBAAa,IAAI;AAAA,EACnB,UAAU,SAAS,IAAI,SAAS,EAAE,IAAI,OAAO;AAC7C,GAAC,SAAS,IAAI,MAAM,IAAI,OAAO,MAAM,IAAI,gBAAgB;AACzD,SAAO;AACT;AAEA,SAAS,aAAa,KAAK;AACzB,MAAI;AACJ,QACG,aAAa,gBAAiB,IAAI,OAAO,KAAM,IAAI,MAAM,KAAK,IAC/D,IAAI;AACN,SAAO;AACT;AAEA,SAAS,aAAa,KAAK,KAAK;AAC9B,MAAI,eAAe,MAAM;AACzB,MAAI,MAAM,eAAe,CAAC,CAAC,OAAO,CAAC;AACnC,MAAI,SAAS,IAAI,MAAM;AACvB,MAAI,QAAQ;AACd;AAEA,SAAS,cAAc,KAAK;AAC1B,MAAI;AACJ,MAAI;AACJ,SAAO;AACP,eAAa;AACb,KAAG;AACD,SAAK,IAAI,MAAM,UAAU,GAAG;AAC1B,cAAQ;AACR,UAAI,MAAM,IAAI,OAAO;AAAA,IACvB,OAAO;AACL,cAAQ;AACR,UAAI,MAAO,IAAI,OAAO,IAAK;AAAA,IAC7B;AACA,iBAAa,IAAI;AAAA,EACnB,UAAU,SAAS,IAAI,MAAM,EAAE,IAAI,OAAO;AAC1C,GAAC,SAAS,IAAI,GAAG,IAAI,OAAO,MAAM,IAAI,gBAAgB;AACtD,SAAO;AACT;AAEA,SAAS,cAAc;AAAC;AAExB,SAAS,mBAAmB,KAAK;AAC/B,MAAI;AACJ,QAAO,aAAa,gBAAgB,MAAM,QAAQ,KAAK,IAAM,CAAC,CAAC,OAAO;AACtE,SAAO;AACT;AAEA,SAAS,aAAa;AACpB,MAAI;AACJ,MAAI;AACJ,MAAI;AACJ,MAAI;AACJ,MAAI;AACJ,MAAI;AACJ,MAAI;AACJ,MAAI;AACJ,MAAI;AACJ,MAAI;AACJ,MAAI;AACJ,MAAI;AACJ,MAAI;AACJ,MAAI;AACJ,MAAI;AACJ,MAAI;AACJ,UAAQ;AACR,OAAK,IAAI,GAAG,IAAI,OAAO,EAAE,GAAG;AAC1B,SAAK,gBAAgB,IAAI,EAAE;AAC3B,SAAK,gBAAgB,CAAC,EAAE,IAAI,MAAM,EAAE;AACpC,SAAK,gBAAgB,CAAC,EAAE,CAAC,EAAE,IAAI,MAAM,MAAM,EAAE;AAC7C,SAAK,gBAAgB,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,MAAM,MAAM,GAAG;AACjD,YAAS,MAAM,KAAO,MAAM,KAAO,MAAM,IAAK;AAC9C,aAAS,KAAK,MAAM,OAAO,eAAe,OAAO,IAAI;AAAA,EACvD;AACA,MAAI,IAAI,YAAY;AACpB,OAAK,IAAI,GAAG,IAAI,MAAM,EAAE,GAAG;AACzB,iBAAa,GAAG,CAAC;AACjB,kBAAc,CAAC,IAAI,cAAc,CAAC;AAClC,kBAAc,CAAC,KAAK,aAAa,CAAC,KAAK;AACvC,iBAAa,GAAG,CAAC;AACjB,qBAAiB,CAAC,IAAI,iBAAiB,CAAC;AACxC,qBAAiB,CAAC,KAAK,aAAa,CAAC,KAAK;AAC1C,iBAAa,GAAG,CAAC;AACjB,WAAO,EAAE,MAAM;AACf,SAAK,SAAS,IAAI;AAClB,SAAK,SAAS,EAAE,SAAS,IAAI;AAC7B,MAAE,gBAAgB,IAAK,CAAC,EAAE,KAAK,OAAO;AACtC,MAAE,MAAO,EAAE,MAAM,OAAU,CAAC,CAAC,EAAE,UAAU,IAAK;AAC9C,MAAE,SAAU,EAAE,SAAS,KAAO,QAAQ;AACtC,oBAAgB,CAAC,IAAI,aAAa,CAAC;AAAA,EACrC;AACA,OAAK,IAAI,GAAG,IAAI,MAAM,EAAE,GAAG;AACzB,cAAU,CAAC,IAAI;AAAA,EACjB;AACA,YAAU,mBAAmB,QAAQ,CAAC,IAAI;AAC1C,YAAU,mBAAmB,QAAQ,CAAC,IAAI;AAC1C,YAAU,mBAAmB,QAAQ,CAAC,IAAI;AAC1C,YAAU,mBAAmB,OAAO,CAAC,IAAI;AACzC,SAAO;AACP,UAAQ;AACR,UAAQ;AACR,SAAO,SAAS,OAAO;AACrB,YAAQ;AACR,MAAE;AACF,SAAK,IAAI,GAAG,IAAI,MAAM,EAAE,GAAG;AACzB,UAAI,UAAU,CAAC,MAAM,OAAO;AAC1B,YAAI;AACJ,cAAM;AACN,WAAG;AACD,gBAAM,cAAc,GAAG;AACvB,eAAK,MAAM;AACX,kBAAQ;AACR,cAAI,UAAU,GAAG,MAAM,IAAI;AACzB,cAAE;AACF,sBAAU,GAAG,IAAI,QAAQ;AAAA,UAC3B;AAAA,QACF,SAAS,MAAM;AACf,YAAI;AACJ,cAAM;AACN,WAAG;AACD,gBAAM,iBAAiB,GAAG;AAC1B,eAAK,MAAM;AACX,kBAAQ;AACR,cAAI,UAAU,GAAG,MAAM,IAAI;AACzB,cAAE;AACF,sBAAU,GAAG,IAAI,QAAQ;AAAA,UAC3B;AAAA,QACF,SAAS,MAAM;AACf,cAAM,gBAAgB,CAAC;AACvB,YAAI,UAAU,GAAG,MAAM,IAAI;AACzB,YAAE;AACF,oBAAU,GAAG,IAAI,QAAQ;AAAA,QAC3B;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;AAEA,SAAS,QAAQ;AAAC;AAElB,IAAI,YAAY,YAAY,MAAM;AAClC,EAAE,SAAS;AACX,EAAE,eAAe;AACjB,EAAE,MAAM;AACR,IAAI;AACJ,IAAI;AACJ,IAAI;AACJ,IAAI;AACJ,IAAI;AACJ,IAAI;AACJ,IAAI,qBAAqB;AACzB,SAAS,iBAAiB;AACxB,MAAI,oBAAoB;AACtB;AAAA,EACF;AACA,uBAAqB;AACrB,eAAa,CAAC;AACd,qBAAmB,CAAC;AACpB,mBAAiB,CAAC;AAClB,sBAAoB,CAAC;AACrB,SAAO,CAAC,GAAG,GAAG,GAAG,GAAG,IAAI,KAAK,KAAK,IAAI;AACtC,QAAM,CAAC;AACP,WAAS,IAAI,GAAG,IAAI,IAAI,EAAE,GAAG;AAC3B,QAAI,CAAC,IAAI,CAAC;AAAA,EACZ;AACA,cAAY;AACd;AAEA,SAAS,gBAAgB;AAAC;AAE1B,SAAS,SAAS,KAAK;AACrB,MAAI;AACJ,MAAI;AACJ,MAAI;AACJ,MAAI;AACJ,QAAM;AACN,QAAM;AACN,OAAK,IAAI,GAAG,IAAI,GAAG,EAAE,GAAG;AACtB,QAAI,IAAI,CAAC,KAAK;AACd,WAAO,IAAI,KAAK,OAAQ,CAAC,CAAC,OAAO,IAAK;AACtC,WAAO,aAAa;AAAA,EACtB;AACA,SAAO,MAAM;AACf;AAEA,SAAS,cAAc;AACrB,MAAI;AACJ,MAAI;AACJ,MAAI;AACJ,MAAI;AACJ,MAAI;AACJ,MAAI;AACJ,MAAI;AACJ,MAAI;AACJ,MAAI;AACJ,MAAI;AACJ,MAAI;AACJ,MAAI;AACJ,MAAI;AACJ,OAAK,IAAI,GAAG,IAAI,IAAI,EAAE,GAAG;AACvB,QAAI,CAAC,EAAE,CAAC,IAAI;AACZ,QAAI,CAAC,EAAE,CAAC,IAAI;AACZ,SAAK,IAAI,GAAG,IAAI,GAAG,EAAE,GAAG;AACtB,UAAI,CAAC,EAAE,CAAC,IAAI,IAAI,IAAI,CAAC,EAAE,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,EAAE,CAAC;AAAA,IAC9C;AAAA,EACF;AACA,QAAM,CAAC;AACP,OAAK,IAAI,GAAG,IAAI,OAAO,EAAE,GAAG;AAC1B,aAAS,KAAK,CAAC;AACf,WAAO,IAAI,CAAC;AACZ,QAAI,CAAC,IAAI,IAAI,CAAC;AACd,QAAI,CAAC,IAAI;AACT,WAAO,IAAI,CAAC;AACZ,QAAI,CAAC,IAAI,IAAI,CAAC;AACd,QAAI,CAAC,IAAI;AACT,qBAAiB,CAAC,IAAI,SAAS,GAAG;AAClC,aAAS,KAAK,CAAC;AACf,WAAO,IAAI,CAAC;AACZ,QAAI,CAAC,IAAI,IAAI,CAAC;AACd,QAAI,CAAC,IAAI,IAAI,CAAC;AACd,QAAI,CAAC,IAAI,IAAI,CAAC;AACd,QAAI,CAAC,IAAI;AACT,mBAAe,CAAC,IAAI,SAAS,GAAG;AAChC,aAAS,KAAK,CAAC;AACf,WAAO,IAAI,CAAC;AACZ,QAAI,CAAC,IAAI,IAAI,CAAC;AACd,QAAI,CAAC,IAAI,IAAI,CAAC;AACd,QAAI,CAAC,IAAI,IAAI,CAAC;AACd,QAAI,CAAC,IAAI;AACT,sBAAkB,CAAC,IAAI,SAAS,GAAG;AAAA,EACrC;AACA,OAAK,IAAI,GAAG,IAAI,OAAO,EAAE,GAAG;AAC1B,eAAW,CAAC,IAAI;AAAA,EAClB;AACA,aAAW,CAAC,IAAI;AAChB,UAAQ;AACR,SAAO;AACP,SAAO,OAAO,OAAO;AAEnB,UAAM,SAAS;AACf,WAAO,MAAM,KAAK;AAClB,YAAQ,MAAM,QAAQ;AACtB,MAAE;AACF;AAAK,WAAK,IAAI,GAAG,IAAI,OAAO,EAAE,GAAG;AAC/B,YAAI,WAAW,CAAC,MAAM,MAAM;AAC1B,gBAAM,CAAC,CAAC,KAAK;AACb,eAAK,IAAI;AACT,iBAAQ,iBAAiB,GAAG,KAAK,IAAM,IAAI;AAC3C,cAAI,WAAW,IAAI,MAAM,OAAO;AAC9B,cAAE;AACF,uBAAW,MAAM,IAAI,IAAI,IAAI,CAAC,EAAE,SAAS,OAAO;AAChD,gBAAI,KAAK;AACP,uBAAS;AAAA,YACX;AAAA,UACF;AACA,iBAAO;AACP,eAAK,IAAI,GAAG,IAAI,GAAG,EAAE,GAAG;AACtB,mBAAO,eAAe,IAAI;AAC1B,gBAAI,WAAY,QAAQ,IAAK,EAAE,MAAM,OAAO;AAC1C,gBAAE;AACF,yBAAW,MAAM,IAAK,QAAQ,IAAK,EAAE,IAAI,CAAC,EAAE,SAAS,OAAO;AAC5D,kBAAI,KAAK;AACP,yBAAS;AAAA,cACX;AAAA,YACF;AAAA,UACF;AACA,eAAK,IAAI,GAAG,IAAI,GAAG,EAAE,GAAG;AACtB,mBAAO,kBAAkB,IAAI;AAC7B,gBAAI,WAAY,QAAQ,IAAK,EAAE,MAAM,OAAO;AAC1C,gBAAE;AACF,yBAAW,MAAM,IAAK,QAAQ,IAAK,EAAE,IAAI,CAAC,EAAE,SAAS,OAAO;AAC5D,kBAAI,KAAK;AACP,yBAAS;AAAA,cACX;AAAA,YACF;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,EACF;AACF;AAEA,SAAS,SAAS,KAAK,KAAK;AAC1B,MAAI;AACJ,MAAI;AACJ,MAAI;AACJ,MAAI;AACJ,MAAI;AACJ,QAAM;AACN,OAAK,IAAI,GAAG,IAAI,GAAG,EAAE,GAAG;AACtB,QAAI,KAAK,IAAI,CAAC;AACd,QAAI,CAAC,EAAE,MAAM;AACb,WAAO,IAAI;AACX,UAAM;AACN,QAAI,CAAC,IAAI,CAAC,GAAI,CAAC,CAAC,OAAO,IAAK,MAAM,OAAO;AACzC,SAAK,KAAK,KAAK;AACf,WAAO,MAAM,MAAO,CAAC,CAAC,OAAO,IAAK,CAAC;AAAA,EACrC;AACA,MAAI,CAAC,IAAI,CAAC,EAAE,OAAO,OAAO;AAC5B;AAEA,SAAS,SAAS;AAAC;AAEnB,IAAI,cAAc,YAAY,OAAO;AACrC,EAAE,eAAe;AACjB,EAAE,WAAW;AACb,EAAE,WAAW;AACb,EAAE,KAAK;AACP,EAAE,eAAe;AACjB,IAAI;AACJ,IAAI;AACJ,IAAI;AACJ,IAAI;AACJ,IAAI;AACJ,IAAI;AAEJ,SAAS,SAAS,GAAG;AACnB,OAAM,CAAC,CAAC,KAAK,IAAK;AAClB,OAAM,CAAC,CAAC,KAAK,IAAK,cAAc,IAAI;AACpC,OAAM,CAAC,CAAC,KAAK,KAAK,IAAK;AACvB,OAAK,CAAC,CAAC,KAAK;AACZ,OAAK,CAAC,CAAC,KAAK;AACZ,SAAO,IAAI;AACb;AAEA,SAAS,aAAa,aAAa,KAAK;AACtC,MAAI;AACJ,MAAI;AACJ,MAAI;AACJ,MAAI;AACJ,QAAM;AACN,SAAO,YAAY,SAAS;AAC5B,SAAO,OAAO,MAAM;AAClB,UAAM,OAAO,CAAC,EAAE,OAAO,QAAQ;AAC/B,aAAS,YAAY,GAAG;AACxB,QAAI,SAAS,KAAK;AAChB,YAAM,MAAM;AAAA,IACd,WAAW,SAAS,KAAK;AACvB,aAAO,MAAM;AAAA,IACf,OAAO;AACL,aAAO;AAAA,IACT;AAAA,EACF;AACA,SAAO,CAAC,MAAM;AAChB;AAMA,IAAI,4BAA4B;AAEhC,IAAI,0BAA0B,SAAU,cAAcA,IAAG,gBAAgB;AACvE,MAAI,CAAC,2BAA2B;AAC9B,kBAAc;AACd,mBAAe;AAAA,EACjB;AAEA,MAAI,gBAAgB;AAClB,mBAAe,6BAA6B;AAAA,EAC9C;AAEA,8BAA4B;AAC5B,MAAI,gBAAgB,MAAM;AACxB,iBAAa;AAAA,EACf;AACF;AAEA,IAAI,iCAAiC,WAAY;AAC/C,MAAI,CAAC,2BAA2B;AAC9B,4BAAwB;AAAA,EAC1B;AACA,SAAO,oBAAoB;AAC7B;AAEA,IAAI,wBAAwB,SAAU,OAAO;AAC3C,MAAI,gBAAgB,IAAI,cAAc;AACtC,SAAO,gBAAgB,eAAe,KAAK;AAC7C;AAEA,IAAI,iCAAiC,WAAY;AAC/C,MAAI,cAAc,+BAA+B;AACjD,MAAI,iBAAiB,sBAAsB,WAAW;AAEtD,SAAO;AAAA,IACL,OAAO;AAAA,IACP,iBAAiB;AAAA,EACnB;AACF;AAEO,SAAS,iCAAiC;AAC/C,SAAO,+BAA+B,EAAE;AAC1C;",
4
+ "sourcesContent": ["/*\n\nscramble_sq1.js\n\nSquare-1 Solver / Scramble Generator in JavaScript.\n\nCode by by Shuang Chen.\nCompiled to JavaScript using GWT.\n\n*/\n\nimport { randomUIntBelow } from \"random-uint-below\";\n\nfunction FullCube_copy(obj, c) {\n obj.ul = c.ul;\n obj.ur = c.ur;\n obj.dl = c.dl;\n obj.dr = c.dr;\n obj.ml = c.ml;\n}\n\nfunction FullCube_doMove(obj, move) {\n var temp;\n move <<= 2;\n if (move > 24) {\n move = 48 - move;\n temp = obj.ul;\n obj.ul = ((~~obj.ul >> move) | (obj.ur << (24 - move))) & 16777215;\n obj.ur = ((~~obj.ur >> move) | (temp << (24 - move))) & 16777215;\n } else if (move > 0) {\n temp = obj.ul;\n obj.ul = ((obj.ul << move) | (~~obj.ur >> (24 - move))) & 16777215;\n obj.ur = ((obj.ur << move) | (~~temp >> (24 - move))) & 16777215;\n } else if (move === 0) {\n temp = obj.ur;\n obj.ur = obj.dl;\n obj.dl = temp;\n obj.ml = 1 - obj.ml;\n } else if (move >= -24) {\n move = -move;\n temp = obj.dl;\n obj.dl = ((obj.dl << move) | (~~obj.dr >> (24 - move))) & 16777215;\n obj.dr = ((obj.dr << move) | (~~temp >> (24 - move))) & 16777215;\n } else if (move < -24) {\n move = 48 + move;\n temp = obj.dl;\n obj.dl = ((~~obj.dl >> move) | (obj.dr << (24 - move))) & 16777215;\n obj.dr = ((~~obj.dr >> move) | (temp << (24 - move))) & 16777215;\n }\n}\n\nfunction FullCube_getParity(obj) {\n var a;\n var b;\n var cnt;\n var i;\n var p;\n cnt = 0;\n obj.arr[0] = FullCube_pieceAt(obj, 0);\n for (i = 1; i < 24; ++i) {\n FullCube_pieceAt(obj, i) !== obj.arr[cnt] &&\n (obj.arr[++cnt] = FullCube_pieceAt(obj, i));\n }\n p = 0;\n for (a = 0; a < 16; ++a) {\n for (b = a + 1; b < 16; ++b) {\n obj.arr[a] > obj.arr[b] && (p ^= 1);\n }\n }\n return p;\n}\n\nfunction FullCube_getShapeIdx(obj) {\n var dlx;\n var drx;\n var ulx;\n var urx;\n urx = obj.ur & 1118481;\n urx |= ~~urx >> 3;\n urx |= ~~urx >> 6;\n urx = (urx & 15) | ((~~urx >> 12) & 48);\n ulx = obj.ul & 1118481;\n ulx |= ~~ulx >> 3;\n ulx |= ~~ulx >> 6;\n ulx = (ulx & 15) | ((~~ulx >> 12) & 48);\n drx = obj.dr & 1118481;\n drx |= ~~drx >> 3;\n drx |= ~~drx >> 6;\n drx = (drx & 15) | ((~~drx >> 12) & 48);\n dlx = obj.dl & 1118481;\n dlx |= ~~dlx >> 3;\n dlx |= ~~dlx >> 6;\n dlx = (dlx & 15) | ((~~dlx >> 12) & 48);\n return Shape_getShape2Idx(\n (FullCube_getParity(obj) << 24) |\n (ulx << 18) |\n (urx << 12) |\n (dlx << 6) |\n drx,\n );\n}\n\nfunction FullCube_getSquare(obj, sq) {\n var a;\n var b;\n for (a = 0; a < 8; ++a) {\n obj.prm[a] = ~~((~~FullCube_pieceAt(obj, a * 3 + 1) >> 1) << 24) >> 24;\n }\n sq.cornperm = get8Perm(obj.prm);\n sq.topEdgeFirst = FullCube_pieceAt(obj, 0) === FullCube_pieceAt(obj, 1);\n a = sq.topEdgeFirst ? 2 : 0;\n for (b = 0; b < 4; a += 3, ++b) {\n obj.prm[b] = ~~((~~FullCube_pieceAt(obj, a) >> 1) << 24) >> 24;\n }\n sq.botEdgeFirst = FullCube_pieceAt(obj, 12) === FullCube_pieceAt(obj, 13);\n a = sq.botEdgeFirst ? 14 : 12;\n for (; b < 8; a += 3, ++b) {\n obj.prm[b] = ~~((~~FullCube_pieceAt(obj, a) >> 1) << 24) >> 24;\n }\n sq.edgeperm = get8Perm(obj.prm);\n sq.ml = obj.ml;\n}\n\nfunction FullCube_pieceAt(obj, idx) {\n var ret;\n idx < 6\n ? (ret = ~~obj.ul >> ((5 - idx) << 2))\n : idx < 12\n ? (ret = ~~obj.ur >> ((11 - idx) << 2))\n : idx < 18\n ? (ret = ~~obj.dl >> ((17 - idx) << 2))\n : (ret = ~~obj.dr >> ((23 - idx) << 2));\n return ~~((ret & 15) << 24) >> 24;\n}\n\nfunction FullCube_setPiece(obj, idx, value) {\n if (idx < 6) {\n obj.ul &= ~(0xf << ((5 - idx) << 2));\n obj.ul |= value << ((5 - idx) << 2);\n } else if (idx < 12) {\n obj.ur &= ~(0xf << ((11 - idx) << 2));\n obj.ur |= value << ((11 - idx) << 2);\n } else if (idx < 18) {\n obj.dl &= ~(0xf << ((17 - idx) << 2));\n obj.dl |= value << ((17 - idx) << 2);\n } else {\n obj.dr &= ~(0xf << ((23 - idx) << 2));\n obj.dr |= value << ((23 - idx) << 2);\n }\n}\n\nfunction FullCube_FullCube__Ljava_lang_String_2V() {\n this.arr = [];\n this.prm = [];\n}\n\nfunction FullCube_randomCube() {\n var f;\n var i;\n var shape;\n var edge;\n var corner;\n var n_edge;\n var n_corner;\n var rnd;\n var m;\n f = new FullCube_FullCube__Ljava_lang_String_2V();\n shape = Shape_ShapeIdx[randomUIntBelow(3678)];\n corner = (0x01234567 << 1) | 0x11111111;\n edge = 0x01234567 << 1;\n n_corner = n_edge = 8;\n for (i = 0; i < 24; i++) {\n if (((shape >> i) & 1) === 0) {\n //edge\n rnd = randomUIntBelow(n_edge) << 2;\n FullCube_setPiece(f, 23 - i, (edge >> rnd) & 0xf);\n m = (1 << rnd) - 1;\n edge = (edge & m) + ((edge >> 4) & ~m);\n --n_edge;\n } else {\n //corner\n rnd = randomUIntBelow(n_corner) << 2;\n FullCube_setPiece(f, 23 - i, (corner >> rnd) & 0xf);\n FullCube_setPiece(f, 22 - i, (corner >> rnd) & 0xf);\n m = (1 << rnd) - 1;\n corner = (corner & m) + ((corner >> 4) & ~m);\n --n_corner;\n ++i;\n }\n }\n f.ml = randomUIntBelow(2);\n //\tconsole.log(f);\n return f;\n}\n\nfunction FullCube() {}\n\nlet _ = (FullCube_FullCube__Ljava_lang_String_2V.prototype =\n FullCube.prototype);\n_.dl = 10062778;\n_.dr = 14536702;\n_.ml = 0;\n_.ul = 70195;\n_.ur = 4544119;\nfunction Search_init2(obj) {\n var corner;\n var edge;\n var i;\n var j;\n var ml;\n var prun;\n FullCube_copy(obj.Search_d, obj.Search_c);\n for (i = 0; i < obj.Search_length1; ++i) {\n FullCube_doMove(obj.Search_d, obj.Search_move[i]);\n }\n FullCube_getSquare(obj.Search_d, obj.Search_sq);\n edge = obj.Search_sq.edgeperm;\n corner = obj.Search_sq.cornperm;\n ml = obj.Search_sq.ml;\n prun = Math.max(\n SquarePrun[(obj.Search_sq.edgeperm << 1) | ml],\n SquarePrun[(obj.Search_sq.cornperm << 1) | ml],\n );\n for (i = prun; i < obj.Search_maxlen2; ++i) {\n if (\n Search_phase2(\n obj,\n edge,\n corner,\n obj.Search_sq.topEdgeFirst,\n obj.Search_sq.botEdgeFirst,\n ml,\n i,\n obj.Search_length1,\n 0,\n )\n ) {\n for (j = 0; j < i; ++j) {\n FullCube_doMove(obj.Search_d, obj.Search_move[obj.Search_length1 + j]);\n //console.log(obj.Search_move[obj.Search_length1 + j]);\n }\n //console.log(obj.Search_d);\n //console.log(obj.Search_move);\n obj.Search_sol_string = Search_move2string(obj, i + obj.Search_length1);\n return true;\n }\n }\n return false;\n}\n\nfunction Search_move2string(obj, len) {\n var s = \"\";\n var top = 0;\n var bottom = 0;\n for (var i = len - 1; i >= 0; i--) {\n var val = obj.Search_move[i];\n //console.log(val);\n if (val > 0) {\n val = 12 - val;\n top = val > 6 ? val - 12 : val;\n } else if (val < 0) {\n val = 12 + val;\n bottom = val > 6 ? val - 12 : val;\n } else {\n if (top === 0 && bottom === 0) {\n s += \" / \";\n } else {\n s += `(${top}, ${bottom}) / `;\n }\n top = bottom = 0;\n }\n }\n if (top !== 0 || bottom !== 0) {\n s += `(${top}, ${bottom})`;\n }\n return s; // + \" (\" + len + \"t)\";\n}\n\nfunction Search_phase1(obj, shape, prunvalue, maxl, depth, lm) {\n var m;\n var prunx;\n var shapex;\n if (prunvalue === 0 && maxl < 4) {\n return maxl === 0 && Search_init2(obj);\n }\n if (lm !== 0) {\n shapex = Shape_TwistMove[shape];\n prunx = ShapePrun[shapex];\n if (prunx < maxl) {\n obj.Search_move[depth] = 0;\n if (Search_phase1(obj, shapex, prunx, maxl - 1, depth + 1, 0)) {\n return true;\n }\n }\n }\n shapex = shape;\n if (lm <= 0) {\n m = 0;\n for (;;) {\n m += Shape_TopMove[shapex];\n shapex = ~~m >> 4;\n m &= 15;\n if (m >= 12) {\n break;\n }\n prunx = ShapePrun[shapex];\n if (prunx > maxl) {\n break;\n } else if (prunx < maxl) {\n obj.Search_move[depth] = m;\n if (Search_phase1(obj, shapex, prunx, maxl - 1, depth + 1, 1)) {\n return true;\n }\n }\n }\n }\n shapex = shape;\n if (lm <= 1) {\n m = 0;\n for (;;) {\n m += Shape_BottomMove[shapex];\n shapex = ~~m >> 4;\n m &= 15;\n if (m >= 6) {\n break;\n }\n prunx = ShapePrun[shapex];\n if (prunx > maxl) {\n break;\n } else if (prunx < maxl) {\n obj.Search_move[depth] = -m;\n if (Search_phase1(obj, shapex, prunx, maxl - 1, depth + 1, 2)) {\n return true;\n }\n }\n }\n }\n return false;\n}\n\nfunction Search_phase2(\n obj,\n edge,\n corner,\n topEdgeFirst,\n botEdgeFirst,\n ml,\n maxl,\n depth,\n lm,\n) {\n var botEdgeFirstx;\n var cornerx;\n var edgex;\n var m;\n var prun1;\n var prun2;\n var topEdgeFirstx;\n if (maxl === 0 && !topEdgeFirst && botEdgeFirst) {\n return true;\n }\n if (lm !== 0 && topEdgeFirst === botEdgeFirst) {\n edgex = Square_TwistMove[edge];\n cornerx = Square_TwistMove[corner];\n if (\n SquarePrun[(edgex << 1) | (1 - ml)] < maxl &&\n SquarePrun[(cornerx << 1) | (1 - ml)] < maxl\n ) {\n obj.Search_move[depth] = 0;\n if (\n Search_phase2(\n obj,\n edgex,\n cornerx,\n topEdgeFirst,\n botEdgeFirst,\n 1 - ml,\n maxl - 1,\n depth + 1,\n 0,\n )\n ) {\n return true;\n }\n }\n }\n if (lm <= 0) {\n topEdgeFirstx = !topEdgeFirst;\n edgex = topEdgeFirstx ? Square_TopMove[edge] : edge;\n cornerx = topEdgeFirstx ? corner : Square_TopMove[corner];\n m = topEdgeFirstx ? 1 : 2;\n prun1 = SquarePrun[(edgex << 1) | ml];\n prun2 = SquarePrun[(cornerx << 1) | ml];\n while (m < 12 && prun1 <= maxl && prun1 <= maxl) {\n if (prun1 < maxl && prun2 < maxl) {\n obj.Search_move[depth] = m;\n if (\n Search_phase2(\n obj,\n edgex,\n cornerx,\n topEdgeFirstx,\n botEdgeFirst,\n ml,\n maxl - 1,\n depth + 1,\n 1,\n )\n ) {\n return true;\n }\n }\n topEdgeFirstx = !topEdgeFirstx;\n if (topEdgeFirstx) {\n edgex = Square_TopMove[edgex];\n prun1 = SquarePrun[(edgex << 1) | ml];\n m += 1;\n } else {\n cornerx = Square_TopMove[cornerx];\n prun2 = SquarePrun[(cornerx << 1) | ml];\n m += 2;\n }\n }\n }\n if (lm <= 1) {\n botEdgeFirstx = !botEdgeFirst;\n edgex = botEdgeFirstx ? Square_BottomMove[edge] : edge;\n cornerx = botEdgeFirstx ? corner : Square_BottomMove[corner];\n m = botEdgeFirstx ? 1 : 2;\n prun1 = SquarePrun[(edgex << 1) | ml];\n prun2 = SquarePrun[(cornerx << 1) | ml];\n while (m < (maxl > 3 ? 6 : 12) && prun1 <= maxl && prun1 <= maxl) {\n if (prun1 < maxl && prun2 < maxl) {\n obj.Search_move[depth] = -m;\n if (\n Search_phase2(\n obj,\n edgex,\n cornerx,\n topEdgeFirst,\n botEdgeFirstx,\n ml,\n maxl - 1,\n depth + 1,\n 2,\n )\n ) {\n return true;\n }\n }\n botEdgeFirstx = !botEdgeFirstx;\n if (botEdgeFirstx) {\n edgex = Square_BottomMove[edgex];\n prun1 = SquarePrun[(edgex << 1) | ml];\n m += 1;\n } else {\n cornerx = Square_BottomMove[cornerx];\n prun2 = SquarePrun[(cornerx << 1) | ml];\n m += 2;\n }\n }\n }\n return false;\n}\n\nfunction Search_solution(obj, c) {\n var shape;\n obj.Search_c = c;\n shape = FullCube_getShapeIdx(c);\n //console.log(shape);\n for (\n obj.Search_length1 = ShapePrun[shape];\n obj.Search_length1 < 100;\n ++obj.Search_length1\n ) {\n //console.log(obj.Search_length1);\n obj.Search_maxlen2 = Math.min(31 - obj.Search_length1, 17);\n if (\n Search_phase1(obj, shape, ShapePrun[shape], obj.Search_length1, 0, -1)\n ) {\n break;\n }\n }\n return obj.Search_sol_string;\n}\n\nfunction Search_Search() {\n this.Search_move = [];\n this.Search_d = new FullCube_FullCube__Ljava_lang_String_2V();\n this.Search_sq = new Square_Square();\n}\n\nfunction Search() {}\n\n_ = Search_Search.prototype = Search.prototype;\n_.Search_c = null;\n_.Search_length1 = 0;\n_.Search_maxlen2 = 0;\n_.Search_sol_string = null;\nlet Shape_$clinit_ran = false;\nfunction Shape_$clinit() {\n if (Shape_$clinit_ran) {\n return;\n }\n Shape_$clinit_ran = true;\n Shape_halflayer = [0, 3, 6, 12, 15, 24, 27, 30, 48, 51, 54, 60, 63];\n Shape_ShapeIdx = [];\n ShapePrun = [];\n Shape_TopMove = [];\n Shape_BottomMove = [];\n Shape_TwistMove = [];\n Shape_init();\n}\n\nfunction Shape_bottomMove(obj) {\n var move;\n var moveParity;\n move = 0;\n moveParity = 0;\n do {\n if ((obj.bottom & 2048) === 0) {\n move += 1;\n obj.bottom = obj.bottom << 1;\n } else {\n move += 2;\n obj.bottom = (obj.bottom << 2) ^ 12291;\n }\n moveParity = 1 - moveParity;\n } while ((bitCount(obj.bottom & 63) & 1) !== 0);\n (bitCount(obj.bottom) & 2) === 0 && (obj.Shape_parity ^= moveParity);\n return move;\n}\n\nfunction Shape_getIdx(obj) {\n var ret;\n ret =\n (binarySearch(Shape_ShapeIdx, (obj.top << 12) | obj.bottom) << 1) |\n obj.Shape_parity;\n return ret;\n}\n\nfunction Shape_setIdx(obj, idx) {\n obj.Shape_parity = idx & 1;\n obj.top = Shape_ShapeIdx[~~idx >> 1];\n obj.bottom = obj.top & 4095;\n obj.top >>= 12;\n}\n\nfunction Shape_topMove(obj) {\n var move;\n var moveParity;\n move = 0;\n moveParity = 0;\n do {\n if ((obj.top & 2048) === 0) {\n move += 1;\n obj.top = obj.top << 1;\n } else {\n move += 2;\n obj.top = (obj.top << 2) ^ 12291;\n }\n moveParity = 1 - moveParity;\n } while ((bitCount(obj.top & 63) & 1) !== 0);\n (bitCount(obj.top) & 2) === 0 && (obj.Shape_parity ^= moveParity);\n return move;\n}\n\nfunction Shape_Shape() {}\n\nfunction Shape_getShape2Idx(shp) {\n var ret;\n ret = (binarySearch(Shape_ShapeIdx, shp & 16777215) << 1) | (~~shp >> 24);\n return ret;\n}\n\nfunction Shape_init() {\n var count;\n var depth;\n var dl;\n var done;\n var done0;\n var dr;\n var i;\n var idx;\n var m;\n var s;\n var ul;\n var ur;\n var value;\n var p1;\n var p3;\n var temp;\n count = 0;\n for (i = 0; i < 28561; ++i) {\n dr = Shape_halflayer[i % 13];\n dl = Shape_halflayer[~~(i / 13) % 13];\n ur = Shape_halflayer[~~(~~(i / 13) / 13) % 13];\n ul = Shape_halflayer[~~(~~(~~(i / 13) / 13) / 13)];\n value = (ul << 18) | (ur << 12) | (dl << 6) | dr;\n bitCount(value) === 16 && (Shape_ShapeIdx[count++] = value);\n }\n s = new Shape_Shape();\n for (i = 0; i < 7356; ++i) {\n Shape_setIdx(s, i);\n Shape_TopMove[i] = Shape_topMove(s);\n Shape_TopMove[i] |= Shape_getIdx(s) << 4;\n Shape_setIdx(s, i);\n Shape_BottomMove[i] = Shape_bottomMove(s);\n Shape_BottomMove[i] |= Shape_getIdx(s) << 4;\n Shape_setIdx(s, i);\n temp = s.top & 63;\n p1 = bitCount(temp);\n p3 = bitCount(s.bottom & 4032);\n s.Shape_parity ^= 1 & (~~(p1 & p3) >> 1);\n s.top = (s.top & 4032) | ((~~s.bottom >> 6) & 63);\n s.bottom = (s.bottom & 63) | (temp << 6);\n Shape_TwistMove[i] = Shape_getIdx(s);\n }\n for (i = 0; i < 7536; ++i) {\n ShapePrun[i] = -1;\n }\n ShapePrun[Shape_getShape2Idx(14378715)] = 0;\n ShapePrun[Shape_getShape2Idx(31157686)] = 0;\n ShapePrun[Shape_getShape2Idx(23967451)] = 0;\n ShapePrun[Shape_getShape2Idx(7191990)] = 0;\n done = 4;\n done0 = 0;\n depth = -1;\n while (done !== done0) {\n done0 = done;\n ++depth;\n for (i = 0; i < 7536; ++i) {\n if (ShapePrun[i] === depth) {\n m = 0;\n idx = i;\n do {\n idx = Shape_TopMove[idx];\n m += idx & 15;\n idx >>= 4;\n if (ShapePrun[idx] === -1) {\n ++done;\n ShapePrun[idx] = depth + 1;\n }\n } while (m !== 12);\n m = 0;\n idx = i;\n do {\n idx = Shape_BottomMove[idx];\n m += idx & 15;\n idx >>= 4;\n if (ShapePrun[idx] === -1) {\n ++done;\n ShapePrun[idx] = depth + 1;\n }\n } while (m !== 12);\n idx = Shape_TwistMove[i];\n if (ShapePrun[idx] === -1) {\n ++done;\n ShapePrun[idx] = depth + 1;\n }\n }\n }\n }\n}\n\nfunction Shape() {}\n\n_ = Shape_Shape.prototype = Shape.prototype;\n_.bottom = 0;\n_.Shape_parity = 0;\n_.top = 0;\nvar Shape_BottomMove;\nvar Shape_ShapeIdx;\nvar ShapePrun;\nvar Shape_TopMove;\nvar Shape_TwistMove;\nvar Shape_halflayer;\nlet Square_$clinit_ran = false;\nfunction Square_$clinit() {\n if (Square_$clinit_ran) {\n return;\n }\n Square_$clinit_ran = true;\n SquarePrun = [];\n Square_TwistMove = [];\n Square_TopMove = [];\n Square_BottomMove = [];\n fact = [1, 1, 2, 6, 24, 120, 720, 5040];\n Cnk = [];\n for (var i = 0; i < 12; ++i) {\n Cnk[i] = [];\n }\n Square_init();\n}\n\nfunction Square_Square() {}\n\nfunction get8Perm(arr) {\n var i;\n var idx;\n var v;\n var val;\n idx = 0;\n val = 1985229328;\n for (i = 0; i < 7; ++i) {\n v = arr[i] << 2;\n idx = (8 - i) * idx + ((~~val >> v) & 7);\n val -= 286331152 << v;\n }\n return idx & 65535;\n}\n\nfunction Square_init() {\n var check;\n var depth;\n var done;\n var find;\n var i;\n var idx;\n var idxx;\n var inv;\n var j;\n var m;\n var ml;\n var pos;\n var temp;\n for (i = 0; i < 12; ++i) {\n Cnk[i][0] = 1;\n Cnk[i][i] = 1;\n for (j = 1; j < i; ++j) {\n Cnk[i][j] = Cnk[i - 1][j - 1] + Cnk[i - 1][j];\n }\n }\n pos = [];\n for (i = 0; i < 40320; ++i) {\n set8Perm(pos, i);\n temp = pos[2];\n pos[2] = pos[4];\n pos[4] = temp;\n temp = pos[3];\n pos[3] = pos[5];\n pos[5] = temp;\n Square_TwistMove[i] = get8Perm(pos);\n set8Perm(pos, i);\n temp = pos[0];\n pos[0] = pos[1];\n pos[1] = pos[2];\n pos[2] = pos[3];\n pos[3] = temp;\n Square_TopMove[i] = get8Perm(pos);\n set8Perm(pos, i);\n temp = pos[4];\n pos[4] = pos[5];\n pos[5] = pos[6];\n pos[6] = pos[7];\n pos[7] = temp;\n Square_BottomMove[i] = get8Perm(pos);\n }\n for (i = 0; i < 80640; ++i) {\n SquarePrun[i] = -1;\n }\n SquarePrun[0] = 0;\n depth = 0;\n done = 1;\n while (done < 80640) {\n // console.log(done);\n inv = depth >= 11;\n find = inv ? -1 : depth;\n check = inv ? depth : -1;\n ++depth;\n OUT: for (i = 0; i < 80640; ++i) {\n if (SquarePrun[i] === find) {\n idx = ~~i >> 1;\n ml = i & 1;\n idxx = (Square_TwistMove[idx] << 1) | (1 - ml);\n if (SquarePrun[idxx] === check) {\n ++done;\n SquarePrun[inv ? i : idxx] = ~~(depth << 24) >> 24;\n if (inv) {\n continue OUT;\n }\n }\n idxx = idx;\n for (m = 0; m < 4; ++m) {\n idxx = Square_TopMove[idxx];\n if (SquarePrun[(idxx << 1) | ml] === check) {\n ++done;\n SquarePrun[inv ? i : (idxx << 1) | ml] = ~~(depth << 24) >> 24;\n if (inv) {\n continue OUT;\n }\n }\n }\n for (m = 0; m < 4; ++m) {\n idxx = Square_BottomMove[idxx];\n if (SquarePrun[(idxx << 1) | ml] === check) {\n ++done;\n SquarePrun[inv ? i : (idxx << 1) | ml] = ~~(depth << 24) >> 24;\n if (inv) {\n continue OUT;\n }\n }\n }\n }\n }\n }\n}\n\nfunction set8Perm(arr, idx) {\n var i;\n var m;\n var p;\n var v;\n var val;\n val = 1985229328;\n for (i = 0; i < 7; ++i) {\n p = fact[7 - i];\n v = ~~(idx / p);\n idx -= v * p;\n v <<= 2;\n arr[i] = ~~(((~~val >> v) & 7) << 24) >> 24;\n m = (1 << v) - 1;\n val = (val & m) + ((~~val >> 4) & ~m);\n }\n arr[7] = ~~(val << 24) >> 24;\n}\n\nfunction Square() {}\n\n_ = Square_Square.prototype = Square.prototype;\n_.botEdgeFirst = false;\n_.cornperm = 0;\n_.edgeperm = 0;\n_.ml = 0;\n_.topEdgeFirst = false;\nvar Square_BottomMove;\nvar Cnk;\nvar SquarePrun;\nvar Square_TopMove;\nvar Square_TwistMove;\nvar fact;\n\nfunction bitCount(x) {\n x -= (~~x >> 1) & 1431655765;\n x = ((~~x >> 2) & 858993459) + (x & 858993459);\n x = ((~~x >> 4) + x) & 252645135;\n x += ~~x >> 8;\n x += ~~x >> 16;\n return x & 63;\n}\n\nfunction binarySearch(sortedArray, key) {\n var high;\n var low;\n var mid;\n var midVal;\n low = 0;\n high = sortedArray.length - 1;\n while (low <= high) {\n mid = low + (~~(high - low) >> 1);\n midVal = sortedArray[mid];\n if (midVal < key) {\n low = mid + 1;\n } else if (midVal > key) {\n high = mid - 1;\n } else {\n return mid;\n }\n }\n return -low - 1;\n}\n\n/*\n * Some helper functions.\n */\n\nvar square1Solver_initialized = false;\n\nvar square1SolverInitialize = function (doneCallback, _, statusCallback) {\n if (!square1Solver_initialized) {\n Shape_$clinit();\n Square_$clinit();\n }\n\n if (statusCallback) {\n statusCallback(\"Done initializing Square-1.\");\n }\n\n square1Solver_initialized = true;\n if (doneCallback != null) {\n doneCallback();\n }\n};\n\nvar square1SolverGetRandomPosition = function () {\n if (!square1Solver_initialized) {\n square1SolverInitialize();\n }\n return FullCube_randomCube();\n};\n\nvar square1SolverGenerate = function (pattern) {\n var search_search = new Search_Search(); // Can this be factored out?\n return Search_solution(search_search, pattern);\n};\n\nvar square1SolverGetRandomScramble = function () {\n var randomPattern = square1SolverGetRandomPosition();\n var scrambleString = square1SolverGenerate(randomPattern);\n\n return {\n pattern: randomPattern,\n scramble_string: scrambleString,\n };\n};\n\nexport function getRandomSquare1ScrambleString() {\n return square1SolverGetRandomScramble().scramble_string;\n}\n"],
5
+ "mappings": "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",
6
6
  "names": ["_"]
7
7
  }
@@ -9,7 +9,7 @@ import "./chunk-ZYCJIZDN.js";
9
9
  // src/cubing/search/worker-workarounds/search-worker-entry.js
10
10
  if (exposeAPI.expose) {
11
11
  (async () => {
12
- await import("./inside-BGMQCQ2A.js");
12
+ await import("./inside-GPSEWHK7.js");
13
13
  const messagePort = globalThis.postMessage ? globalThis : await nodeEndpointPort();
14
14
  messagePort.postMessage("comlink-exposed");
15
15
  })();
@@ -18,22 +18,22 @@ import {
18
18
  rawRenderPooled,
19
19
  setCameraFromOrbitCoordinates,
20
20
  setTwistyDebug
21
- } from "../chunk-JXW26CFJ.js";
21
+ } from "../chunk-LRYMCZVI.js";
22
22
  import {
23
23
  countAnimatedLeaves,
24
24
  countMetricMoves,
25
25
  countMoves
26
- } from "../chunk-45VMKYXT.js";
26
+ } from "../chunk-6FC7BO5U.js";
27
27
  import {
28
28
  cube3x3x3,
29
29
  puzzles
30
- } from "../chunk-ZILJKTYP.js";
30
+ } from "../chunk-Q7UVEISQ.js";
31
31
  import {
32
32
  customPGPuzzleLoader,
33
33
  getPartialAppendOptionsForPuzzleSpecificSimplifyOptions,
34
34
  getPieceStickeringMask
35
- } from "../chunk-NBVZ7LEM.js";
36
- import "../chunk-F6V2QBMP.js";
35
+ } from "../chunk-H66X47MG.js";
36
+ import "../chunk-V4YTFIKT.js";
37
37
  import {
38
38
  Alg,
39
39
  AlgBuilder,
@@ -441,11 +441,14 @@ var TwistyAnimatedSVG = class {
441
441
  svgElem.style.maxHeight = "100%";
442
442
  this.gradientDefs = document.createElementNS(xmlns, "defs");
443
443
  svgElem.insertBefore(this.gradientDefs, svgElem.firstChild);
444
- for (const orbitName in kpuzzle.definition.orbits) {
445
- const orbitDefinition = kpuzzle.definition.orbits[orbitName];
444
+ for (const orbitDefinition of kpuzzle.definition.orbits) {
446
445
  for (let idx = 0; idx < orbitDefinition.numPieces; idx++) {
447
446
  for (let orientation = 0; orientation < orbitDefinition.numOrientations; orientation++) {
448
- const id = this.elementID(orbitName, idx, orientation);
447
+ const id = this.elementID(
448
+ orbitDefinition.orbitName,
449
+ idx,
450
+ orientation
451
+ );
449
452
  const elem = this.elementByID(id);
450
453
  let originalColor = elem?.style.fill;
451
454
  if (experimentalStickeringMask) {
@@ -454,7 +457,7 @@ var TwistyAnimatedSVG = class {
454
457
  if (!a) {
455
458
  return;
456
459
  }
457
- const orbitStickeringMask = a[orbitName];
460
+ const orbitStickeringMask = a[orbitDefinition.orbitName];
458
461
  if (!orbitStickeringMask) {
459
462
  return;
460
463
  }
@@ -491,36 +494,39 @@ var TwistyAnimatedSVG = class {
491
494
  hintElem.setAttribute("style", `fill: url(#grad-${this.svgID}-${id})`);
492
495
  }
493
496
  if (this.showUnknownOrientations) {
494
- this.drawState(this.kpuzzle.startState());
497
+ this.drawPattern(this.kpuzzle.defaultPattern());
495
498
  }
496
499
  }
497
- drawState(state, nextState, fraction) {
498
- this.draw(state, nextState, fraction);
500
+ drawPattern(pattern, nextPattern, fraction) {
501
+ this.draw(pattern, nextPattern, fraction);
499
502
  }
500
503
  // TODO: save definition in the constructor?
501
- draw(state, nextState, fraction) {
502
- const nextTransformation = nextState?.experimentalToTransformation();
503
- if (!state) {
504
+ draw(pattern, nextPattern, fraction) {
505
+ const nextTransformation = nextPattern?.experimentalToTransformation();
506
+ if (!pattern) {
504
507
  throw new Error("Distinguishable pieces are not handled for SVG yet!");
505
508
  }
506
- for (const orbitName in state.kpuzzle.definition.orbits) {
507
- const orbitDefinition = state.kpuzzle.definition.orbits[orbitName];
508
- const curStateOrbit = state.stateData[orbitName];
509
- const nextTransformationOrbit = nextTransformation ? nextTransformation.transformationData[orbitName] : null;
509
+ for (const orbitDefinition of pattern.kpuzzle.definition.orbits) {
510
+ const currentPatternOrbit = pattern.patternData[orbitDefinition.orbitName];
511
+ const nextTransformationOrbit = nextTransformation ? nextTransformation.transformationData[orbitDefinition.orbitName] : null;
510
512
  for (let idx = 0; idx < orbitDefinition.numPieces; idx++) {
511
513
  for (let orientation = 0; orientation < orbitDefinition.numOrientations; orientation++) {
512
- const id = this.elementID(orbitName, idx, orientation);
514
+ const id = this.elementID(
515
+ orbitDefinition.orbitName,
516
+ idx,
517
+ orientation
518
+ );
513
519
  const fromCur = this.elementID(
514
- orbitName,
515
- curStateOrbit.pieces[idx],
516
- (orbitDefinition.numOrientations - curStateOrbit.orientation[idx] + orientation) % orbitDefinition.numOrientations
520
+ orbitDefinition.orbitName,
521
+ currentPatternOrbit.pieces[idx],
522
+ (orbitDefinition.numOrientations - currentPatternOrbit.orientation[idx] + orientation) % orbitDefinition.numOrientations
517
523
  );
518
524
  let singleColor = false;
519
525
  if (nextTransformationOrbit) {
520
526
  const fromNext = this.elementID(
521
- orbitName,
527
+ orbitDefinition.orbitName,
522
528
  nextTransformationOrbit.permutation[idx],
523
- (orbitDefinition.numOrientations - nextTransformationOrbit.orientation[idx] + orientation) % orbitDefinition.numOrientations
529
+ (orbitDefinition.numOrientations - nextTransformationOrbit.orientationDelta[idx] + orientation) % orbitDefinition.numOrientations
524
530
  );
525
531
  if (fromCur === fromNext) {
526
532
  singleColor = true;
@@ -555,7 +561,7 @@ var TwistyAnimatedSVG = class {
555
561
  singleColor = true;
556
562
  }
557
563
  if (singleColor) {
558
- if (this.showUnknownOrientations && curStateOrbit.orientationMod?.[idx] === 1) {
564
+ if (this.showUnknownOrientations && currentPatternOrbit.orientationMod?.[idx] === 1) {
559
565
  this.gradients[id].children[0].setAttribute("stop-color", "#000");
560
566
  this.gradients[id].children[0].setAttribute("offset", "5%");
561
567
  this.gradients[id].children[1].setAttribute("offset", "5%");
@@ -692,14 +698,14 @@ var Twisty2DPuzzle = class extends ManagedCustomElement {
692
698
  if (position.movesInProgress[0].direction === -1 /* Backwards */) {
693
699
  partialMove = move.invert();
694
700
  }
695
- const newState = position.state.applyMove(partialMove);
701
+ const newPattern = position.pattern.applyMove(partialMove);
696
702
  this.svgWrapper.draw(
697
- position.state,
698
- newState,
703
+ position.pattern,
704
+ newPattern,
699
705
  position.movesInProgress[0].fraction
700
706
  );
701
707
  } else {
702
- this.svgWrapper.draw(position.state);
708
+ this.svgWrapper.draw(position.pattern);
703
709
  this.#cachedPosition = position;
704
710
  }
705
711
  } catch (e) {
@@ -2000,7 +2006,7 @@ var CatchUpMoveProp = class extends SimpleTwistyPropSource {
2000
2006
  var CurrentLeavesSimplifiedProp = class extends TwistyPropDerived {
2001
2007
  derive(inputs) {
2002
2008
  return {
2003
- stateIndex: inputs.currentMoveInfo.stateIndex,
2009
+ patternIndex: inputs.currentMoveInfo.patternIndex,
2004
2010
  movesFinishing: inputs.currentMoveInfo.movesFinishing.map(
2005
2011
  (currentMoveInfo) => currentMoveInfo.move
2006
2012
  ),
@@ -2010,7 +2016,7 @@ var CurrentLeavesSimplifiedProp = class extends TwistyPropDerived {
2010
2016
  };
2011
2017
  }
2012
2018
  canReuseValue(v1, v2) {
2013
- return v1.stateIndex === v2.stateIndex && arrayEqualsCompare(
2019
+ return v1.patternIndex === v2.patternIndex && arrayEqualsCompare(
2014
2020
  v1.movesFinishing,
2015
2021
  v2.movesFinishing,
2016
2022
  (m1, m2) => m1.isIdentical(m2)
@@ -2048,7 +2054,7 @@ var CurrentMoveInfoProp = class extends TwistyPropDerived {
2048
2054
  inputs.detailedTimelineInfo.timestamp
2049
2055
  );
2050
2056
  const currentMoveInfo = {
2051
- stateIndex: idx,
2057
+ patternIndex: idx,
2052
2058
  currentMoves: [],
2053
2059
  movesFinishing: [],
2054
2060
  movesFinished: [],
@@ -2093,11 +2099,11 @@ var CurrentMoveInfoProp = class extends TwistyPropDerived {
2093
2099
  }
2094
2100
  };
2095
2101
 
2096
- // src/cubing/twisty/model/props/puzzle/state/CurrentStateProp.ts
2097
- var CurrentStateProp = class extends TwistyPropDerived {
2102
+ // src/cubing/twisty/model/props/puzzle/state/CurrentPatternProp.ts
2103
+ var CurrentPatternProp = class extends TwistyPropDerived {
2098
2104
  derive(inputs) {
2099
2105
  let transformation = inputs.indexer.transformationAtIndex(
2100
- inputs.currentLeavesSimplified.stateIndex
2106
+ inputs.currentLeavesSimplified.patternIndex
2101
2107
  );
2102
2108
  transformation = inputs.anchoredStart.applyTransformation(transformation);
2103
2109
  for (const finishingMove of inputs.currentLeavesSimplified.movesFinishing) {
@@ -2106,7 +2112,7 @@ var CurrentStateProp = class extends TwistyPropDerived {
2106
2112
  for (const finishedMove of inputs.currentLeavesSimplified.movesFinished) {
2107
2113
  transformation = transformation.applyMove(finishedMove);
2108
2114
  }
2109
- return transformation.toKState();
2115
+ return transformation.toKPattern();
2110
2116
  }
2111
2117
  };
2112
2118
 
@@ -2187,15 +2193,15 @@ var SimpleAlgIndexer = class {
2187
2193
  }
2188
2194
  return i;
2189
2195
  }
2190
- stateAtIndex(index) {
2191
- return this.kpuzzle.startState().applyTransformation(this.transformationAtIndex(index));
2196
+ patternAtIndex(index) {
2197
+ return this.kpuzzle.defaultPattern().applyTransformation(this.transformationAtIndex(index));
2192
2198
  }
2193
2199
  transformationAtIndex(index) {
2194
- let state = this.kpuzzle.identityTransformation();
2200
+ let pattern = this.kpuzzle.identityTransformation();
2195
2201
  for (const move of Array.from(this.moves.childAlgNodes()).slice(0, index)) {
2196
- state = state.applyMove(move);
2202
+ pattern = pattern.applyMove(move);
2197
2203
  }
2198
- return state;
2204
+ return pattern;
2199
2205
  }
2200
2206
  algDuration() {
2201
2207
  return this.durationFn.traverseAlg(this.moves);
@@ -2424,20 +2430,20 @@ var SimultaneousMoveIndexer = class {
2424
2430
  }
2425
2431
  return Math.max(0, i - 1);
2426
2432
  }
2427
- timestampToPosition(timestamp, startState) {
2433
+ timestampToPosition(timestamp, startPattern) {
2428
2434
  const currentMoveInfo = this.currentMoveInfo(timestamp);
2429
- let state = startState ?? this.kpuzzle.identityTransformation().toKState();
2435
+ let pattern = startPattern ?? this.kpuzzle.identityTransformation().toKPattern();
2430
2436
  for (const leafWithRange of this.animLeaves.slice(
2431
2437
  0,
2432
- currentMoveInfo.stateIndex
2438
+ currentMoveInfo.patternIndex
2433
2439
  )) {
2434
2440
  const move = leafWithRange.animLeaf.as(Move);
2435
2441
  if (move !== null) {
2436
- state = state.applyMove(move);
2442
+ pattern = pattern.applyMove(move);
2437
2443
  }
2438
2444
  }
2439
2445
  return {
2440
- state,
2446
+ pattern,
2441
2447
  movesInProgress: currentMoveInfo.currentMoves
2442
2448
  };
2443
2449
  }
@@ -2460,10 +2466,10 @@ var SimultaneousMoveIndexer = class {
2460
2466
  const movesFinished = [];
2461
2467
  let latestStart = -Infinity;
2462
2468
  let earliestEnd = Infinity;
2463
- let stateIndex = 0;
2469
+ let patternIndex = 0;
2464
2470
  for (const leafWithRange of this.animLeaves) {
2465
2471
  if (leafWithRange.end <= windowEarliestTimestamp) {
2466
- stateIndex++;
2472
+ patternIndex++;
2467
2473
  } else if (leafWithRange.start > timestamp) {
2468
2474
  break;
2469
2475
  } else {
@@ -2504,7 +2510,7 @@ var SimultaneousMoveIndexer = class {
2504
2510
  }
2505
2511
  }
2506
2512
  return {
2507
- stateIndex,
2513
+ patternIndex,
2508
2514
  currentMoves,
2509
2515
  latestStart,
2510
2516
  earliestEnd,
@@ -2513,16 +2519,16 @@ var SimultaneousMoveIndexer = class {
2513
2519
  movesFinished
2514
2520
  };
2515
2521
  }
2516
- stateAtIndex(index, startState) {
2517
- let state = startState ?? this.kpuzzle.startState();
2522
+ patternAtIndex(index, startPattern) {
2523
+ let pattern = startPattern ?? this.kpuzzle.defaultPattern();
2518
2524
  for (let i = 0; i < this.animLeaves.length && i < index; i++) {
2519
2525
  const leafWithRange = this.animLeaves[i];
2520
2526
  const move = leafWithRange.animLeaf.as(Move);
2521
2527
  if (move !== null) {
2522
- state = state.applyMove(move);
2528
+ pattern = pattern.applyMove(move);
2523
2529
  }
2524
2530
  }
2525
- return state;
2531
+ return pattern;
2526
2532
  }
2527
2533
  transformationAtIndex(index) {
2528
2534
  let transformation = this.kpuzzle.identityTransformation();
@@ -2971,15 +2977,15 @@ var TreeAlgIndexer = class {
2971
2977
  }
2972
2978
  throw new Error(`Out of algorithm: index ${index}`);
2973
2979
  }
2974
- stateAtIndex(index, startState) {
2980
+ patternAtIndex(index, startPattern) {
2975
2981
  this.walker.moveByIndex(index);
2976
- return (startState ?? this.kpuzzle.startState()).applyTransformation(
2982
+ return (startPattern ?? this.kpuzzle.defaultPattern()).applyTransformation(
2977
2983
  this.walker.st
2978
2984
  );
2979
2985
  }
2980
- // TransformAtIndex does not reflect the start state; it only reflects
2981
- // the change from the start state to the current move index. If you
2982
- // want the actual state, use stateAtIndex.
2986
+ // TransformAtIndex does not reflect the start pattern; it only reflects
2987
+ // the change from the start pattern to the current move index. If you
2988
+ // want the actual pattern, use patternAtIndex.
2983
2989
  transformationAtIndex(index) {
2984
2990
  this.walker.moveByIndex(index);
2985
2991
  return this.walker.st;
@@ -3040,7 +3046,7 @@ var IndexerProp = class extends TwistyPropDerived {
3040
3046
  var LegacyPositionProp = class extends TwistyPropDerived {
3041
3047
  derive(inputs) {
3042
3048
  return {
3043
- state: inputs.state,
3049
+ pattern: inputs.currentPattern,
3044
3050
  movesInProgress: inputs.currentMoveInfo.currentMoves
3045
3051
  };
3046
3052
  }
@@ -3378,9 +3384,9 @@ var r = {
3378
3384
  async function fullStickeringMask(puzzleLoader) {
3379
3385
  const { definition } = await puzzleLoader.kpuzzle();
3380
3386
  const fullStickeringMask2 = { orbits: {} };
3381
- for (const [orbitName, orbitDef] of Object.entries(definition.orbits)) {
3382
- fullStickeringMask2.orbits[orbitName] = {
3383
- pieces: new Array(orbitDef.numPieces).fill(r)
3387
+ for (const orbitDefinition of definition.orbits) {
3388
+ fullStickeringMask2.orbits[orbitDefinition.orbitName] = {
3389
+ pieces: new Array(orbitDefinition.numPieces).fill(r)
3384
3390
  };
3385
3391
  }
3386
3392
  return fullStickeringMask2;
@@ -3800,7 +3806,7 @@ var TwistyPlayerModel = class {
3800
3806
  currentMoveInfo: this.currentMoveInfo
3801
3807
  });
3802
3808
  // Depth 10
3803
- this.currentState = new CurrentStateProp({
3809
+ this.currentPattern = new CurrentPatternProp({
3804
3810
  anchoredStart: this.anchorTransformation,
3805
3811
  currentLeavesSimplified: this.currentLeavesSimplified,
3806
3812
  indexer: this.indexer
@@ -3808,7 +3814,7 @@ var TwistyPlayerModel = class {
3808
3814
  // Depth 11
3809
3815
  this.legacyPosition = new LegacyPositionProp({
3810
3816
  currentMoveInfo: this.currentMoveInfo,
3811
- state: this.currentState
3817
+ currentPattern: this.currentPattern
3812
3818
  });
3813
3819
  this.twistySceneModel = new TwistySceneModel(this);
3814
3820
  }
@@ -5502,7 +5508,9 @@ var TwistyAlgEditor = class extends ManagedCustomElement {
5502
5508
  twistyPlayer.experimentalModel.currentLeavesSimplified.addFreshListener(
5503
5509
  async (currentLeavesSimplified) => {
5504
5510
  const indexer = await twistyPlayer.experimentalModel.indexer.get();
5505
- const leaf = indexer.getAnimLeaf(currentLeavesSimplified.stateIndex);
5511
+ const leaf = indexer.getAnimLeaf(
5512
+ currentLeavesSimplified.patternIndex
5513
+ );
5506
5514
  this.highlightLeaf(leaf);
5507
5515
  }
5508
5516
  );