PageSourceSearch

https://www.vzome.com/modules/chunk-OZSYDWV2.js

js vzome.com collected 2026-10-02 07:04:45 UTC 165,564 bytes, 4,016 lines download raw bytes

1import {
2  Button,
3  DesignViewer,
4  Link,
5  SceneIndexingProvider,
6  SceneProvider,
7  Switch,
8  getSceneTitleIndex,
9  urlViewerCSS,
10  useSceneIndexing
11} from "./chunk-PBSMYCQH.js";
12import {
13  CameraProvider,
14  ViewerProvider,
15  WorkerProvider,
16  createMutable,
17  unwrap,
18  useViewer,
19  useWorkerClient
20} from "./chunk-737R77QV.js";
21import {
22  $DEVCOMP,
23  For,
24  SVGElements,
25  Show,
26  batch,
27  createComponent,
28  createComputed,
29  createContext,
30  createEffect,
31  createMemo,
32  createRenderEffect,
33  createSignal,
34  createUniqueId,
35  getNextElement,
36  insert,
37  isServer,
38  mergeProps,
39  onCleanup,
40  render,
41  setAttribute,
42  sharedConfig,
43  splitProps,
44  spread,
45  ssrElement,
46  template,
47  untrack,
48  useContext,
49  voidFn
50} from "./chunk-47C2ISC4.js";
51
52// src/wc/zometool/zometool.css.js
53var instructionsCSS = `
54:host {
55  display: inline-grid;
56  overflow: hidden;
57  position: relative;
58  font-family: sans-serif;
59  --vzome-label-background: white;
60  container-type: inline-size;
61}
62
63:host > div:empty {
64  background: radial-gradient(#EEE, #AAA);
65}
66
67:host > div,
68:host > div > div {
69  position: absolute;
70  inset: 0;
71}
72
73.step-switch {
74  display: inherit;
75  height: 30px;
76  margin: 9px;
77  .switch__control {
78    display: block;
79    margin: 23px;
80    height: 25px;
81    border-radius: 13px;
82    width: 45px;
83    .switch__thumb {
84      height: 25px;
85      width: 25px;
86      border-radius: 13px;
87    }
88  }
89}
90.step_switch__label {
91  margin-right: 8px;
92  color: hsl(240 6% 10%);
93  user-select: none;
94  font-size: 17px;
95  min-width: max-content;
96}
97
98.step-controls {
99  display: grid;
100  grid-template-columns: 1fr 3fr;
101}
102
103.step-number {
104  min-width: 2em;
105  display: flex;
106  justify-content: center;
107}
108
109.step-buttons {
110  margin: auto;
111  min-height: 6rem;
112  gap: 13px;
113  display: flex;
114  align-items: center;
115  justify-content: center;
116}
117
118.step-button {
119  appearance: none;
120  height: 60px;
121  outline: none;
122  border: 1px solid black;
123  border-radius: 18px;
124  padding: 0 16px;
125  background-color: hsl(200 98% 39%);
126  color: white;
127  font-size: 3.5rem;
128  line-height: 0;
129}
130
131.limit-step {
132  height: 48px;
133  padding: 0 12px;
134  font-size: 2rem;
135}
136
137.step-button-svg {
138  user-select: none;
139  width: 1em;
140  height: 1em;
141  display: inline-block;
142  fill: currentColor;
143  flex-shrink: 0;
144}
145.step-button:hover {
146  background-color: hsl(201 98% 44%);
147}
148.step-button:active {
149  background-color: hsl(201 98% 48%);
150}
151.step-button:disabled {
152  background-color: hsl(200deg 44.28% 69.6%);
153  color: rgba(255, 255, 255, 0.2);
154  border-color: light-dark(rgba(118, 118, 118, 0.3), rgba(195, 195, 195, 0.3));
155}
156
157.step-button:focus-visible {
158  outline: 2px solid hsl(200 98% 39%);
159  outline-offset: 2px;
160}
161
162.zometool-instructions {
163  height: 100%;
164  display: grid;
165  grid-template-rows: min-content 1fr;
166}
167
168zometool-covering-products::before {
169   content: "Supporting products:";
170}
171
172.zometool-products-container {
173  max-height: 8.7rem;
174  overflow: auto;
175  margin-block-start: 8px;
176}
177
178.matched-product {
179  min-width: 250px;
180  display: flex;
181  justify-content: space-between;
182}
183
184@container ( max-width: 650px ) {
185
186  :host > div {
187    inset-inline: 10px;
188  }
189
190  .step-controls {
191    display: block;
192  }
193
194  .step-switch {
195    display: inherit;
196    .switch__control {
197      display: inline-flex;
198      margin: 5px;
199    }
200  }
201
202  .step-buttons {
203    transform: scale(0.8);
204    min-height: 4rem;
205  }
206
207  .step-button {
208    padding: 0 0;
209  }
210  .limit-step {
211    padding: 0 6px;
212  }
213  .step-number {
214    min-width: 1.4em;
215  }
216}
217
218`;
219
vendor: 5,076 bytes, lines 220-365
220// node_modules/@suid/system/colorManipulator.js
221function clamp(value, min = 0, max = 1) {
222  if (true) {
223    if (value < min || value > max) {
224      console.error(`MUI: The value provided ${value} is out of range [${min}, ${max}].`);
225    }
226  }
227  return Math.min(Math.max(min, value), max);
228}
229function hexToRgb(color) {
230  color = color.substr(1);
231  const re = new RegExp(`.{1,${color.length >= 6 ? 2 : 1}}`, "g");
232  let colors = color.match(re);
233  if (colors && colors[0].length === 1) {
234    colors = colors.map((n) => n + n);
235  }
236  return colors ? `rgb${colors.length === 4 ? "a" : ""}(${colors.map((n, index) => {
237    return index < 3 ? parseInt(n, 16) : Math.round(parseInt(n, 16) / 255 * 1e3) / 1e3;
238  }).join(", ")})` : "";
239}
240function decomposeColor(color) {
241  if (typeof color !== "string") {
242    return color;
243  }
244  if (color.charAt(0) === "#") {
245    return decomposeColor(hexToRgb(color));
246  }
247  const marker = color.indexOf("(");
248  const type = color.substring(0, marker);
249  if (["rgb", "rgba", "hsl", "hsla", "color"].indexOf(type) === -1) {
250    throw new Error("MUI: Unsupported `%s` color.\nThe following formats are supported: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla(), color(). " + color);
251  }
252  const valuesInput = color.substring(marker + 1, color.length - 1);
253  let values2;
254  let colorSpace;
255  if (type === "color") {
256    values2 = valuesInput.split(" ");
257    colorSpace = values2.shift();
258    if (values2.length === 4 && values2[3].charAt(0) === "/") {
259      values2[3] = values2[3].substr(1);
260    }
261    if (["srgb", "display-p3", "a98-rgb", "prophoto-rgb", "rec-2020"].indexOf(
262      // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
263      colorSpace
264    ) === -1) {
265      throw new Error("MUI: unsupported `%s` color space.\nThe following color spaces are supported: srgb, display-p3, a98-rgb, prophoto-rgb, rec-2020. " + colorSpace);
266    }
267  } else {
268    values2 = valuesInput.split(",");
269  }
270  return { type, values: values2.map((value) => parseFloat(value)), colorSpace };
271}
272function recomposeColor(color) {
273  const { type, colorSpace } = color;
274  const { values: values2 } = color;
275  let newValues;
276  if (type.indexOf("rgb") !== -1) {
277    newValues = values2.map((n, i) => i < 3 ? parseInt(n.toString(), 10) : n).join(",");
278  } else if (type.indexOf("hsl") !== -1) {
279    newValues = values2.map((n, i) => i === 1 || i === 2 ? `${n}%` : n).join(",");
280  }
281  if (type.indexOf("color") !== -1) {
282    newValues = `${colorSpace} ${values2.join(" ")}`;
283  } else {
284    newValues = `${values2.join(", ")}`;
285  }
286  return `${type}(${newValues})`;
287}
288function hslToRgb(color) {
289  const c = decomposeColor(color);
290  const { values: values2 } = c;
291  const h = values2[0];
292  const s = values2[1] / 100;
293  const l = values2[2] / 100;
294  const a = s * Math.min(l, 1 - l);
295  const f = (n, k = (n + h / 30) % 12) => l - a * Math.max(Math.min(k - 3, 9 - k, 1), -1);
296  let type = "rgb";
297  const rgb = [
298    Math.round(f(0) * 255),
299    Math.round(f(8) * 255),
300    Math.round(f(4) * 255)
301  ];
302  if (c.type === "hsla") {
303    type += "a";
304    rgb.push(values2[3]);
305  }
306  return recomposeColor({ type, values: rgb });
307}
308function getLuminance(color) {
309  const { type, values: values2 } = decomposeColor(color);
310  let rgb = type === "hsl" ? decomposeColor(hslToRgb(color)).values : values2;
311  rgb = rgb.map((val) => {
312    if (type !== "color") {
313      val /= 255;
314    }
315    return val <= 0.03928 ? val / 12.92 : ((val + 0.055) / 1.055) ** 2.4;
316  });
317  return Number((0.2126 * rgb[0] + 0.7152 * rgb[1] + 0.0722 * rgb[2]).toFixed(3));
318}
319function getContrastRatio(foreground, background) {
320  const lumA = getLuminance(foreground);
321  const lumB = getLuminance(background);
322  return (Math.max(lumA, lumB) + 0.05) / (Math.min(lumA, lumB) + 0.05);
323}
324function alpha(color, value) {
325  let { type, values: values2 } = decomposeColor(color);
326  value = clamp(value);
327  if (type === "rgb" || type === "hsl") {
328    type += "a";
329  }
330  if (type === "color") {
331    values2[3] = `/${value}`;
332  } else {
333    values2[3] = value;
334  }
335  return recomposeColor({ type, values: values2 });
336}
337function darken(inputColor, coefficient) {
338  const color = decomposeColor(inputColor);
339  coefficient = clamp(coefficient);
340  if (color.type.indexOf("hsl") !== -1) {
341    color.values[2] *= 1 - coefficient;
342  } else if (color.type.indexOf("rgb") !== -1 || color.type.indexOf("color") !== -1) {
343    for (let i = 0; i < 3; i += 1) {
344      color.values[i] *= 1 - coefficient;
345    }
346  }
347  return recomposeColor(color);
348}
349function lighten(inputColor, coefficient) {
350  const color = decomposeColor(inputColor);
351  coefficient = clamp(coefficient);
352  if (color.type.indexOf("hsl") !== -1) {
353    color.values[2] += (100 - color.values[2]) * coefficient;
354  } else if (color.type.indexOf("rgb") !== -1) {
355    for (let i = 0; i < 3; i += 1) {
356      color.values[i] += (255 - color.values[i]) * coefficient;
357    }
358  } else if (color.type.indexOf("color") !== -1) {
359    for (let i = 0; i < 3; i += 1) {
360      color.values[i] += (1 - color.values[i]) * coefficient;
361    }
362  }
363  return recomposeColor(color);
364}
365
vendor: 2,355 bytes, lines 366-448
366// node_modules/@suid/system/breakpoints.js
367var values = {
368  xs: 0,
369  sm: 600,
370  md: 900,
371  lg: 1200,
372  xl: 1536
373  // large screens
374};
375function handleBreakpoints(props, propValue, styleFromPropValue) {
376  const theme = props.theme || {};
377  if (Array.isArray(propValue)) {
378    const themeBreakpoints = theme.breakpoints;
379    return propValue.reduce((acc, item, index) => {
380      acc = {
381        ...acc,
382        ...themeBreakpoints.up(themeBreakpoints.keys[index], styleFromPropValue(propValue[index]))
383      };
384      return acc;
385    }, {});
386  }
387  if (typeof propValue === "object") {
388    const themeBreakpoints = theme.breakpoints;
389    const keys = Object.keys(propValue);
390    return keys.reduce((acc, breakpoint) => {
391      if (Object.keys(themeBreakpoints.values || values).indexOf(breakpoint) !== -1) {
392        acc = {
393          ...acc,
394          ...themeBreakpoints.up(breakpoint, styleFromPropValue(propValue[breakpoint], breakpoint))
395        };
396      } else {
397        const cssKey = breakpoint;
398        acc[cssKey] = propValue[cssKey];
399      }
400      return acc;
401    }, {});
402  }
403  const output = styleFromPropValue(propValue);
404  return output;
405}
406function computeBreakpointsBase(values2, breakpoints) {
407  const base = {};
408  if (typeof values2 !== "object") {
409    return base;
410  }
411  const breakpointsKeys = Object.keys(breakpoints);
412  if (Array.isArray(values2)) {
413    breakpointsKeys.forEach((breakpoint, i) => {
414      if (i < values2.length) {
415        base[breakpoint] = true;
416      }
417    });
418  } else {
419    breakpointsKeys.forEach((breakpoint) => {
420      if (values2[breakpoint] != null) {
421        base[breakpoint] = true;
422      }
423    });
424  }
425  return base;
426}
427function resolveBreakpointValues(data) {
428  const values2 = data.values;
429  const base = data.base || computeBreakpointsBase(values2, data.breakpoints || {});
430  const keys = Object.keys(base);
431  if (keys.length === 0) {
432    return data.values;
433  }
434  let previous;
435  return keys.reduce((acc, breakpoint, i) => {
436    if (Array.isArray(values2)) {
437      acc[breakpoint] = values2[i] != null ? values2[i] : values2[previous];
438      previous = i;
439    } else if (typeof values2 === "number") {
440      acc[breakpoint] = values2;
441    } else {
442      acc[breakpoint] = values2[breakpoint] != null ? values2[breakpoint] : values2[previous];
443      previous = breakpoint;
444    }
445    return acc;
446  }, {});
447}
448
vendor: 182 bytes, lines 449-452
449// node_modules/@suid/styled-engine/StyledEngineProvider/StyledEngineContext.jsx
450var StyledEngineContext = createContext({});
451var StyledEngineContext_default = StyledEngineContext;
452
vendor: 1,118 bytes, lines 453-487
453// node_modules/@suid/material/node_modules/@suid/utils/deepmerge.js
454function isPlainObject(item) {
455  return item !== null && typeof item === "object" && item.constructor === Object;
456}
457function sortKeys(object, keys) {
458  for (const key of keys) {
459    const value = object[key];
460    delete object[key];
461    object[key] = value;
462  }
463}
464function deepmerge(target, source, options = { clone: true }) {
465  const output = options.clone ? { ...target } : target;
466  const sourceKeys = options.sortKeys ? [] : void 0;
467  if (isPlainObject(target) && isPlainObject(source)) {
468    Object.keys(source).forEach((key) => {
469      if (key === "__proto__") {
470        return;
471      }
472      if (sourceKeys)
473        sourceKeys.push(key);
474      let sourceValue;
475      let targetValue;
476      if (isPlainObject(sourceValue = source[key]) && key in target && isPlainObject(targetValue = target[key])) {
477        output[key] = deepmerge(targetValue, sourceValue, options);
478      } else if (sourceValue !== void 0) {
479        output[key] = sourceValue;
480      }
481    });
482    if (sourceKeys)
483      sortKeys(output, sourceKeys);
484  }
485  return output;
486}
487
vendor: 514 bytes, lines 488-509
488// node_modules/@suid/material/node_modules/@suid/utils/cloneObject.js
489function cloneObject(target) {
490  if (Array.isArray(target)) {
491    const output = [];
492    for (const value of target) {
493      output.push(cloneObject(value));
494    }
495    return output;
496  } else if (isPlainObject(target)) {
497    const output = {};
498    for (const key in target) {
499      if (key === "__proto__") {
500        continue;
501      }
502      output[key] = cloneObject(target[key]);
503    }
504    return output;
505  } else {
506    return target;
507  }
508}
509
vendor: 226 bytes, lines 510-518
510// node_modules/@suid/material/node_modules/@suid/utils/merge.js
511function merge(target, ...sources) {
512  for (const source of sources)
513    deepmerge(target, cloneObject(source), {
514      clone: false
515    });
516  return target;
517}
518
vendor: 302 bytes, lines 519-530
519// node_modules/@suid/material/styles/createComponents.jsx
520var componentsDefault = createComponentsOptions({});
521function createComponentsOptions(options) {
522  return options;
523}
524function createComponents(data) {
525  const result = {
526    ...merge({}, componentsDefault, data ?? {})
527  };
528  return result;
529}
530
vendor: 357 bytes, lines 531-546
531// node_modules/@suid/material/styles/createMixins.js
532function createMixins(breakpoints, spacing = void 0, mixins = {}) {
533  return {
534    toolbar: {
535      minHeight: 56,
536      [`${breakpoints.up("xs")} and (orientation: landscape)`]: {
537        minHeight: 48
538      },
539      [breakpoints.up("sm")]: {
540        minHeight: 64
541      }
542    },
543    ...mixins
544  };
545}
546
vendor: 129 bytes, lines 547-553
547// node_modules/@suid/material/colors/common.js
548var common = {
549  black: "#000",
550  white: "#fff"
551};
552var common_default = common;
553
vendor: 338 bytes, lines 554-572
554// node_modules/@suid/material/colors/red.js
555var red = {
556  50: "#ffebee",
557  100: "#ffcdd2",
558  200: "#ef9a9a",
559  300: "#e57373",
560  400: "#ef5350",
561  500: "#f44336",
562  600: "#e53935",
563  700: "#d32f2f",
564  800: "#c62828",
565  900: "#b71c1c",
566  A100: "#ff8a80",
567  A200: "#ff5252",
568  A400: "#ff1744",
569  A700: "#d50000"
570};
571var red_default = red;
572
vendor: 350 bytes, lines 573-591
573// node_modules/@suid/material/colors/purple.js
574var purple = {
575  50: "#f3e5f5",
576  100: "#e1bee7",
577  200: "#ce93d8",
578  300: "#ba68c8",
579  400: "#ab47bc",
580  500: "#9c27b0",
581  600: "#8e24aa",
582  700: "#7b1fa2",
583  800: "#6a1b9a",
584  900: "#4a148c",
585  A100: "#ea80fc",
586  A200: "#e040fb",
587  A400: "#d500f9",
588  A700: "#aa00ff"
589};
590var purple_default = purple;
591
vendor: 342 bytes, lines 592-610
592// node_modules/@suid/material/colors/blue.js
593var blue = {
594  50: "#e3f2fd",
595  100: "#bbdefb",
596  200: "#90caf9",
597  300: "#64b5f6",
598  400: "#42a5f5",
599  500: "#2196f3",
600  600: "#1e88e5",
601  700: "#1976d2",
602  800: "#1565c0",
603  900: "#0d47a1",
604  A100: "#82b1ff",
605  A200: "#448aff",
606  A400: "#2979ff",
607  A700: "#2962ff"
608};
609var blue_default = blue;
610
vendor: 362 bytes, lines 611-629
611// node_modules/@suid/material/colors/lightBlue.js
612var lightBlue = {
613  50: "#e1f5fe",
614  100: "#b3e5fc",
615  200: "#81d4fa",
616  300: "#4fc3f7",
617  400: "#29b6f6",
618  500: "#03a9f4",
619  600: "#039be5",
620  700: "#0288d1",
621  800: "#0277bd",
622  900: "#01579b",
623  A100: "#80d8ff",
624  A200: "#40c4ff",
625  A400: "#00b0ff",
626  A700: "#0091ea"
627};
628var lightBlue_default = lightBlue;
629
vendor: 346 bytes, lines 630-648
630// node_modules/@suid/material/colors/green.js
631var green = {
632  50: "#e8f5e9",
633  100: "#c8e6c9",
634  200: "#a5d6a7",
635  300: "#81c784",
636  400: "#66bb6a",
637  500: "#4caf50",
638  600: "#43a047",
639  700: "#388e3c",
640  800: "#2e7d32",
641  900: "#1b5e20",
642  A100: "#b9f6ca",
643  A200: "#69f0ae",
644  A400: "#00e676",
645  A700: "#00c853"
646};
647var green_default = green;
648
vendor: 350 bytes, lines 649-667
649// node_modules/@suid/material/colors/orange.js
650var orange = {
651  50: "#fff3e0",
652  100: "#ffe0b2",
653  200: "#ffcc80",
654  300: "#ffb74d",
655  400: "#ffa726",
656  500: "#ff9800",
657  600: "#fb8c00",
658  700: "#f57c00",
659  800: "#ef6c00",
660  900: "#e65100",
661  A100: "#ffd180",
662  A200: "#ffab40",
663  A400: "#ff9100",
664  A700: "#ff6d00"
665};
666var orange_default = orange;
667
vendor: 342 bytes, lines 668-686
668// node_modules/@suid/material/colors/grey.js
669var grey = {
670  50: "#fafafa",
671  100: "#f5f5f5",
672  200: "#eeeeee",
673  300: "#e0e0e0",
674  400: "#bdbdbd",
675  500: "#9e9e9e",
676  600: "#757575",
677  700: "#616161",
678  800: "#424242",
679  900: "#212121",
680  A100: "#f5f5f5",
681  A200: "#eeeeee",
682  A400: "#bdbdbd",
683  A700: "#616161"
684};
685var grey_default = grey;
686
vendor: 5,854 bytes, lines 687-892
687// node_modules/@suid/material/styles/createPalette.jsx
688var useLightOptions = () => ({
689  text: {
690    primary: "rgba(0, 0, 0, 0.87)",
691    secondary: "rgba(0, 0, 0, 0.6)",
692    disabled: "rgba(0, 0, 0, 0.38)"
693  },
694  divider: "rgba(0, 0, 0, 0.12)",
695  background: {
696    paper: common_default.white,
697    default: common_default.white
698  },
699  action: {
700    active: "rgba(0, 0, 0, 0.54)",
701    hover: "rgba(0, 0, 0, 0.04)",
702    hoverOpacity: 0.04,
703    selected: "rgba(0, 0, 0, 0.08)",
704    selectedOpacity: 0.08,
705    disabled: "rgba(0, 0, 0, 0.26)",
706    disabledBackground: "rgba(0, 0, 0, 0.12)",
707    disabledOpacity: 0.38,
708    focus: "rgba(0, 0, 0, 0.12)",
709    focusOpacity: 0.12,
710    activatedOpacity: 0.12
711  }
712});
713var lightColors = {
714  primary: {
715    main: blue_default[700],
716    light: blue_default[400],
717    dark: blue_default[800]
718  },
719  secondary: {
720    main: purple_default[500],
721    light: purple_default[300],
722    dark: purple_default[700]
723  },
724  error: {
725    main: red_default[700],
726    light: red_default[400],
727    dark: red_default[800]
728  },
729  info: {
730    main: lightBlue_default[700],
731    light: lightBlue_default[800],
732    dark: lightBlue_default[900]
733  },
734  success: {
735    main: green_default[800],
736    light: green_default[500],
737    dark: green_default[900]
738  },
739  warning: {
740    main: "#ED6C02",
741    light: orange_default[500],
742    dark: orange_default[900]
743  }
744};
745var useDarkOptions = () => ({
746  text: {
747    primary: common_default.white,
748    secondary: "rgba(255, 255, 255, 0.7)",
749    disabled: "rgba(255, 255, 255, 0.5)"
750  },
751  divider: "rgba(255, 255, 255, 0.12)",
752  background: {
753    paper: "#121212",
754    default: "#121212"
755  },
756  action: {
757    active: common_default.white,
758    hover: "rgba(255, 255, 255, 0.08)",
759    hoverOpacity: 0.08,
760    selected: "rgba(255, 255, 255, 0.16)",
761    selectedOpacity: 0.16,
762    disabled: "rgba(255, 255, 255, 0.3)",
763    disabledBackground: "rgba(255, 255, 255, 0.12)",
764    disabledOpacity: 0.38,
765    focus: "rgba(255, 255, 255, 0.12)",
766    focusOpacity: 0.12,
767    activatedOpacity: 0.24
768  }
769});
770var darkColors = {
771  primary: {
772    main: blue_default[200],
773    light: blue_default[50],
774    dark: blue_default[400]
775  },
776  secondary: {
777    main: purple_default[200],
778    light: purple_default[50],
779    dark: purple_default[400]
780  },
781  error: {
782    main: red_default[500],
783    light: red_default[300],
784    dark: red_default[700]
785  },
786  info: {
787    main: lightBlue_default[400],
788    light: lightBlue_default[300],
789    dark: lightBlue_default[700]
790  },
791  success: {
792    main: green_default[400],
793    light: green_default[300],
794    dark: green_default[700]
795  },
796  warning: {
797    main: orange_default[400],
798    light: orange_default[300],
799    dark: orange_default[700]
800  }
801};
802var modes = {
803  light: useLightOptions,
804  dark: useDarkOptions
805};
806function getContrastText(background, contrastThreshold) {
807  return getContrastRatio(background, common_default.white) >= contrastThreshold ? common_default.white : "rgba(0, 0, 0, 0.87)";
808}
809function addLightOrDark(intent, direction, shade, tonalOffset) {
810  const tonalOffsetLight = typeof tonalOffset === "number" ? tonalOffset : tonalOffset.light;
811  const tonalOffsetDark = typeof tonalOffset === "number" ? tonalOffset * 1.5 : tonalOffset.dark;
812  if (!intent[direction]) {
813    if (intent.hasOwnProperty(shade)) {
814      intent[direction] = intent[shade];
815    } else if (direction === "light") {
816      intent.light = lighten(intent.main, tonalOffsetLight);
817    } else if (direction === "dark") {
818      intent.dark = darken(intent.main, tonalOffsetDark);
819    }
820  }
821}
822function augmentColor(data) {
823  const color = {
824    ...data.color
825  };
826  const mainShade = data.mainShade ?? 500;
827  if (!data.color.main && data.color[mainShade]) color.main = data.color[mainShade];
828  addLightOrDark(color, "light", data.lightShade ?? 300, data.tonalOffset);
829  addLightOrDark(color, "dark", data.darkShade ?? 700, data.tonalOffset);
830  if (!color.contrastText) color.contrastText = getContrastText(color.main, data.contrastThreshold);
831  return color;
832}
833var usePalleteDefaults = () => createPaletteOptions({
834  mode: "light",
835  tonalOffset: 0.2,
836  contrastThreshold: 3,
837  grey: grey_default,
838  common: common_default
839});
840function createPaletteOptions(data) {
841  return data;
842}
843function createPalette(options) {
844  const colorNames = ["error", "info", "primary", "secondary", "success", "warning"];
845  const palleteDefaults = usePalleteDefaults();
846  const result = {
847    ...merge({}, palleteDefaults, modes[options?.mode ?? palleteDefaults.mode](), options),
848    isColorName(name) {
849      return colorNames.includes(name);
850    },
851    getColorObject(color) {
852      return result[color];
853    },
854    getColor(color) {
855      return result.mode === "light" ? result[color].light : result[color].dark;
856    },
857    augmentColor(data) {
858      return augmentColor({
859        ...data,
860        tonalOffset: result.tonalOffset,
861        contrastThreshold: result.contrastThreshold
862      });
863    },
864    getContrastText(background) {
865      return getContrastText(background, result.contrastThreshold);
866    }
867  };
868  const getDefaultColor = (color) => result.mode === "light" ? lightColors[color] : darkColors[color];
869  result.primary = result.augmentColor({
870    color: result.primary || getDefaultColor("primary")
871  });
872  result.secondary = result.augmentColor({
873    color: result.secondary || getDefaultColor("secondary"),
874    mainShade: "A400",
875    lightShade: "A200",
876    darkShade: "A700"
877  });
878  result.error = result.augmentColor({
879    color: result.error || getDefaultColor("error")
880  });
881  result.warning = result.augmentColor({
882    color: result.warning || getDefaultColor("warning")
883  });
884  result.info = result.augmentColor({
885    color: result.info || getDefaultColor("info")
886  });
887  result.success = result.augmentColor({
888    color: result.success || getDefaultColor("success")
889  });
890  return result;
891}
892
vendor: 2,280 bytes, lines 893-911
893// node_modules/@suid/material/styles/createShadows.jsx
894var cache = {};
895var shadowKeyUmbraOpacity = 0.2;
896var shadowKeyPenumbraOpacity = 0.14;
897var shadowAmbientShadowOpacity = 0.12;
898function createCssShadow(...px) {
899  return [`${px[0]}px ${px[1]}px ${px[2]}px ${px[3]}px rgba(0,0,0,${shadowKeyUmbraOpacity})`, `${px[4]}px ${px[5]}px ${px[6]}px ${px[7]}px rgba(0,0,0,${shadowKeyPenumbraOpacity})`, `${px[8]}px ${px[9]}px ${px[10]}px ${px[11]}px rgba(0,0,0,${shadowAmbientShadowOpacity})`].join(",");
900}
901var shadows = [() => "none", () => createCssShadow(0, 2, 1, -1, 0, 1, 1, 0, 0, 1, 3, 0), () => createCssShadow(0, 3, 1, -2, 0, 2, 2, 0, 0, 1, 5, 0), () => createCssShadow(0, 3, 3, -2, 0, 3, 4, 0, 0, 1, 8, 0), () => createCssShadow(0, 2, 4, -1, 0, 4, 5, 0, 0, 1, 10, 0), () => createCssShadow(0, 3, 5, -1, 0, 5, 8, 0, 0, 1, 14, 0), () => createCssShadow(0, 3, 5, -1, 0, 6, 10, 0, 0, 1, 18, 0), () => createCssShadow(0, 4, 5, -2, 0, 7, 10, 1, 0, 2, 16, 1), () => createCssShadow(0, 5, 5, -3, 0, 8, 10, 1, 0, 3, 14, 2), () => createCssShadow(0, 5, 6, -3, 0, 9, 12, 1, 0, 3, 16, 2), () => createCssShadow(0, 6, 6, -3, 0, 10, 14, 1, 0, 4, 18, 3), () => createCssShadow(0, 6, 7, -4, 0, 11, 15, 1, 0, 4, 20, 3), () => createCssShadow(0, 7, 8, -4, 0, 12, 17, 2, 0, 5, 22, 4), () => createCssShadow(0, 7, 8, -4, 0, 13, 19, 2, 0, 5, 24, 4), () => createCssShadow(0, 7, 9, -4, 0, 14, 21, 2, 0, 5, 26, 4), () => createCssShadow(0, 8, 9, -5, 0, 15, 22, 2, 0, 6, 28, 5), () => createCssShadow(0, 8, 10, -5, 0, 16, 24, 2, 0, 6, 30, 5), () => createCssShadow(0, 8, 11, -5, 0, 17, 26, 2, 0, 6, 32, 5), () => createCssShadow(0, 9, 11, -5, 0, 18, 28, 2, 0, 7, 34, 6), () => createCssShadow(0, 9, 12, -6, 0, 19, 29, 2, 0, 7, 36, 6), () => createCssShadow(0, 10, 13, -6, 0, 20, 31, 3, 0, 8, 38, 7), () => createCssShadow(0, 10, 13, -6, 0, 21, 33, 3, 0, 8, 40, 7), () => createCssShadow(0, 10, 14, -6, 0, 22, 35, 3, 0, 8, 42, 7), () => createCssShadow(0, 11, 14, -7, 0, 23, 36, 3, 0, 9, 44, 8), () => createCssShadow(0, 11, 15, -7, 0, 24, 38, 3, 0, 9, 46, 8)];
902function createShadows() {
903  return new Proxy([], {
904    get: (target, p) => {
905      if (typeof p !== "string" || isNaN(Number(p))) return target[p];
906      if (p in cache) return cache[p];
907      return cache[p] = shadows[p]();
908    }
909  });
910}
911
vendor: 2,348 bytes, lines 912-983
912// node_modules/@suid/material/styles/createTransitions.jsx
913var easing = {
914  easeInOut: "cubic-bezier(0.4, 0, 0.2, 1)",
915  easeOut: "cubic-bezier(0.0, 0, 0.2, 1)",
916  easeIn: "cubic-bezier(0.4, 0, 1, 1)",
917  sharp: "cubic-bezier(0.4, 0, 0.6, 1)"
918};
919var duration = {
920  shortest: 150,
921  shorter: 200,
922  short: 250,
923  standard: 300,
924  complex: 375,
925  enteringScreen: 225,
926  leavingScreen: 195
927};
928function formatMs(milliseconds) {
929  return `${Math.round(milliseconds)}ms`;
930}
931function getAutoHeightDuration(height) {
932  if (!height) {
933    return 0;
934  }
935  const constant = height / 36;
936  return Math.round((4 + 15 * constant ** 0.25 + constant / 5) * 10);
937}
938function createTransitions(inputTransitions) {
939  const mergedEasing = {
940    ...easing,
941    ...inputTransitions.easing
942  };
943  const mergedDuration = {
944    ...duration,
945    ...inputTransitions.duration
946  };
947  const create2 = (props = ["all"], options = {}) => {
948    const {
949      duration: durationOption = mergedDuration.standard,
950      easing: easingOption = mergedEasing.easeInOut,
951      delay = 0,
952      ...other
953    } = options;
954    if (true) {
955      const isString = (value) => typeof value === "string";
956      const isNumber = (value) => !isNaN(parseFloat(value));
957      if (!isString(props) && !Array.isArray(props)) {
958        console.error('MUI: Argument "props" must be a string or Array.');
959      }
960      if (!isNumber(durationOption) && !isString(durationOption)) {
961        console.error(`MUI: Argument "duration" must be a number or a string but found ${durationOption}.`);
962      }
963      if (!isString(easingOption)) {
964        console.error('MUI: Argument "easing" must be a string.');
965      }
966      if (!isNumber(delay) && !isString(delay)) {
967        console.error('MUI: Argument "delay" must be a number or a string.');
968      }
969      if (Object.keys(other).length !== 0) {
970        console.error(`MUI: Unrecognized argument(s) [${Object.keys(other).join(",")}].`);
971      }
972    }
973    return (Array.isArray(props) ? props : [props]).map((animatedProp) => `${animatedProp} ${typeof durationOption === "string" ? durationOption : formatMs(durationOption)} ${easingOption} ${typeof delay === "string" ? delay : formatMs(delay)}`).join(",");
974  };
975  return {
976    getAutoHeightDuration,
977    create: create2,
978    ...inputTransitions,
979    easing: mergedEasing,
980    duration: mergedDuration
981  };
982}
983
vendor: 2,332 bytes, lines 984-1057
984// node_modules/@suid/material/styles/createTypography.jsx
985var fontWeight = {
986  light: 300,
987  regular: 400,
988  medium: 500,
989  bold: 700
990};
991var typographyDefaults = createTypographyOptions({
992  fontFamily: '"Roboto", "Helvetica", "Arial", sans-serif',
993  fontSize: 14,
994  htmlFontSize: 16,
995  h1: {},
996  h2: {},
997  h3: {},
998  h4: {},
999  h5: {},
1000  h6: {},
1001  subtitle1: {},
1002  subtitle2: {},
1003  body1: {},
1004  body2: {},
1005  button: {},
1006  caption: {},
1007  overline: {},
1008  fontWeightLight: 300,
1009  fontWeightRegular: 400,
1010  fontWeightMedium: 500,
1011  fontWeightBold: 700
1012});
1013function createTypographyOptions(options) {
1014  return options;
1015}
1016function round(value) {
1017  return Math.round(value * 1e5) / 1e5;
1018}
1019function makeVariant(base, fontWeight2, size, lineHeight, letterSpacing, casing) {
1020  return {
1021    fontFamily: base.fontFamily,
1022    fontWeight: fontWeight2,
1023    fontSize: base.pxToRem(size),
1024    lineHeight: `${lineHeight}`,
1025    letterSpacing: `${round(letterSpacing / size)}em`,
1026    ...casing ? {
1027      textTransform: "uppercase"
1028    } : {}
1029  };
1030}
1031function createTypography(options = {}) {
1032  const base = {
1033    fontFamily: options.fontFamily ?? typographyDefaults.fontFamily,
1034    fontSize: options.fontSize ?? typographyDefaults.fontSize,
1035    htmlFontSize: options?.htmlFontSize ?? typographyDefaults.htmlFontSize,
1036    pxToRem: (size) => {
1037      const coef = base.fontSize / 14;
1038      return `${size / base.htmlFontSize * coef}rem`;
1039    }
1040  };
1041  return merge(base, {
1042    h1: makeVariant(base, fontWeight.light, 96, 1.167, -1.5),
1043    h2: makeVariant(base, fontWeight.light, 60, 1.2, -0.5),
1044    h3: makeVariant(base, fontWeight.regular, 48, 1.167, 0),
1045    h4: makeVariant(base, fontWeight.regular, 34, 1.235, 0.25),
1046    h5: makeVariant(base, fontWeight.regular, 24, 1.334, 0),
1047    h6: makeVariant(base, fontWeight.medium, 20, 1.6, 0.15),
1048    subtitle1: makeVariant(base, fontWeight.regular, 16, 1.75, 0.15),
1049    subtitle2: makeVariant(base, fontWeight.medium, 14, 1.57, 0.1),
1050    body1: makeVariant(base, fontWeight.regular, 16, 1.5, 0.15),
1051    body2: makeVariant(base, fontWeight.regular, 14, 1.43, 0.15),
1052    button: makeVariant(base, fontWeight.medium, 14, 1.75, 0.4, true),
1053    caption: makeVariant(base, fontWeight.regular, 12, 1.66, 0.4),
1054    overline: makeVariant(base, fontWeight.regular, 12, 2.66, 1, true)
1055  }, typographyDefaults, options);
1056}
1057
vendor: 391 bytes, lines 1058-1077
1058// node_modules/@suid/material/styles/createZIndex.jsx
1059var zIndexDefaults = createZIndexOptions({
1060  mobileStepper: 1e3,
1061  speedDial: 1050,
1062  appBar: 1100,
1063  drawer: 1200,
1064  modal: 1300,
1065  snackbar: 1400,
1066  tooltip: 1500
1067});
1068function createZIndexOptions(data) {
1069  return data;
1070}
1071function createZIndex(data) {
1072  const result = {
1073    ...merge({}, zIndexDefaults, data)
1074  };
1075  return result;
1076}
1077
vendor: 617 bytes, lines 1078-1094
1078// node_modules/@suid/system/node_modules/@suid/css/renderMediaQuery.js
1079function renderMediaQuery(comparator, width, units = "px") {
1080  let selector;
1081  if (comparator === "up") {
1082    selector = `(min-width:${width}${units})`;
1083  } else if (comparator === "down") {
1084    selector = `(max-width:${width}${units})`;
1085  } else if (comparator === "between") {
1086    const [maxW, minW] = width;
1087    selector = `(max-width:${maxW}${units}) and (min-width:${minW}${units})`;
1088  } else {
1089    throw new Error(`Invalid comparator: ${comparator}`);
1090  }
1091  return `@media ${selector}`;
1092}
1093var renderMediaQuery_default = renderMediaQuery;
1094
vendor: 1,105 bytes, lines 1095-1135
1095// node_modules/@suid/system/createTheme/createBreakpoints.js
1096var breakpointsDefault = createBreakpointsOptions({
1097  columns: 12,
1098  keys: ["xs", "sm", "md", "lg", "xl"],
1099  values: {
1100    xs: 0,
1101    sm: 600,
1102    md: 900,
1103    lg: 1200,
1104    xl: 1536
1105  },
1106  unit: "px"
1107});
1108function createBreakpointsOptions(options) {
1109  return options;
1110}
1111function createBreakpoints(options) {
1112  const result = {
1113    ...breakpointsDefault,
1114    ...options ?? {},
1115    up: (value, css) => {
1116      const key = renderMediaQuery_default("up", result.resolve(value));
1117      return css ? { [key]: css } : key;
1118    },
1119    down: (value, css) => {
1120      const key = renderMediaQuery_default("down", result.resolve(value));
1121      return css ? { [key]: css } : key;
1122    },
1123    between: (value, css) => {
1124      const key = renderMediaQuery_default("between", [
1125        result.resolve(value[0]),
1126        result.resolve(value[1])
1127      ]);
1128      return css ? { [key]: css } : key;
1129    },
1130    resolve: (value) => typeof value === "number" ? value : result.values[value]
1131  };
1132  return result;
1133}
1134var createBreakpoints_default = createBreakpoints;
1135
vendor: 352 bytes, lines 1136-1146
1136// node_modules/@suid/system/createTheme/createSpacing.js
1137function createSpacing(options) {
1138  if (typeof options === "function")
1139    return options;
1140  const resolved = (...values2) => {
1141    return values2.map((v) => typeof v === "number" ? `${v * (options ?? 8)}px` : v).join(" ");
1142  };
1143  return resolved;
1144}
1145var createSpacing_default = createSpacing;
1146
vendor: 1,125 bytes, lines 1147-1181
1147// node_modules/@suid/system/node_modules/@suid/utils/deepmerge.js
1148function isPlainObject2(item) {
1149  return item !== null && typeof item === "object" && item.constructor === Object;
1150}
1151function sortKeys2(object, keys) {
1152  for (const key of keys) {
1153    const value = object[key];
1154    delete object[key];
1155    object[key] = value;
1156  }
1157}
1158function deepmerge2(target, source, options = { clone: true }) {
1159  const output = options.clone ? { ...target } : target;
1160  const sourceKeys = options.sortKeys ? [] : void 0;
1161  if (isPlainObject2(target) && isPlainObject2(source)) {
1162    Object.keys(source).forEach((key) => {
1163      if (key === "__proto__") {
1164        return;
1165      }
1166      if (sourceKeys)
1167        sourceKeys.push(key);
1168      let sourceValue;
1169      let targetValue;
1170      if (isPlainObject2(sourceValue = source[key]) && key in target && isPlainObject2(targetValue = target[key])) {
1171        output[key] = deepmerge2(targetValue, sourceValue, options);
1172      } else if (sourceValue !== void 0) {
1173        output[key] = sourceValue;
1174      }
1175    });
1176    if (sourceKeys)
1177      sortKeys2(output, sourceKeys);
1178  }
1179  return output;
1180}
1181
vendor: 516 bytes, lines 1182-1203
1182// node_modules/@suid/system/node_modules/@suid/utils/cloneObject.js
1183function cloneObject2(target) {
1184  if (Array.isArray(target)) {
1185    const output = [];
1186    for (const value of target) {
1187      output.push(cloneObject2(value));
1188    }
1189    return output;
1190  } else if (isPlainObject2(target)) {
1191    const output = {};
1192    for (const key in target) {
1193      if (key === "__proto__") {
1194        continue;
1195      }
1196      output[key] = cloneObject2(target[key]);
1197    }
1198    return output;
1199  } else {
1200    return target;
1201  }
1202}
1203
vendor: 227 bytes, lines 1204-1212
1204// node_modules/@suid/system/node_modules/@suid/utils/merge.js
1205function merge2(target, ...sources) {
1206  for (const source of sources)
1207    deepmerge2(target, cloneObject2(source), {
1208      clone: false
1209    });
1210  return target;
1211}
1212
vendor: 317 bytes, lines 1213-1227
1213// node_modules/@suid/system/createTheme/shape.js
1214var shapeDefaults = createShapeOptions({
1215  borderRadius: 4
1216});
1217function createShapeOptions(data) {
1218  return data;
1219}
1220function createShape(options) {
1221  const result = {
1222    ...merge2({}, shapeDefaults, options)
1223  };
1224  return result;
1225}
1226var shape_default = createShape;
1227
vendor: 1,143 bytes, lines 1228-1261
1228// node_modules/@suid/material/styles/createTheme.jsx
1229function createTheme(input = {}) {
1230  const theme = {
1231    direction: "ltr",
1232    ...input
1233  };
1234  function def(key, defaults) {
1235    const inputValue = input[key];
1236    Object.defineProperty(theme, key, {
1237      configurable: true,
1238      enumerable: true,
1239      ...typeof inputValue === "function" ? {
1240        get: inputValue
1241      } : {
1242        value: defaults({
1243          [key]: inputValue
1244        })
1245      }
1246    });
1247  }
1248  def("breakpoints", (input2) => createBreakpoints_default(input2.breakpoints));
1249  def("components", (input2) => createComponents(input2.components));
1250  def("palette", (input2) => createPalette(input2.palette));
1251  def("shape", (input2) => shape_default(input2.shape));
1252  def("spacing", (input2) => createSpacing_default(input2.spacing));
1253  def("typography", (input2) => createTypography(input2.typography));
1254  def("shadows", () => createShadows());
1255  def("transitions", () => createTransitions({}));
1256  def("zIndex", (input2) => createZIndex(input2.zIndex));
1257  def("mixins", () => createMixins(theme.breakpoints));
1258  return theme;
1259}
1260var createTheme_default = createTheme;
1261
vendor: 311 bytes, lines 1262-1273
1262// node_modules/@suid/system/makeGetDefaultTheme.js
1263function makeGetDefaultTheme(createTheme3) {
1264  let defaultTheme;
1265  return function getDefaultTheme() {
1266    if (!defaultTheme) {
1267      defaultTheme = createTheme3();
1268    }
1269    return defaultTheme;
1270  };
1271}
1272var makeGetDefaultTheme_default = makeGetDefaultTheme;
1273
vendor: 138 bytes, lines 1274-1276
1274// node_modules/@suid/material/styles/getDefaultTheme.js
1275var getDefaultTheme_default = makeGetDefaultTheme_default(createTheme_default);
1276
vendor: 352 bytes, lines 1277-1287
1277// node_modules/@suid/system/ThemeContext/ThemeContext.jsx
1278var ThemeContext;
1279if (true) {
1280  const global = globalThis;
1281  const suid = global.__suid || (global.__suid = {});
1282  ThemeContext = suid.systemThemeContext || (suid.systemThemeContext = createContext({}));
1283} else {
1284  ThemeContext = createContext({});
1285}
1286var ThemeContext_default = ThemeContext;
1287
vendor: 496 bytes, lines 1288-1307
1288// node_modules/@suid/system/createTheme/createTheme.jsx
1289function createTheme2(data) {
1290  const result = {
1291    direction: "ltr",
1292    shadows: void 0,
1293    transitions: void 0,
1294    components: void 0,
1295    palette: void 0,
1296    typography: void 0,
1297    zIndex: void 0,
1298    mixins: void 0,
1299    ...data,
1300    breakpoints: createBreakpoints(data?.breakpoints),
1301    shape: createShape(data?.shape),
1302    spacing: createSpacing(data?.spacing)
1303  };
1304  return result;
1305}
1306var createTheme_default2 = createTheme2;
1307
vendor: 131 bytes, lines 1308-1310
1308// node_modules/@suid/system/getDefaultTheme.js
1309var getDefaultTheme_default2 = makeGetDefaultTheme_default(createTheme_default2);
1310
vendor: 169 bytes, lines 1311-1317
1311// node_modules/@suid/system/node_modules/@suid/utils/isEmptyObject.js
1312function isEmptyObject(object) {
1313  for (const _key in object)
1314    return false;
1315  return true;
1316}
1317
vendor: 430 bytes, lines 1318-1331
1318// node_modules/@suid/system/useTheme.js
1319function useTheme(defaultTheme = getDefaultTheme_default2, Context = ThemeContext_default) {
1320  const theme = useContext(Context);
1321  if (isEmptyObject(theme) && defaultTheme) {
1322    if (typeof defaultTheme === "function")
1323      return defaultTheme();
1324    return defaultTheme;
1325  }
1326  if (!theme)
1327    throw new Error("Theme is not defined");
1328  return theme;
1329}
1330var useTheme_default = useTheme;
1331
vendor: 212 bytes, lines 1332-1337
1332// node_modules/@suid/material/styles/useTheme.js
1333function useTheme2(defaultTheme = getDefaultTheme_default) {
1334  return useTheme_default(defaultTheme, ThemeContext_default);
1335}
1336var useTheme_default2 = useTheme2;
1337
vendor: 175 bytes, lines 1338-1343
1338// node_modules/@suid/base/useTheme.js
1339function useTheme3(defaultTheme) {
1340  return useTheme_default(defaultTheme, ThemeContext_default);
1341}
1342var useTheme_default3 = useTheme3;
1343
vendor: 567 bytes, lines 1344-1361
1344// node_modules/@suid/base/useThemeProps.js
1345function useThemeProps(options) {
1346  const props = [];
1347  const propDefaults = typeof options.propDefaults === "function" ? options.propDefaults({
1348    set: (v) => v,
1349    inProps: options.props
1350  }) : options.propDefaults;
1351  const theme = useTheme_default3();
1352  const themeProps = theme.components?.[options.name]?.defaultProps;
1353  if (propDefaults)
1354    props.push(propDefaults);
1355  if (themeProps)
1356    props.push(themeProps);
1357  if (!props.length)
1358    return options.props;
1359  return mergeProps(...[...props, options.props]);
1360}
1361
vendor: 1,411 bytes, lines 1362-1400
1362// node_modules/@suid/system/Dynamic/Dynamic.jsx
1363function createElement(tagName, isSVG = false) {
1364  return isSVG ? document.createElementNS("http://www.w3.org/2000/svg", tagName) : document.createElement(tagName);
1365}
1366function createServerDynamicComponent(component, props) {
1367  const comp = component(), t = typeof comp;
1368  if (comp) {
1369    if (t === "function") return comp(props);
1370    else if (t === "string") {
1371      return ssrElement(comp, props, void 0, true);
1372    }
1373  }
1374}
1375function createStaticComponent(component, props) {
1376  switch (typeof component) {
1377    case "function":
1378      if ("_DX_DEV_") Object.assign(component, {
1379        [$DEVCOMP]: true
1380      });
1381      return untrack(() => component(props));
1382    case "string":
1383      const isSvg = SVGElements.has(component);
1384      const el = sharedConfig.context ? getNextElement() : createElement(component, isSvg);
1385      spread(el, props, isSvg);
1386      return el;
1387  }
1388}
1389function createDynamicComponent(component, props) {
1390  if (isServer) return createServerDynamicComponent(component, props);
1391  const cached = createMemo(component);
1392  return createMemo(() => createStaticComponent(cached(), props));
1393}
1394function Dynamic(props) {
1395  const [p, others] = splitProps(props, ["$component"]);
1396  if (isServer) return createServerDynamicComponent(() => p.$component, others);
1397  return createDynamicComponent(() => p.$component, others);
1398}
1399var Dynamic_default = Dynamic;
1400
vendor: 1,132 bytes, lines 1401-1435
1401// node_modules/@suid/styled-engine/node_modules/@suid/utils/deepmerge.js
1402function isPlainObject3(item) {
1403  return item !== null && typeof item === "object" && item.constructor === Object;
1404}
1405function sortKeys3(object, keys) {
1406  for (const key of keys) {
1407    const value = object[key];
1408    delete object[key];
1409    object[key] = value;
1410  }
1411}
1412function deepmerge3(target, source, options = { clone: true }) {
1413  const output = options.clone ? { ...target } : target;
1414  const sourceKeys = options.sortKeys ? [] : void 0;
1415  if (isPlainObject3(target) && isPlainObject3(source)) {
1416    Object.keys(source).forEach((key) => {
1417      if (key === "__proto__") {
1418        return;
1419      }
1420      if (sourceKeys)
1421        sourceKeys.push(key);
1422      let sourceValue;
1423      let targetValue;
1424      if (isPlainObject3(sourceValue = source[key]) && key in target && isPlainObject3(targetValue = target[key])) {
1425        output[key] = deepmerge3(targetValue, sourceValue, options);
1426      } else if (sourceValue !== void 0) {
1427        output[key] = sourceValue;
1428      }
1429    });
1430    if (sourceKeys)
1431      sortKeys3(output, sourceKeys);
1432  }
1433  return output;
1434}
1435
vendor: 411 bytes, lines 1436-1451
1436// node_modules/@suid/styled-engine/mergeStyleProps.js
1437function mergeStyleProps(values2) {
1438  const result = values2.reduce((result2, value) => {
1439    if ("name" in value)
1440      result2[`--${value.name}`] = "0";
1441    deepmerge3(result2, value, {
1442      clone: false,
1443      sortKeys: true
1444    });
1445    return result2;
1446  }, {});
1447  delete result.name;
1448  return result;
1449}
1450var mergeStyleProps_default = mergeStyleProps;
1451
vendor: 494 bytes, lines 1452-1471
1452// node_modules/@suid/styled-engine/node_modules/@suid/css/assert.js
1453function isVar(value) {
1454  return value.startsWith("--");
1455}
1456function isPrivateVar(value) {
1457  return value.startsWith("__");
1458}
1459function isSelector(value) {
1460  return /[^a-z-]/i.test(value) && !isVar(value);
1461}
1462function isGlobalSelector(value) {
1463  return value.startsWith("@global");
1464}
1465function isMediaQuery(value) {
1466  return value.startsWith("@media");
1467}
1468function isKeyframes(value) {
1469  return value.startsWith("@keyframes");
1470}
1471
vendor: 180 bytes, lines 1472-1476
1472// node_modules/@suid/styled-engine/node_modules/@suid/css/utils/string.js
1473function snakeCase(value) {
1474  return value.replace(/[A-Z]/g, (letter) => `-${letter.toLowerCase()}`);
1475}
1476
vendor: 3,096 bytes, lines 1477-1567
1477// node_modules/@suid/styled-engine/node_modules/@suid/css/render.js
1478function renderSelector(propKey, propValue, selectors = [], options = {}) {
1479  const subselectors = propKey.split(",").map((v) => {
1480    v = v.trim();
1481    return v.includes("&") ? v : `& ${v}`;
1482  });
1483  return render2(propValue, (selectors.length ? selectors : [""]).flatMap((selector) => subselectors.map((v) => v.replace(/&/g, selector).trim())), {
1484    ...options
1485  });
1486}
1487function snakeCaseWithCache(name, cache2) {
1488  if (!cache2)
1489    return snakeCase(name);
1490  let result = cache2.get(name);
1491  if (result)
1492    return result;
1493  cache2.set(name, result = snakeCase(name));
1494  return result;
1495}
1496function render2(css, selectors = [], options = {}) {
1497  const props = [];
1498  const rules = [];
1499  for (let propKey in css) {
1500    const propValue = css[propKey];
1501    if (isPrivateVar(propKey)) {
1502      continue;
1503    } else if (isGlobalSelector(propKey)) {
1504      for (const selector in propValue) {
1505        rules.push(...renderSelector(selector, propValue[selector], [], options));
1506      }
1507    } else if (isMediaQuery(propKey)) {
1508      rules.push(...render2(propValue, selectors, {
1509        ...options,
1510        sublevel: true
1511      }).map((v) => `${propKey} {
1512${v}
1513}`));
1514    } else if (isVar(propKey)) {
1515      if (propValue !== void 0 && propValue !== null)
1516        props.push(`${propKey}: ${propValue};`);
1517    } else if (isKeyframes(propKey)) {
1518      const keyframes = [];
1519      for (const k in propValue) {
1520        keyframes.push(...render2(propValue[k], [/^\d+$/.test(k) ? `${k}%` : k], {
1521          ...options,
1522          sublevel: true
1523        }));
1524      }
1525      rules.push(`${propKey} {
1526${keyframes.join("\n")}
1527}`);
1528    } else if (isSelector(propKey)) {
1529      rules.push(...renderSelector(propKey, propValue, selectors, options));
1530    } else if (options.extraProperties && propKey in options.extraProperties) {
1531      const extraProps = options.extraProperties[propKey](propValue);
1532      for (const extraPropKey in extraProps) {
1533        const inValue = extraProps[extraPropKey];
1534        const value = options.onPropertyValue ? options.onPropertyValue(extraPropKey, inValue) : inValue;
1535        if (value !== void 0 && value !== null)
1536          props.push(`${snakeCaseWithCache(extraPropKey, options.propertyNameCache)}: ${value};`);
1537      }
1538    } else {
1539      propKey = snakeCaseWithCache(propKey, options.propertyNameCache);
1540      const value = options.onPropertyValue ? options.onPropertyValue(propKey, propValue) : propValue;
1541      if (value !== void 0 && value !== null)
1542        props.push(`${propKey}: ${value};`);
1543    }
1544  }
1545  const renderProps = (level) => {
1546    const pad = "	".repeat(level);
1547    return `${pad}${props.join(`
1548${pad}`)}`;
1549  };
1550  if (selectors.length) {
1551    const pad = options.sublevel ? `	` : ``;
1552    const selectorStr = pad + selectors.join(`,
1553${pad}`);
1554    return [
1555      ...props.length ? [
1556        `${selectorStr} {
1557${renderProps(options.sublevel ? 2 : 1)}
1558${pad}}`
1559      ] : [],
1560      ...rules
1561    ];
1562  } else {
1563    return [...props.length ? [renderProps(0)] : [], ...rules];
1564  }
1565}
1566var render_default = render2;
1567
vendor: 165 bytes, lines 1568-1572
1568// node_modules/@suid/styled-engine/node_modules/@suid/css/utils/array.js
1569function toArray(value) {
1570  return value ? Array.isArray(value) ? value : [value] : [];
1571}
1572
vendor: 186 bytes, lines 1573-1579
1573// node_modules/@suid/styled-engine/node_modules/@suid/css/utils/function.js
1574function resolveFunction(value) {
1575  if (typeof value === "function")
1576    value = value();
1577  return value;
1578}
1579
vendor: 1,603 bytes, lines 1580-1628
1580// node_modules/@suid/styled-engine/node_modules/@suid/css/createStyleObject.js
1581var StyleCache = class {
1582  ids = /* @__PURE__ */ new Map();
1583  rules = /* @__PURE__ */ new Map();
1584  propertyNames = /* @__PURE__ */ new Map();
1585  create(name, rules, componentId) {
1586    let styleObject = this.rules.get(rules);
1587    if (styleObject)
1588      return styleObject;
1589    let componentIndex = this.ids.get(componentId);
1590    if (typeof componentIndex === "number") {
1591      this.ids.set(componentId, ++componentIndex);
1592      componentId += `_${componentIndex}`;
1593    }
1594    styleObject = create(name, rules, componentId);
1595    this.save(styleObject, rules);
1596    return styleObject;
1597  }
1598  save(style, rules) {
1599    this.ids.set(style.id, 0);
1600    this.rules.set(rules, style);
1601  }
1602  delete(style) {
1603    this.ids.delete(style.id);
1604    this.rules.delete(style.rules);
1605  }
1606};
1607function create(name, rules, id) {
1608  return {
1609    id,
1610    name,
1611    className: `${name}-${id}`,
1612    rules: rules.replaceAll(`$id`, `${id}`)
1613  };
1614}
1615function createStyleObject(options) {
1616  const className = `${options.name}-$id`;
1617  const propsValues = toArray(resolveFunction(options.props));
1618  const propertyNameCache = options.cache?.propertyNames;
1619  const rules = propsValues.map((v) => typeof v === "string" ? `.${className} {
1620${v}
1621}` : render_default(v, [`.${className}`], {
1622    extraProperties: options.extraProperties,
1623    propertyNameCache
1624  }).join("\n")).join("\n");
1625  return options.cache?.create(options.name, rules, options.componentId) || create(options.name, rules, options.componentId);
1626}
1627var createStyleObject_default = createStyleObject;
1628
vendor: 364 bytes, lines 1629-1639
1629// node_modules/@suid/styled-engine/node_modules/@suid/css/dom/setStyleElementText.js
1630function setStyleElementText(element, text) {
1631  if ("styleSheet" in element) {
1632    element["styleSheet"].cssText = text;
1633  } else {
1634    element.innerText = "";
1635    element.appendChild(document.createTextNode(text));
1636  }
1637}
1638var setStyleElementText_default = setStyleElementText;
1639
vendor: 679 bytes, lines 1640-1662
1640// node_modules/@suid/styled-engine/node_modules/@suid/css/dom/createStyleElement.js
1641function setAttributes(element, attributes) {
1642  for (const name in attributes) {
1643    const value = attributes[name];
1644    if (value !== void 0) {
1645      if (value === null) {
1646        element.removeAttribute(name);
1647      } else {
1648        element.setAttribute(name, value);
1649      }
1650    }
1651  }
1652}
1653function createStyleElement(css, attributes) {
1654  const element = document.createElement("style");
1655  element.type = "text/css";
1656  if (attributes)
1657    setAttributes(element, attributes);
1658  setStyleElementText_default(element, css);
1659  return element;
1660}
1661var createStyleElement_default = createStyleElement;
1662
vendor: 322 bytes, lines 1663-1670
1663// node_modules/@suid/styled-engine/node_modules/@suid/css/dom/registerStyleElementUsage.js
1664function registerStyleElementUsage(style) {
1665  let uses = Number(style.getAttribute("data-uses"));
1666  uses++;
1667  style.setAttribute("data-uses", uses.toString());
1668}
1669var registerStyleElementUsage_default = registerStyleElementUsage;
1670
vendor: 1,253 bytes, lines 1671-1703
1671// node_modules/@suid/styled-engine/node_modules/@suid/css/dom/appendStyleElement.js
1672var placeholderId = "suid-injectFirst";
1673function appendStyleElement(css, attributes, injectFirst) {
1674  if (Array.isArray(css))
1675    css = css.join("\n");
1676  const id = attributes?.["id"];
1677  const head = document.head || document.getElementsByTagName("head")[0];
1678  const prevElement = id && document.getElementById(id);
1679  if (prevElement && prevElement instanceof HTMLStyleElement) {
1680    setStyleElementText_default(prevElement, css);
1681    registerStyleElementUsage_default(prevElement);
1682    return prevElement;
1683  } else {
1684    if (prevElement)
1685      prevElement.remove();
1686    const element = createStyleElement_default(css, attributes);
1687    registerStyleElementUsage_default(element);
1688    if (injectFirst) {
1689      let placeholderElement = head.querySelector(`#${placeholderId}`);
1690      if (!placeholderElement) {
1691        placeholderElement = document.createElement("style");
1692        placeholderElement.setAttribute("id", placeholderId);
1693        head.prepend(placeholderElement);
1694      }
1695      head.insertBefore(element, placeholderElement);
1696    } else {
1697      head.appendChild(element);
1698    }
1699    return element;
1700  }
1701}
1702var appendStyleElement_default = appendStyleElement;
1703
vendor: 445 bytes, lines 1704-1713
1704// node_modules/@suid/styled-engine/node_modules/@suid/css/dom/findStyleElement.js
1705function findStyleElement(input, classPrefix = "css-") {
1706  if (typeof input === "string")
1707    return document.getElementById(input);
1708  const className = [...input.classList].find((name) => name.startsWith(classPrefix));
1709  if (className)
1710    return document.getElementById(className.slice(classPrefix.length));
1711}
1712var findStyleElement_default = findStyleElement;
1713
vendor: 386 bytes, lines 1714-1725
1714// node_modules/@suid/styled-engine/node_modules/@suid/css/dom/unregisterStyleElementUsage.js
1715function unregisterStyleElementUsage(style) {
1716  let uses = Number(style.getAttribute("data-uses"));
1717  uses--;
1718  if (uses <= 0) {
1719    style.remove();
1720  } else {
1721    style.setAttribute("data-uses", uses.toString());
1722  }
1723}
1724var unregisterStyleElementUsage_default = unregisterStyleElementUsage;
1725
vendor: 172 bytes, lines 1726-1730
1726// node_modules/@suid/styled-engine/node_modules/@suid/utils/randomString.js
1727function randomString() {
1728  return Math.random().toString(36).substring(2, 15).slice(0, 8);
1729}
1730
vendor: 2,929 bytes, lines 1731-1821
1731// node_modules/@suid/styled-engine/createStyle.jsx
1732var _tmpl$ = /* @__PURE__ */ template(`<style>`);
1733var styleCache = isServer ? void 0 : new StyleCache();
1734function normalizeStyleProps(props) {
1735  if (!props) {
1736    return [];
1737  } else if (Array.isArray(props)) {
1738    return props.flat(Infinity).filter((v) => !!v);
1739  } else {
1740    return [props];
1741  }
1742}
1743function createStyleId() {
1744  if (!sharedConfig.context) return randomString();
1745  const id = createUniqueId().replaceAll("-", "");
1746  const chunkSize = 9;
1747  const chunks = Math.ceil(id.length / chunkSize);
1748  const ids = [];
1749  for (let chunk = 1; chunk <= chunks; ++chunk) {
1750    const index = (chunk - 1) * chunkSize;
1751    const number = Number(id.slice(index, index + chunkSize));
1752    ids.push(number.toString(32));
1753  }
1754  return ids.join("-");
1755}
1756function createStyle(value) {
1757  const context = useContext(StyledEngineContext_default);
1758  const [name, setName] = createSignal("");
1759  const componentId = createStyleId();
1760  let styleElement;
1761  createRenderEffect((prevResult) => {
1762    const propsValue = value();
1763    let styleObject;
1764    if (propsValue) {
1765      styleObject = createStyleObject_default({
1766        name: "css",
1767        props: mergeStyleProps_default(normalizeStyleProps(propsValue)),
1768        cache: styleCache,
1769        componentId
1770      });
1771      if (isServer) {
1772        if (true) {
1773          if (context.injectFirst) console.warn(`SUID: 'injectFirst' is not supported in SSR mode.`);
1774        }
1775        voidFn(() => (() => {
1776          const _el$ = _tmpl$();
1777          createRenderEffect((_p$) => {
1778            const _v$ = styleObject.id, _v$2 = styleObject.rules, _v$3 = context.cache?.nonce;
1779            _v$ !== _p$._v$ && setAttribute(_el$, "id", _p$._v$ = _v$);
1780            _v$2 !== _p$._v$2 && (_el$.innerHTML = _p$._v$2 = _v$2);
1781            _v$3 !== _p$._v$3 && setAttribute(_el$, "nonce", _p$._v$3 = _v$3);
1782            return _p$;
1783          }, {
1784            _v$: void 0,
1785            _v$2: void 0,
1786            _v$3: void 0
1787          });
1788          return _el$;
1789        })());
1790      } else {
1791        styleElement = findStyleElement_default(styleObject.id);
1792        if (styleElement) {
1793          registerStyleElementUsage_default(styleElement);
1794        } else {
1795          styleElement = appendStyleElement_default(styleObject.rules, {
1796            id: styleObject.id,
1797            nonce: context.cache?.nonce
1798          }, context.injectFirst);
1799        }
1800        if (prevResult?.styleElement) {
1801          unregisterStyleElementUsage_default(prevResult.styleElement);
1802        }
1803      }
1804    }
1805    if (typeof styleObject?.className === "string") {
1806      setName(styleObject.className);
1807    } else {
1808      setName("");
1809    }
1810    return {
1811      className: styleObject?.className,
1812      styleElement
1813    };
1814  }, void 0);
1815  onCleanup(() => {
1816    if (styleElement) unregisterStyleElementUsage_default(styleElement);
1817  });
1818  return name;
1819}
1820var createStyle_default = createStyle;
1821
vendor: 427 bytes, lines 1822-1838
1822// node_modules/@suid/system/node_modules/@suid/css/assert.js
1823function isVar2(value) {
1824  return value.startsWith("--");
1825}
1826function isSelector2(value) {
1827  return /[^a-z-]/i.test(value) && !isVar2(value);
1828}
1829function isGlobalSelector2(value) {
1830  return value.startsWith("@global");
1831}
1832function isMediaQuery2(value) {
1833  return value.startsWith("@media");
1834}
1835function isKeyframes2(value) {
1836  return value.startsWith("@keyframes");
1837}
1838
vendor: 923 bytes, lines 1839-1868
1839// node_modules/@suid/system/node_modules/@suid/css/resolve.js
1840function resolve(css, onProp, cssTarget = {}) {
1841  for (const name in css) {
1842    const value = css[name];
1843    if (isGlobalSelector2(name)) {
1844      cssTarget[name] = resolve(value, onProp);
1845    } else if (isMediaQuery2(name)) {
1846      cssTarget[name] = resolve(value, onProp);
1847    } else if (isKeyframes2(name)) {
1848      cssTarget[name] = {};
1849      for (const v in value) {
1850        cssTarget[name][v] = resolve(value[v], onProp);
1851      }
1852    } else if (isSelector2(name)) {
1853      cssTarget[name] = resolve(value, onProp);
1854    } else {
1855      const result = onProp(name, value);
1856      if (result) {
1857        for (const key in result) {
1858          cssTarget[key] = isMediaQuery2(key) ? { ...cssTarget[key], ...result[key] } : result[key];
1859        }
1860      } else {
1861        cssTarget[name] = value;
1862      }
1863    }
1864  }
1865  return cssTarget;
1866}
1867var resolve_default = resolve;
1868
vendor: 1,204 bytes, lines 1869-1926
1869// node_modules/@suid/system/resolveStyledProps.js
1870var unitLess = /* @__PURE__ */ new Set([
1871  "animationIterationCount",
1872  "borderImageOutset",
1873  "borderImageSlice",
1874  "borderImageWidth",
1875  "boxFlex",
1876  "boxFlexGroup",
1877  "boxOrdinalGroup",
1878  "columnCount",
1879  "columns",
1880  "flex",
1881  "flexGrow",
1882  "flexPositive",
1883  "flexShrink",
1884  "flexNegative",
1885  "flexOrder",
1886  "gridRow",
1887  "gridRowEnd",
1888  "gridRowSpan",
1889  "gridRowStart",
1890  "gridColumn",
1891  "gridColumnEnd",
1892  "gridColumnSpan",
1893  "gridColumnStart",
1894  "msGridRow",
1895  "msGridRowSpan",
1896  "msGridColumn",
1897  "msGridColumnSpan",
1898  "fontWeight",
1899  "lineHeight",
1900  "opacity",
1901  "order",
1902  "orphans",
1903  "tabSize",
1904  "widows",
1905  "zIndex",
1906  "zoom",
1907  "WebkitLineClamp",
1908  "fillOpacity",
1909  "floodOpacity",
1910  "stopOpacity",
1911  "strokeDasharray",
1912  "strokeDashoffset",
1913  "strokeMiterlimit",
1914  "strokeOpacity",
1915  "strokeWidth"
1916]);
1917function resolveStyledPropsValue(name, value) {
1918  if (typeof value === "number") {
1919    return { [name]: unitLess.has(name) ? value.toString() : `${value}px` };
1920  }
1921}
1922function resolveStyledProps(v, cssTarget = {}) {
1923  return resolve_default(v, resolveStyledPropsValue, cssTarget);
1924}
1925var resolveStyledProps_default = resolveStyledProps;
1926
vendor: 369 bytes, lines 1927-1941
1927// node_modules/@suid/system/getThemeValue.js
1928function getThemeValue(theme, key, value) {
1929  if (typeof value !== "string")
1930    return value;
1931  const names = value.split(".");
1932  let ref = theme[key];
1933  for (let i = 0; i < names.length; i++) {
1934    ref = ref?.[names[i]];
1935    if (!ref)
1936      break;
1937  }
1938  return ref ?? value;
1939}
1940var getThemeValue_default = getThemeValue;
1941
vendor: 1,939 bytes, lines 1942-1999
1942// node_modules/@suid/system/spacing.js
1943function getPath(obj, path) {
1944  if (!path || typeof path !== "string") {
1945    return null;
1946  }
1947  return path.split(".").reduce((acc, item) => acc && acc[item] ? acc[item] : null, obj);
1948}
1949function createUnaryUnit(theme, themeKey, defaultValue, propName) {
1950  const themeSpacing = getPath(theme, themeKey) || defaultValue;
1951  if (typeof themeSpacing === "number") {
1952    return (abs) => {
1953      if (typeof abs === "string") {
1954        return abs;
1955      }
1956      if (true) {
1957        if (typeof abs !== "number") {
1958          console.error(`MUI: Expected ${propName} argument to be a number or a string, got ${abs}.`);
1959        }
1960      }
1961      return themeSpacing * abs;
1962    };
1963  }
1964  if (Array.isArray(themeSpacing)) {
1965    return (abs) => {
1966      if (typeof abs === "string") {
1967        return abs;
1968      }
1969      if (true) {
1970        if (!Number.isInteger(abs)) {
1971          console.error([
1972            `MUI: The \`theme.${themeKey}\` array type cannot be combined with non integer values.You should either use an integer value that can be used as index, or define the \`theme.${themeKey}\` as a number.`
1973          ].join("\n"));
1974        } else if (abs > themeSpacing.length - 1) {
1975          console.error([
1976            `MUI: The value provided (${abs}) overflows.`,
1977            `The supported values are: ${JSON.stringify(themeSpacing)}.`,
1978            `${abs} > ${themeSpacing.length - 1}, you need to add the missing values.`
1979          ].join("\n"));
1980        }
1981      }
1982      return themeSpacing[abs];
1983    };
1984  }
1985  if (typeof themeSpacing === "function") {
1986    return themeSpacing;
1987  }
1988  if (true) {
1989    console.error([
1990      `MUI: The \`theme.${themeKey}\` value (${themeSpacing}) is invalid.`,
1991      "It should be a number, an array or a function."
1992    ].join("\n"));
1993  }
1994  return () => void 0;
1995}
1996function createUnarySpacing(theme) {
1997  return createUnaryUnit(theme, "spacing.resolve", 8, "spacing.resolve");
1998}
1999
vendor: 7,598 bytes, lines 2000-2207
2000// node_modules/@suid/system/createSystemProps.js
2001var dirMap = {
2002  x: ["Left", "Right"],
2003  y: ["Top", "Bottom"]
2004};
2005function asPx(value) {
2006  return typeof value === "number" ? `${value}px` : value;
2007}
2008function customProp(name, onValue) {
2009  return (value, theme) => onValue(name, value, theme);
2010}
2011function prop(name, onValue) {
2012  return onValue ? (value, theme) => ({
2013    [name]: onValue(name, value, theme)
2014  }) : (value) => ({ [name]: value });
2015}
2016function pxProp(name) {
2017  return prop(name, (name2, value) => asPx(value));
2018}
2019function mProp(name, suffix, onValue) {
2020  const names = suffix.map((v) => `${name}${v}`);
2021  return onValue ? (value, theme) => names.reduce((result, name2) => {
2022    result[name2] = onValue(name2, value, theme);
2023    return result;
2024  }, {}) : (value) => names.reduce((result, name2) => {
2025    result[name2] = value;
2026    return result;
2027  }, {});
2028}
2029function createSystemProps() {
2030  return {
2031    ...createSystemDisplayProps(),
2032    ...createSystemFlexboxProps(),
2033    ...createSystemGridProps(),
2034    ...createSystemPositionProps(),
2035    ...createSystemPaletteProps(),
2036    ...createSystemSizingProps(),
2037    ...createSystemBorderProps(),
2038    ...createSystemSpacingProps(),
2039    ...createSystemTypographyProps()
2040  };
2041}
2042function createSystemDisplayProps() {
2043  return {
2044    displayPrint: customProp("displayPrint", (name, display) => ({
2045      "@media print": {
2046        display
2047      }
2048    })),
2049    displayRaw: prop("display"),
2050    overflow: prop("overflow"),
2051    textOverflow: prop("textOverflow"),
2052    visibility: prop("visibility"),
2053    whiteSpace: prop("whiteSpace")
2054  };
2055}
2056function createSystemFlexboxProps() {
2057  return {
2058    flexBasis: prop("flexBasis"),
2059    flexDirection: prop("flexDirection"),
2060    flexWrap: prop("flexWrap"),
2061    justifyContent: prop("justifyContent"),
2062    alignItems: prop("alignItems"),
2063    alignContent: prop("alignContent"),
2064    order: prop("order"),
2065    flex: prop("flex"),
2066    flexGrow: prop("flexGrow"),
2067    flexShrink: prop("flexShrink"),
2068    alignSelf: prop("alignSelf"),
2069    justifyItems: prop("justifyItems"),
2070    justifySelf: prop("justifySelf")
2071  };
2072}
2073function createSystemGridProps() {
2074  const spacing = (name, value, theme) => createUnaryUnit(theme, "spacing", 8, name)(value);
2075  return {
2076    gap: prop("gap", spacing),
2077    columnGap: prop("columnGap", spacing),
2078    rowGap: prop("rowGap", spacing),
2079    gridColumn: prop("gridColumn"),
2080    gridRow: prop("gridRow"),
2081    gridAutoFlow: prop("gridAutoFlow"),
2082    gridAutoColumns: prop("gridAutoColumns"),
2083    gridAutoRows: prop("gridAutoRows"),
2084    gridTemplateColumns: prop("gridTemplateColumns"),
2085    gridTemplateRows: prop("gridTemplateRows"),
2086    gridTemplateAreas: prop("gridTemplateAreas"),
2087    gridArea: prop("gridArea")
2088  };
2089}
2090function createSystemPositionProps() {
2091  return {
2092    position: prop("position"),
2093    zIndex: prop("zIndex", (name, value, theme) => theme.zIndex?.[name] ?? value),
2094    top: pxProp("top"),
2095    right: pxProp("right"),
2096    bottom: pxProp("bottom"),
2097    left: pxProp("left")
2098  };
2099}
2100function createSystemPaletteProps() {
2101  const paletteValue = (name, value, theme) => getThemeValue_default(theme, "palette", value);
2102  return {
2103    color: prop("color", paletteValue),
2104    bgcolor: prop("backgroundColor", paletteValue),
2105    backgroundColor: prop("backgroundColor", paletteValue)
2106  };
2107}
2108function createSystemSizingProps() {
2109  const onValue = (name, value, theme) => {
2110    if (name === "maxWidth") {
2111      value = theme.breakpoints.values[name] ?? value;
2112    }
2113    if (typeof value === "number") {
2114      value = value > 0 && value <= 1 ? `${value * 100}%` : `${value}px`;
2115    }
2116    return value;
2117  };
2118  return {
2119    width: prop("width", onValue),
2120    maxWidth: prop("maxWidth", onValue),
2121    minWidth: prop("minWidth", onValue),
2122    height: prop("height", onValue),
2123    maxHeight: prop("maxHeight", onValue),
2124    minHeight: prop("minHeight", onValue),
2125    boxSizing: prop("boxSizing", onValue)
2126  };
2127}
2128function createSystemBorderProps() {
2129  const borderValue = (name, value) => typeof value === "number" ? `${value}px solid` : value;
2130  const paletteValue = (name, value, theme) => getThemeValue_default(theme, "palette", value);
2131  return {
2132    border: prop("border", borderValue),
2133    borderTop: prop("borderTop", borderValue),
2134    borderRight: prop("borderRight", borderValue),
2135    borderBottom: prop("borderBottom", borderValue),
2136    borderLeft: prop("borderLeft", borderValue),
2137    borderColor: prop("borderColor", paletteValue),
2138    borderTopColor: prop("borderTopColor", paletteValue),
2139    borderRightColor: prop("borderRightColor", paletteValue),
2140    borderBottomColor: prop("borderBottomColor", paletteValue),
2141    borderLeftColor: prop("borderLeftColor", paletteValue),
2142    borderRadius: prop("borderRadius", (name, value, theme) => typeof value === "number" ? `${theme.shape.borderRadius * value}px` : value)
2143  };
2144}
2145function createSystemTypographyProps() {
2146  const typographyValue = (name, value, theme) => getThemeValue_default(theme, "typography", value);
2147  return {
2148    typography: customProp("typography", (name, value, theme) => getThemeValue_default(theme, "typography", value)),
2149    fontFamily: prop("fontFamily", typographyValue),
2150    fontSize: prop("fontSize", (name, value, theme) => asPx(typographyValue(name, value, theme))),
2151    fontStyle: prop("fontStyle", typographyValue),
2152    fontWeight: prop("fontWeight", typographyValue),
2153    letterSpacing: pxProp("letterSpacing"),
2154    lineHeight: prop("lineHeight"),
2155    textAlign: prop("textAlign"),
2156    textTransform: prop("textTransform")
2157  };
2158}
2159function createSystemSpacingProps() {
2160  const spacing = (name, value, theme) => theme.spacing(value);
2161  const m = "margin";
2162  const p = "padding";
2163  return {
2164    m: prop(m, spacing),
2165    mt: prop("marginTop", spacing),
2166    mr: prop("marginRight", spacing),
2167    mb: prop("marginBottom", spacing),
2168    ml: prop("marginLeft", spacing),
2169    mx: mProp(m, dirMap["x"], spacing),
2170    my: mProp(m, dirMap["y"], spacing),
2171    margin: prop(m, spacing),
2172    marginTop: prop("marginTop", spacing),
2173    marginRight: prop("marginRight", spacing),
2174    marginBottom: prop("marginBottom", spacing),
2175    marginLeft: prop("marginLeft", spacing),
2176    marginX: mProp(m, dirMap["x"], spacing),
2177    marginY: mProp(m, dirMap["y"], spacing),
2178    marginInline: mProp(m, ["Inline", "InlineStart"], spacing),
2179    marginInlineStart: prop("marginInlineStart", spacing),
2180    marginInlineEnd: prop("marginInlineEnd", spacing),
2181    marginBlock: mProp(m, ["BlockStart", "BlockEnd"], spacing),
2182    marginBlockStart: prop("marginBlockStart", spacing),
2183    marginBlockEnd: prop("marginBlockEnd", spacing),
2184    p: prop(p, spacing),
2185    pt: prop("paddingTop", spacing),
2186    pr: prop("paddingRight", spacing),
2187    pb: prop("paddingBottom", spacing),
2188    pl: prop("paddingLeft", spacing),
2189    px: mProp(p, dirMap["x"], spacing),
2190    py: mProp(p, dirMap["y"], spacing),
2191    padding: prop(p, spacing),
2192    paddingTop: prop("paddingTop", spacing),
2193    paddingRight: prop("paddingRight", spacing),
2194    paddingBottom: prop("paddingBottom", spacing),
2195    paddingLeft: prop("paddingLeft", spacing),
2196    paddingX: mProp(p, dirMap["x"], spacing),
2197    paddingY: mProp(p, dirMap["y"], spacing),
2198    paddingInline: mProp(p, ["Inline", "InlineStart"], spacing),
2199    paddingInlineStart: prop("paddingInlineStart", spacing),
2200    paddingInlineEnd: prop("paddingInlineEnd", spacing),
2201    paddingBlock: mProp(p, ["BlockStart", "BlockEnd"], spacing),
2202    paddingBlockStart: prop("paddingBlockStart", spacing),
2203    paddingBlockEnd: prop("paddingBlockEnd", spacing)
2204  };
2205}
2206var createSystemProps_default = createSystemProps;
2207
vendor: 179 bytes, lines 2208-2212
2208// node_modules/@suid/system/systemProps.js
2209var systemProps = createSystemProps_default();
2210var systemPropNames = Object.keys(systemProps);
2211var systemProps_default = systemProps;
2212
vendor: 1,007 bytes, lines 2213-2239
2213// node_modules/@suid/system/resolveSxProps.js
2214function resolveSystemPropsValue(name, value, theme) {
2215  return systemProps_default[name](value, theme);
2216}
2217function resolveSxPropsValue(name, value, theme) {
2218  return name in systemProps_default ? resolveSystemPropsValue(name, value, theme) : resolveStyledPropsValue(name, value);
2219}
2220function resolveSxProps(object, theme) {
2221  return resolve_default(object, (name, value) => {
2222    if (typeof value === "function") {
2223      value = value(theme);
2224    }
2225    if (value === null || value === void 0) {
2226      return value;
2227    } else if (typeof value === "object") {
2228      const sortedCss = {};
2229      for (const key of theme.breakpoints.keys) {
2230        sortedCss[theme.breakpoints.up(key)] = {};
2231      }
2232      return Object.assign(sortedCss, handleBreakpoints({ theme }, value, (v) => resolveSxPropsValue(name, v, theme) ?? { [name]: v }));
2233    } else {
2234      return resolveSxPropsValue(name, value, theme);
2235    }
2236  });
2237}
2238var resolveSxProps_default = resolveSxProps;
2239
vendor: 166 bytes, lines 2240-2244
2240// node_modules/@suid/system/node_modules/@suid/utils/randomString.js
2241function randomString2() {
2242  return Math.random().toString(36).substring(2, 15).slice(0, 8);
2243}
2244
vendor: 520 bytes, lines 2245-2258
2245// node_modules/clsx/dist/clsx.m.js
2246function r(e) {
2247  var t, f, n = "";
2248  if ("string" == typeof e || "number" == typeof e) n += e;
2249  else if ("object" == typeof e) if (Array.isArray(e)) for (t = 0; t < e.length; t++) e[t] && (f = r(e[t])) && (n && (n += " "), n += f);
2250  else for (t in e) e[t] && (n && (n += " "), n += t);
2251  return n;
2252}
2253function clsx() {
2254  for (var e, t, f = 0, n = ""; f < arguments.length; ) (e = arguments[f++]) && (t = r(e)) && (n && (n += " "), n += t);
2255  return n;
2256}
2257var clsx_m_default = clsx;
2258
vendor: 3,828 bytes, lines 2259-2367
2259// node_modules/@suid/system/createStyled.jsx
2260function redefine(component, ..._types) {
2261  return component;
2262}
2263var skipProps = ["ownerState", "theme", "sx", "as"];
2264function resolveStyles(useTheme4, className, styles, inProps) {
2265  return createMemo(() => {
2266    const theme = useTheme4();
2267    const ownerState = inProps.ownerState;
2268    return styles.reduce((result, style) => {
2269      let styledProps;
2270      if (typeof style === "function") {
2271        styledProps = style({
2272          ownerState,
2273          theme,
2274          get sx() {
2275            return inProps.sx;
2276          },
2277          get as() {
2278            return inProps.as;
2279          },
2280          props: inProps
2281        });
2282      } else if (style) {
2283        styledProps = style;
2284      }
2285      if (styledProps) result.push(resolveStyledProps_default(styledProps, {
2286        name: className,
2287        __resolved: true
2288      }));
2289      return result;
2290    }, []);
2291  });
2292}
2293function isStyledComponent(input) {
2294  return typeof input === "function" && "__styled" in input && !!input.__styled;
2295}
2296function createStyled(config) {
2297  return function styled(Component, options = {}) {
2298    let cssClassName;
2299    let className;
2300    if (options.name) {
2301      const slot = options.slot || "Root";
2302      className = cssClassName = `${options.name}-${slot.slice(0, 1).toLowerCase() + slot.slice(1)}`;
2303    } else {
2304      className = `styled-${randomString2()}`;
2305      cssClassName = "css";
2306    }
2307    const isComponentStyled = isStyledComponent(Component);
2308    return function(...styles) {
2309      function StyledComponent(inProps) {
2310        let theme;
2311        const $useTheme = () => {
2312          const inTheme = inProps.theme;
2313          if (inTheme) {
2314            return inTheme;
2315          } else if (theme) {
2316            return theme;
2317          } else {
2318            return theme = config && config.onUseTheme ? config.onUseTheme() : useTheme_default();
2319          }
2320        };
2321        const [, otherProps] = splitProps(inProps, options.skipProps || skipProps);
2322        const inStyles = resolveStyles($useTheme, cssClassName, styles, inProps);
2323        const inSx = () => {
2324          const sx2 = inProps.sx;
2325          return sx2 ? Array.isArray(sx2) ? sx2 : [sx2] : [];
2326        };
2327        const $component = () => {
2328          if (isComponentStyled) return Component;
2329          const as = inProps.as;
2330          return as ? as : Component;
2331        };
2332        const is$ComponentStyled = isComponentStyled ? () => true : createMemo(() => isStyledComponent($component()));
2333        const sx = options.skipSx ? () => inStyles() : () => {
2334          const theme2 = $useTheme();
2335          return [...inStyles(), ...inSx().map((sx2) => sx2.__resolved ? sx2 : resolveSxProps_default(sx2, theme2))];
2336        };
2337        const styleClassName = createStyle_default(() => is$ComponentStyled() ? void 0 : sx());
2338        return createDynamicComponent($component, mergeProps(otherProps, {
2339          get children() {
2340            return inProps.children;
2341          },
2342          // [review] This property must be omitted on each component individually.
2343          get component() {
2344            return is$ComponentStyled() ? inProps.component : null;
2345          },
2346          get as() {
2347            return isComponentStyled ? inProps.as : void 0;
2348          },
2349          get sx() {
2350            return is$ComponentStyled() ? sx() : void 0;
2351          },
2352          get ownerState() {
2353            return is$ComponentStyled() ? inProps.ownerState : void 0;
2354          },
2355          get class() {
2356            return clsx_m_default([.../* @__PURE__ */ new Set([inProps.class, className, styleClassName()])]);
2357          }
2358        }));
2359      }
2360      StyledComponent["__styled"] = true;
2361      if (className) StyledComponent.toString = () => `.${className}`;
2362      return StyledComponent;
2363    };
2364  };
2365}
2366var createStyled_default = createStyled;
2367
vendor: 185 bytes, lines 2368-2373
2368// node_modules/@suid/material/styles/styled.jsx
2369var skipRootProps = [...skipProps, "classes"];
2370var styled_default = createStyled_default({
2371  onUseTheme: () => useTheme_default2()
2372});
2373
vendor: 960 bytes, lines 2374-2407
2374// node_modules/@suid/base/generateUtilityClass.js
2375var defaultGenerator = (componentName) => componentName;
2376var createClassNameGenerator = () => {
2377  let generate = defaultGenerator;
2378  return {
2379    configure(generator) {
2380      generate = generator;
2381    },
2382    generate(componentName) {
2383      return generate(componentName);
2384    },
2385    reset() {
2386      generate = defaultGenerator;
2387    }
2388  };
2389};
2390var ClassNameGenerator = createClassNameGenerator();
2391var globalStateClassesMapping = {
2392  active: "Mui-active",
2393  checked: "Mui-checked",
2394  completed: "Mui-completed",
2395  disabled: "Mui-disabled",
2396  error: "Mui-error",
2397  expanded: "Mui-expanded",
2398  focused: "Mui-focused",
2399  focusVisible: "Mui-focusVisible",
2400  required: "Mui-required",
2401  selected: "Mui-selected"
2402};
2403function generateUtilityClass(componentName, slot) {
2404  const globalStateClass = globalStateClassesMapping[slot];
2405  return globalStateClass || `${ClassNameGenerator.generate(componentName)}-${slot}`;
2406}
2407
vendor: 246 bytes, lines 2408-2416
2408// node_modules/@suid/base/generateUtilityClasses.js
2409function generateUtilityClasses(componentName, slots) {
2410  const result = {};
2411  slots.forEach((slot) => {
2412    result[slot] = generateUtilityClass(componentName, slot);
2413  });
2414  return result;
2415}
2416
vendor: 646 bytes, lines 2417-2437
2417// node_modules/@suid/base/composeClasses.js
2418function composeClasses(slots, getUtilityClass, classes) {
2419  const output = {};
2420  Object.keys(slots).forEach(
2421    // `Objet.keys(slots)` can't be wider than `T` because we infer `T` from `slots`.
2422    // @ts-expect-error https://github.com/microsoft/TypeScript/pull/12253#issuecomment-263132208
2423    (slot) => {
2424      output[slot] = slots[slot].reduce((acc, key) => {
2425        if (key) {
2426          if (classes && classes[key]) {
2427            acc.push(classes[key]);
2428          }
2429          acc.push(getUtilityClass(key));
2430        }
2431        return acc;
2432      }, []).join(" ");
2433    }
2434  );
2435  return output;
2436}
2437
vendor: 262 bytes, lines 2438-2443
2438// node_modules/@suid/material/TableContainer/tableContainerClasses.js
2439function getTableContainerUtilityClass(slot) {
2440  return generateUtilityClass("MuiTableContainer", slot);
2441}
2442var tableContainerClasses = generateUtilityClasses("MuiTableContainer", ["root"]);
2443
vendor: 1,548 bytes, lines 2444-2500
2444// node_modules/@suid/system/inspect.js
2445var $INSPECT = Symbol("solid-inspect");
2446var inspectionEnabled = false;
2447function inspect(fn) {
2448  try {
2449    inspectionEnabled = true;
2450    const result = fn();
2451    return Array.isArray(result) ? result : [result];
2452  } finally {
2453    inspectionEnabled = false;
2454  }
2455}
2456function componentTrap(fn) {
2457  function Component(props) {
2458    if (inspectionEnabled)
2459      return {
2460        Component,
2461        props,
2462        $INSPECT
2463      };
2464    return fn(props);
2465  }
2466  Object.defineProperty(Component, "name", {
2467    value: fn.name
2468  });
2469  Component.toString = fn.toString;
2470  return Component;
2471}
2472function isComponentObject(input, component) {
2473  return !!input && input.$INSPECT === $INSPECT && (!component || input.Component === component);
2474}
2475function resolveChildren(children) {
2476  if (typeof children === "function" && !children.length)
2477    return resolveChildren(children());
2478  if (Array.isArray(children)) {
2479    const results = [];
2480    for (let i = 0; i < children.length; i++) {
2481      const result = resolveChildren(children[i]);
2482      Array.isArray(result) ? (
2483        // eslint-disable-next-line prefer-spread
2484        results.push.apply(results, result)
2485      ) : results.push(result);
2486    }
2487    return results;
2488  }
2489  return children;
2490}
2491function inspectChildren(fn) {
2492  const children = createMemo(() => inspect(fn));
2493  const memo = createMemo(() => inspect(() => resolveChildren(children())));
2494  memo.toArray = () => {
2495    const c = memo();
2496    return Array.isArray(c) ? c : c != null ? [c] : [];
2497  };
2498  return memo;
2499}
2500
vendor: 2,322 bytes, lines 2501-2573
2501// node_modules/@suid/base/createComponentFactory.js
2502function createComponentFactory() {
2503  return function(options) {
2504    function useClasses(ownerState) {
2505      const haveSlotClasses = !!options.slotClasses;
2506      const compose = () => {
2507        if (!options.slotClasses)
2508          throw new Error(`'slotClasses' option is not defined`);
2509        if (!options.utilityClass)
2510          throw new Error(`'utilityClass' option is not defined`);
2511        return composeClasses(options.slotClasses(ownerState), options.utilityClass, ownerState["classes"] ?? "");
2512      };
2513      const classes = createMutable({});
2514      if (haveSlotClasses)
2515        createComputed(() => {
2516          const result = compose();
2517          batch(() => {
2518            for (const slot in result)
2519              classes[slot] = result[slot];
2520          });
2521        });
2522      return classes;
2523    }
2524    function splitInProps(allProps) {
2525      const [props, otherProps] = splitProps(allProps, options.selfPropNames);
2526      return { allProps, props, otherProps };
2527    }
2528    function useThemeProps3(input) {
2529      return useThemeProps({
2530        propDefaults: input.propDefaults || options.propDefaults,
2531        props: input.props,
2532        name: options.name
2533      });
2534    }
2535    function useProps(props) {
2536      const themeProps = useThemeProps3({ props });
2537      return splitInProps(themeProps);
2538    }
2539    function defineComponent(cb, styled = true) {
2540      cb = componentTrap(cb);
2541      cb.toString = () => `.${options.name}-root`;
2542      if (styled)
2543        cb.__styled = true;
2544      return cb;
2545    }
2546    function component(cb) {
2547      const Component = defineComponent(function Component2(inProps) {
2548        const { allProps, otherProps, props } = useProps(inProps);
2549        const classes = options.autoCallUseClasses ?? true ? useClasses(allProps) : {};
2550        return cb({
2551          allProps,
2552          otherProps,
2553          props,
2554          classes
2555        });
2556      });
2557      Object.defineProperty(Component, "name", { value: cb.name });
2558      return Component;
2559    }
2560    return {
2561      name: options.name,
2562      selfPropNames: options.selfPropNames,
2563      component,
2564      defineComponent,
2565      useClasses,
2566      useThemeProps: useThemeProps3,
2567      useProps,
2568      splitInProps
2569    };
2570  };
2571}
2572var createComponentFactory_default = createComponentFactory;
2573
vendor: 947 bytes, lines 2574-2613
2574// node_modules/@suid/material/TableContainer/TableContainer.jsx
2575var $ = createComponentFactory_default()({
2576  name: "MuiTableContainer",
2577  propDefaults: ({
2578    set
2579  }) => set({
2580    component: "div"
2581  }),
2582  selfPropNames: ["children", "classes"],
2583  utilityClass: getTableContainerUtilityClass,
2584  slotClasses: () => ({
2585    root: ["root"]
2586  })
2587});
2588var TableContainerRoot = styled_default("div", {
2589  name: "MuiTableContainer",
2590  slot: "Root",
2591  overridesResolver: (props, styles) => styles.root
2592})({
2593  width: "100%",
2594  overflowX: "auto"
2595});
2596var TableContainer = $.component(function TableContainer2({
2597  classes,
2598  allProps,
2599  props,
2600  otherProps
2601}) {
2602  return createComponent(TableContainerRoot, mergeProps(otherProps, {
2603    get ["class"]() {
2604      return clsx_m_default(classes.root, otherProps.class);
2605    },
2606    ownerState: allProps,
2607    get children() {
2608      return props.children;
2609    }
2610  }));
2611});
2612var TableContainer_default = TableContainer;
2613
vendor: 131 bytes, lines 2614-2617
2614// node_modules/@suid/material/Table/TableContext.js
2615var TableContext = createContext();
2616var TableContext_default = TableContext;
2617
vendor: 230 bytes, lines 2618-2626
2618// node_modules/@suid/material/Table/tableClasses.js
2619function getTableUtilityClass(slot) {
2620  return generateUtilityClass("MuiTable", slot);
2621}
2622var tableClasses = generateUtilityClasses("MuiTable", [
2623  "root",
2624  "stickyHeader"
2625]);
2626
vendor: 1,901 bytes, lines 2627-2706
2627// node_modules/@suid/material/Table/Table.jsx
2628var $2 = createComponentFactory_default()({
2629  name: "MuiTable",
2630  propDefaults: ({
2631    set
2632  }) => set({
2633    component: defaultComponent,
2634    padding: "normal",
2635    size: "medium",
2636    stickyHeader: false
2637  }),
2638  selfPropNames: ["children", "classes", "padding", "size", "stickyHeader"],
2639  utilityClass: getTableUtilityClass,
2640  slotClasses: (ownerState) => ({
2641    root: ["root", ownerState.stickyHeader && "stickyHeader"]
2642  })
2643});
2644var TableRoot = styled_default("table", {
2645  name: "MuiTable",
2646  slot: "Root",
2647  overridesResolver: (props, styles) => {
2648    return [styles.root, props.ownerState.stickyHeader && styles.stickyHeader];
2649  }
2650})(({
2651  theme,
2652  ownerState
2653}) => ({
2654  display: "table",
2655  width: "100%",
2656  borderCollapse: "collapse",
2657  borderSpacing: 0,
2658  "& caption": {
2659    ...theme.typography.body2,
2660    padding: theme.spacing(2),
2661    color: theme.palette.text.secondary,
2662    textAlign: "left",
2663    captionSide: "bottom"
2664  },
2665  ...ownerState.stickyHeader && {
2666    borderCollapse: "separate"
2667  }
2668}));
2669var defaultComponent = "table";
2670var Table = $2.component(function Table2({
2671  allProps,
2672  classes,
2673  otherProps,
2674  props
2675}) {
2676  return createComponent(TableContext_default.Provider, {
2677    value: {
2678      get padding() {
2679        return props.padding;
2680      },
2681      get size() {
2682        return props.size;
2683      },
2684      get stickyHeader() {
2685        return props.stickyHeader;
2686      }
2687    },
2688    get children() {
2689      return createComponent(TableRoot, mergeProps({
2690        get role() {
2691          return allProps.component === defaultComponent ? null : "table";
2692        }
2693      }, otherProps, {
2694        get ["class"]() {
2695          return clsx_m_default(classes.root, otherProps.class);
2696        },
2697        ownerState: allProps,
2698        get children() {
2699          return props.children;
2700        }
2701      }));
2702    }
2703  });
2704});
2705var Table_default = Table;
2706
vendor: 147 bytes, lines 2707-2710
2707// node_modules/@suid/material/Table/Tablelvl2Context.js
2708var Tablelvl2Context = createContext();
2709var Tablelvl2Context_default = Tablelvl2Context;
2710
vendor: 232 bytes, lines 2711-2716
2711// node_modules/@suid/material/TableHead/tableHeadClasses.js
2712function getTableHeadUtilityClass(slot) {
2713  return generateUtilityClass("MuiTableHead", slot);
2714}
2715var tableHeadClasses = generateUtilityClasses("MuiTableHead", ["root"]);
2716
vendor: 1,251 bytes, lines 2717-2768
2717// node_modules/@suid/material/TableHead/TableHead.jsx
2718var $3 = createComponentFactory_default()({
2719  name: "MuiTableHead",
2720  propDefaults: ({
2721    set
2722  }) => set({
2723    component: defaultComponent2
2724  }),
2725  selfPropNames: ["children", "classes"],
2726  utilityClass: getTableHeadUtilityClass,
2727  slotClasses: () => ({
2728    root: ["root"]
2729  })
2730});
2731var TableHeadRoot = styled_default("thead", {
2732  name: "MuiTableHead",
2733  slot: "Root",
2734  overridesResolver: (props, styles) => styles.root
2735})({
2736  display: "table-header-group"
2737});
2738var tablelvl2 = {
2739  variant: "head"
2740};
2741var defaultComponent2 = "thead";
2742var TableHead = $3.component(function TableHead2({
2743  classes,
2744  allProps,
2745  otherProps,
2746  props
2747}) {
2748  return createComponent(Tablelvl2Context_default.Provider, {
2749    value: tablelvl2,
2750    get children() {
2751      return createComponent(TableHeadRoot, mergeProps({
2752        get role() {
2753          return otherProps.component === defaultComponent2 ? null : "rowgroup";
2754        }
2755      }, otherProps, {
2756        get ["class"]() {
2757          return clsx_m_default(classes.root, otherProps.class);
2758        },
2759        ownerState: allProps,
2760        get children() {
2761          return props.children;
2762        }
2763      }));
2764    }
2765  });
2766});
2767var TableHead_default = TableHead;
2768
vendor: 324 bytes, lines 2769-2781
2769// node_modules/@suid/material/TableRow/tableRowClasses.js
2770function getTableRowUtilityClass(slot) {
2771  return generateUtilityClass("MuiTableRow", slot);
2772}
2773var tableRowClasses = generateUtilityClasses("MuiTableRow", [
2774  "root",
2775  "selected",
2776  "hover",
2777  "head",
2778  "footer"
2779]);
2780var tableRowClasses_default = tableRowClasses;
2781
vendor: 2,121 bytes, lines 2782-2853
2782// node_modules/@suid/material/TableRow/TableRow.jsx
2783var $4 = createComponentFactory_default()({
2784  name: "MuiTableRow",
2785  propDefaults: ({
2786    set
2787  }) => set({
2788    component: defaultComponent3,
2789    hover: false,
2790    selected: false
2791  }),
2792  selfPropNames: ["children", "classes", "hover", "selected"],
2793  utilityClass: getTableRowUtilityClass,
2794  slotClasses: (ownerState) => ({
2795    root: ["root", ownerState.selected && "selected", ownerState.hover && "hover", ownerState.head && "head", ownerState.footer && "footer"]
2796  })
2797});
2798var TableRowRoot = styled_default("tr", {
2799  name: "MuiTableRow",
2800  slot: "Root",
2801  overridesResolver: (props, styles) => {
2802    return [styles.root, props.ownerState.head && styles.head, props.ownerState.footer && styles.footer];
2803  }
2804})(({
2805  theme
2806}) => ({
2807  color: "inherit",
2808  display: "table-row",
2809  verticalAlign: "middle",
2810  // We disable the focus ring for mouse, touch and keyboard users.
2811  outline: 0,
2812  [`&.${tableRowClasses_default.hover}:hover`]: {
2813    backgroundColor: theme.palette.action.hover
2814  },
2815  [`&.${tableRowClasses_default.selected}`]: {
2816    backgroundColor: alpha(theme.palette.primary.main, theme.palette.action.selectedOpacity),
2817    "&:hover": {
2818      backgroundColor: alpha(theme.palette.primary.main, theme.palette.action.selectedOpacity + theme.palette.action.hoverOpacity)
2819    }
2820  }
2821}));
2822var defaultComponent3 = "tr";
2823var TableRow = $4.component(function TableRow2({
2824  classes,
2825  allProps,
2826  otherProps,
2827  props
2828}) {
2829  const tablelvl22 = useContext(Tablelvl2Context_default);
2830  const ownerState = mergeProps(allProps, {
2831    get head() {
2832      return tablelvl22 && tablelvl22.variant === "head";
2833    },
2834    get footer() {
2835      return tablelvl22 && tablelvl22.variant === "footer";
2836    }
2837  });
2838  return createComponent(TableRowRoot, mergeProps({
2839    get role() {
2840      return otherProps.component === defaultComponent3 ? null : "row";
2841    }
2842  }, otherProps, {
2843    get ["class"]() {
2844      return clsx_m_default(classes.root, otherProps.class);
2845    },
2846    ownerState,
2847    get children() {
2848      return props.children;
2849    }
2850  }));
2851});
2852var TableRow_default = TableRow;
2853
vendor: 280 bytes, lines 2854-2861
2854// node_modules/@suid/material/node_modules/@suid/utils/capitalize.js
2855function capitalize3(string) {
2856  if (typeof string !== "string") {
2857    throw new Error("MUI: `capitalize(string)` expects a string argument.");
2858  }
2859  return string.charAt(0).toUpperCase() + string.slice(1);
2860}
2861
vendor: 90 bytes, lines 2862-2864
2862// node_modules/@suid/material/utils/capitalize.js
2863var capitalize_default = capitalize3;
2864
vendor: 470 bytes, lines 2865-2885
2865// node_modules/@suid/material/TableCell/tableCellClasses.js
2866function getTableCellUtilityClass(slot) {
2867  return generateUtilityClass("MuiTableCell", slot);
2868}
2869var tableCellClasses = generateUtilityClasses("MuiTableCell", [
2870  "root",
2871  "head",
2872  "body",
2873  "footer",
2874  "sizeSmall",
2875  "sizeMedium",
2876  "paddingCheckbox",
2877  "paddingNone",
2878  "alignLeft",
2879  "alignCenter",
2880  "alignRight",
2881  "alignJustify",
2882  "stickyHeader"
2883]);
2884var tableCellClasses_default = tableCellClasses;
2885
vendor: 4,652 bytes, lines 2886-3025
2886// node_modules/@suid/material/TableCell/TableCell.jsx
2887var $5 = createComponentFactory_default()({
2888  name: "MuiTableCell",
2889  propDefaults: ({
2890    set
2891  }) => set({
2892    align: "inherit"
2893  }),
2894  selfPropNames: ["align", "children", "classes", "component", "padding", "scope", "size", "sortDirection", "variant"],
2895  autoCallUseClasses: false,
2896  utilityClass: getTableCellUtilityClass,
2897  slotClasses: (ownerState) => ({
2898    root: ["root", ownerState.variant, ownerState.stickyHeader && "stickyHeader", ownerState.align !== "inherit" && `align${capitalize_default(ownerState.align)}`, ownerState.padding !== "normal" && `padding${capitalize_default(ownerState.padding)}`, `size${capitalize_default(ownerState.size)}`]
2899  })
2900});
2901var TableCellRoot = styled_default("td", {
2902  name: "MuiTableCell",
2903  slot: "Root",
2904  overridesResolver: (props, styles) => {
2905    return [styles.root, styles[props.ownerState.variant], styles[`size${capitalize_default(props.ownerState.size)}`], props.ownerState.padding !== "normal" && styles[`padding${capitalize_default(props.ownerState.padding)}`], props.ownerState.align !== "inherit" && styles[`align${capitalize_default(props.ownerState.align)}`], props.ownerState.stickyHeader && styles.stickyHeader];
2906  }
2907})(({
2908  theme,
2909  ownerState
2910}) => ({
2911  ...theme.typography.body2,
2912  display: "table-cell",
2913  verticalAlign: "inherit",
2914  // Workaround for a rendering bug with spanned columns in Chrome 62.0.
2915  // Removes the alpha (sets it to 1), and lightens or darkens the theme color.
2916  borderBottom: `1px solid
2917    ${theme.palette.mode === "light" ? lighten(alpha(theme.palette.divider, 1), 0.88) : darken(alpha(theme.palette.divider, 1), 0.68)}`,
2918  textAlign: "left",
2919  padding: 16,
2920  ...ownerState.variant === "head" && {
2921    color: theme.palette.text.primary,
2922    lineHeight: theme.typography.pxToRem(24),
2923    fontWeight: theme.typography.fontWeightMedium
2924  },
2925  ...ownerState.variant === "body" && {
2926    color: theme.palette.text.primary
2927  },
2928  ...ownerState.variant === "footer" && {
2929    color: theme.palette.text.secondary,
2930    lineHeight: theme.typography.pxToRem(21),
2931    fontSize: theme.typography.pxToRem(12)
2932  },
2933  ...ownerState.size === "small" && {
2934    padding: "6px 16px",
2935    [`&.${tableCellClasses_default.paddingCheckbox}`]: {
2936      width: 24,
2937      padding: "0 12px 0 16px",
2938      "& > *": {
2939        padding: 0
2940      }
2941    }
2942  },
2943  ...ownerState.padding === "checkbox" && {
2944    width: 48,
2945    padding: "0 0 0 4px"
2946  },
2947  ...ownerState.padding === "none" && {
2948    padding: 0
2949  },
2950  ...ownerState.align === "left" && {
2951    textAlign: "left"
2952  },
2953  ...ownerState.align === "center" && {
2954    textAlign: "center"
2955  },
2956  ...ownerState.align === "right" && {
2957    textAlign: "right",
2958    flexDirection: "row-reverse"
2959  },
2960  ...ownerState.align === "justify" && {
2961    textAlign: "justify"
2962  },
2963  ...ownerState.stickyHeader && {
2964    position: "sticky",
2965    top: 0,
2966    zIndex: 2,
2967    backgroundColor: theme.palette.background.default
2968  }
2969}));
2970var TableCell = $5.component(function TableCell2({
2971  otherProps,
2972  allProps,
2973  props
2974}) {
2975  const table = useContext(TableContext_default);
2976  const tablelvl22 = useContext(Tablelvl2Context_default);
2977  const isHeadCell = () => tablelvl22 && tablelvl22.variant === "head";
2978  const component = () => allProps.component || isHeadCell() ? "th" : "td";
2979  const scope = () => !props.scope && isHeadCell() ? "col" : props.scope;
2980  const variant = () => props.variant || tablelvl22 && tablelvl22.variant;
2981  const ariaSort = () => props.sortDirection ? props.sortDirection === "asc" ? "ascending" : "descending" : void 0;
2982  const ownerState = mergeProps(allProps, {
2983    get component() {
2984      return component();
2985    },
2986    get padding() {
2987      return props.padding || (table && table.padding ? table.padding : "normal");
2988    },
2989    get size() {
2990      return props.size || (table && table.size ? table.size : "medium");
2991    },
2992    get sortDirection() {
2993      return props.sortDirection;
2994    },
2995    get stickyHeader() {
2996      return variant() === "head" && table && table.stickyHeader;
2997    },
2998    get variant() {
2999      return variant();
3000    }
3001  });
3002  const classes = $5.useClasses(ownerState);
3003  const $TableCellRoot = redefine(TableCellRoot, "th");
3004  return createComponent($TableCellRoot, mergeProps({
3005    get as() {
3006      return props.component;
3007    },
3008    get scope() {
3009      return scope();
3010    },
3011    get ["aria-sort"]() {
3012      return ariaSort();
3013    }
3014  }, otherProps, {
3015    get ["class"]() {
3016      return clsx_m_default(classes.root, otherProps.class);
3017    },
3018    ownerState,
3019    get children() {
3020      return props.children;
3021    }
3022  }));
3023});
3024var TableCell_default = TableCell;
3025
vendor: 232 bytes, lines 3026-3031
3026// node_modules/@suid/material/TableBody/tableBodyClasses.js
3027function getTableBodyUtilityClass(slot) {
3028  return generateUtilityClass("MuiTableBody", slot);
3029}
3030var tableBodyClasses = generateUtilityClasses("MuiTableBody", ["root"]);
3031
vendor: 1,229 bytes, lines 3032-3082
3032// node_modules/@suid/material/TableBody/TableBody.jsx
3033var $6 = createComponentFactory_default()({
3034  name: "MuiTableBody",
3035  propDefaults: ({
3036    set
3037  }) => set({
3038    component: defaultComponent4
3039  }),
3040  selfPropNames: ["children", "classes"],
3041  utilityClass: getTableBodyUtilityClass,
3042  slotClasses: () => ({
3043    root: ["root"]
3044  })
3045});
3046var TableBodyRoot = styled_default("tbody", {
3047  name: "MuiTableBody",
3048  slot: "Root",
3049  overridesResolver: (props, styles) => styles.root
3050})({
3051  display: "table-row-group"
3052});
3053var defaultComponent4 = "tbody";
3054var TableBody = $6.component(function TableBody2({
3055  allProps,
3056  classes,
3057  props,
3058  otherProps
3059}) {
3060  return createComponent(Tablelvl2Context_default.Provider, {
3061    value: {
3062      variant: "body"
3063    },
3064    get children() {
3065      return createComponent(TableBodyRoot, mergeProps({
3066        get role() {
3067          return otherProps.component === defaultComponent4 ? null : "rowgroup";
3068        }
3069      }, otherProps, {
3070        get ["class"]() {
3071          return clsx_m_default(classes.root, otherProps.class);
3072        },
3073        ownerState: allProps,
3074        get children() {
3075          return props.children;
3076        }
3077      }));
3078    }
3079  });
3080});
3081var TableBody_default = TableBody;
3082
vendor: 669 bytes, lines 3083-3118
3083// node_modules/@suid/material/Paper/paperClasses.js
3084function getPaperUtilityClass(slot) {
3085  return generateUtilityClass("MuiPaper", slot);
3086}
3087var paperClasses = generateUtilityClasses("MuiPaper", [
3088  "root",
3089  "rounded",
3090  "outlined",
3091  "elevation",
3092  "elevation0",
3093  "elevation1",
3094  "elevation2",
3095  "elevation3",
3096  "elevation4",
3097  "elevation5",
3098  "elevation6",
3099  "elevation7",
3100  "elevation8",
3101  "elevation9",
3102  "elevation10",
3103  "elevation11",
3104  "elevation12",
3105  "elevation13",
3106  "elevation14",
3107  "elevation15",
3108  "elevation16",
3109  "elevation17",
3110  "elevation18",
3111  "elevation19",
3112  "elevation20",
3113  "elevation21",
3114  "elevation22",
3115  "elevation23",
3116  "elevation24"
3117]);
3118
vendor: 2,168 bytes, lines 3119-3191
3119// node_modules/@suid/material/Paper/Paper.jsx
3120var $7 = createComponentFactory_default()({
3121  name: "MuiPaper",
3122  selfPropNames: ["children", "classes", "elevation", "square", "variant"],
3123  propDefaults: ({
3124    set
3125  }) => set({
3126    component: "div",
3127    elevation: 1,
3128    square: false,
3129    variant: "elevation"
3130  }),
3131  utilityClass: getPaperUtilityClass,
3132  slotClasses: (o) => ({
3133    root: ["root", o.variant, !o.square && "rounded", o.variant === "elevation" && `elevation${o.elevation}`]
3134  })
3135});
3136var getOverlayAlpha = (elevation) => {
3137  let alphaValue;
3138  if (elevation < 1) {
3139    alphaValue = 5.11916 * elevation ** 2;
3140  } else {
3141    alphaValue = 4.5 * Math.log(elevation + 1) + 2;
3142  }
3143  return Number((alphaValue / 100).toFixed(2));
3144};
3145var PaperRoot = styled_default("div", {
3146  name: "MuiPaper",
3147  slot: "Root"
3148})(({
3149  theme,
3150  ownerState
3151}) => ({
3152  backgroundColor: theme.palette.background.paper,
3153  color: theme.palette.text.primary,
3154  transition: theme.transitions.create("box-shadow"),
3155  ...!ownerState.square && {
3156    borderRadius: theme.shape.borderRadius
3157  },
3158  ...ownerState.variant === "outlined" && {
3159    border: `1px solid ${theme.palette.divider}`
3160  },
3161  ...ownerState.variant === "elevation" && {
3162    boxShadow: theme.shadows[ownerState.elevation],
3163    ...theme.palette.mode === "dark" && {
3164      backgroundImage: `linear-gradient(${alpha("#fff", getOverlayAlpha(ownerState.elevation))}, ${alpha("#fff", getOverlayAlpha(ownerState.elevation))})`
3165    }
3166  }
3167}));
3168var Paper = $7.component(function Paper2({
3169  allProps,
3170  props,
3171  otherProps,
3172  classes
3173}) {
3174  if (true) {
3175    const theme = useTheme_default2();
3176    if (theme.shadows[props.elevation] === void 0) {
3177      console.error([`MUI: The elevation provided <Paper elevation={${props.elevation}}> is not available in the theme.`, `Please make sure that \`theme.shadows[${props.elevation}]\` is defined.`].join("\n"));
3178    }
3179  }
3180  return createComponent(PaperRoot, mergeProps(otherProps, {
3181    ownerState: allProps,
3182    get ["class"]() {
3183      return clsx_m_default(classes.root, allProps.class);
3184    },
3185    get children() {
3186      return props.children;
3187    }
3188  }));
3189});
3190var Paper_default = Paper;
3191
3192// src/wc/zometool/parts/ball.svg
3193var ball_default = "<?xml version='1.0'?>\n<svg version='1.1' xmlns='http://www.w3.org/2000/svg'\n   stroke='black' stroke-linejoin='round' stroke-width='0.5' fill='#f2f2f2' \n   viewBox='367 217 498 63' >\n<path d='M 429.4384460449219 241.020751953125 L 420.0563049316406 226.42242431640625 L 420.1898498535156 229.72821044921875 L 429.6340026855469 244.4136505126953  z'/>\n<path d='M 420.0563049316406 273.57757568359375 L 429.4384460449219 258.979248046875 L 429.6340026855469 255.5863494873047 L 420.1898498535156 270.27178955078125  z'/>\n<path d='M 379.77288818359375 231.83489990234375 L 379.98895263671875 226.4755859375 L 370.45379638671875 240.98785400390625  z'/>\n<path d='M 379.98895263671875 273.5244140625 L 379.77288818359375 268.1650695800781 L 370.45379638671875 259.0121154785156  z'/>\n<path d='M 389.3106384277344 226.1944580078125 L 389.4249572753906 220.889404296875 L 379.98895263671875 226.4755859375 L 379.77288818359375 231.83489990234375  z'/>\n<path d='M 389.4249572753906 279.110595703125 L 389.3106384277344 273.8055419921875 L 379.77288818359375 268.1650695800781 L 379.98895263671875 273.5244140625  z'/>\n<path d='M 420.0563049316406 273.57757568359375 L 420.1898498535156 270.27178955078125 L 410.6893615722656 273.8055419921875 L 404.7574157714844 279.28369140625 L 410.5750427246094 279.110595703125  z'/>\n<path d='M 410.6893615722656 226.1944580078125 L 420.1898498535156 229.72821044921875 L 420.0563049316406 226.42242431640625 L 410.5750427246094 220.889404296875 L 404.7574157714844 220.71630859375  z'/>\n<path d='M 389.3106384277344 226.1944580078125 L 404.7574157714844 220.71630859375 L 389.4249572753906 220.889404296875  z'/>\n<path d='M 404.7574157714844 279.28369140625 L 389.3106384277344 273.8055419921875 L 389.4249572753906 279.110595703125  z'/>\n<path d='M 379.6891174316406 240.87982177734375 L 379.77288818359375 231.83489990234375 L 370.45379638671875 240.98785400390625 L 370.3323669433594 250  z'/>\n<path d='M 379.6891174316406 259.1201477050781 L 370.3323669433594 250 L 370.45379638671875 259.0121154785156 L 379.77288818359375 268.1650695800781  z'/>\n<path d='M 420.1898498535156 229.72821044921875 L 420.3252868652344 244.35943603515625 L 429.6340026855469 244.4136505126953  z'/>\n<path d='M 420.1898498535156 270.27178955078125 L 429.6340026855469 255.5863494873047 L 420.3252868652344 255.64056396484375  z'/>\n<path d='M 429.6340026855469 244.4136505126953 L 420.3252868652344 244.35943603515625 L 420.3252868652344 255.64056396484375 L 429.6340026855469 255.5863494873047  z'/>\n<path d='M 389.3106384277344 226.1944580078125 L 395.19635009765625 231.725830078125 L 410.6893615722656 226.1944580078125 L 404.7574157714844 220.71630859375  z'/>\n<path d='M 404.7574157714844 279.28369140625 L 410.6893615722656 273.8055419921875 L 395.19635009765625 268.274169921875 L 389.3106384277344 273.8055419921875  z'/>\n<path d='M 379.6891174316406 240.87982177734375 L 370.3323669433594 250 L 379.6891174316406 259.1201477050781  z'/>\n<path d='M 410.6893615722656 226.1944580078125 L 410.7612609863281 240.845947265625 L 420.3252868652344 244.35943603515625 L 420.1898498535156 229.72821044921875  z'/>\n<path d='M 410.6893615722656 273.8055419921875 L 420.1898498535156 270.27178955078125 L 420.3252868652344 255.64056396484375 L 410.7612609863281 259.154052734375  z'/>\n<path d='M 389.3106384277344 226.1944580078125 L 379.77288818359375 231.83489990234375 L 379.6891174316406 240.87982177734375 L 389.23876953125 240.845947265625 L 395.19635009765625 231.725830078125  z'/>\n<path d='M 395.19635009765625 268.274169921875 L 389.23876953125 259.154052734375 L 379.6891174316406 259.1201477050781 L 379.77288818359375 268.1650695800781 L 389.3106384277344 273.8055419921875  z'/>\n<path d='M 410.6893615722656 273.8055419921875 L 410.7612609863281 259.154052734375 L 395.19635009765625 268.274169921875  z'/>\n<path d='M 395.19635009765625 231.725830078125 L 410.7612609863281 240.845947265625 L 410.6893615722656 226.1944580078125  z'/>\n<path d='M 389.23876953125 240.845947265625 L 379.6891174316406 240.87982177734375 L 379.6891174316406 259.1201477050781 L 389.23876953125 259.154052734375  z'/>\n<path d='M 404.821533203125 250 L 410.7612609863281 259.154052734375 L 420.3252868652344 255.64056396484375 L 420.3252868652344 244.35943603515625 L 410.7612609863281 240.845947265625  z'/>\n<path d='M 395.19635009765625 231.725830078125 L 389.23876953125 240.845947265625 L 404.821533203125 250 L 410.7612609863281 240.845947265625  z'/>\n<path d='M 395.19635009765625 268.274169921875 L 410.7612609863281 259.154052734375 L 404.821533203125 250 L 389.23876953125 259.154052734375  z'/>\n<path d='M 389.23876953125 240.845947265625 L 389.23876953125 259.154052734375 L 404.821533203125 250  z'/>\n\n</svg>\n";
3194
3195// src/wc/zometool/parts/b0.svg
3196var b0_default = "<?xml version='1.0'?>\n<svg version='1.1' xmlns='http://www.w3.org/2000/svg'\n   stroke='black' stroke-linejoin='round' stroke-width='0.5' fill='#008ec2' \n   viewBox='415 217 498 63' >\n<path d='M 429.009765625 258.9645080566406 L 429.0482177734375 255.54771423339844 L 429.0482177734375 244.45228576660156 L 429.009765625 241.03549194335938  z'/>\n<path d='M 417.9527893066406 255.54771423339844 L 417.9913635253906 250 L 417.9527893066406 244.45228576660156  z'/>\n<path d='M 417.9527893066406 255.54771423339844 L 418.0300598144531 255.57159423828125 L 417.9913635253906 250  z'/>\n<path d='M 417.9527893066406 244.45228576660156 L 417.9913635253906 250 L 418.0300598144531 244.42840576171875  z'/>\n<path d='M 429.21209716796875 259.02703857421875 L 429.1732177734375 255.57159423828125 L 429.0482177734375 255.54771423339844 L 429.009765625 258.9645080566406  z'/>\n<path d='M 429.0482177734375 244.45228576660156 L 429.1732177734375 244.42840576171875 L 429.21209716796875 240.97296142578125 L 429.009765625 241.03549194335938  z'/>\n<path d='M 417.9913635253906 250 L 418.0300598144531 255.57159423828125 L 418.0300598144531 244.42840576171875  z'/>\n<path d='M 523.5797729492188 255.57159423828125 L 534.7230224609375 255.57159423828125 L 534.7230224609375 244.42840576171875 L 523.5797729492188 244.42840576171875  z'/>\n<path d='M 418.0300598144531 255.57159423828125 L 429.1732177734375 255.57159423828125 L 429.1732177734375 244.42840576171875 L 418.0300598144531 244.42840576171875  z'/>\n<path d='M 429.21209716796875 259.02703857421875 L 429.21209716796875 240.97296142578125 L 429.1732177734375 244.42840576171875 L 429.1732177734375 255.57159423828125  z'/>\n<path d='M 523.744384765625 259.02703857421875 L 523.744384765625 240.97296142578125 L 429.21209716796875 240.97296142578125 L 429.21209716796875 259.02703857421875  z'/>\n\n</svg>\n";
3197
3198// src/wc/zometool/parts/b1.svg
3199var b1_default = "<?xml version='1.0'?>\n<svg version='1.1' xmlns='http://www.w3.org/2000/svg'\n   stroke='black' stroke-linejoin='round' stroke-width='0.5' fill='#008ec2' \n   viewBox='415 217 498 63' >\n<path d='M 429.009765625 258.9645080566406 L 429.0482177734375 255.54771423339844 L 429.0482177734375 244.45228576660156 L 429.009765625 241.03549194335938  z'/>\n<path d='M 417.9527893066406 255.54771423339844 L 417.9913635253906 250 L 417.9527893066406 244.45228576660156  z'/>\n<path d='M 417.9527893066406 255.54771423339844 L 418.0300598144531 255.57159423828125 L 417.9913635253906 250  z'/>\n<path d='M 417.9527893066406 244.45228576660156 L 417.9913635253906 250 L 418.0300598144531 244.42840576171875  z'/>\n<path d='M 429.21209716796875 259.02703857421875 L 429.1732177734375 255.57159423828125 L 429.0482177734375 255.54771423339844 L 429.009765625 258.9645080566406  z'/>\n<path d='M 429.0482177734375 244.45228576660156 L 429.1732177734375 244.42840576171875 L 429.21209716796875 240.97296142578125 L 429.009765625 241.03549194335938  z'/>\n<path d='M 417.9913635253906 250 L 418.0300598144531 255.57159423828125 L 418.0300598144531 244.42840576171875  z'/>\n<path d='M 617.9863891601562 255.57159423828125 L 629.1295776367188 255.57159423828125 L 629.1295776367188 244.42840576171875 L 617.9863891601562 244.42840576171875  z'/>\n<path d='M 418.0300598144531 255.57159423828125 L 429.1732177734375 255.57159423828125 L 429.1732177734375 244.42840576171875 L 418.0300598144531 244.42840576171875  z'/>\n<path d='M 429.21209716796875 259.02703857421875 L 429.21209716796875 240.97296142578125 L 429.1732177734375 244.42840576171875 L 429.1732177734375 255.57159423828125  z'/>\n<path d='M 618.2766723632812 259.02703857421875 L 618.2766723632812 240.97296142578125 L 429.21209716796875 240.97296142578125 L 429.21209716796875 259.02703857421875  z'/>\n\n</svg>\n";
3200
3201// src/wc/zometool/parts/b2.svg
3202var b2_default = "<?xml version='1.0'?>\n<svg version='1.1' xmlns='http://www.w3.org/2000/svg'\n   stroke='black' stroke-linejoin='round' stroke-width='0.5' fill='#008ec2' \n   viewBox='415 217 498 63' >\n<path d='M 429.009765625 258.9645080566406 L 429.0482177734375 255.54771423339844 L 429.0482177734375 244.45228576660156 L 429.009765625 241.03549194335938  z'/>\n<path d='M 417.9527893066406 255.54771423339844 L 417.9913635253906 250 L 417.9527893066406 244.45228576660156  z'/>\n<path d='M 417.9527893066406 255.54771423339844 L 418.0300598144531 255.57159423828125 L 417.9913635253906 250  z'/>\n<path d='M 417.9527893066406 244.45228576660156 L 417.9913635253906 250 L 418.0300598144531 244.42840576171875  z'/>\n<path d='M 429.21209716796875 259.02703857421875 L 429.1732177734375 255.57159423828125 L 429.0482177734375 255.54771423339844 L 429.009765625 258.9645080566406  z'/>\n<path d='M 429.0482177734375 244.45228576660156 L 429.1732177734375 244.42840576171875 L 429.21209716796875 240.97296142578125 L 429.009765625 241.03549194335938  z'/>\n<path d='M 417.9913635253906 250 L 418.0300598144531 255.57159423828125 L 418.0300598144531 244.42840576171875  z'/>\n<path d='M 770.7394409179688 255.57159423828125 L 781.882568359375 255.57159423828125 L 781.882568359375 244.42840576171875 L 770.7394409179688 244.42840576171875  z'/>\n<path d='M 418.0300598144531 255.57159423828125 L 429.1732177734375 255.57159423828125 L 429.1732177734375 244.42840576171875 L 418.0300598144531 244.42840576171875  z'/>\n<path d='M 429.21209716796875 259.02703857421875 L 429.21209716796875 240.97296142578125 L 429.1732177734375 244.42840576171875 L 429.1732177734375 255.57159423828125  z'/>\n<path d='M 771.233154296875 259.02703857421875 L 771.233154296875 240.97296142578125 L 429.21209716796875 240.97296142578125 L 429.21209716796875 259.02703857421875  z'/>\n\n</svg>\n";
3203
3204// src/wc/zometool/parts/y0.svg
3205var y0_default = "<?xml version='1.0'?>\n<svg version='1.1' xmlns='http://www.w3.org/2000/svg'\n   stroke='black' stroke-linejoin='round' stroke-width='0.5' fill='#ffb31a'\n   viewBox='415 217 498 63' >\n<path d='M 429.11968994140625 255.54849243164062 L 429.11968994140625 244.45150756835938 L 429.08367919921875 241.033447265625 L 429.08367919921875 258.966552734375  z'/>\n<path d='M 417.9969177246094 255.54849243164062 L 418.105712890625 250 L 417.9969177246094 244.45150756835938  z'/>\n<path d='M 429.2956237792969 250 L 429.11968994140625 244.45150756835938 L 417.9969177246094 244.45150756835938 L 418.105712890625 250  z'/>\n<path d='M 429.11968994140625 255.54849243164062 L 429.2956237792969 250 L 418.105712890625 250 L 417.9969177246094 255.54849243164062  z'/>\n<path d='M 429.11968994140625 255.54849243164062 L 429.08367919921875 258.966552734375 L 429.3687744140625 250 L 429.2956237792969 250  z'/>\n<path d='M 429.3687744140625 250 L 429.08367919921875 241.033447265625 L 429.11968994140625 244.45150756835938 L 429.2956237792969 250  z'/>\n<path d='M 429.08367919921875 258.966552734375 L 438.68206787109375 258.966552734375 L 439.0612487792969 250 L 429.3687744140625 250  z'/>\n<path d='M 429.3687744140625 250 L 439.0612487792969 250 L 438.68206787109375 241.033447265625 L 429.08367919921875 241.033447265625  z'/>\n<path d='M 503.0325012207031 244.42919921875 L 503.0325012207031 255.57080078125 L 514.199951171875 255.57080078125 L 514.199951171875 244.42919921875  z'/>\n<path d='M 438.68206787109375 241.033447265625 L 439.0612487792969 250 L 493.499755859375 240.97503662109375  z'/>\n<path d='M 493.499755859375 259.02496337890625 L 439.0612487792969 250 L 438.68206787109375 258.966552734375  z'/>\n<path d='M 493.499755859375 259.02496337890625 L 503.1606750488281 259.02496337890625 L 503.1606750488281 240.97503662109375 L 493.499755859375 240.97503662109375  z'/>\n<path d='M 493.499755859375 259.02496337890625 L 493.499755859375 240.97503662109375 L 439.0612487792969 250  z'/>\n\n</svg>\n";
3206
3207// src/wc/zometool/parts/y1.svg
3208var y1_default = "<?xml version='1.0'?>\n<svg version='1.1' xmlns='http://www.w3.org/2000/svg'\n   stroke='black' stroke-linejoin='round' stroke-width='0.5' fill='#ffb31a'\n   viewBox='415 217 498 63' >\n<path d='M 429.11968994140625 255.54849243164062 L 429.11968994140625 244.45150756835938 L 429.08367919921875 241.033447265625 L 429.08367919921875 258.966552734375  z'/>\n<path d='M 417.9969177246094 255.54849243164062 L 418.105712890625 250 L 417.9969177246094 244.45150756835938  z'/>\n<path d='M 429.2956237792969 250 L 429.11968994140625 244.45150756835938 L 417.9969177246094 244.45150756835938 L 418.105712890625 250  z'/>\n<path d='M 429.11968994140625 255.54849243164062 L 429.2956237792969 250 L 418.105712890625 250 L 417.9969177246094 255.54849243164062  z'/>\n<path d='M 429.11968994140625 255.54849243164062 L 429.08367919921875 258.966552734375 L 429.3687744140625 250 L 429.2956237792969 250  z'/>\n<path d='M 429.3687744140625 250 L 429.08367919921875 241.033447265625 L 429.11968994140625 244.45150756835938 L 429.2956237792969 250  z'/>\n<path d='M 429.08367919921875 258.966552734375 L 479.341552734375 258.966552734375 L 480.1192321777344 250 L 429.3687744140625 250  z'/>\n<path d='M 429.3687744140625 250 L 480.1192321777344 250 L 479.341552734375 241.033447265625 L 429.08367919921875 241.033447265625  z'/>\n<path d='M 584.7794799804688 244.42919921875 L 584.7794799804688 255.57080078125 L 595.9468994140625 255.57080078125 L 595.9468994140625 244.42919921875  z'/>\n<path d='M 479.341552734375 241.033447265625 L 480.1192321777344 250 L 534.424072265625 240.97503662109375  z'/>\n<path d='M 534.424072265625 259.02496337890625 L 480.1192321777344 250 L 479.341552734375 258.966552734375  z'/>\n<path d='M 534.424072265625 259.02496337890625 L 585.00927734375 259.02496337890625 L 585.00927734375 240.97503662109375 L 534.424072265625 240.97503662109375  z'/>\n<path d='M 534.424072265625 259.02496337890625 L 534.424072265625 240.97503662109375 L 480.1192321777344 250  z'/>\n\n</svg>\n";
3209
3210// src/wc/zometool/parts/y2.svg
3211var y2_default = "<?xml version='1.0'?>\n<svg version='1.1' xmlns='http://www.w3.org/2000/svg'\n   stroke='black' stroke-linejoin='round' stroke-width='0.5' fill='#ffb31a'\n   viewBox='415 217 498 63' >\n<path d='M 429.11968994140625 255.54849243164062 L 429.11968994140625 244.45150756835938 L 429.08367919921875 241.033447265625 L 429.08367919921875 258.966552734375  z'/>\n<path d='M 417.9969177246094 255.54849243164062 L 418.105712890625 250 L 417.9969177246094 244.45150756835938  z'/>\n<path d='M 429.2956237792969 250 L 429.11968994140625 244.45150756835938 L 417.9969177246094 244.45150756835938 L 418.105712890625 250  z'/>\n<path d='M 429.11968994140625 255.54849243164062 L 429.2956237792969 250 L 418.105712890625 250 L 417.9969177246094 255.54849243164062  z'/>\n<path d='M 429.11968994140625 255.54849243164062 L 429.08367919921875 258.966552734375 L 429.3687744140625 250 L 429.2956237792969 250  z'/>\n<path d='M 429.3687744140625 250 L 429.08367919921875 241.033447265625 L 429.11968994140625 244.45150756835938 L 429.2956237792969 250  z'/>\n<path d='M 429.08367919921875 258.966552734375 L 545.1299438476562 258.966552734375 L 546.552490234375 250 L 429.3687744140625 250  z'/>\n<path d='M 429.3687744140625 250 L 546.552490234375 250 L 545.1299438476562 241.033447265625 L 429.08367919921875 241.033447265625  z'/>\n<path d='M 717.0487060546875 244.42919921875 L 717.0487060546875 255.57080078125 L 728.2161254882812 255.57080078125 L 728.2161254882812 244.42919921875  z'/>\n<path d='M 545.1299438476562 241.033447265625 L 546.552490234375 250 L 600.6409912109375 240.97503662109375  z'/>\n<path d='M 600.6409912109375 259.02496337890625 L 546.552490234375 250 L 545.1299438476562 258.966552734375  z'/>\n<path d='M 600.6409912109375 259.02496337890625 L 717.443115234375 259.02496337890625 L 717.443115234375 240.97503662109375 L 600.6409912109375 240.97503662109375  z'/>\n<path d='M 600.6409912109375 259.02496337890625 L 600.6409912109375 240.97503662109375 L 546.552490234375 250  z'/>\n\n</svg>\n";
3212
3213// src/wc/zometool/parts/r00.svg
3214var r00_default = `<?xml version="1.0" encoding="UTF-8" standalone="no"?>
3215<svg
3216   version="1.1"
3217   stroke="black"
3218   stroke-linejoin="round"
3219   stroke-width="0.5" fill='#d91218'
3220   viewBox='415 217 498 63'
3221   xmlns="http://www.w3.org/2000/svg"
3222   xmlns:svg="http://www.w3.org/2000/svg">
3223  <path
3224     d="M 459.8148193359375 244.4668426513672 L 459.8148193359375 255.5331573486328 L 470.33953857421875 255.5331573486328 L 470.33953857421875 244.4668426513672  z"
3225     id="path210" />
3226  <path
3227     d="M 429.3848876953125 250 L 429.458984375 244.44664001464844 L 429.4384460449219 241.020751953125 L 429.31890869140625 250  z"
3228     id="path216" />
3229  <path
3230     d="M 429.3848876953125 250 L 429.31890869140625 250 L 429.4384460449219 258.979248046875 L 429.458984375 255.55335998535156  z"
3231     id="path218" />
3232  <path
3233     d="M 418.1608581542969 250 L 418.2066345214844 255.55335998535156 L 418.2812805175781 253.44622802734375 L 418.2812805175781 246.55377197265625 L 418.2066345214844 244.44664001464844  z"
3234     id="path224" />
3235  <path
3236     d="M 429.458984375 255.55335998535156 L 429.5796813964844 253.44622802734375 L 418.2812805175781 253.44622802734375 L 418.2066345214844 255.55335998535156  z"
3237     id="path226" />
3238  <path
3239     d="M 418.2066345214844 244.44664001464844 L 418.2812805175781 246.55377197265625 L 429.5796813964844 246.55377197265625 L 429.458984375 244.44664001464844  z"
3240     id="path228" />
3241  <path
3242     d="M 429.6340026855469 244.4136505126953 L 429.4384460449219 241.020751953125 L 429.458984375 244.44664001464844 L 429.5796813964844 246.55377197265625  z"
3243     id="path230" />
3244  <path
3245     d="M 429.458984375 255.55335998535156 L 429.4384460449219 258.979248046875 L 429.6340026855469 255.5863494873047 L 429.5796813964844 253.44622802734375  z"
3246     id="path232" />
3247  <path
3248     d="m 459.62398,240.93179 -30.24165,0.034 0.073,3.50396 z"
3249     id="path234"
3250     style="stroke-width:0.387783" />
3251  <path
3252     d="m 429.52937,255.55614 -0.0733,3.45274 30.34107,0.0335 z"
3253     id="path236"
3254     style="stroke-width:0.385571" />
3255  <path
3256     d="M 471.44659423828125 244.43408203125 L 460.1688232421875 244.43408203125 L 460.3213195800781 250 L 471.6276550292969 250  z"
3257     id="path238" />
3258  <path
3259     d="M 460.3213195800781 250 L 460.1688232421875 255.56591796875 L 471.44659423828125 255.56591796875 L 471.6276550292969 250  z"
3260     id="path240" />
3261  <path
3262     d="M 429.5796813964844 253.44622802734375 L 429.5796813964844 246.55377197265625 L 418.2812805175781 246.55377197265625 L 418.2812805175781 253.44622802734375  z"
3263     id="path242" />
3264  <path
3265     d="M 429.5796813964844 253.44622802734375 L 429.6340026855469 255.5863494873047 L 429.6340026855469 244.4136505126953 L 429.5796813964844 246.55377197265625  z"
3266     id="path244" />
3267  <path
3268     d="m 459.87199,249.94251 -30.49119,5.65762 30.32084,3.46948 z"
3269     id="path246"
3270     style="stroke-width:0.384982" />
3271  <path
3272     d="m 459.70161,240.93037 -30.32081,3.46949 30.49115,5.65763 z"
3273     id="path248"
3274     style="stroke-width:0.384982" />
3275  <path
3276     d="M 459.81482,250 429.634,244.41365 v 11.1727 z"
3277     id="path250"
3278     style="stroke-width:0.380598" />
3279</svg>
3280`;
3281
3282// src/wc/zometool/parts/r0.svg
3283var r0_default = "<?xml version='1.0'?>\n<svg version='1.1' xmlns='http://www.w3.org/2000/svg'\n   stroke='black' stroke-linejoin='round' stroke-width='0.5' fill='#d91218' \n   viewBox='415 217 498 63' >\n<path d='M 429.3848876953125 250 L 429.458984375 244.44664001464844 L 429.4384460449219 241.020751953125 L 429.31890869140625 250  z'/>\n<path d='M 429.3848876953125 250 L 429.31890869140625 250 L 429.4384460449219 258.979248046875 L 429.458984375 255.55335998535156  z'/>\n<path d='M 418.1608581542969 250 L 418.2066345214844 255.55335998535156 L 418.2812805175781 253.44622802734375 L 418.2812805175781 246.55377197265625 L 418.2066345214844 244.44664001464844  z'/>\n<path d='M 429.458984375 255.55335998535156 L 429.5796813964844 253.44622802734375 L 418.2812805175781 253.44622802734375 L 418.2066345214844 255.55335998535156  z'/>\n<path d='M 418.2066345214844 244.44664001464844 L 418.2812805175781 246.55377197265625 L 429.5796813964844 246.55377197265625 L 429.458984375 244.44664001464844  z'/>\n<path d='M 429.6340026855469 244.4136505126953 L 429.4384460449219 241.020751953125 L 429.458984375 244.44664001464844 L 429.5796813964844 246.55377197265625  z'/>\n<path d='M 429.458984375 255.55335998535156 L 429.4384460449219 258.979248046875 L 429.6340026855469 255.5863494873047 L 429.5796813964844 253.44622802734375  z'/>\n<path d='M 446.5180358886719 241.020751953125 L 429.4384460449219 241.020751953125 L 429.6340026855469 244.4136505126953 L 446.8269958496094 244.4136505126953  z'/>\n<path d='M 429.6340026855469 255.5863494873047 L 429.4384460449219 258.979248046875 L 446.5180358886719 258.979248046875 L 446.8269958496094 255.5863494873047  z'/>\n<path d='M 498.5417785644531 240.98785400390625 L 446.5180358886719 241.020751953125 L 446.8269958496094 244.4136505126953  z'/>\n<path d='M 446.8269958496094 255.5863494873047 L 446.5180358886719 258.979248046875 L 498.5417785644531 259.0121154785156  z'/>\n<path d='M 526.880859375 244.43408203125 L 515.6030883789062 244.43408203125 L 515.89599609375 250 L 527.2023315429688 250  z'/>\n<path d='M 515.89599609375 250 L 515.6030883789062 255.56591796875 L 526.880859375 255.56591796875 L 527.2023315429688 250  z'/>\n<path d='M 429.5796813964844 253.44622802734375 L 429.5796813964844 246.55377197265625 L 418.2812805175781 246.55377197265625 L 418.2812805175781 253.44622802734375  z'/>\n<path d='M 429.5796813964844 253.44622802734375 L 429.6340026855469 255.5863494873047 L 429.6340026855469 244.4136505126953 L 429.5796813964844 246.55377197265625  z'/>\n<path d='M 498.5417785644531 240.98785400390625 L 498.94671630859375 250 L 516.1592407226562 250 L 515.6838989257812 240.98785400390625  z'/>\n<path d='M 498.94671630859375 250 L 498.5417785644531 259.0121154785156 L 515.6838989257812 259.0121154785156 L 516.1592407226562 250  z'/>\n<path d='M 498.94671630859375 250 L 446.8269958496094 255.5863494873047 L 498.5417785644531 259.0121154785156  z'/>\n<path d='M 498.5417785644531 240.98785400390625 L 446.8269958496094 244.4136505126953 L 498.94671630859375 250  z'/>\n<path d='M 429.6340026855469 244.4136505126953 L 429.6340026855469 255.5863494873047 L 446.8269958496094 255.5863494873047 L 446.8269958496094 244.4136505126953  z'/>\n<path d='M 498.94671630859375 250 L 446.8269958496094 244.4136505126953 L 446.8269958496094 255.5863494873047  z'/>\n\n</svg>\n";
3284
3285// src/wc/zometool/parts/r1.svg
3286var r1_default = `<?xml version='1.0'?>
3287<svg version='1.1' xmlns='http://www.w3.org/2000/svg'
3288   stroke='black' stroke-linejoin='round' stroke-width='0.5' fill="#d91218" 
3289   viewBox='415 217 498 63' >
3290<path d='M 429.3848876953125 250 L 429.458984375 244.44664001464844 L 429.4384460449219 241.020751953125 L 429.31890869140625 250  z'/>
3291<path d='M 429.3848876953125 250 L 429.31890869140625 250 L 429.4384460449219 258.979248046875 L 429.458984375 255.55335998535156  z'/>
3292<path d='M 418.1608581542969 250 L 418.2066345214844 255.55335998535156 L 418.2812805175781 253.44622802734375 L 418.2812805175781 246.55377197265625 L 418.2066345214844 244.44664001464844  z'/>
3293<path d='M 429.458984375 255.55335998535156 L 429.5796813964844 253.44622802734375 L 418.2812805175781 253.44622802734375 L 418.2066345214844 255.55335998535156  z'/>
3294<path d='M 418.2066345214844 244.44664001464844 L 418.2812805175781 246.55377197265625 L 429.5796813964844 246.55377197265625 L 429.458984375 244.44664001464844  z'/>
3295<path d='M 429.6340026855469 244.4136505126953 L 429.4384460449219 241.020751953125 L 429.458984375 244.44664001464844 L 429.5796813964844 246.55377197265625  z'/>
3296<path d='M 429.458984375 255.55335998535156 L 429.4384460449219 258.979248046875 L 429.6340026855469 255.5863494873047 L 429.5796813964844 253.44622802734375  z'/>
3297<path d='M 491.23291015625 241.020751953125 L 429.4384460449219 241.020751953125 L 429.6340026855469 244.4136505126953 L 491.8388366699219 244.4136505126953  z'/>
3298<path d='M 429.6340026855469 255.5863494873047 L 429.4384460449219 258.979248046875 L 491.23291015625 258.979248046875 L 491.8388366699219 255.5863494873047  z'/>
3299<path d='M 543.4203491210938 240.98785400390625 L 491.23291015625 241.020751953125 L 491.8388366699219 244.4136505126953  z'/>
3300<path d='M 491.8388366699219 255.5863494873047 L 491.23291015625 258.979248046875 L 543.4203491210938 259.0121154785156  z'/>
3301<path d='M 616.5752563476562 244.43408203125 L 605.2974853515625 244.43408203125 L 605.8176879882812 250 L 617.1240844726562 250  z'/>
3302<path d='M 605.8176879882812 250 L 605.2974853515625 255.56591796875 L 616.5752563476562 255.56591796875 L 617.1240844726562 250  z'/>
3303<path d='M 429.5796813964844 253.44622802734375 L 429.5796813964844 246.55377197265625 L 418.2812805175781 246.55377197265625 L 418.2812805175781 253.44622802734375  z'/>
3304<path d='M 429.5796813964844 253.44622802734375 L 429.6340026855469 255.5863494873047 L 429.6340026855469 244.4136505126953 L 429.5796813964844 246.55377197265625  z'/>
3305<path d='M 543.4203491210938 240.98785400390625 L 544.0097045898438 250 L 606.2852172851562 250 L 605.4409790039062 240.98785400390625  z'/>
3306<path d='M 544.0097045898438 250 L 543.4203491210938 259.0121154785156 L 605.4409790039062 259.0121154785156 L 606.2852172851562 250  z'/>
3307<path d='M 544.0097045898438 250 L 491.8388366699219 255.5863494873047 L 543.4203491210938 259.0121154785156  z'/>
3308<path d='M 543.4203491210938 240.98785400390625 L 491.8388366699219 244.4136505126953 L 544.0097045898438 250  z'/>
3309<path d='M 429.6340026855469 244.4136505126953 L 429.6340026855469 255.5863494873047 L 491.8388366699219 255.5863494873047 L 491.8388366699219 244.4136505126953  z'/>
3310<path d='M 544.0097045898438 250 L 491.8388366699219 244.4136505126953 L 491.8388366699219 255.5863494873047  z'/>
3311
3312</svg>
3313`;
3314
3315// src/wc/zometool/parts/r2.svg
3316var r2_default = "<?xml version='1.0'?>\n<svg version='1.1' xmlns='http://www.w3.org/2000/svg'\n   stroke='black' stroke-linejoin='round' stroke-width='0.5' fill='#d91218' \n   viewBox='415 217 498 63' >\n<path d='M 429.3848876953125 250 L 429.458984375 244.44664001464844 L 429.4384460449219 241.020751953125 L 429.31890869140625 250  z'/>\n<path d='M 429.3848876953125 250 L 429.31890869140625 250 L 429.4384460449219 258.979248046875 L 429.458984375 255.55335998535156  z'/>\n<path d='M 418.1608581542969 250 L 418.2066345214844 255.55335998535156 L 418.2812805175781 253.44622802734375 L 418.2812805175781 246.55377197265625 L 418.2066345214844 244.44664001464844  z'/>\n<path d='M 429.458984375 255.55335998535156 L 429.5796813964844 253.44622802734375 L 418.2812805175781 253.44622802734375 L 418.2066345214844 255.55335998535156  z'/>\n<path d='M 418.2066345214844 244.44664001464844 L 418.2812805175781 246.55377197265625 L 429.5796813964844 246.55377197265625 L 429.458984375 244.44664001464844  z'/>\n<path d='M 429.6340026855469 244.4136505126953 L 429.4384460449219 241.020751953125 L 429.458984375 244.44664001464844 L 429.5796813964844 246.55377197265625  z'/>\n<path d='M 429.458984375 255.55335998535156 L 429.4384460449219 258.979248046875 L 429.6340026855469 255.5863494873047 L 429.5796813964844 253.44622802734375  z'/>\n<path d='M 563.5831909179688 241.020751953125 L 429.4384460449219 241.020751953125 L 429.6340026855469 244.4136505126953 L 564.6695556640625 244.4136505126953  z'/>\n<path d='M 429.6340026855469 255.5863494873047 L 429.4384460449219 258.979248046875 L 563.5831909179688 258.979248046875 L 564.6695556640625 255.5863494873047  z'/>\n<path d='M 616.035400390625 240.98785400390625 L 563.5831909179688 241.020751953125 L 564.6695556640625 244.4136505126953  z'/>\n<path d='M 564.6695556640625 255.5863494873047 L 563.5831909179688 258.979248046875 L 616.035400390625 259.0121154785156  z'/>\n<path d='M 761.7039184570312 244.43408203125 L 750.4261474609375 244.43408203125 L 751.3140869140625 250 L 762.6204223632812 250  z'/>\n<path d='M 751.3140869140625 250 L 750.4261474609375 255.56591796875 L 761.7039184570312 255.56591796875 L 762.6204223632812 250  z'/>\n<path d='M 429.5796813964844 253.44622802734375 L 429.5796813964844 246.55377197265625 L 418.2812805175781 246.55377197265625 L 418.2812805175781 253.44622802734375  z'/>\n<path d='M 429.5796813964844 253.44622802734375 L 429.6340026855469 255.5863494873047 L 429.6340026855469 244.4136505126953 L 429.5796813964844 246.55377197265625  z'/>\n<path d='M 616.035400390625 240.98785400390625 L 616.9231567382812 250 L 752.1121215820312 250 L 750.6710815429688 240.98785400390625  z'/>\n<path d='M 616.9231567382812 250 L 616.035400390625 259.0121154785156 L 750.6710815429688 259.0121154785156 L 752.1121215820312 250  z'/>\n<path d='M 616.9231567382812 250 L 564.6695556640625 255.5863494873047 L 616.035400390625 259.0121154785156  z'/>\n<path d='M 616.035400390625 240.98785400390625 L 564.6695556640625 244.4136505126953 L 616.9231567382812 250  z'/>\n<path d='M 429.6340026855469 244.4136505126953 L 429.6340026855469 255.5863494873047 L 564.6695556640625 255.5863494873047 L 564.6695556640625 244.4136505126953  z'/>\n<path d='M 616.9231567382812 250 L 564.6695556640625 244.4136505126953 L 564.6695556640625 255.5863494873047  z'/>\n\n</svg>\n";
3317
3318// src/wc/zometool/parts/g0.svg
3319var g0_default = "<?xml version='1.0'?>\n<svg version='1.1' xmlns='http://www.w3.org/2000/svg'\n   stroke='black' stroke-linejoin='round' stroke-width='0.5' fill='#00993f' \n   viewBox='408 225 373 48' >\n<path d='M 418.52264404296875 240.22256469726562 L 420.1631164550781 247.30157470703125 L 420.0196228027344 246.56666564941406 L 418.9914245605469 242.12939453125  z'/>\n<path d='M 421.2759094238281 251.67417907714844 L 420.7160949707031 249.3028564453125 L 420.0196228027344 246.56666564941406 L 420.1631164550781 247.30157470703125  z'/>\n<path d='M 529.6583862304688 259.7774353027344 L 530.2808227539062 259.8243713378906 L 512.4366455078125 254.383056640625  z'/>\n<path d='M 411.4580993652344 243.95169067382812 L 412.4798889160156 248.32981872558594 L 413.1492614746094 251.03469848632812 L 412.5397644042969 248.32179260253906 L 411.4920654296875 243.93377685546875  z'/>\n<path d='M 418.611572265625 240.17562866210938 L 418.52264404296875 240.22256469726562 L 418.9914245605469 242.12939453125 L 419.0484619140625 242.10577392578125  z'/>\n<path d='M 528.7800903320312 253.4500274658203 L 536.3526611328125 251.67819213867188 L 535.3866577148438 248.9652862548828 L 527.81982421875 250.6971435546875  z'/>\n<path d='M 420.11700439453125 246.54995727539062 L 412.5397644042969 248.32179260253906 L 413.1492614746094 251.03469848632812 L 420.7160949707031 249.3028564453125  z'/>\n<path d='M 420.3199462890625 247.28057861328125 L 420.11700439453125 246.54995727539062 L 420.7160949707031 249.3028564453125 L 421.2759094238281 251.67417907714844  z'/>\n<path d='M 437.2784118652344 250 L 420.3199462890625 247.28057861328125 L 421.2759094238281 251.67417907714844 L 438.168701171875 254.38307189941406  z'/>\n<path d='M 437.2784118652344 250 L 511.835205078125 250 L 510.3671875 245.61692810058594 L 436.09930419921875 245.61692810058594  z'/>\n<path d='M 510.3671875 245.61692810058594 L 511.835205078125 250 L 528.7936401367188 252.71942138671875 L 527.260009765625 248.3258056640625  z'/>\n<path d='M 437.2784118652344 250 L 438.168701171875 254.38307189941406 L 512.4366455078125 254.383056640625 L 511.835205078125 250  z'/>\n<path d='M 420.11700439453125 246.54995727539062 L 419.0484619140625 242.10577392578125 L 411.4920654296875 243.93377685546875 L 412.5397644042969 248.32179260253906  z'/>\n<path d='M 529.7105102539062 257.89422607421875 L 537.2639770507812 256.06622314453125 L 536.3526611328125 251.67819213867188 L 528.7800903320312 253.4500274658203  z'/>\n<path d='M 418.611572265625 240.17562866210938 L 437.2784118652344 250 L 436.09930419921875 245.61692810058594  z'/>\n<path d='M 512.4366455078125 254.383056640625 L 530.2808227539062 259.8243713378906 L 511.835205078125 250  z'/>\n<path d='M 418.611572265625 240.17562866210938 L 419.0484619140625 242.10577392578125 L 420.11700439453125 246.54995727539062 L 420.3199462890625 247.28057861328125  z'/>\n<path d='M 418.611572265625 240.17562866210938 L 420.3199462890625 247.28057861328125 L 437.2784118652344 250  z'/>\n<path d='M 530.2808227539062 259.8243713378906 L 528.7936401367188 252.71942138671875 L 511.835205078125 250  z'/>\n\n</svg>\n";
3320
3321// src/wc/zometool/parts/g1.svg
3322var g1_default = "<?xml version='1.0'?>\n<svg version='1.1' xmlns='http://www.w3.org/2000/svg'\n   stroke='black' stroke-linejoin='round' stroke-width='0.5' fill='#00993f' \n   viewBox='408 225 373 48' >\n<path d='M 418.52264404296875 240.22256469726562 L 420.1631164550781 247.30157470703125 L 420.0196228027344 246.56666564941406 L 418.9914245605469 242.12939453125  z'/>\n<path d='M 421.2759094238281 251.67417907714844 L 420.7160949707031 249.3028564453125 L 420.0196228027344 246.56666564941406 L 420.1631164550781 247.30157470703125  z'/>\n<path d='M 621.2393798828125 259.7774353027344 L 622.3013916015625 259.8243408203125 L 604.23681640625 254.383056640625  z'/>\n<path d='M 411.4580993652344 243.95169067382812 L 412.4798889160156 248.32981872558594 L 413.1492614746094 251.03469848632812 L 412.5397644042969 248.32179260253906 L 411.4920654296875 243.93377685546875  z'/>\n<path d='M 418.611572265625 240.17562866210938 L 418.52264404296875 240.22256469726562 L 418.9914245605469 242.12939453125 L 419.0484619140625 242.10577392578125  z'/>\n<path d='M 620.8035278320312 253.4500274658203 L 628.3731689453125 251.67819213867188 L 627.1868896484375 248.96530151367188 L 619.6199951171875 250.69712829589844  z'/>\n<path d='M 420.11700439453125 246.54995727539062 L 412.5397644042969 248.32179260253906 L 413.1492614746094 251.03469848632812 L 420.7160949707031 249.3028564453125  z'/>\n<path d='M 420.3199462890625 247.28057861328125 L 420.11700439453125 246.54995727539062 L 420.7160949707031 249.3028564453125 L 421.2759094238281 251.67417907714844  z'/>\n<path d='M 437.2784118652344 250 L 420.3199462890625 247.28057861328125 L 421.2759094238281 251.67417907714844 L 438.168701171875 254.38307189941406  z'/>\n<path d='M 437.2784118652344 250 L 603.992431640625 249.99998474121094 L 602.1674194335938 245.61692810058594 L 436.09930419921875 245.61692810058594  z'/>\n<path d='M 602.1674194335938 245.61692810058594 L 603.992431640625 249.99998474121094 L 620.9508666992188 252.7194061279297 L 619.0602416992188 248.3258056640625  z'/>\n<path d='M 437.2784118652344 250 L 438.168701171875 254.38307189941406 L 604.23681640625 254.383056640625 L 603.992431640625 249.99998474121094  z'/>\n<path d='M 420.11700439453125 246.54995727539062 L 419.0484619140625 242.10577392578125 L 411.4920654296875 243.93377685546875 L 412.5397644042969 248.32179260253906  z'/>\n<path d='M 621.6484985351562 257.89422607421875 L 629.2001953125 256.06622314453125 L 628.3731689453125 251.67819213867188 L 620.8035278320312 253.4500274658203  z'/>\n<path d='M 418.611572265625 240.17562866210938 L 437.2784118652344 250 L 436.09930419921875 245.61692810058594  z'/>\n<path d='M 604.23681640625 254.383056640625 L 622.3013916015625 259.8243408203125 L 603.992431640625 249.99998474121094  z'/>\n<path d='M 418.611572265625 240.17562866210938 L 419.0484619140625 242.10577392578125 L 420.11700439453125 246.54995727539062 L 420.3199462890625 247.28057861328125  z'/>\n<path d='M 418.611572265625 240.17562866210938 L 420.3199462890625 247.28057861328125 L 437.2784118652344 250  z'/>\n<path d='M 622.3013916015625 259.8243408203125 L 620.9508666992188 252.7194061279297 L 603.992431640625 249.99998474121094  z'/>\n\n</svg>\n";
3323
3324// src/wc/zometool/parts/g2.svg
3325var g2_default = "<?xml version='1.0'?>\n<svg version='1.1' xmlns='http://www.w3.org/2000/svg'\n   stroke='black' stroke-linejoin='round' stroke-width='0.5' fill='#00993f' \n   viewBox='408 225 373 48' >\n<path d='M 418.52264404296875 240.22256469726562 L 420.1631164550781 247.30157470703125 L 420.0196228027344 246.56666564941406 L 418.9914245605469 242.12939453125  z'/>\n<path d='M 421.2759094238281 251.67417907714844 L 420.7160949707031 249.3028564453125 L 420.0196228027344 246.56666564941406 L 420.1631164550781 247.30157470703125  z'/>\n<path d='M 769.42041015625 259.7774353027344 L 771.1937255859375 259.8243408203125 L 752.7726440429688 254.383056640625  z'/>\n<path d='M 411.4580993652344 243.95169067382812 L 412.4798889160156 248.32981872558594 L 413.1492614746094 251.03469848632812 L 412.5397644042969 248.32179260253906 L 411.4920654296875 243.93377685546875  z'/>\n<path d='M 418.611572265625 240.17562866210938 L 418.52264404296875 240.22256469726562 L 418.9914245605469 242.12939453125 L 419.0484619140625 242.10577392578125  z'/>\n<path d='M 769.7005615234375 253.45001220703125 L 777.2655029296875 251.6781768798828 L 775.7227172851562 248.9652862548828 L 768.1558837890625 250.6971435546875  z'/>\n<path d='M 420.11700439453125 246.54995727539062 L 412.5397644042969 248.32179260253906 L 413.1492614746094 251.03469848632812 L 420.7160949707031 249.3028564453125  z'/>\n<path d='M 420.3199462890625 247.28057861328125 L 420.11700439453125 246.54995727539062 L 420.7160949707031 249.3028564453125 L 421.2759094238281 251.67417907714844  z'/>\n<path d='M 437.2784118652344 250 L 420.3199462890625 247.28057861328125 L 421.2759094238281 251.67417907714844 L 438.168701171875 254.38307189941406  z'/>\n<path d='M 437.2784118652344 250 L 753.1058959960938 249.99998474121094 L 750.7032470703125 245.61691284179688 L 436.09930419921875 245.61692810058594  z'/>\n<path d='M 750.7032470703125 245.61691284179688 L 753.1058959960938 249.99998474121094 L 770.0643920898438 252.7194061279297 L 767.5960693359375 248.32582092285156  z'/>\n<path d='M 437.2784118652344 250 L 438.168701171875 254.38307189941406 L 752.7726440429688 254.383056640625 L 753.1058959960938 249.99998474121094  z'/>\n<path d='M 420.11700439453125 246.54995727539062 L 419.0484619140625 242.10577392578125 L 411.4920654296875 243.93377685546875 L 412.5397644042969 248.32179260253906  z'/>\n<path d='M 770.4074096679688 257.89422607421875 L 777.9561767578125 256.06622314453125 L 777.2655029296875 251.6781768798828 L 769.7005615234375 253.45001220703125  z'/>\n<path d='M 418.611572265625 240.17562866210938 L 437.2784118652344 250 L 436.09930419921875 245.61692810058594  z'/>\n<path d='M 752.7726440429688 254.383056640625 L 771.1937255859375 259.8243408203125 L 753.1058959960938 249.99998474121094  z'/>\n<path d='M 418.611572265625 240.17562866210938 L 419.0484619140625 242.10577392578125 L 420.11700439453125 246.54995727539062 L 420.3199462890625 247.28057861328125  z'/>\n<path d='M 418.611572265625 240.17562866210938 L 420.3199462890625 247.28057861328125 L 437.2784118652344 250  z'/>\n<path d='M 771.1937255859375 259.8243408203125 L 770.0643920898438 252.7194061279297 L 753.1058959960938 249.99998474121094  z'/>\n\n</svg>\n";
3326
3327// src/wc/zometool/parts/hg0.svg
3328var hg0_default = "<?xml version='1.0'?>\n<svg version='1.1' xmlns='http://www.w3.org/2000/svg'\n   stroke='black' stroke-linejoin='round' stroke-width='0.5' fill='#00993f' \n   viewBox='408 225 373 48' >\n<path d='M 418.52264404296875 240.22256469726562 L 420.1631164550781 247.30157470703125 L 420.0196228027344 246.56666564941406 L 418.9914245605469 242.12939453125  z'/>\n<path d='M 436.09930419921875 245.61692810058594 L 436.09930419921875 245.61692810058594 L 436.9906921386719 250 L 436.9906921386719 250  z'/>\n<path d='M 438.168701171875 254.38307189941406 L 436.9906921386719 250 L 436.9906921386719 250 L 438.168701171875 254.38307189941406  z'/>\n<path d='M 421.2759094238281 251.67417907714844 L 420.7160949707031 249.3028564453125 L 420.0196228027344 246.56666564941406 L 420.1631164550781 247.30157470703125  z'/>\n<path d='M 455.56793212890625 259.7774353027344 L 455.8346862792969 259.8243713378906 L 438.168701171875 254.38307189941406  z'/>\n<path d='M 411.4580993652344 243.95169067382812 L 412.4798889160156 248.32981872558594 L 413.1492614746094 251.03469848632812 L 412.5397644042969 248.32179260253906 L 411.4920654296875 243.93377685546875  z'/>\n<path d='M 418.611572265625 240.17562866210938 L 418.52264404296875 240.22256469726562 L 418.9914245605469 242.12939453125 L 419.0484619140625 242.10577392578125  z'/>\n<path d='M 454.33160400390625 253.4500274658203 L 461.90643310546875 251.67820739746094 L 461.1187438964844 248.96530151367188 L 453.5518798828125 250.6971435546875  z'/>\n<path d='M 420.11700439453125 246.54995727539062 L 412.5397644042969 248.32179260253906 L 413.1492614746094 251.03469848632812 L 420.7160949707031 249.3028564453125  z'/>\n<path d='M 420.3199462890625 247.28057861328125 L 420.11700439453125 246.54995727539062 L 420.7160949707031 249.3028564453125 L 421.2759094238281 251.67417907714844  z'/>\n<path d='M 437.2784118652344 250 L 420.3199462890625 247.28057861328125 L 421.2759094238281 251.67417907714844 L 438.168701171875 254.38307189941406  z'/>\n<path d='M 437.2784118652344 250 L 437.2784118652344 250 L 436.09930419921875 245.61692810058594 L 436.09930419921875 245.61692810058594  z'/>\n<path d='M 436.09930419921875 245.61692810058594 L 437.2784118652344 250 L 454.23687744140625 252.71942138671875 L 452.9920959472656 248.32582092285156  z'/>\n<path d='M 437.2784118652344 250 L 438.168701171875 254.38307189941406 L 438.168701171875 254.38307189941406 L 437.2784118652344 250  z'/>\n<path d='M 420.11700439453125 246.54995727539062 L 419.0484619140625 242.10577392578125 L 411.4920654296875 243.93377685546875 L 412.5397644042969 248.32179260253906  z'/>\n<path d='M 455.3310546875 257.89422607421875 L 462.885986328125 256.06622314453125 L 461.90643310546875 251.67820739746094 L 454.33160400390625 253.4500274658203  z'/>\n<path d='M 418.611572265625 240.17562866210938 L 437.2784118652344 250 L 436.09930419921875 245.61692810058594  z'/>\n<path d='M 438.168701171875 254.38307189941406 L 455.8346862792969 259.8243713378906 L 437.2784118652344 250  z'/>\n<path d='M 418.611572265625 240.17562866210938 L 419.0484619140625 242.10577392578125 L 420.11700439453125 246.54995727539062 L 420.3199462890625 247.28057861328125  z'/>\n<path d='M 418.611572265625 240.17562866210938 L 420.3199462890625 247.28057861328125 L 437.2784118652344 250  z'/>\n<path d='M 455.8346862792969 259.8243713378906 L 454.23687744140625 252.71942138671875 L 437.2784118652344 250  z'/>\n\n</svg>\n";
3329
3330// src/wc/zometool/parts/hg1.svg
3331var hg1_default = "<?xml version='1.0'?>\n<svg version='1.1' xmlns='http://www.w3.org/2000/svg'\n   stroke='black' stroke-linejoin='round' stroke-width='0.5' fill='#00993f'\n   viewBox='408 225 373 48' >\n<path d='M 418.52264404296875 240.22256469726562 L 420.1631164550781 247.30157470703125 L 420.0196228027344 246.56666564941406 L 418.9914245605469 242.12939453125  z'/>\n<path d='M 421.2759094238281 251.67417907714844 L 420.7160949707031 249.3028564453125 L 420.0196228027344 246.56666564941406 L 420.1631164550781 247.30157470703125  z'/>\n<path d='M 501.3583984375 259.7774353027344 L 501.8449401855469 259.8243713378906 L 484.0688171386719 254.38307189941406  z'/>\n<path d='M 411.4580993652344 243.95169067382812 L 412.4798889160156 248.32981872558594 L 413.1492614746094 251.03469848632812 L 412.5397644042969 248.32179260253906 L 411.4920654296875 243.93377685546875  z'/>\n<path d='M 418.611572265625 240.17562866210938 L 418.52264404296875 240.22256469726562 L 418.9914245605469 242.12939453125 L 419.0484619140625 242.10577392578125  z'/>\n<path d='M 500.34326171875 253.4500274658203 L 507.916748046875 251.67819213867188 L 507.01885986328125 248.96530151367188 L 499.45196533203125 250.6971435546875  z'/>\n<path d='M 420.11700439453125 246.54995727539062 L 412.5397644042969 248.32179260253906 L 413.1492614746094 251.03469848632812 L 420.7160949707031 249.3028564453125  z'/>\n<path d='M 420.3199462890625 247.28057861328125 L 420.11700439453125 246.54995727539062 L 420.7160949707031 249.3028564453125 L 421.2759094238281 251.67417907714844  z'/>\n<path d='M 437.2784118652344 250 L 420.3199462890625 247.28057861328125 L 421.2759094238281 251.67417907714844 L 438.168701171875 254.38307189941406  z'/>\n<path d='M 437.2784118652344 250 L 483.3570556640625 250 L 481.9993896484375 245.61692810058594 L 436.09930419921875 245.61692810058594  z'/>\n<path d='M 481.9993896484375 245.61692810058594 L 483.3570556640625 250 L 500.3155212402344 252.71942138671875 L 498.89215087890625 248.3258056640625  z'/>\n<path d='M 437.2784118652344 250 L 438.168701171875 254.38307189941406 L 484.0688171386719 254.38307189941406 L 483.3570556640625 250  z'/>\n<path d='M 420.11700439453125 246.54995727539062 L 419.0484619140625 242.10577392578125 L 411.4920654296875 243.93377685546875 L 412.5397644042969 248.32179260253906  z'/>\n<path d='M 501.300048828125 257.89422607421875 L 508.8540954589844 256.06622314453125 L 507.916748046875 251.67819213867188 L 500.34326171875 253.4500274658203  z'/>\n<path d='M 418.611572265625 240.17562866210938 L 437.2784118652344 250 L 436.09930419921875 245.61692810058594  z'/>\n<path d='M 484.0688171386719 254.38307189941406 L 501.8449401855469 259.8243713378906 L 483.3570556640625 250  z'/>\n<path d='M 418.611572265625 240.17562866210938 L 419.0484619140625 242.10577392578125 L 420.11700439453125 246.54995727539062 L 420.3199462890625 247.28057861328125  z'/>\n<path d='M 418.611572265625 240.17562866210938 L 420.3199462890625 247.28057861328125 L 437.2784118652344 250  z'/>\n<path d='M 501.8449401855469 259.8243713378906 L 500.3155212402344 252.71942138671875 L 483.3570556640625 250  z'/>\n\n</svg>\n";
3332
3333// src/wc/zometool/parts/hg2.svg
3334var hg2_default = "<?xml version='1.0'?>\n<svg version='1.1' xmlns='http://www.w3.org/2000/svg'\n   stroke='black' stroke-linejoin='round' stroke-width='0.5' fill='#00993f' \n   viewBox='408 225 373 48' >\n<path d='M 418.52264404296875 240.22256469726562 L 420.1631164550781 247.30157470703125 L 420.0196228027344 246.56666564941406 L 418.9914245605469 242.12939453125  z'/>\n<path d='M 421.2759094238281 251.67417907714844 L 420.7160949707031 249.3028564453125 L 420.0196228027344 246.56666564941406 L 420.1631164550781 247.30157470703125  z'/>\n<path d='M 575.4489135742188 259.7774353027344 L 576.2910766601562 259.8243713378906 L 558.3367309570312 254.383056640625  z'/>\n<path d='M 411.4580993652344 243.95169067382812 L 412.4798889160156 248.32981872558594 L 413.1492614746094 251.03469848632812 L 412.5397644042969 248.32179260253906 L 411.4920654296875 243.93377685546875  z'/>\n<path d='M 418.611572265625 240.17562866210938 L 418.52264404296875 240.22256469726562 L 418.9914245605469 242.12939453125 L 419.0484619140625 242.10577392578125  z'/>\n<path d='M 574.7918090820312 253.4500274658203 L 582.3629150390625 251.67819213867188 L 581.2867431640625 248.9652862548828 L 573.7199096679688 250.6971435546875  z'/>\n<path d='M 420.11700439453125 246.54995727539062 L 412.5397644042969 248.32179260253906 L 413.1492614746094 251.03469848632812 L 420.7160949707031 249.3028564453125  z'/>\n<path d='M 420.3199462890625 247.28057861328125 L 420.11700439453125 246.54995727539062 L 420.7160949707031 249.3028564453125 L 421.2759094238281 251.67417907714844  z'/>\n<path d='M 437.2784118652344 250 L 420.3199462890625 247.28057861328125 L 421.2759094238281 251.67417907714844 L 438.168701171875 254.38307189941406  z'/>\n<path d='M 437.2784118652344 250 L 557.9137573242188 249.99998474121094 L 556.267333984375 245.61692810058594 L 436.09930419921875 245.61692810058594  z'/>\n<path d='M 556.267333984375 245.61692810058594 L 557.9137573242188 249.99998474121094 L 574.8722534179688 252.7194061279297 L 573.1600952148438 248.3258056640625  z'/>\n<path d='M 437.2784118652344 250 L 438.168701171875 254.38307189941406 L 558.3367309570312 254.383056640625 L 557.9137573242188 249.99998474121094  z'/>\n<path d='M 420.11700439453125 246.54995727539062 L 419.0484619140625 242.10577392578125 L 411.4920654296875 243.93377685546875 L 412.5397644042969 248.32179260253906  z'/>\n<path d='M 575.6795043945312 257.89422607421875 L 583.2321166992188 256.06622314453125 L 582.3629150390625 251.67819213867188 L 574.7918090820312 253.4500274658203  z'/>\n<path d='M 418.611572265625 240.17562866210938 L 437.2784118652344 250 L 436.09930419921875 245.61692810058594  z'/>\n<path d='M 558.3367309570312 254.383056640625 L 576.2910766601562 259.8243713378906 L 557.9137573242188 249.99998474121094  z'/>\n<path d='M 418.611572265625 240.17562866210938 L 419.0484619140625 242.10577392578125 L 420.11700439453125 246.54995727539062 L 420.3199462890625 247.28057861328125  z'/>\n<path d='M 418.611572265625 240.17562866210938 L 420.3199462890625 247.28057861328125 L 437.2784118652344 250  z'/>\n<path d='M 576.2910766601562 259.8243713378906 L 574.8722534179688 252.7194061279297 L 557.9137573242188 249.99998474121094  z'/>\n\n</svg>\n";
3335
3336// src/wc/zometool/parts-list.jsx
3337var _tmpl$2 = /* @__PURE__ */ template(`<div class="zometool-parts-table">`);
3338var svgStrings = {
3339  ball: ball_default,
3340  b0: b0_default,
3341  b1: b1_default,
3342  b2: b2_default,
3343  y0: y0_default,
3344  y1: y1_default,
3345  y2: y2_default,
3346  r00: r00_default,
3347  r0: r0_default,
3348  r1: r1_default,
3349  r2: r2_default,
3350  g0: g0_default,
3351  g1: g1_default,
3352  g2: g2_default,
3353  hg0: hg0_default,
3354  hg1: hg1_default,
3355  hg2: hg2_default
3356};
3357var getSvgNode = (key, color) => {
3358  let doc = new DOMParser().parseFromString(svgStrings[key], "application/xml");
3359  const svg = document.importNode(doc.documentElement, true);
3360  svg.setAttribute("fill", color);
3361  return svg;
3362};
3363var debug = false;
3364var ZometoolParts = (props) => {
3365  const partSx = {
3366    height: "24px",
3367    padding: "0",
3368    width: "210px",
3369    lineHeight: "0"
3370  };
3371  return (() => {
3372    const _el$ = _tmpl$2();
3373    insert(_el$, createComponent(TableContainer_default, {
3374      component: Paper_default,
3375      get children() {
3376        return createComponent(Table_default, {
3377          sx: {
3378            minWidth: 250
3379          },
3380          "aria-label": "parts table",
3381          size: "small",
3382          get children() {
3383            return [createComponent(TableHead_default, {
3384              get children() {
3385                return createComponent(TableRow_default, {
3386                  get children() {
3387                    return [createComponent(TableCell_default, {
3388                      sx: {
3389                        fontWeight: "bold"
3390                      },
3391                      children: "Part"
3392                    }), createComponent(TableCell_default, {
3393                      sx: {
3394                        fontWeight: "bold"
3395                      },
3396                      children: "Length"
3397                    }), createComponent(TableCell_default, {
3398                      sx: {
3399                        fontWeight: "bold"
3400                      },
3401                      align: "right",
3402                      children: "Count"
3403                    })];
3404                  }
3405                });
3406              }
3407            }), createComponent(TableBody_default, {
3408              get children() {
3409                return createComponent(For, {
3410                  get each() {
3411                    return props.bom;
3412                  },
3413                  children: ({
3414                    key,
3415                    count,
3416                    color
3417                  }) => createComponent(TableRow_default, {
3418                    sx: {
3419                      "&:last-child td, &:last-child th": {
3420                        border: 0
3421                      }
3422                    },
3423                    get children() {
3424                      return [createComponent(TableCell_default, {
3425                        align: "left",
3426                        component: "th",
3427                        scope: "row",
3428                        sx: partSx,
3429                        get children() {
3430                          return getSvgNode(key, color);
3431                        }
3432                      }), createComponent(TableCell_default, {
3433                        component: "th",
3434                        scope: "row",
3435                        get children() {
3436                          return (key === "ball" ? "" : key).toUpperCase();
3437                        }
3438                      }), createComponent(TableCell_default, {
3439                        align: "right",
3440                        children: count
3441                      })];
3442                    }
3443                  })
3444                });
3445              }
3446            })];
3447          }
3448        });
3449      }
3450    }));
3451    return _el$;
3452  })();
3453};
3454var renderComponent = (container, bom) => {
3455  const bindComponent = () => {
3456    return createComponent(ZometoolParts, {
3457      bom
3458    });
3459  };
3460  render(bindComponent, container);
3461};
3462var ZometoolPartsElement = class extends HTMLElement {
3463  #instructionsId;
3464  #instructions;
3465  constructor() {
3466    super();
3467    debug && console.log("ZometoolPartsElement constructed");
3468  }
3469  connectedCallback() {
3470    if (!!this.#instructionsId) {
3471      this.#instructions = document.querySelector(`#${this.#instructionsId}`);
3472      if (!this.#instructions) {
3473        console.error(`No zometool-instructions with id "${this.#instructionsId}" found.`);
3474      } else if (this.#instructions.getParts === void 0) {
3475        console.error(`Element with id "${this.#instructionsId}" is not a zometool-instructions.`);
3476        return;
3477      }
3478    }
3479    if (!this.#instructions) {
3480      this.#instructions = document.querySelector("zometool-instructions");
3481    }
3482    if (!this.#instructions) {
3483      console.error(`No zometool-instructions found.`);
3484      return;
3485    }
3486    this.#instructions.addEventListener("zometool-instructions-loaded", (e) => {
3487      debug && console.log(JSON.stringify(e.detail));
3488      this.appendChild(document.createElement("style")).textContent = instructionsCSS;
3489      const container = document.createElement("div");
3490      container.classList.add("zometool-parts-container");
3491      this.appendChild(container);
3492      renderComponent(container, e.detail);
3493    });
3494    debug && console.log("ZometoolPartsElement connected");
3495  }
3496  static get observedAttributes() {
3497    return ["instructions"];
3498  }
3499  attributeChangedCallback(attributeName, _oldValue, _newValue) {
3500    debug && console.log("ZometoolPartsElement attribute changed");
3501    switch (attributeName) {
3502      case "instructions":
3503        this.#instructionsId = _newValue;
3504        break;
3505    }
3506  }
3507};
3508
3509// src/wc/zometool/products-list.jsx
3510var _tmpl$3 = /* @__PURE__ */ template(`<div class="zometool-products-table"><ul>`);
3511var _tmpl$22 = /* @__PURE__ */ template(`<li class="matched-product">`);
3512var debug2 = false;
3513var product_catalog_url = "https://zometool.github.io/vzome-sharing/metadata/zometool-products.json";
3514var fetchJSON = (url) => fetch(url).then((response) => response.text()).then((text) => JSON.parse(text));
3515var productsPromise = fetchJSON(product_catalog_url);
3516var findProducts = (bom, products) => {
3517  const productCoversBom = (product, bom2) => bom2.reduce((covers, part) => covers && product.bom[part.partNum] >= part.count, true);
3518  const result = [];
3519  Object.entries(products).map(([code, product]) => {
3520    if (product.url && productCoversBom(product, bom))
3521      result.push({
3522        name: product.label,
3523        url: product.url
3524      });
3525  });
3526  return result;
3527};
3528var productUrl = (url) => new URL(url, "https://zometool.com");
3529var ZometoolProducts = (props) => {
3530  const [matchingProducts, setMatchingProducts] = createSignal([]);
3531  productsPromise.then((products) => {
3532    setMatchingProducts(findProducts(props.bom, products));
3533  });
3534  return (() => {
3535    const _el$ = _tmpl$3(), _el$2 = _el$.firstChild;
3536    insert(_el$2, createComponent(For, {
3537      get each() {
3538        return matchingProducts();
3539      },
3540      children: ({
3541        name,
3542        url
3543      }) => (() => {
3544        const _el$3 = _tmpl$22();
3545        insert(_el$3, createComponent(Link, {
3546          "class": "link",
3547          get href() {
3548            return productUrl(url);
3549          },
3550          target: "_blank",
3551          rel: "noopener",
3552          children: name
3553        }));
3554        return _el$3;
3555      })()
3556    }));
3557    return _el$;
3558  })();
3559};
3560var renderComponent2 = (container, bom) => {
3561  const bindComponent = () => {
3562    return createComponent(ZometoolProducts, {
3563      bom
3564    });
3565  };
3566  render(bindComponent, container);
3567};
3568var ZometoolProductsElement = class extends HTMLElement {
3569  #instructionsId;
3570  #instructions;
3571  #bomLoaded;
3572  constructor() {
3573    super();
3574    debug2 && console.log("ZometoolProductsElement constructed");
3575  }
3576  connectedCallback() {
3577    if (!!this.#instructionsId) {
3578      this.#instructions = document.querySelector(`#${this.#instructionsId}`);
3579      if (!this.#instructions) {
3580        console.error(`No zometool-instructions with id "${this.#instructionsId}" found.`);
3581      } else if (this.#instructions.getParts === void 0) {
3582        console.error(`Element with id "${this.#instructionsId}" is not a zometool-instructions.`);
3583        return;
3584      }
3585    }
3586    if (!this.#instructions) {
3587      this.#instructions = document.querySelector("zometool-instructions");
3588    }
3589    if (!this.#instructions) {
3590      console.error(`No zometool-instructions found.`);
3591      return;
3592    }
3593    this.#instructions.addEventListener("zometool-instructions-loaded", (e) => {
3594      if (this.#bomLoaded) return;
3595      this.#bomLoaded = true;
3596      debug2 && console.log(JSON.stringify(e.detail));
3597      this.appendChild(document.createElement("style")).textContent = instructionsCSS;
3598      const container = document.createElement("div");
3599      container.classList.add("zometool-products-container");
3600      this.appendChild(container);
3601      renderComponent2(container, e.detail);
3602    });
3603    debug2 && console.log("ZometoolProductsElement connected");
3604  }
3605  static get observedAttributes() {
3606    return ["instructions"];
3607  }
3608  attributeChangedCallback(attributeName, _oldValue, _newValue) {
3609    debug2 && console.log("ZometoolProductsElement attribute changed");
3610    switch (attributeName) {
3611      case "instructions":
3612        this.#instructionsId = _newValue;
3613        break;
3614    }
3615  }
3616};
3617
3618// src/wc/zometool/bom.js
3619var svgMapping = {
3620  ball: "ball",
3621  b0: "[[0,0,1],[0,0,1]]:[-1,1,1]",
3622  b1: "[[0,0,1],[0,0,1]]:[1,0,1]",
3623  b2: "[[0,0,1],[0,0,1]]:[0,1,1]",
3624  y0: "[[0,0,1],[2,-1,1]]:[-1,1,1]",
3625  y1: "[[0,0,1],[2,-1,1]]:[1,0,1]",
3626  y2: "[[0,0,1],[2,-1,1]]:[0,1,1]",
3627  r00: "[[-1,1,1],[0,0,1]]:[2,-1,1]",
3628  r0: "[[-1,1,1],[0,0,1]]:[-1,1,1]",
3629  r1: "[[-1,1,1],[0,0,1]]:[1,0,1]",
3630  r2: "[[-1,1,1],[0,0,1]]:[0,1,1]",
3631  g0: "[[2,-1,1],[5,-3,1]]:[-1,1,1]",
3632  g1: "[[2,-1,1],[5,-3,1]]:[1,0,1]",
3633  g2: "[[2,-1,1],[5,-3,1]]:[0,1,1]",
3634  hg0: "[[2,-1,1],[5,-3,1]]:[-1,1,2]",
3635  hg1: "[[2,-1,1],[5,-3,1]]:[1,0,2]",
3636  hg2: "[[2,-1,1],[5,-3,1]]:[0,1,2]"
3637};
3638var partcodeMapping = {
3639  ball: "PZB-BAL-",
3640  b0: "PST-B0-",
3641  b1: "PST-B1-",
3642  b2: "PST-B2-",
3643  y0: "PST-Y0-",
3644  y1: "PST-Y1-",
3645  y2: "PST-Y2-",
3646  r00: "PST-R00-",
3647  r0: "PST-R0-",
3648  r1: "PST-R1-",
3649  r2: "PST-R2-",
3650  g0: "PST-G0-",
3651  g1: "PST-G1-",
3652  g2: "PST-G2-",
3653  hg0: "PST-HG0-",
3654  hg1: "PST-HG1-",
3655  hg2: "PST-HG2-"
3656};
3657var colorMapping = {
3658  "blue": "BLU",
3659  "yellow": "YEL",
3660  "red": "RED",
3661  "green": "GRN",
3662  "turquoise": "TEA",
3663  "orange": "ORG",
3664  "purple": "PUR",
3665  "white": "W",
3666  "black": "BLK",
3667  "gray": "GRY"
3668};
3669var normalizeBOM = (rawBoM, { colors, parts }) => {
3670  const bom = [];
3671  const zometoolCodes = Object.keys(parts);
3672  for (const key in partcodeMapping) {
3673    const rawKey = svgMapping[key];
3674    if (Object.hasOwnProperty.call(rawBoM, rawKey)) {
3675      const partNumPrefix = partcodeMapping[key];
3676      for (const [colorName, count] of Object.entries(rawBoM[rawKey])) {
3677        const partNum = partNumPrefix + colorMapping[colorName];
3678        if (zometoolCodes.includes(partNum)) {
3679          const color = colors[colorName];
3680          bom.push({ key, partNum, count, color });
3681        }
3682      }
3683    }
3684  }
3685  return bom;
3686};
3687
3688// src/wc/zometool/index.jsx
3689var _tmpl$4 = /* @__PURE__ */ template(`<svg aria-hidden="true" viewBox="0 0 24 24" focusable="false" class="step-button-svg"><path d="M24 0v24H0V0h24z" fill="none" opacity=".87"></path><path d="M17.7 15.89L13.82 12l3.89-3.89c.39-.39.39-1.02 0-1.41-.39-.39-1.02-.39-1.41 0l-4.59 4.59c-.39.39-.39 1.02 0 1.41l4.59 4.59c.39.39 1.02.39 1.41 0 .38-.38.38-1.02-.01-1.4zM7 6c.55 0 1 .45 1 1v10c0 .55-.45 1-1 1s-1-.45-1-1V7c0-.55.45-1 1-1z">`);
3690var _tmpl$23 = /* @__PURE__ */ template(`<svg aria-hidden="true" viewBox="0 0 24 24" focusable="false" class="step-button-svg"><path d="M14.91 6.71c-.39-.39-1.02-.39-1.41 0L8.91 11.3c-.39.39-.39 1.02 0 1.41l4.59 4.59c.39.39 1.02.39 1.41 0 .39-.39.39-1.02 0-1.41L11.03 12l3.88-3.88c.38-.39.38-1.03 0-1.41z">`);
3691var _tmpl$32 = /* @__PURE__ */ template(`<h1 class="step-number">`);
3692var _tmpl$42 = /* @__PURE__ */ template(`<svg aria-hidden="true" viewBox="0 0 24 24" focusable="false" class="step-button-svg"><path d="M9.31 6.71c-.39.39-.39 1.02 0 1.41L13.19 12l-3.88 3.88c-.39.39-.39 1.02 0 1.41.39.39 1.02.39 1.41 0l4.59-4.59c.39-.39.39-1.02 0-1.41L10.72 6.7c-.38-.38-1.02-.38-1.41.01z">`);
3693var _tmpl$5 = /* @__PURE__ */ template(`<svg aria-hidden="true" viewBox="0 0 24 24" focusable="false" class="step-button-svg"><path d="M0 0h24v24H0V0z" fill="none" opacity=".87"></path><path d="M6.29 8.11L10.18 12l-3.89 3.89c-.39.39-.39 1.02 0 1.41.39.39 1.02.39 1.41 0l4.59-4.59c.39-.39.39-1.02 0-1.41L7.7 6.7c-.39-.39-1.02-.39-1.41 0-.38.39-.38 1.03 0 1.41zM17 6c.55 0 1 .45 1 1v10c0 .55-.45 1-1 1s-1-.45-1-1V7c0-.55.45-1 1-1z">`);
3694var _tmpl$6 = /* @__PURE__ */ template(`<div class="zometool-instructions"><div class="step-controls"><div class="step-buttons">`);
3695var _tmpl$7 = /* @__PURE__ */ template(`<div class="step-buttons">`);
3696var debug3 = false;
3697var parts_catalog_url = "https://zometool.github.io/vzome-sharing/metadata/zometool-parts.json";
3698var partsPromise = fetch(parts_catalog_url).then((response) => response.text()).then((text) => JSON.parse(text));
3699var StepControls = (props) => {
3700  const {
3701    showIndexedScene
3702  } = useSceneIndexing();
3703  const atStart = () => props.index === props.minIndex;
3704  const atEnd = () => props.index === props.maxIndex;
3705  createEffect(() => {
3706    showIndexedScene(props.index, {
3707      camera: true
3708    });
3709  });
3710  const change = (delta) => (evt) => {
3711    let newIndex;
3712    if (delta === 0) {
3713      newIndex = props.minIndex;
3714    } else if (delta === -2) {
3715      newIndex = props.maxIndex;
3716    } else {
3717      newIndex = props.index + delta;
3718    }
3719    props.setIndex(newIndex);
3720  };
3721  return [createComponent(Button, {
3722    get disabled() {
3723      return atStart();
3724    },
3725    "class": "step-button limit-step",
3726    tooltip: "First step",
3727    get onClick() {
3728      return change(0);
3729    },
3730    get children() {
3731      return _tmpl$4();
3732    }
3733  }), createComponent(Button, {
3734    get disabled() {
3735      return atStart();
3736    },
3737    "class": "step-button",
3738    tooltip: "Previous step",
3739    get onClick() {
3740      return change(-1);
3741    },
3742    get children() {
3743      return _tmpl$23();
3744    }
3745  }), (() => {
3746    const _el$3 = _tmpl$32();
3747    insert(_el$3, () => props.index - props.minIndex + 1);
3748    return _el$3;
3749  })(), createComponent(Button, {
3750    get disabled() {
3751      return atEnd();
3752    },
3753    "class": "step-button",
3754    tooltip: "Next step",
3755    get onClick() {
3756      return change(1);
3757    },
3758    get children() {
3759      return _tmpl$42();
3760    }
3761  }), createComponent(Button, {
3762    get disabled() {
3763      return atEnd();
3764    },
3765    "class": "step-button limit-step",
3766    tooltip: "Last step",
3767    get onClick() {
3768      return change(-2);
3769    },
3770    get children() {
3771      return _tmpl$5();
3772    }
3773  })];
3774};
3775var ZometoolInstructions = (props) => {
3776  const {
3777    scenes,
3778    requestBOM
3779  } = useViewer();
3780  const {
3781    subscribeFor
3782  } = useWorkerClient();
3783  const {
3784    showIndexedScene
3785  } = useSceneIndexing();
3786  const [hasScenes, setHasScenes] = createSignal(false);
3787  const [steps, setSteps] = createSignal(false);
3788  const [minIndex, setMinIndex] = createSignal(1);
3789  const [maxIndex, setMaxIndex] = createSignal(1);
3790  const [index, setIndex] = createSignal(1);
3791  const dynConfig = () => ({
3792    useSpinner: false,
3793    allowFullViewport: true,
3794    showSettings: true,
3795    showOutlines: true
3796  }, props.config, {
3797    showScenes: steps() ? "indexed" : "managed",
3798    download: !steps()
3799  });
3800  const toggleSteps = () => setSteps((v) => !v);
3801  createEffect(() => {
3802    let minIndex2 = 1;
3803    let maxIndex2 = scenes?.length - 1;
3804    if (props.config?.module) {
3805      minIndex2 = getSceneTitleIndex(scenes, props.config?.module + " start");
3806      maxIndex2 = getSceneTitleIndex(scenes, props.config?.module + " end");
3807    }
3808    setMinIndex(minIndex2);
3809    setIndex(minIndex2);
3810    setMaxIndex(maxIndex2);
3811    setHasScenes(scenes?.length > 1);
3812    if (scenes?.length > 1) requestBOM(unwrap(scenes));
3813  });
3814  createEffect(() => {
3815    if (!steps()) {
3816      showIndexedScene(hasScenes() ? maxIndex() : 0, {
3817        camera: true
3818      });
3819    }
3820  });
3821  subscribeFor("BOM_CHANGED", (bom) => {
3822    partsPromise.then((parts) => {
3823      const detail = normalizeBOM(bom, parts);
3824      props.dispatch(new CustomEvent("zometool-instructions-loaded", {
3825        detail
3826      }));
3827    });
3828  });
3829  return (() => {
3830    const _el$6 = _tmpl$6(), _el$7 = _el$6.firstChild, _el$8 = _el$7.firstChild;
3831    insert(_el$7, createComponent(Show, {
3832      get when() {
3833        return hasScenes();
3834      },
3835      get fallback() {
3836        return _tmpl$7();
3837      },
3838      get children() {
3839        return createComponent(Switch, {
3840          "class": "step-switch",
3841          get checked() {
3842            return steps();
3843          },
3844          onChange: toggleSteps,
3845          get children() {
3846            return [createComponent(Switch.Label, {
3847              "class": "step_switch__label",
3848              children: "Show Build Steps"
3849            }), createComponent(Switch.Input, {
3850              "class": "switch__input"
3851            }), createComponent(Switch.Control, {
3852              "class": "switch__control",
3853              get children() {
3854                return createComponent(Switch.Thumb, {
3855                  "class": "switch__thumb"
3856                });
3857              }
3858            })];
3859          }
3860        });
3861      }
3862    }), _el$8);
3863    insert(_el$8, createComponent(Show, {
3864      get when() {
3865        return steps();
3866      },
3867      get children() {
3868        return createComponent(StepControls, {
3869          get index() {
3870            return index();
3871          },
3872          setIndex,
3873          get minIndex() {
3874            return minIndex();
3875          },
3876          get maxIndex() {
3877            return maxIndex();
3878          }
3879        });
3880      }
3881    }));
3882    insert(_el$6, createComponent(DesignViewer, {
3883      get config() {
3884        return dynConfig();
3885      },
3886      get componentRoot() {
3887        return props.componentRoot;
3888      },
3889      height: "100%",
3890      width: "100%"
3891    }), null);
3892    return _el$6;
3893  })();
3894};
3895var renderComponent3 = (url, container, dispatch, config) => {
3896  const bindComponent = () => {
3897    return createComponent(CameraProvider, {
3898      tweening: {
3899        duration: 500
3900      },
3901      get children() {
3902        return createComponent(WorkerProvider, {
3903          get children() {
3904            return createComponent(ViewerProvider, {
3905              config: {
3906                url,
3907                preview: true,
3908                debug: false,
3909                labels: true,
3910                source: true
3911              },
3912              get children() {
3913                return createComponent(SceneProvider, {
3914                  get children() {
3915                    return createComponent(SceneIndexingProvider, {
3916                      config: {},
3917                      get children() {
3918                        return createComponent(ZometoolInstructions, {
3919                          dispatch,
3920                          config
3921                        });
3922                      }
3923                    });
3924                  }
3925                });
3926              }
3927            });
3928          }
3929        });
3930      }
3931    });
3932  };
3933  container.appendChild(document.createElement("style")).textContent = urlViewerCSS;
3934  render(bindComponent, container);
3935};
3936var ZometoolInstructionsElement = class extends HTMLElement {
3937  #container;
3938  #url;
3939  #module;
3940  constructor() {
3941    super();
3942    const root = this.attachShadow({
3943      mode: "open"
3944    });
3945    root.appendChild(document.createElement("style")).textContent = instructionsCSS;
3946    this.#container = document.createElement("div");
3947    root.appendChild(this.#container);
3948    debug3 && console.log("ZometoolInstructionsElement constructed");
3949  }
3950  connectedCallback() {
3951    debug3 && console.log("ZometoolInstructionsElement connected");
3952    renderComponent3(this.#url, this.#container, (evt) => this.dispatchEvent(evt), {
3953      module: this.#module
3954    });
3955  }
3956  static get observedAttributes() {
3957    return ["src", "module"];
3958  }
3959  // This callback can happen *before* connectedCallback()!
3960  attributeChangedCallback(attributeName, _oldValue, _newValue) {
3961    debug3 && console.log("ZometoolInstructionsElement attribute changed");
3962    switch (attributeName) {
3963      case "module":
3964        this.#module = _newValue;
3965        console.log(`module ${this.#module}`);
3966        break;
3967      case "src":
3968        this.#url = new URL(_newValue, window.location).toString();
3969    }
3970  }
3971  getParts() {
3972    debug3 && console.log("ZometoolInstructionsElement.getParts called");
3973  }
3974};
3975customElements.define("zometool-instructions", ZometoolInstructionsElement);
3976customElements.define("zometool-parts-required", ZometoolPartsElement);
3977customElements.define("zometool-covering-products", ZometoolProductsElement);
3978
3979export {
3980  alpha,
3981  darken,
3982  lighten,
3983  handleBreakpoints,
3984  resolveBreakpointValues,
3985  deepmerge,
3986  deepmerge2,
3987  useTheme_default2 as useTheme_default,
3988  Dynamic_default,
3989  createStyle_default,
3990  getThemeValue_default,
3991  createUnarySpacing,
3992  systemPropNames,
3993  clsx_m_default,
3994  redefine,
3995  skipProps,
3996  createStyled_default,
3997  skipRootProps,
3998  styled_default,
3999  capitalize3 as capitalize,
4000  capitalize_default,
4001  generateUtilityClass,
4002  generateUtilityClasses,
4003  composeClasses,
4004  isComponentObject,
4005  inspectChildren,
4006  createComponentFactory_default,
4007  Paper_default,
4008  instructionsCSS,
4009  TableContainer_default,
4010  Table_default,
4011  TableHead_default,
4012  TableRow_default,
4013  TableCell_default,
4014  TableBody_default,
4015  ZometoolInstructions
4016};

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.