cubing 0.36.1 → 0.36.3
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.
- package/dist/esm/alg/index.js +1 -1
- package/dist/esm/bluetooth/index.js +5 -5
- package/dist/esm/{chunk-GNCANY6Y.js → chunk-32CPLOFX.js} +13 -13
- package/dist/esm/{chunk-RZEN653J.js → chunk-HYGNVDCH.js} +5 -5
- package/dist/esm/{chunk-PRIRJZQ6.js → chunk-L4PH24KU.js} +3 -3
- package/dist/esm/{chunk-U45QP7V5.js → chunk-L7WY7BIO.js} +3 -3
- package/dist/esm/{chunk-XVAB7A2O.js → chunk-N4YR7ABS.js} +8 -6
- package/dist/esm/chunk-N4YR7ABS.js.map +7 -0
- package/dist/esm/{chunk-UIGRNWPE.js → chunk-RSF22LKP.js} +2 -2
- package/dist/esm/{chunk-2OZSC5I6.js → chunk-TM7SKFJD.js} +3 -2
- package/dist/esm/{chunk-2OZSC5I6.js.map → chunk-TM7SKFJD.js.map} +2 -2
- package/dist/esm/{chunk-PY6UOVLX.js → chunk-VL47U5J6.js} +3 -3
- package/dist/esm/{chunk-MHS6WQK3.js → chunk-WWCSMIJO.js} +22 -9
- package/dist/esm/{chunk-MHS6WQK3.js.map → chunk-WWCSMIJO.js.map} +2 -2
- package/dist/esm/{chunk-P6BKQJQU.js → chunk-XM2O37XU.js} +4 -4
- package/dist/esm/{chunk-HPHL232Y.js → chunk-ZIFM3JF6.js} +2 -2
- package/dist/esm/kpuzzle/index.js +2 -2
- package/dist/esm/notation/index.js +6 -8
- package/dist/esm/protocol/index.js +4 -4
- package/dist/esm/puzzle-geometry/index.js +68 -68
- package/dist/esm/puzzle-geometry/index.js.map +2 -2
- package/dist/esm/puzzles/index.js +4 -4
- package/dist/esm/scramble/index.js +8 -8
- package/dist/esm/search/index.js +8 -8
- package/dist/esm/{search-dynamic-sgs-side-events-UBB6BCFU.js → search-dynamic-sgs-side-events-CUV4L6KG.js} +6 -6
- package/dist/esm/{search-dynamic-sgs-unofficial-BTJQTYIB.js → search-dynamic-sgs-unofficial-XFWM4IT6.js} +6 -6
- package/dist/esm/{search-dynamic-solve-4x4x4-AJIQM7XH.js → search-dynamic-solve-4x4x4-EA6XTQN2.js} +6 -6
- package/dist/esm/{search-dynamic-solve-kilominx-QJWWB2PY.js → search-dynamic-solve-kilominx-HCOWDD7C.js} +2 -2
- package/dist/esm/{search-worker-inside-generated-string-S4N5JFZV.js → search-worker-inside-generated-string-OA23ZSGX.js} +24 -24
- package/dist/esm/search-worker-inside-generated-string-OA23ZSGX.js.map +7 -0
- package/dist/esm/search-worker-js-entry-TWY4DMZQ.js +17 -0
- package/dist/esm/{search-worker-ts-entry-CSGPRXKH.js → search-worker-ts-entry-ZR4EM4NC.js} +2 -2
- package/dist/esm/stream/index.js +1 -1
- package/dist/esm/twisty/index.js +30 -20
- package/dist/esm/twisty/index.js.map +2 -2
- package/dist/esm/{twisty-dynamic-3d-SGTMU2OZ.js → twisty-dynamic-3d-HPZKQUDJ.js} +6 -6
- package/dist/esm/{twsearch-FMALADRY.js → twsearch-JCPGQMKW.js} +2 -2
- package/dist/types/notation/index.d.ts +2 -3
- package/dist/types/{outside-ef4dd4d1.d.ts → outside-7959a3cd.d.ts} +3 -2
- package/dist/types/scramble/index.d.ts +1 -1
- package/dist/types/search/index.d.ts +1 -1
- package/package.json +2 -2
- package/dist/esm/chunk-XVAB7A2O.js.map +0 -7
- package/dist/esm/search-worker-inside-generated-string-S4N5JFZV.js.map +0 -7
- package/dist/esm/search-worker-js-entry-DMVNDNGG.js +0 -17
- /package/dist/esm/{chunk-GNCANY6Y.js.map → chunk-32CPLOFX.js.map} +0 -0
- /package/dist/esm/{chunk-RZEN653J.js.map → chunk-HYGNVDCH.js.map} +0 -0
- /package/dist/esm/{chunk-PRIRJZQ6.js.map → chunk-L4PH24KU.js.map} +0 -0
- /package/dist/esm/{chunk-U45QP7V5.js.map → chunk-L7WY7BIO.js.map} +0 -0
- /package/dist/esm/{chunk-UIGRNWPE.js.map → chunk-RSF22LKP.js.map} +0 -0
- /package/dist/esm/{chunk-PY6UOVLX.js.map → chunk-VL47U5J6.js.map} +0 -0
- /package/dist/esm/{chunk-P6BKQJQU.js.map → chunk-XM2O37XU.js.map} +0 -0
- /package/dist/esm/{chunk-HPHL232Y.js.map → chunk-ZIFM3JF6.js.map} +0 -0
- /package/dist/esm/{search-dynamic-sgs-side-events-UBB6BCFU.js.map → search-dynamic-sgs-side-events-CUV4L6KG.js.map} +0 -0
- /package/dist/esm/{search-dynamic-sgs-unofficial-BTJQTYIB.js.map → search-dynamic-sgs-unofficial-XFWM4IT6.js.map} +0 -0
- /package/dist/esm/{search-dynamic-solve-4x4x4-AJIQM7XH.js.map → search-dynamic-solve-4x4x4-EA6XTQN2.js.map} +0 -0
- /package/dist/esm/{search-dynamic-solve-kilominx-QJWWB2PY.js.map → search-dynamic-solve-kilominx-HCOWDD7C.js.map} +0 -0
- /package/dist/esm/{search-worker-js-entry-DMVNDNGG.js.map → search-worker-js-entry-TWY4DMZQ.js.map} +0 -0
- /package/dist/esm/{search-worker-ts-entry-CSGPRXKH.js.map → search-worker-ts-entry-ZR4EM4NC.js.map} +0 -0
- /package/dist/esm/{twisty-dynamic-3d-SGTMU2OZ.js.map → twisty-dynamic-3d-HPZKQUDJ.js.map} +0 -0
- /package/dist/esm/{twsearch-FMALADRY.js.map → twsearch-JCPGQMKW.js.map} +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
from
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-L4PH24KU.js";
|
|
4
4
|
|
|
5
5
|
// src/cubing/twisty/debug.ts
|
|
6
6
|
var twistyDebugGlobals = {
|
|
@@ -541,7 +541,7 @@ var StatsPanel = class {
|
|
|
541
541
|
// src/cubing/twisty/heavy-code-imports/3d.ts
|
|
542
542
|
var cachedConstructorProxy = null;
|
|
543
543
|
async function proxy3D() {
|
|
544
|
-
return cachedConstructorProxy ?? (cachedConstructorProxy = import("./twisty-dynamic-3d-
|
|
544
|
+
return cachedConstructorProxy ?? (cachedConstructorProxy = import("./twisty-dynamic-3d-HPZKQUDJ.js"));
|
|
545
545
|
}
|
|
546
546
|
var THREEJS = from(
|
|
547
547
|
async () => (await proxy3D()).T3I
|
|
@@ -1175,4 +1175,4 @@ export {
|
|
|
1175
1175
|
proxy3D,
|
|
1176
1176
|
THREEJS
|
|
1177
1177
|
};
|
|
1178
|
-
//# sourceMappingURL=chunk-
|
|
1178
|
+
//# sourceMappingURL=chunk-VL47U5J6.js.map
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import {
|
|
2
2
|
cube3x3x3KPuzzleDefinition
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-L4PH24KU.js";
|
|
4
4
|
import {
|
|
5
5
|
TraversalUp,
|
|
6
6
|
functionFromTraversal
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-TM7SKFJD.js";
|
|
8
8
|
|
|
9
9
|
// src/cubing/notation/commonMetrics.ts
|
|
10
10
|
var CommonMetric = /* @__PURE__ */ ((CommonMetric2) => {
|
|
@@ -146,21 +146,27 @@ function baseMetric(move) {
|
|
|
146
146
|
function etmMetric(_move) {
|
|
147
147
|
return 1;
|
|
148
148
|
}
|
|
149
|
-
function
|
|
149
|
+
function rangeBlockTurnMetric(move) {
|
|
150
150
|
const fam = move.family;
|
|
151
151
|
if (isCharUppercase(fam[0]) && fam[fam.length - 1] === "v" || fam === "x" || fam === "y" || fam === "z" || fam === "T") {
|
|
152
152
|
return 0;
|
|
153
153
|
} else {
|
|
154
|
-
return
|
|
154
|
+
return 1;
|
|
155
155
|
}
|
|
156
156
|
}
|
|
157
|
+
function quantumMetric(move) {
|
|
158
|
+
return Math.abs(move.amount) * rangeBlockTurnMetric(move);
|
|
159
|
+
}
|
|
157
160
|
var countMoves = functionFromTraversal(CountMoves, [baseMetric]);
|
|
158
161
|
var countMovesETM = functionFromTraversal(CountMoves, [etmMetric]);
|
|
159
|
-
var
|
|
162
|
+
var countRangeBlockQuantumMovesPG = functionFromTraversal(CountMoves, [
|
|
160
163
|
quantumMetric
|
|
161
164
|
]);
|
|
162
|
-
|
|
163
|
-
|
|
165
|
+
var countRangeBlockMovesPG = functionFromTraversal(CountMoves, [
|
|
166
|
+
rangeBlockTurnMetric
|
|
167
|
+
]);
|
|
168
|
+
function countMetricMoves(puzzleLoader, metric, alg) {
|
|
169
|
+
if (puzzleLoader.id === "3x3x3") {
|
|
164
170
|
if (metric in costFactorsByMetric) {
|
|
165
171
|
return functionFromTraversal(CountMoves, [
|
|
166
172
|
(move) => countMove3x3x3(metric, move)
|
|
@@ -170,6 +176,14 @@ function countMetricMoves(puzzle, metric, alg) {
|
|
|
170
176
|
switch (metric) {
|
|
171
177
|
case "ETM" /* ExecutionTurnMetric */:
|
|
172
178
|
return countMovesETM(alg);
|
|
179
|
+
case "RBTM" /* RangeBlockTurnMetric */:
|
|
180
|
+
if (puzzleLoader.pg) {
|
|
181
|
+
return countRangeBlockMovesPG(alg);
|
|
182
|
+
}
|
|
183
|
+
case "RBQTM" /* RangeBlockQuantumTurnMetric */:
|
|
184
|
+
if (puzzleLoader.pg) {
|
|
185
|
+
return countRangeBlockQuantumMovesPG(alg);
|
|
186
|
+
}
|
|
173
187
|
}
|
|
174
188
|
}
|
|
175
189
|
throw new Error("Unsupported puzzle or metric.");
|
|
@@ -213,8 +227,7 @@ export {
|
|
|
213
227
|
CommonMetricAlias,
|
|
214
228
|
countMoves,
|
|
215
229
|
countMovesETM,
|
|
216
|
-
countQuantumMoves,
|
|
217
230
|
countMetricMoves,
|
|
218
231
|
countAnimatedLeaves
|
|
219
232
|
};
|
|
220
|
-
//# sourceMappingURL=chunk-
|
|
233
|
+
//# sourceMappingURL=chunk-WWCSMIJO.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/cubing/notation/commonMetrics.ts", "../../src/cubing/notation/cube3x3x3Metrics.ts", "../../src/cubing/notation/CountMoves.ts", "../../src/cubing/notation/CountAnimatedLeaves.ts"],
|
|
4
|
-
"sourcesContent": ["export enum CommonMetric {\n // OBTM (Outer Block Turn Metric)\n OuterBlockTurnMetric = \"OBTM\",\n // RBTM (Range Block Turn Metric)\n RangeBlockTurnMetric = \"RBTM\",\n // SSTM (Single Slice Turn Metric)\n SingleSliceTurnMetric = \"SSTM\",\n // OBQTM (Outer Block Quantum Turn Metric)\n OuterBlockQuantumTurnMetric = \"OBQTM\",\n // RBQTM (Range Block Quantum Turn Metric)\n RangeBlockQuantumTurnMetric = \"RBQTM\",\n // SSQTM (Single Slice Quantum Turn Metric)\n SingleSliceQuantumTurnMetric = \"SSQTM\",\n ExecutionTurnMetric = \"ETM\",\n}\n\nexport enum CommonMetricAlias {\n // QTM (Quantum Turn Metric)\n QuantumTurnMetric = \"OBQTM\",\n // HTM (Hand Turn Metric)\n HandTurnMetric = \"OBTM\",\n // STM (Slice Turn Metric)\n SliceTurnMetric = \"RBTM\",\n}\n", "// TODO: move this into the 3x3x3 puzzle loader.\n\nimport type { Move } from \"../alg\";\nimport { experimentalCube3x3x3KPuzzleDefinition } from \"../puzzles/cubing-private\";\nimport { CommonMetric } from \"./commonMetrics\";\n\nenum MoveType {\n Rotation = \"Rotation\",\n Outer = \"Outer\",\n Inner = \"Inner\",\n}\n\nfunction uncachedMoveCount(moveQuantumString: string): MoveType {\n if (\n moveQuantumString.endsWith(\"v\") ||\n [\"x\", \"y\", \"z\"].includes(moveQuantumString)\n ) {\n // Rv\n return MoveType.Rotation;\n }\n if (\n moveQuantumString.startsWith(\"2\") ||\n [\"M\", \"E\", \"S\"].includes(moveQuantumString)\n ) {\n return MoveType.Inner;\n }\n return MoveType.Outer;\n}\n\nlet cache: Record<string, MoveType> | undefined;\nfunction getCache(): Record<string, MoveType> {\n if (cache) {\n return cache;\n }\n cache = {};\n const moveQuantumStrings = [\n ...Object.keys(experimentalCube3x3x3KPuzzleDefinition.moves),\n ...Object.keys(\n experimentalCube3x3x3KPuzzleDefinition.experimentalDerivedMoves!,\n ),\n ];\n for (const moveQuantumString of moveQuantumStrings) {\n cache[moveQuantumString] = uncachedMoveCount(moveQuantumString);\n }\n return cache;\n}\n\n// Ancient wisdom: https://github.com/cubing/alg.js/blob/0599fad84d81b8d943ad3ea3e5dc191db8b6c157/alg.js#L638-L651\n/**\n * A move with an amount of 0 always has 0 cost. Else, the cost is\n *\n * constantFactor + amountFactor * Math.abs(move.amount)\n *\n */\nexport const costFactorsByMetric: Partial<\n Record<\n CommonMetric,\n Record<\n MoveType,\n {\n constantFactor: number;\n amountFactor: number;\n }\n >\n >\n> = {\n // Note: these are hardcoded for 3x3x3. They will not automatically generalize to any other puzzles.\n [CommonMetric.OuterBlockTurnMetric]: {\n [MoveType.Rotation]: { constantFactor: 0, amountFactor: 0 },\n [MoveType.Outer]: { constantFactor: 1, amountFactor: 0 },\n [MoveType.Inner]: { constantFactor: 2, amountFactor: 0 },\n },\n [CommonMetric.RangeBlockTurnMetric]: {\n [MoveType.Rotation]: { constantFactor: 0, amountFactor: 0 },\n [MoveType.Outer]: { constantFactor: 1, amountFactor: 0 },\n [MoveType.Inner]: { constantFactor: 1, amountFactor: 0 },\n },\n [CommonMetric.OuterBlockQuantumTurnMetric]: {\n [MoveType.Rotation]: { constantFactor: 0, amountFactor: 0 },\n [MoveType.Outer]: { constantFactor: 0, amountFactor: 1 },\n [MoveType.Inner]: { constantFactor: 0, amountFactor: 2 },\n },\n [CommonMetric.RangeBlockQuantumTurnMetric]: {\n [MoveType.Rotation]: { constantFactor: 0, amountFactor: 0 },\n [MoveType.Outer]: { constantFactor: 0, amountFactor: 1 },\n [MoveType.Inner]: { constantFactor: 0, amountFactor: 1 },\n },\n [CommonMetric.ExecutionTurnMetric]: {\n [MoveType.Rotation]: { constantFactor: 1, amountFactor: 0 },\n [MoveType.Outer]: { constantFactor: 1, amountFactor: 0 },\n [MoveType.Inner]: { constantFactor: 1, amountFactor: 0 },\n },\n};\n\nexport function countMove3x3x3(metric: CommonMetric, move: Move): number {\n const costFactors = costFactorsByMetric[metric];\n if (!costFactors) {\n throw new Error(`Invalid metric for 3x3x3: ${metric}`);\n }\n const cache = getCache();\n const moveQuantumString = move.quantum.toString();\n if (!(moveQuantumString in cache)) {\n throw new Error(`Invalid move for 3x3x3 ${metric}: ${moveQuantumString}`);\n }\n const costType = cache[moveQuantumString];\n const { constantFactor, amountFactor } = costFactors[costType];\n return constantFactor + amountFactor * Math.abs(move.amount);\n}\n", "// TODO: move this file somewhere permanent.\nimport {\n Alg,\n Commutator,\n Conjugate,\n functionFromTraversal,\n Grouping,\n LineComment,\n Move,\n Newline,\n Pause,\n TraversalUp,\n} from \"../alg\";\nimport type { PuzzleLoader } from \"../puzzles\";\nimport { CommonMetric } from \"./commonMetrics\";\nimport { costFactorsByMetric, countMove3x3x3 } from \"./cube3x3x3Metrics\";\n\n/*\n * For movecount, that understands puzzle rotations. This code\n * should be moved to the alg class, probably.\n */\nclass CountMoves extends TraversalUp<number> {\n constructor(private metric: (move: Move) => number) {\n super();\n }\n\n public traverseAlg(alg: Alg): number {\n let r = 0;\n for (const algNode of alg.childAlgNodes()) {\n r += this.traverseAlgNode(algNode);\n }\n return r;\n }\n\n public traverseGrouping(grouping: Grouping): number {\n const alg: Alg = grouping.alg;\n return this.traverseAlg(alg) * Math.abs(grouping.amount);\n }\n\n public traverseMove(move: Move): number {\n return this.metric(move);\n }\n\n public traverseCommutator(commutator: Commutator): number {\n return (\n 2 * (this.traverseAlg(commutator.A) + this.traverseAlg(commutator.B))\n );\n }\n\n public traverseConjugate(conjugate: Conjugate): number {\n return 2 * this.traverseAlg(conjugate.A) + this.traverseAlg(conjugate.B);\n }\n\n // TODO: Remove spaces between repeated pauses (in traverseSequence)\n public traversePause(_pause: Pause): number {\n return 0;\n }\n\n public traverseNewline(_newLine: Newline): number {\n return 0;\n }\n\n // TODO: Enforce being followed by a newline (or the end of the alg)?\n public traverseLineComment(_comment: LineComment): number {\n return 0;\n }\n}\n\nfunction isCharUppercase(c: string): boolean {\n return \"A\" <= c && c <= \"Z\";\n}\n\n// TODO: Implement a puzzle-specific way to calculate this.\nfunction baseMetric(move: Move): number {\n const fam = move.family;\n if (\n (isCharUppercase(fam[0]) && fam[fam.length - 1] === \"v\") ||\n fam === \"x\" ||\n fam === \"y\" ||\n fam === \"z\" ||\n fam === \"T\"\n ) {\n return 0;\n } else {\n return 1;\n }\n}\n\nfunction etmMetric(_move: Move): number {\n return 1;\n}\n\n// TODO: Implement a puzzle-specific way to calculate this.\nfunction
|
|
5
|
-
"mappings": ";;;;;;;;;AAAO,IAAK,eAAL,kBAAKA,kBAAL;AAEL,EAAAA,cAAA,0BAAuB;AAEvB,EAAAA,cAAA,0BAAuB;AAEvB,EAAAA,cAAA,2BAAwB;AAExB,EAAAA,cAAA,iCAA8B;AAE9B,EAAAA,cAAA,iCAA8B;AAE9B,EAAAA,cAAA,kCAA+B;AAC/B,EAAAA,cAAA,yBAAsB;AAbZ,SAAAA;AAAA,GAAA;AAgBL,IAAK,oBAAL,kBAAKC,uBAAL;AAEL,EAAAA,mBAAA,uBAAoB;AAEpB,EAAAA,mBAAA,oBAAiB;AAEjB,EAAAA,mBAAA,qBAAkB;AANR,SAAAA;AAAA,GAAA;;;ACJZ,SAAS,kBAAkB,mBAAqC;AAC9D,MACE,kBAAkB,SAAS,GAAG,KAC9B,CAAC,KAAK,KAAK,GAAG,EAAE,SAAS,iBAAiB,GAC1C;AAEA,WAAO;AAAA,EACT;AACA,MACE,kBAAkB,WAAW,GAAG,KAChC,CAAC,KAAK,KAAK,GAAG,EAAE,SAAS,iBAAiB,GAC1C;AACA,WAAO;AAAA,EACT;AACA,SAAO;AACT;AAEA,IAAI;AACJ,SAAS,WAAqC;AAC5C,MAAI,OAAO;AACT,WAAO;AAAA,EACT;AACA,UAAQ,CAAC;AACT,QAAM,qBAAqB;AAAA,IACzB,GAAG,OAAO,KAAK,2BAAuC,KAAK;AAAA,IAC3D,GAAG,OAAO;AAAA,MACR,2BAAuC;AAAA,IACzC;AAAA,EACF;AACA,aAAW,qBAAqB,oBAAoB;AAClD,UAAM,iBAAiB,IAAI,kBAAkB,iBAAiB;AAAA,EAChE;AACA,SAAO;AACT;AASO,IAAM,sBAWT;AAAA;AAAA,EAEF,kCAAkC,GAAG;AAAA,IACnC,CAAC,yBAAiB,GAAG,EAAE,gBAAgB,GAAG,cAAc,EAAE;AAAA,IAC1D,CAAC,mBAAc,GAAG,EAAE,gBAAgB,GAAG,cAAc,EAAE;AAAA,IACvD,CAAC,mBAAc,GAAG,EAAE,gBAAgB,GAAG,cAAc,EAAE;AAAA,EACzD;AAAA,EACA,kCAAkC,GAAG;AAAA,IACnC,CAAC,yBAAiB,GAAG,EAAE,gBAAgB,GAAG,cAAc,EAAE;AAAA,IAC1D,CAAC,mBAAc,GAAG,EAAE,gBAAgB,GAAG,cAAc,EAAE;AAAA,IACvD,CAAC,mBAAc,GAAG,EAAE,gBAAgB,GAAG,cAAc,EAAE;AAAA,EACzD;AAAA,EACA,0CAAyC,GAAG;AAAA,IAC1C,CAAC,yBAAiB,GAAG,EAAE,gBAAgB,GAAG,cAAc,EAAE;AAAA,IAC1D,CAAC,mBAAc,GAAG,EAAE,gBAAgB,GAAG,cAAc,EAAE;AAAA,IACvD,CAAC,mBAAc,GAAG,EAAE,gBAAgB,GAAG,cAAc,EAAE;AAAA,EACzD;AAAA,EACA,0CAAyC,GAAG;AAAA,IAC1C,CAAC,yBAAiB,GAAG,EAAE,gBAAgB,GAAG,cAAc,EAAE;AAAA,IAC1D,CAAC,mBAAc,GAAG,EAAE,gBAAgB,GAAG,cAAc,EAAE;AAAA,IACvD,CAAC,mBAAc,GAAG,EAAE,gBAAgB,GAAG,cAAc,EAAE;AAAA,EACzD;AAAA,EACA,gCAAiC,GAAG;AAAA,IAClC,CAAC,yBAAiB,GAAG,EAAE,gBAAgB,GAAG,cAAc,EAAE;AAAA,IAC1D,CAAC,mBAAc,GAAG,EAAE,gBAAgB,GAAG,cAAc,EAAE;AAAA,IACvD,CAAC,mBAAc,GAAG,EAAE,gBAAgB,GAAG,cAAc,EAAE;AAAA,EACzD;AACF;AAEO,SAAS,eAAe,QAAsB,MAAoB;AACvE,QAAM,cAAc,oBAAoB,MAAM;AAC9C,MAAI,CAAC,aAAa;AAChB,UAAM,IAAI,MAAM,6BAA6B,QAAQ;AAAA,EACvD;AACA,QAAMC,SAAQ,SAAS;AACvB,QAAM,oBAAoB,KAAK,QAAQ,SAAS;AAChD,MAAI,EAAE,qBAAqBA,SAAQ;AACjC,UAAM,IAAI,MAAM,0BAA0B,WAAW,mBAAmB;AAAA,EAC1E;AACA,QAAM,WAAWA,OAAM,iBAAiB;AACxC,QAAM,EAAE,gBAAgB,aAAa,IAAI,YAAY,QAAQ;AAC7D,SAAO,iBAAiB,eAAe,KAAK,IAAI,KAAK,MAAM;AAC7D;;;ACtFA,IAAM,aAAN,cAAyB,YAAoB;AAAA,EAC3C,YAAoB,QAAgC;AAClD,UAAM;AADY;AAAA,EAEpB;AAAA,EAEO,YAAY,KAAkB;AACnC,QAAI,IAAI;AACR,eAAW,WAAW,IAAI,cAAc,GAAG;AACzC,WAAK,KAAK,gBAAgB,OAAO;AAAA,IACnC;AACA,WAAO;AAAA,EACT;AAAA,EAEO,iBAAiB,UAA4B;AAClD,UAAM,MAAW,SAAS;AAC1B,WAAO,KAAK,YAAY,GAAG,IAAI,KAAK,IAAI,SAAS,MAAM;AAAA,EACzD;AAAA,EAEO,aAAa,MAAoB;AACtC,WAAO,KAAK,OAAO,IAAI;AAAA,EACzB;AAAA,EAEO,mBAAmB,YAAgC;AACxD,WACE,KAAK,KAAK,YAAY,WAAW,CAAC,IAAI,KAAK,YAAY,WAAW,CAAC;AAAA,EAEvE;AAAA,EAEO,kBAAkB,WAA8B;AACrD,WAAO,IAAI,KAAK,YAAY,UAAU,CAAC,IAAI,KAAK,YAAY,UAAU,CAAC;AAAA,EACzE;AAAA;AAAA,EAGO,cAAc,QAAuB;AAC1C,WAAO;AAAA,EACT;AAAA,EAEO,gBAAgB,UAA2B;AAChD,WAAO;AAAA,EACT;AAAA;AAAA,EAGO,oBAAoB,UAA+B;AACxD,WAAO;AAAA,EACT;AACF;AAEA,SAAS,gBAAgB,GAAoB;AAC3C,SAAO,OAAO,KAAK,KAAK;AAC1B;AAGA,SAAS,WAAW,MAAoB;AACtC,QAAM,MAAM,KAAK;AACjB,MACG,gBAAgB,IAAI,CAAC,CAAC,KAAK,IAAI,IAAI,SAAS,CAAC,MAAM,OACpD,QAAQ,OACR,QAAQ,OACR,QAAQ,OACR,QAAQ,KACR;AACA,WAAO;AAAA,EACT,OAAO;AACL,WAAO;AAAA,EACT;AACF;AAEA,SAAS,UAAU,OAAqB;AACtC,SAAO;AACT;AAGA,SAAS,
|
|
4
|
+
"sourcesContent": ["export enum CommonMetric {\n // OBTM (Outer Block Turn Metric)\n OuterBlockTurnMetric = \"OBTM\",\n // RBTM (Range Block Turn Metric)\n RangeBlockTurnMetric = \"RBTM\",\n // SSTM (Single Slice Turn Metric)\n SingleSliceTurnMetric = \"SSTM\",\n // OBQTM (Outer Block Quantum Turn Metric)\n OuterBlockQuantumTurnMetric = \"OBQTM\",\n // RBQTM (Range Block Quantum Turn Metric)\n RangeBlockQuantumTurnMetric = \"RBQTM\",\n // SSQTM (Single Slice Quantum Turn Metric)\n SingleSliceQuantumTurnMetric = \"SSQTM\",\n ExecutionTurnMetric = \"ETM\",\n}\n\nexport enum CommonMetricAlias {\n // QTM (Quantum Turn Metric)\n QuantumTurnMetric = \"OBQTM\",\n // HTM (Hand Turn Metric)\n HandTurnMetric = \"OBTM\",\n // STM (Slice Turn Metric)\n SliceTurnMetric = \"RBTM\",\n}\n", "// TODO: move this into the 3x3x3 puzzle loader.\n\nimport type { Move } from \"../alg\";\nimport { experimentalCube3x3x3KPuzzleDefinition } from \"../puzzles/cubing-private\";\nimport { CommonMetric } from \"./commonMetrics\";\n\nenum MoveType {\n Rotation = \"Rotation\",\n Outer = \"Outer\",\n Inner = \"Inner\",\n}\n\nfunction uncachedMoveCount(moveQuantumString: string): MoveType {\n if (\n moveQuantumString.endsWith(\"v\") ||\n [\"x\", \"y\", \"z\"].includes(moveQuantumString)\n ) {\n // Rv\n return MoveType.Rotation;\n }\n if (\n moveQuantumString.startsWith(\"2\") ||\n [\"M\", \"E\", \"S\"].includes(moveQuantumString)\n ) {\n return MoveType.Inner;\n }\n return MoveType.Outer;\n}\n\nlet cache: Record<string, MoveType> | undefined;\nfunction getCache(): Record<string, MoveType> {\n if (cache) {\n return cache;\n }\n cache = {};\n const moveQuantumStrings = [\n ...Object.keys(experimentalCube3x3x3KPuzzleDefinition.moves),\n ...Object.keys(\n experimentalCube3x3x3KPuzzleDefinition.experimentalDerivedMoves!,\n ),\n ];\n for (const moveQuantumString of moveQuantumStrings) {\n cache[moveQuantumString] = uncachedMoveCount(moveQuantumString);\n }\n return cache;\n}\n\n// Ancient wisdom: https://github.com/cubing/alg.js/blob/0599fad84d81b8d943ad3ea3e5dc191db8b6c157/alg.js#L638-L651\n/**\n * A move with an amount of 0 always has 0 cost. Else, the cost is\n *\n * constantFactor + amountFactor * Math.abs(move.amount)\n *\n */\nexport const costFactorsByMetric: Partial<\n Record<\n CommonMetric,\n Record<\n MoveType,\n {\n constantFactor: number;\n amountFactor: number;\n }\n >\n >\n> = {\n // Note: these are hardcoded for 3x3x3. They will not automatically generalize to any other puzzles.\n [CommonMetric.OuterBlockTurnMetric]: {\n [MoveType.Rotation]: { constantFactor: 0, amountFactor: 0 },\n [MoveType.Outer]: { constantFactor: 1, amountFactor: 0 },\n [MoveType.Inner]: { constantFactor: 2, amountFactor: 0 },\n },\n [CommonMetric.RangeBlockTurnMetric]: {\n [MoveType.Rotation]: { constantFactor: 0, amountFactor: 0 },\n [MoveType.Outer]: { constantFactor: 1, amountFactor: 0 },\n [MoveType.Inner]: { constantFactor: 1, amountFactor: 0 },\n },\n [CommonMetric.OuterBlockQuantumTurnMetric]: {\n [MoveType.Rotation]: { constantFactor: 0, amountFactor: 0 },\n [MoveType.Outer]: { constantFactor: 0, amountFactor: 1 },\n [MoveType.Inner]: { constantFactor: 0, amountFactor: 2 },\n },\n [CommonMetric.RangeBlockQuantumTurnMetric]: {\n [MoveType.Rotation]: { constantFactor: 0, amountFactor: 0 },\n [MoveType.Outer]: { constantFactor: 0, amountFactor: 1 },\n [MoveType.Inner]: { constantFactor: 0, amountFactor: 1 },\n },\n [CommonMetric.ExecutionTurnMetric]: {\n [MoveType.Rotation]: { constantFactor: 1, amountFactor: 0 },\n [MoveType.Outer]: { constantFactor: 1, amountFactor: 0 },\n [MoveType.Inner]: { constantFactor: 1, amountFactor: 0 },\n },\n};\n\nexport function countMove3x3x3(metric: CommonMetric, move: Move): number {\n const costFactors = costFactorsByMetric[metric];\n if (!costFactors) {\n throw new Error(`Invalid metric for 3x3x3: ${metric}`);\n }\n const cache = getCache();\n const moveQuantumString = move.quantum.toString();\n if (!(moveQuantumString in cache)) {\n throw new Error(`Invalid move for 3x3x3 ${metric}: ${moveQuantumString}`);\n }\n const costType = cache[moveQuantumString];\n const { constantFactor, amountFactor } = costFactors[costType];\n return constantFactor + amountFactor * Math.abs(move.amount);\n}\n", "// TODO: move this file somewhere permanent.\nimport {\n Alg,\n Commutator,\n Conjugate,\n functionFromTraversal,\n Grouping,\n LineComment,\n Move,\n Newline,\n Pause,\n TraversalUp,\n} from \"../alg\";\nimport type { PuzzleLoader } from \"../puzzles\";\nimport { CommonMetric } from \"./commonMetrics\";\nimport { costFactorsByMetric, countMove3x3x3 } from \"./cube3x3x3Metrics\";\n\n/*\n * For movecount, that understands puzzle rotations. This code\n * should be moved to the alg class, probably.\n */\nclass CountMoves extends TraversalUp<number> {\n constructor(private metric: (move: Move) => number) {\n super();\n }\n\n public traverseAlg(alg: Alg): number {\n let r = 0;\n for (const algNode of alg.childAlgNodes()) {\n r += this.traverseAlgNode(algNode);\n }\n return r;\n }\n\n public traverseGrouping(grouping: Grouping): number {\n const alg: Alg = grouping.alg;\n return this.traverseAlg(alg) * Math.abs(grouping.amount);\n }\n\n public traverseMove(move: Move): number {\n return this.metric(move);\n }\n\n public traverseCommutator(commutator: Commutator): number {\n return (\n 2 * (this.traverseAlg(commutator.A) + this.traverseAlg(commutator.B))\n );\n }\n\n public traverseConjugate(conjugate: Conjugate): number {\n return 2 * this.traverseAlg(conjugate.A) + this.traverseAlg(conjugate.B);\n }\n\n // TODO: Remove spaces between repeated pauses (in traverseSequence)\n public traversePause(_pause: Pause): number {\n return 0;\n }\n\n public traverseNewline(_newLine: Newline): number {\n return 0;\n }\n\n // TODO: Enforce being followed by a newline (or the end of the alg)?\n public traverseLineComment(_comment: LineComment): number {\n return 0;\n }\n}\n\nfunction isCharUppercase(c: string): boolean {\n return \"A\" <= c && c <= \"Z\";\n}\n\n// TODO: Implement a puzzle-specific way to calculate this.\nfunction baseMetric(move: Move): number {\n const fam = move.family;\n if (\n (isCharUppercase(fam[0]) && fam[fam.length - 1] === \"v\") ||\n fam === \"x\" ||\n fam === \"y\" ||\n fam === \"z\" ||\n fam === \"T\"\n ) {\n return 0;\n } else {\n return 1;\n }\n}\n\nfunction etmMetric(_move: Move): number {\n return 1;\n}\n\n// TODO: Implement a puzzle-specific way to calculate this.\nfunction rangeBlockTurnMetric(move: Move): number {\n const fam = move.family;\n if (\n (isCharUppercase(fam[0]) && fam[fam.length - 1] === \"v\") ||\n fam === \"x\" ||\n fam === \"y\" ||\n fam === \"z\" ||\n fam === \"T\"\n ) {\n return 0;\n } else {\n return 1;\n }\n}\n\n// TODO: Implement a puzzle-specific way to calculate this.\nfunction quantumMetric(move: Move): number {\n return Math.abs(move.amount) * rangeBlockTurnMetric(move);\n}\n\nexport const countMoves = functionFromTraversal(CountMoves, [baseMetric]);\nexport const countMovesETM = functionFromTraversal(CountMoves, [etmMetric]);\nexport const countRangeBlockQuantumMovesPG = functionFromTraversal(CountMoves, [\n quantumMetric,\n]);\nexport const countRangeBlockMovesPG = functionFromTraversal(CountMoves, [\n rangeBlockTurnMetric,\n]);\n\n/**\n * Only implemented so far:\n *\n * - 3x3x3: OBTM, RBTM, ETM\n */\nexport function countMetricMoves(\n puzzleLoader: PuzzleLoader,\n metric: CommonMetric,\n alg: Alg,\n): number {\n if (puzzleLoader.id === \"3x3x3\") {\n if (metric in costFactorsByMetric) {\n return functionFromTraversal(CountMoves, [\n (move: Move) => countMove3x3x3(metric, move),\n ])(alg);\n }\n } else {\n switch (metric) {\n case CommonMetric.ExecutionTurnMetric:\n return countMovesETM(alg);\n case CommonMetric.RangeBlockTurnMetric:\n if (puzzleLoader.pg) {\n return countRangeBlockMovesPG(alg);\n }\n case CommonMetric.RangeBlockQuantumTurnMetric:\n if (puzzleLoader.pg) {\n return countRangeBlockQuantumMovesPG(alg);\n }\n }\n }\n throw new Error(\"Unsupported puzzle or metric.\");\n}\n", "import {\n Alg,\n Commutator,\n Conjugate,\n Grouping,\n LineComment,\n Move,\n Newline,\n Pause,\n TraversalUp,\n} from \"../alg\";\nimport { functionFromTraversal } from \"../alg\";\n\n// TODO: Include Pause, include amounts\nclass CountAnimatedLeaves extends TraversalUp<number, number> {\n public traverseAlg(alg: Alg): number {\n let total = 0;\n for (const part of alg.childAlgNodes()) {\n total += this.traverseAlgNode(part);\n }\n return total;\n }\n\n public traverseGrouping(grouping: Grouping): number {\n return this.traverseAlg(grouping.alg) * Math.abs(grouping.amount);\n }\n\n public traverseMove(_move: Move): number {\n return 1;\n }\n\n public traverseCommutator(commutator: Commutator): number {\n return (\n 2 * (this.traverseAlg(commutator.A) + this.traverseAlg(commutator.B))\n );\n }\n\n public traverseConjugate(conjugate: Conjugate): number {\n return 2 * this.traverseAlg(conjugate.A) + this.traverseAlg(conjugate.B);\n }\n\n public traversePause(_pause: Pause): number {\n return 1;\n }\n\n public traverseNewline(_newline: Newline): number {\n return 0;\n }\n\n public traverseLineComment(_comment: LineComment): number {\n return 0;\n }\n}\n\nexport const countAnimatedLeaves = functionFromTraversal(CountAnimatedLeaves);\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": ["CommonMetric", "CommonMetricAlias", "cache"]
|
|
7
7
|
}
|
|
@@ -11,14 +11,14 @@ import {
|
|
|
11
11
|
experimental3x3x3KPuzzle,
|
|
12
12
|
from,
|
|
13
13
|
getCached
|
|
14
|
-
} from "./chunk-
|
|
14
|
+
} from "./chunk-L4PH24KU.js";
|
|
15
15
|
import {
|
|
16
16
|
KPuzzle
|
|
17
|
-
} from "./chunk-
|
|
17
|
+
} from "./chunk-RSF22LKP.js";
|
|
18
18
|
import {
|
|
19
19
|
Move,
|
|
20
20
|
QuantumMove
|
|
21
|
-
} from "./chunk-
|
|
21
|
+
} from "./chunk-TM7SKFJD.js";
|
|
22
22
|
|
|
23
23
|
// src/cubing/puzzles/events.ts
|
|
24
24
|
var wcaEvents = {
|
|
@@ -660,4 +660,4 @@ export {
|
|
|
660
660
|
cube3x3x3,
|
|
661
661
|
puzzles
|
|
662
662
|
};
|
|
663
|
-
//# sourceMappingURL=chunk-
|
|
663
|
+
//# sourceMappingURL=chunk-XM2O37XU.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
Alg
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-TM7SKFJD.js";
|
|
4
4
|
|
|
5
5
|
// src/cubing/search/inside/solve/parseSGS.ts
|
|
6
6
|
function parseSGS(kpuzzle, sgs) {
|
|
@@ -85,4 +85,4 @@ function parseSGS(kpuzzle, sgs) {
|
|
|
85
85
|
export {
|
|
86
86
|
parseSGS
|
|
87
87
|
};
|
|
88
|
-
//# sourceMappingURL=chunk-
|
|
88
|
+
//# sourceMappingURL=chunk-ZIFM3JF6.js.map
|
|
@@ -4,19 +4,17 @@ import {
|
|
|
4
4
|
countAnimatedLeaves,
|
|
5
5
|
countMetricMoves,
|
|
6
6
|
countMoves,
|
|
7
|
-
countMovesETM
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
import "../chunk-
|
|
11
|
-
import "../chunk-
|
|
12
|
-
import "../chunk-2OZSC5I6.js";
|
|
7
|
+
countMovesETM
|
|
8
|
+
} from "../chunk-WWCSMIJO.js";
|
|
9
|
+
import "../chunk-L4PH24KU.js";
|
|
10
|
+
import "../chunk-RSF22LKP.js";
|
|
11
|
+
import "../chunk-TM7SKFJD.js";
|
|
13
12
|
export {
|
|
14
13
|
CommonMetric as ExperimentalCommonMetric,
|
|
15
14
|
CommonMetricAlias as ExperimentalCommonMetricAlias,
|
|
16
15
|
countAnimatedLeaves as experimentalCountAnimatedLeaves,
|
|
17
16
|
countMetricMoves as experimentalCountMetricMoves,
|
|
18
17
|
countMoves as experimentalCountMoves,
|
|
19
|
-
countMovesETM as experimentalCountMovesETM
|
|
20
|
-
countQuantumMoves as experimentalCountQuantumMoves
|
|
18
|
+
countMovesETM as experimentalCountMovesETM
|
|
21
19
|
};
|
|
22
20
|
//# sourceMappingURL=index.js.map
|
|
@@ -5,10 +5,10 @@ import {
|
|
|
5
5
|
spacedHexToBuffer,
|
|
6
6
|
twizzleBinaryToBinaryComponents,
|
|
7
7
|
twizzleBinaryToReid3x3x3
|
|
8
|
-
} from "../chunk-
|
|
9
|
-
import "../chunk-
|
|
10
|
-
import "../chunk-
|
|
11
|
-
import "../chunk-
|
|
8
|
+
} from "../chunk-L7WY7BIO.js";
|
|
9
|
+
import "../chunk-L4PH24KU.js";
|
|
10
|
+
import "../chunk-RSF22LKP.js";
|
|
11
|
+
import "../chunk-TM7SKFJD.js";
|
|
12
12
|
export {
|
|
13
13
|
binaryComponentsToReid3x3x3 as experimentalBinaryComponentsToReid3x3x3,
|
|
14
14
|
bufferToSpacedHex as experimentalBufferToSpacedHex,
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import {
|
|
2
2
|
Move,
|
|
3
3
|
QuantumMove
|
|
4
|
-
} from "../chunk-
|
|
4
|
+
} from "../chunk-TM7SKFJD.js";
|
|
5
5
|
|
|
6
6
|
// src/cubing/puzzle-geometry/FaceNameSwizzler.ts
|
|
7
7
|
var FaceNameSwizzler = class {
|
|
@@ -262,20 +262,20 @@ var MegaminxScramblingNotationMapper = class {
|
|
|
262
262
|
return new Move("Uv", move.amount);
|
|
263
263
|
}
|
|
264
264
|
if (move.family === "x" && Math.abs(move.amount) === 2) {
|
|
265
|
-
return new Move("
|
|
265
|
+
return new Move("ERv", move.amount / 2);
|
|
266
266
|
}
|
|
267
267
|
}
|
|
268
268
|
return this.child.notationToInternal(move);
|
|
269
269
|
}
|
|
270
270
|
// we never rewrite click moves to these moves.
|
|
271
271
|
notationToExternal(move) {
|
|
272
|
-
if (move.family === "
|
|
272
|
+
if (move.family === "ERv" && Math.abs(move.amount) === 1) {
|
|
273
273
|
return new Move(
|
|
274
274
|
new QuantumMove("x", move.innerLayer, move.outerLayer),
|
|
275
275
|
move.amount * 2
|
|
276
276
|
);
|
|
277
277
|
}
|
|
278
|
-
if (move.family === "
|
|
278
|
+
if (move.family === "ILv" && Math.abs(move.amount) === 1) {
|
|
279
279
|
return new Move(
|
|
280
280
|
new QuantumMove("x", move.innerLayer, move.outerLayer),
|
|
281
281
|
-move.amount * 2
|
|
@@ -287,7 +287,7 @@ var MegaminxScramblingNotationMapper = class {
|
|
|
287
287
|
move.amount
|
|
288
288
|
);
|
|
289
289
|
}
|
|
290
|
-
if (move.family === "
|
|
290
|
+
if (move.family === "Dv") {
|
|
291
291
|
return new Move("y", -move.amount);
|
|
292
292
|
}
|
|
293
293
|
return this.child.notationToExternal(move);
|
|
@@ -2147,11 +2147,11 @@ function defaultnets() {
|
|
|
2147
2147
|
],
|
|
2148
2148
|
// twelve faces: dodecahedron; U/F/R/F/BL/BR from megaminx
|
|
2149
2149
|
12: [
|
|
2150
|
-
["U", "
|
|
2151
|
-
["
|
|
2152
|
-
["R", "
|
|
2153
|
-
["
|
|
2154
|
-
["
|
|
2150
|
+
["U", "F", "", "", "", ""],
|
|
2151
|
+
["F", "U", "R", "C", "A", "L"],
|
|
2152
|
+
["R", "F", "", "", "E", ""],
|
|
2153
|
+
["E", "R", "", "BF", "", ""],
|
|
2154
|
+
["BF", "E", "BR", "BL", "I", "D"]
|
|
2155
2155
|
],
|
|
2156
2156
|
// twenty faces: icosahedron
|
|
2157
2157
|
20: [
|
|
@@ -2197,17 +2197,17 @@ function defaultcolors() {
|
|
|
2197
2197
|
},
|
|
2198
2198
|
12: {
|
|
2199
2199
|
U: "#ffffff" /* White */,
|
|
2200
|
-
|
|
2200
|
+
F: "#008800" /* DarkGreen */,
|
|
2201
2201
|
R: "#ff0000" /* Red */,
|
|
2202
|
-
|
|
2203
|
-
|
|
2202
|
+
C: "#ffffd0" /* Cream */,
|
|
2203
|
+
A: "#3399ff" /* Aqua */,
|
|
2204
2204
|
L: "#8800dd" /* Purple */,
|
|
2205
|
-
|
|
2206
|
-
|
|
2205
|
+
E: "#ff66cc" /* Pink */,
|
|
2206
|
+
BF: "#99ff00" /* Lime */,
|
|
2207
2207
|
BR: "#0000ff" /* DarkBlue */,
|
|
2208
2208
|
BL: "#ffff00" /* Yellow */,
|
|
2209
|
-
|
|
2210
|
-
|
|
2209
|
+
I: "#ff8000" /* Orange */,
|
|
2210
|
+
D: "#aaaaaa" /* Gray */
|
|
2211
2211
|
},
|
|
2212
2212
|
20: {
|
|
2213
2213
|
R: "#db69f0",
|
|
@@ -2264,72 +2264,72 @@ var orientationDefaults = {
|
|
|
2264
2264
|
},
|
|
2265
2265
|
12: {
|
|
2266
2266
|
v: [
|
|
2267
|
-
"
|
|
2268
|
-
"
|
|
2267
|
+
"URF",
|
|
2268
|
+
"UFL",
|
|
2269
2269
|
"ULBL",
|
|
2270
2270
|
"UBLBR",
|
|
2271
2271
|
"UBRR",
|
|
2272
|
-
"
|
|
2273
|
-
"
|
|
2274
|
-
"
|
|
2275
|
-
"
|
|
2276
|
-
"
|
|
2277
|
-
"
|
|
2278
|
-
"
|
|
2279
|
-
"
|
|
2280
|
-
"
|
|
2281
|
-
"
|
|
2282
|
-
"
|
|
2283
|
-
"
|
|
2284
|
-
"
|
|
2285
|
-
"
|
|
2286
|
-
"
|
|
2272
|
+
"DEBF",
|
|
2273
|
+
"DBFI",
|
|
2274
|
+
"DIA",
|
|
2275
|
+
"DAC",
|
|
2276
|
+
"DCE",
|
|
2277
|
+
"LAI",
|
|
2278
|
+
"ALF",
|
|
2279
|
+
"FCA",
|
|
2280
|
+
"CFR",
|
|
2281
|
+
"REC",
|
|
2282
|
+
"ERBR",
|
|
2283
|
+
"BRBFE",
|
|
2284
|
+
"BFBRBL",
|
|
2285
|
+
"BLIBF",
|
|
2286
|
+
"IBLL"
|
|
2287
2287
|
],
|
|
2288
2288
|
e: [
|
|
2289
|
-
"
|
|
2289
|
+
"UF",
|
|
2290
2290
|
"UR",
|
|
2291
2291
|
"UBR",
|
|
2292
2292
|
"UBL",
|
|
2293
2293
|
"UL",
|
|
2294
|
-
"
|
|
2295
|
-
"
|
|
2296
|
-
"
|
|
2297
|
-
"
|
|
2298
|
-
"
|
|
2299
|
-
"
|
|
2300
|
-
"
|
|
2301
|
-
"
|
|
2302
|
-
"
|
|
2303
|
-
"
|
|
2304
|
-
"
|
|
2305
|
-
"
|
|
2306
|
-
"
|
|
2307
|
-
"
|
|
2294
|
+
"ER",
|
|
2295
|
+
"EBR",
|
|
2296
|
+
"EBF",
|
|
2297
|
+
"ED",
|
|
2298
|
+
"EC",
|
|
2299
|
+
"IBF",
|
|
2300
|
+
"IBL",
|
|
2301
|
+
"IL",
|
|
2302
|
+
"IA",
|
|
2303
|
+
"ID",
|
|
2304
|
+
"AC",
|
|
2305
|
+
"CF",
|
|
2306
|
+
"FA",
|
|
2307
|
+
"BFBR",
|
|
2308
2308
|
"BRBL",
|
|
2309
|
-
"
|
|
2310
|
-
"
|
|
2311
|
-
"
|
|
2312
|
-
"
|
|
2313
|
-
"
|
|
2314
|
-
"
|
|
2315
|
-
"
|
|
2316
|
-
"
|
|
2309
|
+
"BLBF",
|
|
2310
|
+
"CD",
|
|
2311
|
+
"AD",
|
|
2312
|
+
"AL",
|
|
2313
|
+
"FL",
|
|
2314
|
+
"FR",
|
|
2315
|
+
"CR",
|
|
2316
|
+
"BFD",
|
|
2317
2317
|
"BRR",
|
|
2318
2318
|
"BLL"
|
|
2319
2319
|
],
|
|
2320
2320
|
c: [
|
|
2321
|
-
"
|
|
2322
|
-
"
|
|
2323
|
-
"
|
|
2324
|
-
"
|
|
2325
|
-
"
|
|
2326
|
-
"
|
|
2321
|
+
"UF",
|
|
2322
|
+
"FU",
|
|
2323
|
+
"DBF",
|
|
2324
|
+
"BFD",
|
|
2325
|
+
"AD",
|
|
2326
|
+
"CD",
|
|
2327
2327
|
"BRU",
|
|
2328
2328
|
"BLU",
|
|
2329
|
-
"
|
|
2330
|
-
"
|
|
2331
|
-
"
|
|
2332
|
-
"
|
|
2329
|
+
"LA",
|
|
2330
|
+
"RA",
|
|
2331
|
+
"EBR",
|
|
2332
|
+
"IBL"
|
|
2333
2333
|
]
|
|
2334
2334
|
},
|
|
2335
2335
|
20: {
|
|
@@ -2422,7 +2422,7 @@ function defaultOrientations() {
|
|
|
2422
2422
|
// FLUR towards viewer
|
|
2423
2423
|
12: [
|
|
2424
2424
|
["U", [0, 1, 0]],
|
|
2425
|
-
["
|
|
2425
|
+
["F", [0, 0, 1]]
|
|
2426
2426
|
],
|
|
2427
2427
|
// F towards viewer
|
|
2428
2428
|
20: [
|